Bug 46657

Summary: last.valuators is wrong after slave switch on Xinerama layouts
Product: xorg Reporter: Peter Hutterer <peter.hutterer>
Component: Server/Input/CoreAssignee: Peter Hutterer <peter.hutterer>
Status: RESOLVED WONTFIX QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: hramrach
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Peter Hutterer 2012-02-26 15:02:10 UTC
401150d7dcad08be7c1f07e076f810cd61e2105c     
input: change pointer screen crossing behaviour for multiple ScreenRecs

above commit changed master->last.valuators[] to be in desktop-wide coordinates, but updateSlaveDeviceCoords still uses screen scaling. If a device is on a screen that is not the top-left screen, a slave switch to an absolute device will cause the coordinates to be outside the axis boundaries and thus force that device to a specific screen.

Test case: two screens, move pointer to right screen with a mouse, then use a synaptics touchpad to move left. The touchpad is absolute, so when updating the coordinates, last.valuator[0] on the device will be axmax+xd where axmax is the device's maximum range for x and xd the x coordinate on that screen in device-specific coordinates. e.g. in synaptic's case that could be something like 5400 + 1300.

When crossing screens, that will always map to the second screen, causing the device to be stuck on that screen.
Comment 1 Peter Hutterer 2012-02-26 16:22:39 UTC
http://patchwork.freedesktop.org/patch/9269/
Comment 2 Peter Hutterer 2016-11-28 04:39:54 UTC
This is a mass change of bugs. Bugs assigned to me that haven't been updated in the last 3 years are closed as WONTFIX, because, well, let's at least be honest about it.

Please do not re-open unless you have a really good reason to do so (e.g. you're fixing it yourself). If it hasn't been fixed in the last 3 years, it probably won't be fixed anytime soon either. Sorry.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.