Hello community,
here is the log from the commit of package xorg-x11-server for openSUSE:Factory
checked in at Fri Mar 26 16:22:03 CET 2010.
--------
--- xorg-x11-server/xorg-x11-server.changes 2010-03-24 17:06:51.000000000 +0100
+++ xorg-x11-server/xorg-x11-server.changes 2010-03-26 16:21:33.871847000 +0100
@@ -1,0 +2,7 @@
+Fri Mar 26 02:45:15 CET 2010 - sndirsch@suse.de
+
+- xorg-server-walk_drivers.diff:
+ * updated patch working more cleanly, fixed coding style, added
+ comments (Rüdiger Oertel)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.mDUPHq/_old 2010-03-26 16:21:47.000000000 +0100
+++ /var/tmp/diff_new_pack.mDUPHq/_new 2010-03-26 16:21:47.000000000 +0100
@@ -35,7 +35,7 @@
Url: http://xorg.freedesktop.org/
%define EXPERIMENTAL 0
Version: 7.5_%{dirsuffix}
-Release: 1
+Release: 2
License: GPLv2+ ; MIT License (or similar)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Group: System/X11/Servers/XF86_4
@@ -229,7 +229,7 @@
%patch132 -p1
%patch143 -p0
%patch145 -p0
-%patch146 -p0
+%patch146 -p1
%patch147 -p1
%patch162 -p1
%if %moblin
++++++ xorg-server-walk_drivers.diff ++++++
--- /var/tmp/diff_new_pack.mDUPHq/_old 2010-03-26 16:21:48.000000000 +0100
+++ /var/tmp/diff_new_pack.mDUPHq/_new 2010-03-26 16:21:48.000000000 +0100
@@ -1,97 +1,123 @@
---- hw/xfree86/common/xf86AutoConfig.c
-+++ hw/xfree86/common/xf86AutoConfig.c
-@@ -539,34 +541,13 @@
- }
+commit 4da6cffa8b6169595ea447cc53dfab857c04db04
+Author: h_root
+Date: Thu Mar 25 18:32:04 2010 +0100
+
+ when doing driver autoconfiguration with some parts of the config
+ file present but no driver set (e.g. only input configuration)
+ fix the case that we may have multiple drivers to try.
+
+ create a screen section for each driver and let them be tried
+ in a row
+
+diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c
+index 7f4ada8..56f7deb 100644
+--- a/hw/xfree86/common/xf86AutoConfig.c
++++ b/hw/xfree86/common/xf86AutoConfig.c
+@@ -546,10 +546,41 @@ chooseVideoDriver(void)
+ return chosen_driver;
}
--static char*
--chooseVideoDriver(void)
--{
-- char *chosen_driver = NULL;
-- int i;
-- char *matches[20]; /* If we have more than 20 drivers we're in trouble */
--
-- listPossibleVideoDrivers(matches, 20);
--
-- /* TODO Handle multiple drivers claiming to support the same PCI ID */
-- chosen_driver = matches[0];
--
-- xf86Msg(X_DEFAULT, "Matched %s for the autoconfigured driver\n",
-- chosen_driver);
--
-- for (i = 0; matches[i] ; i++) {
-- if (matches[i] != chosen_driver) {
-- xfree(matches[i]);
-- }
-- }
--
-- return chosen_driver;
--}
--
++
++/* copy a screen section and enter the desired driver
++ * and insert it at i in the list of screens */
++static Bool
++copyScreen(confScreenPtr oscreen, GDevPtr odev, int i, char *driver)
++{
++ GDevPtr cptr = NULL;
++
++ xf86ConfigLayout.screens[i].screen = xnfcalloc(1, sizeof(confScreenRec));
++ if(!xf86ConfigLayout.screens[i].screen)
++ return FALSE;
++ memcpy(xf86ConfigLayout.screens[i].screen, oscreen, sizeof(confScreenRec));
++
++ cptr = xcalloc(1, sizeof(GDevRec));
++ if (!cptr)
++ return FALSE;
++ memcpy(cptr, odev, sizeof(GDevRec));
++
++ cptr->identifier = Xprintf("Autoconfigured Video Device %s", driver);
++ cptr->driver = driver;
++
++ /* now associate the new driver entry with the new screen entry */
++ xf86ConfigLayout.screens[i].screen->device = cptr;
++ cptr->myScreenSection = xf86ConfigLayout.screens[i].screen;
++
++ return TRUE;
++}
++
GDevPtr
autoConfigDevice(GDevPtr preconf_device)
{
-- GDevPtr ptr = NULL;
-+ GDevPtr ptr = NULL, cptr = NULL;
+ GDevPtr ptr = NULL;
+ char *matches[20]; /* If we have more than 20 drivers we're in trouble */
+ int num_matches = 0, num_screens = 0, i;
+ screenLayoutPtr slp;
if (!xf86configptr) {
return NULL;
-@@ -589,14 +571,49 @@
+@@ -573,14 +604,59 @@ autoConfigDevice(GDevPtr preconf_device)
ptr->driver = NULL;
}
if (!ptr->driver) {
- ptr->driver = chooseVideoDriver();
-+ listPossibleVideoDrivers(matches, 20);
-+ for (; matches[num_matches] ; num_matches++);
-+ slp = xf86ConfigLayout.screens;
-+ if (slp) {
-+ for (; slp[num_screens].screen ; num_screens++);
-+ xf86ConfigLayout.screens = xnfcalloc(1,(num_screens+num_matches+1) * sizeof(screenLayoutRec));
-+ xf86ConfigLayout.screens[0] = slp[0];
-+ }
-+ for (i=0; idriver = matches[0];
-+ if (slp && !xf86ConfigLayout.screens[0].screen->device) {
-+ xf86ConfigLayout.screens[0].screen->device = ptr;
-+ ptr->myScreenSection = xf86ConfigLayout.screens[0].screen;
-+ }
-+ } else {
-+ if (slp) {
-+ xf86ConfigLayout.screens[i].screen = xnfcalloc(1, sizeof(confScreenRec));
-+ if(!xf86ConfigLayout.screens[i].screen)
-+ return NULL;
-+ memcpy(xf86ConfigLayout.screens[i].screen, slp[0].screen, sizeof(confScreenRec));
-+ }
-+ cptr = xcalloc(1, sizeof(GDevRec));
-+ if (!cptr)
-+ return NULL;
-+ memcpy(cptr, ptr, sizeof(GDevRec));
-+ cptr->identifier = xnfcalloc(1,strlen("Autoconfigured Video Device ")+strlen(matches[i])+1);
-+ sprintf(cptr->identifier, "Autoconfigured Video Device %s", matches[i]);
-+ cptr->driver = matches[i];
-+ if (slp) {
-+ xf86ConfigLayout.screens[i].screen->device = cptr;
-+ cptr->myScreenSection = xf86ConfigLayout.screens[i].screen;
-+ }
-+ }
-+ }
-+ for (i=1;idriver = matches[0];
++ if (!xf86ConfigLayout.screens[0].screen->device) {
++ xf86ConfigLayout.screens[0].screen->device = ptr;
++ ptr->myScreenSection = xf86ConfigLayout.screens[0].screen;
++ }
++
++ /* for each other driver found, copy the first screen, insert it
++ * into the list of screens and set the driver */
++ i = 0;
++ while (i++ < num_matches) {
++ if (!copyScreen(slp[0].screen, ptr, i, matches[i]))
++ return NULL;
++ }
- /* TODO Handle multiple screen sections */
- if (xf86ConfigLayout.screens && !xf86ConfigLayout.screens->screen->device) {
- xf86ConfigLayout.screens->screen->device = ptr;
- ptr->myScreenSection = xf86ConfigLayout.screens->screen;
-- }
-+ /* TODO Handle rest of multiple screen sections */
++ /* shift the rest of the original screen list
++ * to the end of the current screen list
++ *
++ * TODO Handle rest of multiple screen sections */
++ for (i = 1; i < num_screens; i++) {
++ xf86ConfigLayout.screens[i+num_matches] = slp[i];
++ }
++ xf86ConfigLayout.screens[num_screens+num_matches-1].screen = NULL;
++ xfree(slp);
++ } else {
++ /* layout does not have any screens, not much to do */
++ ptr->driver = matches[0];
++ for (i = 1; matches[i] ; i++) {
++ if (matches[i] != matches[0]) {
++ xfree(matches[i]);
++ }
++ }
++ }
+ }
++
xf86Msg(X_DEFAULT, "Assigned the driver to the xf86ConfigLayout\n");
return ptr;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org