if (__meet_gst_state(webrtc->pend_state, gst_state_new)) {
webrtc_state_e old_state = webrtc->state;
webrtc->state = webrtc->pend_state;
-
+ g_mutex_unlock(&webrtc->mutex);
__invoke_state_changed_cb(webrtc, old_state, webrtc->state);
+ break;
}
- g_mutex_unlock(&webrtc->mutex);
+ g_mutex_unlock(&webrtc->mutex);
break;
case GST_MESSAGE_ASYNC_DONE:
switch (peer_connection_state) {
case GST_WEBRTC_PEER_CONNECTION_STATE_NEW:
new_state = "NEW";
+
+ g_mutex_lock(&webrtc->mutex);
if (webrtc->state == WEBRTC_STATE_NEGOTIATING) {
webrtc_state_e old_state = webrtc->state;
webrtc->state = webrtc->pend_state = WEBRTC_STATE_PLAYING;
+ g_mutex_unlock(&webrtc->mutex);
__invoke_state_changed_cb(webrtc, old_state, webrtc->state);
+ break;
}
+
+ g_mutex_unlock(&webrtc->mutex);
break;
case GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING: