summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGilbok Lee <gilbok.lee@samsung.com>2022-10-28 13:45:54 +0900
committerEunhye Choi <eunhae1.choi@samsung.com>2022-11-22 13:55:49 +0900
commit0025fec427ff6ef74776e34b1889d1e3a6b8c631 (patch)
tree4680dce37ed57c612a32f436708a80659a26236e
parentbdf6f1092f37388d1fd7971df18b0179588a4777 (diff)
downloadlibmm-player-tizen_6.5.tar.gz
libmm-player-tizen_6.5.tar.bz2
libmm-player-tizen_6.5.zip
- The removed element is accessed in the __mmplayer_release_signal_connection() function cherry-pick : fd6c5d52629a4edd19d4a0aa0ec697873ede148d Change-Id: I7d5753e9cba48002fa05f5c4627376fbe9554aeb
-rw-r--r--packaging/libmm-player.spec2
-rw-r--r--src/mm_player_gst.c37
2 files changed, 37 insertions, 2 deletions
diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec
index 4a07c42..778e5a6 100644
--- a/packaging/libmm-player.spec
+++ b/packaging/libmm-player.spec
@@ -1,6 +1,6 @@
Name: libmm-player
Summary: Multimedia Framework Player Library
-Version: 0.6.269
+Version: 0.6.270
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
diff --git a/src/mm_player_gst.c b/src/mm_player_gst.c
index e509314..6abf729 100644
--- a/src/mm_player_gst.c
+++ b/src/mm_player_gst.c
@@ -3204,11 +3204,46 @@ __mmplayer_gst_deep_element_added(GstElement *bin, GstBin *child, GstElement *el
return;
}
+static void
+__mmplayer_delete_signal_connection(mmplayer_t *player, GstElement *removed_element)
+{
+ MMPLAYER_FENTER();
+
+ MMPLAYER_RETURN_IF_FAIL(player);
+ MMPLAYER_RETURN_IF_FAIL(removed_element);
+
+ LOGD("delete signal on %s", GST_ELEMENT_NAME(removed_element));
+
+ for (int type = MM_PLAYER_SIGNAL_TYPE_AUTOPLUG; type < MM_PLAYER_SIGNAL_TYPE_ALL; type++) {
+ GList *node = player->signals[type];
+ while (node) {
+ GList *next_node = node->next;
+ mmplayer_signal_item_t *item = node->data;
+ if (item && item->obj == G_OBJECT(removed_element)) {
+ player->signals[type] = g_list_delete_link(player->signals[type], node);
+ MMPLAYER_FREEIF(item);
+ }
+ node = next_node;
+ }
+ }
+
+ MMPLAYER_FLEAVE();
+}
+
void
__mmplayer_gst_deep_element_removed(GstElement *bin, GstBin *child, GstElement *element, gpointer data)
{
+ mmplayer_t *player = (mmplayer_t *)data;
+
+ MMPLAYER_FENTER();
+
+ MMPLAYER_RETURN_IF_FAIL(player);
+
LOGD("%s > %s > %s", GST_ELEMENT_NAME(bin), GST_ELEMENT_NAME(child), GST_ELEMENT_NAME(element));
- return;
+
+ __mmplayer_delete_signal_connection(player, element);
+
+ MMPLAYER_FLEAVE();
}
static GstElement *