mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-11-21 22:52:20 +00:00
backend/wayland: don't ack a configure event too early
Postpone sending xdg_surface.ack_configure until the guest compositor commits a buffer, if at all. Also see https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/128.
This commit is contained in:
parent
94e7165e85
commit
baf1e4f674
@ -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;
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user