wayland/surface: Destroy toplevel present callback if ignored

We might break the loop early, e.g. if we're unmapped before the round
trip finishes, and to avoid the callback to write to invalid stack
memory, destroy the callback so it won't be invoked.

Fixes: #3026
This commit is contained in:
Jonas Ådahl 2020-08-07 09:03:03 +02:00
parent 3590923c8b
commit c27f811462

View File

@ -4814,6 +4814,9 @@ gdk_wayland_toplevel_present (GdkToplevel *toplevel,
(!impl->initial_configure_received || !done))
wl_display_dispatch_queue (display_wayland->wl_display, impl->event_queue);
if (!done)
wl_callback_destroy (callback);
if (needs_reconfigure &&
last_configure_serial == impl->last_configure_serial &&
!(surface->state & (GDK_SURFACE_STATE_MAXIMIZED |