diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-02-03 07:47:18 +1030 |
---|---|---|
committer | Peter Hutterer <peter@cs.unisa.edu.au> | 2008-02-18 18:42:46 +1030 |
commit | 09a8fc5c7a79ca22fc23224bb544f2e709681f3f (patch) | |
tree | 34ba34d080ab12031fb949c022a049ef7523da6b | |
parent | 6d9d18bf7708eb9e640ef732b5dc4c99aa6d5feb (diff) |
Xi: make SizeDeviceInfo public and re-use from CreateClassesChangedEvent.
-rw-r--r-- | Xi/listdev.c | 2 | ||||
-rw-r--r-- | Xi/listdev.h | 5 | ||||
-rw-r--r-- | dix/getevents.c | 15 |
3 files changed, 9 insertions, 13 deletions
diff --git a/Xi/listdev.c b/Xi/listdev.c index 4aa2688dc..50f34e46c 100644 --- a/Xi/listdev.c +++ b/Xi/listdev.c @@ -92,7 +92,7 @@ SProcXListInputDevices(ClientPtr client) * */ -static void +_X_EXPORT void SizeDeviceInfo(DeviceIntPtr d, int *namesize, int *size) { int chunks; diff --git a/Xi/listdev.h b/Xi/listdev.h index 22a0d91c8..39ea2d635 100644 --- a/Xi/listdev.h +++ b/Xi/listdev.h @@ -49,4 +49,9 @@ CopySwapClasses(ClientPtr /* client */, CARD8* /* num_classes */, char** /* classbuf */); +void +SizeDeviceInfo(DeviceIntPtr /* dev */, + int* /* namesize */, + int* /* size */); + #endif /* LISTDEV_H */ diff --git a/dix/getevents.c b/dix/getevents.c index 1f8f0e02d..840fa2b89 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -113,6 +113,7 @@ CreateClassesChangedEvent(EventList* event, deviceClassesChangedEvent *dcce; int len = sizeof(xEvent); CARD32 ms = GetTimeInMillis(); + int namelen = 0; /* dummy */ /* XXX: ok, this is a bit weird. We need to alloc enough size for the * event so it can be filled in in POE lateron. Reason being that if @@ -120,19 +121,9 @@ CreateClassesChangedEvent(EventList* event, * or realloc the original pointer. * We can only do it here as we don't have the EventList in the event * processing any more. - * - * Code is basically same as in Xi/listdev.c */ - if (slave->key) - len += sizeof(xKeyInfo); - if (slave->button) - len += sizeof(xButtonInfo); - if (slave->valuator) - { - int chunks = ((int)slave->valuator->numAxes + 19) / VPC; - len += (chunks * sizeof(xValuatorInfo) + - slave->valuator->numAxes * sizeof(xAxisInfo)); - } + SizeDeviceInfo(slave, &namelen, &len); + if (event->evlen < len) { event->event = realloc(event->event, len); |