+++ /dev/null
-From 1766352059d0db67bff3f7dd0820563a30f54858 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Thu, 18 Jun 2009 16:56:41 +1000
-Subject: [PATCH] displayfd hack
-
----
- dix/globals.c | 1 +
- include/opaque.h | 1 +
- os/connection.c | 72 ++++++++++++++++++++++++++++++++++++-----------------
- os/utils.c | 11 ++++++++
- 4 files changed, 62 insertions(+), 23 deletions(-)
-
-diff --git a/dix/globals.c b/dix/globals.c
-index 907a5e8..c1e64d3 100644
---- a/dix/globals.c
-+++ b/dix/globals.c
-@@ -135,6 +135,7 @@ int defaultColorVisualClass = -1;
- int monitorResolution = 0;
-
- char *display;
-+int displayfd;
- char *ConnectionInfo;
-
- CARD32 TimeOutValue = DEFAULT_TIMEOUT * MILLI_PER_SECOND;
-diff --git a/include/opaque.h b/include/opaque.h
-index fcc8c95..2a08e2d 100644
---- a/include/opaque.h
-+++ b/include/opaque.h
-@@ -50,6 +50,7 @@ extern _X_EXPORT int ScreenSaverAllowExposures;
- extern _X_EXPORT int defaultScreenSaverBlanking;
- extern _X_EXPORT int defaultScreenSaverAllowExposures;
- extern _X_EXPORT char *display;
-+extern _X_EXPORT int displayfd;
-
- extern _X_EXPORT int defaultBackingStore;
- extern _X_EXPORT Bool disableBackingStore;
-diff --git a/os/connection.c b/os/connection.c
-index 0c72b67..05d95c4 100644
---- a/os/connection.c
-+++ b/os/connection.c
-@@ -146,6 +146,7 @@ Bool NewOutputPending; /* not yet attempted to write some new output */
- Bool AnyClientsWriteBlocked; /* true if some client blocked on write */
-
- static Bool RunFromSmartParent; /* send SIGUSR1 to parent process */
-+static char dynamic_display[7];
- Bool PartialNetwork; /* continue even if unable to bind all addrs */
- static Pid_t ParentProcess;
-
-@@ -357,9 +358,23 @@ NotifyParentProcess(void)
- kill (ParentProcess, SIGUSR1);
- }
- }
-+ if (dynamic_display[0])
-+ write(displayfd, dynamic_display, strlen(dynamic_display));
- #endif
- }
-
-+static Bool
-+TryCreateSocket(int num, int *partial)
-+{
-+ char port[20];
-+
-+ sprintf(port, "%d", num);
-+
-+ return _XSERVTransMakeAllCOTSServerListeners(port, partial,
-+ &ListenTransCount,
-+ &ListenTransConns);
-+}
-+
- /*****************
- * CreateWellKnownSockets
- * At initialization, create the sockets to listen on for new clients.
-@@ -370,7 +385,6 @@ CreateWellKnownSockets(void)
- {
- int i;
- int partial;
-- char port[20];
-
- FD_ZERO(&AllSockets);
- FD_ZERO(&AllClients);
-@@ -385,32 +399,44 @@ CreateWellKnownSockets(void)
-
- FD_ZERO (&WellKnownConnections);
-
-- sprintf (port, "%d", atoi (display));
--
-- if ((_XSERVTransMakeAllCOTSServerListeners (port, &partial,
-- &ListenTransCount, &ListenTransConns) >= 0) &&
-- (ListenTransCount >= 1))
-+ if (display)
- {
-- if (!PartialNetwork && partial)
-- {
-- FatalError ("Failed to establish all listening sockets");
-- }
-- else
-+ if (TryCreateSocket(atoi(display), &partial) &&
-+ (ListenTransCount >= 1))
-+ if (!PartialNetwork && partial)
-+ FatalError ("Failed to establish all listening sockets");
-+ }
-+ else /* -displayfd */
-+ {
-+ Bool found = 0;
-+ for (i = 0; i < 65535 - 1024; i++)
- {
-- ListenTransFds = xalloc (ListenTransCount * sizeof (int));
--
-- for (i = 0; i < ListenTransCount; i++)
-+ if (!TryCreateSocket(i, &partial) && !partial)
- {
-- int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]);
--
-- ListenTransFds[i] = fd;
-- FD_SET (fd, &WellKnownConnections);
--
-- if (!_XSERVTransIsLocal (ListenTransConns[i]))
-- {
-- DefineSelf (fd);
-- }
-+ found = 1;
-+ break;
- }
-+ else
-+ CloseWellKnownConnections();
-+ }
-+ if (!found)
-+ FatalError("Failed to find a socket to listen on");
-+ sprintf(dynamic_display, "%d\n", i);
-+ display = dynamic_display;
-+ }
-+
-+ ListenTransFds = xalloc (ListenTransCount * sizeof (int));
-+
-+ for (i = 0; i < ListenTransCount; i++)
-+ {
-+ int fd = _XSERVTransGetConnectionNumber (ListenTransConns[i]);
-+
-+ ListenTransFds[i] = fd;
-+ FD_SET (fd, &WellKnownConnections);
-+
-+ if (!_XSERVTransIsLocal (ListenTransConns[i]))
-+ {
-+ DefineSelf (fd);
- }
- }
-
-diff --git a/os/utils.c b/os/utils.c
-index 7bfdf8b..37a93b1 100644
---- a/os/utils.c
-+++ b/os/utils.c
-@@ -678,6 +678,17 @@ ProcessCommandLine(int argc, char *argv[])
- else
- UseMsg();
- }
-+ else if (strcmp(argv[i], "-displayfd") == 0)
-+ {
-+ if (++i < argc)
-+ {
-+ displayfd = atoi(argv[i]);
-+ display = NULL;
-+ nolock = TRUE;
-+ }
-+ else
-+ UseMsg();
-+ }
- #ifdef DPMSExtension
- else if ( strcmp( argv[i], "dpms") == 0)
- /* ignored for compatibility */ ;
---
-1.6.3.rc1.2.g0164.dirty
-
+++ /dev/null
-From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001
-From: Fedora X Ninjas <x@fedoraproject.org>
-Date: Tue, 16 Feb 2010 11:38:17 +1000
-Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs
-
-Also, don't treat DRI setup failure as an error for nouveau.
----
- glx/glxdri.c | 7 +++++--
- glx/glxdri2.c | 7 +++++--
- hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++-
- 3 files changed, 28 insertions(+), 5 deletions(-)
-
-diff --git a/glx/glxdri.c b/glx/glxdri.c
-index 21e44d1..30b820c 100644
---- a/glx/glxdri.c
-+++ b/glx/glxdri.c
-@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
- const __DRIconfig **driConfigs;
- const __DRIextension **extensions;
- int i;
-+ int from = X_ERROR;
-
- if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
- !DRIQueryDirectRenderingCapable(pScreen, &isCapable) ||
-@@ -1047,7 +1048,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
-
- screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
- if (screen->driver == NULL) {
-- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
-+ if (!strcmp(driverName, "nouveau"))
-+ from = X_INFO;
-+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
- filename, dlerror());
- goto handle_error;
- }
-@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
-
- xfree(screen);
-
-- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
-+ LogMessage(from, "AIGLX: reverting to software rendering\n");
-
- return NULL;
- }
-diff --git a/glx/glxdri2.c b/glx/glxdri2.c
-index 0f998de..a244809 100644
---- a/glx/glxdri2.c
-+++ b/glx/glxdri2.c
-@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
- const __DRIextension **extensions;
- const __DRIconfig **driConfigs;
- int i;
-+ int from = X_ERROR;
-
- screen = xcalloc(1, sizeof *screen);
- if (screen == NULL)
-@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
-
- screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
- if (screen->driver == NULL) {
-- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
-+ if (!strcmp(driverName, "nouveau"))
-+ from = X_INFO;
-+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
- filename, dlerror());
- goto handle_error;
- }
-@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
-
- xfree(screen);
-
-- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
-+ LogMessage(from, "AIGLX: reverting to software rendering\n");
-
- return NULL;
- }
-diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
-index 7f4ada8..d964c6c 100644
---- a/hw/xfree86/common/xf86AutoConfig.c
-+++ b/hw/xfree86/common/xf86AutoConfig.c
-@@ -192,7 +192,24 @@ videoPtrToDriverList(struct pci_device *dev,
- break;
- case 0x102b: driverList[0] = "mga"; break;
- case 0x10c8: driverList[0] = "neomagic"; break;
-- case 0x10de: case 0x12d2: driverList[0] = "nv"; break;
-+ case 0x10de: case 0x12d2:
-+ switch (dev->device_id) {
-+ /* NV1 */
-+ case 0x0008:
-+ case 0x0009:
-+ driverList[0] = "vesa";
-+ break;
-+ /* NV3 */
-+ case 0x0018:
-+ case 0x0019:
-+ driverList[0] = "nv";
-+ break;
-+ default:
-+ driverList[0] = "nouveau";
-+ driverList[1] = "nv";
-+ break;
-+ }
-+ break;
- case 0x1106: driverList[0] = "openchrome"; break;
- case 0x1b36: driverList[0] = "qxl"; break;
- case 0x1163: driverList[0] = "rendition"; break;
---
-1.6.5.2
-