summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2008-02-03 07:47:18 +1030
committerPeter Hutterer <peter@cs.unisa.edu.au>2008-02-18 18:42:46 +1030
commit09a8fc5c7a79ca22fc23224bb544f2e709681f3f (patch)
tree34ba34d080ab12031fb949c022a049ef7523da6b
parent6d9d18bf7708eb9e640ef732b5dc4c99aa6d5feb (diff)
Xi: make SizeDeviceInfo public and re-use from CreateClassesChangedEvent.
-rw-r--r--Xi/listdev.c2
-rw-r--r--Xi/listdev.h5
-rw-r--r--dix/getevents.c15
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);