summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorBrandon Low <lostlogic@rockbox.org>2008-03-18 07:01:23 +0000
committerBrandon Low <lostlogic@rockbox.org>2008-03-18 07:01:23 +0000
commit7b1de20544bd3bb0fdbd2d998c9a49327b5aa0c4 (patch)
tree7c18df6b21d60ccb8a4b2ce41a49fad3b33b5a2d /apps
parent6d8b8274728ecfa7519f0ead2802514f456ae41d (diff)
downloadrockbox-7b1de20544bd3bb0fdbd2d998c9a49327b5aa0c4.tar.gz
rockbox-7b1de20544bd3bb0fdbd2d998c9a49327b5aa0c4.zip
Fix FS 8753, JdGordon started it, I finished it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16692 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/misc.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/apps/misc.c b/apps/misc.c
index b6b0a79b06..6f34e50a54 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -862,24 +862,35 @@ void car_adapter_mode_init(void)
#ifdef HAVE_HEADPHONE_DETECTION
static void unplug_change(bool inserted)
{
+ static bool headphone_caused_pause = false;
+
if (global_settings.unplug_mode)
{
+ int audio_stat = audio_status();
if (inserted)
{
- if ( global_settings.unplug_mode > 1 )
+ if ((audio_stat & AUDIO_STATUS_PLAY) &&
+ headphone_caused_pause &&
+ global_settings.unplug_mode > 1 )
audio_resume();
backlight_on();
+ headphone_caused_pause = false;
} else {
- audio_pause();
-
- if (global_settings.unplug_rw)
+ if ((audio_stat & AUDIO_STATUS_PLAY) &&
+ !(audio_stat & AUDIO_STATUS_PAUSE))
{
- if ( audio_current_track()->elapsed >
- (unsigned long)(global_settings.unplug_rw*1000))
- audio_ff_rewind(audio_current_track()->elapsed -
- (global_settings.unplug_rw*1000));
- else
- audio_ff_rewind(0);
+ headphone_caused_pause = true;
+ audio_pause();
+
+ if (global_settings.unplug_rw)
+ {
+ if (audio_current_track()->elapsed >
+ (unsigned long)(global_settings.unplug_rw*1000))
+ audio_ff_rewind(audio_current_track()->elapsed -
+ (global_settings.unplug_rw*1000));
+ else
+ audio_ff_rewind(0);
+ }
}
}
}