Wrap g_hash_table_remove() with ms_node_remove_from_table() 28/237728/1
authorSangchul Lee <sc11.lee@samsung.com>
Fri, 3 Jul 2020 04:29:03 +0000 (13:29 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 3 Jul 2020 04:37:50 +0000 (13:37 +0900)
[Version] 0.1.85
[Issue Type] Refactoring

Change-Id: Ic6a5821e3231a90c3873aa9a67688cbfc91f63aa
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/media_streamer_node.h
packaging/capi-media-streamer.spec
src/media_streamer.c
src/media_streamer_node.c
src/media_streamer_priv.c

index 411792a..cdba544 100644 (file)
@@ -86,7 +86,7 @@ int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *no
 /**
  * @brief Removes media streamer node from nodes table.
  */
-void ms_node_remove_from_table(void *data);
+int ms_node_remove_from_table(GHashTable *nodes_table, media_streamer_node_s *node);
 
 /**
  * @brief Reads node parameters from user's bundle object.
@@ -123,6 +123,7 @@ gboolean ms_src_node_prepare_iter(const GValue *item, GValue *g_ret, gpointer us
 gboolean ms_node_resources_acquire_iter(const GValue *item, GValue *ret, gpointer user_data);
 gboolean ms_node_resources_release_iter(const GValue *item, GValue *ret, gpointer user_data);
 gboolean ms_node_dpm_policy_check_iter(const GValue *item, GValue *ret, gpointer user_data);
+void ms_node_remove_from_table_cb(void *data);
 GstElement *ms_webrtc_node_get_webrtcbin(media_streamer_node_s *webrtc_node);
 
 #ifdef __cplusplus
index 9a43e86..496007e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-streamer
 Summary:    A Media Streamer API
-Version:    0.1.84
+Version:    0.1.85
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 5094df9..2f1b04c 100644 (file)
@@ -154,12 +154,7 @@ int media_streamer_node_remove(media_streamer_h streamer, media_streamer_node_h
 
        g_mutex_lock(&ms_streamer->mutex_lock);
 
-       if (g_hash_table_remove(ms_streamer->nodes_table, (gpointer) ms_node->name)) {
-               ms_info("Node [%s] removed from Media Streamer", ms_node->name);
-       } else {
-               ms_error("Error: Node [%s] remove failed", ms_node->name);
-               ret = MEDIA_STREAMER_ERROR_INVALID_OPERATION;
-       }
+       ret = ms_node_remove_from_table(ms_streamer->nodes_table, ms_node);
 
        g_mutex_unlock(&ms_streamer->mutex_lock);
 
index 11aac47..f8a8826 100644 (file)
@@ -1053,7 +1053,22 @@ int ms_node_insert_into_table(GHashTable *nodes_table, media_streamer_node_s *no
        return MEDIA_STREAMER_ERROR_NONE;
 }
 
-void ms_node_remove_from_table(void *data)
+int ms_node_remove_from_table(GHashTable *nodes_table, media_streamer_node_s *node)
+{
+       ms_retvm_if(nodes_table == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "nodes_table is NULL");
+       ms_retvm_if(node == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL");
+
+       /* Removal element of this node from bin will be performed
+        * in the callback - ms_node_remove_from_table_cb(). */
+       if (!g_hash_table_remove(nodes_table, (gpointer) node->name)) {
+               ms_error("Failed to remove node [%s] from table", node->name);
+               return MEDIA_STREAMER_ERROR_INVALID_OPERATION;
+       }
+
+       return MEDIA_STREAMER_ERROR_NONE;
+}
+
+void ms_node_remove_from_table_cb(void *data)
 {
        media_streamer_node_s *node = (media_streamer_node_s *) data;
 
@@ -1067,11 +1082,10 @@ void ms_node_remove_from_table(void *data)
                ms_bin_remove_element(node->gst_element);
                ms_info("Node [%s] removed from Media Streamer", node->name);
        } else {
-               ms_error("Error: Node [%s] remove failed", node->name);
+               ms_error("Failed to unlink element of node [%s]", node->name);
        }
 
        ms_debug_fleave();
-
 }
 
 static gboolean __ms_src_need_typefind(GstPad *src_pad)
index 0fabbb9..cf6ea83 100644 (file)
@@ -117,7 +117,7 @@ int ms_create(media_streamer_s *ms_streamer)
 
        ms_load_ini_settings(&ms_streamer->ini);
 
-       ms_streamer->nodes_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, ms_node_remove_from_table);
+       ms_streamer->nodes_table = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, ms_node_remove_from_table_cb);
        ms_retvm_if(ms_streamer->nodes_table == NULL, MEDIA_STREAMER_ERROR_INVALID_OPERATION, "Error creating hash table");
 
        ret = ms_pipeline_create(ms_streamer);