[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