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);
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);
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);
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);