summaryrefslogtreecommitdiff
path: root/src/radeon_crtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/radeon_crtc.c')
-rw-r--r--src/radeon_crtc.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index e1e45502..d21612a5 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -68,11 +68,28 @@ static void
radeon_crtc_dpms(xf86CrtcPtr crtc, int mode)
{
RADEONInfoPtr info = RADEONPTR(crtc->scrn);
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(crtc->scrn);
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ xf86CrtcPtr crtc0 = pRADEONEnt->pCrtc[0];
if (IS_AVIVO_VARIANT) {
atombios_crtc_dpms(crtc, mode);
} else {
+
+ /* need to restore crtc1 before crtc0 or we may get a blank screen
+ * in some cases
+ */
+ if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) {
+ if (crtc0->enabled)
+ crtc0->funcs->dpms(crtc0, DPMSModeOff);
+ }
+
legacy_crtc_dpms(crtc, mode);
+
+ if ((radeon_crtc->crtc_id == 1) && (mode == DPMSModeOn)) {
+ if (crtc0->enabled)
+ crtc0->funcs->dpms(crtc0, mode);
+ }
}
}