diff --git a/backend/wayland/output.c b/backend/wayland/output.c index ff58cc37c..a783abe58 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -588,6 +588,11 @@ static bool output_commit(struct wlr_output *wlr_output, output->surface); } + if (output->has_configure_serial) { + xdg_surface_ack_configure(output->xdg_surface, output->configure_serial); + output->has_configure_serial = false; + } + wl_surface_commit(output->surface); if (wp_feedback != NULL) { @@ -742,7 +747,8 @@ static void xdg_surface_handle_configure(void *data, assert(output && output->xdg_surface == xdg_surface); output->configured = true; - xdg_surface_ack_configure(xdg_surface, serial); + output->has_configure_serial = true; + output->configure_serial = serial; int32_t req_width = output->wlr_output.width; int32_t req_height = output->wlr_output.height; diff --git a/include/backend/wayland.h b/include/backend/wayland.h index 192891b42..4f9f382be 100644 --- a/include/backend/wayland.h +++ b/include/backend/wayland.h @@ -95,7 +95,10 @@ struct wlr_wl_output { // 0 if not requested int32_t requested_width, requested_height; + uint32_t configure_serial; + bool has_configure_serial; bool configured; + uint32_t enter_serial; struct {