GESTimelinePipeline: Properly release playsink and encodebin
authorEdward Hervey <bilboed@bilboed.com>
Mon, 21 Jun 2010 09:52:49 +0000 (11:52 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 21 Jun 2010 09:52:49 +0000 (11:52 +0200)
ges/ges-timeline-pipeline.c

index 4094d76..6114800 100644 (file)
@@ -61,9 +61,19 @@ ges_timeline_pipeline_dispose (GObject * object)
   if (self->playsink) {
     if (self->mode & (TIMELINE_MODE_PREVIEW))
       gst_bin_remove (GST_BIN (object), self->playsink);
-    gst_object_unref (self->playsink);
+    else
+      gst_object_unref (self->playsink);
     self->playsink = NULL;
   }
+
+  if (self->encodebin) {
+    if (self->mode & (TIMELINE_MODE_RENDER | TIMELINE_MODE_SMART_RENDER))
+      gst_bin_remove (GST_BIN (object), self->encodebin);
+    else
+      gst_object_unref (self->encodebin);
+    self->encodebin = NULL;
+  }
+
   G_OBJECT_CLASS (ges_timeline_pipeline_parent_class)->dispose (object);
 }