]> git.ipfire.org Git - people/ms/ipfire-3.x.git/commitdiff
xorg-x11-server: Update to 1.13.2.
authorStefan Schantl <stefan.schantl@ipfire.org>
Tue, 5 Feb 2013 19:18:49 +0000 (20:18 +0100)
committerStefan Schantl <stefan.schantl@ipfire.org>
Tue, 5 Feb 2013 19:18:49 +0000 (20:18 +0100)
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.

20 files changed:
xorg-x11-server/patches/xserver-1.12-Xext-fix-selinux-build-failure.patch [new file with mode: 0644]
xorg-x11-server/patches/xserver-1.4.99-pic-libxf86config.patch [deleted file]
xorg-x11-server/patches/xserver-1.4.99-ssh-isnt-local.patch
xorg-x11-server/patches/xserver-1.5.0-bg-none-root.patch [deleted file]
xorg-x11-server/patches/xserver-1.5.0-projector-fb-size.patch [deleted file]
xorg-x11-server/patches/xserver-1.5.1-mode-debug.patch [deleted file]
xorg-x11-server/patches/xserver-1.6.0-less-acpi-brokenness.patch
xorg-x11-server/patches/xserver-1.6.99-default-modes.patch [deleted file]
xorg-x11-server/patches/xserver-1.6.99-randr-error-debugging.patch [deleted file]
xorg-x11-server/patches/xserver-1.6.99-right-of.patch
xorg-x11-server/patches/xserver-1.7.0-randr-gamma-restore.patch [deleted file]
xorg-x11-server/patches/xserver-1.7.1-gamma-kdm-fix.patch [deleted file]
xorg-x11-server/patches/xserver-1.7.1-multilib.patch [deleted file]
xorg-x11-server/patches/xserver-1.8-disable-vboxvideo.patch [deleted file]
xorg-x11-server/patches/xserver-1.8-no-connected-outputs.patch [deleted file]
xorg-x11-server/patches/xserver-1.8-randr-initial.patch [deleted file]
xorg-x11-server/patches/xserver-1.8-udev-warning.patch [deleted file]
xorg-x11-server/patches/xserver-1.8.2-XTEST-PointerKeys-fixes.patch [deleted file]
xorg-x11-server/patches/xserver-autobind-hotplug.patch [new file with mode: 0644]
xorg-x11-server/xorg-x11-server.nm

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 (file)
index 0000000..a48a013
--- /dev/null
@@ -0,0 +1,52 @@
+From 5d16c39108c72b08478b6bd548494d6c675495ee Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+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.<anonymous>') [-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 <peter.hutterer@who-t.net>
+---
+ 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 (file)
index d040900..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From 04bd8e2fa6be557f58a0e417b0f3befc56f5ef59 Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <x@fedoraproject.org>
-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
-
index d532fe1d6b8f2416065389e8560b5d4b73baaade..2d33bed9410a9ce419a97269e596992569d1866d 100644 (file)
@@ -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 <ajax@redhat.com>
 Date: Mon, 10 Dec 2007 11:26:57 -0500
 Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients.
 
 ---
- Xext/shm.c |   1+++++++++++++++
- 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 (file)
index ae65d0b..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <x@fedoraproject.org>
-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 (file)
index c6178b8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001
-From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= <sandmann@redhat.com>
-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 (file)
index 11fe5ad..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-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
-
index cc80e6cef4e11713b7953651abef78fae78e7ec4..b42c2d7c869e3b83c0abf0f60186b80c5aba8beb 100644 (file)
@@ -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 <ajax@redhat.com>
-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 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 (file)
index 0f0ba27..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From ca85ebddd804305322014c6a71b4122a56c5e634 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-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 (file)
index 0e7a6ba..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From 16be69ef1e2ea9f19cd596b99b5ede7567d374b8 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-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
-
index 06c11831641b7cc59e8af2f9f0daf7fe4359e6dc..bf7e7c87f21593bdcf2badb790e9bdb516089fa0 100644 (file)
@@ -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 <ajax@redhat.com>
 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 (file)
index 5206141..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From 18d2bd8cb513a0436739916620532247f13dbf03 Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <x@fedoraproject.org>
-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 (file)
index c62837e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001
-From: Bill Nottingham <notting@redhat.com>
-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 (file)
index 6435999..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-From 6d9585ba6a5784328de479c6b648d7b7d6cec64c Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-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 (file)
index 60c0dce..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1f315578bf759c85261b1f2295efbf0dba852f73 Mon Sep 17 00:00:00 2001
-From: Adam Williamson <adamwill@shaw.ca>
-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 (file)
index 3ee8542..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-From b27f93c6dbe0a6e416db2c65738e996c70a403c1 Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <airlied@redhat.com>
-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 <airlied@redhat.com>
----
- 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 (file)
index 2db8a8c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From f22b6f8a5899f125de63738e69aaddc2dd0a5d0a Mon Sep 17 00:00:00 2001
-From: Ben Skeggs <bskeggs@redhat.com>
-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 <bskeggs@redhat.com>
----
- 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 (file)
index 93071fd..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <x@fedoraproject.org>
-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 <x@fedoraproject.org>
----
- 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 (file)
index ece8a6c..0000000
+++ /dev/null
@@ -1,909 +0,0 @@
-From deab888bb3bb2a56963da50ff551bd66fbd858a1 Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
----
- 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<<button);
-+
-+              /* fallthrough */
-           case XkbSA_PtrBtn:
-               XkbDDXFakeDeviceButton(xkbi->device, 0, button);
-               break;
--- 
-1.7.1
-
-From 50b6311dbd2594acc36d6856fdde8623459f1374 Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
----
- 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<<button);
-+              if (IsMaster(xkbi->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 <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
-Reviewed-by: Daniel Stone <daniel@fooishbar.org>
-Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
----
- 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 <dix-config.h>
--#endif
--
--#include "inputstr.h"
--#include <xkbsrv.h>
--#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 <dix-config.h>
--#endif
--
--#include "inputstr.h"
--#include <xkbsrv.h>
--#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 <xkbsrv.h>
- #include "xkb.h"
- #include <ctype.h>
-+#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<<button);
-                   AccessXCancelRepeatKey(xkbi,keycode);
--                  XkbDDXFakeDeviceButton(xkbi->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;i<nClicks;i++) {
--                          XkbDDXFakeDeviceButton(xkbi->device, 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;i<nClicks;i++) {
--                      XkbDDXFakeDeviceButton(dev,TRUE,button);
--                      XkbDDXFakeDeviceButton(dev,FALSE,button);
-+                      XkbFakeDeviceButton(dev,TRUE,button);
-+                      XkbFakeDeviceButton(dev,FALSE,button);
-                   }
-                   filter->upAction.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 <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
----
- 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 <peter.hutterer@who-t.net>
-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 <http://bugs.freedesktop.org/show_bug.cgi?id=28808>
-
-Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
----
- 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 <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
----
- 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 <peter.hutterer@who-t.net>
-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 <peter.hutterer@who-t.net>
----
- 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 (file)
index 0000000..7d05f27
--- /dev/null
@@ -0,0 +1,106 @@
+From 536626891b60039c0f3f9b4cd96156e9fe810f39 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+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
+
index bc14fa5290b9bc19582000339858c0ebea2609e3..f2d933c4ea8079408a99795ea037f058c2ca70fc 100644 (file)
@@ -4,8 +4,8 @@
 ###############################################################################
 
 name       = xorg-x11-server
-version    = 1.8.2
-release    = 7
+version    = 1.13.2
+release    = 1
 
 maintainer = Stefan Schantl <stefan.schantl@ipfire.org>
 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