frei0r: Destroy the f0r_instance_t in stop()
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 13 Jun 2009 08:06:57 +0000 (10:06 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 19 Jun 2009 09:03:14 +0000 (11:03 +0200)
gst/frei0r/gstfrei0rsrc.c

index 433d020..77d2996 100644 (file)
@@ -26,6 +26,9 @@
 #include "gstfrei0r.h"
 #include "gstfrei0rsrc.h"
 
+GST_DEBUG_CATEGORY_EXTERN (frei0r_debug);
+#define GST_CAT_DEFAULT frei0r_debug
+
 typedef struct
 {
   f0r_plugin_info_t info;
@@ -147,6 +150,20 @@ gst_frei0r_src_start (GstBaseSrc * basesrc)
 }
 
 static gboolean
+gst_frei0r_src_stop (GstBaseSrc * basesrc)
+{
+  GstFrei0rSrc *self = GST_FREI0R_SRC (basesrc);
+  GstFrei0rSrcClass *klass = GST_FREI0R_SRC_GET_CLASS (basesrc);
+
+  if (self->f0r_instance) {
+    klass->ftable->destruct (self->f0r_instance);
+    self->f0r_instance = NULL;
+  }
+
+  return TRUE;
+}
+
+static gboolean
 gst_frei0r_src_is_seekable (GstBaseSrc * psrc)
 {
   return TRUE;
@@ -346,6 +363,7 @@ gst_frei0r_src_class_init (GstFrei0rSrcClass * klass,
   gstbasesrc_class->query = gst_frei0r_src_query;
   gstbasesrc_class->get_times = gst_frei0r_src_get_times;
   gstbasesrc_class->start = gst_frei0r_src_start;
+  gstbasesrc_class->stop = gst_frei0r_src_stop;
 
   gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_frei0r_src_create);
 }