diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/oss/gstosssink.c | 2 | ||||
-rw-r--r-- | sys/oss/gstosssrc.c | 12 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2object.c | 15 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2object.h | 2 | ||||
-rw-r--r-- | sys/v4l2/gstv4l2src.c | 9 | ||||
-rw-r--r-- | sys/ximage/gstximagesrc.c | 4 |
6 files changed, 33 insertions, 11 deletions
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c index 1351d1b9..9f2a7eae 100644 --- a/sys/oss/gstosssink.c +++ b/sys/oss/gstosssink.c @@ -247,6 +247,8 @@ gst_oss_sink_finalise (GObject * object) GstOssSink *osssink = GST_OSSSINK (object); g_free (osssink->device); + + G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (object)); } static void diff --git a/sys/oss/gstosssrc.c b/sys/oss/gstosssrc.c index 26eb6c6f..34d901a2 100644 --- a/sys/oss/gstosssrc.c +++ b/sys/oss/gstosssrc.c @@ -97,6 +97,7 @@ static void gst_oss_src_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_oss_src_dispose (GObject * object); +static void gst_oss_src_finalize (GstOssSrc * osssrc); static GstCaps *gst_oss_src_getcaps (GstBaseSrc * bsrc); @@ -160,6 +161,8 @@ gst_oss_src_class_init (GstOssSrcClass * klass) gstaudiosrc_class = (GstAudioSrcClass *) klass; gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_oss_src_dispose); + gobject_class->finalize = + (GObjectFinalizeFunc) GST_DEBUG_FUNCPTR (gst_oss_src_finalize); gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_oss_src_get_property); gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_oss_src_set_property); @@ -234,6 +237,15 @@ gst_oss_src_init (GstOssSrc * osssrc, GstOssSrcClass * g_class) osssrc->device_name = g_strdup (DEFAULT_DEVICE_NAME); } +static void +gst_oss_src_finalize (GstOssSrc * osssrc) +{ + g_free (osssrc->device); + g_free (osssrc->device_name); + + G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (osssrc)); +} + static GstCaps * gst_oss_src_getcaps (GstBaseSrc * bsrc) { diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 48497fc7..c842e8b9 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -278,17 +278,14 @@ gst_v4l2_object_new (GstElement * element, } void -gst_v4l2_object_destroy (GstV4l2Object ** v4l2object) +gst_v4l2_object_destroy (GstV4l2Object * v4l2object) { - if (*v4l2object) { - if ((*v4l2object)->videodev) { - g_free ((*v4l2object)->videodev); - (*v4l2object)->videodev = NULL; - } + g_return_if_fail (v4l2object != NULL); - g_free (*v4l2object); - *v4l2object = NULL; - } + if (v4l2object->videodev) + g_free (v4l2object->videodev); + + g_free (v4l2object); } gboolean diff --git a/sys/v4l2/gstv4l2object.h b/sys/v4l2/gstv4l2object.h index 906cff99..f309bc7d 100644 --- a/sys/v4l2/gstv4l2object.h +++ b/sys/v4l2/gstv4l2object.h @@ -117,7 +117,7 @@ GstV4l2Object * gst_v4l2_object_new (GstElement * element, GstV4l2GetInOutFunction get_in_out_func, GstV4l2SetInOutFunction set_in_out_func, GstV4l2UpdateFpsFunction update_fps_func); -void gst_v4l2_object_destroy (GstV4l2Object ** v4l2object); +void gst_v4l2_object_destroy (GstV4l2Object * v4l2object); /* properties */ void gst_v4l2_object_install_properties_helper (GObjectClass *gobject_class); diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index 4aeb6f1e..cddad936 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -223,6 +223,7 @@ GST_BOILERPLATE_FULL (GstV4l2Src, gst_v4l2src, GstPushSrc, GST_TYPE_PUSH_SRC, gst_v4l2src_init_interfaces); static void gst_v4l2src_dispose (GObject * object); +static void gst_v4l2src_finalize (GstV4l2Src * v4l2src); /* basesrc methods */ static gboolean gst_v4l2src_start (GstBaseSrc * src); @@ -270,6 +271,7 @@ gst_v4l2src_class_init (GstV4l2SrcClass * klass) pushsrc_class = GST_PUSH_SRC_CLASS (klass); gobject_class->dispose = gst_v4l2src_dispose; + gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2src_finalize; gobject_class->set_property = gst_v4l2src_set_property; gobject_class->get_property = gst_v4l2src_get_property; @@ -325,6 +327,13 @@ gst_v4l2src_dispose (GObject * object) G_OBJECT_CLASS (parent_class)->dispose (object); } +static void +gst_v4l2src_finalize (GstV4l2Src * v4l2src) +{ + gst_v4l2_object_destroy (v4l2src->v4l2object); + + G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (v4l2src)); +} static void gst_v4l2src_set_property (GObject * object, diff --git a/sys/ximage/gstximagesrc.c b/sys/ximage/gstximagesrc.c index ba4d52f4..d695837f 100644 --- a/sys/ximage/gstximagesrc.c +++ b/sys/ximage/gstximagesrc.c @@ -339,7 +339,6 @@ static GstXImageSrcBuffer * gst_ximage_src_ximage_get (GstXImageSrc * ximagesrc) { GstXImageSrcBuffer *ximage = NULL; - GstCaps *caps = NULL; g_mutex_lock (ximagesrc->pool_lock); while (ximagesrc->buffer_pool != NULL) { @@ -357,6 +356,7 @@ gst_ximage_src_ximage_get (GstXImageSrc * ximagesrc) if (ximage == NULL) { GstXContext *xcontext; + GstCaps *caps = NULL; GST_DEBUG_OBJECT (ximagesrc, "creating image (%dx%d)", ximagesrc->width, ximagesrc->height); @@ -391,6 +391,8 @@ gst_ximage_src_ximage_get (GstXImageSrc * ximagesrc) gst_buffer_set_caps (GST_BUFFER (ximage), caps); g_mutex_unlock (ximagesrc->x_lock); + + gst_caps_unref (caps); } g_return_val_if_fail (GST_IS_XIMAGE_SRC (ximagesrc), NULL); |