int getOptions();
EAudioSessionType getAudioSession();
MMSessionType getMultimediaSession();
- int getSubscribeId();
+ unsigned int getSubscribeId();
CAudioInfo getAudioInfo();
private:
IAudioSessionEventListener* __mpEventListener;
bool __mIsInit;
- int __mSubscribeId;
+ unsigned int __mSubscribeId;
bool __mUseFocus;
mm_sound_focus_type_e __mFocusType; /* For audio focus */
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");
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) {
__mMultimediaSession(MM_SESSION_TYPE_MEDIA),
__mpEventListener(listener),
__mIsInit(false),
- __mSubscribeId(-1),
+ __mSubscribeId(0),
__mUseFocus(false),
__mFocusType(FOCUS_NONE),
__mState(FOCUS_IS_RELEASED),
return __mMultimediaSession;
}
-int CAudioSessionHandler::getSubscribeId() {
+unsigned int CAudioSessionHandler::getSubscribeId() {
return __mSubscribeId;
}
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
__pcmCaptureCountDec();
}
- if (__mSubscribeId >= 0) {
+ if (__mSubscribeId > 0) {
mm_sound_unsubscribe_signal(__mSubscribeId);
+ __mSubscribeId = 0;
}
__mpEventListener = NULL;