diff options
Diffstat (limited to 'xorg-server')
-rw-r--r-- | xorg-server/hw/xfree86/modes/xf86Crtc.c | 15 | ||||
-rw-r--r-- | xorg-server/include/dixstruct.h | 12 |
2 files changed, 17 insertions, 10 deletions
diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c index 13251cff4..b3ded5a33 100644 --- a/xorg-server/hw/xfree86/modes/xf86Crtc.c +++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c @@ -2605,6 +2605,7 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); xf86CrtcPtr crtc = config->crtc[0]; int c; + int enabled = 0; /* A driver with this hook will take care of this */ if (!crtc->funcs->set_mode_major) { @@ -2655,14 +2656,20 @@ xf86SetDesiredModes(ScrnInfoPtr scrn) transform = &crtc->desiredTransform; else transform = NULL; - if (!xf86CrtcSetModeTransform + if (xf86CrtcSetModeTransform (crtc, &crtc->desiredMode, crtc->desiredRotation, transform, - crtc->desiredX, crtc->desiredY)) - return FALSE; + crtc->desiredX, crtc->desiredY)) { + ++enabled; + } else { + for (o = 0; o < config->num_output; o++) + if (config->output[o]->crtc == crtc) + config->output[o]->crtc = NULL; + crtc->enabled = FALSE; + } } xf86DisableUnusedFunctions(scrn); - return TRUE; + return enabled != 0; } /** diff --git a/xorg-server/include/dixstruct.h b/xorg-server/include/dixstruct.h index c1236f5c9..678481920 100644 --- a/xorg-server/include/dixstruct.h +++ b/xorg-server/include/dixstruct.h @@ -90,12 +90,12 @@ typedef struct _Client { Mask clientAsMask; short index; unsigned char majorOp, minorOp; - int swapped:1; - int local:1; - int big_requests:1; /* supports large requests */ - int clientGone:1; - int closeDownMode:2; - int clientState:2; + unsigned int swapped:1; + unsigned int local:1; + unsigned int big_requests:1; /* supports large requests */ + unsigned int clientGone:1; + unsigned int closeDownMode:2; + unsigned int clientState:2; char smart_priority; short noClientException; /* this client died or needs to be killed */ int priority; |