* [sup-devel] [PATCHv2] idle and unidle updates
@ 2010-01-14 15:45 Eric Sherman
2010-01-22 20:13 ` Eric Sherman
0 siblings, 1 reply; 2+ messages in thread
From: Eric Sherman @ 2010-01-14 15:45 UTC (permalink / raw)
To: sup-devel
---
bin/sup | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/bin/sup b/bin/sup
index 19b2a87..0d90d00 100755
--- a/bin/sup
+++ b/bin/sup
@@ -260,6 +260,10 @@ begin
SearchResultsMode.spawn_from_query $opts[:search]
end
+ IDLE_THRESHOLD = 60
+ no_keystrokes_since = Time.now
+ idle = false
+
until Redwood::exceptions.nonempty? || $die
c = begin
Ncurses.nonblocking_getch
@@ -274,9 +278,22 @@ begin
debug "redrawing screen on sigwinch"
BufferManager.completely_redraw_screen
end
+
+ if !idle and Time.now.to_i - no_keystrokes_since.to_i >= IDLE_THRESHOLD
+ UpdateManager.relay self, :idle, Time.at(no_keystrokes_since)
+ idle = true
+ end
+
next
end
+ if idle
+ UpdateManager.relay self, :unidle, Time.at(no_keystrokes_since)
+ idle = false
+ end
+
+ no_keystrokes_since = Time.now
+
if c == 410
## this is ncurses's way of telling us it's detected a refresh.
## since we have our own sigwinch handler, we don't do anything.
--
1.6.6
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [sup-devel] [PATCHv2] idle and unidle updates
2010-01-14 15:45 [sup-devel] [PATCHv2] idle and unidle updates Eric Sherman
@ 2010-01-22 20:13 ` Eric Sherman
0 siblings, 0 replies; 2+ messages in thread
From: Eric Sherman @ 2010-01-22 20:13 UTC (permalink / raw)
To: sup-devel
This is a problematic place for this logic to go, since it appears as if
the idle update does not fire when shelled to the editor, and instead fires
immediately upon returning. Which ironically is exactly when you're
becoming unidle.
I'm thinking of an IdleManager with a single public method #ping that can
be called here where no_keystrokes_since is being updated. It has a thread
that does the threshold checking and relays the updates. This way it's not
in the main thread and doesn't block when shelled.
Thoughts?
Excerpts from Eric Sherman's message of Thu Jan 14 10:45:54 -0500 2010:
> ---
> bin/sup | 17 +++++++++++++++++
> 1 files changed, 17 insertions(+), 0 deletions(-)
>
> diff --git a/bin/sup b/bin/sup
> index 19b2a87..0d90d00 100755
> --- a/bin/sup
> +++ b/bin/sup
> @@ -260,6 +260,10 @@ begin
> SearchResultsMode.spawn_from_query $opts[:search]
> end
>
> + IDLE_THRESHOLD = 60
> + no_keystrokes_since = Time.now
> + idle = false
> +
> until Redwood::exceptions.nonempty? || $die
> c = begin
> Ncurses.nonblocking_getch
> @@ -274,9 +278,22 @@ begin
> debug "redrawing screen on sigwinch"
> BufferManager.completely_redraw_screen
> end
> +
> + if !idle and Time.now.to_i - no_keystrokes_since.to_i >= IDLE_THRESHOLD
> + UpdateManager.relay self, :idle, Time.at(no_keystrokes_since)
> + idle = true
> + end
> +
> next
> end
>
> + if idle
> + UpdateManager.relay self, :unidle, Time.at(no_keystrokes_since)
> + idle = false
> + end
> +
> + no_keystrokes_since = Time.now
> +
> if c == 410
> ## this is ncurses's way of telling us it's detected a refresh.
> ## since we have our own sigwinch handler, we don't do anything.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-01-22 20:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-14 15:45 [sup-devel] [PATCHv2] idle and unidle updates Eric Sherman
2010-01-22 20:13 ` Eric Sherman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox