diff options
Diffstat (limited to 'apps/plugins/battery_bench.c')
-rw-r--r-- | apps/plugins/battery_bench.c | 21 |
1 files changed, 14 insertions, 7 deletions
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; | |||
224 | 224 | ||
225 | bool exit_tsr(bool reenter) | 225 | bool exit_tsr(bool reenter) |
226 | { | 226 | { |
227 | long button; | ||
227 | (void)reenter; | 228 | (void)reenter; |
228 | rb->lcd_clear_display(); | 229 | rb->lcd_clear_display(); |
229 | rb->lcd_puts_scroll(0, 0, "Batt.Bench is currently running."); | 230 | rb->lcd_puts_scroll(0, 0, "Batt.Bench is currently running."); |
@@ -233,15 +234,21 @@ bool exit_tsr(bool reenter) | |||
233 | #endif | 234 | #endif |
234 | rb->lcd_update(); | 235 | rb->lcd_update(); |
235 | 236 | ||
236 | if (rb->button_get(true) == BATTERY_OFF) | 237 | while (1) |
237 | { | 238 | { |
238 | rb->queue_post(&thread_q, EV_EXIT, 0); | 239 | button = rb->button_get(true); |
239 | rb->thread_wait(thread_id); | 240 | if (IS_SYSEVENT(button)) |
240 | /* remove the thread's queue from the broadcast list */ | 241 | continue; |
241 | rb->queue_delete(&thread_q); | 242 | if (button == BATTERY_OFF) |
242 | return true; | 243 | { |
244 | rb->queue_post(&thread_q, EV_EXIT, 0); | ||
245 | rb->thread_wait(thread_id); | ||
246 | /* remove the thread's queue from the broadcast list */ | ||
247 | rb->queue_delete(&thread_q); | ||
248 | return true; | ||
249 | } | ||
250 | else return false; | ||
243 | } | 251 | } |
244 | else return false; | ||
245 | } | 252 | } |
246 | 253 | ||
247 | #define BIT_CHARGER 0x1 | 254 | #define BIT_CHARGER 0x1 |