Fix bug regarding ignore session
[platform/core/api/audio-io.git] / src / cpp / CAudioSessionHandler.cpp
index a9bfb1c..5a6dbaf 100644 (file)
@@ -88,7 +88,7 @@ CAudioSessionHandler::CAudioSessionHandler(EAudioSessionType sessionType, CAudio
     __mMultimediaSession(MM_SESSION_TYPE_MEDIA),
     __mpEventListener(listener),
     __mIsInit(false),
-    __mSubscribeId(-1),
+    __mSubscribeId(0),
     __mUseFocus(false),
     __mFocusType(FOCUS_NONE),
     __mState(FOCUS_IS_RELEASED),
@@ -176,7 +176,7 @@ MMSessionType CAudioSessionHandler::getMultimediaSession() {
     return __mMultimediaSession;
 }
 
-int CAudioSessionHandler::getSubscribeId() {
+unsigned int CAudioSessionHandler::getSubscribeId() {
     return __mSubscribeId;
 }
 
@@ -217,13 +217,13 @@ void CAudioSessionHandler::initialize() throw(CAudioError) {
         if (err == CAudioError::EError::ERROR_INVALID_HANDLE) {
             // No session, No stream_info, No focus watch callback before
             // Use focus watch callback with signal subscribe
-            unsigned int subscribe_id;
-            int errorCode = mm_sound_subscribe_signal(MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS, &subscribe_id, __sound_pcm_signal_cb, static_cast<void*>(this));
-            if (errorCode != MM_ERROR_NONE) {
-                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed mm_sound_subscribe_signal() err:0x%x", errorCode);
+
+            int errorCode = mm_sound_subscribe_signal(MM_SOUND_SIGNAL_RELEASE_INTERNAL_FOCUS, &__mSubscribeId, __sound_pcm_signal_cb, static_cast<void*>(this));
+            if (errorCode != MM_ERROR_NONE || __mSubscribeId == 0) {
+                THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed mm_sound_subscribe_signal() err:0x%x, __mSubscribeId:%u",
+                                       errorCode, __mSubscribeId);
             }
 
-            __mSubscribeId = (int)subscribe_id;
             AUDIO_IO_LOGD("Subscribed mm_sound signal");
 
             sessionOptions = 0;  // Mix with others by default
@@ -264,8 +264,9 @@ void CAudioSessionHandler::finalize() {
         __pcmCaptureCountDec();
     }
 
-    if (__mSubscribeId >= 0) {
+    if (__mSubscribeId > 0) {
         mm_sound_unsubscribe_signal(__mSubscribeId);
+        __mSubscribeId = 0;
     }
 
     __mpEventListener = NULL;