[PATCH] intel: fix crash triggered by dpms low power mode with hardware overlay running

Maxim Levitsky maximlevitsky at gmail.com
Sat Mar 22 07:06:38 PDT 2008


From 8a5836d887e27a9385d321a8e9f1f3243e881b78 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <maximlevitsky at gmail.com>
Date: Wed, 12 Mar 2008 22:18:59 +0200
Subject: [PATCH] intel: fix crash triggered by dpms low power mode with hardware overlay running

---
 src/i830_video.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/i830_video.c b/src/i830_video.c
index 1867da4..c430031 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -352,7 +352,8 @@ i830_overlay_switch_to_crtc (ScrnInfoPtr pScrn, xf86CrtcPtr crtc)
     I830CrtcPrivatePtr  intel_crtc = crtc->driver_private;
     int			pipeconf_reg = intel_crtc->pipe == 0 ? PIPEACONF : PIPEBCONF;
 
-    if (!IS_I965G(pI830) && (INREG(pipeconf_reg) & PIPEACONF_DOUBLE_WIDE))
+    if ((!IS_I965G(pI830) && (INREG(pipeconf_reg) & PIPEACONF_DOUBLE_WIDE))
+        || intel_crtc->dpms_mode != DPMSModeOn)
 	pPriv->overlayOK = FALSE;
     else
 	pPriv->overlayOK = TRUE;
@@ -1775,10 +1776,11 @@ i830_display_video(ScrnInfoPtr pScrn, xf86CrtcPtr crtc,
     
     if (crtc != pPriv->current_crtc)
     {
-        pPriv->current_crtc = crtc;
 	i830_overlay_switch_to_crtc (pScrn, crtc);
-	if (pPriv->overlayOK)
+	if (pPriv->overlayOK) {
+		pPriv->current_crtc = crtc;
 	    I830ResetVideo (pScrn);
+	    }
     }
 
     if (!pPriv->overlayOK)
-- 
1.5.3.8




More information about the xorg mailing list