[PATCH xserver] xwayland: don't use logical size for RRMode
Simon Ser
contact at emersion.fr
Sun Jul 8 12:59:28 UTC 2018
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 <contact at 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
More information about the xorg-devel
mailing list