xserver/Xi
Peter Hutterer 531ff40301 Add a "flags" field to DeleteInputDeviceRequest.
Some input drivers need to implement an internal hotplugging scheme for
dependent devices to provide multiple X devices off one kernel device file.
Such dependent devices can be added with NewInputDeviceRequest() but they are
not removed when the config backend calls DeleteInputDeviceRequest(),
leaving the original device to clean up.

Example of the wacom driver:

config/udev calls NewInputDeviceRequest("stylus")

wacom PreInit calls
        NewInputDeviceRequest("eraser")
        NewInputDeviceRequest("pad")
        NewInputDeviceRequest("cursor")
        PreInit finishes.

When the device is removed, the config backend only calls
DeleteInputDeviceRequest for "stylus". The driver needs to call
DeleteInputDeviceRequest for the dependent devices eraser, pad and cursor to
clean up properly.
However, when the server terminates, DeleteInputDeviceRequest is called for
all devices - the driver must not remove the dependent devices to avoid
double-frees. There is no method for the driver to detect why a device is
being removed, leading to elaborate guesswork and some amount of wishful
thinking.

Though the input driver's UnInit already supports flags, they are unused.
This patch uses the flags to supply information where the
DeleteInputDeviceRequest request originates from, allowing a driver to
selectively call DeleteInputDeviceRequest when necessary.

Also bumps XINPUT ABI.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-25 17:47:32 -07:00
..
Makefile.am Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
allowev.c dix: remove un-used parameter "core" from AllowSome 2009-04-19 22:28:11 +10:00
allowev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
chgdctl.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
chgdctl.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
chgfctl.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
chgfctl.h Static cleanup on Xi/ 2007-03-25 21:18:39 -04:00
chgkbd.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
chgkbd.h Xi: disallow changing core keyboard and pointer 2006-10-29 03:43:34 +03:00
chgkmap.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
chgkmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
chgprop.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
chgprop.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
chgptr.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
chgptr.h Static cleanup on Xi/ 2007-03-25 21:18:39 -04:00
closedev.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
closedev.h Static cleanup on Xi/ 2007-03-25 21:18:39 -04:00
devbell.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
devbell.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
exevents.c Return an appropriately-typed error from dixLookupResourceByType. 2010-05-19 12:32:48 -07:00
exglobals.h Xi: purge old device enter/leave masks. 2009-03-20 15:17:57 +10:00
extinit.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getbmap.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
getbmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getdctl.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getdctl.h Static cleanup on Xi/ 2007-03-25 21:18:39 -04:00
getfctl.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getfctl.h Static cleanup on Xi/ 2007-03-25 21:18:39 -04:00
getfocus.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
getfocus.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getkmap.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getkmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getmmap.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getmmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getprop.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getprop.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getselev.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
getselev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
getvers.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
getvers.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
grabdev.c Xi: remove obsolete comment. 2009-07-30 08:43:14 +10:00
grabdev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
grabdevb.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
grabdevb.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
grabdevk.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
grabdevk.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
gtmotion.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
gtmotion.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
listdev.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
listdev.h Xi: Change ChangeMasterDeviceClasses to new XI2 events. 2009-03-20 15:17:55 +10:00
opendev.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
opendev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
queryst.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
queryst.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
selectev.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
selectev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
sendexev.c Xi: fix not reached code in XSendExtensionEvent 2010-04-21 18:07:16 +03:00
sendexev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
setbmap.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
setbmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
setdval.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
setdval.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
setfocus.c Remove #define NEED_EVENTS and NEED_REPLIES 2008-12-12 11:43:32 +10:00
setfocus.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
setmmap.c Xi: use byte-counting macros instead of manual calculation. 2009-07-14 10:05:53 +10:00
setmmap.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
setmode.c Xi: assume BadMode for non-BadMatch errors returned from SetDeviceMode. 2010-02-22 12:04:36 +10:00
setmode.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
stubs.c Add a "flags" field to DeleteInputDeviceRequest. 2010-05-25 17:47:32 -07:00
ungrdev.c input: replace GrabRec's coreGrab field with grabtype. 2009-04-19 22:28:08 +10:00
ungrdev.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
ungrdevb.c input: ensure various ProcUngrabKey/Buttons have the right grabtype set. 2009-05-04 17:40:29 +10:00
ungrdevb.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
ungrdevk.c input: ensure various ProcUngrabKey/Buttons have the right grabtype set. 2009-05-04 17:40:29 +10:00
ungrdevk.h indent fixes (OMG SO UGLY), and nuke old RCS keywords. 2006-02-20 22:16:49 +00:00
xiallowev.c input: bump to ints for deviceids - XI2 requires 16-bit deviceids. 2009-06-18 14:40:54 +10:00
xiallowev.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xichangecursor.c Return an appropriately-typed error from dixLookupResourceByType. 2010-05-19 12:32:48 -07:00
xichangecursor.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xichangehierarchy.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xichangehierarchy.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xigetclientpointer.c Xi: fix up access modes for calls to dixLookupDevice(). 2009-06-23 20:50:29 -04:00
xigetclientpointer.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xigrabdev.c Xi: Unify checking for invalid bits in grab masks. 2009-09-03 08:39:27 +10:00
xigrabdev.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xipassivegrab.c Return an appropriately-typed error from dixLookupResourceByType. 2010-05-19 12:32:48 -07:00
xipassivegrab.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xiproperty.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xiproperty.h Xi: reset the known properties at the end of the server generation. 2010-05-07 12:16:43 -07:00
xiquerydevice.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xiquerydevice.h xace: Fake return values on denials in input polling requests. 2009-10-14 19:19:19 -04:00
xiquerypointer.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xiquerypointer.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xiqueryversion.c Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xiqueryversion.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xiselectev.c Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
xiselectev.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xisetclientpointer.c Xi: check for Use permission on the device in SetClientPointer(). 2009-06-23 20:50:29 -04:00
xisetclientpointer.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00
xisetdevfocus.c Xi: add swapping hook for XIGetFocus reply. 2009-08-24 10:09:05 +10:00
xisetdevfocus.h Xi: standardise XI2 headers. 2009-09-03 08:39:27 +10:00
xiwarppointer.c Xi: return BadDevice for master kbds and attached slaves in XIWarpPointer 2009-09-03 10:00:34 +10:00
xiwarppointer.h Xi: namespace XI2 files. 2009-06-17 09:05:22 +10:00