diff --git a/src/radeon_driver.c b/src/radeon_driver.c index 65f6485..e6d1622 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -5208,11 +5208,6 @@ Bool RADEONEnterVT(int scrnIndex, int flags) pScrn->vtSema = TRUE; - RADEONRestoreSurfaces(pScrn, info->ModeReg); - - if (!xf86SetDesiredModes(pScrn)) - return FALSE; - #ifdef XF86DRI if (info->directRenderingEnabled) { if (info->cardType == CARD_PCIE && @@ -5223,14 +5218,26 @@ Bool RADEONEnterVT(int scrnIndex, int flags) } /* get the DRI back into shape after resume */ - RADEONDRISetVBlankInterrupt (pScrn, TRUE); RADEONDRIResume(pScrn->pScreen); RADEONAdjustMemMapRegisters(pScrn, info->ModeReg); + /* Reset the engine and HDP */ + RADEONEngineReset(pScrn); } else #endif RADEONRestoreMemMapRegisters(pScrn, info->ModeReg); + RADEONRestoreSurfaces(pScrn, info->ModeReg); + + if (!xf86SetDesiredModes(pScrn)) + return FALSE; + +#ifdef XF86DRI + if (info->directRenderingEnabled) { + /* set VBI after mode is set */ + RADEONDRISetVBlankInterrupt (pScrn, TRUE); + } +#endif /* this will get XVideo going again, but only if XVideo was initialised during server startup (hence the info->adaptor if). */