diff options
| author | Linus Nielsen Feltzing <linus@haxx.se> | 2007-10-08 09:09:40 +0000 |
|---|---|---|
| committer | Linus Nielsen Feltzing <linus@haxx.se> | 2007-10-08 09:09:40 +0000 |
| commit | 16301880a147cee50dc49fc1890feaf28bb4edb1 (patch) | |
| tree | d1322206a658135c71b7d726b1c6d58ca0133bdf | |
| parent | 46b7028f918101df9de81d698ad2c1bb09060bd3 (diff) | |
| download | rockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.zip rockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.tar.gz rockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.tar.bz2 rockbox-16301880a147cee50dc49fc1890feaf28bb4edb1.tar.xz | |
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.c | 7 | ||||
| -rw-r--r-- | firmware/export/kernel.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/apps/misc.c b/apps/misc.c index 3d361f4..3a47d2f 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -800,6 +800,7 @@ static void car_adapter_mode_processing(bool inserted) else audio_pause(); } + waiting_to_resume_play = false; } } } @@ -812,7 +813,7 @@ static void car_adapter_tick(void) { if (audio_status() & AUDIO_STATUS_PAUSE) { - audio_resume(); + queue_broadcast(SYS_CAR_ADAPTER_RESUME, 0); } waiting_to_resume_play = false; } @@ -892,6 +893,10 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame case SYS_CHARGER_DISCONNECTED: car_adapter_mode_processing(false); return SYS_CHARGER_DISCONNECTED; + + case SYS_CAR_ADAPTER_RESUME: + audio_resume(); + return SYS_CAR_ADAPTER_RESUME; #endif #ifdef HAVE_HEADPHONE_DETECTION case SYS_PHONE_PLUGGED: diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h index 8d7ca95..3d70e49 100644 --- a/firmware/export/kernel.h +++ b/firmware/export/kernel.h @@ -70,6 +70,7 @@ #define SYS_REMOTE_PLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 4) #define SYS_REMOTE_UNPLUGGED MAKE_SYS_EVENT(SYS_EVENT_CLS_PLUG, 5) #define SYS_SCREENDUMP MAKE_SYS_EVENT(SYS_EVENT_CLS_MISC, 0) +#define SYS_CAR_ADAPTER_RESUME MAKE_SYS_EVENT(SYS_EVENT_CLS_MISC, 1) struct event { |