[PULL 1.14] touch fixes, backported
Peter Hutterer
peter.hutterer at who-t.net
Tue Jul 16 22:27:43 PDT 2013
I admit this is a huge set of patches but it's needed. Mostly prompted
by 56578 it fixes a number of things wrong with the touch implementation as
shipped in 1.12-1.14, fixing a few race conditions, a few bad deliveries and
a bunch of dangling pointer acesses.
I'd really like those to be in 1.14.3.
The following changes since commit 3608d9f3dd6ae1d23e23294e9a56cb8158e65d19:
glx: fix uninitialized var in __glXDRIscreenProbe (2013-07-11 09:46:11 +1000)
are available in the git repository at:
git://people.freedesktop.org/~whot/xserver server-1.14-touch-fixes
for you to fetch changes up to 2cd62dc02b67c70d2417b2ccd307ead9596a2967:
Xi: return !Success from DeliverTouchEmulatedEvent if we didn't deliver (2013-07-17 15:19:18 +1000)
----------------------------------------------------------------
Peter Hutterer (32):
Xi: use a temp variable for the new listener
Xi: not having an ownership mask does not mean automatic acceptance
dix: don't prepend an activated passive grab to the listeners
Xi: if we delivered a TouchEnd to a passive grab, end it
Xi: update the core listener state if we delivered the touch event
Xi: fix lookup in ActivateEarlyAccept
Xi: if a passive async grab is activated from an emulated touch, accept
Xi: save state for early acceptance
Xi: when punting to a new owner, always create TouchEnd events
Xi: use public.processInputProc to replay the touch history
Xi: Don't emit a TouchEnd event to a frozen device
dix: move EmitTouchEnd to touch.c
dix: XAllowEvents() on a touch event means accepting it
dix: invert a loop condition
dix: use a tmp variable for the to-be-removed touch listener
dix: drop DeviceIntRec's activeGrab struct
dix: use a temporary variable for listeners[0]
dix: freeing a null grab is a bug, complain if doing so
dix: AllocGrab can copy if an argument is passed in
dix: always copy grabs, don't reference them
dix: remove all listeners when freeing a touch
Move TouchListenerGone call to CloseDownClient
Xi: check for HAS_ACCEPTED only for grab listeners
dix: free the old grab when activating a new grab
dix: fix cursor refcounting
dix: call UpdateDeviceState() for emulated TouchEndEvents
Abstract cursor refcounting
dix: remove logspam in RefCursor()
dix: when ungrabbing an active grab, accept pointer grabs (#66720)
dix: UpdateTouchesForGrab must only free the listener grab if it is non-NULL
Xi: fix warning - remove unused 'rc'
Xi: return !Success from DeliverTouchEmulatedEvent if we didn't deliver
Xext/saver.c | 8 +--
Xi/exevents.c | 153 ++++++++++++++++++++++-------------------
Xi/ungrdevb.c | 2 +-
Xi/ungrdevk.c | 2 +-
Xi/xipassivegrab.c | 2 +-
dix/cursor.c | 29 +++++++-
dix/devices.c | 4 +-
dix/dispatch.c | 1 +
dix/events.c | 101 ++++++++++++++-------------
dix/grabs.c | 21 +++---
dix/touch.c | 114 +++++++++++++++++++++++++-----
dix/window.c | 15 ++--
hw/xfree86/modes/xf86Cursors.c | 4 +-
hw/xfree86/ramdac/xf86Cursor.c | 28 ++++----
include/cursor.h | 4 ++
include/dixgrabs.h | 2 +-
include/eventstr.h | 1 +
include/input.h | 2 +
include/inputstr.h | 2 +-
render/animcur.c | 3 +-
xfixes/cursor.c | 6 +-
21 files changed, 315 insertions(+), 189 deletions(-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20130717/2629eb78/attachment.pgp>
More information about the xorg-devel
mailing list