summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2006-07-11 07:40:40 +0100
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2006-07-11 07:40:40 +0100
commit584b544987be5cf23dce29ddaf3130e59cfe6fa8 (patch)
tree928e147c91bab3f4fa545245a20b40a965d5aa96 /src
parent5a1b68993f3a3a2e8dcd428a7118e29c36703cd6 (diff)
Add an additional check before rotating
Diffstat (limited to 'src')
-rw-r--r--src/i830_driver.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 80a46a47..e55e421d 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -955,6 +955,8 @@ I830Set640x480(ScrnInfoPtr pScrn)
if (VBESetVBEMode(pI830->pVbe, m, NULL))
return TRUE;
+ ErrorF("Set640x480 failed1\n");
+
/* if the first failed, let's try the next - usually 800x600 */
m = 0x32;
switch (pScrn->depth) {
@@ -970,6 +972,8 @@ I830Set640x480(ScrnInfoPtr pScrn)
if (VBESetVBEMode(pI830->pVbe, m, NULL))
return TRUE;
+ ErrorF("Set640x480 failed2\n");
+
return FALSE;
}
@@ -5572,6 +5576,10 @@ I830BIOSEnterVT(int scrnIndex, int flags)
pI830->leaving = FALSE;
+ /* Detect monitor change and switch to suitable mode */
+ if (!pI830->starting)
+ I830DetectMonitorChange(pScrn);
+
#if 1
/* Clear the framebuffer */
memset(pI830->FbBase + pScrn->fbOffset, 0,
@@ -5630,9 +5638,11 @@ I830BIOSEnterVT(int scrnIndex, int flags)
ResetState(pScrn, FALSE);
SetHWOperatingState(pScrn);
+#if 0
/* Detect monitor change and switch to suitable mode */
if (!pI830->starting)
I830DetectMonitorChange(pScrn);
+#endif
if (!I830VESASetMode(pScrn, pScrn->currentMode))
return FALSE;
@@ -5718,7 +5728,7 @@ I830BIOSSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
* The extra WindowTable check detects a rotation at startup.
*/
if ( (!WindowTable[pScrn->scrnIndex] || pspix->devPrivate.ptr == NULL) &&
- !pI830->DGAactive ) {
+ !pI830->DGAactive && (pScrn->PointerMoved == I830PointerMoved) ) {
if (!I830Rotate(pScrn, mode))
ret = FALSE;
}