GESTimeline: remove layers before removing tracks in dispose ()
authorBrandon Lewis <brandon@collabora.co.uk>
Thu, 23 Sep 2010 13:47:48 +0000 (14:47 +0100)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Sat, 27 Nov 2010 16:13:39 +0000 (17:13 +0100)
ges/ges-timeline.c

index 4e39646..d887c33 100644 (file)
@@ -104,16 +104,21 @@ ges_timeline_dispose (GObject * object)
     timeline->discoverer = NULL;
   }
 
-  while (timeline->tracks) {
-    TrackPrivate *priv = (TrackPrivate *) timeline->tracks->data;
-    ges_timeline_remove_track (timeline, priv->track);
-  }
-
   while (timeline->layers) {
     GESTimelineLayer *layer = (GESTimelineLayer *) timeline->layers->data;
     ges_timeline_remove_layer (timeline, layer);
   }
 
+  /* FIXME: it should be possible to remove tracks before removing
+   * layers, but at the moment this creates a problem because the track
+   * objects aren't notified that their gnlobjects have been destroyed.
+   */
+
+  while (timeline->tracks) {
+    TrackPrivate *priv = (TrackPrivate *) timeline->tracks->data;
+    ges_timeline_remove_track (timeline, priv->track);
+  }
+
   G_OBJECT_CLASS (ges_timeline_parent_class)->dispose (object);
 }