RRScreenInit() will install its own ConstrainCursorHarder() handler that will apply pointer constraints depending on the RR config, including the current rotation.
In the case of Xwayland, the output size is already swapped when rotated, so the default ConstrainCursorHarder() will set the wrong limits on the pointer. Disable the ConstrainCursorHarder() handler set by RRScreenInit() to avoid the issue. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99663 Signed-off-by: Olivier Fourdan <ofour...@redhat.com> --- v3: Split the patch in two as there two issues. The second issue being the pointer events not being reported when a rotation is applied this is because of the RR ConstrainCursorHarder() handler that we should not need in Xwayland. hw/xwayland/xwayland-output.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c index bdf270a..613662b 100644 --- a/hw/xwayland/xwayland-output.c +++ b/hw/xwayland/xwayland-output.c @@ -339,14 +339,22 @@ xwl_randr_set_config(ScreenPtr pScreen, Bool xwl_screen_init_output(struct xwl_screen *xwl_screen) { + ScreenPtr pScreen = xwl_screen->screen; + ConstrainCursorHarderProcPtr ConstrainCursorHarder; rrScrPrivPtr rp; - if (!RRScreenInit(xwl_screen->screen)) + /* Save current ConstrainCursorHarder handler, if any */ + ConstrainCursorHarder = pScreen->ConstrainCursorHarder; + + if (!RRScreenInit(pScreen)) return FALSE; - RRScreenSetSizeRange(xwl_screen->screen, 320, 200, 8192, 8192); + /* Restore previous ConstrainCursorHarder handler */ + pScreen->ConstrainCursorHarder = ConstrainCursorHarder; + + RRScreenSetSizeRange(pScreen, 320, 200, 8192, 8192); - rp = rrGetScrPriv(xwl_screen->screen); + rp = rrGetScrPriv(pScreen); rp->rrGetInfo = xwl_randr_get_info; rp->rrSetConfig = xwl_randr_set_config; -- 2.9.3 _______________________________________________ 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