From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.213.32.82 with SMTP id b18cs52619ebd; Sat, 10 Apr 2010 03:41:49 -0700 (PDT) Received: by 10.204.32.196 with SMTP id e4mr1379534bkd.131.1270896109123; Sat, 10 Apr 2010 03:41:49 -0700 (PDT) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id f11si4890712bka.31.2010.04.10.03.41.48; Sat, 10 Apr 2010 03:41:49 -0700 (PDT) Received-SPF: pass (google.com: domain of sup-talk-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: domain of sup-talk-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=sup-talk-bounces@rubyforge.org; dkim=neutral (body hash did not verify) header.i=@gmail.com Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id 24C8B185830E; Sat, 10 Apr 2010 06:41:48 -0400 (EDT) Received: from mail-pw0-f50.google.com (mail-pw0-f50.google.com [209.85.160.50]) by rubyforge.org (Postfix) with ESMTP id B3DE218582F8 for ; Sat, 10 Apr 2010 06:41:25 -0400 (EDT) Received: by pwj1 with SMTP id 1so3663550pwj.23 for ; Sat, 10 Apr 2010 03:41:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:content-type:subject:from:to :date:message-id:user-agent:content-transfer-encoding; bh=TsOEJBsVbZICOlboyrutssduFpS6PrTEi+V4PBfA/wM=; b=SQltc/Ye7JQ8LG9RNG/nqONtkafHyj/SADbT/ETjpMsnNkO43TYnjnOkJ74Z4idn+g MR7FgWmUtRxaCg6KC8MjFdnxi5Mv9//OVUb7mS/cZ1Cuc5Bd91snQZrRfHiis/ftdKi0 MVAuwlGHqmnjB2PV3f6nbTrmWX0akAHl4e3t4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:subject:from:to:date:message-id:user-agent :content-transfer-encoding; b=RhQGT8Tlrtd82+ZQtHWGzmzvJZz02iMKCXvl7tKAN2UYnlIh+UzBc/VXnZTwnF157D bXx8BweZZA80jb9ppS66Q2T9tOWPzB0W6iHyoFFo4v8F4p2BdKv2gKxrv9AIgnbABx4G JCSVuTJ2FYX5ACJiYq6LwI/+qCiMu6tPuYflc= Received: by 10.115.115.9 with SMTP id s9mr1575656wam.66.1270896084605; Sat, 10 Apr 2010 03:41:24 -0700 (PDT) Received: from localhost ([203.110.240.41]) by mx.google.com with ESMTPS id 21sm1837870pzk.12.2010.04.10.03.41.22 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 10 Apr 2010 03:41:24 -0700 (PDT) From: Ramkumar Ramachandra To: sup-talk Date: Sat, 10 Apr 2010 16:09:04 +0530 Message-Id: <1270895932-sup-2620@kytes> User-Agent: Sup/git Subject: [sup-talk] [PATCH 2/4] Poll for editor status X-BeenThere: sup-talk@rubyforge.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: User & developer discussion of Sup List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: sup-talk-bounces@rubyforge.org Errors-To: sup-talk-bounces@rubyforge.org Write a second loop in PollManager to poll and check if the asynchronously spawned editor has finished. If finished, fire a callback. Signed-off-by: Ramkumar Ramachandra --- lib/sup/poll.rb | 31 ++++++++++++++++++++++++++++++- 1 files changed, 30 insertions(+), 1 deletions(-) diff --git a/lib/sup/poll.rb b/lib/sup/poll.rb index 582cd4d..0fabb87 100644 --- a/lib/sup/poll.rb +++ b/lib/sup/poll.rb @@ -38,6 +38,13 @@ EOS @poll_sources = nil @mode = nil @should_clear_running_totals = false + + # For async editing + @editor_thread = nil + @edit_in_progress = false + @editor_file = nil + @edit_mtime = nil + clear_running_totals # defines @running_totals UpdateManager.register self end @@ -71,6 +78,20 @@ EOS [num, numi] end + def poll_editor + return if @polling + return if not @edit_in_progress + @polling = true + if @editor_thread.alive? + BufferManager.flash "Edit in progress..." + else + BufferManager.flash "Edit finished!" + @edit_in_progress = false + ComposeMode.edit_message_callback @editor_file, @editor_mtime + end + @polling = false + end + def poll_unusual return if @polling @polling = true @@ -83,8 +104,9 @@ EOS def start @thread = Redwood::reporting_thread("periodic poll") do while true - sleep DELAY / 2 + sleep 1 poll if @last_poll.nil? || (Time.now - @last_poll) >= DELAY + poll_editor if @last_poll.nil? || (Time.now - @last_poll) >= 2 end end end @@ -192,6 +214,13 @@ EOS UpdateManager.relay self, :added, m end + def editor_loop_init pthread, file, mtime + @editor_thread = pthread + @edit_in_progress = true + @editor_file = file + @editor_mtime = mtime + end + def handle_idle_update sender, idle_since; @should_clear_running_totals = false; end def handle_unidle_update sender, idle_since; @should_clear_running_totals = true; clear_running_totals; end def clear_running_totals; @running_totals = {:num => 0, :numi => 0, :loaded_labels => Set.new}; end -- 1.7.0.4 _______________________________________________ sup-talk mailing list sup-talk@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-talk