From 16301880a147cee50dc49fc1890feaf28bb4edb1 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Mon, 8 Oct 2007 09:09:40 +0000 Subject: 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 --- apps/misc.c | 7 ++++++- firmware/export/kernel.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) 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) 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 8d7ca95184..3d70e49a4c 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 { -- cgit v1.2.3