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
|