frei0r: Correctly clean up elements to be reusable and not leak memory
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 29 Jun 2009 10:02:19 +0000 (12:02 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 29 Jun 2009 10:02:19 +0000 (12:02 +0200)
gst/frei0r/gstfrei0rfilter.c
gst/frei0r/gstfrei0rmixer.c
gst/frei0r/gstfrei0rsrc.c

index 834e189..eda78ad 100644 (file)
@@ -59,6 +59,8 @@ gst_frei0r_filter_stop (GstBaseTransform * trans)
     self->f0r_instance = NULL;
   }
 
+  self->width = self->height = 0;
+
   return TRUE;
 }
 
index 684519d..8f3ee4b 100644 (file)
@@ -45,8 +45,16 @@ gst_frei0r_mixer_reset (GstFrei0rMixer * self)
     self->f0r_instance = NULL;
   }
 
+  if (self->property_cache)
+    gst_frei0r_property_cache_free (klass->properties, self->property_cache,
+        klass->n_properties);
+  self->property_cache = NULL;
+
   gst_caps_replace (&self->caps, NULL);
   gst_event_replace (&self->newseg_event, NULL);
+
+  self->fmt = GST_VIDEO_FORMAT_UNKNOWN;
+  self->width = self->height = 0;
 }
 
 static void
index 8a4a4e2..2d637f9 100644 (file)
@@ -146,6 +146,11 @@ gst_frei0r_src_stop (GstBaseSrc * basesrc)
     self->f0r_instance = NULL;
   }
 
+  self->fmt = GST_VIDEO_FORMAT_UNKNOWN;
+  self->width = self->height = 0;
+  self->fps_n = self->fps_d = 0;
+  self->n_frames = 0;
+
   return TRUE;
 }