Bug 46657 - last.valuators is wrong after slave switch on Xinerama layouts
Summary: last.valuators is wrong after slave switch on Xinerama layouts
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/Input/Core (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Peter Hutterer
QA Contact: Xorg Project Team
Depends on:
Reported: 2012-02-26 15:02 UTC by Peter Hutterer
Modified: 2016-11-28 04:39 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Description Peter Hutterer 2012-02-26 15:02:10 UTC
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
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.