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