Fix segfault when adding clips to group outside a timeline

Making sure that objects are inside a timeline before adding/removing them from it

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/35
This commit is contained in:
Thibault Saunier 2019-01-23 09:07:58 -03:00 committed by Thibault Saunier
parent 35e39083a2
commit 9748b963b6

View file

@ -455,7 +455,8 @@ _child_added (GESContainer * group, GESTimelineElement * child)
GESGroupPrivate *priv = GES_GROUP (group)->priv; GESGroupPrivate *priv = GES_GROUP (group)->priv;
GstClockTime last_child_end = 0, first_child_start = G_MAXUINT64; GstClockTime last_child_end = 0, first_child_start = G_MAXUINT64;
if (!GES_TIMELINE_ELEMENT_TIMELINE (group)) { if (!GES_TIMELINE_ELEMENT_TIMELINE (group)
&& GES_TIMELINE_ELEMENT_TIMELINE (child)) {
timeline_add_group (GES_TIMELINE_ELEMENT_TIMELINE (child), timeline_add_group (GES_TIMELINE_ELEMENT_TIMELINE (child),
GES_GROUP (group)); GES_GROUP (group));
timeline_emit_group_added (GES_TIMELINE_ELEMENT_TIMELINE (child), timeline_emit_group_added (GES_TIMELINE_ELEMENT_TIMELINE (child),
@ -554,8 +555,9 @@ _child_removed (GESContainer * group, GESTimelineElement * child)
g_free (signals_ids_key); g_free (signals_ids_key);
if (children == NULL) { if (children == NULL) {
GST_FIXME_OBJECT (group, "Auto destroy myself?"); GST_FIXME_OBJECT (group, "Auto destroy myself?");
timeline_remove_group (GES_TIMELINE_ELEMENT_TIMELINE (group), if (GES_TIMELINE_ELEMENT_TIMELINE (group))
GES_GROUP (group)); timeline_remove_group (GES_TIMELINE_ELEMENT_TIMELINE (group),
GES_GROUP (group));
return; return;
} }