From: Seungbae Shin Date: Sat, 7 Jan 2017 06:13:01 +0000 (+0900) Subject: Return invalid operation error if read/write called not in running state X-Git-Tag: accepted/tizen/3.0/common/20170109.195808^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3020979ab1582ada7f8732362a12a4d81dee480f;p=platform%2Fcore%2Fapi%2Faudio-io.git Return invalid operation error if read/write called not in running state [Version] 0.3.51 [Profile] Common [Issue Type] Bug Change-Id: I618317840b846fdd1b9451c585d476b60cf593f4 --- diff --git a/include/CAudioIO.h b/include/CAudioIO.h index 9db7e23..98f2b0d 100644 --- a/include/CAudioIO.h +++ b/include/CAudioIO.h @@ -97,6 +97,8 @@ namespace tizen_media_audio { void ignoreSession() throw(CAudioError); + CAudioInfo::EAudioIOState getState(); + protected: /* Protected Methods */ virtual void setInit(bool flag); diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index 6351a45..f91925c 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -1,6 +1,6 @@ Name: capi-media-audio-io Summary: An Audio Input & Audio Output library in Tizen Native API -Version: 0.3.50 +Version: 0.3.51 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/cpp/CAudioIO.cpp b/src/cpp/CAudioIO.cpp index e1dd7a2..e7b4095 100644 --- a/src/cpp/CAudioIO.cpp +++ b/src/cpp/CAudioIO.cpp @@ -199,6 +199,10 @@ void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state) { onStateChanged(state, false); } +CAudioInfo::EAudioIOState CAudioIO::getState() { + return mState; +} + void CAudioIO::onInterrupt(CAudioSessionHandler* pHandler, int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info) { assert(pHandler); diff --git a/src/cpp/CAudioInput.cpp b/src/cpp/CAudioInput.cpp index 760c834..1e53881 100644 --- a/src/cpp/CAudioInput.cpp +++ b/src/cpp/CAudioInput.cpp @@ -425,7 +425,10 @@ size_t CAudioInput::read(void* buffer, size_t length) throw(CAudioError) { if (buffer == NULL) { THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameters are NULL buffer:%p", buffer); } - + if (CAudioIO::getState() != CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING) { + THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, + "Can't read if not in Running state"); + } /* Checks synchronous flag */ if (__mIsUsedSyncRead == false) { THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "Invalid operation of read() if receive stream callback"); diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index e0524f6..fbbe8ea 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -314,6 +314,10 @@ size_t CAudioOutput::write(const void* buffer, size_t length) throw(CAudioError) if (buffer == NULL) { THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameters are invalid - buffer:%p, length:%zu", buffer, length); } + if (CAudioIO::getState() != CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING) { + THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, + "Can't write if not in Running state"); + } /* When write() is called in PulseAudio callback, bypass a pcm data to CPulseAudioClient (For Asynchronous) */ if (mpPulseAudioClient->isInThread() == true) {