webrtc_private: Revise _post_state_in_idle() 36/253936/6
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 19 Feb 2021 11:00:38 +0000 (20:00 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Wed, 24 Feb 2021 02:54:19 +0000 (11:54 +0900)
Rename _post_state_in_idle() to __post_state_cb_in_idle().
Remove prototype in webrtc_private.h.
Allocate userdata to have expansibility.

[Version] 0.1.117
[Issue Type] Refactoring

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

index a6ddce67cb1370524be287b1612fbe66294b91ac..adea6f63351929a26cca1676678b79acfd5fa479 100644 (file)
@@ -451,7 +451,6 @@ bool _check_if_format_is_set_to_packet_sources(webrtc_s *webrtc);
 int _push_media_packet(webrtc_s *webrtc, unsigned int source_id, media_packet_h packet);
 int _get_transceiver_direction(webrtc_s *webrtc, unsigned int source_id, webrtc_media_type_e media_type, webrtc_transceiver_direction_e *direction);
 int _set_transceiver_direction(webrtc_s *webrtc, unsigned int source_id, webrtc_media_type_e media_type, webrtc_transceiver_direction_e direction);
-void _post_state_in_idle(webrtc_s *webrtc, webrtc_state_e new_state);
 void _invoke_state_changed_cb(webrtc_s *webrtc, webrtc_state_e old, webrtc_state_e new);
 
 void _connect_and_append_signal(GList **signals, GObject *obj, const char *sig_name, GCallback cb, gpointer user_data);
index 14366eb6a0389376a8f05899c1e17688230beaed..795c5a702d5013b0034246b6e9278dbda2e8fb0f 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.1.116
+Version:    0.1.117
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index c1720074ebcc783db3887c65e3de668ab2856028..6eb1aa4f9e1609f56adc839983d3f0fe6b26670c 100644 (file)
@@ -257,30 +257,54 @@ static gboolean __bus_watch_cb(GstBus *bus, GstMessage *message, gpointer user_d
        return TRUE;
 }
 
+typedef struct _idle_userdata {
+       webrtc_s *webrtc;
+       webrtc_state_e state;
+} idle_userdata_s;
+
 static gboolean __idle_cb(gpointer user_data)
 {
-       webrtc_s *webrtc = (webrtc_s*)user_data;
+       idle_userdata_s *data = (idle_userdata_s*)user_data;
+       webrtc_s *webrtc;
        webrtc_state_e old_state;
 
+       RET_VAL_IF(!data, G_SOURCE_REMOVE, "userdata is NULL");
+       if (!data->webrtc) {
+               LOG_ERROR("webrtc is NULL");
+               g_free(data);
+               return G_SOURCE_REMOVE;
+       }
+
+       webrtc = data->webrtc;
+
        g_mutex_lock(&webrtc->mutex);
 
        old_state = webrtc->state;
-       webrtc->state = webrtc->pend_state;
+       webrtc->state = data->state;
 
        g_mutex_unlock(&webrtc->mutex);
 
        _invoke_state_changed_cb(webrtc, old_state, webrtc->state);
 
+       g_free(data);
+
        return G_SOURCE_REMOVE;
 }
 
-void _post_state_in_idle(webrtc_s *webrtc, webrtc_state_e new_state)
+static void __post_state_cb_in_idle(webrtc_s *webrtc, webrtc_state_e new_state)
 {
+       idle_userdata_s *data;
+
        if (webrtc->state == new_state)
                return;
 
+       data = g_new0(idle_userdata_s, 1);
+       data->webrtc = webrtc;
+       data->state = new_state;
+
        webrtc->pend_state = new_state;
-       g_idle_add(__idle_cb, webrtc);
+
+       g_idle_add(__idle_cb, data);
 
        LOG_DEBUG("state will be changed [%s] -> [%s]", __state_str[webrtc->state], __state_str[new_state]);
 }
@@ -1499,9 +1523,9 @@ int _webrtc_stop(webrtc_s *webrtc)
        ret = _release_all_resources(webrtc);
        RET_VAL_WITH_UNLOCK_IF(ret != WEBRTC_ERROR_NONE, ret, &webrtc->mutex, "failed to release all resources");
 #endif
-       _post_state_in_idle(webrtc, WEBRTC_STATE_IDLE);
+       __post_state_cb_in_idle(webrtc, WEBRTC_STATE_IDLE);
 
-       LOG_INFO("webrtc[%p] is stopping", webrtc);
+       LOG_INFO("webrtc[%p] is stopped", webrtc);
 
        g_mutex_unlock(&webrtc->mutex);