diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 4d5d7b8..47b5586 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -1927,6 +1927,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) */ if (!xf86InitialOutputPositions (scrn, modes)) { + ErrorF("initial output position failed\n"); xfree (crtcs); xfree (modes); return FALSE; @@ -1937,6 +1938,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) */ if (!xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) { + ErrorF("Pick crtcs failed\n"); xfree (crtcs); xfree (modes); return FALSE; @@ -2029,24 +2031,6 @@ xf86SetDesiredModes (ScrnInfoPtr scrn) xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); int c, o; - /* - * Turn off everything so mode setting is done - * with hardware in a consistent state - */ - for (o = 0; o < config->num_output; o++) - { - xf86OutputPtr output = config->output[o]; - (*output->funcs->dpms)(output, DPMSModeOff); - } - - for (c = 0; c < config->num_crtc; c++) - { - xf86CrtcPtr crtc = config->crtc[c]; - - crtc->funcs->dpms(crtc, DPMSModeOff); - memset(&crtc->mode, 0, sizeof(crtc->mode)); - } - for (c = 0; c < config->num_crtc; c++) { xf86CrtcPtr crtc = config->crtc[c]; diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 8b13758..ad7d776 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -832,6 +832,7 @@ xf86RandR12OutputSetProperty (ScreenPtr pScreen, RRPropertyValuePtr value) { xf86OutputPtr output = randr_output->devPrivate; + xf86CrtcPtr crtc = output->crtc; /* If we don't have any property handler, then we don't care what the * user is setting properties to. @@ -839,6 +840,9 @@ xf86RandR12OutputSetProperty (ScreenPtr pScreen, if (output->funcs->set_property == NULL) return TRUE; + if (!crtc->scrn->vtSema) + return TRUE; + /* * This function gets called even when vtSema is FALSE, as * drivers will need to remember the correct value to apply