summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/action.c6
-rw-r--r--apps/gui/yesno.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/apps/action.c b/apps/action.c
index 5ebcbf7..3c130e3 100644
--- a/apps/action.c
+++ b/apps/action.c
@@ -232,7 +232,13 @@ static int get_action_worker(int context, int timeout,
/* Data from sys events can be pulled with button_get_data
* multimedia button presses don't go through the action system */
if (button == BUTTON_NONE || button & (SYS_EVENT|BUTTON_MULTIMEDIA))
+ {
+ /* no button pressed so no point in waiting for release */
+ if (button == BUTTON_NONE)
+ wait_for_release = false;
return button;
+ }
+
/* the special redraw button should result in a screen refresh */
if (button == BUTTON_REDRAW)
return ACTION_REDRAW;
diff --git a/apps/gui/yesno.c b/apps/gui/yesno.c
index a2abae3..dc04651 100644
--- a/apps/gui/yesno.c
+++ b/apps/gui/yesno.c
@@ -169,9 +169,10 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
screens[i].stop_scroll();
gui_yesno_draw(&(yn[i]));
}
+
/* make sure to eat any extranous keypresses */
- while (get_action(CONTEXT_STD+99, TIMEOUT_NOBLOCK))
- action_wait_for_release();
+ action_wait_for_release();
+
while (result==-1)
{
/* Repeat the question every 5secs (more or less) */
@@ -205,6 +206,7 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
result=YESNO_YES;
break;
case ACTION_NONE:
+ case ACTION_UNKNOWN:
case SYS_CHARGER_DISCONNECTED:
case SYS_BATTERY_UPDATE:
/* ignore some SYS events that can happen */
@@ -233,6 +235,7 @@ enum yesno_res gui_syncyesno_run(const struct text_message * main_message,
screens[i].scroll_stop(yn[i].vp);
viewportmanager_theme_undo(i, true);
}
+
return(result);
}