diff options
author | Keith Packard <keithp@neko.keithp.com> | 2007-04-09 14:29:46 -0700 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2007-04-09 14:29:46 -0700 |
commit | efcec7dbd3c2736c7b421d29c4d37e231aa681d2 (patch) | |
tree | df9e625b1c729ac28b23f0538cfef85fc35db95e | |
parent | dc6c4f6989f87149d8605604f4514f5cbf11de67 (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.c | 13 |
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; |