Comment 5 for bug 1068920

Revision history for this message
In , Nick Bowler (nbowler) wrote :

After upgrading from xserver 1.12.99.905 (the very last 1.13 RC) to xserver
1.13.0, screen crossings have ceased to work correctly, in a 2-screen Zaphod
setup. The pointer starts on the left screen (0); when attempting to move it
rightwards across the boundary to the right screen (1), instead of actually
changing screens, the pointer teleports all the way to the left of the screen
it's already on.

Bisection pinpoints the following:

bafbd99080be49a17be97d2cc758fbe623369945 is the first bad commit
commit bafbd99080be49a17be97d2cc758fbe623369945
Author: Peter Hutterer <email address hidden>
Date: Wed Aug 8 11:34:32 2012 +1000

    dix: work around scaling issues during WarpPointer (#53037)

    In WarpPointer calls, we get input in screen coordinates. They must be
    scaled to device coordinates, and then back to screen coordinates for screen
    crossing and root coordinates in events.

    The rounding errors introduced (and clipping in core/XI 1.x events) can lead
    to the actual position being different to the requested input coordinates.
    e.g. 200 scales to 199.9999, truncated to 199 in the event.

    Avoid this by simply overwriting the scaled screen coordinates with the
    input coordinates for the POINTER_SCREEN case.

    X.Org Bug 53037 <http://bugs.freedesktop.org/show_bug.cgi?id=53037>

    Signed-off-by: Peter Hutterer <email address hidden>
    Reviewed-by: Keith Packard <email address hidden>

:040000 040000 f187f7ca2569a510c2f614cc75f9d5e3f4b09b85 394c22bc56781077b7384804648db21c6354eca8 M dix

Reverting this commit on top of 1.13.0 resolves the issue.