summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-02-12 12:22:48 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-02-12 12:22:48 +0000
commitd62d8d9feaf027ffa359be07fa4b400da3648940 (patch)
treedb1926623970b1787aee91c960899054e2bf3968
parent45aeb687d2673a9b75877f044c61a2e3eb628246 (diff)
sys/directdraw/gstdirectdrawsink.c: Properly chain up finalize functions. Fixes bug #515980.
Original commit message from CVS: * sys/directdraw/gstdirectdrawsink.c: (gst_ddrawsurface_class_init), (gst_ddrawsurface_finalize), (gst_directdraw_sink_finalize): Properly chain up finalize functions. Fixes bug #515980.
-rw-r--r--ChangeLog7
m---------common0
-rw-r--r--sys/directdraw/gstdirectdrawsink.c9
3 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index fe45ee12..dac00948 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-02-12 Sebastian Dröge <slomo@circular-chaos.org>
+ * sys/directdraw/gstdirectdrawsink.c:
+ (gst_ddrawsurface_class_init), (gst_ddrawsurface_finalize),
+ (gst_directdraw_sink_finalize):
+ Properly chain up finalize functions. Fixes bug #515980.
+
+2008-02-12 Sebastian Dröge <slomo@circular-chaos.org>
+
* 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):
diff --git a/common b/common
-Subproject 05a617c9043ddb78f8578195b18c166d7e1d4c2
+Subproject 2a19465fdb43a75f4d32950fd2beb1beb950eec
diff --git a/sys/directdraw/gstdirectdrawsink.c b/sys/directdraw/gstdirectdrawsink.c
index 9a028287..1dd334c2 100644
--- a/sys/directdraw/gstdirectdrawsink.c
+++ b/sys/directdraw/gstdirectdrawsink.c
@@ -214,6 +214,7 @@ gst_directdraw_sink_init_interfaces (GType type)
/* Subclass of GstBuffer which manages buffer_pool surfaces lifetime */
static void gst_ddrawsurface_finalize (GstMiniObject * mini_object);
+static GstBufferClass *ddrawsurface_parent_class = NULL;
static void
gst_ddrawsurface_init (GstDDrawSurface * surface, gpointer g_class)
@@ -232,6 +233,8 @@ gst_ddrawsurface_class_init (gpointer g_class, gpointer class_data)
{
GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
+ ddrawsurface_parent_class = g_type_class_peek_parent (g_class);
+
mini_object_class->finalize = GST_DEBUG_FUNCPTR (gst_ddrawsurface_finalize);
}
@@ -283,7 +286,7 @@ gst_ddrawsurface_finalize (GstMiniObject * mini_object)
surface->width, surface->height, ddrawsink->video_width,
ddrawsink->video_height);
gst_directdraw_sink_surface_destroy (ddrawsink, surface);
-
+ GST_MINI_OBJECT_CLASS (ddrawsurface_parent_class)->finalize (mini_object);
} else {
/* In that case we can reuse the image and add it to our image pool. */
GST_CAT_INFO_OBJECT (directdrawsink_debug, ddrawsink,
@@ -296,10 +299,12 @@ gst_ddrawsurface_finalize (GstMiniObject * mini_object)
ddrawsink->buffer_pool = g_slist_prepend (ddrawsink->buffer_pool, surface);
g_mutex_unlock (ddrawsink->pool_lock);
}
+
return;
no_sink:
GST_CAT_WARNING (directdrawsink_debug, "no sink found");
+ GST_MINI_OBJECT_CLASS (ddrawsurface_parent_class)->finalize (mini_object);
return;
}
@@ -407,6 +412,8 @@ gst_directdraw_sink_finalize (GObject * object)
if (ddrawsink->setup) {
gst_directdraw_sink_cleanup (ddrawsink);
}
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void