webrtc_state_e old_state;
g_mutex_lock(&webrtc->mutex);
-
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
old_state = webrtc->state;
webrtc->state = data->new.state;
-
g_mutex_unlock(&webrtc->mutex);
_invoke_state_changed_cb(webrtc, old_state, webrtc->state);
break;
}
+
case IDLE_CB_TYPE_ERROR:
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
+
__invoke_error_cb(webrtc, data->new.error);
break;
+
case IDLE_CB_TYPE_PEER_CONNECTION_STATE_CHANGE:
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
+
__invoke_peer_connection_state_change_cb(webrtc, data->new.peer_connection_state);
break;
+
case IDLE_CB_TYPE_SIGNALING_STATE_CHANGE:
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
+
__invoke_signaling_state_change_cb(webrtc, data->new.signaling_state);
break;
+
case IDLE_CB_TYPE_ICE_GATHERING_STATE_CHANGE:
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
+
__invoke_ice_gathering_state_change_cb(webrtc, data->new.ice_gathering_state);
break;
+
case IDLE_CB_TYPE_ICE_CONNECTION_STATE_CHANGE:
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = 0;
+ g_mutex_unlock(&webrtc->event_src_mutex);
+
__invoke_ice_connection_state_change_cb(webrtc, data->new.ice_connection_state);
break;
+
default:
LOG_ERROR_IF_REACHED("type(%d)", data->type);
}
webrtc->pend_state = new_state;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("state will be changed [%s] -> [%s], source id[%u]",
__state_str[webrtc->state], __state_str[new_state], webrtc->idle_cb_event_source_ids[data->type]);
data->type = IDLE_CB_TYPE_ERROR;
data->new.error = error;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("error will occur [0x%x], source id[%u]", error, webrtc->idle_cb_event_source_ids[data->type]);
}
data->type = IDLE_CB_TYPE_PEER_CONNECTION_STATE_CHANGE;
data->new.peer_connection_state = state;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("connection state will be changed to [%u], source id[%u]", state, webrtc->idle_cb_event_source_ids[data->type]);
}
data->type = IDLE_CB_TYPE_SIGNALING_STATE_CHANGE;
data->new.signaling_state = state;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("signaling state will be changed to [%u], source id[%u]", state, webrtc->idle_cb_event_source_ids[data->type]);
}
data->type = IDLE_CB_TYPE_ICE_GATHERING_STATE_CHANGE;
data->new.ice_gathering_state = state;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("ICE gathering state will be changed to [%u], source id[%u]", state, webrtc->idle_cb_event_source_ids[data->type]);
}
data->type = IDLE_CB_TYPE_ICE_CONNECTION_STATE_CHANGE;
data->new.ice_connection_state = state;
+ g_mutex_lock(&webrtc->event_src_mutex);
webrtc->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
+ g_mutex_unlock(&webrtc->event_src_mutex);
LOG_DEBUG("ICE connection state will be changed to [%u], source id[%u]", state, webrtc->idle_cb_event_source_ids[data->type]);
}