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:50:33 +0100
commit7a995802b3ca11b741b23cc267639b548867cb70 (patch)
treef21cbca9a292ed74a76ac995d23a7afa5b5fd518
parent470237576445f590c6d0b811e2891ea2e62747cf (diff)
Block IO on switchmode just as we do for VT switching
to avoid cursor movements signalling io. (cherry picked from cf948b7b04dfeb61a294889027b9a54f6b9b478e commit)
-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);