webrtc_internal/private: Apply g_mutex_locker_new() 51/262251/4 submit/tizen/20210812.064820
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 5 Aug 2021 06:29:10 +0000 (15:29 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 11 Aug 2021 06:23:07 +0000 (15:23 +0900)
[Version] 0.2.72
[Issue Type] Refactoring

Change-Id: I2a564902a6ebba778e77162d29d39b86c628c533
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
src/webrtc_internal.c
src/webrtc_private.c

index f711da8094999e6a7a5f7b7397092a0fe9fe7da2..3f9c96fe60a7c1785839c3d7fa9027ec5d628235 100644 (file)
@@ -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
index e0c48f11dfc8b4892b4aa7335407f93c051eb4de..95fc1e677acfc348e91e9956cff87a30d60dc129 100644 (file)
 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
index 4d3c24d9df39ef905c03a20e31b79fa2113c6382..7e3f82e29cef52d7ea5061180a6192719fefc972 100644 (file)
@@ -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;
 }