From: Edgard Lima Date: Thu, 13 Apr 2006 21:45:57 +0000 (+0000) Subject: Fixed some memory leaks. X-Git-Tag: RELEASE-0_10_3~84 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c0815648cc83da5902a31bf4f49c79e8e92bc361;p=platform%2Fupstream%2Fgst-plugins-good.git Fixed some memory leaks. Original commit message from CVS: Fixed some memory leaks. --- diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index e218299..35a68ba 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -102,6 +102,7 @@ static guint32 gst_v4l2_formats[] = { GST_BOILERPLATE (GstV4l2Src, gst_v4l2src, GstV4l2Element, GST_TYPE_V4L2ELEMENT); +static void gst_v4l2src_dispose (GObject * object); /* basesrc methods */ static gboolean gst_v4l2src_start (GstBaseSrc * src); @@ -162,6 +163,9 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) basesrc_class->stop = gst_v4l2src_stop; pushsrc_class->create = gst_v4l2src_create; + + gobject_class->dispose = gst_v4l2src_dispose; + } static void @@ -183,6 +187,21 @@ gst_v4l2src_init (GstV4l2Src * v4l2src, GstV4l2SrcClass * klass) gst_base_src_set_live (GST_BASE_SRC (v4l2src), TRUE); } + +static void +gst_v4l2src_dispose (GObject * object) +{ + GstV4l2Src *v4l2src = GST_V4L2SRC (object); + + if (v4l2src->formats) { + gst_v4l2src_clear_format_list (v4l2src); + } + + if (((GObjectClass *) parent_class)->dispose) + ((GObjectClass *) parent_class)->dispose (object); +} + + static void gst_v4l2src_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c index 19af162..b1d9788 100644 --- a/sys/v4l2/v4l2src_calls.c +++ b/sys/v4l2/v4l2src_calls.c @@ -789,15 +789,15 @@ gst_v4l2src_buffer_new (GstV4l2Src * v4l2src, guint size, guint8 * data, fps_d = 1; } - buf = (GstBuffer *) gst_mini_object_new (GST_TYPE_V4L2SRC_BUFFER); - - GST_V4L2SRC_BUFFER (buf)->buf = srcbuf; - if (data == NULL) { - GST_BUFFER_DATA (buf) = g_malloc (size); + buf = gst_buffer_new_and_alloc (size); } else { + buf = (GstBuffer *) gst_mini_object_new (GST_TYPE_V4L2SRC_BUFFER); GST_BUFFER_DATA (buf) = data; + GST_V4L2SRC_BUFFER (buf)->buf = srcbuf; } + + GST_BUFFER_SIZE (buf) = size; GST_BUFFER_TIMESTAMP (buf) =