* Mon Apr 09 2007 Adam Jackson <ajax@redhat.com> 1.2.99.905-2

- xserver-1.3.0-pci-bus-count.patch: Allocate the PCI bus array dynamically,
  so as not to run off the end of it.
- xserver-1.3.0-mmap-failure-check.patch: Check for failure when mmap'ing
  bus memory. (#234073)
- xserver-1.3.0-rom-search.patch: Look for the sysfs ROM file in the (flat)
  /sys/bus/pci/devices tree, instead of the (bus-topological) /sys/devices,
  so we don't fail to find ROMs merely because they're behind a bridge.
- xserver-1.3.0-no-pseudocolor-composite.patch: Refuse to initialize
  Composite when Render is missing or when the root window is using
  a pseudocolor visual. (#217388)
- xserver-1.3.0-xnest-exposures.patch: Fix Motif app redraw in Xnest. (#229350)
This commit is contained in:
Adam Jackson 2007-04-09 23:09:52 +00:00
parent a61fa114cb
commit 115cc5d8ad
6 changed files with 193 additions and 51 deletions

View File

@ -9,7 +9,7 @@
Summary: X.Org X11 X server
Name: xorg-x11-server
Version: 1.2.99.905
Release: 1%{?dist}
Release: 2%{?dist}
URL: http://www.x.org
License: MIT/X11
Group: User Interface/X
@ -28,7 +28,7 @@ Patch11: xorg-x11-server-1.1.1-vt-activate-is-a-terrible-api.patch
Patch12: xorg-x11-server-1.1.1-graphics-expose.patch
Patch15: xorg-x11-server-1.1.1-automake-1.10-fixes.patch
Patch18: xorg-x11-server-1.1.1-glcore-visual-matching.patch
Patch19: xorg-x11-server-1.2.99-unbreak-domain.patch
Patch19: xserver-1.3.0-xnest-exposures.patch
# OpenGL compositing manager feature/optimization patches.
Patch100: xorg-x11-server-1.1.0-no-move-damage.patch
@ -36,6 +36,7 @@ Patch101: xorg-x11-server-1.1.0-dont-backfill-bg-none.patch
Patch105: xorg-x11-server-1.2.0-enable-composite.patch
Patch106: xorg-x11-server-1.1.1-no-composite-in-xnest.patch
Patch107: xorg-x11-server-1.1.1-offscreen-pixmaps.patch
Patch108: xserver-1.3.0-no-pseudocolor-composite.patch
# Red Hat specific tweaking, not intended for upstream
# XXX move these to the end of the list
@ -55,6 +56,12 @@ Patch2003: xserver-1.2.0-vfprintf.patch
Patch2004: xserver-1.2.0-honor-displaysize.patch
Patch2005: xserver-1.2.99.901-xephyr-crash-at-exit.patch
# assorted PCI layer shenanigans. oh the pain.
Patch2500: xorg-x11-server-1.2.99-unbreak-domain.patch
Patch2501: xserver-1.3.0-pci-bus-count.patch
Patch2502: xserver-1.3.0-mmap-failure-check.patch
Patch2503: xserver-1.3.0-rom-search.patch
%define moduledir %{_libdir}/xorg/modules
%define drimoduledir %{_libdir}/dri
%define sdkdir %{_includedir}/xorg
@ -253,13 +260,14 @@ Xserver source code needed to build VNC server (Xvnc)
%patch12 -p1 -b .graphics-expose
%patch15 -p1 -b .automake-1.10
%patch18 -p1 -b .glcore-visual
%patch19 -p1 -b .unbreak-domains
%patch19 -p1 -b .xnest-expose
%patch100 -p0 -b .no-move-damage
%patch101 -p0 -b .dont-backfill-bg-none
%patch105 -p1 -b .enable-composite
%patch106 -p1 -b .no-xnest-composite
%patch107 -p1 -b .offscreen-pixmaps
%patch108 -p1 -b .composite-paranoia
%patch1001 -p1 -b .Red-Hat-extramodes
%patch1002 -p1 -b .xephyr
@ -277,9 +285,13 @@ Xserver source code needed to build VNC server (Xvnc)
%patch2004 -p1 -b .displaysize
%patch2005 -p1 -b .xephyr-crash
%patch2500 -p1 -b .unbreak-domains
%patch2501 -p1 -b .pci-bus-count
%patch2502 -p1 -b .mmap-check
%patch2503 -p1 -b .rom-search
%build
# --disable-dependency-tracking ?
# --with-rgb-path should be superfluous now ?
# --with-pie ?
aclocal ; automake -a ; autoconf
@ -323,14 +335,12 @@ mkdir -p $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,input}
# Install the vesamodes and extramodes files to let our install/config tools
# be able to parse the same modelist as the X server uses (rhpxl).
{
mkdir -p $RPM_BUILD_ROOT%{_datadir}/xorg
for each in vesamodes extramodes ; do
install -m 0644 %{SOURCE100} $RPM_BUILD_ROOT%{_datadir}/xorg/$each
cat hw/xfree86/common/$each >> $RPM_BUILD_ROOT%{_datadir}/xorg/$each
chmod 0444 $RPM_BUILD_ROOT%{_datadir}/xorg/$each
done
}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/xorg
for each in vesamodes extramodes ; do
install -m 0644 %{SOURCE100} $RPM_BUILD_ROOT%{_datadir}/xorg/$each
cat hw/xfree86/common/$each >> $RPM_BUILD_ROOT%{_datadir}/xorg/$each
chmod 0444 $RPM_BUILD_ROOT%{_datadir}/xorg/$each
done
%endif
# Make the source package
@ -359,19 +369,18 @@ xargs tar cf - | (cd %{inst_srcdir} && tar xf -)
rm -f $RPM_BUILD_ROOT%{_bindir}/out?
rm -f $RPM_BUILD_ROOT%{_bindir}/pcitweak
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/pcitweak.1*
# Remove all libtool archives (*.la)
find $RPM_BUILD_ROOT -type f -name '*.la' | xargs rm -f -- || :
%ifarch s390 s390x
# FIXME: The following files get installed on s390/s390x and we don't
# want some of them on s390 at all, and others should be in a -common
# subpackage, but it's not worth doing that for 3 files right now.
# error: Installed (but unpackaged) file(s) found:
# /randrstr.h
# /usr/lib/pkgconfig/xorg-server.pc
# /usr/share/aclocal/xorg-server.m4
# /usr/share/man/man1/Xserver.1x.gz
# /var/lib/xkb/README.compiled
# error: Installed (but unpackaged) file(s) found:
# /randrstr.h
# /usr/lib/pkgconfig/xorg-server.pc
# /usr/share/aclocal/xorg-server.m4
# /usr/share/man/man1/Xserver.1x.gz
# /var/lib/xkb/README.compiled
rm -f $RPM_BUILD_ROOT/randrstr.h
rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig
@ -386,15 +395,7 @@ rm -rf $RPM_BUILD_ROOT
%if %{with_hw_servers}
%pre Xorg
{
# Install/Upgrade section
pushd /etc/X11
# Migrate any pre-existing XFree86 4.x config file to xorg.conf if it
# doesn't already exist, and rename any remaining XFree86 4.x config files
# to have .obsoleted file extensions, to help avoid end user confusion for
# people unaware of the config file name change between server
# implementations, and avoid bug reports. If this turns out to confuse
# users, I can modify it to add comments to the top of the obsoleted files
# to point users to xorg.conf <mharris@redhat.com>
for configfile in XF86Config XF86Config-4 ; do
if [ -r $configfile ]; then
if [ -r xorg.conf ]; then
@ -404,30 +405,14 @@ rm -rf $RPM_BUILD_ROOT
fi
fi
done
# Massage pre-existing config files to work properly with X.org X11
# - Remove xie and pex5 modules from the config files, as they are long
# since obsolete, and not provided since XFree86 4.2.0
# - Remove Option "XkbRules" "xfree86" to help work around upgrade problems
# such as https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=120858
# for configfile in xorg.conf ; do
configfile="xorg.conf"
OLD_MODULEPATH="/usr/X11R6/lib/modules"
if [ -r $configfile -a -w $configfile ]; then
# Remove module load lines from the config file for obsolete modules
perl -p -i -e 's/^.*Load.*"(pex5|xie|xtt).*\n$"//gi' $configfile
# Change the keyboard configuration from the deprecated "keyboard"
# driver, to the newer "kbd" driver.
perl -p -i -e 's/^\s*Driver(.*)"keyboard"/Driver\1"kbd"/gi' $configfile
# Remove any Options "XkbRules" lines that may be present
perl -p -i -e 's/^.*Option.*"XkbRules".*"(xfree86|xorg)".*\n$//gi' $configfile
# Remove RgbPath specifications from the config file as they are
# unnecessary, and break upgrades from monolithic to modular X.
# Fixes bugs (#173036, 173435, 173453, 173428)
perl -p -i -e 's#^\s*RgbPath.*$##gi' $configfile
# If ModulePath is specified in the config file, delete it.
perl -p -i -e 's#^\s*ModulePath.*$##gi' $configfile
fi
# done
configfile="xorg.conf"
if [ -r xorg.conf -a -w xorg.conf ]; then
perl -p -i -e 's/^.*Load.*"(pex5|xie|xtt).*\n$"//gi' xorg.conf
perl -p -i -e 's/^\s*Driver(.*)"keyboard"/Driver\1"kbd"/gi' xorg.conf
perl -p -i -e 's/^.*Option.*"XkbRules".*"(xfree86|xorg)".*\n$//gi' xorg.conf
perl -p -i -e 's#^\s*RgbPath.*$##gi' xorg.conf
perl -p -i -e 's#^\s*ModulePath.*$##gi' xorg.conf
fi
popd
} &> /dev/null || :
%endif
@ -562,6 +547,19 @@ rm -rf $RPM_BUILD_ROOT
%changelog
* Mon Apr 09 2007 Adam Jackson <ajax@redhat.com> 1.2.99.905-2
- xserver-1.3.0-pci-bus-count.patch: Allocate the PCI bus array dynamically,
so as not to run off the end of it.
- xserver-1.3.0-mmap-failure-check.patch: Check for failure when mmap'ing
bus memory. (#234073)
- xserver-1.3.0-rom-search.patch: Look for the sysfs ROM file in the (flat)
/sys/bus/pci/devices tree, instead of the (bus-topological) /sys/devices,
so we don't fail to find ROMs merely because they're behind a bridge.
- xserver-1.3.0-no-pseudocolor-composite.patch: Refuse to initialize
Composite when Render is missing or when the root window is using
a pseudocolor visual. (#217388)
- xserver-1.3.0-xnest-exposures.patch: Fix Motif app redraw in Xnest. (#229350)
* Fri Apr 06 2007 Adam Jackson <ajax@redhat.com> 1.2.99.905-1
- xserver 1.3 RC5.

View File

@ -0,0 +1,41 @@
--- ./hw/xfree86/os-support/bus/linuxPci.c.orig 2007-03-14 09:37:44.000000000 -0600
+++ ./hw/xfree86/os-support/bus/linuxPci.c 2007-03-14 09:41:01.000000000 -0600
@@ -634,28 +634,28 @@
ADDRESS Base, unsigned long Size)
{
int domain = xf86GetPciDomain(Tag);
- int fd;
+ int fd = -1;
pointer addr;
/*
* We use /proc/bus/pci on non-legacy addresses or if the Linux sysfs
* legacy_mem interface is unavailable.
*/
- if (Base > 1024*1024)
- return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
+ if (Base >= 1024*1024)
+ addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
-
- if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
- return linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
+ else if ((fd = linuxOpenLegacy(Tag, "legacy_mem")) < 0)
+ addr = linuxMapPci(ScreenNum, Flags, Tag, Base, Size,
PCIIOC_MMAP_IS_MEM);
+ else
+ addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
- addr = mmap(NULL, Size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, Base);
- if (addr == MAP_FAILED) {
- close (fd);
+ if (fd >= 0)
+ close(fd);
+ if (addr == NULL || addr == MAP_FAILED) {
perror("mmap failure");
FatalError("xf86MapDomainMem(): mmap() failure\n");
}
- close(fd);
return addr;
}

View File

@ -0,0 +1,30 @@
diff --git a/composite/compext.c b/composite/compext.c
index 4c25cc7..af05b4a 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -678,6 +678,25 @@ CompositeExtensionInit (void)
ExtensionEntry *extEntry;
int s;
+ for (s = 0; s < screenInfo.numScreens; s++) {
+ ScreenPtr pScreen = screenInfo.screens[s];
+ VisualPtr vis;
+
+ /* Composite on 8bpp pseudocolor root windows appears to fail, so
+ * just disable it on anything pseudocolor for safety.
+ */
+ for (vis = pScreen->visuals; vis->vid != pScreen->rootVisual; vis++)
+ ;
+ if ((vis->class | DynamicClass) == PseudoColor)
+ return;
+
+ /* Ensure that Render is initialized, which is required for automatic
+ * compositing.
+ */
+ if (GetPictureScreenIfSet(pScreen) == NULL)
+ return;
+ }
+
CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
if (!CompositeClientWindowType)
return;

View File

@ -0,0 +1,40 @@
--- xorg-server-1.1.1/hw/xfree86/os-support/bus/Pci.c.jx 2007-02-12 11:08:52.000000000 -0500
+++ xorg-server-1.1.1/hw/xfree86/os-support/bus/Pci.c 2007-03-30 12:20:08.000000000 -0400
@@ -231,14 +231,14 @@
int pciMaxBusNum = MAX_PCI_BUSES;
static Bool inProbe = FALSE;
-static pciConfigPtr pci_devp[MAX_PCI_DEVICES + 1] = {NULL, };
+static pciConfigPtr *pci_devp = NULL;
static int readPciBios( PCITAG Tag, CARD8* tmp, ADDRESS hostbase,
unsigned char * buf, int len, PciBiosType BiosType );
static int (*pciOSHandleBIOS)(PCITAG Tag, int basereg, unsigned char *buf, int len);
-int xf86MaxPciDevs = MAX_PCI_DEVICES;
+int xf86MaxPciDevs = 0;
/*
* Platform specific PCI function pointers.
@@ -271,6 +271,11 @@
if (pciNumBuses <= 0)
ARCH_PCI_OS_INIT();
#endif
+ if (xf86MaxPciDevs == 0)
+ xf86MaxPciDevs = MAX_PCI_DEVICES; /* XXX bogus */
+ if (pci_devp)
+ xfree(pci_devp);
+ pci_devp = xnfcalloc(xf86MaxPciDevs + 1, sizeof(pciConfigPtr));
}
void pciSetOSBIOSPtr(int (*bios_fn)(PCITAG Tag, int basereg, unsigned char * buf, int len))
@@ -913,7 +918,7 @@
* result in an endless recursion if platform/OS specific PCI
* bus probing code calls this function from with in it.
*/
- if (done || pci_devp[0])
+ if (done || pci_devp)
return pci_devp;
done = TRUE;

View File

@ -0,0 +1,13 @@
--- xorg-server-1.2.99.905/hw/xfree86/os-support/bus/linuxPci.c.jx 2007-04-09 16:15:43.000000000 -0400
+++ xorg-server-1.2.99.905/hw/xfree86/os-support/bus/linuxPci.c 2007-04-09 17:37:28.000000000 -0400
@@ -778,8 +778,8 @@
bus = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(Tag));
dev = PCI_DEV_FROM_TAG(Tag);
func = PCI_FUNC_FROM_TAG(Tag);
- sprintf(file, "/sys/devices/pci%04x:%02x/%04x:%02x:%02x.%1x/rom",
- dom, bus, dom, bus, dev, func);
+ sprintf(file, "/sys/bus/pci/devices/%04x:%02x:%02x.%1x/rom",
+ dom, bus, dev, func);
/*
* If the caller wants the ROM and the sysfs rom interface exists,

View File

@ -0,0 +1,20 @@
--- xorg-server-1.2.99.905/hw/xnest/Events.c.jx 2007-01-31 19:55:51.000000000 -0500
+++ xorg-server-1.2.99.905/hw/xnest/Events.c 2007-04-09 18:42:51.000000000 -0400
@@ -85,7 +85,7 @@
while (XCheckIfEvent(xnestDisplay, &X, xnestExposurePredicate, NULL)) {
pWin = xnestWindowPtr(X.xexpose.window);
- if (pWin) {
+ if (pWin && X.xexpose.width && X.xexpose.height) {
Box.x1 = pWin->drawable.x + wBorderWidth(pWin) + X.xexpose.x;
Box.y1 = pWin->drawable.y + wBorderWidth(pWin) + X.xexpose.y;
Box.x2 = Box.x1 + X.xexpose.width;
@@ -93,7 +93,7 @@
REGION_INIT(pWin->drawable.pScreen, &Rgn, &Box, 1);
- miWindowExposures(pWin, &Rgn, NullRegion);
+ miSendExposures(pWin, &Rgn, Box.x2, Box.y2);
}
}
}