From 2d7c7630c9e64294bace52e87122d37bbef4e2d8 Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Tue, 25 Apr 2017 16:23:08 +0900 Subject: [PATCH] libs: windows: wayland: fix leak if failure of sync Sometimes gst_vaapi_window_wayland_sync returns FALSE when poll returns EBUSY during destruction. In this case, if GstVaapiWindow is using vpp, leak of vpp surface happens. This surface is not attached to anything at this moment, so we should release it manually. https://bugzilla.gnome.org/show_bug.cgi?id=781695 --- gst-libs/gst/vaapi/gstvaapiwindow_wayland.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c b/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c index 80f0f5e..45934aa 100644 --- a/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c +++ b/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c @@ -480,6 +480,9 @@ gst_vaapi_window_wayland_render (GstVaapiWindow * window, /* Wait for the previous frame to complete redraw */ if (!gst_vaapi_window_wayland_sync (window)) { + /* Release vpp surface if exists */ + if (priv->need_vpp && window->has_vpp) + gst_vaapi_video_pool_put_object (window->surface_pool, surface); wl_buffer_destroy (buffer); return !priv->sync_failed; } -- 2.7.4