mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-03 07:48:19 +02:00
dix: set raw event values before adding up relative values (#46976)
Regression introduced in4e52cc0ef4Raw event values are values as-is from the driver, modified only be transformation or acceleration. 4e52cc caused the mask to be updated from relative to absolute coordinates which then got written into the raw events. Move the raw event update into the respective branches for absolute/relative events. X.Org Bug 46976 <http://bugs.freedesktop.org/show_bug.cgi?id=46976> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Tested-by: Sven Arvidsson <sa@whiz.se> Reviewed-by: Simon Thum <simon.thum@gmx.de> (cherry picked from commit908ab3d580)
This commit is contained in:
parent
a095f7ae96
commit
5eb2006220
1 changed files with 5 additions and 4 deletions
|
|
@ -1314,18 +1314,19 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
|
|||
|
||||
transformAbsolute(pDev, &mask);
|
||||
clipAbsolute(pDev, &mask);
|
||||
if ((flags & POINTER_NORAW) == 0)
|
||||
set_raw_valuators(raw, &mask, raw->valuators.data);
|
||||
}
|
||||
else {
|
||||
if (flags & POINTER_ACCELERATE)
|
||||
accelPointer(pDev, &mask, ms);
|
||||
if ((flags & POINTER_NORAW) == 0)
|
||||
set_raw_valuators(raw, &mask, raw->valuators.data);
|
||||
|
||||
moveRelative(pDev, &mask);
|
||||
}
|
||||
|
||||
/* valuators are in device coordinate system in absolute coordinates */
|
||||
|
||||
if ((flags & POINTER_NORAW) == 0)
|
||||
set_raw_valuators(raw, &mask, raw->valuators.data);
|
||||
|
||||
scale_to_desktop(pDev, &mask, &devx, &devy, &screenx, &screeny);
|
||||
scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,
|
||||
&mask, &devx, &devy, &screenx, &screeny);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue