aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-05-18 15:49:32 +0000
committermarha <marha@users.sourceforge.net>2010-05-18 15:49:32 +0000
commita8abf2e386861592ef6252451eebbeef9e8e40e6 (patch)
tree07af56804d5e4359e0b14bd35aefb75b92883a37 /xorg-server/dix
parentdf3634f34f1c14f6bbdc66d9e54478384fd93eae (diff)
downloadvcxsrv-a8abf2e386861592ef6252451eebbeef9e8e40e6.tar.gz
vcxsrv-a8abf2e386861592ef6252451eebbeef9e8e40e6.tar.bz2
vcxsrv-a8abf2e386861592ef6252451eebbeef9e8e40e6.zip
Solved crash in closing down
Diffstat (limited to 'xorg-server/dix')
-rw-r--r--xorg-server/dix/devices.c4
-rw-r--r--xorg-server/dix/events.c5
2 files changed, 8 insertions, 1 deletions
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c
index f419a98fd..e65e5598e 100644
--- a/xorg-server/dix/devices.c
+++ b/xorg-server/dix/devices.c
@@ -920,6 +920,10 @@ CloseDownDevices(void)
{
if (!IsMaster(dev) && dev->u.master)
dev->u.master = NULL;
+ /* Initialise the sprite and paired members of all devices
+ to avoid crashes in CloseDevice later */
+ dev->spriteInfo->sprite=NULL;
+ dev->spriteInfo->paired=NULL;
}
CloseDeviceList(&inputInfo.devices);
diff --git a/xorg-server/dix/events.c b/xorg-server/dix/events.c
index 22bb99557..7d8c1493f 100644
--- a/xorg-server/dix/events.c
+++ b/xorg-server/dix/events.c
@@ -2746,6 +2746,9 @@ CheckMotion(DeviceEvent *ev, DeviceIntPtr pDev)
CHECKEVENT(ev);
+ if (!pSprite)
+ return FALSE;
+
prevSpriteWin = pSprite->win;
if (ev && !syncEvents.playingEvents)
@@ -3152,7 +3155,7 @@ NewCurrentScreen(DeviceIntPtr pDev, ScreenPtr newScreen, int x, int y)
}
} else
#endif
- if (newScreen != pSprite->hotPhys.pScreen)
+ if (newScreen != pSprite->hotPhys.pScreen && WindowTable[newScreen->myNum])
ConfineCursorToWindow(pDev, WindowTable[newScreen->myNum],
TRUE, FALSE);
}