summaryrefslogtreecommitdiffstats
path: root/sys/v4l2/v4l2src_calls.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-02-12 11:38:54 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-02-12 11:38:54 +0000
commit45aeb687d2673a9b75877f044c61a2e3eb628246 (patch)
treef02fe1fdaf8c71e9db89d0716fcb33c56b246c86 /sys/v4l2/v4l2src_calls.c
parentbb3b6569eaaf37e6ff5a2cfa19e4c2d67277bce5 (diff)
sys/v4l2/v4l2src_calls.c: Chain up the finalize functions. Fixes bug #515984.
Original commit message from CVS: * sys/v4l2/v4l2src_calls.c: (gst_v4l2_buffer_finalize), (gst_v4l2_buffer_class_init), (gst_v4l2_buffer_pool_finalize), (gst_v4l2_buffer_pool_class_init): Chain up the finalize functions. Fixes bug #515984.
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r--sys/v4l2/v4l2src_calls.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index 5d9d66ae..1096ad9d 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -66,6 +66,7 @@ GST_DEBUG_CATEGORY_EXTERN (v4l2src_debug);
#define GST_IS_V4L2_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_BUFFER))
#define GST_V4L2_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_BUFFER, GstV4l2Buffer))
+static GstBufferClass *v4l2buffer_parent_class = NULL;
/* Local functions */
static gboolean
@@ -110,6 +111,9 @@ gst_v4l2_buffer_finalize (GstV4l2Buffer * buffer)
GST_LOG ("buffer %p not recovered, unmapping", buffer);
gst_mini_object_unref (GST_MINI_OBJECT (pool));
munmap ((void *) GST_BUFFER_DATA (buffer), buffer->vbuffer.length);
+
+ GST_MINI_OBJECT_CLASS (v4l2buffer_parent_class)->
+ finalize (GST_MINI_OBJECT (buffer));
}
}
@@ -124,6 +128,8 @@ gst_v4l2_buffer_class_init (gpointer g_class, gpointer class_data)
{
GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
+ v4l2buffer_parent_class = g_type_class_peek_parent (g_class);
+
mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
gst_v4l2_buffer_finalize;
}
@@ -225,6 +231,8 @@ mmap_failed:
#define GST_IS_V4L2_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_BUFFER_POOL))
#define GST_V4L2_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_BUFFER_POOL, GstV4l2BufferPool))
+static GstMiniObjectClass *buffer_pool_parent_class = NULL;
+
static void
gst_v4l2_buffer_pool_finalize (GstV4l2BufferPool * pool)
{
@@ -237,6 +245,8 @@ gst_v4l2_buffer_pool_finalize (GstV4l2BufferPool * pool)
if (pool->buffers)
g_free (pool->buffers);
pool->buffers = NULL;
+ GST_MINI_OBJECT_CLASS (buffer_pool_parent_class)->
+ finalize (GST_MINI_OBJECT (pool));
}
static void
@@ -252,6 +262,8 @@ gst_v4l2_buffer_pool_class_init (gpointer g_class, gpointer class_data)
{
GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
+ buffer_pool_parent_class = g_type_class_peek_parent (g_class);
+
mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
gst_v4l2_buffer_pool_finalize;
}