From e57d6a89027c55fef987cdc259668c48a8b4ea1b Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 10 May 2012 15:32:20 +1000 Subject: [PATCH] dix: move freeing the sprite into a function Signed-off-by: Peter Hutterer Reviewed-by: Chase Douglas --- dix/devices.c | 7 +------ dix/events.c | 12 ++++++++++++ include/dix.h | 2 ++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/dix/devices.c b/dix/devices.c index 6acff4f71..a280dee28 100644 --- a/dix/devices.c +++ b/dix/devices.c @@ -918,12 +918,7 @@ CloseDevice(DeviceIntPtr dev) free(classes); } - if (DevHasCursor(dev) && dev->spriteInfo->sprite) { - if (dev->spriteInfo->sprite->current) - FreeCursor(dev->spriteInfo->sprite->current, None); - free(dev->spriteInfo->sprite->spriteTrace); - free(dev->spriteInfo->sprite); - } + FreeSprite(dev); /* a client may have the device set as client pointer */ for (j = 0; j < currentMaxClients; j++) { diff --git a/dix/events.c b/dix/events.c index 83ae5c965..49894fa26 100644 --- a/dix/events.c +++ b/dix/events.c @@ -3192,6 +3192,18 @@ InitializeSprite(DeviceIntPtr pDev, WindowPtr pWin) #endif } +void FreeSprite(DeviceIntPtr dev) +{ + if (DevHasCursor(dev) && dev->spriteInfo->sprite) { + if (dev->spriteInfo->sprite->current) + FreeCursor(dev->spriteInfo->sprite->current, None); + free(dev->spriteInfo->sprite->spriteTrace); + free(dev->spriteInfo->sprite); + } + dev->spriteInfo->sprite = NULL; +} + + /** * Update the mouse sprite info when the server switches from a pScreen to another. * Otherwise, the pScreen of the mouse sprite is never updated when we switch diff --git a/include/dix.h b/include/dix.h index 5dc2ac568..3d8b0e575 100644 --- a/include/dix.h +++ b/include/dix.h @@ -395,6 +395,8 @@ DeliverTouchEvents(DeviceIntPtr /* dev */ , extern void InitializeSprite(DeviceIntPtr /* pDev */ , WindowPtr /* pWin */ ); +extern void +FreeSprite(DeviceIntPtr pDev); extern void UpdateSpriteForScreen(DeviceIntPtr /* pDev */ ,