Input: Add DeleteInputDeviceRequest

Add DIDR, which asks the DDX to remove a device, analogous to
NewInputDeviceRequest.  Only implemented for XFree86 at the moment.
This commit is contained in:
Magnus Vigerlöf 2007-04-10 23:54:32 +03:00 committed by Daniel Stone
parent 7b82a836c6
commit 82962bbae2
6 changed files with 43 additions and 1 deletions

View File

@ -230,3 +230,15 @@ NewInputDeviceRequest(InputOption *options)
{
return BadValue;
}
/****************************************************************************
*
* Caller: configRemoveDevice (and others)
*
* Remove the specified device previously added.
*
*/
void
DeleteInputDeviceRequest(DeviceIntPtr dev)
{
}

View File

@ -212,7 +212,7 @@ configRemoveDevice(DBusMessage *message, DBusMessageIter *iter,
* already been removed. */
OsBlockSignals();
ProcessInputEvents();
RemoveDevice(pDev);
DeleteInputDeviceRequest(pDev);
OsReleaseSignals();
return Success;

View File

@ -2374,3 +2374,8 @@ NewInputDeviceRequest(InputOption *options)
return Success;
}
void
DeleteInputDeviceRequest(DeviceIntPtr pDev)
{
}

View File

@ -371,8 +371,11 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
if (pInp->drv)
pInp->drv->refCount--;
/* This should *really* be handled in drv->UnInit(dev) call instead */
#if 0
if (pInp->private)
xfree(pInp->private);
#endif
/* Remove the entry from the list. */
if (pInp == xf86InputDevs)

View File

@ -427,6 +427,26 @@ unwind:
return rval;
}
void
DeleteInputDeviceRequest(DeviceIntPtr pDev)
{
LocalDevicePtr pInfo = (LocalDevicePtr) pDev->public.devicePrivate;
InputDriverPtr drv = pInfo->drv;
IDevRec *idev = pInfo->conf_idev;
RemoveDevice(pDev);
if(drv->UnInit)
drv->UnInit(drv, pInfo, 0);
else
xf86DeleteInput(pInfo, 0);
xfree(idev->driver);
xfree(idev->identifier);
xf86optionListFree(idev->commonOptions);
xfree(idev);
}
/*
* convenient functions to post events
*/

View File

@ -446,6 +446,8 @@ extern DeviceIntPtr LookupDeviceIntRec(
/* Implemented by the DDX. */
extern int NewInputDeviceRequest(
InputOption *options);
extern void DeleteInputDeviceRequest(
DeviceIntPtr dev);
extern void DDXRingBell(
int volume,