summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@neko.keithp.com>2007-04-09 14:29:46 -0700
committerKeith Packard <keithp@neko.keithp.com>2007-04-09 14:29:46 -0700
commitefcec7dbd3c2736c7b421d29c4d37e231aa681d2 (patch)
treedf9e625b1c729ac28b23f0538cfef85fc35db95e
parentdc6c4f6989f87149d8605604f4514f5cbf11de67 (diff)
Rotate screen size as needed from RandR 1.1 change requests.
Screen size must reflect rotated mode size when setting rotated mode using RandR 1.1 SetScreenConfig request.
-rw-r--r--randr/rrscreen.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
index 8aa26fa90..f2981b087 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
@@ -741,6 +741,7 @@ ProcRRSetScreenConfig (ClientPtr client)
RRModePtr mode;
RR10DataPtr pData = NULL;
RRScreenSizePtr pSize;
+ int width, height;
UpdateCurrentTime ();
@@ -882,8 +883,14 @@ ProcRRSetScreenConfig (ClientPtr client)
* If the screen size is changing, adjust all of the other outputs
* to fit the new size, mirroring as much as possible
*/
- if (mode->mode.width != pScreen->width ||
- mode->mode.height != pScreen->height)
+ width = mode->mode.width;
+ height = mode->mode.height;
+ if (rotation & (RR_Rotate_90|RR_Rotate_270))
+ {
+ width = mode->mode.height;
+ height = mode->mode.width;
+ }
+ if (width != pScreen->width || height != pScreen->height)
{
int c;
@@ -897,7 +904,7 @@ ProcRRSetScreenConfig (ClientPtr client)
goto sendReply;
}
}
- if (!RRScreenSizeSet (pScreen, mode->mode.width, mode->mode.height,
+ if (!RRScreenSizeSet (pScreen, width, height,
pScreen->mmWidth, pScreen->mmHeight))
{
rep.status = RRSetConfigFailed;