From 204e90b248df80162673ec7a38a31f582a9bf087 Mon Sep 17 00:00:00 2001 From: Seungbae Shin Date: Thu, 23 Jan 2020 17:00:05 +0900 Subject: [PATCH] Move drain method to subclass CAudioOutput fix improper virtual function keyword [Version] 0.5.25 [Issue Type] Revise Change-Id: I038e0450c8342dcf0155b12df1a98e2ec981a7c9 --- include/CAudioIO.h | 25 +++++++++---------------- include/CAudioOutput.h | 2 +- packaging/capi-media-audio-io.spec | 2 +- src/cpp/CAudioIO.cpp | 20 -------------------- src/cpp/CAudioOutput.cpp | 14 +++++++++++++- src/cpp/cpp_audio_io.cpp | 6 +++++- 6 files changed, 29 insertions(+), 40 deletions(-) diff --git a/include/CAudioIO.h b/include/CAudioIO.h index 2d92b39..667d3ae 100644 --- a/include/CAudioIO.h +++ b/include/CAudioIO.h @@ -75,28 +75,21 @@ namespace tizen_media_audio { explicit CAudioIO(CAudioInfo& audioInfo); virtual ~CAudioIO() = default; - /* Pure Virtual Methods */ - virtual void initialize() = 0; - virtual void finalize() = 0; - - virtual void prepare() = 0; - virtual void unprepare() = 0; - - virtual void pause() = 0; - virtual void resume() = 0; - - /* FIXME : drain needed to be moved to sub-class */ - virtual void drain(); - virtual void flush() = 0; - - virtual int getBufferSize() = 0; - /* Implemented Handlers */ virtual void onStream(CPulseAudioClient* pClient, size_t length); virtual void onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy); virtual void onStateChanged(CAudioInfo::EAudioIOState state); /* Methods */ + virtual void initialize(); + virtual void finalize(); + virtual void prepare(); + virtual void unprepare(); + virtual void pause(); + virtual void resume(); + virtual void flush(); + virtual int getBufferSize() = 0; + CAudioInfo& getAudioInfo(); virtual void setStreamCallback(SStreamCallback callback); diff --git a/include/CAudioOutput.h b/include/CAudioOutput.h index 8e57ef5..146f2f1 100644 --- a/include/CAudioOutput.h +++ b/include/CAudioOutput.h @@ -48,7 +48,7 @@ namespace tizen_media_audio { void pause() override; void resume() override; - void drain() override; + void drain(); void flush() override; int getBufferSize() override; diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index bf33384..fe2c544 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.5.24 +Version: 0.5.25 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/cpp/CAudioIO.cpp b/src/cpp/CAudioIO.cpp index c39ec15..00cfd59 100644 --- a/src/cpp/CAudioIO.cpp +++ b/src/cpp/CAudioIO.cpp @@ -276,26 +276,6 @@ void CAudioIO::resume() { throw; } } - -void CAudioIO::drain() { - if (!__mIsInit || !IsReady()) - THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO"); //LCOV_EXCL_LINE - - try { - if (mpPulseAudioClient->isInThread()) { - mpPulseAudioClient->drain(); - } else { - internalLock(); - mpPulseAudioClient->drain(); - internalUnlock(); - } - } catch (const CAudioError& e) { - if (!mpPulseAudioClient->isInThread()) - internalUnlock(); - throw; - } -} - void CAudioIO::flush() { if (!__mIsInit || !IsReady()) THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO"); //LCOV_EXCL_LINE diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index 8a84f29..3f7b79a 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -231,7 +231,19 @@ void CAudioOutput::drain() { if (mStreamCallback.onStream) THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "async type don't support drain"); - CAudioIO::drain(); + try { + if (mpPulseAudioClient->isInThread()) { + mpPulseAudioClient->drain(); + } else { + internalLock(); + mpPulseAudioClient->drain(); + internalUnlock(); + } + } catch (const CAudioError& e) { + if (!mpPulseAudioClient->isInThread()) + internalUnlock(); + throw; + } } void CAudioOutput::flush() { diff --git a/src/cpp/cpp_audio_io.cpp b/src/cpp/cpp_audio_io.cpp index d4fe6f3..7161e53 100644 --- a/src/cpp/cpp_audio_io.cpp +++ b/src/cpp/cpp_audio_io.cpp @@ -965,7 +965,11 @@ int cpp_audio_out_drain(audio_out_h output) { assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p]", handle); - handle->audioIoHandle->drain(); + auto output_handle = dynamic_cast(handle->audioIoHandle); + if (output_handle == nullptr) + return __convert_audio_io_error(CAudioError::EError::ERROR_INVALID_HANDLE); + + output_handle->drain(); } catch (const CAudioError& e) { AUDIO_IO_LOGE("%s", e.getErrorMsg()); return __convert_audio_io_error(e.getError()); -- 2.7.4