webrtc_private: Skip making rendering sink during stopping or destroying handle 34/265334/3 submit/tizen/20211020.012736
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 15 Oct 2021 04:50:26 +0000 (13:50 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 19 Oct 2021 07:40:08 +0000 (16:40 +0900)
[Version] 0.2.130
[Issue Type] Improvement

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

index f9da33282bea17f35d696c104d75b259abdcc61c..571623154afea6e175595fe837f8621465ca9f0a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.2.129
+Version:    0.2.130
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 822fc9c60879ba82443e73783c47b96a51efd3fa..05bcc568de3fe587621610a8b443a995e9f17836 100644 (file)
@@ -122,6 +122,8 @@ int webrtc_destroy(webrtc_h webrtc)
 
        locker = g_mutex_locker_new(&_webrtc->mutex);
 
+       _webrtc->pend_state = WEBRTC_STATE_IDLE;
+
        _unset_stats_timer(_webrtc);
 
        ret = _gst_pipeline_set_state(_webrtc, GST_STATE_NULL);
@@ -131,7 +133,6 @@ int webrtc_destroy(webrtc_h webrtc)
        ret = _destroy_resource_manager(_webrtc);
        RET_VAL_IF(ret != WEBRTC_ERROR_NONE, ret, "failed to _destroy_resource_manager()");
 #endif
-       _webrtc->pend_state = WEBRTC_STATE_IDLE;
        _webrtc->state = _webrtc->pend_state;
 
        _destroy_data_channels(_webrtc);
index 2fd65ce2e92d08d6b0c4935982c9a05b0a988545..68a22d53decc78fabcf430e71204e0d4c14fb270 100644 (file)
@@ -1102,6 +1102,8 @@ static void __webrtcbin_pad_added_cb(GstElement *webrtcbin, GstPad *new_pad, gpo
        if (GST_PAD_DIRECTION(new_pad) != GST_PAD_SRC)
                return;
 
+       RET_IF(webrtc->pend_state == WEBRTC_STATE_IDLE, "pend_state is IDLE, skip it");
+
        LOG_INFO("new pad[%s] is added", GST_PAD_NAME(new_pad));
 
        ret = __get_media_type_from_pad(new_pad, &is_video);
@@ -1720,6 +1722,8 @@ int _webrtc_stop(webrtc_s *webrtc)
 
        RET_VAL_IF(webrtc->state == WEBRTC_STATE_IDLE, WEBRTC_ERROR_INVALID_STATE, "the state should not be IDLE");
 
+       webrtc->pend_state = WEBRTC_STATE_IDLE;
+
        _unset_stats_timer(webrtc);
 
        ret = _gst_pipeline_set_state(webrtc, GST_STATE_NULL);