X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcpp%2FCAudioOutput.cpp;h=3f7b79a8022e663cffb7d0da322c83f9320cdadd;hb=204e90b248df80162673ec7a38a31f582a9bf087;hp=8a84f29737a6bb0bb7aa8097c289d774eb3bfec3;hpb=63517ff7e42ca558fabf897e044be3ef6bb066b9;p=platform%2Fcore%2Fapi%2Faudio-io.git diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index 8a84f29..3f7b79a 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -231,7 +231,19 @@ void CAudioOutput::drain() { if (mStreamCallback.onStream) THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "async type don't support drain"); - CAudioIO::drain(); + try { + if (mpPulseAudioClient->isInThread()) { + mpPulseAudioClient->drain(); + } else { + internalLock(); + mpPulseAudioClient->drain(); + internalUnlock(); + } + } catch (const CAudioError& e) { + if (!mpPulseAudioClient->isInThread()) + internalUnlock(); + throw; + } } void CAudioOutput::flush() {