blob: ef3bd570cc66182bfd89de8ce1060626e08364bd [file] [log] [blame]
From f4e7fe95794218e9237b18102a1292dd7d973464 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Thu, 10 May 2012 15:32:20 +1000
Subject: [PATCH 2/5] dix: move freeing the sprite into a function
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
(cherry picked from commit e57d6a89027c55fef987cdc259668c48a8b4ea1b)
---
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 557a68f..23e1008 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -917,12 +917,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 822b6e9..b6bc759 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3193,6 +3193,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 d604e06..879b4a3 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -394,6 +394,8 @@ DeliverTouchEvents(DeviceIntPtr /* dev */ ,
extern void
InitializeSprite(DeviceIntPtr /* pDev */ ,
WindowPtr /* pWin */ );
+extern void
+FreeSprite(DeviceIntPtr pDev);
extern void
UpdateSpriteForScreen(DeviceIntPtr /* pDev */ ,
--
1.8.3