From 956fbd3f352f8bba5b8bf985b1787fc7b71aff24 Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Tue, 28 Apr 2020 13:18:52 +0200 Subject: CoreAudio: Don't apply audio category if it is not needed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If just devices are requested, no need to apply any categories with activation of audio device. Postpone setting category and activating audio until actual playing is requested. Categories/options for input devices: AVAudioSessionCategoryPlayAndRecord with AVAudioSessionCategoryOptionMixWithOthers For output: AVAudioSessionCategoryAmbient with no options. Fixes: QTBUG-83776 Change-Id: I9364bdea2882bc23039817207eca62b311841ba6 Reviewed-by: Tor Arne Vestbø (cherry picked from commit b5a55492a63cb2cda75d6f980acb7fc5ae8dfc22) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/coreaudio/coreaudiooutput.mm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/plugins/coreaudio/coreaudiooutput.mm') diff --git a/src/plugins/coreaudio/coreaudiooutput.mm b/src/plugins/coreaudio/coreaudiooutput.mm index caa4a1abb..b8addc1cf 100644 --- a/src/plugins/coreaudio/coreaudiooutput.mm +++ b/src/plugins/coreaudio/coreaudiooutput.mm @@ -549,6 +549,13 @@ OSStatus CoreAudioOutput::renderCallback(void *inRefCon, AudioUnitRenderActionFl bool CoreAudioOutput::open() { +#if defined(Q_OS_IOS) + // Set default category to Ambient (implies MixWithOthers). This makes sure audio stops playing + // if the screen is locked or if the Silent switch is toggled. + CoreAudioSessionManager::instance().setCategory(CoreAudioSessionManager::Ambient, CoreAudioSessionManager::None); + CoreAudioSessionManager::instance().setActive(true); +#endif + if (m_errorCode != QAudio::NoError) return false; -- cgit v1.2.3