--- /dev/null
+From 50b9d3142ff90af2f7fa35b7b1bf9e5a07723dbd Mon Sep 17 00:00:00 2001
+From: Aaron Plattner <aplattner@nvidia.com>
+Date: Tue, 24 May 2011 23:02:42 +0000
+Subject: randr: check rotated virtual size limits correctly
+
+Commit d1107918d4626268803b54033a07405122278e7f introduced checks to
+the RandR path that cause RRSetScreenConfig requests to fail if the
+size is too large. Unfortunately, when RandR 1.1 rotation is enabled
+it compares the rotated screen dimensions to the unrotated limits,
+which causes 90- and 270-degree rotation to fail unless your screen
+happens to be square:
+
+ X Error of failed request: BadValue (integer parameter out of range for operation)
+ Major opcode of failed request: 153 (RANDR)
+ Minor opcode of failed request: 2 (RRSetScreenConfig)
+ Value in failed request: 0x780
+ Serial number of failed request: 14
+ Current serial number in output stream: 14
+
+Fix this by moving the check above the code that swaps the dimensions
+based on the rotation.
+
+Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
+Tested-by: Robert Hooker <robert.hooker@canonical.com>
+Tested-by: Kent Baxley <kent.baxley@canonical.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+(cherry picked from commit b6c7b9b2f39e970cedb6bc1e073f901e28cb0fa3)
+---
+diff --git a/randr/rrscreen.c b/randr/rrscreen.c
+index 1bc1a9e..da6d48d 100644
+--- a/randr/rrscreen.c
++++ b/randr/rrscreen.c
+@@ -910,12 +910,6 @@ ProcRRSetScreenConfig (ClientPtr client)
+ */
+ 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 < pScrPriv->minWidth || pScrPriv->maxWidth < width) {
+ client->errorValue = width;
+ free(pData);
+@@ -927,6 +921,12 @@ ProcRRSetScreenConfig (ClientPtr client)
+ return BadValue;
+ }
+
++ 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;
+--
+cgit v0.8.3-6-g21f6
+ case RR_Rotate_0:
+ swap_axes = 1;
+ invert[0] = 0;
-+ invert[1] = 0;
++ invert[1] = 0;
+ break;
+ case RR_Rotate_90:
+ swap_axes = 0;
+ invert[0] = 0;
-+ invert[1] = 1;
++ invert[1] = 1;
+ break;
+ case RR_Rotate_180:
+ swap_axes = 1;
-+ invert[0] = 0;
-+ invert[1] = 0;
++ invert[0] = 1;
++ invert[1] = 1;
+ break;
+ case RR_Rotate_270:
+ swap_axes = 0;
-+ invert[0] = 0;
-+ invert[1] = 1;
++ invert[0] = 1;
++ invert[1] = 0;
+ break;
+ }
+
return ret;
}
-diff -ur xorg-server-1.10.1.901//randr/rrscreen.c git/xorg-server-1.10.1.901//randr/rrscreen.c
---- xorg-server-1.10.1.901//randr/rrscreen.c 2011-02-25 04:27:32.000000000 +0100
-+++ git/xorg-server-1.10.1.901//randr/rrscreen.c 2011-05-18 23:19:39.007760004 +0200
-@@ -910,11 +910,6 @@
- */
- 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 < pScrPriv->minWidth || pScrPriv->maxWidth < width) {
- client->errorValue = width;
-@@ -926,7 +921,12 @@
- free(pData);
- return BadValue;
- }
--
-+ 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;
DESCRIPTION = "the X.Org X server"
DEPENDS += "mesa-dri pixman libpciaccess openssl dri2proto glproto xorg-minimal-fonts font-util-native"
PE = "2"
-PR = "${INC_PR}.2"
+PR = "${INC_PR}.0"
SRC_URI += " \
+ file://50b9d3142ff90af2f7fa35b7b1bf9e5a07723dbd.patch \
file://randr-support.patch \
file://hack-fbdev-ignore-return-mode.patch \
file://hack-assume-pixman-supports-overlapped-blt.patch \
file://replace-pkgconfig-sdkdir-poking.patch \
"
-SRC_URI[md5sum] = "64585a28abb18726d950cf1005bbcce4"
-SRC_URI[sha256sum] = "b7d775891e7e7fc3001763cf5727995b81bf07b72e12d9d41db282fe625298e6"
+SRC_URI[md5sum] = "c9ba50bd44ea70da51f13100336a5484"
+SRC_URI[sha256sum] = "65264f6640568b9db8d738aec1ddd036c3ae21b7ba05b98d006759d11a72792c"
do_install_prepend() {
mkdir -p ${D}/${libdir}/X11/fonts
PACKAGE_ARCH_ion = "${MACHINE_ARCH}"
XINERAMA = "${@['--disable-xinerama','--enable-xinerama'][bb.data.getVar('MACHINE',d) in ['ion']]}"
-EXTRA_OECONF += " ${CONFIG_MANAGER_OPTION} ${XINERAMA} --disable-kdrive --disable-xephyr --disable-xsdl --disable-xfake --disable-xfbdev --disable-dmx"
+EXTRA_OECONF += " ${CONFIG_MANAGER_OPTION} ${XINERAMA} --disable-xsdl --disable-xfake --disable-xfbdev --disable-dmx"
EXTRA_OECONF += " --enable-dri2 --disable-unit-tests --disable-docs --disable-devel-docs"
export LDFLAGS += " -ldl "