dix: Merge DevicePresence notify events generation into a single function.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-03-12 10:17:16 +10:00
parent 7f1ba804a1
commit 97cb3cc28e

View File

@ -239,6 +239,22 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
return dev; return dev;
} }
static void
SendDevicePresenceEvent(int deviceid, int type)
{
DeviceIntRec dummyDev;
devicePresenceNotify ev;
memset(&dummyDev, 0, sizeof(DeviceIntRec));
ev.type = DevicePresenceNotify;
ev.time = currentTime.milliseconds;
ev.devchange = type;
ev.deviceid = deviceid;
dummyDev.id = MAXDEVICES;
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
(xEvent*)&ev, 1);
}
/** /**
* Enable the device through the driver, add the device to the device list. * Enable the device through the driver, add the device to the device list.
* Switch device ON through the driver and push it onto the global device * Switch device ON through the driver and push it onto the global device
@ -256,9 +272,7 @@ EnableDevice(DeviceIntPtr dev)
{ {
DeviceIntPtr *prev; DeviceIntPtr *prev;
int ret; int ret;
DeviceIntRec dummyDev;
DeviceIntPtr other; DeviceIntPtr other;
devicePresenceNotify ev;
int namelen = 0; /* dummy */ int namelen = 0; /* dummy */
int evsize = sizeof(xEvent); int evsize = sizeof(xEvent);
int listlen; int listlen;
@ -328,13 +342,7 @@ EnableDevice(DeviceIntPtr dev)
XA_INTEGER, 8, PropModeReplace, 1, &enabled, XA_INTEGER, 8, PropModeReplace, 1, &enabled,
TRUE); TRUE);
ev.type = DevicePresenceNotify; SendDevicePresenceEvent(dev->id, DeviceEnabled);
ev.time = currentTime.milliseconds;
ev.devchange = DeviceEnabled;
ev.deviceid = dev->id;
dummyDev.id = MAXDEVICES;
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
(xEvent *) &ev, 1);
return TRUE; return TRUE;
} }
@ -353,8 +361,6 @@ Bool
DisableDevice(DeviceIntPtr dev) DisableDevice(DeviceIntPtr dev)
{ {
DeviceIntPtr *prev, other; DeviceIntPtr *prev, other;
DeviceIntRec dummyDev;
devicePresenceNotify ev;
BOOL enabled; BOOL enabled;
for (prev = &inputInfo.devices; for (prev = &inputInfo.devices;
@ -406,14 +412,7 @@ DisableDevice(DeviceIntPtr dev)
XA_INTEGER, 8, PropModeReplace, 1, &enabled, XA_INTEGER, 8, PropModeReplace, 1, &enabled,
TRUE); TRUE);
ev.type = DevicePresenceNotify; SendDevicePresenceEvent(dev->id, DeviceDisabled);
ev.time = currentTime.milliseconds;
ev.devchange = DeviceDisabled;
ev.deviceid = dev->id;
dummyDev.id = MAXDEVICES;
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
(xEvent *) &ev, 1);
return TRUE; return TRUE;
} }
@ -430,8 +429,6 @@ int
ActivateDevice(DeviceIntPtr dev) ActivateDevice(DeviceIntPtr dev)
{ {
int ret = Success; int ret = Success;
devicePresenceNotify ev;
DeviceIntRec dummyDev;
ScreenPtr pScreen = screenInfo.screens[0]; ScreenPtr pScreen = screenInfo.screens[0];
if (!dev || !dev->deviceProc) if (!dev || !dev->deviceProc)
@ -446,16 +443,7 @@ ActivateDevice(DeviceIntPtr dev)
if (dev->isMaster && dev->spriteInfo->spriteOwner) if (dev->isMaster && dev->spriteInfo->spriteOwner)
pScreen->DeviceCursorInitialize(dev, pScreen); pScreen->DeviceCursorInitialize(dev, pScreen);
ev.type = DevicePresenceNotify; SendDevicePresenceEvent(dev->id, DeviceAdded);
ev.time = currentTime.milliseconds;
ev.devchange = DeviceAdded;
ev.deviceid = dev->id;
memset(&dummyDev, 0, sizeof(DeviceIntRec));
dummyDev.id = MAXDEVICES;
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
(xEvent *) &ev, 1);
return ret; return ret;
} }
@ -900,8 +888,6 @@ RemoveDevice(DeviceIntPtr dev)
{ {
DeviceIntPtr prev,tmp,next; DeviceIntPtr prev,tmp,next;
int ret = BadMatch; int ret = BadMatch;
devicePresenceNotify ev;
DeviceIntRec dummyDev;
ScreenPtr screen = screenInfo.screens[0]; ScreenPtr screen = screenInfo.screens[0];
int deviceid; int deviceid;
int initialized; int initialized;
@ -954,13 +940,7 @@ RemoveDevice(DeviceIntPtr dev)
if (ret == Success && initialized) { if (ret == Success && initialized) {
inputInfo.numDevices--; inputInfo.numDevices--;
ev.type = DevicePresenceNotify; SendDevicePresenceEvent(deviceid, DeviceRemoved);
ev.time = currentTime.milliseconds;
ev.devchange = DeviceRemoved;
ev.deviceid = deviceid;
dummyDev.id = MAXDEVICES;
SendEventToAllWindows(&dummyDev, DevicePresenceNotifyMask,
(xEvent *) &ev, 1);
} }
return ret; return ret;