From d1d311c4c547784882789a92f3f8bb5115da1ea5 Mon Sep 17 00:00:00 2001 From: Lefucjusz Date: Mon, 28 Mar 2022 16:47:26 +0200 Subject: [PATCH] [MOS-331] Fix audio resuming after headset unplugging Fix of the audio playback bug, which prevented playback resuming after unplugging the headset when playback was paused. --- module-audio/Audio/Operation/PlaybackOperation.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/module-audio/Audio/Operation/PlaybackOperation.cpp b/module-audio/Audio/Operation/PlaybackOperation.cpp index 2b1c5e738e34d0899dd5af2ce32ed724ab89bb79..c776e0a1b76709f02df8a56dbf4b0b81b46dbc94 100644 --- a/module-audio/Audio/Operation/PlaybackOperation.cpp +++ b/module-audio/Audio/Operation/PlaybackOperation.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "PlaybackOperation.hpp" @@ -47,7 +47,7 @@ namespace audio audio::RetCode PlaybackOperation::Start(audio::Token token) { - if (state == State::Active || state == State::Paused) { + if (state == State::Active || (state == State::Paused && outputConnection != nullptr)) { return RetCode::InvokedInIncorrectState; } @@ -108,9 +108,14 @@ namespace audio audio::RetCode PlaybackOperation::Resume() { - if (state == State::Active || state == State::Idle || outputConnection == nullptr) { + if (state == State::Active || state == State::Idle) { return RetCode::InvokedInIncorrectState; } + + if (outputConnection == nullptr) { + Start(operationToken); + } + state = State::Active; outputConnection->enable(); return GetDeviceError(audioDevice->Resume());