dix: set raw event values before adding up relative values (#46976)
Regression introduced in 4e52cc0ef48145134cd58d357fb7289e6f8bb709
Raw 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.
Signed-off-by: Peter Hutterer <email address hidden>
Reviewed-by: Chase Douglas <email address hidden>
Reviewed-by: Daniel Stone <email address hidden>
Tested-by: Sven Arvidsson <email address hidden>
Reviewed-by: Simon Thum <email address hidden>
(cherry picked from commit 908ab3d580188533168c8cdfd2cab9dc689b4218)
(cherry picked from commit 5eb20062208177172ff3443e522096a2e8f2f1e8)
Conflicts:
dix/getevents.c
Signed-off-by: Chase Douglas <email address hidden>
Use a new sprite trace for indirect touches when all touches have physically ended
All touches of an indirect device, such as a trackpad, are sent to the
same window set. When there are no active touches, a new window set is
created; otherwise, the window set of an existing touch is copied.
The current code checks for any logically active touches. This includes
touches that have physically ended but are still logically active due to
unhandled touch grabs. Instead, we want a new window set whenever there
are no physically active touches.
This change skips over logically active but pending end touches, which
are touches that have physically ended.
Signed-off-by: Chase Douglas <email address hidden>
Reviewed-by: Peter Hutterer <email address hidden>
Signed-off-by: Peter Hutterer <email address hidden>
(cherry picked from commit 31df08a449cf9b6e1740e1c02257997490630d93)
(cherry picked from commit f8446ad3d71cdf9c2200f5584bd156c629fe3c90)
Signed-off-by: Chase Douglas <email address hidden>
Xi: Fix TouchEnd to TouchUpdate change for one accepted grab
If there is only one listener of a touch, the listener is a grab, and is
accepted before the touch has ended, the current code will not end the
touch record when the touch does end.
This change adds a listener state for when a touch is accepted but has
not yet ended. We now keep the touch record alive in this state, but end
it when the touch ends.
Signed-off-by: Chase Douglas <email address hidden>
Reviewed-by: Peter Hutterer <email address hidden>
Signed-off-by: Peter Hutterer <email address hidden>
(cherry picked from commit 58427e08a4a36ce9e213e4b4fe5249d5db2c764d)
(cherry picked from commit 5a3ec826e653377e8b70e7553d1f0ca72210447c)
Conflicts:
Xi/exevents.c
Signed-off-by: Chase Douglas <email address hidden>
dix: when rescaling from master, rescale from desktop dimensions (#46657)
master->last.valuators[] is in desktop dimensions, so use those as
rescale axis ranges, not the screen. Otherwise, a rescale on any screen
not the top-left will cause out-of-bounds coordinates which will always
map to the bottom-right screen, causing the device to be stuck on that
screen.
Xext: return BadAccess if PickPointer fails (#45796)
PickPointer or PickKeyboard return NULL, all MDs are currently disabled and
we cannot emulate a core event. This wasn't anticipated by the protocol, so
we don't really have an error code we may use here - BadAccess is simply the
least bad of the possible ones.
And returning BadAccess beats crashing the server.
Merge commit '0e7b1080415c85f55462ad863de36df7011bf869' into upstream-1.11+input
Due to me updating this branch on multiple computers and forgeting to
push the result to the repo, I had to diverged heads. Merging the old
branch in should fix things.