From 2a822c231145afd2b99498d5d4bf96be7dff92c5 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Date: Mon, 15 Dec 2008 03:18:13 -0800 Subject: [PATCH] mi: Reuse memory in mieqProcessInputEvents rather than making excessive calls to calloc() Signed-off-by: Peter Hutterer Signed-off-by: Jeremy Huddleston (cherry picked from commit a939368ab8140d48c1da4ba0bb229d13b221189c) --- mi/mieq.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mi/mieq.c b/mi/mieq.c index f0d979a1b..db48f55e5 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -308,7 +308,8 @@ mieqProcessInputEvents(void) int x = 0, y = 0; int type, nevents, evlen, i; ScreenPtr screen; - xEvent *event; + static xEvent *event = NULL; + static size_t event_size = 0; DeviceIntPtr dev = NULL, master = NULL; @@ -318,7 +319,10 @@ mieqProcessInputEvents(void) /* GenericEvents always have nevents == 1 */ nevents = e->nevents; 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) FatalError("[mi] No memory left for event processing.\n"); @@ -376,8 +380,6 @@ mieqProcessInputEvents(void) master->public.processInputProc(masterEvents->event, master, nevents); } - - xfree(event); } /* Update the sprite now. Next event may be from different device. */