diff options
author | Sebastian Dröge <slomo@circular-chaos.org> | 2008-02-12 12:22:48 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-02-12 12:22:48 +0000 |
commit | d62d8d9feaf027ffa359be07fa4b400da3648940 (patch) | |
tree | db1926623970b1787aee91c960899054e2bf3968 | |
parent | 45aeb687d2673a9b75877f044c61a2e3eb628246 (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-- | ChangeLog | 7 | ||||
m--------- | common | 0 | ||||
-rw-r--r-- | sys/directdraw/gstdirectdrawsink.c | 9 |
3 files changed, 15 insertions, 1 deletions
@@ -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 |