From 2df3a5b04c40d548391c69c18780fefd420fac02 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Thu, 17 Sep 2020 14:53:29 -0400 Subject: Headphone / lineout pause/resume #FS13237 Allow Lineout to behave like headphone port in regards to plug/unplug pause/resume Change-Id: I9cb2c9c40e0bdf3bf7e1e272164acd343f6b3850 --- apps/misc.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'apps/misc.c') diff --git a/apps/misc.c b/apps/misc.c index 2d60ecca49..d255eaf766 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -498,7 +498,7 @@ void car_adapter_mode_init(void) #ifdef HAVE_HEADPHONE_DETECTION static void hp_unplug_change(bool inserted) { - static bool headphone_caused_pause = false; + static bool headphone_caused_pause = true; if (global_settings.unplug_mode) { @@ -526,7 +526,7 @@ static void hp_unplug_change(bool inserted) audio_enable_speaker(global_settings.speaker_mode); #endif } -#endif +#endif /*HAVE_HEADPHONE_DETECTION*/ #ifdef HAVE_LINEOUT_DETECTION static void lo_unplug_change(bool inserted) @@ -534,11 +534,32 @@ static void lo_unplug_change(bool inserted) #ifdef HAVE_LINEOUT_POWEROFF lineout_set(inserted); #else - (void)inserted; - audiohw_set_lineout_volume(0,0); -#endif + audiohw_set_lineout_volume(0,0); /*hp vol re-set by this function as well*/ + static bool lineout_caused_pause = true; + + if (global_settings.unplug_mode) + { + int audio_stat = audio_status(); + if (inserted) + { + backlight_on(); + if ((audio_stat & AUDIO_STATUS_PLAY) && + lineout_caused_pause && + global_settings.unplug_mode > 1 ) + unpause_action(true, true); + lineout_caused_pause = false; + } else { + if ((audio_stat & AUDIO_STATUS_PLAY) && + !(audio_stat & AUDIO_STATUS_PAUSE)) + { + lineout_caused_pause = true; + pause_action(false, false); + } + } + } +#endif /*HAVE_LINEOUT_POWEROFF*/ } -#endif +#endif /*HAVE_LINEOUT_DETECTION*/ long default_event_handler_ex(long event, void (*callback)(void *), void *parameter) { -- cgit v1.2.3