summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstosssink.c2
-rw-r--r--sys/oss/gstosssrc.c12
-rw-r--r--sys/v4l2/gstv4l2object.c15
-rw-r--r--sys/v4l2/gstv4l2object.h2
-rw-r--r--sys/v4l2/gstv4l2src.c9
-rw-r--r--sys/ximage/gstximagesrc.c4
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);