From: William Morgan Date: Wed, 25 Mar 2009 03:21:21 +0000 (-0700) Subject: background-threadify message state saving X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=6578c2141763fcf05f63c42eab0908123ffcce3f;p=sup background-threadify message state saving --- diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index 73144db..a2f1926 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -68,6 +68,8 @@ EOS UpdateManager.register self + @save_thread_mutex = Mutex.new + @last_load_more_size = nil to_load_more do |size| next if @last_load_more_size == 0 @@ -386,14 +388,18 @@ EOS end def save - BufferManager.say("Saving contacts...") { ContactManager.instance.save } - dirty_threads = @mutex.synchronize { (@threads + @hidden_threads.keys).select { |t| t.dirty? } } - return if dirty_threads.empty? - - BufferManager.say("Saving threads...") do |say_id| - dirty_threads.each_with_index do |t, i| - BufferManager.say "Saving modified thread #{i + 1} of #{dirty_threads.length}...", say_id - t.save Index + Redwood::reporting_thread("saving thread") do + @save_thread_mutex.synchronize do + BufferManager.say("Saving contacts...") { ContactManager.instance.save } + dirty_threads = @mutex.synchronize { (@threads + @hidden_threads.keys).select { |t| t.dirty? } } + return if dirty_threads.empty? + + BufferManager.say("Saving threads...") do |say_id| + dirty_threads.each_with_index do |t, i| + BufferManager.say "Saving modified thread #{i + 1} of #{dirty_threads.length}...", say_id + t.save Index + end + end end end end