From 4b472de39b30c079ff846aec83d2da33cc0adcc5 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Sat, 3 Jan 2009 13:27:19 +0000 Subject: a few more button/statusbar fixes... * hopefully fix the last of the plugins which dont handle the enw SYS event. * fix FS#9750 - WPS's which dont specify (or force the wps on) wernt showing the statusbar at all * lamp, battery_bench, *_flash button handling fixes * plugins using the core menu code will again show the statusbar git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19656 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/battery_bench.c | 21 ++++++++++++++------- apps/plugins/firmware_flash.c | 2 +- apps/plugins/iriver_flash.c | 2 +- apps/plugins/lamp.c | 8 +++++--- apps/plugins/rockbox_flash.c | 2 +- 5 files changed, 22 insertions(+), 13 deletions(-) (limited to 'apps/plugins') diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c index 7c67cca937..6559f535af 100644 --- a/apps/plugins/battery_bench.c +++ b/apps/plugins/battery_bench.c @@ -224,6 +224,7 @@ static unsigned int buf_idx; bool exit_tsr(bool reenter) { + long button; (void)reenter; rb->lcd_clear_display(); rb->lcd_puts_scroll(0, 0, "Batt.Bench is currently running."); @@ -233,15 +234,21 @@ bool exit_tsr(bool reenter) #endif rb->lcd_update(); - if (rb->button_get(true) == BATTERY_OFF) + while (1) { - rb->queue_post(&thread_q, EV_EXIT, 0); - rb->thread_wait(thread_id); - /* remove the thread's queue from the broadcast list */ - rb->queue_delete(&thread_q); - return true; + button = rb->button_get(true); + if (IS_SYSEVENT(button)) + continue; + if (button == BATTERY_OFF) + { + rb->queue_post(&thread_q, EV_EXIT, 0); + rb->thread_wait(thread_id); + /* remove the thread's queue from the broadcast list */ + rb->queue_delete(&thread_q); + return true; + } + else return false; } - else return false; } #define BIT_CHARGER 0x1 diff --git a/apps/plugins/firmware_flash.c b/apps/plugins/firmware_flash.c index 376ae7f80f..6380f6dbdb 100644 --- a/apps/plugins/firmware_flash.c +++ b/apps/plugins/firmware_flash.c @@ -592,7 +592,7 @@ int WaitForButton(void) do { button = rb->button_get(true); - } while (button & BUTTON_REL); + } while (IS_SYSEVENT(button) || (button & BUTTON_REL)); return button; } diff --git a/apps/plugins/iriver_flash.c b/apps/plugins/iriver_flash.c index 9f26f82d13..e7ae056d38 100644 --- a/apps/plugins/iriver_flash.c +++ b/apps/plugins/iriver_flash.c @@ -230,7 +230,7 @@ int wait_for_button(void) do { button = rb->button_get(true); - } while (button & BUTTON_REL); + } while (IS_SYSEVENT(button) || (button & BUTTON_REL)); return button; } diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c index e355ee4ce3..ace6545865 100644 --- a/apps/plugins/lamp.c +++ b/apps/plugins/lamp.c @@ -110,6 +110,7 @@ static int colorset[NUM_COLORSETS][3] = { { 255, 255, 255 } , /* white */ /* this is the plugin entry point */ enum plugin_status plugin_start(const struct plugin_api* api, const void* parameter) { + long button; (void)parameter; rb = api; @@ -167,7 +168,7 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame rb->lcd_clear_display(); rb->lcd_update(); - switch(rb->button_get(true)) + switch((button = rb->button_get(true))) { case LAMP_RIGHT: #ifdef LAMP_NEXT @@ -196,9 +197,10 @@ enum plugin_status plugin_start(const struct plugin_api* api, const void* parame case (LAMP_PREV|BUTTON_REL): #endif /* LAMP_PREV */ /* eat these... */ - break; + break; default: - quit = true; + if (!IS_SYSEVENT(button)) + quit = true; } } while (!quit); diff --git a/apps/plugins/rockbox_flash.c b/apps/plugins/rockbox_flash.c index 6323ca9736..d0dc73875e 100644 --- a/apps/plugins/rockbox_flash.c +++ b/apps/plugins/rockbox_flash.c @@ -516,7 +516,7 @@ static int WaitForButton(void) do { button = rb->button_get(true); - } while (button & BUTTON_REL); + } while (IS_SYSEVENT(button) || (button & BUTTON_REL)); return button; } -- cgit v1.2.3