d48b876ad837b976c496ca45a409549e1ac2a5c7
1 From e57d6a89027c55fef987cdc259668c48a8b4ea1b Mon Sep 17 00:00:00 2001
2 From: Peter Hutterer <peter.hutterer@who-t.net>
3 Date: Thu, 10 May 2012 15:32:20 +1000
4 Subject: [PATCH 08/12] dix: move freeing the sprite into a function
6 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
7 Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
8 ---
9 dix/devices.c | 7 +------
10 dix/events.c | 12 ++++++++++++
11 include/dix.h | 2 ++
12 3 files changed, 15 insertions(+), 6 deletions(-)
14 --- a/dix/devices.c
15 +++ b/dix/devices.c
16 @@ -949,12 +949,7 @@
17 free(classes);
18 }
20 - if (DevHasCursor(dev) && dev->spriteInfo->sprite) {
21 - if (dev->spriteInfo->sprite->current)
22 - FreeCursor(dev->spriteInfo->sprite->current, None);
23 - free(dev->spriteInfo->sprite->spriteTrace);
24 - free(dev->spriteInfo->sprite);
25 - }
26 + FreeSprite(dev);
28 /* a client may have the device set as client pointer */
29 for (j = 0; j < currentMaxClients; j++)
30 --- a/dix/events.c
31 +++ b/dix/events.c
32 @@ -3323,6 +3323,18 @@
33 #endif
34 }
36 +void FreeSprite(DeviceIntPtr dev)
37 +{
38 + if (DevHasCursor(dev) && dev->spriteInfo->sprite) {
39 + if (dev->spriteInfo->sprite->current)
40 + FreeCursor(dev->spriteInfo->sprite->current, None);
41 + free(dev->spriteInfo->sprite->spriteTrace);
42 + free(dev->spriteInfo->sprite);
43 + }
44 + dev->spriteInfo->sprite = NULL;
45 +}
46 +
47 +
48 /**
49 * Update the mouse sprite info when the server switches from a pScreen to another.
50 * Otherwise, the pScreen of the mouse sprite is never updated when we switch
51 --- a/include/dix.h
52 +++ b/include/dix.h
53 @@ -417,6 +417,9 @@
54 DeviceIntPtr /* pDev */,
55 WindowPtr /* pWin */);
57 +extern void FreeSprite(
58 + DeviceIntPtr /* pDev */);
59 +
60 extern void UpdateSpriteForScreen(
61 DeviceIntPtr /* pDev */,
62 ScreenPtr /* pScreen */);