summaryrefslogtreecommitdiff
path: root/apps/action.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/action.c')
-rw-r--r--apps/action.c21
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
40static intptr_t last_data = 0; 40static intptr_t last_data = 0;
41static int last_action = ACTION_NONE; 41static int last_action = ACTION_NONE;
42static bool repeated = false; 42static bool repeated = false;
43static bool wait_for_release = false;
43 44
44#ifdef HAVE_TOUCHSCREEN 45#ifdef HAVE_TOUCHSCREEN
45static bool short_press = false; 46static 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 */
348void action_wait_for_release(void)
349{
350 wait_for_release = true;
351}
352