layer-shell: ignore ack_configure() on closed surfaces

When the surface is closed, we destroy all pending serials waiting to be
accepted. This means we need to ignore any future ack events, because we
can have the following events:

1. -> configure()
2. -> close()
3. <- ack_configure()

At point 3, wlroots will error the client because of invalid serial,
however the client hasn't processed close() yet.
This commit is contained in:
Ilia Bozhinov 2019-09-13 12:51:53 +02:00 committed by Simon Ser
parent bf90474b74
commit 8b0f1bc850
1 changed files with 1 additions and 1 deletions

View File

@ -61,7 +61,7 @@ static void layer_surface_handle_ack_configure(struct wl_client *client,
bool found = false; bool found = false;
struct wlr_layer_surface_v1_configure *configure, *tmp; struct wlr_layer_surface_v1_configure *configure, *tmp;
if (!surface) { if (!surface || surface->closed) {
return; return;
} }
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) { wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {