From: Stefan Schantl Date: Tue, 5 Feb 2013 19:18:49 +0000 (+0100) Subject: xorg-x11-server: Update to 1.13.2. X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Fipfire-3.x.git;a=commitdiff_plain;h=36c2933d58462cf4498d0d6241be61d7f0a5654e xorg-x11-server: Update to 1.13.2. This is a major update to the latest stable version. Add all X/Driver to recommends to provide a full useable X11 server after installation. --- diff --git a/xorg-x11-server/patches/xserver-1.12-Xext-fix-selinux-build-failure.patch b/xorg-x11-server/patches/xserver-1.12-Xext-fix-selinux-build-failure.patch new file mode 100644 index 000000000..a48a013c4 --- /dev/null +++ b/xorg-x11-server/patches/xserver-1.12-Xext-fix-selinux-build-failure.patch @@ -0,0 +1,52 @@ +From 5d16c39108c72b08478b6bd548494d6c675495ee Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Wed, 4 Jan 2012 09:31:51 +1000 +Subject: [PATCH 6/7] Xext: fix selinux build failure + +The server builds with -Werror=missing-braces, causing + +xselinux_hooks.c: In function 'SELinuxFlaskInit': +xselinux_hooks.c:851:12: error: missing braces around initializer +[-Werror=missing-braces] +xselinux_hooks.c:851:12: error: (near initialization for +'avc_option.') [-Werror=missing-braces] +cc1: some warnings being treated as errors + +Source is libselinux' libselinux-rhat.patch which changes struct selinux_opt +from { int, char * } to { int, union { char*, char** }}. + +Signed-off-by: Peter Hutterer +--- + Xext/xselinux_hooks.c | 2 +- + Xext/xselinux_label.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Xext/xselinux_hooks.c b/Xext/xselinux_hooks.c +index e9c7e93..0302f2f 100644 +--- a/Xext/xselinux_hooks.c ++++ b/Xext/xselinux_hooks.c +@@ -851,7 +851,7 @@ SELinuxFlaskReset(void) + void + SELinuxFlaskInit(void) + { +- struct selinux_opt avc_option = { AVC_OPT_SETENFORCE, (char *) 0 }; ++ struct selinux_opt avc_option = { AVC_OPT_SETENFORCE, { (char *) 0 } }; + security_context_t ctx; + int ret = TRUE; + +diff --git a/Xext/xselinux_label.c b/Xext/xselinux_label.c +index 2c33d1c..81f2f36 100644 +--- a/Xext/xselinux_label.c ++++ b/Xext/xselinux_label.c +@@ -361,7 +361,7 @@ SELinuxDefaultClientLabel(void) + void + SELinuxLabelInit(void) + { +- struct selinux_opt selabel_option = { SELABEL_OPT_VALIDATE, (char *) 1 }; ++ struct selinux_opt selabel_option = { SELABEL_OPT_VALIDATE, { (char *)1 } }; + + label_hnd = selabel_open(SELABEL_CTX_X, &selabel_option, 1); + if (!label_hnd) +-- +1.7.10.1 + diff --git a/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch b/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch deleted file mode 100644 index d040900bf..000000000 --- a/xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 04bd8e2fa6be557f58a0e417b0f3befc56f5ef59 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Thu, 1 Jul 2010 15:45:03 +1000 -Subject: [PATCH] Build libxf86config with -fPIC. - ---- - hw/xfree86/parser/Makefile.am | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am -index caf7079..655e73f 100644 ---- a/hw/xfree86/parser/Makefile.am -+++ b/hw/xfree86/parser/Makefile.am -@@ -32,7 +32,7 @@ libxf86config_internal_la_SOURCES = \ - - libxf86config_a_SOURCES = \ - $(INTERNAL_SOURCES) --libxf86config_a_CFLAGS = $(AM_CFLAGS) -+libxf86config_a_CFLAGS = $(AM_CFLAGS) -fPIC -fvisibility=hidden - - AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ --- -1.7.1 - diff --git a/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch b/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch index d532fe1d6..2d33bed94 100644 --- a/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch +++ b/xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch @@ -1,22 +1,22 @@ -From 4306b434038de7e2b17d3c4a6cfd87db469d3bda Mon Sep 17 00:00:00 2001 +From 66a3b14e118e90db80f96fcab52af4df35bc2377 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 10 Dec 2007 11:26:57 -0500 Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients. --- - Xext/shm.c | 15 +++++++++++++++ - 1 files changed, 15 insertions(+), 0 deletions(-) + Xext/shm.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) diff --git a/Xext/shm.c b/Xext/shm.c -index 5937a03..5376c19 100644 +index de48020..c011210 100644 --- a/Xext/shm.c +++ b/Xext/shm.c -@@ -381,8 +381,21 @@ +@@ -321,8 +321,21 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly) mode_t mask; int uidset = 0, gidset = 0; LocalClientCredRec *lcc; + Bool is_ssh = FALSE; - + if (GetLocalClientCreds(client, &lcc) != -1) { +#ifdef linux + if (lcc->fieldsSet & LCC_PID_SET) { @@ -31,18 +31,18 @@ index 5937a03..5376c19 100644 + } +#endif - if (lcc->fieldsSet & LCC_UID_SET) { - uid = lcc->euid; -@@ -401,6 +414,9 @@ - } + if (lcc->fieldsSet & LCC_UID_SET) { + uid = lcc->euid; +@@ -342,6 +355,9 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly) #endif - FreeLocalClientCreds(lcc); + FreeLocalClientCreds(lcc); + ++ if (is_ssh) ++ return -1; + -+ if (is_ssh) -+ return -1; - - if (uidset) { - /* User id 0 always gets access */ + if (uidset) { + /* User id 0 always gets access */ + if (uid == 0) { -- -1.5.3.4 +1.7.10.1 diff --git a/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch b/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch deleted file mode 100644 index ae65d0be4..000000000 --- a/xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch +++ /dev/null @@ -1,155 +0,0 @@ -From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Wed, 20 Jan 2010 14:46:12 +1300 -Subject: [PATCH] Add nr for background=none root - ---- - dix/globals.c | 1 + - dix/window.c | 12 +++++++----- - hw/xfree86/common/xf86Init.c | 11 +++++++++++ - hw/xfree86/common/xf86str.h | 5 ++++- - include/opaque.h | 1 + - os/utils.c | 3 +++ - 6 files changed, 27 insertions(+), 6 deletions(-) - -diff --git a/dix/globals.c b/dix/globals.c -index c24a94f..907a5e8 100644 ---- a/dix/globals.c -+++ b/dix/globals.c -@@ -124,6 +124,7 @@ FontPtr defaultFont; /* not declared in dix.h to avoid including font.h in - CursorPtr rootCursor; - Bool party_like_its_1989 = FALSE; - Bool whiteRoot = FALSE; -+Bool bgNoneRoot = FALSE; - - int cursorScreenDevPriv[MAXSCREENS]; - -diff --git a/dix/window.c b/dix/window.c -index caff1cb..be1d1c4 100644 ---- a/dix/window.c -+++ b/dix/window.c -@@ -466,22 +466,24 @@ InitRootWindow(WindowPtr pWin) - pWin->optional->cursor = rootCursor; - rootCursor->refcnt++; - -+ pWin->backingStore = defaultBackingStore; -+ pWin->forcedBS = (defaultBackingStore != NotUseful); - - if (party_like_its_1989) { - MakeRootTile(pWin); - backFlag |= CWBackPixmap; -+ pScreen->ChangeWindowAttributes(pWin, backFlag); -+ } else if (bgNoneRoot) { -+ /* nothing, handled in xf86CreateRootWindow */ - } else { - if (whiteRoot) - pWin->background.pixel = pScreen->whitePixel; - else - pWin->background.pixel = pScreen->blackPixel; - backFlag |= CWBackPixel; -- } - -- pWin->backingStore = defaultBackingStore; -- pWin->forcedBS = (defaultBackingStore != NotUseful); -- /* We SHOULD check for an error value here XXX */ -- (*pScreen->ChangeWindowAttributes)(pWin, backFlag); -+ pScreen->ChangeWindowAttributes(pWin, backFlag); -+ } - - MapWindow(pWin, serverClient); - } -diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index 6707448..776b898 100644 ---- a/hw/xfree86/common/xf86Init.c -+++ b/hw/xfree86/common/xf86Init.c -@@ -77,6 +77,7 @@ - #ifdef RENDER - #include "picturestr.h" - #endif -+#include "xace.h" - - #include "xf86VGAarbiter.h" - #include "globals.h" -@@ -254,6 +255,7 @@ xf86CreateRootWindow(WindowPtr pWin) - int ret = TRUE; - int err = Success; - ScreenPtr pScreen = pWin->drawable.pScreen; -+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - RootWinPropPtr pProp; - CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) - dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); -@@ -305,6 +307,15 @@ xf86CreateRootWindow(WindowPtr pWin) - } - } - -+ if (bgNoneRoot && pScrn->canDoBGNoneRoot) { -+ pWin->backgroundState = XaceBackgroundNoneState(pWin); -+ pWin->background.pixel = pScreen->whitePixel; -+ pScreen->ChangeWindowAttributes(pWin, CWBackPixmap | CWBorderPixel | CWCursor | CWBackingStore); -+ } else { -+ pWin->background.pixel = pScreen->blackPixel; -+ pScreen->ChangeWindowAttributes(pWin, CWBackPixel | CWBorderPixel | CWCursor | CWBackingStore); -+ } -+ - DebugF("xf86CreateRootWindow() returns %d\n", ret); - return (ret); - } -diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h -index de1f1b6..5c3aa00 100644 ---- a/hw/xfree86/common/xf86str.h -+++ b/hw/xfree86/common/xf86str.h -@@ -503,7 +503,7 @@ typedef struct _confdrirec { - } confDRIRec, *confDRIPtr; - - /* These values should be adjusted when new fields are added to ScrnInfoRec */ --#define NUM_RESERVED_INTS 16 -+#define NUM_RESERVED_INTS 15 - #define NUM_RESERVED_POINTERS 14 - #define NUM_RESERVED_FUNCS 11 - -@@ -775,6 +775,9 @@ typedef struct _ScrnInfoRec { - ClockRangePtr clockRanges; - int adjustFlags; - -+ /* -nr support */ -+ int canDoBGNoneRoot; -+ - /* - * These can be used when the minor ABI version is incremented. - * The NUM_* parameters must be reduced appropriately to keep the -diff --git a/include/opaque.h b/include/opaque.h -index b3c7c70..fcc8c95 100644 ---- a/include/opaque.h -+++ b/include/opaque.h -@@ -71,6 +71,7 @@ extern _X_EXPORT Bool defeatAccessControl; - extern _X_EXPORT long maxBigRequestSize; - extern _X_EXPORT Bool party_like_its_1989; - extern _X_EXPORT Bool whiteRoot; -+extern _X_EXPORT Bool bgNoneRoot; - - extern _X_EXPORT Bool CoreDump; - -diff --git a/os/utils.c b/os/utils.c -index d7c8388..40583d0 100644 ---- a/os/utils.c -+++ b/os/utils.c -@@ -513,6 +513,7 @@ void UseMsg(void) - #endif - ErrorF("-nolisten string don't listen on protocol\n"); - ErrorF("-noreset don't reset after last client exists\n"); -+ ErrorF("-nr create root window with no background\n"); - ErrorF("-reset reset after last client exists\n"); - ErrorF("-p # screen-saver pattern duration (minutes)\n"); - ErrorF("-pn accept failure to listen on all ports\n"); -@@ -856,6 +857,8 @@ ProcessCommandLine(int argc, char *argv[]) - defaultBackingStore = WhenMapped; - else if ( strcmp( argv[i], "-wr") == 0) - whiteRoot = TRUE; -+ else if ( strcmp( argv[i], "-nr") == 0) -+ bgNoneRoot = TRUE; - else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { - if(++i < argc) { - long reqSizeArg = atol(argv[i]); --- -1.6.6 - diff --git a/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch b/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch deleted file mode 100644 index c6178b879..000000000 --- a/xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch +++ /dev/null @@ -1,32 +0,0 @@ -From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001 -From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= -Date: Thu, 11 Sep 2008 12:51:31 -0400 -Subject: [PATCH] Make room for an external monitor if we have enough video RAM - ---- - hw/xfree86/modes/xf86Crtc.c | 9 +++++++++ - 1 files changed, 9 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 4de7e05..9bcf81b 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -987,6 +987,15 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, - if (crtc_height > height) - height = crtc_height; - } -+ -+ /* Make room for an external monitor if we have enough video ram */ -+ if (scrn->videoRam >= 65536) -+ width += 1920; -+ else if (scrn->videoRam >= 32768) -+ width += 1280; -+ else if (scrn->videoRam >= 16384) -+ width += 1024; -+ - if (config->maxWidth && width > config->maxWidth) width = config->maxWidth; - if (config->maxHeight && height > config->maxHeight) height = config->maxHeight; - if (config->minWidth && width < config->minWidth) width = config->minWidth; --- -1.6.0.1 - diff --git a/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch b/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch deleted file mode 100644 index 11fe5adac..000000000 --- a/xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Tue, 7 Oct 2008 11:09:14 -0400 -Subject: [PATCH] Force ModeDebug on. - ---- - hw/xfree86/modes/xf86Crtc.c | 3 +-- - 1 files changed, 1 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 9bcf81b..a953c8a 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -2084,8 +2084,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - xf86ProcessOptions (scrn->scrnIndex, - scrn->options, - config->options); -- config->debug_modes = xf86ReturnOptValBool (config->options, -- OPTION_MODEDEBUG, FALSE); -+ config->debug_modes = TRUE; - - if (scrn->display->virtualX) - width = scrn->display->virtualX; --- -1.6.0.1 - diff --git a/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch b/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch index cc80e6cef..b42c2d7c8 100644 --- a/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch +++ b/xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch @@ -1,31 +1,25 @@ -From a8079882f1884edc62a9de28af915bd8b65dfbbe Mon Sep 17 00:00:00 2001 +From 0002cde5312e785529b2901d7f8a82d5623e4ca7 Mon Sep 17 00:00:00 2001 From: Adam Jackson -Date: Wed, 11 Mar 2009 14:02:11 -0400 -Subject: [PATCH] Don't build the ACPI code. +Date: Wed, 9 Nov 2011 11:52:06 +1000 +Subject: [PATCH 2/7] Don't build the ACPI code. No good can come of this. --- - configure.ac | 2 -- - 1 files changed, 0 insertions(+), 2 deletions(-) + configure.ac | 1 - + 1 file changed, 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 72ae67e..04716f8 100644 +index a12783c..54f4464 100644 --- a/configure.ac +++ b/configure.ac -@@ -1269,13 +1269,11 @@ if test "x$XORG" = xyes; then - case $host_cpu in - ia64*) - linux_ia64=yes -- linux_acpi="yes" - ;; - alpha*) +@@ -1620,7 +1620,6 @@ if test "x$XORG" = xyes; then linux_alpha=yes ;; - i*86|amd64*|x86_64*) + i*86|amd64*|x86_64*|ia64*) - linux_acpi="yes" ;; *) ;; -- -1.6.1.3 +1.7.10.1 diff --git a/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch b/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch deleted file mode 100644 index 0f0ba27c7..000000000 --- a/xorg-x11-server/patches/xserver-1.6.99-default-modes.patch +++ /dev/null @@ -1,35 +0,0 @@ -From ca85ebddd804305322014c6a71b4122a56c5e634 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Thu, 4 Mar 2010 15:18:38 +1000 -Subject: [PATCH] tweak default mode list yet again - ---- - hw/xfree86/modes/xf86Crtc.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 03277be..571ffd0 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1582,7 +1582,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) - int min_clock = 0; - int max_clock = 0; - double clock; -- Bool add_default_modes = TRUE; -+ Bool add_default_modes; - Bool debug_modes = config->debug_modes || - xf86Initialising; - enum det_monrec_source sync_source = sync_default; -@@ -1628,6 +1628,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) - } - - output_modes = (*output->funcs->get_modes) (output); -+ -+ /* if the driver found modes, don't second-guess it */ -+ add_default_modes = (output_modes == NULL); - - edid_monitor = output->MonInfo; - --- -1.6.6.1 - diff --git a/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch b/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch deleted file mode 100644 index 0e7a6ba99..000000000 --- a/xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 16be69ef1e2ea9f19cd596b99b5ede7567d374b8 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Mon, 27 Jul 2009 16:52:42 -0400 -Subject: [PATCH 11/16] additional randr debugging - ---- - randr/randr.c | 16 +++++++++++++++- - 1 files changed, 15 insertions(+), 1 deletions(-) - -diff --git a/randr/randr.c b/randr/randr.c -index 1c1d0c4..accf614 100644 ---- a/randr/randr.c -+++ b/randr/randr.c -@@ -477,10 +477,24 @@ RRVerticalRefresh (xRRModeInfo *mode) - static int - ProcRRDispatch (ClientPtr client) - { -+ int ret; - REQUEST(xReq); - if (stuff->data >= RRNumberRequests || !ProcRandrVector[stuff->data]) - return BadRequest; -- return (*ProcRandrVector[stuff->data]) (client); -+ ret = ProcRandrVector[stuff->data](client); -+ -+ if (ret) { -+ int i; -+ ErrorF("RANDR failure: %d (extension base %d)\n", ret, RRErrorBase); -+ for (i = 0; i < stuff->length; i++) { -+ ErrorF("%08x ", ((unsigned int *)stuff) + i); -+ if ((i+1) % 4 == 0) -+ ErrorF("\n"); -+ } -+ ErrorF("\n"); -+ } -+ -+ return ret; - } - - static int --- -1.6.4.2 - diff --git a/xorg-x11-server/patches/xserver-1.6.99-right-of.patch b/xorg-x11-server/patches/xserver-1.6.99-right-of.patch index 06c118316..bf7e7c87f 100644 --- a/xorg-x11-server/patches/xserver-1.6.99-right-of.patch +++ b/xorg-x11-server/patches/xserver-1.6.99-right-of.patch @@ -1,47 +1,37 @@ -From 1766ae8a69daa06730e41d094fdddf53db3a1a9e Mon Sep 17 00:00:00 2001 +From 291bc9f827188461ff9717efccec1e350db537e8 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 28 Jul 2009 11:07:13 -0400 -Subject: [PATCH] RANDR: right-of placement by default +Subject: [PATCH 3/7] RANDR: right-of placement by default [Enhanced to add a new prefer clone option for drivers. This allows for servers like RN50 where two heads are disjoint. - airlied] - -[Enhanced to ignore rightof on single crtc cards - airlied] --- - hw/xfree86/common/xf86str.h | 9 ++++- - hw/xfree86/modes/xf86Crtc.c | 77 +++++++++++++++++++++++++++++++++++++++---- - 2 files changed, 77 insertions(+), 9 deletions(-) + hw/xfree86/common/xf86str.h | 8 ++++- + hw/xfree86/modes/xf86Crtc.c | 76 ++++++++++++++++++++++++++++++++++++++----- + 2 files changed, 75 insertions(+), 9 deletions(-) diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h -index 5c3aa00..8224668 100644 +index 0590262..d246634 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h -@@ -503,10 +503,13 @@ typedef struct _confdrirec { +@@ -508,10 +508,13 @@ typedef struct _confdrirec { } confDRIRec, *confDRIPtr; /* These values should be adjusted when new fields are added to ScrnInfoRec */ --#define NUM_RESERVED_INTS 15 -+#define NUM_RESERVED_INTS 14 +-#define NUM_RESERVED_INTS 16 ++#define NUM_RESERVED_INTS 15 #define NUM_RESERVED_POINTERS 14 - #define NUM_RESERVED_FUNCS 11 + #define NUM_RESERVED_FUNCS 10 +/* let clients know they can use this */ +#define XF86_SCRN_HAS_PREFER_CLONE 1 + - typedef pointer (*funcPointer)(void); + typedef pointer (*funcPointer) (void); /* flags for depth 24 pixmap options */ -@@ -672,7 +675,6 @@ typedef void xf86SetOverscanProc (ScrnInfoPtr, int); - * are to be dependent on compile-time defines. - */ - -- - typedef struct _ScrnInfoRec { - int driverVersion; - char * driverName; /* canonical name used in */ -@@ -778,6 +780,9 @@ typedef struct _ScrnInfoRec { - /* -nr support */ - int canDoBGNoneRoot; +@@ -769,6 +772,9 @@ typedef struct _ScrnInfoRec { + ClockRangePtr clockRanges; + int adjustFlags; + /* initial rightof support disable */ + int preferClone; @@ -50,26 +40,26 @@ index 5c3aa00..8224668 100644 * These can be used when the minor ABI version is incremented. * The NUM_* parameters must be reduced appropriately to keep the diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index a66c979..4d14f57 100644 +index 154f684..c58088d 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1146,6 +1146,15 @@ xf86InitialOutputPositions (ScrnInfoPtr scrn, DisplayModePtr *modes) - int o; - int min_x, min_y; - +@@ -1130,6 +1130,15 @@ xf86InitialOutputPositions(ScrnInfoPtr scrn, DisplayModePtr * modes) + int o; + int min_x, min_y; + + /* check for initial right-of heuristic */ + for (o = 0; o < config->num_output; o++) + { -+ xf86OutputPtr output = config->output[o]; ++ xf86OutputPtr output = config->output[o]; + -+ if (output->initial_x || output->initial_y) ++ if (output->initial_x || output->initial_y) + return TRUE; + } + - for (o = 0; o < config->num_output; o++) - { - xf86OutputPtr output = config->output[o]; -@@ -2028,6 +2037,60 @@ bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect) + for (o = 0; o < config->num_output; o++) { + xf86OutputPtr output = config->output[o]; + +@@ -1998,6 +2007,57 @@ bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect) return match; } @@ -85,43 +75,40 @@ index a66c979..4d14f57 100644 + +static Bool +xf86TargetRightOf(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, -+ DisplayModePtr *modes, Bool *enabled, -+ int width, int height) ++ DisplayModePtr *modes, Bool *enabled, ++ int width, int height) +{ + int o; + int w = 0; + -+ if (config->num_crtc == 1) -+ return FALSE; -+ + if (scrn->preferClone) -+ return FALSE; ++ return FALSE; + + if (numEnabledOutputs(config, enabled) < 2) -+ return FALSE; ++ return FALSE; + + for (o = -1; nextEnabledOutput(config, enabled, &o); ) { -+ DisplayModePtr mode = -+ xf86OutputHasPreferredMode(config->output[o], width, height); ++ DisplayModePtr mode = ++ xf86OutputHasPreferredMode(config->output[o], width, height); + -+ if (!mode) -+ return FALSE; ++ if (!mode) ++ return FALSE; + -+ w += mode->HDisplay; ++ w += mode->HDisplay; + } + + if (w > width) -+ return FALSE; ++ return FALSE; + + w = 0; + for (o = -1; nextEnabledOutput(config, enabled, &o); ) { -+ DisplayModePtr mode = -+ xf86OutputHasPreferredMode(config->output[o], width, height); ++ DisplayModePtr mode = ++ xf86OutputHasPreferredMode(config->output[o], width, height); + -+ config->output[o]->initial_x = w; -+ w += mode->HDisplay; ++ config->output[o]->initial_x = w; ++ w += mode->HDisplay; + -+ modes[o] = mode; ++ modes[o] = mode; + } + + return TRUE; @@ -129,44 +116,47 @@ index a66c979..4d14f57 100644 + static Bool xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - DisplayModePtr *modes, Bool *enabled, -@@ -2085,13 +2148,9 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - * biggest mode for its aspect ratio, assuming one exists. + DisplayModePtr * modes, Bool *enabled, +@@ -2074,14 +2134,10 @@ xf86TargetPreferred(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, */ - if (!ret) do { -- int i = 0; - float aspect = 0.0; + if (!ret) + do { +- int i = 0; + float aspect = 0.0; + DisplayModePtr a = NULL, b = NULL; -- /* count the number of enabled outputs */ -- for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++) ; +- /* count the number of enabled outputs */ +- for (i = 0, p = -1; nextEnabledOutput(config, enabled, &p); i++); - -- if (i != 1) -+ if (numEnabledOutputs(config, enabled) != 1) - break; - - p = -1; -@@ -2378,6 +2437,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) +- if (i != 1) ++ if (numEnabledOutputs(config, enabled) != 1) + break; - if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -+ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); - else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); - else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -@@ -2394,8 +2455,10 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - config->output[o]->name); - else - xf86DrvMsg (scrn->scrnIndex, X_INFO, -- "Output %s using initial mode %s\n", -- config->output[o]->name, modes[o]->name); -+ "Output %s using initial mode %s +%d+%d\n", -+ config->output[o]->name, modes[o]->name, + p = -1; +@@ -2385,6 +2441,8 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + else { + if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) + xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); ++ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) ++ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); + else if (xf86TargetPreferred + (scrn, config, modes, enabled, width, height)) + xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); +@@ -2404,9 +2462,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow) + "Output %s enabled but has no modes\n", + config->output[o]->name); + else +- xf86DrvMsg(scrn->scrnIndex, X_INFO, +- "Output %s using initial mode %s\n", +- config->output[o]->name, modes[o]->name); ++ xf86DrvMsg (scrn->scrnIndex, X_INFO, ++ "Output %s using initial mode %s +%d+%d\n", ++ config->output[o]->name, modes[o]->name, + config->output[o]->initial_x, + config->output[o]->initial_y); } /* -- -1.7.0.1 +1.7.10.4 diff --git a/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch b/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch deleted file mode 100644 index 520614188..000000000 --- a/xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 18d2bd8cb513a0436739916620532247f13dbf03 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Thu, 8 Oct 2009 15:25:24 -0400 -Subject: [PATCH] randr gamma reload hack - ---- - hw/xfree86/loader/sdksyms.c | 4 ++++ - hw/xfree86/modes/xf86RandR12.c | 6 ++++++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c -index 6ea9d26..41bac11 100644 ---- a/hw/xfree86/modes/xf86RandR12.c -+++ b/hw/xfree86/modes/xf86RandR12.c -@@ -1746,12 +1746,18 @@ xf86RandR12EnterVT (int screen_index, int flags) - { - ScreenPtr pScreen = screenInfo.screens[screen_index]; - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); -+ rrScrPrivPtr rp = rrGetScrPriv(pScreen); - - if (randrp->orig_EnterVT) { - if (!randrp->orig_EnterVT (screen_index, flags)) - return FALSE; - } - -+ /* reload gamma */ -+ int i; -+ for (i = 0; i < rp->numCrtcs; i++) -+ xf86RandR12CrtcSetGamma(pScreen, rp->crtcs[i]); -+ - return RRGetInfo (pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ - } - --- -1.6.5.rc2 - diff --git a/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch b/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch deleted file mode 100644 index c62837e40..000000000 --- a/xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch +++ /dev/null @@ -1,34 +0,0 @@ -From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001 -From: Bill Nottingham -Date: Fri, 6 Nov 2009 10:32:27 +1000 -Subject: [PATCH] fix KDM gamma issue on vt switch - ---- - hw/xfree86/modes/xf86RandR12.c | 4 ++++ - 1 files changed, 4 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c -index 6ea9d26..ece12b9 100644 ---- a/hw/xfree86/modes/xf86RandR12.c -+++ b/hw/xfree86/modes/xf86RandR12.c -@@ -1761,6 +1761,7 @@ xf86RandR12Init12 (ScreenPtr pScreen) - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - rrScrPrivPtr rp = rrGetScrPriv(pScreen); - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); -+ int i; - - rp->rrGetInfo = xf86RandR12GetInfo12; - rp->rrScreenSetSize = xf86RandR12ScreenSetSize; -@@ -1790,6 +1791,9 @@ xf86RandR12Init12 (ScreenPtr pScreen) - */ - if (!xf86RandR12SetInfo12 (pScreen)) - return FALSE; -+ for (i = 0; i < rp->numCrtcs; i++) { -+ xf86RandR12CrtcGetGamma(pScreen, rp->crtcs[i]); -+ } - return TRUE; - } - --- -1.6.5.1 - diff --git a/xorg-x11-server/patches/xserver-1.7.1-multilib.patch b/xorg-x11-server/patches/xserver-1.7.1-multilib.patch deleted file mode 100644 index 643599916..000000000 --- a/xorg-x11-server/patches/xserver-1.7.1-multilib.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 6d9585ba6a5784328de479c6b648d7b7d6cec64c Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Thu, 29 Oct 2009 19:04:10 -0400 -Subject: [PATCH] multilib fix for -devel subpackage - ---- - include/colormapst.h | 4 ++-- - include/xorg-server.h.in | 7 ++++--- - 2 files changed, 6 insertions(+), 5 deletions(-) - -diff --git a/include/colormapst.h b/include/colormapst.h -index f1fc8eb..274cd65 100644 ---- a/include/colormapst.h -+++ b/include/colormapst.h -@@ -103,12 +103,12 @@ typedef struct _ColormapRec - { - VisualPtr pVisual; - short class; /* PseudoColor or DirectColor */ --#if defined(_XSERVER64) -+#ifdef __LP64__ - short pad0; - XID pad1; - #endif - XID mid; /* client's name for colormap */ --#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) -+#if defined(__LP64__) && (X_BYTE_ORDER == X_LITTLE_ENDIAN) - XID pad2; - #endif - ScreenPtr pScreen; /* screen map is associated with */ -diff --git a/include/xorg-server.h.in b/include/xorg-server.h.in -index 76cab16..081b8f3 100644 ---- a/include/xorg-server.h.in -+++ b/include/xorg-server.h.in -@@ -157,9 +157,6 @@ - /* Name of X server */ - #undef __XSERVERNAME__ - --/* Define to 1 if unsigned long is 64 bits. */ --#undef _XSERVER64 -- - /* Building vgahw module */ - #undef WITH_VGAHW - -@@ -187,4 +184,8 @@ - /* X Access Control Extension */ - #undef XACE - -+#ifdef __LP64__ -+#define _XSERVER64 1 -+#endif -+ - #endif /* _XORG_SERVER_H_ */ --- -1.6.5.2 - diff --git a/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch b/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch deleted file mode 100644 index 60c0dceb3..000000000 --- a/xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1f315578bf759c85261b1f2295efbf0dba852f73 Mon Sep 17 00:00:00 2001 -From: Adam Williamson -Date: Thu, 25 Feb 2010 10:34:49 -0800 -Subject: [PATCH] disable vboxvideo driver in autodetect code - ---- - hw/xfree86/common/xf86AutoConfig.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c -index 7f4ada8..4e944ea 100644 ---- a/hw/xfree86/common/xf86AutoConfig.c -+++ b/hw/xfree86/common/xf86AutoConfig.c -@@ -220,7 +220,7 @@ videoPtrToDriverList(struct pci_device *dev, - case 0x1011: driverList[0] = "tga"; break; - case 0x1023: driverList[0] = "trident"; break; - case 0x100c: driverList[0] = "tseng"; break; -- case 0x80ee: driverList[0] = "vboxvideo"; break; -+ case 0x80ee: driverList[0] = "vesa"; break; - case 0x15ad: driverList[0] = "vmware"; break; - case 0x18ca: - if (dev->device_id == 0x47) --- -1.7.0 - diff --git a/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch b/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch deleted file mode 100644 index 3ee854243..000000000 --- a/xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch +++ /dev/null @@ -1,142 +0,0 @@ -From b27f93c6dbe0a6e416db2c65738e996c70a403c1 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Thu, 6 May 2010 12:55:34 +1000 -Subject: [PATCH] xf86: allow for no outputs connected at startup operation. - -When nothing is connected at startup and we canGrow, allow the server to start with a 1024x768 framebuffer, and when the drivers send hotplug events this will expand to the correct size dynamically. - -Signed-off-by: Dave Airlie ---- - hw/xfree86/modes/xf86Crtc.c | 66 ++++++++++++++++++++++++++++++------------ - 1 files changed, 47 insertions(+), 19 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 571ffd0..99082ec 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -48,6 +48,8 @@ - - #include "xf86xv.h" - -+#define NO_OUTPUT_DEFAULT_WIDTH 1024 -+#define NO_OUTPUT_DEFAULT_HEIGHT 768 - /* - * Initialize xf86CrtcConfig structure - */ -@@ -1946,7 +1948,7 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn) - #endif - } - --static void -+static Bool - xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - Bool *enabled) - { -@@ -1961,8 +1963,10 @@ xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config, - "No outputs definitely connected, trying again...\n"); - - for (o = 0; o < config->num_output; o++) -- enabled[o] = xf86OutputEnabled(config->output[o], FALSE); -+ any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], FALSE); - } -+ -+ return any_enabled; - } - - static Bool -@@ -2409,6 +2413,8 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - Bool *enabled; - int width, height; - int i = scrn->scrnIndex; -+ Bool have_outputs = TRUE; -+ Bool ret; - - /* Set up the device options */ - config->options = xnfalloc (sizeof (xf86DeviceOptions)); -@@ -2433,20 +2439,26 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - modes = xnfcalloc (config->num_output, sizeof (DisplayModePtr)); - enabled = xnfcalloc (config->num_output, sizeof (Bool)); - -- xf86CollectEnabledOutputs(scrn, config, enabled); -- -- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -- else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); -- else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); -- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); -- else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); -- else -- xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); -+ ret = xf86CollectEnabledOutputs(scrn, config, enabled); -+ if (ret == FALSE && canGrow) { -+ xf86DrvMsg(i, X_WARNING, "Unable to find connected outputs - setting %dx%d initial framebuffer\n", -+ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT); -+ have_outputs = FALSE; -+ } -+ else { -+ if (xf86TargetUserpref(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); -+ else if (xf86TargetRightOf(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using spanning desktop for initial modes\n"); -+ else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); -+ else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); -+ else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); -+ else -+ xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); -+ } - - for (o = -1; nextEnabledOutput(config, enabled, &o); ) { - if (!modes[o]) -@@ -2479,7 +2491,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - /* - * Assign CRTCs to fit output configuration - */ -- if (!xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) -+ if (have_outputs && !xf86PickCrtcs (scrn, crtcs, modes, 0, width, height)) - { - xfree (crtcs); - xfree (modes); -@@ -2541,6 +2553,13 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - */ - xf86DefaultScreenLimits (scrn, &width, &height, canGrow); - -+ if (have_outputs == FALSE) { -+ if (width < NO_OUTPUT_DEFAULT_WIDTH && height < NO_OUTPUT_DEFAULT_HEIGHT) { -+ width = NO_OUTPUT_DEFAULT_WIDTH; -+ height = NO_OUTPUT_DEFAULT_HEIGHT; -+ } -+ } -+ - scrn->display->virtualX = width; - scrn->display->virtualY = height; - } -@@ -2566,8 +2585,17 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - width, height); - } - -- /* Mirror output modes to scrn mode list */ -- xf86SetScrnInfoModes (scrn); -+ if (have_outputs) { -+ /* Mirror output modes to scrn mode list */ -+ xf86SetScrnInfoModes (scrn); -+ } else { -+ /* Clear any existing modes from scrn->modes */ -+ while (scrn->modes != NULL) -+ xf86DeleteMode(&scrn->modes, scrn->modes); -+ scrn->modes = xf86ModesAdd(scrn->modes, -+ xf86CVTMode(width, height, 60, 0, 0)); -+ } -+ - - xfree (crtcs); - xfree (modes); --- -1.7.0.1 - diff --git a/xorg-x11-server/patches/xserver-1.8-randr-initial.patch b/xorg-x11-server/patches/xserver-1.8-randr-initial.patch deleted file mode 100644 index 2db8a8c14..000000000 --- a/xorg-x11-server/patches/xserver-1.8-randr-initial.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f22b6f8a5899f125de63738e69aaddc2dd0a5d0a Mon Sep 17 00:00:00 2001 -From: Ben Skeggs -Date: Mon, 7 Jun 2010 10:10:10 +1000 -Subject: [PATCH] randr: prevent an unnecessary screen resize with multiple displays - -crtc->{x,y} is always 0 when xf86DefaultScreenLimits() is called, so we -calculate too small an area for the initial framebuffer and force a resize -to happen. - -This commit fixes the code to use desired{X,Y} instead, which contains the -initial output positions. - -Signed-off-by: Ben Skeggs ---- - hw/xfree86/modes/xf86Crtc.c | 4 ++-- - 1 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 51e7b5a..c2ad7bc 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -1041,8 +1041,8 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, - - if (crtc->enabled) - { -- crtc_width = crtc->x + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); -- crtc_height = crtc->y + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); -+ crtc_width = crtc->desiredX + xf86ModeWidth (&crtc->desiredMode, crtc->desiredRotation); -+ crtc_height = crtc->desiredY + xf86ModeHeight (&crtc->desiredMode, crtc->desiredRotation); - } - if (!canGrow) { - for (o = 0; o < config->num_output; o++) --- -1.6.6 - diff --git a/xorg-x11-server/patches/xserver-1.8-udev-warning.patch b/xorg-x11-server/patches/xserver-1.8-udev-warning.patch deleted file mode 100644 index 93071fd32..000000000 --- a/xorg-x11-server/patches/xserver-1.8-udev-warning.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Wed, 17 Feb 2010 11:12:36 +1000 -Subject: [PATCH] Stick giant warning into logfiles about udev configuration changes. - -Signed-off-by: Fedora X Ninjas ---- - hw/xfree86/common/xf86Config.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c -index 132e8bc..b1722cd 100644 ---- a/hw/xfree86/common/xf86Config.c -+++ b/hw/xfree86/common/xf86Config.c -@@ -1472,6 +1472,19 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) - "input devices.\n\tIf no devices become available, " - "reconfigure %s or disable AutoAddDevices.\n", - config_backend, config_backend); -+ -+ xf86Msg(X_INFO, "\n" -+ "***************************************************************\n" -+ "***************************************************************\n" -+ "** Fedora switched to udev-based device detection with **\n" -+ "** xorg-x11-server-1.7.99.901-1. Custom HAL configuration **\n" -+ "** stored in /etc/hal/fdi/policy will not be seen by this **\n" -+ "** server version. If you have such configuration you will **\n" -+ "** need to update it to the new format. **\n" -+ "** For more information, see the Fedora wiki page **\n" -+ "** https://fedoraproject.org/wiki/Input_device_configuration **\n" -+ "***************************************************************\n" -+ "***************************************************************\n"); - #else - xf86Msg(X_INFO, "Hotplugging is disabled and no input devices were configured.\n" - "\tTry disabling AllowEmptyInput.\n"); --- -1.6.6.1 - diff --git a/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch b/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch deleted file mode 100644 index ece8a6ca9..000000000 --- a/xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch +++ /dev/null @@ -1,909 +0,0 @@ -From deab888bb3bb2a56963da50ff551bd66fbd858a1 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Tue, 29 Jun 2010 13:49:27 +1000 -Subject: [PATCH 1/5] xkb: Mark switch case fallthrough with comment. - -Signed-off-by: Peter Hutterer ---- - xkb/xkbActions.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 4c7bce2..6a7f36d 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -625,6 +625,8 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - break; - } - xkbi->lockedPtrButtons&= ~(1<device, 0, button); - break; --- -1.7.1 - -From 50b6311dbd2594acc36d6856fdde8623459f1374 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Tue, 29 Jun 2010 12:12:53 +1000 -Subject: [PATCH 2/5] xkb: merge lockedPtrButtons state from all attached SDs. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Problem: -lockedPtrButtons keeps the state of the buttons locked by a PointerKeys button -press. Unconditionally clearing the bits may cause stuck buttons in this -sequence of events: - -1. type Shift + NumLock to enable PointerKeys -2. type 0/Ins on keypad to emulate Button 1 press - → button1 press event to client -3. press and release button 1 on physical mouse - → button1 release event to client - -Button 1 on the MD is now stuck and cannot be released. - -Cause: -XKB PointerKeys button events are posted through the XTEST pointer device. -Once a press is generated, the XTEST device's button is down. The DIX merges -the button state of all attached SDs, hence the MD will have a button down -while the XTEST device has a button down. - -PointerKey button events are only generated on the master device to avoid -duplicate events (see XkbFakeDeviceButton()). If the MD has the -lockedPtrButtons bit cleared by a release event on a physical device, no -such event is generated when a keyboard device triggers the PointerKey -ButtonRelease trigger. Since the event - if generated - is posted through -the XTEST pointer device, lack of a generated ButtonRelease event on the -XTEST pointer device means the button is never released, resulting in the -stuck button observed above. - -Solution: -This patch merges the MD's lockedPtrButtons with the one of all attached -slave devices on release events. Thus, as long as one attached keyboard has -a lockedPtrButtons bit set, this bit is kept in the MD. Once a PointerKey -button is released on all keyboards, the matching release event is emulated -from the MD through the XTEST pointer device, thus also releasing the button -in the DIX. - -Signed-off-by: Peter Hutterer ---- - include/xkbsrv.h | 3 +++ - xkb/xkbAccessX.c | 18 +++++++++++++++++- - xkb/xkbActions.c | 8 ++++++++ - xkb/xkbUtils.c | 26 ++++++++++++++++++++++++++ - 4 files changed, 54 insertions(+), 1 deletions(-) - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index c0cd501..f0db0e4 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -933,6 +933,9 @@ extern int XkbGetEffectiveGroup( - XkbStatePtr /* xkbstate */, - CARD8 /* keycode */); - -+extern void XkbMergeLockedPtrBtns( -+ DeviceIntPtr /* master */); -+ - #include "xkbfile.h" - #include "xkbrules.h" - -diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c -index be1dcee..e3fdc06 100644 ---- a/xkb/xkbAccessX.c -+++ b/xkb/xkbAccessX.c -@@ -707,8 +707,24 @@ DeviceEvent *event = &ev->device_event; - changed |= XkbPointerButtonMask; - } - else if (event->type == ET_ButtonRelease) { -- if (xkbi) -+ if (xkbi) { - xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); -+ -+ /* Merge this MD's lockedPtrButtons with the one of all -+ * attached slave devices. -+ * The DIX uses a merged button state for MDs, not -+ * releasing buttons until the last SD has released -+ * thenm. If we unconditionally clear the -+ * lockedPtrButtons bit on the MD, a PointerKeys button -+ * release on the SD keyboard won't generate the required fake button -+ * event on the XTEST pointer, thus never processing the -+ * button event in the DIX and the XTEST pointer's -+ * buttons stay down - result is a stuck button. -+ */ -+ if (IsMaster(dev)) -+ XkbMergeLockedPtrBtns(dev); -+ } -+ - changed |= XkbPointerButtonMask; - } - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 6a7f36d..ab52b6a 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -626,6 +626,14 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - } - xkbi->lockedPtrButtons&= ~(1<device)) -+ { -+ XkbMergeLockedPtrBtns(xkbi->device); -+ /* One SD still has lock set, don't post event */ -+ if ((xkbi->lockedPtrButtons & (1 << button)) != 0) -+ break; -+ } -+ - /* fallthrough */ - case XkbSA_PtrBtn: - XkbDDXFakeDeviceButton(xkbi->device, 0, button); -diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c -index b1e0e55..d7d1935 100644 ---- a/xkb/xkbUtils.c -+++ b/xkb/xkbUtils.c -@@ -2190,3 +2190,29 @@ XkbGetEffectiveGroup(XkbSrvInfoPtr xkbi, XkbStatePtr xkbState, CARD8 keycode) - - return effectiveGroup; - } -+ -+/* Merge the lockedPtrButtons from all attached SDs for the given master -+ * device into the MD's state. -+ */ -+void -+XkbMergeLockedPtrBtns(DeviceIntPtr master) -+{ -+ DeviceIntPtr d = inputInfo.devices; -+ XkbSrvInfoPtr xkbi = NULL; -+ -+ if (!IsMaster(master)) -+ return; -+ -+ if (!master->key) -+ return; -+ -+ xkbi = master->key->xkbInfo; -+ xkbi->lockedPtrButtons = 0; -+ -+ for (; d; d = d->next) { -+ if (IsMaster(d) || GetMaster(d, MASTER_KEYBOARD) != master || !d->key) -+ continue; -+ -+ xkbi->lockedPtrButtons |= d->key->xkbInfo->lockedPtrButtons; -+ } -+} --- -1.7.1 - -From 4a4224f5d786035af88c251a9ee177217e8f77fd Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Wed, 14 Apr 2010 10:54:29 +1000 -Subject: [PATCH 3/5] xkb: rename XkbFakeDeviceButton and XkbFakeDeviceMotion, move into xkbActions.c - -The name XkbDDXFakeDeviceButton and XkbDDXFakeDeviceMotion is somewhat -misleading, there's no DDX involved in the game at all anymore. - -This removes XkbFakeDeviceMotion and XkbFakeDeviceButton from the API where -it arguably shouldn't have been in the first place. - -Signed-off-by: Peter Hutterer -Reviewed-by: Daniel Stone -Reviewed-by: Dan Nicholson ---- - include/xkbsrv.h | 13 ------- - xkb/Makefile.am | 4 +-- - xkb/ddxDevBtn.c | 69 -------------------------------------- - xkb/ddxFakeMtn.c | 64 ----------------------------------- - xkb/xkbActions.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++------- - 5 files changed, 85 insertions(+), 162 deletions(-) - delete mode 100644 xkb/ddxDevBtn.c - delete mode 100644 xkb/ddxFakeMtn.c - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index f0db0e4..d1cbd1a 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -768,19 +768,6 @@ extern _X_EXPORT void XkbDDXUpdateDeviceIndicators( - CARD32 /* newState */ - ); - --extern _X_EXPORT void XkbDDXFakePointerMotion( -- DeviceIntPtr /* dev */, -- unsigned int /* flags */, -- int /* x */, -- int /* y */ --); -- --extern _X_EXPORT void XkbDDXFakeDeviceButton( -- DeviceIntPtr /* dev */, -- Bool /* press */, -- int /* button */ --); -- - extern _X_EXPORT int XkbDDXTerminateServer( - DeviceIntPtr /* dev */, - KeyCode /* key */, -diff --git a/xkb/Makefile.am b/xkb/Makefile.am -index e54ce59..fb3ccbf 100644 ---- a/xkb/Makefile.am -+++ b/xkb/Makefile.am -@@ -5,11 +5,9 @@ AM_CFLAGS = $(DIX_CFLAGS) - DDX_SRCS = \ - ddxBeep.c \ - ddxCtrls.c \ -- ddxFakeMtn.c \ - ddxLEDs.c \ - ddxLoad.c \ -- ddxList.c \ -- ddxDevBtn.c -+ ddxList.c - - DIX_SRCS = \ - xkb.c \ -diff --git a/xkb/ddxDevBtn.c b/xkb/ddxDevBtn.c -deleted file mode 100644 -index b8a1255..0000000 ---- a/xkb/ddxDevBtn.c -+++ /dev/null -@@ -1,69 +0,0 @@ --/************************************************************ --Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc. -- --Permission to use, copy, modify, and distribute this --software and its documentation for any purpose and without --fee is hereby granted, provided that the above copyright --notice appear in all copies and that both that copyright --notice and this permission notice appear in supporting --documentation, and that the name of Silicon Graphics not be --used in advertising or publicity pertaining to distribution --of the software without specific prior written permission. --Silicon Graphics makes no representation about the suitability --of this software for any purpose. It is provided "as is" --without any express or implied warranty. -- --SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY --AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, --DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE --OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH --THE USE OR PERFORMANCE OF THIS SOFTWARE. -- --********************************************************/ -- --#ifdef HAVE_DIX_CONFIG_H --#include --#endif -- --#include "inputstr.h" --#include --#include "mi.h" -- --void --XkbDDXFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) --{ -- EventListPtr events; -- int nevents, i; -- DeviceIntPtr ptr; -- -- /* If dev is a slave device, and the SD is attached, do nothing. If we'd -- * post through the attached master pointer we'd get duplicate events. -- * -- * if dev is a master keyboard, post through the XTEST device -- * -- * if dev is a floating slave, post through the device itself. -- */ -- -- if (IsMaster(dev)) -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- else if (!dev->u.master) -- ptr = dev; -- else -- return; -- -- events = InitEventList(GetMaximumEventsNum()); -- OsBlockSignals(); -- nevents = GetPointerEvents(events, ptr, -- press ? ButtonPress : ButtonRelease, button, -- 0 /* flags */, 0 /* first */, -- 0 /* num_val */, NULL); -- OsReleaseSignals(); -- -- for (i = 0; i < nevents; i++) -- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -- -- FreeEventList(events, GetMaximumEventsNum()); --} -diff --git a/xkb/ddxFakeMtn.c b/xkb/ddxFakeMtn.c -deleted file mode 100644 -index b383716..0000000 ---- a/xkb/ddxFakeMtn.c -+++ /dev/null -@@ -1,64 +0,0 @@ --/************************************************************ --Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc. -- --Permission to use, copy, modify, and distribute this --software and its documentation for any purpose and without --fee is hereby granted, provided that the above copyright --notice appear in all copies and that both that copyright --notice and this permission notice appear in supporting --documentation, and that the name of Silicon Graphics not be --used in advertising or publicity pertaining to distribution --of the software without specific prior written permission. --Silicon Graphics makes no representation about the suitability --of this software for any purpose. It is provided "as is" --without any express or implied warranty. -- --SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY --AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON --GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, --DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE --OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH --THE USE OR PERFORMANCE OF THIS SOFTWARE. -- --********************************************************/ -- --#ifdef HAVE_DIX_CONFIG_H --#include --#endif -- --#include "inputstr.h" --#include --#include "mi.h" -- --void --XkbDDXFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) --{ -- EventListPtr events; -- int nevents, i; -- DeviceIntPtr ptr; -- int gpe_flags = 0; -- -- if (!dev->u.master) -- ptr = dev; -- else -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- -- if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) -- gpe_flags = POINTER_ABSOLUTE; -- else -- gpe_flags = POINTER_RELATIVE; -- -- events = InitEventList(GetMaximumEventsNum()); -- OsBlockSignals(); -- nevents = GetPointerEvents(events, ptr, -- MotionNotify, 0, -- gpe_flags, 0, 2, (int[]){x, y}); -- OsReleaseSignals(); -- -- for (i = 0; i < nevents; i++) -- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -- -- FreeEventList(events, GetMaximumEventsNum()); --} -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index ab52b6a..2817e39 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -40,11 +40,15 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. - #include - #include "xkb.h" - #include -+#include "mi.h" - #define EXTENSION_EVENT_BASE 64 - - static int xkbDevicePrivateKeyIndex; - DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; - -+static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); -+static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); -+ - void - xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc, - pointer data) -@@ -479,7 +483,7 @@ int dx,dy; - dx= xkbi->mouseKeysDX; - dy= xkbi->mouseKeysDY; - } -- XkbDDXFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); -+ XkbFakePointerMotion(xkbi->device, xkbi->mouseKeysFlags,dx,dy); - return xkbi->desc->ctrls->mk_interval; - } - -@@ -507,7 +511,7 @@ Bool accel; - accel= ((pAction->ptr.flags&XkbSA_NoAcceleration)==0); - x= XkbPtrActionX(&pAction->ptr); - y= XkbPtrActionY(&pAction->ptr); -- XkbDDXFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); -+ XkbFakePointerMotion(xkbi->device, pAction->ptr.flags,x,y); - AccessXCancelRepeatKey(xkbi,keycode); - xkbi->mouseKeysAccel= accel&& - (xkbi->desc->ctrls->enabled_ctrls&XkbMouseKeysAccelMask); -@@ -554,7 +558,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - ((pAction->btn.flags&XkbSA_LockNoLock)==0)) { - xkbi->lockedPtrButtons|= (1<device, 1, button); -+ XkbFakeDeviceButton(xkbi->device, 1, button); - filter->upAction.type= XkbSA_NoAction; - } - break; -@@ -565,12 +569,12 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - if (pAction->btn.count>0) { - nClicks= pAction->btn.count; - for (i=0;idevice, 1, button); -- XkbDDXFakeDeviceButton(xkbi->device, 0, button); -+ XkbFakeDeviceButton(xkbi->device, 1, button); -+ XkbFakeDeviceButton(xkbi->device, 0, button); - } - filter->upAction.type= XkbSA_NoAction; - } -- else XkbDDXFakeDeviceButton(xkbi->device, 1, button); -+ else XkbFakeDeviceButton(xkbi->device, 1, button); - } - break; - case XkbSA_SetPtrDflt: -@@ -636,7 +640,7 @@ _XkbFilterPointerBtn( XkbSrvInfoPtr xkbi, - - /* fallthrough */ - case XkbSA_PtrBtn: -- XkbDDXFakeDeviceButton(xkbi->device, 0, button); -+ XkbFakeDeviceButton(xkbi->device, 0, button); - break; - } - filter->active = 0; -@@ -974,7 +978,7 @@ int button; - if ((pAction->devbtn.flags&XkbSA_LockNoLock)|| - BitIsOn(dev->button->down, button)) - return 0; -- XkbDDXFakeDeviceButton(dev,TRUE,button); -+ XkbFakeDeviceButton(dev,TRUE,button); - filter->upAction.type= XkbSA_NoAction; - break; - case XkbSA_DeviceBtn: -@@ -982,12 +986,12 @@ int button; - int nClicks,i; - nClicks= pAction->btn.count; - for (i=0;iupAction.type= XkbSA_NoAction; - } -- else XkbDDXFakeDeviceButton(dev,TRUE,button); -+ else XkbFakeDeviceButton(dev,TRUE,button); - break; - } - } -@@ -1006,10 +1010,10 @@ int button; - if ((filter->upAction.devbtn.flags&XkbSA_LockNoUnlock)|| - !BitIsOn(dev->button->down, button)) - return 0; -- XkbDDXFakeDeviceButton(dev,FALSE,button); -+ XkbFakeDeviceButton(dev,FALSE,button); - break; - case XkbSA_DeviceBtn: -- XkbDDXFakeDeviceButton(dev,FALSE,button); -+ XkbFakeDeviceButton(dev,FALSE,button); - break; - } - filter->active = 0; -@@ -1326,3 +1330,70 @@ xkbStateNotify sn; - return; - } - -+static void -+XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) -+{ -+ EventListPtr events; -+ int nevents, i; -+ DeviceIntPtr ptr; -+ int gpe_flags = 0; -+ -+ if (!dev->u.master) -+ ptr = dev; -+ else -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ -+ if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) -+ gpe_flags = POINTER_ABSOLUTE; -+ else -+ gpe_flags = POINTER_RELATIVE; -+ -+ events = InitEventList(GetMaximumEventsNum()); -+ OsBlockSignals(); -+ nevents = GetPointerEvents(events, ptr, -+ MotionNotify, 0, -+ gpe_flags, 0, 2, (int[]){x, y}); -+ OsReleaseSignals(); -+ -+ for (i = 0; i < nevents; i++) -+ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -+ -+ FreeEventList(events, GetMaximumEventsNum()); -+} -+ -+static void -+XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) -+{ -+ EventListPtr events; -+ int nevents, i; -+ DeviceIntPtr ptr; -+ -+ /* If dev is a slave device, and the SD is attached, do nothing. If we'd -+ * post through the attached master pointer we'd get duplicate events. -+ * -+ * if dev is a master keyboard, post through the XTEST device -+ * -+ * if dev is a floating slave, post through the device itself. -+ */ -+ -+ if (IsMaster(dev)) -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ else if (!dev->u.master) -+ ptr = dev; -+ else -+ return; -+ -+ events = InitEventList(GetMaximumEventsNum()); -+ OsBlockSignals(); -+ nevents = GetPointerEvents(events, ptr, -+ press ? ButtonPress : ButtonRelease, button, -+ 0 /* flags */, 0 /* first */, -+ 0 /* num_val */, NULL); -+ OsReleaseSignals(); -+ -+ -+ for (i = 0; i < nevents; i++) -+ mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); -+ -+ FreeEventList(events, GetMaximumEventsNum()); -+} --- -1.7.1 - -From dcb46252f959893f1934232698e2ae26390a8a5b Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Tue, 29 Jun 2010 15:24:51 +1000 -Subject: [PATCH 4/5] xkb: emulate PointerKeys events only on the master device. - -This patch replicates the behaviour for button events. Only generate a -PointerKeys motion event on the master device, not on the slave device. -Fixes the current issue of PointerKey motion events generating key events as -well. - -Signed-off-by: Peter Hutterer ---- - xkb/xkbActions.c | 9 ++++----- - 1 files changed, 4 insertions(+), 5 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 2817e39..391c375 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -496,9 +496,6 @@ _XkbFilterPointerMove( XkbSrvInfoPtr xkbi, - int x,y; - Bool accel; - -- if (xkbi->device == inputInfo.keyboard) -- return 0; -- - if (filter->keycode==0) { /* initial press */ - filter->keycode = keycode; - filter->active = 1; -@@ -1338,10 +1335,12 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) - DeviceIntPtr ptr; - int gpe_flags = 0; - -- if (!dev->u.master) -+ if (IsMaster(dev)) -+ ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ else if (!dev->u.master) - ptr = dev; - else -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -+ return; - - if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY) - gpe_flags = POINTER_ABSOLUTE; --- -1.7.1 - -From 40941fb2e9ae763add7b74850e8a0471ac754db6 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Thu, 1 Jul 2010 12:44:57 +1000 -Subject: [PATCH 5/5] xkb: release XTEST pointer buttons on physical releases. (#28808) - -If a button release event is posted for the MD pointer, post a release event -through the matching XTEST device. This way, a client who posts a button -press through the XTEST extension cannot inadvertedly lock the button. - -This behaviour is required for historical reasons, until server 1.7 the core -pointer would release a button press on physical events, regardless of the -XTEST state. Clients seem to rely on this behaviour, causing seemingly stuck -grabs. - -The merged behaviour is kept for multiple keyboard PointerKey events, if two -physical keyboards hold the button down as a result of PointerKey actions, -the button is not released until the last keyboard releases the button. - -X.Org Bug 28808 - -Signed-off-by: Peter Hutterer ---- - include/xkbsrv.h | 6 ++++++ - xkb/xkbAccessX.c | 23 ++++++++++------------- - xkb/xkbActions.c | 4 ++-- - 3 files changed, 18 insertions(+), 15 deletions(-) - -diff --git a/include/xkbsrv.h b/include/xkbsrv.h -index d1cbd1a..a96ca56 100644 ---- a/include/xkbsrv.h -+++ b/include/xkbsrv.h -@@ -923,6 +923,12 @@ extern int XkbGetEffectiveGroup( - extern void XkbMergeLockedPtrBtns( - DeviceIntPtr /* master */); - -+extern void XkbFakeDeviceButton( -+ DeviceIntPtr /* dev */, -+ int /* press */, -+ int /* button */); -+ -+ - #include "xkbfile.h" - #include "xkbrules.h" - -diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c -index e3fdc06..d3f9652 100644 ---- a/xkb/xkbAccessX.c -+++ b/xkb/xkbAccessX.c -@@ -710,19 +710,16 @@ DeviceEvent *event = &ev->device_event; - if (xkbi) { - xkbi->lockedPtrButtons&= ~(1 << (event->detail.key & 0x7)); - -- /* Merge this MD's lockedPtrButtons with the one of all -- * attached slave devices. -- * The DIX uses a merged button state for MDs, not -- * releasing buttons until the last SD has released -- * thenm. If we unconditionally clear the -- * lockedPtrButtons bit on the MD, a PointerKeys button -- * release on the SD keyboard won't generate the required fake button -- * event on the XTEST pointer, thus never processing the -- * button event in the DIX and the XTEST pointer's -- * buttons stay down - result is a stuck button. -- */ -- if (IsMaster(dev)) -- XkbMergeLockedPtrBtns(dev); -+ if (IsMaster(dev)) -+ { -+ DeviceIntPtr source; -+ int rc; -+ rc = dixLookupDevice(&source, event->sourceid, serverClient, DixWriteAccess); -+ if (rc != Success) -+ ErrorF("[xkb] bad sourceid '%d' on button release event.\n", event->sourceid); -+ else if (!IsXTestDevice(source, GetMaster(dev, MASTER_POINTER))) -+ XkbFakeDeviceButton(dev, FALSE, event->detail.key); -+ } - } - - changed |= XkbPointerButtonMask; -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 391c375..5d40199 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -46,7 +46,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. - static int xkbDevicePrivateKeyIndex; - DevPrivateKey xkbDevicePrivateKey = &xkbDevicePrivateKeyIndex; - --static void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); -+void XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button); - static void XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y); - - void -@@ -1360,7 +1360,7 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) - FreeEventList(events, GetMaximumEventsNum()); - } - --static void -+void - XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) - { - EventListPtr events; --- -1.7.1 - -From 7273832bcdc6f43e9a5a8fdbb56844466efb710a Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Fri, 23 Jul 2010 11:46:30 +1000 -Subject: [PATCH 1/3] xkb: post-fix PointerKeys button events with a DeviceChangedEvent. - -commit 14327858391ebe929b806efb53ad79e789361883 - xkb: release XTEST pointer buttons on physical releases. (#28808) -revealed a bug with the XTEST/PointerKeys interaction. - -Events resulting from PointerKeys are injected into the event processing -stream, not appended to the event queue. The events generated for the fake -button press include a DeviceChangedEvent (DCE), a raw button event and the -button event itself. The DCE causes the master to switch classes to the -attached XTEST pointer device. - -Once the fake button is processed, normal event processing continues with -events in the EQ. The master still contains the XTEST classes, causing some -events to be dropped if e.g. the number of valuators of the event in the -queue exceeds the XTEST device's number of valuators. - -Example: the EQ contains the following events, processed one-by-one, left to -right. - -[DCE (dev)][Btn down][Btn up][Motion][Motion][...] - ^ XkbFakeDeviceButton injects [DCE (XTEST)][Btn up] - -Thus the event sequence processed looks like this: - -[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][Motion][Motion][...] - -The first DCE causes the master to switch to the device. The button up event -injects a DCE to the XTEST device, causing the following Motion events to be -processed with the master still being on XTEST classes. - -This patch post-fixes the injected event sequence with a DCE to restore the -classes of the original slave device, resulting in an event sequence like -this: -[DCE (dev)][Btn down][Btn up][DCE (XTEST)][Btn up][DCE (dev)][Motion][Motion] - -Note that this is a simplified description. The event sequence injected by -the PointerKeys code is injected for the master device only and the matching -slave device that caused the injection has already finished processing on -the slave. Furthermore, the injection happens as part of the the XKB layer, -before the unwrapping of the processInputProc takes us into the DIX where -the DCE is actually handled. - -Bug reproducible with a device that reports more than 2 valuators. Simply -cause button releases on the device and wait for a "too many valuators" -warning message. - -Signed-off-by: Peter Hutterer ---- - xkb/xkbActions.c | 26 +++++++++++++++++++------- - 1 files changed, 19 insertions(+), 7 deletions(-) - -diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c -index 5d40199..2afd46d 100644 ---- a/xkb/xkbActions.c -+++ b/xkb/xkbActions.c -@@ -1365,34 +1365,46 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) - { - EventListPtr events; - int nevents, i; -- DeviceIntPtr ptr; -+ DeviceIntPtr ptr, mpointer, lastSlave; - - /* If dev is a slave device, and the SD is attached, do nothing. If we'd - * post through the attached master pointer we'd get duplicate events. - * - * if dev is a master keyboard, post through the XTEST device -- * - * if dev is a floating slave, post through the device itself. -+ * -+ * The event is injected into the event processing, not the EQ. Thus, -+ * ensure that we restore the master after the event sequence to the -+ * original set of classes. Otherwise, the master remains on the XTEST -+ * classes and drops events that don't fit into the XTEST layout (e.g. -+ * events with more than 2 valuators). -+ * To do so, we remember the lastSlave that posted through the master -+ * and add a DeviceChangedEvent to the end of the list. - */ - -- if (IsMaster(dev)) -- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER)); -- else if (!dev->u.master) -+ if (IsMaster(dev)) { -+ mpointer = GetMaster(dev, MASTER_POINTER); -+ lastSlave = mpointer->u.lastSlave; -+ ptr = GetXTestDevice(mpointer); -+ } else if (!dev->u.master) - ptr = dev; - else - return; - -- events = InitEventList(GetMaximumEventsNum()); -+ events = InitEventList(GetMaximumEventsNum() + 1); - OsBlockSignals(); - nevents = GetPointerEvents(events, ptr, - press ? ButtonPress : ButtonRelease, button, - 0 /* flags */, 0 /* first */, - 0 /* num_val */, NULL); -+ if (IsMaster(dev) && (lastSlave && lastSlave != ptr)) -+ CreateClassesChangedEvent(&events[nevents++], mpointer, -+ lastSlave, DEVCHANGE_POINTER_EVENT); - OsReleaseSignals(); - - - for (i = 0; i < nevents; i++) - mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL); - -- FreeEventList(events, GetMaximumEventsNum()); -+ FreeEventList(events, GetMaximumEventsNum() + 1); - } --- -1.7.2 - -From 817e031a996a5f5aa16fc789d7e570cc589d96cb Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Wed, 28 Jul 2010 14:24:59 +1000 -Subject: [PATCH 3/3] Xi: reset the unused classes pointer after copying - -After copying the unused_classes into the device, reset the original -pointer. Otherwise we have two pointers pointing to the same field and both -get freed on device removal. - -Some classes already have this behaviour since 51c8fd69. - -Signed-off-by: Peter Hutterer ---- - Xi/exevents.c | 6 ++++++ - 1 files changed, 6 insertions(+), 0 deletions(-) - -diff --git a/Xi/exevents.c b/Xi/exevents.c -index 566b0ef..a6160dd 100644 ---- a/Xi/exevents.c -+++ b/Xi/exevents.c -@@ -227,6 +227,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->intfeed = classes->intfeed; -+ classes->intfeed = NULL; - } - - i = &to->intfeed; -@@ -263,6 +264,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->stringfeed = classes->stringfeed; -+ classes->stringfeed = NULL; - } - - s = &to->stringfeed; -@@ -299,6 +301,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->bell = classes->bell; -+ classes->bell = NULL; - } - - b = &to->bell; -@@ -336,6 +339,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->leds = classes->leds; -+ classes->leds = NULL; - } - - l = &to->leds; -@@ -387,6 +391,7 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to) - to->kbdfeed = classes->kbdfeed; - if (!to->kbdfeed) - InitKeyboardDeviceStruct(to, NULL, NULL, NULL); -+ classes->kbdfeed = NULL; - } - - k = &to->kbdfeed; -@@ -517,6 +522,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) - classes = dixLookupPrivate(&to->devPrivates, - UnusedClassesPrivateKey); - to->ptrfeed = classes->ptrfeed; -+ classes->ptrfeed = NULL; - } - - p = &to->ptrfeed; --- -1.7.2 - diff --git a/xorg-x11-server/patches/xserver-autobind-hotplug.patch b/xorg-x11-server/patches/xserver-autobind-hotplug.patch new file mode 100644 index 000000000..7d05f27ae --- /dev/null +++ b/xorg-x11-server/patches/xserver-autobind-hotplug.patch @@ -0,0 +1,106 @@ +From 536626891b60039c0f3f9b4cd96156e9fe810f39 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Fri, 17 Aug 2012 09:49:24 +1000 +Subject: [PATCH] autobind GPUs to the screen, (v2) + +this is racy and really not what we want for hotplug going forward, +but until DE support is in GNOME its probably for the best. + +v2: fix if config or slave config is NULL +DO NOT UPSTREAM. +--- + hw/xfree86/common/xf86Init.c | 12 ++++++++++++ + hw/xfree86/common/xf86platformBus.c | 3 +++ + hw/xfree86/modes/xf86Crtc.c | 28 ++++++++++++++++++++++++++++ + 3 files changed, 43 insertions(+) + +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index d231ced..89629c1 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin) + return ret; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++static void ++xf86AutoConfigOutputDevices(void) ++{ ++ int i; ++ ++ for (i = 0; i < xf86NumGPUScreens; i++) ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); ++} ++ + static void + InstallSignalHandlers(void) + { +@@ -926,6 +936,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) + for (i = 0; i < xf86NumGPUScreens; i++) + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + ++ xf86AutoConfigOutputDevices(); ++ + xf86VGAarbiterWrapFunctions(); + if (sigio_blocked) + OsReleaseSIGIO(); +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index a73aea2..3810076 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -387,6 +387,8 @@ xf86platformProbeDev(DriverPtr drvp) + return foundScreen; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++ + int + xf86platformAddDevice(int index) + { +@@ -446,6 +448,7 @@ xf86platformAddDevice(int index) + + /* attach unbound to 0 protocol screen */ + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); + + return 0; + } +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 8f05c53..ba84e6b 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -3321,3 +3321,31 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) + crtc->x = crtc->y = 0; + } + } ++ ++ ++void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master) ++{ ++ RRProviderPtr master_provider; ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master); ++ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ ++ if (!config || !slave_config) ++ return; ++ ++ master_provider = config->randr_provider; ++ ++ if ((master->capabilities & RR_Capability_SinkOffload) && ++ pScrn->capabilities & RR_Capability_SourceOffload) { ++ /* source offload */ ++ ++ DetachUnboundGPU(pScrn->pScreen); ++ AttachOffloadGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->offload_sink = master_provider; ++ } else if ((master->capabilities & RR_Capability_SourceOutput) && ++ pScrn->capabilities & RR_Capability_SinkOutput) { ++ /* sink offload */ ++ DetachUnboundGPU(pScrn->pScreen); ++ AttachOutputGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->output_source = master_provider; ++ } ++} +-- +1.7.10.2 + diff --git a/xorg-x11-server/xorg-x11-server.nm b/xorg-x11-server/xorg-x11-server.nm index bc14fa529..f2d933c4e 100644 --- a/xorg-x11-server/xorg-x11-server.nm +++ b/xorg-x11-server/xorg-x11-server.nm @@ -4,8 +4,8 @@ ############################################################################### name = xorg-x11-server -version = 1.8.2 -release = 7 +version = 1.13.2 +release = 1 maintainer = Stefan Schantl groups = X/Server @@ -20,8 +20,9 @@ description upon. end -sources_dl = http://ftp.x.org/pub/individual/xserver/ -sources = xorg-server-%{version}.tar.bz2 +thisapp = xorg-server-%{version} + +source_dl = http://ftp.x.org/pub/individual/xserver/ build requires @@ -47,29 +48,25 @@ build libudev-devel libxcb-devel libxkbfile-devel - mesa-devel + mesa-devel >= 9.0.2 openssl-devel pixman-devel pkg-config xorg-x11-font-utils-devel xorg-x11-util-macros - xorg-x11-proto-devel + xorg-x11-proto-devel >= 7.7 xorg-x11-xtrans-devel end - DIR_APP = %{DIR_SRC}/xorg-server-%{version} - CFLAGS += -Wstrict-overflow -rdynamic configure_options += \ --enable-xvfb \ - --enable-xsdl \ --enable-xfake \ --enable-xfbdev \ --enable-xorg \ --disable-static \ --disable-xnest \ - --disable-xdmx \ --disable-xephyr \ --with-pic \ --enable-maintainer-mode \ @@ -100,7 +97,6 @@ build -e "s/^CCASFLAGS.*/& -Wl,-z,lazy/" \ \ hw/xfree86/dixmods/Makefile \ - hw/xfree86/dixmods/extmod/Makefile \ hw/xfree86/dri/Makefile \ hw/xfree86/dri2/Makefile \ hw/xfree86/exa/Makefile \ @@ -110,7 +106,6 @@ build hw/xfree86/shadowfb/Makefile \ hw/xfree86/vbe/Makefile \ hw/xfree86/vgahw/Makefile \ - hw/xfree86/xaa/Makefile end make_install_targets += \ @@ -133,10 +128,21 @@ end packages package %{name} requires - mesa pixman udev xkeyboard-config + end + + recommends + xorg-x11-drv-ati + xorg-x11-drv-evdev + xorg-x11-drv-intel + xorg-x11-drv-keyboard + xorg-x11-drv-modesetting + xorg-x11-drv-mouse + xorg-x11-drv-nouveau + xorg-x11-drv-vesa + xorg-x11-drv-vmware xorg-x11-fonts xorg-x11-font-utils xorg-x11-xkb-utils