mi: Reuse memory in mieqProcessInputEvents rather than making excessive calls to calloc()
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com> Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
f1c9b5ab23
commit
a939368ab8
10
mi/mieq.c
10
mi/mieq.c
|
@ -312,7 +312,8 @@ mieqProcessInputEvents(void)
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
int type, nevents, evlen, i;
|
int type, nevents, evlen, i;
|
||||||
ScreenPtr screen;
|
ScreenPtr screen;
|
||||||
xEvent *event;
|
static xEvent *event = NULL;
|
||||||
|
static size_t event_size = 0;
|
||||||
DeviceIntPtr dev = NULL,
|
DeviceIntPtr dev = NULL,
|
||||||
master = NULL;
|
master = NULL;
|
||||||
|
|
||||||
|
@ -322,7 +323,10 @@ mieqProcessInputEvents(void)
|
||||||
/* GenericEvents always have nevents == 1 */
|
/* GenericEvents always have nevents == 1 */
|
||||||
nevents = e->nevents;
|
nevents = e->nevents;
|
||||||
evlen = (nevents > 1) ? sizeof(xEvent) : e->events->evlen;
|
evlen = (nevents > 1) ? sizeof(xEvent) : e->events->evlen;
|
||||||
event = xcalloc(nevents, evlen);
|
if((nevents * evlen) > event_size) {
|
||||||
|
event_size = nevents * evlen;
|
||||||
|
event = (xEvent *)xrealloc(event, event_size);
|
||||||
|
}
|
||||||
|
|
||||||
if (!event)
|
if (!event)
|
||||||
FatalError("[mi] No memory left for event processing.\n");
|
FatalError("[mi] No memory left for event processing.\n");
|
||||||
|
@ -380,8 +384,6 @@ mieqProcessInputEvents(void)
|
||||||
master->public.processInputProc(masterEvents->event, master,
|
master->public.processInputProc(masterEvents->event, master,
|
||||||
nevents);
|
nevents);
|
||||||
}
|
}
|
||||||
|
|
||||||
xfree(event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the sprite now. Next event may be from different device. */
|
/* Update the sprite now. Next event may be from different device. */
|
||||||
|
|
Loading…
Reference in New Issue