summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-08-07 21:30:22 +0000
committerThomas Martitz <kugel@rockbox.org>2010-08-07 21:30:22 +0000
commitca4439ff65bdc93fc44f4cc1be52aab50217ce78 (patch)
tree06578c5243a9c7b0c4c5dcb322ffb9a4609b5e7a /apps
parentf1184f963aea4cb16a5886c71cc662a0503e1cd5 (diff)
downloadrockbox-ca4439ff65bdc93fc44f4cc1be52aab50217ce78.tar.gz
rockbox-ca4439ff65bdc93fc44f4cc1be52aab50217ce78.zip
Android port: handle incoming calls.
Stop explicitely if a call comes in, and resume playback (if it was playing before the call) upon hang up. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27746 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/menu.c13
-rw-r--r--apps/misc.c19
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
518long default_event_handler_ex(long event, void (*callback)(void *), void *parameter) 518long 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}