diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h index cc0ab8328..7e186dd0f 100644 --- a/include/wlr/types/wlr_xdg_shell.h +++ b/include/wlr/types/wlr_xdg_shell.h @@ -150,6 +150,7 @@ struct wlr_xdg_surface_configure { }; struct wlr_xdg_surface_state { + uint32_t configure_serial; bool has_geometry; struct wlr_box geometry; diff --git a/types/xdg_shell/wlr_xdg_surface.c b/types/xdg_shell/wlr_xdg_surface.c index dd89f3ad3..93d88fa12 100644 --- a/types/xdg_shell/wlr_xdg_surface.c +++ b/types/xdg_shell/wlr_xdg_surface.c @@ -142,7 +142,7 @@ static void xdg_surface_handle_ack_configure(struct wl_client *client, } surface->configured = true; - surface->configure_serial = serial; + surface->pending.configure_serial = serial; wlr_signal_emit_safe(&surface->events.ack_configure, configure); xdg_surface_configure_destroy(configure); @@ -401,6 +401,7 @@ void handle_xdg_surface_commit(struct wlr_surface *wlr_surface) { return; } + surface->configure_serial = next.configure_serial; if (next.has_geometry) { surface->geometry = next.geometry; }