diff options
author | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-12-15 03:18:13 -0800 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@freedesktop.org> | 2008-12-15 03:20:17 -0800 |
commit | a939368ab8140d48c1da4ba0bb229d13b221189c (patch) | |
tree | c6b24da6d7632d5d4fe611ebbc30aeb1a88c847d | |
parent | f1c9b5ab230cbb4124d8d476ae4886d05022adcb (diff) |
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>
-rw-r--r-- | mi/mieq.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -312,7 +312,8 @@ mieqProcessInputEvents(void) | |||
312 | int x = 0, y = 0; | 312 | int x = 0, y = 0; |
313 | int type, nevents, evlen, i; | 313 | int type, nevents, evlen, i; |
314 | ScreenPtr screen; | 314 | ScreenPtr screen; |
315 | xEvent *event; | 315 | static xEvent *event = NULL; |
316 | static size_t event_size = 0; | ||
316 | DeviceIntPtr dev = NULL, | 317 | DeviceIntPtr dev = NULL, |
317 | master = NULL; | 318 | master = NULL; |
318 | 319 | ||
@@ -322,7 +323,10 @@ mieqProcessInputEvents(void) | |||
322 | /* GenericEvents always have nevents == 1 */ | 323 | /* GenericEvents always have nevents == 1 */ |
323 | nevents = e->nevents; | 324 | nevents = e->nevents; |
324 | evlen = (nevents > 1) ? sizeof(xEvent) : e->events->evlen; | 325 | evlen = (nevents > 1) ? sizeof(xEvent) : e->events->evlen; |
325 | event = xcalloc(nevents, evlen); | 326 | if((nevents * evlen) > event_size) { |
327 | event_size = nevents * evlen; | ||
328 | event = (xEvent *)xrealloc(event, event_size); | ||
329 | } | ||
326 | 330 | ||
327 | if (!event) | 331 | if (!event) |
328 | FatalError("[mi] No memory left for event processing.\n"); | 332 | FatalError("[mi] No memory left for event processing.\n"); |
@@ -380,8 +384,6 @@ mieqProcessInputEvents(void) | |||
380 | master->public.processInputProc(masterEvents->event, master, | 384 | master->public.processInputProc(masterEvents->event, master, |
381 | nevents); | 385 | nevents); |
382 | } | 386 | } |
383 | |||
384 | xfree(event); | ||
385 | } | 387 | } |
386 | 388 | ||
387 | /* Update the sprite now. Next event may be from different device. */ | 389 | /* Update the sprite now. Next event may be from different device. */ |