mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
libs: window: wayland: rt event queue at destroy()
The proxy object of wl_buffer for the last frame remains in the wl_map. Even though we call wl_buffer_destroy() in frame_release_callback(), the proxy object remains without being removed, since proxy object is deleted when wayland server sees the delete request and sends 'delete_id' event. We need to call roundtrip before destroying event_queue so that the proxy object is removed. Otherwise, it would be mess up as receiving 'delete_id' event from previous play, when playing in the next va/wayland window with the same wl_display connection. https://bugzilla.gnome.org/show_bug.cgi?id=773689 Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
This commit is contained in:
parent
9c3a4edf05
commit
896a836f1d
1 changed files with 5 additions and 0 deletions
|
@ -313,10 +313,15 @@ gst_vaapi_window_wayland_destroy (GstVaapiWindow * window)
|
|||
{
|
||||
GstVaapiWindowWaylandPrivate *const priv =
|
||||
GST_VAAPI_WINDOW_WAYLAND_GET_PRIVATE (window);
|
||||
struct wl_display *const wl_display =
|
||||
GST_VAAPI_OBJECT_NATIVE_DISPLAY (window);
|
||||
|
||||
/* Wait for the last frame to complete redraw */
|
||||
gst_vaapi_window_wayland_sync (window);
|
||||
|
||||
if (priv->event_queue)
|
||||
wl_display_roundtrip_queue (wl_display, priv->event_queue);
|
||||
|
||||
if (priv->last_frame) {
|
||||
frame_state_free (priv->last_frame);
|
||||
priv->last_frame = NULL;
|
||||
|
|
Loading…
Reference in a new issue