From: Sangchul Lee Date: Thu, 5 Aug 2021 06:29:10 +0000 (+0900) Subject: webrtc_internal/private: Apply g_mutex_locker_new() X-Git-Tag: submit/tizen/20210812.064820^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f50d926475c17fa01102505c17732681f1acc77b;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_internal/private: Apply g_mutex_locker_new() [Version] 0.2.72 [Issue Type] Refactoring Change-Id: I2a564902a6ebba778e77162d29d39b86c628c533 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index f711da80..3f9c96fe 100644 --- a/packaging/capi-media-webrtc.spec +++ b/packaging/capi-media-webrtc.spec @@ -1,6 +1,6 @@ Name: capi-media-webrtc Summary: A WebRTC library in Tizen Native API -Version: 0.2.71 +Version: 0.2.72 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc_internal.c b/src/webrtc_internal.c index e0c48f11..95fc1e67 100644 --- a/src/webrtc_internal.c +++ b/src/webrtc_internal.c @@ -20,24 +20,23 @@ int webrtc_set_ecore_wl_display(webrtc_h webrtc, unsigned int track_id, void *ecore_wl_window) { int ret = WEBRTC_ERROR_NONE; + g_autoptr(GMutexLocker) locker = NULL; webrtc_s *_webrtc = (webrtc_s*)webrtc; RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL"); RET_VAL_IF(track_id == 0, WEBRTC_ERROR_INVALID_PARAMETER, "track id is 0"); RET_VAL_IF(ecore_wl_window == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "ecore_wl_window is NULL"); - g_mutex_lock(&_webrtc->mutex); + locker = g_mutex_locker_new(&_webrtc->mutex); - RET_VAL_WITH_UNLOCK_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, "callback was not set"); - RET_VAL_WITH_UNLOCK_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION, &_webrtc->mutex, + RET_VAL_IF(_webrtc->track_added_cb.callback == NULL, WEBRTC_ERROR_INVALID_OPERATION, "callback was not set"); + RET_VAL_IF(!_is_owner_of_track_build_context(_webrtc, track_id), WEBRTC_ERROR_INVALID_OPERATION, "this function should be called within the track added callback"); ret = _set_display_to_sink(webrtc, track_id, WEBRTC_DISPLAY_TYPE_ECORE_WL, ecore_wl_window); if (ret == WEBRTC_ERROR_NONE) LOG_INFO("track_id[%u] type[%d] display[%p]", track_id, WEBRTC_DISPLAY_TYPE_ECORE_WL, ecore_wl_window); - g_mutex_unlock(&_webrtc->mutex); - return ret; } @@ -62,20 +61,19 @@ int webrtc_media_source_set_video_loopback_to_ecore_wl(webrtc_h webrtc, unsigned int webrtc_add_media_source_internal(webrtc_h webrtc, webrtc_media_source_type_internal_e type, unsigned int *source_id) { int ret = WEBRTC_ERROR_NONE; + g_autoptr(GMutexLocker) locker = NULL; webrtc_s *_webrtc = (webrtc_s*)webrtc; RET_VAL_IF(_webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL"); RET_VAL_IF(source_id == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source_id is NULL"); - g_mutex_lock(&_webrtc->mutex); + locker = g_mutex_locker_new(&_webrtc->mutex); - RET_VAL_WITH_UNLOCK_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &_webrtc->mutex, "the state should be IDLE"); + RET_VAL_IF(_webrtc->state != WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should be IDLE"); ret = _add_media_source_internal(webrtc, type, source_id); if (ret == WEBRTC_ERROR_NONE) LOG_INFO("source_id[%u]", *source_id); - g_mutex_unlock(&_webrtc->mutex); - return ret; } \ No newline at end of file diff --git a/src/webrtc_private.c b/src/webrtc_private.c index 4d3c24d9..7e3f82e2 100644 --- a/src/webrtc_private.c +++ b/src/webrtc_private.c @@ -324,6 +324,7 @@ static gboolean __bus_watch_cb(GstBus *bus, GstMessage *message, gpointer user_d GstState gst_state_new = GST_STATE_VOID_PENDING; GstState gst_state_pending = GST_STATE_VOID_PENDING; gchar *state_transition_name = NULL; + g_autoptr(GMutexLocker) locker = NULL; RET_VAL_IF(webrtc == NULL, FALSE, "webrtc is NULL"); RET_VAL_IF(webrtc->gst.pipeline == NULL, FALSE, "pipeline is NULL"); @@ -364,22 +365,19 @@ static gboolean __bus_watch_cb(GstBus *bus, GstMessage *message, gpointer user_d LOG_INFO("GST_MESSAGE_STATE_CHANGED: %s", state_transition_name); g_free(state_transition_name); - g_mutex_lock(&webrtc->mutex); + locker = g_mutex_locker_new(&webrtc->mutex); if (webrtc->pend_state == webrtc->state) { LOG_DEBUG("pend_state[%s] is same with current state", __state_str[webrtc->pend_state]); - g_mutex_unlock(&webrtc->mutex); break; } if (__meet_gst_state(webrtc->pend_state, gst_state_new, webrtc->negotiation_needed_cb_invoked)) { webrtc_state_e old_state = webrtc->state; webrtc->state = webrtc->pend_state; - g_mutex_unlock(&webrtc->mutex); + g_clear_pointer(&locker, g_mutex_locker_free); _invoke_state_changed_cb(webrtc, old_state, webrtc->state); break; } - - g_mutex_unlock(&webrtc->mutex); break; case GST_MESSAGE_ASYNC_DONE: @@ -1603,19 +1601,20 @@ bool _webrtcbin_have_remote_offer(webrtc_s *webrtc) int _webrtc_stop(webrtc_s *webrtc) { int ret = WEBRTC_ERROR_NONE; + g_autoptr(GMutexLocker) locker = NULL; RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL"); - g_mutex_lock(&webrtc->mutex); + locker = g_mutex_locker_new(&webrtc->mutex); - RET_VAL_WITH_UNLOCK_IF(webrtc->state == WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, &webrtc->mutex, "the state should not be IDLE"); + RET_VAL_IF(webrtc->state == WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should not be IDLE"); ret = _gst_pipeline_set_state(webrtc, GST_STATE_NULL); - RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &webrtc->mutex, "failed to _gst_pipeline_set_state()"); + RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to _gst_pipeline_set_state()"); #ifndef TIZEN_TV ret = _release_all_resources(webrtc); - RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &webrtc->mutex, "failed to release all resources"); + RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to release all resources"); #endif __destroy_sink_pipeline(webrtc); @@ -1626,8 +1625,6 @@ int _webrtc_stop(webrtc_s *webrtc) LOG_INFO("webrtc[%p] is stopped", webrtc); - g_mutex_unlock(&webrtc->mutex); - return ret; }