mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 10:07:38 -04:00
[BugFix] YesNo screen wait for button release on exit
if you run yesno screens back to back or another screen with wait_for_release you may never see the release instead clear anything in the queue but release events Change-Id: I1b1e42cbb44f2fdfed441ab1f217b6ea4fe07492
This commit is contained in:
parent
e5690803c6
commit
54333536fe
4 changed files with 16 additions and 1 deletions
|
@ -1204,6 +1204,7 @@ void action_wait_for_release(void)
|
|||
{
|
||||
if (!(action_last.button & BUTTON_REL))
|
||||
action_last.wait_for_release = true;
|
||||
button_clear_pressed();
|
||||
}
|
||||
|
||||
int get_action(int context, int timeout)
|
||||
|
|
|
@ -253,7 +253,6 @@ enum yesno_res gui_syncyesno_run_w_tmo(int ticks, enum yesno_res tmo_default_res
|
|||
|
||||
/* make sure to eat any extranous keypresses */
|
||||
action_wait_for_release();
|
||||
button_clear_queue();
|
||||
|
||||
/* hook into UI update events to avoid the dialog disappearing
|
||||
* in case the skin decides to do a full refresh */
|
||||
|
|
|
@ -185,6 +185,20 @@ void button_clear_queue(void)
|
|||
queue_clear(&button_queue);
|
||||
}
|
||||
|
||||
/* clears anything but release and sysevents */
|
||||
void button_clear_pressed(void)
|
||||
{
|
||||
long button;
|
||||
for (int count = queue_count(&button_queue); count > 0; count--)
|
||||
{
|
||||
button = button_get(false);
|
||||
if (button & (BUTTON_REL | SYS_EVENT))
|
||||
{
|
||||
button_queue_post(button, button_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
long button_get_w_tmo(int ticks)
|
||||
{
|
||||
struct queue_event ev;
|
||||
|
|
|
@ -71,6 +71,7 @@ int button_queue_count(void);
|
|||
bool button_queue_empty(void);
|
||||
bool button_queue_full(void);
|
||||
void button_clear_queue(void);
|
||||
void button_clear_pressed(void);
|
||||
long button_get(bool block);
|
||||
long button_get_w_tmo(int ticks);
|
||||
intptr_t button_get_data(void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue