From 0b8b2ffbac0f905312b5dcc0337df7a57f1b1123 Mon Sep 17 00:00:00 2001 From: Seungbae Shin Date: Fri, 16 Aug 2019 14:38:25 +0900 Subject: [PATCH] revise callback assignments Change-Id: I4fa2dfe77af2d0412f97a737633eb599a98b3b1e --- include/CAudioIO.h | 30 ++++++++++++++--- src/cpp/cpp_audio_io.cpp | 69 +++++++++++++++++++++------------------- 2 files changed, 63 insertions(+), 36 deletions(-) diff --git a/include/CAudioIO.h b/include/CAudioIO.h index 078795d..2d92b39 100644 --- a/include/CAudioIO.h +++ b/include/CAudioIO.h @@ -36,16 +36,38 @@ namespace tizen_media_audio { void* mUserData; void (*onStream)(size_t nbytes, void* user_data); - SStreamCallback() : mUserData(nullptr), onStream(nullptr) - { /* Empty Body */ } + SStreamCallback() : mUserData(nullptr), onStream(nullptr) { + /* Empty Body */ + } + + void set(void (*callback)(size_t, void*), void* userdata) { + onStream = callback; + mUserData = userdata; + } + + void unset() { + onStream = nullptr; + mUserData = nullptr; + } }; struct SStateChangedCallback { void* mUserData; void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data); - SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) - { /* Empty Body */ } + SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) { + /* Empty Body */ + } + + void set(void (*callback)(CAudioInfo::EAudioIOState, CAudioInfo::EAudioIOState, bool, void*), void* userdata) { + onStateChanged = callback; + mUserData = userdata; + } + + void unset() { + onStateChanged = nullptr; + mUserData = nullptr; + } }; /* Constructor & Destructor */ diff --git a/src/cpp/cpp_audio_io.cpp b/src/cpp/cpp_audio_io.cpp index d5370a6..c184b9c 100644 --- a/src/cpp/cpp_audio_io.cpp +++ b/src/cpp/cpp_audio_io.cpp @@ -40,6 +40,16 @@ typedef struct audio_io_stream_cb_s { audio_io_stream_cb_s() : user_data(nullptr), onStream(nullptr) {/* Empty Body */} + + void set(audio_in_stream_cb callback, void* userdata) { + onStream = callback; + user_data = userdata; + } + + void unset() { + onStream = nullptr; + user_data = nullptr; + } } audio_io_stream_cb_s; /** @@ -54,6 +64,17 @@ typedef struct audio_io_state_changed_cb_s { audio_io_state_changed_cb_s() : user_data(nullptr), onStateChanged(nullptr) {/* Empty Body */} + + void set(audio_in_state_changed_cb callback, void* userdata) { + onStateChanged = callback; + user_data = userdata; + } + + void unset() { + onStateChanged = nullptr; + user_data = nullptr; + } + } audio_io_state_changed_cb_s; /** @@ -725,12 +746,10 @@ int cpp_audio_in_set_stream_cb(audio_in_h input, audio_in_stream_cb callback, vo assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p], callback:[%p], user_data:[%p]", handle, callback, user_data); - handle->stream_callback.onStream = callback; - handle->stream_callback.user_data = user_data; + handle->stream_callback.set(callback, user_data); auto cb = handle->audioIoHandle->getStreamCallback(); - cb.mUserData = static_cast(handle); - cb.onStream = __stream_cb_internal; + cb.set(__stream_cb_internal, static_cast(handle)); handle->audioIoHandle->setStreamCallback(cb); } catch (CAudioError& e) { @@ -752,12 +771,10 @@ int cpp_audio_in_unset_stream_cb(audio_in_h input) { assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p]", handle); - handle->stream_callback.onStream = nullptr; - handle->stream_callback.user_data = nullptr; + handle->stream_callback.unset(); auto cb = handle->audioIoHandle->getStreamCallback(); - cb.mUserData = nullptr; - cb.onStream = nullptr; + cb.unset(); handle->audioIoHandle->setStreamCallback(cb); } catch (CAudioError& e) { @@ -824,12 +841,10 @@ int cpp_audio_in_set_state_changed_cb(audio_in_h input, audio_in_state_changed_c assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p], callback:[%p], user_data:[%p]", handle, callback, user_data); - handle->state_changed_callback.onStateChanged = callback; - handle->state_changed_callback.user_data = user_data; + handle->state_changed_callback.set(callback, user_data); auto cb = handle->audioIoHandle->getStateChangedCallback(); - cb.mUserData = static_cast(handle); - cb.onStateChanged = __state_changed_cb_internal; + cb.set(__state_changed_cb_internal, static_cast(handle)); handle->audioIoHandle->setStateChangedCallback(cb); } catch (CAudioError& e) { @@ -852,12 +867,10 @@ int cpp_audio_in_unset_state_changed_cb(audio_in_h input) { assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p]", handle); - handle->state_changed_callback.onStateChanged = nullptr; - handle->state_changed_callback.user_data = nullptr; + handle->state_changed_callback.unset(); auto cb = handle->audioIoHandle->getStateChangedCallback(); - cb.mUserData = nullptr; - cb.onStateChanged = nullptr; + cb.unset(); handle->audioIoHandle->setStateChangedCallback(cb); } catch (CAudioError& e) { @@ -1219,12 +1232,10 @@ int cpp_audio_out_set_stream_cb(audio_out_h output, audio_out_stream_cb callback assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p], callback:[%p], user_data:[%p]", handle, callback, user_data); - handle->stream_callback.onStream = callback; - handle->stream_callback.user_data = user_data; + handle->stream_callback.set(callback, user_data); auto cb = handle->audioIoHandle->getStreamCallback(); - cb.mUserData = static_cast(handle); - cb.onStream = __stream_cb_internal; + cb.set(__stream_cb_internal, static_cast(handle)); handle->audioIoHandle->setStreamCallback(cb); } catch (CAudioError& e) { @@ -1247,12 +1258,10 @@ int cpp_audio_out_unset_stream_cb(audio_out_h output) { assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p]", handle); - handle->stream_callback.onStream = nullptr; - handle->stream_callback.user_data = nullptr; + handle->stream_callback.unset(); auto cb = handle->audioIoHandle->getStreamCallback(); - cb.mUserData = nullptr; - cb.onStream = nullptr; + cb.unset(); handle->audioIoHandle->setStreamCallback(cb); } catch (CAudioError& e) { @@ -1275,12 +1284,10 @@ int cpp_audio_out_set_state_changed_cb(audio_out_h output, audio_in_state_change assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p], callback:[%p], user_data:[%p]", handle, callback, user_data); - handle->state_changed_callback.onStateChanged = callback; - handle->state_changed_callback.user_data = user_data; + handle->state_changed_callback.set(callback, user_data); auto cb = handle->audioIoHandle->getStateChangedCallback(); - cb.mUserData = static_cast(handle); - cb.onStateChanged = __state_changed_cb_internal; + cb.set(__state_changed_cb_internal, static_cast(handle)); handle->audioIoHandle->setStateChangedCallback(cb); } catch (CAudioError& e) { @@ -1303,12 +1310,10 @@ int cpp_audio_out_unset_state_changed_cb(audio_out_h output) { assert(handle->audioIoHandle); AUDIO_IO_LOGD("[%p]", handle); - handle->state_changed_callback.onStateChanged = nullptr; - handle->state_changed_callback.user_data = nullptr; + handle->state_changed_callback.unset(); auto cb = handle->audioIoHandle->getStateChangedCallback(); - cb.mUserData = nullptr; - cb.onStateChanged = nullptr; + cb.unset(); handle->audioIoHandle->setStateChangedCallback(cb); } catch (CAudioError& e) { -- 2.34.1