Move drain method to subclass CAudioOutput 44/223144/1 accepted/tizen/unified/20200203.125810 submit/tizen/20200129.111655 submit/tizen/20200130.111222 submit/tizen/20200131.044105
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 23 Jan 2020 08:00:05 +0000 (17:00 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Thu, 23 Jan 2020 08:02:02 +0000 (17:02 +0900)
fix improper virtual function keyword

[Version] 0.5.25
[Issue Type] Revise

Change-Id: I038e0450c8342dcf0155b12df1a98e2ec981a7c9

include/CAudioIO.h
include/CAudioOutput.h
packaging/capi-media-audio-io.spec
src/cpp/CAudioIO.cpp
src/cpp/CAudioOutput.cpp
src/cpp/cpp_audio_io.cpp

index 2d92b39..667d3ae 100644 (file)
@@ -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);
index 8e57ef5..146f2f1 100644 (file)
@@ -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;
index bf33384..fe2c544 100644 (file)
@@ -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
index c39ec15..00cfd59 100644 (file)
@@ -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
index 8a84f29..3f7b79a 100644 (file)
@@ -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() {
index d4fe6f3..7161e53 100644 (file)
@@ -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<CAudioOutput*>(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());