summaryrefslogtreecommitdiffstats
path: root/xorg/ati-fix-crtc-dpms-state-check.patch
blob: 9fc44ab2652d0c7fd972901e6cf91ada6257c1dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
From 248e912c487636d7352cfad43c03fc9f19fc2215 Mon Sep 17 00:00:00 2001
From: Michel Dänzer <michel.daenzer@amd.com>
Date: Fri, 08 Jun 2012 10:18:48 +0000
Subject: UMS: Fix CRTC DPMS state check.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 01703a0..fcca507 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -143,6 +143,22 @@ radeon_box_area(BoxPtr box)
     return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1);
 }
 
+static Bool
+radeon_crtc_is_enabled(xf86CrtcPtr crtc)
+{
+    RADEONCrtcPrivatePtr radeon_crtc;
+
+#ifdef XF86DRM_MODE
+    if (RADEONPTR(crtc->scrn)->cs) {
+	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+	return drmmode_crtc->dpms_mode == DPMSModeOn;
+    }
+#endif
+
+    radeon_crtc = crtc->driver_private;
+    return radeon_crtc->enabled;
+}
+
 xf86CrtcPtr
 radeon_pick_best_crtc(ScrnInfoPtr pScrn,
 		      int x1, int x2, int y1, int y2)
@@ -171,9 +187,8 @@ radeon_pick_best_crtc(ScrnInfoPtr pScrn,
 
     for (c = 0; c < xf86_config->num_crtc; c++) {
 	xf86CrtcPtr crtc = xf86_config->crtc[c];
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 
-	if (drmmode_crtc->dpms_mode == DPMSModeOff)
+	if (!radeon_crtc_is_enabled(crtc))
 	    continue;
 
 	radeon_crtc_box(crtc, &crtc_box);
--
cgit v0.9.0.2-2-gbebe