mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
gst/playback/gstdecodebin2.c: Don't free groups from the streaming threads. Just put them aside and free them in disp...
Original commit message from CVS: * gst/playback/gstdecodebin2.c: (gst_decode_bin_dispose), (multi_queue_underrun_cb), (gst_decode_group_check_if_drained), (sort_end_pads), (gst_decode_group_expose), (gst_decode_group_hide): Don't free groups from the streaming threads. Just put them aside and free them in dispose.
This commit is contained in:
parent
7746c2f176
commit
7bc6fc07a1
2 changed files with 20 additions and 2 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2007-02-20 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
|
* gst/playback/gstdecodebin2.c: (gst_decode_bin_dispose),
|
||||||
|
(multi_queue_underrun_cb), (gst_decode_group_check_if_drained),
|
||||||
|
(sort_end_pads), (gst_decode_group_expose),
|
||||||
|
(gst_decode_group_hide):
|
||||||
|
Don't free groups from the streaming threads. Just put them aside and
|
||||||
|
free them in dispose.
|
||||||
|
|
||||||
2007-02-20 Edward Hervey <edward@fluendo.com>
|
2007-02-20 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
* gst/playback/gstdecodebin2.c: (connect_element),
|
* gst/playback/gstdecodebin2.c: (connect_element),
|
||||||
|
|
|
@ -71,6 +71,8 @@ struct _GstDecodeBin
|
||||||
GstDecodeGroup *activegroup; /* group currently active */
|
GstDecodeGroup *activegroup; /* group currently active */
|
||||||
GList *groups; /* List of non-active GstDecodeGroups, sorted in
|
GList *groups; /* List of non-active GstDecodeGroups, sorted in
|
||||||
* order of creation. */
|
* order of creation. */
|
||||||
|
GList *oldgroups; /* List of no-longer-used GstDecodeGroups.
|
||||||
|
* Should be freed in dispose */
|
||||||
gint nbpads; /* unique identifier for source pads */
|
gint nbpads; /* unique identifier for source pads */
|
||||||
GstCaps *caps; /* caps on which to stop decoding */
|
GstCaps *caps; /* caps on which to stop decoding */
|
||||||
|
|
||||||
|
@ -497,6 +499,14 @@ gst_decode_bin_dispose (GObject * object)
|
||||||
g_list_free (decode_bin->groups);
|
g_list_free (decode_bin->groups);
|
||||||
decode_bin->groups = NULL;
|
decode_bin->groups = NULL;
|
||||||
|
|
||||||
|
for (tmp = decode_bin->oldgroups; tmp; tmp = g_list_next (tmp)) {
|
||||||
|
GstDecodeGroup *group = (GstDecodeGroup *) tmp->data;
|
||||||
|
|
||||||
|
gst_decode_group_free (group);
|
||||||
|
}
|
||||||
|
g_list_free (decode_bin->oldgroups);
|
||||||
|
decode_bin->oldgroups = NULL;
|
||||||
|
|
||||||
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;
|
||||||
|
@ -1269,7 +1279,6 @@ multi_queue_underrun_cb (GstElement * queue, GstDecodeGroup * group)
|
||||||
GST_DEBUG_OBJECT (dbin, "Switching to new group");
|
GST_DEBUG_OBJECT (dbin, "Switching to new group");
|
||||||
/* unexpose current active */
|
/* unexpose current active */
|
||||||
gst_decode_group_hide (group);
|
gst_decode_group_hide (group);
|
||||||
gst_decode_group_free (group);
|
|
||||||
|
|
||||||
/* expose first group of groups */
|
/* expose first group of groups */
|
||||||
gst_decode_group_expose ((GstDecodeGroup *) dbin->groups->data);
|
gst_decode_group_expose ((GstDecodeGroup *) dbin->groups->data);
|
||||||
|
@ -1518,7 +1527,6 @@ gst_decode_group_check_if_drained (GstDecodeGroup * group)
|
||||||
GST_DEBUG_OBJECT (dbin, "Switching to new group");
|
GST_DEBUG_OBJECT (dbin, "Switching to new group");
|
||||||
|
|
||||||
gst_decode_group_hide (group);
|
gst_decode_group_hide (group);
|
||||||
gst_decode_group_free (group);
|
|
||||||
|
|
||||||
gst_decode_group_expose ((GstDecodeGroup *) dbin->groups->data);
|
gst_decode_group_expose ((GstDecodeGroup *) dbin->groups->data);
|
||||||
}
|
}
|
||||||
|
@ -1704,6 +1712,7 @@ gst_decode_group_hide (GstDecodeGroup * group)
|
||||||
GROUP_MUTEX_UNLOCK (group);
|
GROUP_MUTEX_UNLOCK (group);
|
||||||
|
|
||||||
group->dbin->activegroup = NULL;
|
group->dbin->activegroup = NULL;
|
||||||
|
group->dbin->oldgroups = g_list_append (group->dbin->oldgroups, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue