summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2006-10-13 14:48:10 +0100
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2006-10-13 14:48:10 +0100
commitcf948b7b04dfeb61a294889027b9a54f6b9b478e (patch)
tree140dc4da2cdd73fd4c7c28bc71c09527ab7322b4
parenta6df780e4d3f90cc699b0b864bade03d6f15afd7 (diff)
Block IO on switchmode just as we do for VT switching
to avoid cursor movements signalling io.
-rw-r--r--hw/xfree86/common/xf86Cursor.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 61f0ce55e..8bb12ae33 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -213,6 +213,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
ScreenPtr pCursorScreen;
Bool Switched;
int px, py;
+ int sigstate;
if (!pScr->vtSema || !mode || !pScr->SwitchMode)
return FALSE;
@@ -232,6 +233,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
if (pScreen == pCursorScreen)
miPointerPosition(&px, &py);
+ sigstate = xf86BlockSIGIO ();
xf86EnterServerState(SETUP);
Switched = (*pScr->SwitchMode)(pScr->scrnIndex, mode, 0);
xf86EnterServerState(OPERATING);
@@ -269,6 +271,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
pScr->frameY1 = pScr->virtualY - 1;
}
}
+ xf86UnblockSIGIO (sigstate);
if (pScr->AdjustFrame)
(*pScr->AdjustFrame)(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);