diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2009-07-03 05:08:33 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2009-07-03 05:08:33 +0000 |
commit | 0e445fcef6a803e0b321964b3c739f6dc9f2a82d (patch) | |
tree | 2ab1303b93f85bf25ecb32a8c4396af52b599b5d /apps/action.c | |
parent | c41f13f7d8d3c3fe4ee1ed8a94f5492f7adc6945 (diff) | |
download | rockbox-0e445fcef6a803e0b321964b3c739f6dc9f2a82d.tar.gz rockbox-0e445fcef6a803e0b321964b3c739f6dc9f2a82d.zip |
Fix the bug where the short-long fwd/back action would ffwd/rewind the next folder (consult the manual if that makes no sense)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21619 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/action.c')
-rw-r--r-- | apps/action.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/apps/action.c b/apps/action.c index f493296a03..ee84706b09 100644 --- a/apps/action.c +++ b/apps/action.c | |||
@@ -40,6 +40,7 @@ static int last_button = BUTTON_NONE|BUTTON_REL; /* allow the ipod wheel to | |||
40 | static intptr_t last_data = 0; | 40 | static intptr_t last_data = 0; |
41 | static int last_action = ACTION_NONE; | 41 | static int last_action = ACTION_NONE; |
42 | static bool repeated = false; | 42 | static bool repeated = false; |
43 | static bool wait_for_release = false; | ||
43 | 44 | ||
44 | #ifdef HAVE_TOUCHSCREEN | 45 | #ifdef HAVE_TOUCHSCREEN |
45 | static bool short_press = false; | 46 | static bool short_press = false; |
@@ -127,6 +128,16 @@ static int get_action_worker(int context, int timeout, | |||
127 | /* Data from sys events can be pulled with button_get_data */ | 128 | /* Data from sys events can be pulled with button_get_data */ |
128 | if (button == BUTTON_NONE || button & SYS_EVENT) | 129 | if (button == BUTTON_NONE || button & SYS_EVENT) |
129 | return button; | 130 | return button; |
131 | /* Don't send any buttons through untill we see the release event */ | ||
132 | if (wait_for_release) | ||
133 | { | ||
134 | if (button&BUTTON_REL) | ||
135 | { | ||
136 | wait_for_release = false; | ||
137 | } | ||
138 | return ACTION_NONE; | ||
139 | } | ||
140 | |||
130 | 141 | ||
131 | #if CONFIG_CODEC == SWCODEC | 142 | #if CONFIG_CODEC == SWCODEC |
132 | /* Produce keyclick */ | 143 | /* Produce keyclick */ |
@@ -329,3 +340,13 @@ int action_get_touchscreen_press(short *x, short *y) | |||
329 | return BUTTON_TOUCHSCREEN; | 340 | return BUTTON_TOUCHSCREEN; |
330 | } | 341 | } |
331 | #endif | 342 | #endif |
343 | |||
344 | /* Don't let get_action*() return any ACTION_* values untill the current buttons | ||
345 | * have ben release. SYS_* and BUTTON_NONE will go through. | ||
346 | * Any actions relying on _RELEASE won't get seen | ||
347 | */ | ||
348 | void action_wait_for_release(void) | ||
349 | { | ||
350 | wait_for_release = true; | ||
351 | } | ||
352 | |||