diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/menu.c | 13 | ||||
-rw-r--r-- | apps/misc.c | 19 |
2 files changed, 30 insertions, 2 deletions
diff --git a/apps/menu.c b/apps/menu.c index a88d725774..e6afec2d14 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -341,6 +341,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
341 | const struct menu_item_ex *temp, *menu; | 341 | const struct menu_item_ex *temp, *menu; |
342 | int ret = 0, i; | 342 | int ret = 0, i; |
343 | bool redraw_lists; | 343 | bool redraw_lists; |
344 | int old_audio_status = audio_status(); | ||
344 | FOR_NB_SCREENS(i) | 345 | FOR_NB_SCREENS(i) |
345 | viewportmanager_theme_enable(i, !hide_theme, NULL); | 346 | viewportmanager_theme_enable(i, !hide_theme, NULL); |
346 | 347 | ||
@@ -380,6 +381,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
380 | #endif | 381 | #endif |
381 | while (!done) | 382 | while (!done) |
382 | { | 383 | { |
384 | int new_old_audio_statusus; | ||
383 | redraw_lists = false; | 385 | redraw_lists = false; |
384 | if (!hide_theme) | 386 | if (!hide_theme) |
385 | { | 387 | { |
@@ -389,6 +391,15 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
389 | } | 391 | } |
390 | action = get_action(CONTEXT_MAINMENU, | 392 | action = get_action(CONTEXT_MAINMENU, |
391 | list_do_action_timeout(&lists, HZ)); | 393 | list_do_action_timeout(&lists, HZ)); |
394 | |||
395 | /* query audio status to see if it changed */ | ||
396 | new_old_audio_statusus = audio_status(); | ||
397 | if (old_audio_status != new_old_audio_statusus) | ||
398 | { /* force a redraw if anything changed the audio status | ||
399 | * from outside */ | ||
400 | redraw_lists = true; | ||
401 | old_audio_status = new_old_audio_statusus; | ||
402 | } | ||
392 | /* HZ so the status bar redraws corectly */ | 403 | /* HZ so the status bar redraws corectly */ |
393 | 404 | ||
394 | if (menu_callback) | 405 | if (menu_callback) |
@@ -410,8 +421,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
410 | 421 | ||
411 | if (gui_synclist_do_button(&lists, &action, LIST_WRAP_UNLESS_HELD)) | 422 | if (gui_synclist_do_button(&lists, &action, LIST_WRAP_UNLESS_HELD)) |
412 | continue; | 423 | continue; |
413 | if (action == ACTION_NONE) | ||
414 | continue; | ||
415 | #ifdef HAVE_QUICKSCREEN | 424 | #ifdef HAVE_QUICKSCREEN |
416 | else if (action == ACTION_STD_QUICKSCREEN) | 425 | else if (action == ACTION_STD_QUICKSCREEN) |
417 | { | 426 | { |
diff --git a/apps/misc.c b/apps/misc.c index ed6986180a..9fbdd433ef 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -517,6 +517,9 @@ static void unplug_change(bool inserted) | |||
517 | 517 | ||
518 | long default_event_handler_ex(long event, void (*callback)(void *), void *parameter) | 518 | long default_event_handler_ex(long event, void (*callback)(void *), void *parameter) |
519 | { | 519 | { |
520 | #if CONFIG_PLATFORM & PLATFORM_ANDROID | ||
521 | static bool resume = false; | ||
522 | #endif | ||
520 | switch(event) | 523 | switch(event) |
521 | { | 524 | { |
522 | case SYS_BATTERY_UPDATE: | 525 | case SYS_BATTERY_UPDATE: |
@@ -606,6 +609,22 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame | |||
606 | iap_handlepkt(); | 609 | iap_handlepkt(); |
607 | return SYS_IAP_HANDLEPKT; | 610 | return SYS_IAP_HANDLEPKT; |
608 | #endif | 611 | #endif |
612 | #if CONFIG_PLATFORM & PLATFORM_ANDROID | ||
613 | /* stop playback if we receive a call */ | ||
614 | case SYS_CALL_INCOMING: | ||
615 | resume = (audio_status() & AUDIO_STATUS_PLAY) != 0; | ||
616 | list_stop_handler(); | ||
617 | return SYS_CALL_INCOMING; | ||
618 | /* resume playback if needed */ | ||
619 | case SYS_CALL_HUNG_UP: | ||
620 | if (resume && playlist_resume() != -1) | ||
621 | { | ||
622 | playlist_start(global_status.resume_index, | ||
623 | global_status.resume_offset); | ||
624 | } | ||
625 | resume = false; | ||
626 | return SYS_CALL_HUNG_UP; | ||
627 | #endif | ||
609 | } | 628 | } |
610 | return 0; | 629 | return 0; |
611 | } | 630 | } |