aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/kdrive/fbdev/fbdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/kdrive/fbdev/fbdev.c')
-rw-r--r--xorg-server/hw/kdrive/fbdev/fbdev.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/xorg-server/hw/kdrive/fbdev/fbdev.c b/xorg-server/hw/kdrive/fbdev/fbdev.c
index fb6e3a292..d6fcf1a5f 100644
--- a/xorg-server/hw/kdrive/fbdev/fbdev.c
+++ b/xorg-server/hw/kdrive/fbdev/fbdev.c
@@ -465,6 +465,20 @@ fbdevRandRSetConfig(ScreenPtr pScreen,
int oldheight;
int oldmmwidth;
int oldmmheight;
+ int newwidth, newheight, newmmwidth, newmmheight;
+
+ if (screen->randr & (RR_Rotate_0 | RR_Rotate_180)) {
+ newwidth = pSize->width;
+ newheight = pSize->height;
+ newmmwidth = pSize->mmWidth;
+ newmmheight = pSize->mmHeight;
+ }
+ else {
+ newwidth = pSize->height;
+ newheight = pSize->width;
+ newmmwidth = pSize->mmHeight;
+ newmmheight = pSize->mmWidth;
+ }
if (wasEnabled)
KdDisableScreen(pScreen);
@@ -481,6 +495,10 @@ fbdevRandRSetConfig(ScreenPtr pScreen,
*/
scrpriv->randr = KdAddRotation(screen->randr, randr);
+ pScreen->width = newwidth;
+ pScreen->height = newheight;
+ pScreen->mmWidth = newmmwidth;
+ pScreen->mmHeight = newmmheight;
fbdevUnmapFramebuffer(screen);