wayland: Commit viewport resizes (#16419)

This allows a resize to keep up with the users pointer movements.
This commit is contained in:
Colin Kinloch 2024-04-09 00:56:20 +01:00 committed by GitHub
parent 77f221436b
commit 08496b302c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -131,8 +131,13 @@ void xdg_toplevel_handle_configure_common(gfx_ctx_wayland_data_t *wl,
wl->buffer_height = wl->fractional_scale ?
FRACTIONAL_SCALE_MULT(wl->height, wl->fractional_scale_num) : wl->height * wl->buffer_scale;
wl->resize = true;
if (wl->viewport) /* Update viewport */
if (wl->viewport)
{
/* Stretch old buffer to fill new size, commit/roundtrip to apply */
wp_viewport_set_destination(wl->viewport, wl->width, wl->height);
wl_surface_commit(wl->surface);
wl_display_roundtrip(wl->input.dpy);
}
}
if (floating)
@ -196,8 +201,13 @@ void libdecor_frame_handle_configure_common(struct libdecor_frame *frame,
wl->buffer_height = wl->fractional_scale ?
FRACTIONAL_SCALE_MULT(height, wl->fractional_scale_num) : height * wl->buffer_scale;
wl->resize = true;
if (wl->viewport) /* Update viewport */
if (wl->viewport)
{
/* Stretch old buffer to fill new size, commit/roundtrip to apply */
wp_viewport_set_destination(wl->viewport, wl->width, wl->height);
wl_surface_commit(wl->surface);
wl_display_roundtrip(wl->input.dpy);
}
}
state = wl->libdecor_state_new(wl->width, wl->height);
@ -832,8 +842,13 @@ bool gfx_ctx_wl_set_video_mode_common_size(gfx_ctx_wayland_data_t *wl,
wl->buffer_height = wl->fractional_scale ?
FRACTIONAL_SCALE_MULT(wl->buffer_height, wl->fractional_scale_num) : wl->buffer_height * wl->buffer_scale;
}
if (wl->viewport) /* Update viewport */
if (wl->viewport)
{
/* Stretch old buffer to fill new size, commit/roundtrip to apply */
wp_viewport_set_destination(wl->viewport, wl->width, wl->height);
wl_surface_commit(wl->surface);
wl_display_roundtrip(wl->input.dpy);
}
#ifdef HAVE_LIBDECOR_H
if (wl->libdecor)