From: Sangchul Lee Date: Fri, 15 Oct 2021 04:50:26 +0000 (+0900) Subject: webrtc_private: Skip making rendering sink during stopping or destroying handle X-Git-Tag: submit/tizen/20211020.012736^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dd6cbbf24009293bc8cb94526b3c5d02eab64727;p=platform%2Fcore%2Fapi%2Fwebrtc.git webrtc_private: Skip making rendering sink during stopping or destroying handle [Version] 0.2.130 [Issue Type] Improvement Change-Id: I2a563aefd9734333cd9e54f9c25a3ef36e1eb2b0 Signed-off-by: Sangchul Lee --- diff --git a/packaging/capi-media-webrtc.spec b/packaging/capi-media-webrtc.spec index f9da3328..57162315 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.129 +Version: 0.2.130 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/webrtc.c b/src/webrtc.c index 822fc9c6..05bcc568 100644 --- a/src/webrtc.c +++ b/src/webrtc.c @@ -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); diff --git a/src/webrtc_private.c b/src/webrtc_private.c index 2fd65ce2..68a22d53 100644 --- a/src/webrtc_private.c +++ b/src/webrtc_private.c @@ -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);