[PULL unreviewed] touch fixes for #56578

Peter Hutterer peter.hutterer at who-t.net
Wed May 22 22:57:29 PDT 2013

Still unreviewed, don't expect them to get reviewed or even understood, so
can we please merge this so it gets some testing outside of my box and the
few that see the bug. This fixes a rather bad bug where we just read/write
to a dangling pointer on almost every touch event.

The following changes since commit 2f1aedcaed8fd99b823d451bf1fb02330c078f67:

  input: print warnings if drivers don't initialize properly (2013-05-10 11:05:00 +1000)

are available in the git repository at:

  git://people.freedesktop.org/~whot/xserver touch-grab-race-condition-56578-v3

for you to fetch changes up to 9a5ad65330693b3273972b63d10f2907d9ab954a:

  Abstract cursor refcounting (2013-05-15 19:17:57 +1000)

Peter Hutterer (28):
      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
      Xi: fix warning - remove unused 'rc'
      dix: devices must have valuators before touch is initialized
      dix: call UpdateDeviceState() for emulated TouchEndEvents
      Abstract cursor refcounting

 Xext/saver.c                   |   8 +--
 Xi/exevents.c                  | 120 ++++++++++++++++++++---------------------
 Xi/ungrdevb.c                  |   2 +-
 Xi/ungrdevk.c                  |   2 +-
 Xi/xipassivegrab.c             |   2 +-
 dix/cursor.c                   |  33 +++++++++++-
 dix/devices.c                  |   5 +-
 dix/dispatch.c                 |   1 +
 dix/events.c                   |  89 +++++++++++++++---------------
 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, 287 insertions(+), 177 deletions(-)

More information about the xorg-devel mailing list