The logical size is the size of the output in the global compositor space. The mode width/height shouldn't be transformed and scaled.
This fixes issues with pointer input on transformed outputs. Signed-Off-By: Simon Ser <cont...@emersion.fr> --- hw/xwayland/xwayland-output.c | 9 ++++++--- hw/xwayland/xwayland.h | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index 379062549..44fd5c26a 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -113,12 +113,15 @@ output_handle_mode(void *data, struct wl_output *wl_output, uint32_t flags, if (!(flags & WL_OUTPUT_MODE_CURRENT)) return; + xwl_output->mode_width = width; + xwl_output->mode_height = height; + xwl_output->mode_refresh = refresh; + /* Apply the change from wl_output only if xdg-output is not supported */ if (!xwl_output->xdg_output) { xwl_output->width = width; xwl_output->height = height; } - xwl_output->refresh = refresh; } static inline void @@ -224,8 +227,8 @@ apply_output_change(struct xwl_output *xwl_output) /* xdg-output sends output size in compositor space. so already rotated */ need_rotate = (xwl_output->xdg_output == NULL); - randr_mode = xwayland_cvt(xwl_output->width, xwl_output->height, - xwl_output->refresh / 1000.0, 0, 0); + randr_mode = xwayland_cvt(xwl_output->mode_width, xwl_output->mode_height, + xwl_output->mode_refresh / 1000.0, 0, 0); RROutputSetModes(xwl_output->randr_output, &randr_mode, 1, 1); RRCrtcNotify(xwl_output->randr_crtc, randr_mode, xwl_output->x, xwl_output->y, diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h index d70ad54bf..66daf58de 100644 --- a/hw/xwayland/xwayland.h +++ b/hw/xwayland/xwayland.h @@ -368,7 +368,8 @@ struct xwl_output { struct xwl_screen *xwl_screen; RROutputPtr randr_output; RRCrtcPtr randr_crtc; - int32_t x, y, width, height, refresh; + int32_t x, y, width, height; + int32_t mode_width, mode_height, mode_refresh; Rotation rotation; Bool wl_output_done; Bool xdg_output_done; -- 2.18.0 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel