virtual void initialize() throw(CAudioError);
virtual void finalize();
- bool isSkipSession() throw(CAudioError);
+ bool isSkipSession();
void registerSound() throw(CAudioError);
void unregisterSound() throw(CAudioError);
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->isSkipSession();
- if (isSkip == false && mpAudioSessionHandler->getId() >= 0)
- mpAudioSessionHandler->unregisterSound();
-
- mpAudioSessionHandler->finalize();
- __mForceIgnore = true;
+ abandonInternalFocus();
internalUnlock();
} catch (CAudioError e) {
if (mState != CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE)
THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE, "it is not permitted while started");
+ abandonInternalFocus();
+
int errorCode = SOUND_MANAGER_ERROR_NONE;
CAudioInfo::EAudioType audioType = CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
char *type = NULL;
throw e;
}
}
+
+void CAudioIO::abandonInternalFocus() throw(CAudioError) {
+ bool isSkip = mpAudioSessionHandler->isSkipSession();
+ int id = mpAudioSessionHandler->getId();
+
+ try {
+ if (isSkip == false && id >= 0)
+ mpAudioSessionHandler->unregisterSound();
+
+ mpAudioSessionHandler->finalize();
+ __mForceIgnore = true;
+ } catch (CAudioError e) {
+ throw e;
+ }
+}
errorCode, __mSubscribeId);
}
- AUDIO_IO_LOGD("Subscribed mm_sound signal");
+ AUDIO_IO_LOGD("Subscribed mm_sound signal [id:%d]", __mSubscribeId);
sessionOptions = 0; // Mix with others by default
__mUseFocus = true;
}
if (__mSubscribeId > 0) {
+ AUDIO_IO_LOGD("Unsubscribed mm_sound signal [id:%d]", __mSubscribeId);
mm_sound_unsubscribe_signal(__mSubscribeId);
__mSubscribeId = 0;
}
__mIsInit = false;
}
-bool CAudioSessionHandler::isSkipSession() throw(CAudioError) {
+bool CAudioSessionHandler::isSkipSession() {
if (__mMultimediaSession == MM_SESSION_TYPE_REPLACED_BY_STREAM ||
__mMultimediaSession == MM_SESSION_TYPE_VOIP ||
__mMultimediaSession == MM_SESSION_TYPE_CALL ||