summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2007-10-08 09:09:40 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2007-10-08 09:09:40 +0000
commit16301880a147cee50dc49fc1890feaf28bb4edb1 (patch)
treed1322206a658135c71b7d726b1c6d58ca0133bdf
parent46b7028f918101df9de81d698ad2c1bb09060bd3 (diff)
downloadrockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.tar.gz
rockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.zip
Make sure that audio_resume() is not called in interrupt context when car adapter mode is enabled. Fixes FS#7304.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15034 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/misc.c7
-rw-r--r--firmware/export/kernel.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/apps/misc.c b/apps/misc.c
index 3d361f4ccb..3a47d2f1c9 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -800,6 +800,7 @@ static void car_adapter_mode_processing(bool inserted)
800 else 800 else
801 audio_pause(); 801 audio_pause();
802 } 802 }
803 waiting_to_resume_play = false;
803 } 804 }
804 } 805 }
805} 806}
@@ -812,7 +813,7 @@ static void car_adapter_tick(void)
812 { 813 {
813 if (audio_status() & AUDIO_STATUS_PAUSE) 814 if (audio_status() & AUDIO_STATUS_PAUSE)
814 { 815 {
815 audio_resume(); 816 queue_broadcast(SYS_CAR_ADAPTER_RESUME, 0);
816 } 817 }
817 waiting_to_resume_play = false; 818 waiting_to_resume_play = false;
818 } 819 }
@@ -892,6 +893,10 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
892 case SYS_CHARGER_DISCONNECTED: 893 case SYS_CHARGER_DISCONNECTED:
893 car_adapter_mode_processing(false); 894 car_adapter_mode_processing(false);
894 return SYS_CHARGER_DISCONNECTED; 895 return SYS_CHARGER_DISCONNECTED;
896
897 case SYS_CAR_ADAPTER_RESUME:
898 audio_resume();
899 return SYS_CAR_ADAPTER_RESUME;
895#endif 900#endif
896#ifdef HAVE_HEADPHONE_DETECTION 901#ifdef HAVE_HEADPHONE_DETECTION
897 case SYS_PHONE_PLUGGED: 902 case SYS_PHONE_PLUGGED:
diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h
index 8d7ca95184..3d70e49a4c 100644
--- a/firmware/export/kernel.h
+++ b/firmware/export/kernel.h
@@ -70,6 +70,7 @@
70#define SYS_REMOTE_PLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 4) 70#define SYS_REMOTE_PLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 4)
71#define SYS_REMOTE_UNPLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 5) 71#define SYS_REMOTE_UNPLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 5)
72#define SYS_SCREENDUMP MAKE_SYS_EVENT(SYS_EVENT_CLS_MISC, 0) 72#define SYS_SCREENDUMP MAKE_SYS_EVENT(SYS_EVENT_CLS_MISC, 0)
73#define SYS_CAR_ADAPTER_RESUME MAKE_SYS_EVENT(SYS_EVENT_CLS_MISC, 1)
73 74
74struct event 75struct event
75{ 76{