1
0

Accepting request 36767 from X11:XOrg

checked in (request 36767)

OBS-URL: https://build.opensuse.org/request/show/36767
OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=241
This commit is contained in:
OBS User autobuild 2010-04-02 22:12:07 +00:00 committed by Git OBS Bridge
parent 9a1abeaa10
commit cc7a14d77d
7 changed files with 133 additions and 32 deletions

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef0b2e7bca72fcfad725526cc5c78bbff541fdd193e6c723de91004a41c16f36
size 5091687

View File

@ -1,11 +0,0 @@
--- config/Makefile.am.orig 2010-04-02 11:56:16.000000000 +0200
+++ config/Makefile.am 2010-04-02 11:56:49.000000000 +0200
@@ -9,7 +9,7 @@
libconfig_la_SOURCES += udev.c
libconfig_la_LIBADD = $(UDEV_LIBS)
-xorgconfddir = $(prefix)/etc/X11/$(XF86CONFIGDIR)
+xorgconfddir = $(sysconfdir)/X11/$(XF86CONFIGDIR)
xorgconfd_DATA = 10-evdev.conf
else

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:423a8092e28affb83aa736695408e01fd4641040727f34ed6bcfae9c06018b77
size 5097035

View File

@ -0,0 +1,123 @@
commit 4da6cffa8b6169595ea447cc53dfab857c04db04
Author: h_root <root@hilbert.suse.de>
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;
}
+
+/* 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;
+ 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;
@@ -573,14 +604,59 @@ autoConfigDevice(GDevPtr preconf_device)
ptr->driver = NULL;
}
if (!ptr->driver) {
- ptr->driver = chooseVideoDriver();
- }
+ /* get all possible video drivers and count them */
+ listPossibleVideoDrivers(matches, 20);
+ for (; matches[num_matches]; num_matches++) {
+ xf86Msg(X_DEFAULT, "Matched %s as autoconfigured driver %d\n",
+ matches[num_matches], num_matches);
+ }
+
+ slp = xf86ConfigLayout.screens;
+ if (slp) {
+ /* count the number of screens and make space for
+ * a new screen for each additional possible driver
+ * minus one for the already existing first one
+ * plus one for the terminating NULL */
+ for (; slp[num_screens].screen; num_screens++);
+ xf86ConfigLayout.screens = xnfcalloc(num_screens + num_matches,
+ sizeof(screenLayoutRec));
+ xf86ConfigLayout.screens[0] = slp[0];
+
+ /* do the first match and set that for the original first screen */
+ ptr->driver = 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;
+ /* 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;

View File

@ -134,7 +134,8 @@ Index: xorg-server-1.6.3.901/Makefile.am
if XQUARTZ
XQUARTZ_SUBDIRS = xquartz
endif
@@ -33,8 +37,9 @@
@@ -32,10 +36,11 @@
$(XVFB_SUBDIRS) \
$(XNEST_SUBDIRS) \
$(DMX_SUBDIRS) \
+ $(VNC_SUBDIRS) \
@ -145,6 +146,7 @@ Index: xorg-server-1.6.3.901/Makefile.am
+DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive vnc
relink:
for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink ; done
--- xorg-server-1.7.99/hw/dmx/Makefile.am
+++ xorg-server-1.7.99/hw/dmx/Makefile.am
@@ -1,6 +1,6 @@

View File

@ -1,12 +1,3 @@
-------------------------------------------------------------------
Fri Apr 2 11:33:28 CEST 2010 - sndirsch@suse.de
- update to 1.8
- obsoletes xorg-server-walk_drivers.diff
- adjusted xorg-server-xf4vnc.patch
- xorg-server-1.8.0.diff
* install evdev config file to the right directory
-------------------------------------------------------------------
Fri Mar 26 02:45:15 CET 2010 - sndirsch@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package xorg-x11-server (Version 7.5_1.8.0)
# spec file for package xorg-x11-server (Version 7.5_1.7.99.902)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -20,7 +20,7 @@
%define moblin 0
Name: xorg-x11-server
%define dirsuffix 1.8.0
%define dirsuffix 1.7.99.902
%define fglrx_driver_hack 0
### FIXME
%define vnc 1
@ -106,6 +106,7 @@ Patch129: bug474071-fix1.diff
Patch132: fixed-SYNC-extension-trigger-BlockHandler-test.diff
Patch143: autoconfig_fallback_fbdev_first.diff
Patch145: driver-autoconfig.diff
Patch146: xorg-server-walk_drivers.diff
Patch147: xserver-1.6.1-nouveau.patch
# Moblin
Patch162: cache-xkbcomp-output-for-fast-start-up.patch
@ -125,7 +126,6 @@ Patch200: bug534768-prefer_local_symbols.patch
Patch202: 0001-Check-harder-for-primary-PCI-device.patch
Patch203: 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
Patch204: missing_font_paths.diff
Patch205: xorg-server-1.8.0.diff
%description
This package contains the X.Org Server.
@ -229,6 +229,7 @@ popd
%patch132 -p1
%patch143 -p0
%patch145 -p0
%patch146 -p1
%patch147 -p1
%patch162 -p1
%if %moblin
@ -248,7 +249,6 @@ popd
%patch202 -p1
%patch203 -p1
%patch204 -p0
%patch205 -p0
%build
pushd xorg-docs-*
@ -553,10 +553,6 @@ exit 0
%ifnarch s390 s390x
/var/adm/fillup-templates/sysconfig.displaymanager-%name
%endif
%if %suse_version > 1120
%dir /etc/X11/xorg.conf.d
/etc/X11/xorg.conf.d/10-evdev.conf
%endif
%files extra
%defattr(-,root,root)