gl: wayland: Fix hinding the window on close()

When the window is called, we properly destroy all surfaces, which effectively
will unmap that surface and should make it disapear on screen, but we also
destroy the wl_source, a GSource that is resposibble of dispatching and executing
messages to/from the Wayland server.

As a side effect, the server never gets the message and the surfaces are
"leaked" on the server. We fix this using wl_display_flush() before destroying
the wl_source.

Fixes #815

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1226>
This commit is contained in:
Nicolas Dufresne 2021-07-14 11:43:10 -04:00 committed by GStreamer Marge Bot
parent 88e19f857a
commit 3e69c5546b

View file

@ -469,6 +469,11 @@ gst_gl_window_wayland_egl_close (GstGLWindow * gl_window)
destroy_surfaces (window_egl);
/* As we are about to destroy the wl_source, we need to ensure everything
* has been sent synchronously, otherwise we will be leaking surfaces on
* server, leaving the window visible and unrefreshed on screen. */
wl_display_flush (GST_GL_DISPLAY_WAYLAND (gl_window->display)->display);
g_source_destroy (window_egl->wl_source);
g_source_unref (window_egl->wl_source);
window_egl->wl_source = NULL;