diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2007-06-04 13:52:02 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2007-06-04 13:52:02 +0000 |
| commit | 63c85110d0d7cf6ea33b37cd7923fb65523ac749 (patch) | |
| tree | 822cad3924dc5400095b5df6d6d42accabd19e20 | |
| parent | 54c73a24b6841efb06ee812831892960e5584e26 (diff) | |
| download | rockbox-63c85110d0d7cf6ea33b37cd7923fb65523ac749.zip rockbox-63c85110d0d7cf6ea33b37cd7923fb65523ac749.tar.gz rockbox-63c85110d0d7cf6ea33b37cd7923fb65523ac749.tar.bz2 rockbox-63c85110d0d7cf6ea33b37cd7923fb65523ac749.tar.xz | |
Fix FS#7242 - the action code now checks the time difference between events to decide if its a repeat or not. a repeat event is now if the previous action was the same and it occured < HZ/10 ticks ago
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13551 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/action.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/apps/action.c b/apps/action.c index 80053e7..d9f04a8 100644 --- a/apps/action.c +++ b/apps/action.c @@ -34,6 +34,9 @@ static int last_button = BUTTON_NONE; static int last_action = ACTION_NONE; static bool repeated = false; +#define REPEAT_WINDOW_TICKS HZ/10 +static int last_action_tick = 0; + /* software keylock stuff */ #ifndef HAS_BUTTON_HOLD static bool keys_locked = false; @@ -186,13 +189,15 @@ static int get_action_worker(int context, int timeout, return ACTION_REDRAW; } #endif - if (ret == last_action) + if ((current_tick - last_action_tick < REPEAT_WINDOW_TICKS) + && (ret == last_action)) repeated = true; else repeated = false; last_button = button; last_action = ret; + last_action_tick = current_tick; return ret; } |