From de15c214130962b3afd44d3f394201e1596ee0f9 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Wed, 12 Mar 2014 13:54:44 +0200 Subject: [PATCH] waylandsink: fix crash in case there is no pool because of a caps negotiation error --- ext/wayland/gstwaylandsink.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c index bba630b..f3b8593 100644 --- a/ext/wayland/gstwaylandsink.c +++ b/ext/wayland/gstwaylandsink.c @@ -206,8 +206,10 @@ gst_wayland_sink_finalize (GObject * object) gst_buffer_unref (sink->last_buffer); if (sink->display) { /* see comment about this call in gst_wayland_sink_change_state() */ - gst_wayland_compositor_release_all_buffers (GST_WAYLAND_BUFFER_POOL - (sink->pool)); + if (sink->pool) { + gst_wayland_compositor_release_all_buffers (GST_WAYLAND_BUFFER_POOL + (sink->pool)); + } g_object_unref (sink->display); } if (sink->window) @@ -258,8 +260,10 @@ gst_wayland_sink_change_state (GstElement * element, GstStateChange transition) * unref the pool and therefore the display, which will try to * stop the thread from within itself and cause a deadlock. */ - gst_wayland_compositor_release_all_buffers (GST_WAYLAND_BUFFER_POOL - (sink->pool)); + if (sink->pool) { + gst_wayland_compositor_release_all_buffers (GST_WAYLAND_BUFFER_POOL + (sink->pool)); + } gst_buffer_replace (&sink->last_buffer, NULL); g_clear_object (&sink->window); g_clear_object (&sink->display); -- 2.7.4