Fix bug regarding ignore session
[platform/core/api/audio-io.git] / src / cpp / CAudioIO.cpp
index 7fe98a9..1afcac2 100644 (file)
@@ -300,7 +300,7 @@ void CAudioIO::onSignal(CAudioSessionHandler* pHandler, mm_sound_signal_name_t s
     assert(pHandler);
 
     if (signal == MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS) {
-        if (value == 1 && pHandler->getSubscribeId() >= 0) {
+        if (value == 1 && pHandler->getSubscribeId() > 0) {
             // Unregister focus watch callback & disable session handler
             pHandler->disableSessionHandler();
             AUDIO_IO_LOGD("Session handler disabled by signal");
@@ -468,22 +468,21 @@ CAudioIO::SInterruptCallback CAudioIO::getInterruptCallback() throw(CAudioError)
 
 
 void CAudioIO::ignoreSession() throw(CAudioError) {
-    if (__mIsInit == false) {
+    if (__mIsInit == false)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
-    }
 
     try {
         internalLock();
 
-        if (mpPulseAudioClient != NULL && mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING) {
+        if (mpPulseAudioClient != NULL && mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "An Operation is not permitted while started");
-        }
 
         bool isSkip = mpAudioSessionHandler->isSkipSessionEvent();
-        if (isSkip == false && mpAudioSessionHandler->getId() >= 0) {
+        if (isSkip == false && mpAudioSessionHandler->getId() >= 0)
             mpAudioSessionHandler->unregisterSound();
-            __mForceIgnore = true;
-        }
+
+        mpAudioSessionHandler->finalize();
+        __mForceIgnore = true;
 
         internalUnlock();
     } catch (CAudioError e) {