wayland/xdg-shell: Cache pending frame callbacks on popup reset
A popup can be reset, and when that happens, window and actor are destroyed, and won't be created again unless it is reassigned the popup role. If a client queued frame callbacks when resetting a popup, the frame callbacks would be left in the pending state, as they were not queued on the actor, meaning we'd hit an assert about the frame callbacks not being handled. Fix this by caching them on the MetaWaylandSurface, so that they either are cleaned up on destruction, or queued on the actor would the surface be re-assigned the popup role. https://gitlab.gnome.org/GNOME/mutter/issues/240
This commit is contained in:
parent
0ace58d05f
commit
407d62943c
1 changed files with 1 additions and 0 deletions
|
@ -961,6 +961,7 @@ meta_wayland_xdg_popup_commit (MetaWaylandSurfaceRole *surface_role,
|
||||||
if (!surface->buffer_ref.buffer && xdg_surface_priv->first_buffer_attached)
|
if (!surface->buffer_ref.buffer && xdg_surface_priv->first_buffer_attached)
|
||||||
{
|
{
|
||||||
meta_wayland_xdg_surface_reset (xdg_surface);
|
meta_wayland_xdg_surface_reset (xdg_surface);
|
||||||
|
meta_wayland_surface_cache_pending_frame_callbacks (surface, pending);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue