diff options
-rw-r--r-- | src/drmmode_display.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 205ef6a8..4291f4d3 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -342,7 +342,18 @@ drmmode_do_crtc_dpms(xf86CrtcPtr crtc, int mode) static void drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode) { - /* Nothing to do. drmmode_do_crtc_dpms() is called as appropriate */ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + + /* Disable unused CRTCs */ + if (!crtc->enabled || mode != DPMSModeOn) { + drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + 0, 0, 0, NULL, 0, NULL); + return; + } + + crtc->funcs->set_mode_major(crtc, &crtc->mode, crtc->rotation, + crtc->x, crtc->y); } static PixmapPtr |