mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-22 00:06:36 +00:00
gst/playback/gstdecodebin2.c: Free GstDecodeGroups no longer used.
Original commit message from CVS: * gst/playback/gstdecodebin2.c: (gst_decode_bin_dispose),(gst_decode_bin_finalize): Free GstDecodeGroups no longer used. (gst_decode_group_expose): Don't unlock too many times ! (deactivate_free_recursive): Free iterator once we're done with it. Fix for recursively deactivating elements (stop at ghostpads).
This commit is contained in:
parent
dab1309f32
commit
a8d29e1f82
2 changed files with 32 additions and 10 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2007-01-25 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
|
* gst/playback/gstdecodebin2.c:
|
||||||
|
(gst_decode_bin_dispose),(gst_decode_bin_finalize):
|
||||||
|
Free GstDecodeGroups no longer used.
|
||||||
|
(gst_decode_group_expose):
|
||||||
|
Don't unlock too many times !
|
||||||
|
(deactivate_free_recursive):
|
||||||
|
Free iterator once we're done with it.
|
||||||
|
Fix for recursively deactivating elements (stop at ghostpads).
|
||||||
|
|
||||||
2007-01-25 Tim-Philipp Müller <tim at centricular dot net>
|
2007-01-25 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst/playback/gstplaybin.c: (handoff):
|
* gst/playback/gstplaybin.c: (handoff):
|
||||||
|
|
|
@ -473,6 +473,7 @@ static void
|
||||||
gst_decode_bin_dispose (GObject * object)
|
gst_decode_bin_dispose (GObject * object)
|
||||||
{
|
{
|
||||||
GstDecodeBin *decode_bin;
|
GstDecodeBin *decode_bin;
|
||||||
|
GList *tmp;
|
||||||
|
|
||||||
decode_bin = GST_DECODE_BIN (object);
|
decode_bin = GST_DECODE_BIN (object);
|
||||||
|
|
||||||
|
@ -481,6 +482,19 @@ gst_decode_bin_dispose (GObject * object)
|
||||||
decode_bin->factories = NULL;
|
decode_bin->factories = NULL;
|
||||||
|
|
||||||
/* FILLME */
|
/* FILLME */
|
||||||
|
|
||||||
|
if (decode_bin->activegroup) {
|
||||||
|
gst_decode_group_free (decode_bin->activegroup);
|
||||||
|
decode_bin->activegroup = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove groups */
|
||||||
|
for (tmp = decode_bin->groups; tmp; tmp = g_list_next (tmp)) {
|
||||||
|
GstDecodeGroup *group = (GstDecodeGroup *) tmp->data;
|
||||||
|
|
||||||
|
gst_decode_group_free (group);
|
||||||
|
}
|
||||||
|
|
||||||
if (decode_bin->caps)
|
if (decode_bin->caps)
|
||||||
gst_caps_unref (decode_bin->caps);
|
gst_caps_unref (decode_bin->caps);
|
||||||
decode_bin->caps = NULL;
|
decode_bin->caps = NULL;
|
||||||
|
@ -497,10 +511,6 @@ gst_decode_bin_finalize (GObject * object)
|
||||||
decode_bin = GST_DECODE_BIN (object);
|
decode_bin = GST_DECODE_BIN (object);
|
||||||
|
|
||||||
if (decode_bin->lock) {
|
if (decode_bin->lock) {
|
||||||
DECODE_BIN_LOCK (decode_bin);
|
|
||||||
GST_DEBUG_OBJECT (object, "About to free mutex from stream %p",
|
|
||||||
g_thread_self ());
|
|
||||||
DECODE_BIN_UNLOCK (decode_bin);
|
|
||||||
g_mutex_free (decode_bin->lock);
|
g_mutex_free (decode_bin->lock);
|
||||||
decode_bin->lock = NULL;
|
decode_bin->lock = NULL;
|
||||||
}
|
}
|
||||||
|
@ -1501,20 +1511,17 @@ gst_decode_group_expose (GstDecodeGroup * group)
|
||||||
|
|
||||||
if (group->dbin->activegroup) {
|
if (group->dbin->activegroup) {
|
||||||
GST_DEBUG_OBJECT (group->dbin, "A group is already active and exposed");
|
GST_DEBUG_OBJECT (group->dbin, "A group is already active and exposed");
|
||||||
DECODE_BIN_UNLOCK (group->dbin);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (group->dbin->activegroup == group) {
|
if (group->dbin->activegroup == group) {
|
||||||
GST_WARNING ("Group %p is already exposed", group);
|
GST_WARNING ("Group %p is already exposed", group);
|
||||||
DECODE_BIN_UNLOCK (group->dbin);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!group->dbin->groups
|
if (!group->dbin->groups
|
||||||
|| (group != (GstDecodeGroup *) group->dbin->groups->data)) {
|
|| (group != (GstDecodeGroup *) group->dbin->groups->data)) {
|
||||||
GST_WARNING ("Group %p is not the first group to expose", group);
|
GST_WARNING ("Group %p is not the first group to expose", group);
|
||||||
DECODE_BIN_UNLOCK (group->dbin);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1637,10 +1644,12 @@ restart:
|
||||||
GstPad *peerpad = NULL;
|
GstPad *peerpad = NULL;
|
||||||
|
|
||||||
if ((peerpad = gst_pad_get_peer (pad))) {
|
if ((peerpad = gst_pad_get_peer (pad))) {
|
||||||
GstElement *peerelement = GST_ELEMENT (gst_pad_get_parent (peerpad));
|
GstObject *parent = gst_pad_get_parent (peerpad);
|
||||||
|
|
||||||
if (peerelement)
|
if (parent && GST_IS_ELEMENT (parent))
|
||||||
deactivate_free_recursive (group, peerelement);
|
deactivate_free_recursive (group, GST_ELEMENT (parent));
|
||||||
|
if (parent)
|
||||||
|
gst_object_unref (parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1654,6 +1663,8 @@ done:
|
||||||
gst_bin_remove (GST_BIN (group->dbin), element);
|
gst_bin_remove (GST_BIN (group->dbin), element);
|
||||||
|
|
||||||
beach:
|
beach:
|
||||||
|
gst_iterator_free (it);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue