diff --git a/commit-29e0e18.diff b/commit-29e0e18.diff new file mode 100644 index 0000000..0eebfd3 --- /dev/null +++ b/commit-29e0e18.diff @@ -0,0 +1,26 @@ +commit 29e0e180729a4f0cc020985a4de4c8bc4b9c7f5f +Author: Keith Packard +Date: Mon Oct 22 13:38:16 2007 -0700 + + Leave hardware-specified preferred modes alone when user preference exists. + + Instead of removing the preference bit marking the hardware declared mode + preference, leave it in place and just move the user preferred mode to the + front of the list while marking it with the USERPREF bit which will cause it + to be selected by the initial mode selection code. + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 0a48d5b..bb416fd 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -1417,9 +1417,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) + output->probed_modes = mode; + } + mode->type |= (M_T_PREFERRED|M_T_USERPREF); ++ break; + } +- else +- mode->type &= ~M_T_PREFERRED; + } + } + diff --git a/commit-feac075.diff b/commit-feac075.diff new file mode 100644 index 0000000..cc6b10d --- /dev/null +++ b/commit-feac075.diff @@ -0,0 +1,130 @@ +commit feac0759522cbdc3e61ccfa373df735903c5cb27 +Author: Keith Packard +Date: Wed Oct 17 11:42:28 2007 +0800 + + Make config file preferred mode override monitor preferred mode. + + Add a new even-more-preferred bit to each mode which is used to make config + file preferences selected instead of the monitor preferred mode. + +diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h +index 0365ddd..af98b4f 100644 +--- a/hw/xfree86/common/xf86str.h ++++ b/hw/xfree86/common/xf86str.h +@@ -142,6 +142,7 @@ typedef enum { + # define M_T_DEFAULT 0x10 /* (VESA) default modes */ + # define M_T_USERDEF 0x20 /* One of the modes from the config file */ + # define M_T_DRIVER 0x40 /* Supplied by the driver (EDID, etc) */ ++# define M_T_USERPREF 0x80 /* mode preferred by the user config */ + + /* Video mode */ + typedef struct _DisplayModeRec { +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index f589b5a..0a48d5b 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -711,7 +711,8 @@ xf86DefaultMode (xf86OutputPtr output, int width, int height) + for (mode = output->probed_modes; mode; mode = mode->next) + { + int dpi; +- int preferred = (mode->type & M_T_PREFERRED) != 0; ++ int preferred = (((mode->type & M_T_PREFERRED) != 0) + ++ ((mode->type & M_T_USERPREF) != 0)); + int diff; + + if (xf86ModeWidth (mode, output->initial_rotation) > width || +@@ -1415,7 +1416,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY) + mode->prev = NULL; + output->probed_modes = mode; + } +- mode->type |= M_T_PREFERRED; ++ mode->type |= (M_T_PREFERRED|M_T_USERPREF); + } + else + mode->type &= ~M_T_PREFERRED; +@@ -1532,6 +1533,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); + int o, c; + DisplayModePtr target_mode = NULL; ++ int target_preferred = 0; + Rotation target_rotation = RR_Rotate_0; + xf86CrtcPtr *crtcs; + DisplayModePtr *modes; +@@ -1572,43 +1574,34 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + } + + /* +- * Let outputs with preferred modes drive screen size ++ * User preferred > preferred > other modes + */ + for (o = 0; o < config->num_output; o++) + { +- xf86OutputPtr output = config->output[o]; ++ xf86OutputPtr output = config->output[o]; ++ DisplayModePtr default_mode; ++ int default_preferred; + +- if (enabled[o] && +- xf86OutputHasPreferredMode (output, width, height)) ++ if (!enabled[o]) ++ continue; ++ default_mode = xf86DefaultMode (output, width, height); ++ if (!default_mode) ++ continue; ++ default_preferred = (((default_mode->type & M_T_PREFERRED) != 0) + ++ ((default_mode->type & M_T_USERPREF) != 0)); ++ if (default_preferred > target_preferred || !target_mode) + { +- target_mode = xf86DefaultMode (output, width, height); ++ target_mode = default_mode; ++ target_preferred = default_preferred; + target_rotation = output->initial_rotation; +- if (target_mode) +- { +- modes[o] = target_mode; +- config->compat_output = o; +- break; +- } +- } +- } +- if (!target_mode) +- { +- for (o = 0; o < config->num_output; o++) +- { +- xf86OutputPtr output = config->output[o]; +- if (enabled[o]) +- { +- target_mode = xf86DefaultMode (output, width, height); +- target_rotation = output->initial_rotation; +- if (target_mode) +- { +- modes[o] = target_mode; +- config->compat_output = o; +- break; +- } +- } ++ config->compat_output = o; + } + } ++ if (target_mode) ++ modes[config->compat_output] = target_mode; ++ /* ++ * Fill in other output modes ++ */ + for (o = 0; o < config->num_output; o++) + { + xf86OutputPtr output = config->output[o]; +diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h +index 9693e12..4c843cd 100644 +--- a/hw/xfree86/modes/xf86Crtc.h ++++ b/hw/xfree86/modes/xf86Crtc.h +@@ -39,6 +39,9 @@ + #ifndef M_T_DRIVER + #define M_T_DRIVER 0x40 + #endif ++#ifndef M_T_USERPREF ++#define M_T_USERPREF 0x80 ++#endif + #ifndef HARDWARE_CURSOR_ARGB + #define HARDWARE_CURSOR_ARGB 0x00004000 + #endif diff --git a/ia64linuxPciInit.diff b/ia64linuxPciInit.diff new file mode 100644 index 0000000..be9b469 --- /dev/null +++ b/ia64linuxPciInit.diff @@ -0,0 +1,14 @@ +--- hw/xfree86/os-support/bus/linuxPci.c ++++ hw/xfree86/os-support/bus/linuxPci.c +@@ -999,7 +999,10 @@ ia64linuxPciInit() + struct stat st; + + linuxPciInit(); +- ++ ++ /* Need space for fake devices. */ ++ xf86MaxPciDevs = MAX_PCI_DEVICES; ++ + if (!stat("/proc/sgi_sn/licenseID", &st) && pciNumBuses) { + /* Be a little paranoid here and only use this code for Altix systems. + * It is generic, so it should work on any system, but depends on diff --git a/preferred_mode-fix.diff b/preferred_mode-fix.diff deleted file mode 100644 index d4383a0..0000000 --- a/preferred_mode-fix.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c.deadloop 2007-10-01 11:46:05.000000000 +0200 -+++ xorg-server-1.3.0.0/hw/xfree86/modes/xf86Crtc.c 2007-10-01 11:53:35.000000000 +0200 -@@ -1415,9 +1415,10 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, - - if (preferred_mode) - { -+ int found = 0; - for (mode = output->probed_modes; mode; mode = mode->next) - { -- if (!strcmp (preferred_mode, mode->name)) -+ if (!found && !strcmp (preferred_mode, mode->name)) - { - if (mode != output->probed_modes) - { -@@ -1431,6 +1432,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, - output->probed_modes = mode; - } - mode->type |= M_T_PREFERRED; -+ found = 1; - } - else - mode->type &= ~M_T_PREFERRED; diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 7deeb17..1e782e3 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Thu Nov 15 22:00:47 CET 2007 - sndirsch@suse.de + +- commit-29e0e18.diff + * Make config file preferred mode override monitor preferred + mode. +- commit-feac075.diff + * Leave hardware-specified preferred modes alone when user + preference exists. +- obsoletes preferred_mode-fix.diff + +------------------------------------------------------------------- +Thu Nov 15 15:47:36 CET 2007 - sndirsch@suse.de + +- added xorg-x11-fonts-core/xorg-x11 to Requires (Bug #341312) + +------------------------------------------------------------------- +Wed Nov 14 17:18:00 CET 2007 - schwab@suse.de + +- ia64linuxPciInit: allocate extra space for fake devices. + ------------------------------------------------------------------- Sat Nov 10 20:09:23 CET 2007 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 511bd30..859b928 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -21,11 +21,11 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.3 -Release: 25 +Release: 27 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 -Requires: pkgconfig xorg-x11-fonts-core +Requires: pkgconfig xorg-x11-fonts-core xorg-x11 %if %suse_version > 1010 %ifnarch s390 s390x Requires: xorg-x11-driver-input xorg-x11-driver-video @@ -86,7 +86,9 @@ Patch77: fbdevhw.diff Patch79: edit_data_sanity_check.diff Patch80: pixman.diff Patch81: xserver-1.3.0-xkb-and-loathing.patch -Patch82: preferred_mode-fix.diff +Patch83: ia64linuxPciInit.diff +Patch84: commit-feac075.diff +Patch85: commit-29e0e18.diff %description This package contains the X.Org Server. @@ -98,7 +100,7 @@ Summary: Additional Xservers (Xdmx, Xephyr, Xnest, Xvfb) Group: System/X11/Servers/XF86_4 Provides: xorg-x11-Xnest xorg-x11-Xvfb xorg-x11-server:/usr/bin/Xdmx Obsoletes: xorg-x11-Xnest xorg-x11-Xvfb -Requires: xorg-x11-fonts-core +Requires: xorg-x11-fonts-core xorg-x11 AutoReqProv: on %description extra @@ -125,6 +127,7 @@ This package contains the X.Org Server SDK. %package -n xorg-x11-Xvnc Summary: VNC Server for the X Window System Group: System/X11/Servers/XF86_4 +Requires: xorg-x11-fonts-core xorg-x11 Provides: vnc:/usr/X11R6/bin/Xvnc XFree86-Xvnc Obsoletes: XFree86-Xvnc %ifarch ia64 @@ -198,7 +201,9 @@ popd %patch79 -p1 %patch80 %patch81 -p1 -%patch82 -p1 +%patch83 +%patch84 -p1 +%patch85 -p1 %build pushd xorg-docs-* @@ -527,6 +532,18 @@ exit 0 /usr/bin/Xvnc %endif %changelog +* Thu Nov 15 2007 - sndirsch@suse.de +- commit-29e0e18.diff + * Make config file preferred mode override monitor preferred + mode. +- commit-feac075.diff + * Leave hardware-specified preferred modes alone when user + preference exists. +- obsoletes preferred_mode-fix.diff +* Thu Nov 15 2007 - sndirsch@suse.de +- added xorg-x11-fonts-core/xorg-x11 to Requires (Bug #341312) +* Wed Nov 14 2007 - schwab@suse.de +- ia64linuxPciInit: allocate extra space for fake devices. * Sat Nov 10 2007 - sndirsch@suse.de - updated to Mesa 7.0.2 (final) sources * Wed Oct 31 2007 - sndirsch@suse.de