aboutsummaryrefslogtreecommitdiff
path: root/xorg-server
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server')
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Crtc.c15
-rw-r--r--xorg-server/include/dixstruct.h12
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;