xserver: Branch 'mpx'
Peter Hutterer
whot at kemper.freedesktop.org
Wed Apr 30 01:42:23 PDT 2008
dix/devices.c | 1 +
mi/mi.h | 4 ++++
mi/mieq.c | 10 ++++++++++
3 files changed, 15 insertions(+)
New commits:
commit a0e6a7d4f507c5c0a0b11adb10394af58a0a6e07
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date: Wed Apr 30 17:57:48 2008 +0930
dix: resize EQ to minimum size to avoid reallocs during SIGIO.
When a new device is added, calculate the event size needed if a DCCE event is
sent and set the EQ's event size to this minimum. This avoids reallocs when a
event is sent (which may happen during a SIGIO).
diff --git a/dix/devices.c b/dix/devices.c
index abd3cb6..802bf79 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -249,6 +249,7 @@ EnableDevice(DeviceIntPtr dev)
listlen = GetEventList(&evlist);
OsBlockSignals();
SetMinimumEventSize(evlist, listlen, evsize);
+ mieqResizeEvents(evsize);
OsReleaseSignals();
if ((*prev != dev) || !dev->inited ||
diff --git a/mi/mi.h b/mi/mi.h
index 842edf3..0af1a1b 100644
--- a/mi/mi.h
+++ b/mi/mi.h
@@ -153,6 +153,10 @@ extern Bool mieqInit(
void
);
+extern void mieqResize(
+ int /* min_size */
+);
+
extern void mieqEnqueue(
DeviceIntPtr /*pDev*/,
xEventPtr /*e*/
diff --git a/mi/mieq.c b/mi/mieq.c
index 9f81867..3ab8936 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -102,6 +102,16 @@ mieqInit(void)
return TRUE;
}
+/* Ensure all events in the EQ are at least size bytes. */
+Bool
+mieqResizeEvents(int min_size)
+{
+ int i;
+
+ for (i = 0; i < QUEUE_SIZE; i++)
+ SetMinimumEventSize(miEventQueue.events[i].events, 7, min_size);
+}
+
/*
* Must be reentrant with ProcessInputEvents. Assumption: mieqEnqueue
* will never be interrupted. If this is called from both signal
More information about the xorg-commit
mailing list