From: Maarten Lankhorst Date: Mon, 3 Nov 2014 11:36:32 +0000 (+0100) Subject: Imported Debian patch 2:1.15.1-0ubuntu2.6 X-Git-Tag: debian/2%1.15.1-0ubuntu2.6^0 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=7217e0ca50bba73dad94782e67980aeeb24ab693;p=deb_xorg-server.git Imported Debian patch 2:1.15.1-0ubuntu2.6 --- diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..6aceae3 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1 @@ +((c-mode . ((c-basic-offset . 4) (indent-tabs-mode . nil)))) \ No newline at end of file diff --git a/config/dbus-api b/config/dbus-api new file mode 100644 index 0000000..018e986 --- /dev/null +++ b/config/dbus-api @@ -0,0 +1,40 @@ +D-BUS Configuration API v2 +---------------------------- + +The X server will register the bus name org.x.config.displayN, and the +object /org/x/config/N, where N is the display number. + +Currently only hotplugging of input devices is supported. + +org.x.config.input: + org.x.config.input.version: + Returns one unsigned int32, which is the API version. + + org.x.config.input.add: + Takes an argument of key/value option pairs in arrays, e.g.: + [ss][ss][ss][ss] + is the signature for four options. These options will be passed + to the input driver as with any others. + Option names beginning with _ are not allowed; they are reserved + for internal use. + + Returns a number of signed int32s. Positive integers are the + device IDs of new devices; negative numbers are X error codes, + as defined in X.h. BadMatch will be returned if the options + given do not match any device. BadValue is returned for a malformed + message. (Example: 8 is new device ID 8; -8 is BadMatch.) + + Notably, BadAlloc is never returned: the server internally signals + to D-BUS that the attempt failed for lack of memory. + + org.x.config.input.remove: + Takes one uint32 argument, which is the device ID to remove, i.e.: + u + is the signature. + + Returns one signed int32 which represents an X status as defined in + X.h. See org.x.config.input.add. Error codes are negative numbers. + + org.x.config.input.listDevices: + Lists the currently active devices. No argument. + Return value is sequence of [ ] [ ] ..., i.e. [us]. diff --git a/damageext/damageext.h b/damageext/damageext.h new file mode 100644 index 0000000..bd99635 --- /dev/null +++ b/damageext/damageext.h @@ -0,0 +1,33 @@ +/* + * Copyright © 2002 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#ifndef _DAMAGEEXT_H_ +#define _DAMAGEEXT_H_ + +void + DamageExtensionInit(void); + +#endif /* _DAMAGEEXT_H_ */ diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..f33e314 --- /dev/null +++ b/debian/README.source @@ -0,0 +1,66 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +---------------------------------------------- +Updating xorg-server to a new upstream release +---------------------------------------------- + +* The abibumpcheck target helps us notice any ABI bump: + - A major ABI bump means drivers have to be rebuilt. + - A minor ABI bump means the version in serverminver has to be + bumped. + Reference documentation about dependencies is available at: + http://pkg-xorg.alioth.debian.org/reference/dependencies.html +* We have to keep track of the SDK_REQUIRED_MODULES variable in + configure.ac. It is used to determine xorg-server.pc's dependencies + so xserver-xorg-dev's dependencies have to be adjusted when this + variable changes. This variable is set to a list of modules, but is + updated a few times. It's probably a good idea to use: + git grep SDK_REQUIRED_MODULES= -- configure.ac diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..2d85b47 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,7947 @@ +xorg-server (2:1.15.1-0ubuntu2.6) trusty-proposed; urgency=medium + + [ Laércio de Sousa ] + * Backport support for logind-based multiseat back to trusty. (LP: #1209008) + + [ Maarten Lankhorst ] + * Re-enable support for rotation and transforms on gpu-screens with support. + - Allows re-enabling intel SNA rotation after fixing it. (LP: #1386620) + * Fix black screen when using qemu with cirrus vga. + - fb-24-depth.patch (LP: #1318119) + + -- Maarten Lankhorst Mon, 03 Nov 2014 12:36:32 +0100 + +xorg-server (2:1.15.1-0ubuntu2.5) trusty-security; urgency=medium + + * SECURITY UPDATE: Dec 2014 security issues - additional fixes + - debian/patches/CVE-2014-8xxx/003[4567]*.patch: add additional + fixes not included in original pre-advisory bundle. + + -- Marc Deslauriers Tue, 09 Dec 2014 17:12:42 -0500 + +xorg-server (2:1.15.1-0ubuntu2.4) trusty-security; urgency=medium + + * SECURITY UPDATE: Dec 2014 protocol handling security issues + - debian/patches/CVE-2014-8xxx/*.patch: patches from upstream to fix + a multitude of security issues, including a couple of pre-requisite + fixes from git. + - CVE-2014-8091 + - CVE-2014-8092 + - CVE-2014-8093 + - CVE-2014-8094 + - CVE-2014-8095 + - CVE-2014-8096 + - CVE-2014-8097 + - CVE-2014-8098 + - CVE-2014-8099 + - CVE-2014-8100 + - CVE-2014-8101 + - CVE-2014-8102 + - CVE-2014-8103 + * This package does _not_ contain the changes from 2:1.15.1-0ubuntu2.3 + in trusty-proposed. + + -- Marc Deslauriers Mon, 08 Dec 2014 15:42:08 -0500 + +xorg-server (2:1.15.1-0ubuntu2.1) trusty-proposed; urgency=medium + + * Copy utopic package back to trusty. + - Fix ppc64el byte order. (LP: #1333422) + + xi-dont-copy-too-much.patch + - Fix valgrind issue with xi copying too much. + + xi-dont-copy-too-much.patch + - Fix crash related to suspend/shutdown. (LP: #1208473) + + mi-dont-process-disabled.patch + - Fix touch event history overflow. + + xi2-resize-touch.patch + - Fix switching to guest sessions. (LP: #1322212) + + Revive drm_device_keep_trying.patch + + -- Maarten Lankhorst Wed, 02 Jul 2014 12:37:25 +0200 + +xorg-server (2:1.15.1-0ubuntu6) utopic; urgency=medium + + * ppc64el-endian-fix.patch: Fix PPC endian assumptions (LP: #1333422) + + -- Adam Conrad Mon, 23 Jun 2014 23:47:15 -0600 + +xorg-server (2:1.15.1-0ubuntu5) utopic; urgency=low + + * Add upstream patch to fix some valgrind issues. + - xi-dont-copy-too-much.patch + * Fix crash related to suspend/shutdown. (LP: #1208473) + - mi-dont-process-disabled.patch + + -- Maarten Lankhorst Tue, 20 May 2014 11:32:41 +0200 + +xorg-server (2:1.15.1-0ubuntu4) utopic; urgency=low + + * Resize touch event history if the array is filled up. + - xi2-resize-touch.patch + + -- Maarten Lankhorst Wed, 07 May 2014 13:52:59 +0200 + +xorg-server (2:1.15.1-0ubuntu3) utopic; urgency=medium + + * Revive the old drm_device_keep_trying.patch. + - Removing the call to get_drm_info fixes switching to guest sessions. + + -- Maarten Lankhorst Mon, 28 Apr 2014 10:06:21 +0200 + +xorg-server (2:1.15.1-0ubuntu2) trusty; urgency=medium + + * Disable support for rotations and transforms + on gpu screens for now. (LP: #1308515) + + -- Maarten Lankhorst Wed, 16 Apr 2014 10:14:39 +0200 + +xorg-server (2:1.15.1-0ubuntu1) trusty; urgency=medium + + * Merge from unreleased debian unstable. + - Unbreaks KDE desktop effects on IVB+. (LP: #1294666) + + -- Maarten Lankhorst Mon, 14 Apr 2014 12:57:12 +0200 + +xorg-server (2:1.15.1-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Mon, 14 Apr 2014 12:52:18 +0200 + +xorg-server (2:1.15.0.901-1) unstable; urgency=medium + + [ Robert Millan ] + * Add devd input backend for kFreeBSD, and use it instead of hal (closes: + #736765, #710196, #683833) + + [ Julien Cristau ] + * New upstream release + + -- Julien Cristau Mon, 31 Mar 2014 12:19:57 +0200 + +xorg-server (2:1.15.0-1ubuntu7) trusty; urgency=medium + + * Fix crash in RRCrtcDetachScanoutPixmap. (LP: #1280743) + + -- Maarten Lankhorst Thu, 13 Mar 2014 13:10:52 +0100 + +xorg-server (2:1.15.0-1ubuntu6) trusty; urgency=low + + * Add a small patch to hopefully fix FTBFS on ppc64el. + * Add breaks/replaces on xserver-common-lts-* to fix upgrades from precise. + + -- Maarten Lankhorst Thu, 13 Feb 2014 14:06:11 +0100 + +xorg-server (2:1.15.0-1ubuntu5) trusty; urgency=medium + + * Another no-change rebuild against latest Mir + + -- Łukasz 'sil2100' Zemczak Wed, 12 Feb 2014 18:33:20 +0100 + +xorg-server (2:1.15.0-1ubuntu4) trusty; urgency=low + + * Only set RR caps that are appropriate to main/gpu screen. (LP: #1277014) + + -- Maarten Lankhorst Mon, 10 Feb 2014 18:51:19 +0100 + +xorg-server (2:1.15.0-1ubuntu3) trusty; urgency=low + + * No-change rebuild against correct libgcrypt. + + -- Maarten Lankhorst Thu, 06 Feb 2014 09:38:39 +0000 + +xorg-server (2:1.15.0-1ubuntu2) trusty; urgency=medium + + * No-change rebuild against latest Mir + + -- Ricardo Salveti de Araujo Tue, 04 Feb 2014 20:35:47 -0200 + +xorg-server (2:1.15.0-1ubuntu1) trusty; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Tue, 04 Feb 2014 15:45:00 +0000 + +xorg-server (2:1.15.0-2) unstable; urgency=medium + + [ Julien Cristau ] + * Bump debhelper compat level to 7. + * Upload to unstable. + + [ Yaroslav Halchenko ] + * Adding xorg-server-source binary package to provide a tarball with + original (patched, autoreconfed) sources of the xserver (Closes: + #730552) + + -- Julien Cristau Thu, 06 Feb 2014 16:14:15 +0100 + +xorg-server (2:1.15.0-1) experimental; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Mon, 06 Jan 2014 11:00:39 +0100 + +xorg-server (2:1.14.99.904-2) experimental; urgency=medium + + * Pass VERBOSE=1 to make check to make debugging test failures possible. + * Disable dri3 on kfreebsd. xtrans doesn't enable fd passing there yet. + + -- Julien Cristau Sat, 14 Dec 2013 18:16:17 +0100 + +xorg-server (2:1.14.99.904-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate. + * Update (build-)dependencies: + - bump x11proto-xext-dev, x11proto-gl-dev, xtrans-dev, libgl1-mesa-dev + - add x11proto-present-dev, x11proto-dri3-dev, libxshmfence-dev + * Enable dri3 (on !hurd) and present extensions. + * Point to http://www.debian.org/support instead of the uploader's email + address in the Xorg log. + + [ Maarten Lankhorst ] + * Disable xorg-server's linux acpi and apm support. Can only cause bugs. + + -- Julien Cristau Thu, 12 Dec 2013 12:11:14 +0100 + +xorg-server (2:1.14.99.3-1) experimental; urgency=low + + * New upstream snapshot. + * Drop patches applied upstream: + - 02_improve-posix-saved-ids-check.diff + - 04_hashtabletest-s390x.diff + - 10_Include-missing-selection-h.diff + - os-move-arpa-inet.h-for-any-win32-system.patch + - xfree86-hurd-include-hurd.h.patch + * Update build-deps: + - bump libx11-dev to 2:1.6 for _XEatDataWords + - require xcb bits for Xephyr + - xserver-xorg-dev depends on x11proto-xf86bigfont-dev + * Bump ABI versions (should have been done upstream, but hasn't yet). + * Stop building Xfbdev. + * Reduce noise from dh_install --list-missing by deleting some files from the + udeb build after make install. + * Run abibumpcheck on build instead of clean so it's done on a patched tree. + * Remove Drew and Cyril from Uploaders. + + -- Julien Cristau Mon, 21 Oct 2013 23:46:34 +0200 + +xorg-server (2:1.14.5-1ubuntu4) trusty; urgency=medium + + * Build xserver-xorg-core-udeb on arm64 and ppc64el. + + -- Colin Watson Mon, 03 Feb 2014 15:44:50 +0000 + +xorg-server (2:1.14.5-1ubuntu3) trusty; urgency=low + + * Add a workaround for a linker crash bug. (LP: #1266492) + + -- Maarten Lankhorst Wed, 29 Jan 2014 16:13:36 +0100 + +xorg-server (2:1.14.5-1ubuntu2) trusty; urgency=medium + + * Don't build XMir on ppc64el. + + -- Matthias Klose Sun, 15 Dec 2013 22:42:40 +0100 + +xorg-server (2:1.14.5-1ubuntu1) trusty; urgency=low + + * Merge from released debian-unstable. + * Refresh xrandr-rroutputchanged-main.patch. + + -- Maarten Lankhorst Fri, 13 Dec 2013 11:24:16 +0100 + +xorg-server (2:1.14.5-1) unstable; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Fri, 13 Dec 2013 11:10:46 +0100 + +xorg-server (2:1.14.4.901-0ubuntu2) trusty; urgency=low + + * Re-apply security update again. + + -- Maarten Lankhorst Tue, 10 Dec 2013 15:25:04 +0100 + +xorg-server (2:1.14.4.901-0ubuntu1) trusty; urgency=low + + * New upstream release with some optimus fixes. + * Include a patch to fix gpu screen output hotplugging. (LP: #1259561) + + -- Maarten Lankhorst Tue, 10 Dec 2013 15:09:07 +0100 + +xorg-server (2:1.14.4-1ubuntu2) trusty; urgency=low + + * SECURITY UPDATE: unsafe use of xkb cache files + - debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch: + updated to not use xkb cache files in /tmp when running a non-root + server. + - CVE-2013-1056 + + -- Marc Deslauriers Fri, 06 Dec 2013 11:15:23 -0500 + +xorg-server (2:1.14.4-1ubuntu1) trusty; urgency=low + + * Merge released debian-unstable. + * Cherry-pick fix to sync code. (LP: #1238410) + + -- Maarten Lankhorst Wed, 04 Dec 2013 13:54:02 +0100 + +xorg-server (2:1.14.4-1) unstable; urgency=low + + * New upstream release. + * Drop upstreamed patches. + - 02_improve-posix-saved-ids-check.diff + - 04_hashtabletest-s390x.diff + - 10_Include-missing-selection-h.diff + + -- Maarten Lankhorst Wed, 04 Dec 2013 13:09:36 +0100 + +xorg-server (2:1.14.3-5ubuntu1) trusty; urgency=low + + * Merge released debian-unstable to fix mesa-10 loading. + * Drop avoid-use-after-free.diff, upstreamed. + + -- Maarten Lankhorst Mon, 25 Nov 2013 16:17:49 +0100 + +xorg-server (2:1.14.3-5) unstable; urgency=low + + * Cherry-pick a upstream commit to fix mesa-10 driver loading. + + -- Maarten Lankhorst Mon, 25 Nov 2013 14:52:54 +0100 + +xorg-server (2:1.14.3-3ubuntu4) trusty; urgency=low + + * No-change rebuild for xmir to use the new Mir ABI. + + -- Mathieu Trudel-Lapierre Mon, 28 Oct 2013 13:36:02 -0400 + +xorg-server (2:1.14.3-3ubuntu3) trusty; urgency=low + + * pixman-validate.patch: Do not render invalid trapezoids. (LP: #1197921) + + -- Maarten Lankhorst Wed, 23 Oct 2013 12:11:27 +0200 + +xorg-server (2:1.14.3-3ubuntu2) saucy-proposed; urgency=low + + * avoid-use-after-free.diff: Fix CVE-2013-4396. + + -- Timo Aaltonen Tue, 15 Oct 2013 12:05:48 +0300 + +xorg-server (2:1.14.3-3ubuntu1) saucy; urgency=low + + * Merge from unreleased debian git. + * rrcrtc-brackets-are-hard.patch: Replace xf86-detach-scanout.patch + with this patch from Fedora. Should fix crashers on hybrid systems + (LP: #1210025) + * Drop include-selection-h.patch, not needed anymore. + + -- Timo Aaltonen Thu, 03 Oct 2013 15:30:22 +0300 + +xorg-server (2:1.14.3-4) unstable; urgency=high + + [ Timo Aaltonen ] + * rules: Drop defoma support from the font path. (Closes: #689233, + LP: #986061) + + [ Julien Cristau ] + * Avoid use-after-free in dix/dixfonts.c: doImageText(). Addresses + CVE-2013-4396. + + -- Julien Cristau Sat, 05 Oct 2013 15:57:55 +0200 + +xorg-server (2:1.14.3-3) unstable; urgency=low + + * Upload to unstable. + + -- Julien Cristau Sun, 22 Sep 2013 16:32:19 +0200 + +xorg-server (2:1.14.3-2) experimental; urgency=low + + * Delete test-driver on clean. + * Add a couple patches to fix FTBFS on hurd (closes: #720736). Thanks, Pino + Toscano! + + -- Julien Cristau Fri, 20 Sep 2013 00:21:41 +0200 + +xorg-server (2:1.14.3-1) experimental; urgency=low + + [ Julien Cristau ] + * Remove the Replaces: xdmx from xdmx-tools, that was before lenny. That + change was done in the 1.10.x timeframe and then lost when moving to + 1.11.x. + + [ Michele Cane ] + * New upstream release. + + -- Julien Cristau Sun, 15 Sep 2013 23:57:26 +0200 + +xorg-server (2:1.14.2.901-2ubuntu7) saucy; urgency=low + + * Make glx link against glapi for the dispatch table symbols. (LP: #1232000) + * Cherry pick a few related glx fixes from upstream. + + -- Maarten Lankhorst Tue, 01 Oct 2013 13:30:59 +0200 + +xorg-server (2:1.14.2.901-2ubuntu6) saucy; urgency=low + + * xmir.patch: Drop vestigial libatomic-ops dependency, fixing + driver FTBFS. + + -- Christopher James Halse Rogers Thu, 26 Sep 2013 08:29:44 -0700 + +xorg-server (2:1.14.2.901-2ubuntu5) saucy; urgency=low + + * xmir.patch: Drop input on loss of focus. Fixes "I'm sending all my + passwords to IRC when I switch to a VT" with associated + unity-system-compositor change. (LP: #1192843) + * xmir.patch: Add DPMS support (LP: #1193222) + * Drop os-use-libunwind-to-generate-backtraces.patch; this was not enabled + due to libunwind8-dev not shipping a pkg-config file. Now that it does, + this causes FTBFS on armhf. + + -- Christopher James Halse Rogers Tue, 24 Sep 2013 08:58:45 -0700 + +xorg-server (2:1.14.2.901-2ubuntu4) saucy; urgency=low + + * xmir.patch: Add XRandR support + * Bump serverminver for XMir API changes + + -- Christopher James Halse Rogers Thu, 29 Aug 2013 19:42:41 +1000 + +xorg-server (2:1.14.2.901-2ubuntu3) saucy; urgency=low + + * xmir.patch: Use the API we have, not the API we've documented + + -- Christopher James Halse Rogers Thu, 22 Aug 2013 15:18:55 +1000 + +xorg-server (2:1.14.2.901-2ubuntu2) saucy; urgency=low + + * xmir.patch: Update for new API + + -- Christopher James Halse Rogers Thu, 22 Aug 2013 14:23:40 +1000 + +xorg-server (2:1.14.2.901-2ubuntu1) saucy; urgency=low + + * Merge from released debian-experimental. + * Drop upstreamed prime patches. + * Refresh 228_autobind_gpu.patch. + * Pick up some more input fixes from upstream. + + -- Maarten Lankhorst Wed, 14 Aug 2013 10:52:17 +0200 + +xorg-server (2:1.14.2.901-2) experimental; urgency=low + + * Use libbsd-overlay to get missing declarations on kfreebsd and fix FTBFS. + Require dpkg-dev 1.16.1. + * Also improve POSIX_SAVED_IDS check to work on kbsd. + * Link against libnettle.a, to unbreak the udeb (there's no libnettle udeb). + * Fix a test failure on 64bit big-endian (s390x, ppc64, sparc64). + + -- Julien Cristau Sat, 03 Aug 2013 18:17:30 +0200 + +xorg-server (2:1.14.2.901-1) experimental; urgency=low + + * New upstream release + + [ Maarten Lankhorst ] + * Bump minimum required abi, randr, dri2 and gl protos. + * Remove upstreamed patches. + - 02_Add-libnettle-as-option-for-sha1.diff + - 04_int10-fix-pci_device_read_rom-usage.diff + - 07_Revert-kinput-allocate-enough-space-for-null-charact.diff + * Bump x11proto-input-dev and libpixman-1-dev minimum versions. + + [ Timo Aaltonen ] + * Refresh 02_Add-libnettle-as-option-for-sha1.diff. + * Remove 03_fix-panning.diff, upstream + * Refresh 04_int10-fix-pci_device_read_rom-usage.diff. + * Drop 09_EXA-Track...diff, upstream. + * control: Mark xvfb as M-A: foreign. + * control: Bump inputproto build-dep to 2.3. + + [ Robert Hooker ] + * Update to a newer git snapshot, 7fe5e6dfa5c1e71 + * Bump input ABI version in serverminver + * Bump libxi-dev build requirement to 2:1.6.99.1 + + [ Julien Cristau ] + * Merge sid branch up to 2:1.12.4-6.1. + * Drop old --disable-builddocs, --disable-xcalibrate configure options from + d/rules. + * Make build-deps match xserver-xorg-dev dependencies and configure checks. + + -- Julien Cristau Sat, 27 Jul 2013 13:18:28 +0200 + +xorg-server (2:1.14.2-0ubuntu9) saucy; urgency=low + + [ Maarten Lankhorst ] + * Fix crash in RRCrtcDetachScanoutPixmap. + * Add xmir module to xserver-xorg-core-dbg. + * Fix xf86DeleteDriver infinite loop. (LP: 1208715) + + [ Christopher James Halse Rogers ] + * Fix damage reporting (LP: 1206744) + + -- Christopher James Halse Rogers Tue, 06 Aug 2013 16:11:47 +1000 + +xorg-server (2:1.14.2-0ubuntu8) saucy; urgency=low + + * Don't build XMir on AArch64. + + -- Matthias Klose Mon, 05 Aug 2013 15:51:01 +0200 + +xorg-server (2:1.14.2-0ubuntu7) saucy; urgency=low + + * Don't have the -dev package depending on libmirclient-dev on powerpc + as unavailable + + -- Didier Roche Mon, 05 Aug 2013 12:33:48 +0200 + +xorg-server (2:1.14.2-0ubuntu6) saucy; urgency=low + + * As we don't build XMir on PPC we should not try to build the + xserver-xorg-xmir package, either. + + -- Christopher James Halse Rogers Mon, 05 Aug 2013 19:09:47 +1000 + +xorg-server (2:1.14.2-0ubuntu5) saucy; urgency=low + + * rules,control: Restrict XMir build to !powerpc, as we don't build Mir there + + -- Christopher James Halse Rogers Mon, 05 Aug 2013 18:46:43 +1000 + +xorg-server (2:1.14.2-0ubuntu4) saucy; urgency=low + + * Add xmir.patch; First upload with XMir support. + + -- Christopher James Halse Rogers Thu, 01 Aug 2013 13:00:41 +1000 + +xorg-server (2:1.14.2-0ubuntu3) saucy; urgency=low + + * Oops, refresh xf86-detach-scanout, embarassing bug in the for check. + + -- Maarten Lankhorst Tue, 30 Jul 2013 12:51:40 +0200 + +xorg-server (2:1.14.2-0ubuntu2) saucy; urgency=low + + * Add support for Aarch64. + + -- Matthias Klose Wed, 24 Jul 2013 14:24:25 +0200 + +xorg-server (2:1.14.2-0ubuntu1) saucy; urgency=low + + * New upstream release. (LP: #1156498) + * Remove upstreamed patch. + - xf86setdesired-hybrid.patch + + -- Maarten Lankhorst Tue, 16 Jul 2013 09:36:06 +0200 + +xorg-server (2:1.14.1-0ubuntu1) saucy; urgency=low + + * Fix null pointer deref on logout. (LP: #1194343) + + -- Maarten Lankhorst Thu, 11 Jul 2013 16:52:28 +0200 + +xorg-server (2:1.14.1-0ubuntu0.8) saucy; urgency=low + + * Use correct version for libxfixes3. + + -- Maarten Lankhorst Wed, 03 Jul 2013 12:03:57 +0200 + +xorg-server (2:1.14.1-0ubuntu0.7) saucy; urgency=low + + * Add build-depends on recent enough libxi-dev and libxfixes-dev + for the new pointer barriers. + * Add breaks on old libxi6, libxfixes3, unity. + + -- Maarten Lankhorst Wed, 03 Jul 2013 10:37:30 +0200 + +xorg-server (2:1.14.1-0ubuntu0.6) saucy; urgency=low + + * Add patch to fix nvidia regression. + - xf86-inactive-gpuscreen.patch + + -- Maarten Lankhorst Mon, 17 Jun 2013 14:18:35 +0200 + +xorg-server (2:1.14.1-0ubuntu0.5) saucy; urgency=low + + * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546) + - xf86-fixup-detection.patch + + -- Maarten Lankhorst Thu, 13 Jun 2013 13:03:17 +0200 + +xorg-server (2:1.14.1-0ubuntu0.4) raring; urgency=low + + * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035) + - xf86-detach-scanout.patch + * Add patch to fix build error on saucy. + - include-selection-h.patch + + -- Maarten Lankhorst Tue, 28 May 2013 16:13:24 +0200 + +xorg-server (2:1.14.1-0ubuntu0.3) raring; urgency=low + + * Add patch to fixup optimus again. + - xf86-dont-enable-gpuscreens.patch + + -- Maarten Lankhorst Wed, 01 May 2013 09:38:59 +0200 + +xorg-server (2:1.14.1-0ubuntu0.2) raring; urgency=low + + * Add patch to run on outputless hybrid systems again. + - xf86setdesired-hybrid.patch + + -- Maarten Lankhorst Mon, 29 Apr 2013 11:29:10 +0200 + +xorg-server (2:1.14.1-0ubuntu0.1) raring; urgency=low + + [ Timo Aaltonen ] + * Merge from unreleased debian git. + * 500_pointer_barrier_thresholds.diff: Dropped, implemented upstream. + * Dropped upstreamed patches: + 165_man_xorg_conf_no_device_ident.patch + 233-xf86events-valgrind.patch + 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch + * Dropped drm_device_keep_trying.patch, not needed anymore. + + [ Bryce Harrington ] + * 157_check_null_modes.patch: Dropped, patch included upstream. + * 162_null_crtc_in_rotation.patch: Dropped, no longer relevant + (see LP: 139990) + * 167_nullptr_xisbread.patch: Dropped, fixed differently upstream. + + [ Maarten Lankhorst ] + * Update to 1.14.0 release. + + -- Maarten Lankhorst Wed, 06 Mar 2013 14:49:21 +0100 + +xorg-server (2:1.13.3-0ubuntu13) saucy; urgency=low + + * Re-enable xf86-fixup-detection.patch. + * Add patch to fix nvidia regression. + - xf86-inactive-gpuscreen.patch + + -- Maarten Lankhorst Mon, 17 Jun 2013 14:16:05 +0200 + +xorg-server (2:1.13.3-0ubuntu12) saucy; urgency=low + + * Disable xf86-fixup-detection.patch for now as it breaks PRIME + with nvidia. + + -- Alberto Milone Fri, 14 Jun 2013 17:21:16 +0200 + +xorg-server (2:1.13.3-0ubuntu11) saucy; urgency=low + + * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546) + - xf86-fixup-detection.patch + + -- Maarten Lankhorst Thu, 13 Jun 2013 13:00:58 +0200 + +xorg-server (2:1.13.3-0ubuntu10) saucy; urgency=low + + * Add patch to fix DPMS. (LP: #1184999) + - include-GPU-screens-in-DPMS-code.patch + * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035) + - xf86-detach-scanout.patch + + -- Maarten Lankhorst Tue, 28 May 2013 16:12:12 +0200 + +xorg-server (2:1.13.3-0ubuntu9) saucy; urgency=low + + * Cherry-pick patch from 1.14 to fix DRI1 regression. (LP: #1083032) + - dri1-fix-dri1-startup-since-459c6da0f907ba33d733c7e6.patch + + -- Tormod Volden Sun, 12 May 2013 11:30:46 +0200 + +xorg-server (2:1.13.3-0ubuntu8) saucy; urgency=low + + * Fixup build error on saucy. + + -- Maarten Lankhorst Wed, 08 May 2013 14:02:12 +0200 + +xorg-server (2:1.13.3-0ubuntu7) saucy; urgency=low + + * Add patch to fixup optimus again. + - xf86-dont-enable-gpuscreens.patch + + -- Maarten Lankhorst Wed, 01 May 2013 10:35:55 +0200 + +xorg-server (2:1.13.3-0ubuntu6) raring; urgency=low + + * SECURITY UPDATE: input event leak via inactive VT + - debian/patches/CVE-2013-1940.patch: fix flush input to work with + Linux evdev devices in hw/xfree86/os-support/shared/posix_tty.c. + - CVE-2013-1940 + + -- Jamie Strandboge Wed, 17 Apr 2013 09:41:17 -0500 + +xorg-server (2:1.13.3-0ubuntu5) raring; urgency=low + + [ Bryce Harrington ] + * Add no-nv.patch: Don't autoprobe -nv on linux. + * Refresh drm_device_keep_trying.patch (LP: #1161981) + - Set empty busid for usb devices + - Parse pci path more strictly. + - Make platform devices work correctly, try to obtain busid from + path if possible. + - Fallback if not possible (tegra). + + -- Maarten Lankhorst Mon, 08 Apr 2013 11:40:26 +0200 + +xorg-server (2:1.13.3-0ubuntu4) raring; urgency=low + + * Do not bother registering xv/xvmc on gpu screens. + - xfree86-no-xv-for-gpuscreens.patch + * Re-enable GLX on Xephyr. (LP: #1079096) + - xephyr-glx-register.patch + + -- Maarten Lankhorst Tue, 26 Mar 2013 16:16:14 +0100 + +xorg-server (2:1.13.3-0ubuntu3) raring; urgency=low + + * Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch + - Unbind offload sink and render slave simultaneously. + This prevents a use-after-free bug. + * Add config-add-no-removal.patch (LP: #1157614) + - Do not call device_remove when a device is hotplugged. + * Refresh drm_device_keep_trying.patch + - There is no need for drm master here. This might + reopen LP #982889, but I do not think spinning here + :is the correct answer. + + -- Maarten Lankhorst Thu, 21 Mar 2013 15:40:42 +0100 + +xorg-server (2:1.13.3-0ubuntu2) raring; urgency=low + + * Add patch to improve backtraces in the Xorg log. + - os-use-libunwind-to-generate-backtraces.patch + + -- Maarten Lankhorst Thu, 14 Mar 2013 16:12:16 +0100 + +xorg-server (2:1.13.3-0ubuntu1) raring; urgency=low + + * New upstream release. + * Drop patches applied upstream. + - 237_dix_save_touchpoint_last_coords_before_transform.patch + - randr-cleanup-provider-properly.patch + * Rework drm_device_keep_trying.patch (LP: #982889) + + -- Maarten Lankhorst Thu, 14 Mar 2013 08:41:51 +0100 + +xorg-server (2:1.13.2-0ubuntu3) raring; urgency=low + + * Add drm_device_keep_trying.patch: When kernel reports drm device is + not available, don't give up immediately, but keep retrying for a + little bit. Fixes boot failures due to a race condition with plymouth + or the kernel. Typical symptom is xserver error exit, "Cannot run in + framebuffer mode" and Xorg.0.log messages about "setversion 1.4 + failed". + (LP: #982889) + + -- Bryce Harrington Tue, 19 Feb 2013 07:58:24 -0800 + +xorg-server (2:1.13.2-0ubuntu2) raring; urgency=low + + * Restore selinux support now that audit has been promoted to main. + + -- Adam Conrad Sat, 09 Feb 2013 00:03:45 -0700 + +xorg-server (2:1.13.2-0ubuntu1) raring; urgency=low + + * New upstream release. + * control: Mark xvfb M-A: foreign. + * Refresh autobind patch from fedora, and cherry-pick some fixes from them for + reverse-optimus and hotplugging. + + -- Timo Aaltonen Tue, 29 Jan 2013 17:23:44 +0200 + +xorg-server (2:1.13.1.901-0ubuntu2) raring; urgency=low + + * Add 237_dix_save_touchpoint_last_coords_before_transform.patch: + Fix sensitive touch settings on Nexus 7 when input is transformed. + (LP: #1075415, #1076567, #1076627) + + -- Bryce Harrington Tue, 22 Jan 2013 13:51:16 -0800 + +xorg-server (2:1.13.1.901-0ubuntu1) raring; urgency=low + + * Merge from unreleased debian git. + + -- Timo Aaltonen Tue, 08 Jan 2013 16:40:30 +0200 + +xorg-server (2:1.13.0.902-0ubuntu1) raring; urgency=low + + [ Timo Aaltonen ] + * Merge from unreleased debian git. + * Dropped upstream patches: + - 229_udev-fix.diff + - 231-scan-pci-after-probing-devices.patch + - 235-composite-tracking.patch + - 237-dix-set-the-device-transformation-matrix.patch + + [ Maarten Lankhorst ] + * Dropped upstream patches: + - 230-fix-compat-output-selection.patch + * Merge 1.13.1.rc2 from unreleased debian git. + * Bump ABI_VIDEODRV_VERSION to 13.1 + - xf86UpdateDesktopDimensions is newly exported for nvidia blob + + -- Maarten Lankhorst Fri, 07 Dec 2012 09:14:37 +0100 + +xorg-server (2:1.13.0-0ubuntu8) raring; urgency=low + + * Revert the change to 500_pointer_barrier_thresholds.diff, causes + issues with unity launcher. + + -- Timo Aaltonen Mon, 19 Nov 2012 12:15:49 +0200 + +xorg-server (2:1.13.0-0ubuntu7) raring; urgency=low + + [ Maarten Lankhorst ] + * Add 233-xf86events-valgrind.patch to fix a xserver corruption + when acpid is stopped before Xorg is. + (LP: #1070481) + * Add 235-composite-tracking.patch to fix exa corruption. + (LP: #1010794) + + [ Bryce Harrington ] + * Add 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch: Never use Intel + driver on Poulsbo/Oaktrail/Medfield. Thanks to Matthias Klumpp. + (LP: #1069031) + * Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer + jumping with absolute pointing device. Initializes device + transformation matrix to an identity matrix. Thanks to a7x. + (LP: #1041063) + + [ Tim Lunn ] + * 500_pointer_barrier_thresholds.diff: Update to fix gaps above + barriers at edge of screen + (LP: #1073724) + + -- Bryce Harrington Fri, 16 Nov 2012 11:37:26 -0800 + +xorg-server (2:1.13.0-0ubuntu6) quantal; urgency=low + + [ Timo Aaltonen ] + * patches/series: Reorganize our patches in categories in order to + make reviewing and rebasing easier. + + [ Maarten Lankhorst ] + * add 232-xf86compatoutput-valgrind.patch to silence a valgrind error + + -- Timo Aaltonen Mon, 08 Oct 2012 17:58:54 +0300 + +xorg-server (2:1.13.0-0ubuntu5) quantal; urgency=low + + * Update 228_autobind_gpu.patch to not crash when the device has no + randr provider. (LP: #1054051) + + -- Timo Aaltonen Tue, 25 Sep 2012 09:46:44 +0300 + +xorg-server (2:1.13.0-0ubuntu4) quantal; urgency=low + + * Add patches to fix issues with hybrid graphics: + - 230-fix-compat-output-selection.patch + Fix compat output selection when the GPU has no outputs + (LP: #1043458) + - 231-scan-pci-after-probing-devices.patch + Fix a race condition when dynamically powering off secondary GPU's + + -- Timo Aaltonen Thu, 20 Sep 2012 14:34:45 +0300 + +xorg-server (2:1.13.0-0ubuntu3) quantal; urgency=low + + * Try again with the right hotplug patch. + + -- Timo Aaltonen Mon, 17 Sep 2012 16:24:29 +0300 + +xorg-server (2:1.13.0-0ubuntu2) quantal; urgency=low + + [ Maarten Lankhorst ] + * Add patch to autobind gpu's + + [ Timo Aaltonen ] + * Add a patch to fix drm device hotplugging. + + -- Timo Aaltonen Mon, 17 Sep 2012 15:58:32 +0300 + +xorg-server (2:1.13.0-0ubuntu1) quantal; urgency=low + + * Merge from unreleased debian git. + + -- Timo Aaltonen Thu, 06 Sep 2012 12:25:51 +0300 + +xorg-server (2:1.12.99.905-0ubuntu3) quantal; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Now that the modesetting is part of xserver-xorg-video-all, enable the + arm specific drivers before modesetting is included, otherwise it'll + always be the default, even if we have arm-compatible drivers available + at the system (LP: #1041686) + + -- Ricardo Salveti de Araujo Sat, 25 Aug 2012 19:19:16 -0300 + +xorg-server (2:1.12.99.905-0ubuntu2) quantal; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Adding support for omapdrm based devices (using the omap xorg driver), + and make xorg to use the recently added platform probe functions, by + trying to probe the driver in case there's only one platform device + available and without a valid busID (case of Omap3 and Omap4 based + devices) (LP: #1040405) + + -- Ricardo Salveti de Araujo Thu, 23 Aug 2012 01:20:03 -0300 + +xorg-server (2:1.12.99.905-0ubuntu1) quantal; urgency=low + + [ Robert Hooker ] + * New upstream release snapshot (1.13-rc5) + + -- Timo Aaltonen Wed, 22 Aug 2012 18:29:26 +0300 + +xorg-server (2:1.12.99.904-0ubuntu2) quantal; urgency=low + + [ Maarten Lankhorst ] + * Remove disabled and unwanted patches + - 13_debian_add_xkbpath_env_variable.diff + - 200_randr-null.patch + - 217_revert_bgnonevisitwindow.patch + - 219_fedora-pointer-barriers.diff + + [ Christopher James Halse Rogers ] + * Bump build-dep on libdrm to 2.4.38-0ubuntu2 and rebuild to pick up correct + libdrm2-udeb dependencies on xserver-xorg-core-udeb + + -- Christopher James Halse Rogers Tue, 21 Aug 2012 16:07:00 +1000 + +xorg-server (2:1.12.99.904-0ubuntu1) quantal-proposed; urgency=low + + [ Maarten Lankhorst ] + * New upstream release snapshot (on the way to 1.13). + * Remove 172_cwgetbackingpicture_nullptr_check.patch: + - Code is removed now that XAA is gone. + + -- Timo Aaltonen Wed, 08 Aug 2012 14:35:03 +0300 + +xorg-server (2:1.12.99.904-1) UNRELEASED; urgency=low + + * New upstream release snapshot (on the way to 1.13). + * Bump minimum required abi, randr, dri2 and gl protos. + + -- Maarten Lankhorst Thu, 12 Jul 2012 13:54:50 +0200 + +xorg-server (2:1.12.99.902-0ubuntu1) quantal-proposed; urgency=low + + [ Maarten Lankhorst ] + * New upstream release snapshot (on the way to 1.13). + - Fixes QT5 app segfaults (LP: #1015292) + * Bump minimum required abi, randr, dri2 and gl protos. + * Refreshed patches to apply on x1.13 + * Remove patches merged upstream: + - 508_device_off_release_buttons.patch + - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch + - 511-dix-move-freeing-the-sprite-into-a-function.patch + - 512-dix-free-the-sprite-when-disabling-the-device.patch + - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch + - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch + - 515-dix-disable-all-devices-before-shutdown.patch + + [ Christopher James Halse Rogers ] + * debian/patches/100_rethrow_signals.patch: + - Drop, in favour of getting LightDM to pass -core to the server. This + upstream mechanism is significantly more reliable at dumping core in + my testing. We may later wish to improve this with some processing in + the apport hook. + + -- Julien Cristau Sat, 27 Jul 2013 13:18:28 +0200 + + +xorg-server (2:1.12.4-6.1) unstable; urgency=low + + * Non-maintainer upload. + * 10_Include-missing-selection-h.diff: Fix FTBFS with GCC 4.8. Include + selection.h in dix/window.c for the missing DeleteWindowFromAnySelections + function prototype. Patch by Gerardo Malazdrewicz (closes: #701372) + + -- Michael Biebl Thu, 25 Jul 2013 19:45:29 +0200 + +xorg-server (2:1.12.4-6) unstable; urgency=low + + * Touch: Fix duplicate TouchBegin selection with virtual devices + (closes: #696272) + * Xi: Don't check for TOUCH_END, it's never set + * Xi: Update the device after delivering the emulated pointer event + (closes: #702662) + * xf86: fix flush input to work with Linux evdev devices. Addresses + CVE-2013-1940. + + -- Julien Cristau Wed, 17 Apr 2013 12:12:30 +0200 + +xorg-server (2:1.12.4-5) unstable; urgency=low + + * dmx: don't include dmx-config.h from xdmxconfig (closes: #495816) + * xfree86: bail on misformed acpi strings (closes: #696110) + * dix: don't allow overriding a grab with a different type of grab + * dix: Set focus field on XI2 crossing events (closes: #699907) + * Link against -lbsd on kfreebsd. This gives us access to getpeereid(), and + makes MIT-SHM work with non-world-accessible segments (closes: #701469). + + -- Julien Cristau Sat, 23 Feb 2013 15:37:44 +0100 + +xorg-server (2:1.12.4-4) unstable; urgency=low + + * Fix memory leak in libnettle sha1 patch. Thanks, Yaakov Selkowitz! + * Cherry-pick from upstream: + - dix: set the device transformation matrix. Avoids cursor jumps in + virtualbox (closes: #694598) + + -- Julien Cristau Thu, 29 Nov 2012 19:27:31 +0100 + +xorg-server (2:1.12.4-3) unstable; urgency=low + + * Replace EXA patch from previous upload with the one actually applied + upstream (closes: #666468). + + -- Julien Cristau Mon, 05 Nov 2012 10:44:58 +0100 + +xorg-server (2:1.12.4-2) unstable; urgency=low + + * Fix Xephyr command line option parsing (closes: #689246). Thanks, Andrzej + Pietrasiewicz! + * Restore {in,out}{b,w,l} on ia64 (closes: #685750). Thanks, Stephan + Schreiber! + * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: + #666468). Patch by Michel Dänzer stolen from upstream bugzilla. + + -- Julien Cristau Wed, 24 Oct 2012 16:46:48 +0200 + +xorg-server (2:1.12.4-1) unstable; urgency=low + + * New upstream stable release. + * int10: fix pci_device_read_rom usage (closes: #686153). Thanks, Stephan + Schreiber! + * Revert 'Unload submodules' (closes: #686152). Seems to introduce a + regression, let's try that again later. Thanks, Stephan Schreiber! + * Revert "fb: reorder Bresenham error correction to avoid overshoot". Fixes + regression introduced in 1.12.3.902 (fdo#54168, closes: #688908) + * Add conflicts against obsolete evtouch input driver (hopefully closes: + #687268) + + -- Julien Cristau Sun, 30 Sep 2012 12:47:00 +0200 + +xorg-server (2:1.12.3.902-1) unstable; urgency=low + + * New upstream release candidate + + glx: Free DRI2 drawable reference to destroyed GLX drawable + (closes: #681265, #674668) + + dix: make sure the mask is set for emulated scroll events + (closes: #684051) + * 03_fix-panning.diff: disable cursor confinement when panning is enabled + (closes: #643693) + * Video ABI bumped to 12.1, serverminver to 2:1.12.3.901. + + -- Julien Cristau Tue, 21 Aug 2012 21:35:25 +0200 + +xorg-server (2:1.12.3-1) unstable; urgency=low + + * New upstream release. + * Install /var/lib/xkb/README.compiled in xserver-common. + + -- Julien Cristau Wed, 18 Jul 2012 08:36:57 +0200 + +xorg-server (2:1.12.1.902-1ubuntu1) quantal-proposed; urgency=medium + + [ Maarten Lankhorst ] + * Refresh patches to apply on x-server 1.12 + - patch-x-indent.sh from xorg-pkg-tools was used to redo coding style + * Deleted following patches because they have been committed upstream + - 224_return_BadWindow_not_BadMatch.diff + - 225_non-root_config_paths.patch + - 505_query_pointer_touchscreen.patch + - 506_touchscreen_pointer_emulation_checks.patch + - 507_touchscreen_fixes.patch + * Non-trivial refresh of 500_pointer_barrier_thresholds.diff, based on + xorg-edgers + * Rest was refreshed with patch-x-indent.sh to survive coding style changes + * Add upstream patches for proper device disabling: + - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch + - 511-dix-move-freeing-the-sprite-into-a-function.patch + - 512-dix-free-the-sprite-when-disabling-the-device.patch + - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch + - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch + - 515-dix-disable-all-devices-before-shutdown.patch + + [ Bryce Harrington ] + * Drop 209_add_legacy_bgnone_option.patch: lightdm and other *dm's have + switched to the new standard -background option. No need to continue + providing the legacy -nr synonym. + * Drop 201_report-real-dpi.patch: Commented out in series. + * Drop 198_nohwaccess.patch: Rootless-X no longer a development focus + for us; the patch would need reworked anyway to provide proper + support. + * Drop 166_nullptr_xinerama_keyrepeat.patch: Fixed differently upstream + in commit 24e682d0, as verified by original reporter. + + -- Bryce Harrington Mon, 04 Jun 2012 19:12:23 -0700 + +xorg-server (2:1.12.1.902-1) unstable; urgency=medium + + [ Julien Cristau ] + * xvfb-run: kill Xvfb when the script dies. + * xvfb-run: instead of waiting 3 seconds and hoping that's enough for Xvfb + to come up (and waiting 2.9 seconds too many in the general case), tell it + to send us SIGUSR1 when it's ready to accept connections. This reduces + "xvfb-run -- xterm -e true" from ~3.2s to ~0.4s on a quick test. + * xvfb-run: fix xauth handling; setting XAUTHORITY when starting an X server + isn't actually useful, we need to use the -auth command-line parameter + instead. Somehow this seems to have been broken all these years and + nobody noticed... + + [ Cyril Brulebois ] + * New upstream release candidate for the 1.12 stable branch: + - Bring the usual lot of stability fixes. + - Fix segfault on server shutdown (Closes: #671812). + - Refactor logging, fixing a format string vulnerability which could lead + to a denial of service (“only”, thanks to the fortified sources). This + is CVE-2012-2118 (Closes: #673148). + * Bump severity to “medium” for those two important fixes. + + -- Cyril Brulebois Sun, 20 May 2012 10:52:52 +0200 + +xorg-server (2:1.12.1-2) unstable; urgency=low + + * Merge from server-1.12-branch up to 22a1953c4a to get: + - many XI 2.2 fixes. + - “os: make timers signal-safe”; fixing infinite loops with the + synaptics tap handling code. + + -- Cyril Brulebois Mon, 07 May 2012 01:46:16 +0200 + +xorg-server (2:1.12.1-1) unstable; urgency=low + + * New upstream release. + * Upload to unstable. + + -- Cyril Brulebois Tue, 01 May 2012 01:56:32 +0200 + +xorg-server (2:1.12.0.902-1) experimental; urgency=low + + * New upstream release candidate (1.12.1 RC2). + * Refresh patches, yay for automated re-indenting… + + -- Cyril Brulebois Wed, 11 Apr 2012 19:31:09 +0000 + +xorg-server (2:1.12.0-1) experimental; urgency=low + + * New upstream release. + * Bump x11proto-input-dev in Build-Depends and Depends. + + -- Cyril Brulebois Mon, 05 Mar 2012 11:18:41 +0100 + +xorg-server (2:1.11.99.902-1) experimental; urgency=low + + * New upstream release candidate (1.12 RC2): + - Fix FTBFS on ia64 and mips*. + * Bump x11proto-input-dev build-dep. + + -- Cyril Brulebois Thu, 02 Feb 2012 03:15:00 +0100 + +xorg-server (2:1.11.99.901-1) experimental; urgency=low + + * New upstream release candidate (1.12 RC1). + * Bump input ABI and serverminver again. + * Bump x11proto-input-dev build-dep/dep. + + -- Cyril Brulebois Fri, 30 Dec 2011 00:01:35 +0100 + +xorg-server (2:1.11.99.2-1) experimental; urgency=low + + * New upstream snapshot. + * Bump input ABI and serverminver again. + + -- Cyril Brulebois Tue, 20 Dec 2011 11:39:51 +0100 + +xorg-server (2:1.11.99.1-1) experimental; urgency=low + + * New upstream release snapshot (on the way to 1.12). + * Bump libpciaccess-dev, x11proto-input-dev build-deps. + * Update xserver-xorg-dev's dependencies: + - Add libpixman-1-dev. + - Bump x11proto-input-dev. + * Update serverminver with new server and ABI versions. + * Drop patches (merged upstream): + - 07-xfree86-fix-build-with-xv-disabled.diff + - 15-nouveau.diff + + -- Cyril Brulebois Thu, 15 Dec 2011 18:49:10 +0100 + +xorg-server (2:1.11.4-0ubuntu11) quantal; urgency=low + + * Release buttons when device is disabled on suspend (LP: #968845) + - Add temporary patch 508_device_off_release_buttons.patch from upstream + + -- Chase Douglas Sat, 05 May 2012 13:17:34 -0700 + +xorg-server (2:1.11.4-0ubuntu10.1) precise-proposed; urgency=low + + [ Bryce Harrington ] + * Enable 227_null_ptr_midispcur.patch to apply + + [ Chase Douglas ] + * Update to xserver 1.12.1 for the input stack + * Drop patches merged upstream in 1.12.1: + - 501_touch_accept_end.patch + - 502_indirect_touch_window_set.patch + - 503_fix_mouse_warp.patch + - 504_implement_passive_touch_ungrab.patch + * Fix patch 506_touchscreen_pointer_emulation_checks.patch after upstream + review + * Fix various touchscreen issues (LP: #974887) + - Add temporary patch 506_touchscreen_fixes.patch, which is a combination of + multiple upstream patches + + -- Chase Douglas Thu, 19 Apr 2012 12:34:54 -0700 + +xorg-server (2:1.11.4-0ubuntu10) precise; urgency=low + + * Fix touchscreen pointer emulation (LP: #949791) + - Add temporary patch 506_touchscreen_pointer_emulation_checks.patch + + -- Chase Douglas Wed, 04 Apr 2012 16:53:33 -0700 + +xorg-server (2:1.11.4-0ubuntu9) precise; urgency=low + + * Report button press when touchscreen touch is active (LP: #972985) + - Add temporary patch 505_query_pointer_touchscreen.patch + - Fixes some compiz/unity touchscreen issues + + -- Chase Douglas Tue, 03 Apr 2012 19:04:01 -0700 + +xorg-server (2:1.11.4-0ubuntu8) precise; urgency=low + + [ Chase Douglas ] + * Fix crash at startup due to input option abi break (LP: #931397) + - Revert two commits from upstream 1.12 input stack + + [ Bryce Harrington ] + * debian/patches/227_null_ptr_midispcur.patch: + - Check for NULL pointer before dereferencing pointer from + miGetDCDevice. Fixes crash after connecting a bluetooth keyboard. + (LP: #930936) + + [ Chase Douglas ] + * Fix mouse warping and clipping (LP: #948938) + - Add temporary patch 503_fix_mouse_warp.patch + * Implement passive touch ungrab (LP: #968726) + - Add temporary patch 503_implement_passive_touch_ungrab.patch + * Bump lintian standards to 3.9.3 + + -- Chase Douglas Thu, 29 Mar 2012 18:09:19 -0700 + +xorg-server (2:1.11.4-0ubuntu7) precise; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Avoid loading the driver to test if it's available. Xorg will later load + and validate the module, and if it's already loaded it'll trigger an + error and invalidate the driver (LP: #959928) + + -- Ricardo Salveti de Araujo Tue, 20 Mar 2012 02:09:18 -0300 + +xorg-server (2:1.11.4-0ubuntu6) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Don't try to send events from the context of the SIGIO handler. That + leads to the dark side, or at least to server freezes when trying to + reveal the launcher in Unity (LP: #946954). May also fix other seemingly + random X server crashes. + - Add build-time tests to make check for barrier behaviour. These are + disabled, pending gtest, xorg-gtest, and xserver-xorg-video-dummy MIRs. + + -- Christopher James Halse Rogers Fri, 09 Mar 2012 19:16:02 +1100 + +xorg-server (2:1.11.4-0ubuntu5) precise; urgency=low + * Update to 1.12 input stack + * Drop input patches that have been merged upstream: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch + - 611-Fix-touch-punt-crash.patch + - 612-Fix-vcp-touches-corruption.patch + - 613-Keep-vcp-touch-class.patch + * Fix indirect touch grab handling (LP: #929408) + - Add temporary patch 501_touch_accept_end.patch + - Add temporary patch 502_indirect_touch_window_set.patch + + -- Chase Douglas Wed, 07 Mar 2012 15:36:20 -0800 + +xorg-server (2:1.11.4-0ubuntu4) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Make the velocity calculation more robust on screen edges. Fixes reveal + behaviour on nVidia 295.20 driver, which now clamps the pointer to the + visible screen area. (LP: #937792) + + -- Christopher James Halse Rogers Tue, 21 Feb 2012 17:04:41 +1100 + +xorg-server (2:1.11.4-0ubuntu3) precise; urgency=low + + * Fix touch class memory corruption + - Add 612-Fix-vcp-touches-corruption.patch + - Add 613-Keep-vcp-touch-class.patch + + -- Chase Douglas Mon, 13 Feb 2012 15:54:04 -0800 + +xorg-server (2:1.11.4-0ubuntu2) precise; urgency=low + + * Fix crash when punting a touch to a non-existent owner + - Add 611-Fix-touch-punt-crash.patch + + -- Chase Douglas Mon, 13 Feb 2012 12:10:02 -0800 + +xorg-server (2:1.11.4-0ubuntu1) precise; urgency=low + + [ Chase Douglas ] + * Allow for non-root config paths so xorg-gtest can be run without root + - Add 225_non-root_config_paths.patch backported from upstream + + [ Alberto Milone] + * debian/patches/226_fall_back_to_autoconfiguration.patch: + - Fall back to autoconfiguration for graphics drivers in some cases + instead of letting X fail when configuration files are available. + + [ Chase Douglas ] + * Update to 1.11.99.902 input stack + * Update to 1.11.4 for everything else + * Drop input patches that have been merged upstream: + - 220_dont_scale_indirect.patch + - 221_pointer_motion_update_fix.patch + - 222_touch_valuators_absolute.patch + - 223_indirect_touch_x_y_valuators.patch + * Add reviewed input patches that have not been merged upstream yet: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch (LP: #925785) + * Bump deps on x11proto-input-dev to 2.1.99.6 + + -- Chase Douglas Fri, 10 Feb 2012 16:27:25 -0800 + +xorg-server (2:1.11.3-0ubuntu10) precise; urgency=low + + * Drop 214_glx_dri_searchdirs.patch, drisearchdirs is no longer + exported in mesa's dri.pc because of multiarch and the only consumer + (dri-alternates) is no longer used. + + -- Robert Hooker Thu, 02 Feb 2012 12:08:55 -0500 + +xorg-server (2:1.11.3-0ubuntu9) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Implement proposed XFIXES 6.0 protocol. This protocol is subject to + change, use at own risk! + * debian/control: + - Bump build-dep on x11proto-fixes to pick up new protocol definition + + -- Christopher James Halse Rogers Fri, 27 Jan 2012 20:05:42 +1100 + +xorg-server (2:1.11.3-0ubuntu8) precise; urgency=low + + * debian/patches/224_return_BadWindow_not_BadMatch.diff: + - Fix the error values of a whole slew of window-related calls. + Fixes some gnome-settings-daemon aborts in XLib (LP: #903973) + + -- Christopher James Halse Rogers Mon, 23 Jan 2012 16:09:29 +1100 + +xorg-server (2:1.11.3-0ubuntu7) precise; urgency=low + + * Fixes for relative devices + - Add 220_dont_scale_indirect.patch + - Add 221_pointer_motion_update_fix.patch + - Add 222_touch_valuators_absolute.patch + - Add 223_indirect_touch_x_y_valuators.patch + + -- Chase Douglas Thu, 19 Jan 2012 16:23:28 -0800 + +xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low + + * Bump Build-Depends on x11proto-input-dev to 2.1.99.5 + + -- Chase Douglas Tue, 17 Jan 2012 22:22:57 +0100 + +xorg-server (2:1.11.3-0ubuntu5) precise; urgency=low + + * Add Breaks clause for XInput changes + - qt4-x11 < 4:4.8.0-1ubuntu2 (crashes due to XI ABI change) + - utouch-geis < 2.2.3 (infinite loop if utouch XCB backend is unavailable) + - utouch-frame < 2.1.0 (crashes due to XI ABI change) + - unity < 5.0.0 (crashes if utouch stack is unavailable) + + -- Chase Douglas Tue, 17 Jan 2012 22:03:35 +0100 + +xorg-server (2:1.11.3-0ubuntu4) precise; urgency=low + + * Merge in input changes from upstream master through commit 954bb99 + * Remove temporary patch 220_grab_event_time.patch + + -- Chase Douglas Tue, 17 Jan 2012 19:52:04 +0100 + +xorg-server (2:1.11.3-0ubuntu3) precise; urgency=low + + * Add temporary patch for fixing grab time bug + - Add 220_grab_event_time.patch + + -- Chase Douglas Wed, 11 Jan 2012 07:41:04 -0800 + +xorg-server (2:1.11.3-0ubuntu2) precise; urgency=low + + * Merge in input changes from upstream master through commit 8722ad6 + * Remove temporary patch 220_test-loop.patch, merged upstream + + -- Chase Douglas Tue, 10 Jan 2012 10:48:31 +0100 + +xorg-server (2:1.11.3-0ubuntu1) precise; urgency=low + + * New upstream bugfix release + * Merge in input changes from upstream master through commit e7df42a + * Bump input ABI + * Bump x11proto-input-dev build dependency version + * Add temporary patch for fixing a test case loop + - Add 220_test-loop.patch + + -- Chase Douglas Thu, 22 Dec 2011 12:11:39 -0800 + +xorg-server (2:1.11.2.902-1ubuntu1) precise; urgency=low + + * Drop prototype XI multitouch patches + * Merge in input changes from upstream master through commit 7da7aa9 + * Bump input ABI + * Refresh patches + - Drop 210_pixman_null_ptr_check.patch, merged upstream + + -- Chase Douglas Wed, 14 Dec 2011 16:06:37 -0800 + +xorg-server (2:1.11.2.902-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release candidate (1.11.3 RC2) + + -- Cyril Brulebois Sat, 10 Dec 2011 22:36:42 +0100 + +xorg-server (2:1.11.2.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.3 RC1): + - As usual: Fixes for various crashes and correctness issues. + - In particular: Fix for crash when starting a game (in wine) twice + (Closes: #637448). + - Also: Fix crashes with server regeneration (Closes: #649420). + * Add some lintian overrides: + - xserver-xorg-core: breaks-without-version against virtual packages + is perfectly OK. + * Don't forget to ship xorg.conf.d(5) in xserver-xorg-core. + + -- Cyril Brulebois Tue, 29 Nov 2011 17:04:09 +0100 + +xorg-server (2:1.11.1.902-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC2): + - Fixes for various crashes and correctness issues. + + -- Cyril Brulebois Wed, 02 Nov 2011 11:10:03 +0100 + +xorg-server (2:1.11.1.901-2) unstable; urgency=high + + * Merge from upstream to get CVEs fixed: + - Fix CVE-2011-4028: File disclosure vulnerability. + - Fix CVE-2011-4029: File permission change vulnerability. + * Set urgency to “high” accordingly. + + -- Cyril Brulebois Thu, 20 Oct 2011 15:04:53 +0200 + +xorg-server (2:1.11.1.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC1) + + Disable check of double-aligned in test/input.c on Renesas SH + (closes: #636673) + * Use dpkg-buildflags to enable hardening with recent dpkg. + * Enable PIE with DEB_BUILD_MAINT_OPTIONS, but add -Bsymbolic to LDFLAGS to + reduce performance loss from PIE. + * Pass --disable-silent-rules to configure. + * Drop dh_testroot from clean target. + * Add dummy build-{arch,indep} targets depending on build. + + -- Julien Cristau Sat, 15 Oct 2011 19:05:41 +0200 + +xorg-server (2:1.11.1-1) unstable; urgency=high + + [ Cyril Brulebois ] + * Bump glproto dependency for xserver-xorg-dev (Closes: #639651). + * Set urgency to “high” since there were no issues other than the libwfb + one (see below) in the last 4 weeks. + + [ Julien Cristau ] + * New upstream bugfix release + - belatedly bump extension ABI major + - add missing fbFoo → wfbFoo renames for libwfb.so, fixing issues with the + nvidia driver (closes: #641344) + + -- Cyril Brulebois Sat, 24 Sep 2011 11:23:17 +0200 + +xorg-server (2:1.11.0-1ubuntu1~prep1) oneiric; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes + - Fill in later + * Drop all XI2.1 multitouch patches, pending Chase's rework. + * 217_revert_bgnonevisitwindow.patch: + * 219_fedora-pointer-barriers.diff: + - Drop; included in the new upstream release. + + -- Christopher James Halse Rogers Sat, 10 Sep 2011 21:26:49 -0700 + +xorg-server (2:1.11.0-1) unstable; urgency=low + + [ Julien Cristau ] + * Make xvfb, xnest, xserver-xephyr and xserver-xfbdev provide the xserver + virtual package again. + + [ Cyril Brulebois ] + * New upstream release: + - Fix assertion failure when calling dixSetPrivate (Closes: #632549). + Thanks, Mohammed Sameer! + - Fix memcpy abuse in the fb layer (Closes: #626682). + + -- Cyril Brulebois Sun, 28 Aug 2011 12:53:06 +0200 + +xorg-server (2:1.10.99.901+git20110731-1) experimental; urgency=low + + [ Cyril Brulebois ] + * New upstream release candidate. + * Bump serverminver, as well as input and video ABI. + * Adapt 15-nouveau.diff to cope with the glxdricommon-ification of + GLX probing. Nouveau users might still see an error (EE) mentioning + the fallback to software rendering. + * Bump pixman build-dep/dep to 0.21.8. + * Bump xutils-dev build-dep for new macros. + * Drop libglib2.0-dev build-dep, no longer needed for unit tests. + * Bump x11proto-fixes-dev build-dep for pointer barriers support. + + [ Julien Cristau ] + * Update to git HEAD. + + DIX: Set backgroundState correctly for root window (Closes: #632134) + * Bump xproto, dri2proto and glproto build-dependencies. + * Merge packaging changes from the 1.10.x branch: + + Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + + And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + Bump Standards-Version to 3.9.2 (no changes). + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + * Drop obsolete 20-workaround-36986.diff. + * Fix patch stamp dependency. + + -- Julien Cristau Sun, 31 Jul 2011 22:15:07 +0200 + +xorg-server (2:1.10.4-1ubuntu1) oneiric; urgency=low + + [ Christopher James Halse Rogers ] + * Drop i8xx-disablement patch. 2.6.39 and later kernels contain a patch + which alledgedly fixes the cache-incoherency problems. (LP: #817814) + + [ Ricardo Salveti de Araujo ] + * debian/patches/112_armel-pvr-drv.patch: + - Include support for the pvr driver available on OMAP 4 (LP: #828494) + + [ Timo Aaltonen ] + * Merge from Debian unstable. + - Fixes Xephyr assert failure in dixGetPrivateAddr (LP: #821090) + * debian/rules: Modify the patch stampdir creation. + * Update patch 500_xi2.1.patch to apply. + * Refresh patches. + * debian/rules: Add PATH for the xvfb-run check, otherwise Xvfb is not found. + * debian/rules: Shift the xvfb-run test to be run later, to ensure that the + binaries are installed. + + [ Bryce Harrington ] + * debian/rules: Add check target invoking xvfb-run to test that it works + * debian/control: Add build dependency on xauth, required by xvfb-run + + [ Chase Douglas ] + * Add fixes for touch grab handling, courtesy of Carlos Garnacho + - 505_Xi_ensure_replayed_touch_events_have_devices.patch + - 506_Xi_ensure_touch_events_update_currentTime.patch + - 507_dix_Ensure_touch_events_are_delivered_to_next_client.patch + + -- Timo Aaltonen Fri, 09 Sep 2011 14:13:07 +0300 + +xorg-server (2:1.10.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + -- Cyril Brulebois Wed, 24 Aug 2011 10:44:42 +0200 + +xorg-server (2:1.10.3-1) unstable; urgency=medium + + [ Cyril Brulebois ] + * New upstream release (with just a version bump). + * Remove the Replaces: xdmx from xdmx-tools, that was before lenny. + * Add a Breaks: libgl1-mesa-dri-no-multiarch, to handle upgrades from + squeeze-backports (without multiarch) to wheezy (with multiarch). + * Set urgency to “medium” to speed things up. Migration to testing is + a prerequisite for squeeze backports. + + [ Julien Cristau ] + * Merge packaging changes lost from the 1.7 (squeeze) branch: + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + + Set default xkb rules to evdev on linux, to work around a wrong default in + configure.ac and an Xorg issue where it reverts to the default on reset. + Thanks to Bastian Blank for the report. + + -- Cyril Brulebois Sun, 07 Aug 2011 19:35:07 +0200 + +xorg-server (2:1.10.2.902-1ubuntu3) oneiric; urgency=low + + * debian/patches/220_xi21_always_deliver_raw_events.diff: + - Backport patch from the mailing list to deliver raw events regardless of + grab state. Bon appétit, DX! + + -- Christopher James Halse Rogers Mon, 11 Jul 2011 10:03:26 +1000 + +xorg-server (2:1.10.2.902-1ubuntu2) oneiric; urgency=low + + [ Bryce Harrington ] + * rules: patch needs to depend on stampdir, else it doesn't get created, + and 'debian/rules patch' malfunctions. + + [ Chase Douglas ] + * Fix event handling when neither X nor Y coordinates are set (LP: #806256) + - Added 504_fix_no_coords.patch + + [ Christopher James Halse Rogers ] + * rules: Add both /usr/lib/xorg/extra-modules and + /usr/lib/$MULTIARCH/xorg/extra-modules for extra modules. + Fixes GLX for the proprietary drivers after a mesa upgrade (LP: #807209) + + -- Christopher James Halse Rogers Fri, 08 Jul 2011 13:16:59 +1000 + +xorg-server (2:1.10.2.902-1ubuntu1) oneiric; urgency=low + + * Merge from Debian unstable. (LP: #441653) + - Update 500_xi2.1.patch to apply. + - Drop patch 218_randr-check-rotated-virtual-size-limits-correctly.diff, + fixed upstream. + * Update the crtc confinement patch with one that should work, with + further fixes from upstream. (LP: #389519) + * Dropped a bunch of old Breaks from xserver-xorg-core. + + -- Timo Aaltonen Tue, 05 Jul 2011 16:22:23 +0300 + +xorg-server (2:1.10.2.902-1) unstable; urgency=low + + * New upstream release (1.10.3 rc2): + - DIX: Set backgroundState correctly for root window (Closes: #632134). + * Drop 20-workaround-36986.diff, fixed upstream. + * Bump Standards-Version to 3.9.2 (no changes). + + -- Cyril Brulebois Sat, 02 Jul 2011 11:58:58 +0200 + +xorg-server (2:1.10.2-2) unstable; urgency=low + + * Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + * And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + -- Cyril Brulebois Fri, 17 Jun 2011 18:09:36 +0200 + +xorg-server (2:1.10.2-1ubuntu1) oneiric; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable, remaining changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + + Enable multitouch gestures. + - control: + + Xvfb depends on xauth, x11-xkb-utils, recommends libgl1-mesa-dri. + (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternative module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 217_revert_bgnonevisitwindow.patch: + Revert a commit that causes brief graphical corruption. (LP: 726807) + + 218_randr-check-rotated-virtual-size-limits-correctly.diff: + Fix rotation with nvidia driver. (LP: 740933) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + + 503_fix_masked_transformed_valuators.patch: + Fix masked transformed valuator handling (LP #774938) + * Drop patch 215_glx_drawable_refcounting.diff, similar fix included + upstream. + * Drop patch 121_only_switch_vt_when_active.diff, doesn't seem to + work anymore. + * videoabiver, inputabiver, xserver-xorg-dev.install: + Drop changes that are obsolete post-natty. + * Add 219_fedora-pointer-barrier.diff: + Pointer barrier and cursor confinement patch backported to 1.10. + + [ Christopher James Halse Rogers ] + * debian/control: + Bump mesa-common-dev build-dep to pick up multiarch DRI paths. + + -- Christopher James Halse Rogers Wed, 15 Jun 2011 10:51:18 +1000 + +xorg-server (2:1.10.2-1) unstable; urgency=low + + * New upstream release. + * Add 20-workaround-36986.diff to avoid test failures on *i386. + * On GNU/kFreeBSD, enable HAL support for the main build, but disable it + for the udeb build, thanks to Robert Millan (Closes: #596586). + + -- Cyril Brulebois Mon, 30 May 2011 11:37:37 +0200 + +xorg-server (2:1.10.1.901-1) experimental; urgency=low + + * New upstream release (1.10.2 rc1): + - Comes with some Xi fixes. + - Comes with many GLX fixes. + + -- Cyril Brulebois Sat, 07 May 2011 13:27:28 +0200 + +xorg-server (2:1.10.1-2) unstable; urgency=low + + * Build xserver-xorg-core-udeb on hurd-i386. Thanks, Samuel Thibault! + * Upload to unstable. + + -- Julien Cristau Thu, 28 Apr 2011 13:28:58 +0200 + +xorg-server (2:1.10.1-1ubuntu3) oneiric; urgency=low + + * Add 218_randr-check-rotated-virtual-size-limits-correctly.diff + - Fix rotation with nvidia driver. (LP: #740933) + + -- Timo Aaltonen Fri, 20 May 2011 00:07:11 +0300 + +xorg-server (2:1.10.1-1ubuntu2) oneiric; urgency=low + + * Fix masked transformed valuator handling (LP: #774938) + - Added debian/patches/503_fix_masked_transformed_valuators.patch + + -- Bryce Harrington Tue, 17 May 2011 14:44:58 -0700 + +xorg-server (2:1.10.1-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental (LP: #757972) + + -- Timo Aaltonen Tue, 19 Apr 2011 16:12:14 +0300 + +xorg-server (2:1.10.1-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Tue, 19 Apr 2011 03:08:08 +0200 + +xorg-server (2:1.10.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. + - dropped patches, included upstream: + 213_xichangehierarchy-check-oom.patch + 216_fix_sdksyms_build.diff, included upstream. + 218_getValuatorEvents_cleanup.patch + 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Timo Aaltonen Mon, 11 Apr 2011 09:51:56 +0300 + +xorg-server (2:1.10.0.902-1) experimental; urgency=low + + * New upstream release (1.10.1 rc2). + + -- Cyril Brulebois Sat, 09 Apr 2011 04:18:28 +0200 + +xorg-server (2:1.10.0.901-1) experimental; urgency=low + + * New upstream release (1.10.1 rc1). + * Relax build-dep and dep on x11proto-randr-dev since the XRandR 1.4 + bits were finally reverted upstream. + * Remove patch: 16-construct-paths-in-doxygen.conf.diff (merged + upstream). + * Pass --enable-xcsecurity to the main build to restore the XC-SECURITY + extension, thanks to Stefan Fritsch's report (Closes: #599657). + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + +xorg-server (2:1.10.0-0ubuntu3) natty; urgency=low + + [ Bryce Harrington ] + * patches/111_armel-drv-fallbacks.patch: Always fallback to -fbdev, + not just when no other X driver matches. (Thanks jcristau) + + [ Chase Douglas ] + * Fix jumpy cursor in XI 1.x applications. + (LP: #736500) + - Added 218_getValuatorEvents_cleanup.patch + - Added 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Bryce Harrington Thu, 31 Mar 2011 23:58:07 -0700 + +xorg-server (2:1.10.0-0ubuntu2) natty; urgency=low + + [ Chase Douglas ] + * patches/500_xi2.1.patch: Process ownership properly when activating an + async passive grab. + (LP: #733483) + + [ Bryce Harrington ] + * 217_revert_bgnonevisitwindow.patch: Cherrypick from upstream. Drops + recent change that inhibits drawing backfill for non-bg-None windows. + This causes a regression on -ati (at least) where menus and other + windows display graphical corruption briefly. + (LP: #726807) + + -- Bryce Harrington Thu, 24 Mar 2011 15:27:40 -0700 + +xorg-server (2:1.10.0-0ubuntu1) natty; urgency=low + + * Update to new upstream final release. + + Drop 16-construct-paths-in-doxygen.conf.diff; included in new upstream. + * debian/patches/216_fix_sdksyms_build.diff: + + Cherry-pick from 1.10 branch, fixing the stale sdksyms.c file picked up + in the udeb build, causing the udeb build to fail with missing symbols. + * Merge from unreleased Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + + Bump build-depends on mesa-common-dev to pick up dri.pc DRI search + paths change for 214_glx_dri_searchdirs.patch + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 215_glx_drawable_refcounting.diff: + Prevents segfault on logout and server regenerate, and possibly other + times. (LP #711422) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + * debian/serverminver: + - Bump to 1.10.0-0ubuntu1~ for Xi 2.1 ABI + * New upstream release fixes crash in Record, trigerred by x11vnc + (LP: #525066) + * Refresh 500_xi2.1.patch for new upstream version + * debian/videoabiver: + - Bump to 10 for XRandR 1.4 revert. + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + + +xorg-server (2:1.9.99.903-1) experimental; urgency=low + + * New upstream release candidate (1.10 rc3). + * Remove patch: 17-fix-ftbfs-on-sparc.diff (merged upstream). + * Remove patch: 20-update-gpu-pitch.diff (merged upstream). + * Refresh patch: 07-xfree86-fix-build-with-xv-disabled.diff + * Replace patch fixing out-of-tree-build: + - 16-oot-build.diff (dirty local hack). + + 16-construct-paths-in-doxygen.conf.diff (from upstream, + without the gitignore hunk to get patching working). + * Bump video ABI version, and serverminver accordingly. + + -- Cyril Brulebois Fri, 25 Feb 2011 15:22:39 +0100 + +xorg-server (2:1.9.99.902-3) experimental; urgency=low + + * Merge from master up to 93a7399370. + * New patch: 17-fix-ftbfs-on-sparc.diff; let's try it for real before + asking for its being merged upstream. + * Refresh all patches. + + -- Cyril Brulebois Wed, 23 Feb 2011 13:36:13 +0100 + +xorg-server (2:1.9.99.902-2ubuntu2) natty; urgency=low + + [ Timo Aaltonen ] + * Remove 169_mipointer_nullptr_checks.patch, fixed in another way + upstream since 1.6.1.901. + + [ Chase Douglas ] + * Cancel touch clients if emulated button press is delivered. + (LP: #725191) + * Check slave device touch selection mask during implicit grab. + (LP: #725241) + * Cancel slave touch selections when attached to master device. + (LP: #723904) + * Check for touch selections only when there are active clients. + (LP: #723900) + * Prevent pointer motion when more than one touch on touchpad. + (LP: #730881) + + [ Bryce Harrington ] + * Drop specification for linux-any. Breaks pbuilder test builds. + + -- Chase Douglas Mon, 07 Mar 2011 14:28:02 -0500 + +xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + * 211_glx_fix_bindtextimageext_length_check.patch: + * 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Drop; these cherry-picks are included in 1.10RC2 + * 214_glx_dri_searchdirs.patch: + - Fix dlclose/free snafu. (LP: #722563) + - Fix nouveau check to downgrade missing DRI error messages to info. + We don't support nouveau's 3D, so let's not complain too strenuously + when it's not installed. + * 215_glx_drawable_refcounting.diff: + - Refcount GLXDrawables to avoid use-after-free crashes. Patch from + xorg-devel mailing list. Prevents segfault on logout and server + regenerate, and possibly other times. (LP: #711422) + * debian/inputabiver, + debian/videoabiver, + debian/xserver-xorg-dev.install + - Temporarily re-add these to xserver-xorg-dev so we don't need to merge + all the driver changes from Debian en masse. These should be dropped + once all drivers have been merged from Debian, and certainly in Natty+1. + * debian/serverminver: + - Include 2ubuntu1 string; Xi 2.1 bumps the minor input ABI, so drivers + built against it need the Xi 2.1 patched server. + + [ Timo Aaltonen ] + * debian/patches/216_dix-valuator-count-of-0-is-valid.diff: + - For all but motion and proximity events, having no valuators is ok. + Regression from 1.9, keyboard events are not converted to protocol + events. (LP: #714696) + + [ Chase Douglas ] + * Add in preliminary xi2.1 support + - Added 500_xi2.1.patch + - Moved 202_xf86CoordinationsToWindows.patch to + 501_xf86CoordinatesToWindow.patch + - Moved 203_gestures-extension.patch to 502_gestures-extension.patch + - Bump dependency on x11proto-input for xi 2.1 + + -- Christopher James Halse Rogers Wed, 23 Feb 2011 09:40:07 +1100 + +xorg-server (2:1.9.99.902-2) experimental; urgency=low + + * Bump dependency on x11proto-randr-dev, needed since xorg-server.pc + pulls a newer randrproto version. + * Merge from debian-unstable (picking packaging updates from 2:1.9.4-3). + * Mention some basic checks to perform when updating to a new upstream + release, in README.source: ABI bumps and SDK_REQUIRED_MODULES updates. + * Accordingly: + - Bump the x11proto-xext-dev dependency. + - Don't bump the x11proto-kb-dev dependency (even etch had a + sufficient version). + + -- Cyril Brulebois Sun, 20 Feb 2011 07:02:20 +0100 + +xorg-server (2:1.9.99.902-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.10 rc1) + * Drop 16-xaa-fbcomposite-fix-negative-size.diff, the mod macro that this + patch fixes is no longer used. + * debian/control: + - Bump x11proto-randr-dev and x11proto-xext-dev build-deps to 1.3.99 and + 7.1.99 for new XRandR and XSync extension protocols. + + [ Julien Cristau ] + * Bump serverminver and ABI versions. + + [ Cyril Brulebois ] + * New upstream release (1.10 rc2). + * bug script: Report libGL-related diversions. + * Bump serverminver again, since ABI_XINPUT_VERSION was bumped from 12.0 + to 12.2. + * Update debian/copyright from upstream COPYING. + * Add patch to work around out-of-tree issues: 16-oot-build.diff + + -- Cyril Brulebois Sat, 19 Feb 2011 15:29:54 +0100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu6) natty; urgency=low + + * debian/patches/214_glx_dri_searchdirs.patch: + - Search for DRI drivers for AIGLX in the same set of directories as mesa. + Allows us to fall back to the classic radeon drivers when KMS is not + available. + * debian/rules: + - --disable-builddocs → --disable-devel-docs to match upstream rename. + Makes local builds faster and less prone to doxygen errors. + * debian/control: + - Bump build-depends on mesa to pick up new drisearchdirs variable in + dri.pc + + -- Christopher James Halse Rogers Fri, 18 Feb 2011 17:03:46 +1100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu5) natty; urgency=low + + * Add 213_xichangehierarchy-check-oom.patch: Another NULL pointer check + for out-of-memory conditions, this time leading to a segfault in an + unchecked calloc in XISendDeviceHierarchyEvent(). + (LP: #720445) + + -- Bryce Harrington Wed, 16 Feb 2011 16:46:35 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu4) natty; urgency=low + + * Add 211_glx_fix_bindtextimageext_length_check.patch, + 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Correct wrong request size match for xGLXCreateGLXPbufferSGIXReq. + This can result in some invalid BadLength errors. + (LP: #714280) + + -- Bryce Harrington Mon, 14 Feb 2011 12:07:45 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu3) natty; urgency=low + + * Restore 208_switch_on_release.diff - the patch does not appear to be + upstream actually. Users confirm the fix regressed without it. + (LP: #711842) + * Add 210_pixman_null_ptr_check.patch: pixman_image_create_bits() can + return NULL under a variety of circumstances, thus needs checked + before dereferencing it in the pixman_image_set_has_client_clip() + call. + (LP: #705078, deb: 596155, fdo: 28882) + + -- Bryce Harrington Thu, 03 Feb 2011 22:42:52 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu1) natty; urgency=low + + * Merge from (unreleased) debian-experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Refresh 121_only_switch_vt_when_active.diff for new upstream. + * Drop 187_edid_quirk_hp_nc8430.patch; upstream. + * Drop 189_xserver_1.5.0_bg_none_root.patch; functionality now upstream. + * Refresh 190_cache-xkbcomp_output_for_fast_start_up.patch for new upstream. + * Drop 197_xvfb-randr.patch: + - miRandR, which this used, has been removed from the server. + * Drop 204_fix-neg-sync-transition.patch; upstream. + * Drop 207_dga_master_device.patch; upstream. + * Drop 208_switch_on_release.diff; upstream. + * debian/patches/209_add_legacy_bgnone_option.patch: + - Add "-nr" as a synonym for "-background none" to ease the transition from + the old 189_xserver_1.5.0_bg_none_root.patch patch. Can be dropped once + all the ?DM have been updated to use the new option. + * debian/control: + - Add Breaks: to xserver-xorg-video-8 and current fglrx. These proprietary + drivers don't yet have appropriate dependency information, so manually + handle them here to prevent broken upgrades. + + -- Christopher James Halse Rogers Mon, 31 Jan 2011 19:45:19 +1100 + +xorg-server (2:1.9.4-3) unstable; urgency=low + + * Maintainer script clean-up: + - xserver-xorg-core.preinst.in: Remove, 1.5 is long gone. + - xserver-xorg-core.postinst.in: Remove, 1.5 is long gone, and 1.7.4 + was between lenny and squeeze. + - xserver-xorg-core.postrm.in: Rename as xserver-xorg-core.postrm, + handling upgrades from 1.5 is no longer needed, only keep the logs + removal and the #DEBHELPER# placeholder. + * Move remaining xsfbs bits to debian/rules: + - Create/clean stampdir/. + - Use quilt.make, $(QUILT_STAMPFN), unpatch. + - Define SOURCE_NAME and SOURCE_VERSION. + * Remove debian/xsfbs accordingly. + * Remove reference to xsfbs in README.source accordingly. + * Add patch: 20-update-gpu-pitch.diff (from upstream bug 33929), fixing + issues with the radeon driver (Closes: #613957). + + -- Cyril Brulebois Sun, 20 Feb 2011 05:35:50 +0100 + +xorg-server (2:1.9.4-2) unstable; urgency=low + + * Put an end to the dependency hell! Now that we have proper + dependencies between drivers and the server, remove xserver-xorg from + xserver-xorg-core's Depends (Closes: #362313). In a nutshell, one may + want to choose between installing: + - xserver-xorg-core: the server itself, with no strings attached. + - xserver-xorg: pulls the server and drivers, contains the X wrapper + and some documentation. + - xorg: pulls xserver-xorg as well as various X11 clients and fonts. + * bug script: Report KMS configuration files and their contents. + * bug script: Keep only one lspci call (with proper filtering), which + makes PCI IDs come back. + * bug script: Report libGL-related diversions. + * Stop providing xorg-input-abi-11.0 and xorg-video-abi-8.0 now that + drivers have reached unstable. + * Merge server-1.9-branch up to 0a4b0de9af. + + -- Cyril Brulebois Wed, 16 Feb 2011 23:17:07 +0100 + +xorg-server (2:1.9.4-1) unstable; urgency=low + + * The “squeeze is released, target sid!” upload. + * New upstream release. + * Unfuzzy all patches. + * Get rid of long obsolete NEWS file. + * Replace “--remaining-packages” with “-Nfoo -Nbar” in the “dh_strip -s” + call, to avoid non-stripped binaries if the build is resumed. + * Use “dh_prep” instead of deprecated “dh_clean -k”. + * Bump debhelper build-dep accordingly. + * Introduce dh_xsf_substvars, to be used in driver packages to set + appropriate substitution variables for Depends and Provides, before + calling dh_gencontrol. Ship it in xserver-xorg-dev. + * Also ship a debhelper sequence: xsf.pm, to insert dh_xsf_substvars + before dh_gencontrol. Usage: “dh $@ --with xsf” when using dh. + * Get rid of inputabiver and videoabiver files, they've been deprecated + for a while, and drivers should all have switched by now. + * rules: Only read the first line of debian/serverminver to set the + serverminver variable, used to prepare xinputdep and videodrvdep + files. + * rules: Keep only the major ABI version from pkg-config's output to + build xorg-{input,video}-abi-$ABI. To handle minor ABI versions, we + have the serverminver mechanism. + * To avoid having to binNMU all drivers to update their Depends from + xorg-*-abi-$MAJOR-$MINOR to xorg-*-abi-$MAJOR, add xorg-video-abi-8.0 + and xorg-input-abi-11.0 to the server's Provides temporarily (until + the next ABI bump). + * Add ${videoabi}, ${inputabi} to the udeb's Provides. There's no reason + for udebs to have loose dependencies. + * Accordingly, copy server's substvars as udeb's substvars once the + videoabi/inputabi variables are computed. + * Add an abibumpcheck target which checks for xinput and videodrv ABI + updates, based on the versions stored in debian/serverminver; make + clean depend on it to make sure such an update is noticed at the very + beginning of the build. + * Add current versions to debian/serverminver accordingly. + * Remove “xserver” from Provides, it's deprecated. + * Use architecture wildcards for build-deps. + * Make xserver-xfbdev linux-any; add armhf and powerpcspe to the udeb + (Closes: #585697, #605764). + * Cherry-pick, thanks to Samuel Thibault (Closes: #590715): + - xserver: enable TLS even if AIGLX is not enabled + * Update Uploaders list. Thanks, David & Steve & Brice! + * Bump Standards-Version to 3.9.1 (no changes needed). + + -- Cyril Brulebois Sat, 05 Feb 2011 10:40:55 +0100 + +xorg-server (2:1.9.3.902-1) experimental; urgency=low + + * New upstream release (1.9.4 rc2). + * Improve bug script: + - Stop reporting about roster and checksum for config file and server + symlink, they are no longer used. + - Replace printf with echo everywhere, it's slightly more readable and + all lines are newline-terminated anyway. + - Also use a “pecho” (pretty echo) function to underline some strings, + making the output slightly more readable. + - Fix listing xorg.conf.d's contents. Previously, that was only done + if xorg.conf existed. + - Check for local libraries by running ldd on the server. + - Check for obsolete libraries in the same way (/usr/X11R6/lib might + still exist in some cases, and be referenced in /etc/ld.so.conf, so + using ldd is sufficient to find out, see #546836 for an example). + + -- Cyril Brulebois Mon, 31 Jan 2011 14:00:41 +0100 + +xorg-server (2:1.9.3.901-1) experimental; urgency=low + + * New upstream release (1.9.4 rc1). + + -- Cyril Brulebois Sun, 09 Jan 2011 03:10:13 +0100 + +xorg-server (2:1.9.2.902-1) experimental; urgency=low + + * New upstream release (1.9.3 rc2). + * Drop 06_dont_trap_access_to_timer_and_keyboard.diff, merged upstream. + + -- Cyril Brulebois Sun, 05 Dec 2010 02:16:14 +0100 + +xorg-server (2:1.9.2-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Wed, 10 Nov 2010 00:10:19 +0100 + +xorg-server (2:1.9.0.902-1ubuntu4) natty; urgency=low + + * Add 208_switch_on_release.diff: Perform keyboard layout switches on + key-release rather than key-press events. This solves a very + long-standing issue where e.g. ++ fails when + ctrl+shift is configured for layout switching. + (LP: #36812) + + -- Bryce Harrington Thu, 06 Jan 2011 14:35:59 -0800 + +xorg-server (2:1.9.0.902-1ubuntu3) natty; urgency=low + + * Add 207_dga_master_device.patch: Cherrypick from upstream xserver git + to fix crash with a bluetooth keyboard when using XBMC full screen. + (LP: #597895) + + -- Bryce Harrington Thu, 06 Jan 2011 12:17:16 -0800 + +xorg-server (2:1.9.0.902-1ubuntu2) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Cherry-pick 3effb61e from server-1.9 branch. Fixes a typo in Xinerama + support which caused Qt apps to crash X when using Xinerama multi-head + (LP: #650539) + + [ Robert Hooker ] + * Add 105_nvidia_fglrx_autodetect.patch, enables fglrx and nvidia to work + without an xorg.conf. + * debian/local/64-xorg-xkb.rules, control: Use keyboard-configuration + information for keymaps (/etc/default/keyboard) + + -- Robert Hooker Wed, 05 Jan 2011 11:29:17 -0500 + +xorg-server (2:1.9.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP: #516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: #616678) + + 204_fix-neg-sync-transition.patch: + Fixes gnome screensaver fade being uninterruptable. (LP: #595555) + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Drop 205_udev-product-ids.patch, merged upstream. + + -- Robert Hooker Mon, 18 Oct 2010 11:19:33 -0400 + +xorg-server (2:1.9.0.902-1) experimental; urgency=low + + * New upstream release (1.9.1 rc2). + * Drop 20-Revert-for-bug-30267.diff, merged upstream. + + -- Cyril Brulebois Sat, 16 Oct 2010 15:24:48 +0200 + +xorg-server (2:1.9.0.901-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.9.0): + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + + [ Cyril Brulebois ] + * New upstream release (1.9.1 rc1). + * Add patch: 20-Revert-for-bug-30267.diff, to fix FTBFS due to test + failures, see https://bugs.freedesktop.org/show_bug.cgi?id=30267 for + reference. + * Bump xutils-dev build-dep for new macros. + * Remove --disable-multibuffer from configure flags, that extension is + gone for real now. + + -- Cyril Brulebois Tue, 12 Oct 2010 22:13:20 +0200 + +xorg-server (2:1.9.0-0ubuntu6) maverick; urgency=low + + [ Chase Douglas ] + * Fix udev USB product ID parsing (LP: #628214) + - debian/patches: + + 205_udev-product-ids.patch + + [ Christopher James Halse Rogers ] + * debian/patches/206_intel_8xx_default_to_fbdev.patch: + - Don't autoload the intel driver on i830, i845g and i855. These are + still too unstable with KMS/GEM. X will autoload the fbdev driver + (if using KMS) or the vesa driver instead. (LP: #633593) + + -- Christopher James Halse Rogers Mon, 13 Sep 2010 18:48:54 +1000 + +xorg-server (2:1.9.0-0ubuntu5) maverick; urgency=low + + * debian/control: + - fix duplicated breaks for xserver-xorg-video-v4l + + -- Michael Vogt Wed, 08 Sep 2010 10:57:49 +0200 + +xorg-server (2:1.9.0-0ubuntu4) maverick; urgency=low + + * debian/control: + - add more "breaks" for leftover drivers that have no + xserver 1.9 abi version, thanks to Jean-Baptiste Lallement + (LP: #614993) + + -- Michael Vogt Tue, 31 Aug 2010 10:52:29 +0200 + +xorg-server (2:1.9.0-0ubuntu3) maverick; urgency=low + + * debian/control: + - add additional breaks for video drivers that have no ABI for + xserver 1.9 (LP: #614993) + - merge the "breaks" list from the debian git tree + + -- Michael Vogt Tue, 31 Aug 2010 10:04:01 +0200 + +xorg-server (2:1.9.0-0ubuntu2) maverick; urgency=low + + * debian/control: + - add explict breaks from xserver-xorg-core against + xserver-xorg-video-v4l (<< 1:0.2.0-4ubuntu1) to ensure that + upgrades with universe disabled work (LP: #614993) + + -- Michael Vogt Mon, 30 Aug 2010 15:40:07 +0200 + +xorg-server (2:1.9.0-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: 616678) + + debian/serverminver: + Bump for gesture support + * New upstream release: + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + * debian/patches/204_fix-neg-sync-transition.patch: + - Fix edge case in SYNC extension resulting in GNOME screensaver's + fade-to-screensaver being uninteruptible. (LP: #595555) + + -- Christopher James Halse Rogers Tue, 24 Aug 2010 15:44:10 +1000 + +xorg-server (2:1.8.99.905-1ubuntu3) maverick; urgency=low + + * Bump debian/serverminver for gesture support + + -- Chase Douglas Fri, 20 Aug 2010 16:35:22 -0400 + +xorg-server (2:1.8.99.905-1ubuntu2) maverick; urgency=low + + * Add in gesture support (LP: #616678) + - add debian/patches/203_gestures-extension.patch + and debian/patches/202_xf86CoordinationsToWindows.patch + - debian/rules: + - add configure option to enable gesture + + -- Chase Douglas Mon, 09 Aug 2010 14:33:40 +0000 + +xorg-server (2:1.8.99.905-1ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for 1.8.1.902-1 which became 1.8.99.904-1 + * Drop 196_xvfbscreeninit-handling.patch: it's semantically empty, and now + doesn't apply. Merge remaining #include change into 197_xvfb-randr.patch + * New upstream version will start correctly when no outputs are connected, + as long as the video driver can dynamically resize the framebuffer + (true for all KMS drivers) (LP: #337889) + * New upstream version fixes crash on non-admin logout with KDE (LP: #569879) + * Refresh 111_armel-drv-fallbacks.patch to fix the build on armel + + -- Christopher James Halse Rogers Thu, 05 Aug 2010 11:25:14 +1000 + +xorg-server (2:1.8.99.905-1) experimental; urgency=low + + * Drop recommends on xbase-clients. + * Add xauth to xserver-common recommends. + * Bump Standards-Version to 3.9.0. + * Don't install serverminver, drivers shouldn't use this anymore. + * New upstream release candidate. + + -- Julien Cristau Sat, 17 Jul 2010 11:13:32 +0100 + +xorg-server (2:1.8.99.904-1) experimental; urgency=low + + [ Julien Cristau ] + * Install the upstream changelog in xserver-common, instead of duplicating + its 1MB in all other packages. + * Stop repacking the tarball: the non-modifiable README.DRI was removed + upstream. + * Bump build-deps on x11proto-core-dev, x11proto-dri2-dev, libxfont-dev. + * Bump xserver-xorg-dev dependency on x11proto-core-dev and + x11proto-dri2-dev, add dependency on x11proto-xinerama-dev. + * Bump serverminver, videoabiver, inputabiver. + + [ Christopher James Halse Rogers ] + * New upstream RC + - A number of DRI2 fixes. + - Fix for hanging OpenGL clients with multiple heads. + * 17-fix-DRI2-segfault-when-clientGone.diff: + - Pick up fix from https://bugs.freedesktop.org/show_bug.cgi?id=27497 to + fix server crash in DRI2SwapEvent handling (LP: #595182). + + -- Julien Cristau Fri, 09 Jul 2010 12:45:09 +0100 + +xorg-server (2:1.8.1.902-0ubuntu2) maverick; urgency=low + + * debian/rules: + - Drop the upstream changelog harder. We're scrabbling for CD space + and this is an easy 1MB saving. + + -- Christopher James Halse Rogers Wed, 30 Jun 2010 09:50:33 +1000 + +xorg-server (2:1.8.1.902-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for previously unreleased Debian 1.8.1.901-1 + + -- Christopher James Halse Rogers Wed, 23 Jun 2010 11:19:49 +1000 + +xorg-server (2:1.8.1.901-1ubuntu1) maverick; urgency=low + + [ Timo Aaltonen ] + * Merged from Debian experimental, remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils, recommends + libgl1-mesa-dri. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Dropped patches: + - 106_nouveau_autodetect.patch: obsoleted by 15-nouveau.diff + - 112_xaa-fbcomposite-fix-negative-size.patch: adopted by Debian + - 113_quell_nouveau_aiglx.patch: obsoleted by 15-nouveau.diff + - 115_xext_fix_cursor_ref_counting.patch: merged upstream + - 116_fix_typos_in_swap_functions.patch: merged upstream + - 118_xkb_fix_garbage_init.patch: merged upstream + - 123_exa_sys_ptr_nullpointer_check.patch: merged upstream + - 199_xfvb-help-typo.patch: merged upstream + * debian/xserver-xorg-core.preinst.in: Drop the removal of the wrong + alternative, obsolete by now. + * debian/control: Build the udeb and bump the relaxed build-deps. + * debian/local/xvfb-run: Don't disable composite, seems to run fine + with it nowadays. + + [ Robert Hooker ] + * Fix 190_cache-xkbcomp_output_for_fast_start_up.patch so it works. + * Drop 164_trap-aspect-ratios.patch: obsolete. + * debian/rules: Adjust confflag targets so xcsecurity isn't enabled for udeb + with disabled xace. + * Drop 184_virtual_devices_autodetect.patch: It's a noop with todays autoconfig. + + [ Bryce Harrington ] + * debian/rules: Don't reference the package uploader for support; instead point + users to the standard Ubuntu support page. + (LP: #589811) + + [ Christopher James Halse Rogers ] + * Add debian/gbp.conf pointing at ubuntu branch. + * Drop 109_fix-swcursor-crash.patch; merged upstream in 3a3edb2c. + * 122_xext_fix_card32_overflow_in_xauth.patch: Update to most recent patch + on patchwork. This patch actually works! (tested with + “xauth generate :0 . trusted timeout 99999999) (LP: #519049) + + -- Bryce Harrington Mon, 07 Jun 2010 14:50:49 -0700 + +xorg-server (2:1.8.1.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release + * Merge changes from 2:1.7.7-2. + + [ Christopher James Halse Rogers ] + * 16-xaa-fbcomposite-fix-negative-size.diff: + - mi hunk merged upstream. Update to keep just the fbpict.c hunk. + + -- Julien Cristau Mon, 07 Jun 2010 23:22:48 +0200 + +xorg-server (2:1.8.1-1) experimental; urgency=low + + * New upstream release + - 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff: partly merged + upstream, rest renamed to 02_Add-libnettle-as-option-for-sha1.diff and + ported to new version + - 05_only_call_gamma_set_if_nonnull.diff: merged upstream + - 07-xfree86-fix-build-with-xv-disabled.diff: rediffed + - 08-config-xorg-conf-d.diff: merged upstream + - 09-inputclass-sans-abi9.diff: likewise + - 10-config-libudev-backend.diff: likewise + - 11-xfree86-fix-video-fallback.diff: likewise + - 12-xfree86-dont-complain-about-missing-coredevices.diff: likewise + - 13-unbreak-input-abi.diff: obsolete + - 14-tone-down-nidr-errors.diff: merged upstream + - 15-nouveau.diff: rediffed + - 17-xfree86-saner-conf-search-paths.diff: merged upstream + - 18-Add-10-evdev.conf.diff: likewise + * Bump xutils-dev build-dep for new macros. + * Add build-dep on xfonts-utils for fontutil.pc. + * Bump build-deps on mesa, glproto and dri2proto. + * Drop obsolete configure options --disable-xsdl and + --disable-null-root-cursor. + * --enable-werror has been replaced by --enable-strict-compilation, adjust + rules. + * xdmx-tools.install: xdmx was renamed to dmxinfo. + * Bump debian/serverminver and ABI versions. + + -- Julien Cristau Wed, 12 May 2010 18:01:39 +0200 + +xorg-server (2:1.7.7-2) unstable; urgency=low + + * autoconfig: load the nouveau driver for nvidia hw. Stolen from F13. + * Try to catch non-event devices when running udevadm info in the bug + script. + * Pull from upstream server-1.7-nominations branch + - dix: make DeviceEvent coordinates signed for Xinerama (closes: #581763) + - xfree86: dga needs to use the master keyboard state (closes: #576393) + - Fix null pointer dereference in xf86_reload_cursors (closes: #507916) + + -- Julien Cristau Thu, 03 Jun 2010 17:00:18 +0200 + +xorg-server (2:1.7.7-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Update patch 17; Add missing __datadir__ to cpprules.in. + + [ Cyril Brulebois ] + * Add listing files under /etc/X11/xorg.conf.d in bug script. + * Fix typo in 10-mouse.conf: s/Mouse/Pointer/ (Closes: #579130). + + [ Julien Cristau ] + * Drop the GLX 1.4 patches to fix server crashes with DRI2 (closes: + #567677). + * Change driver ABI Conflicts to Breaks. Drop old Conflicts/Replaces on + pre-modular xserver packages. + * Unset PRERELEASE to avoid the prerelease warning in the log. + * New upstream release: + - fixes Xvfb crash with XI2 (closes: #575905) + - EXA: Check sys_ptr isn't NULL before passing it to the UploadToScreen + hook (closes: #576656) + * 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff is now upstream, + remove it. + * Drop mention of input_id from debian/copyright since we stopped shipping + it a while back. + + -- Julien Cristau Tue, 04 May 2010 15:17:59 +0200 + +xorg-server (2:1.7.6.901-3) unstable; urgency=low + + [ Julien Cristau ] + * On !linux, install mouse and kbd catchall snippets in the xorg.conf.d + directory. Fixes FTBFS on those archs. + + [ Cyril Brulebois ] + * Cherry-pick “exa: handle pixmap create/destroy in lower layers” which + fixes server crashes when pixmaps are created in the course of + software fallbacks (Closes: #576816). Many thanks to Arthur Marsh for + the tests! + + -- Cyril Brulebois Mon, 19 Apr 2010 15:26:15 +0200 + +xorg-server (2:1.7.6.901-2) unstable; urgency=low + + * Fix dependency generation: Replace PKG_CONFIG_DIR with PKG_CONFIG_PATH + (/usr/share/xserver-xorg/{videodrv,xinput}dep may lack a version + otherwise). + + -- Cyril Brulebois Sat, 17 Apr 2010 18:38:17 +0200 + +xorg-server (2:1.7.6.901-1) unstable; urgency=low + + * New upstream release candidate. + - Fix crash when all glyphs of a given depth are freed, but not all + glyphsets (closes: #568533) + + [ Cyril Brulebois ] + * Steal patch 112_xaa-fbcomposite-fix-negative-size.patch from ubuntu, + and rename it 16-xaa-fbcomposite-fix-negative-size.diff as it's now + applied in Debian as well. It fixes arithmetic bugs in mod(); thanks to + Bryce Harrington. + * Merge 'xsfbs/debian-unstable' to fix target dependencies, which fixes + useless rebuilds. + * Add support for “noudeb” in DEB_BUILD_OPTIONS to disable building the + udeb flavour (even on architectures where udebs are supposed to be + built) to speed up debug builds. When this is used, the udeb is still + built, but rather empty… + * Modify bug script to include kernel version (from /proc/version) since + the uname in Xorg.*.log might not give enough details (like the Debian + revision). + + [ Julien Cristau ] + * Remove from debian/rules an obsolete reference to + /usr/share/debhelper/dh_make/debianm/rules. + * Make xserver-xorg-core provide ABI-versioned virtual packages for drivers + to depend on. This is a first step in making our ABI handling saner (see + #573371). + * xvfb-run: don't rely on /tmp/X$i-lock to bump $SERVERNUM in auto-servernum + mode (closes: #577195). Thanks, Jozef Kutej! + * Bump serverminver for new handling of input config. + * Add Breaks on input drivers installing files in /usr/lib/X11/xorg.conf.d + since we're changing the path. + * Stop looking for x11_driver property in udev, since we're migrating the + drivers over to xorg.conf.d anyway. + * Install 10-evdev.conf in /usr/share/X11/xorg.conf.d (from upstream, patch + 18-Add-10-evdev.conf.diff). + + [ Timo Aaltonen ] + * Add 17-xfree86-saner-conf-search-paths.diff. Allows using another + xorg.conf.d directory for local changes. + + -- Cyril Brulebois Sat, 17 Apr 2010 16:55:39 +0200 + +xorg-server (2:1.7.6-2ubuntu8) lucid-updates; urgency=low + + [Bryce Harrington] + * Add 123_exa_sys_ptr_nullpointer_check.patch: Patch from upstream to + verify a pointer is not NULL before dereferencing it. Fixes X + segfault in miCopyRegion which occurs while using firefox (e.g. typing + into fields in AOL). Issue found by Jerry Lamos. + (LP: #539772) + * Add 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff: Patch + from Debian to fix X segfault on mouse click in xfig, when pixmaps + are created in the course of software fallbacks. + (LP: #553647) + + [Martin Pitt] + * debian/local/64-xorg-xkb.rules: Ignore XKBMODEL=="SKIP" and + XKBVARIANT=="U.S. English", which happen to get into + /etc/default/console-setup in some cases like the VMWare automatic + installer. + (LP: #548891) + + -- Bryce Harrington Wed, 28 Apr 2010 13:10:44 -0700 + +xorg-server (2:1.7.6-2ubuntu7) lucid; urgency=low + + * Drop 117_fix_crash_with_createglyphset.patch + - Dupe of patch 110 + * Drop 03_fedora_glx_versioning.diff, 04_fedora_glx14-swrast.diff + - These patches were brought in by Debian to provide glx 1.4 support + which Fedora backported from xserver 1.8, however testing in + Ubuntu showed they caused a crash when closing Clutter apps (#550218), + and graphics corruption when opening windows. Dropping these patches + returns us to GLX 1.2, which has been found to be stable; Debian has + also dropped these two patches. + (Fixes #565903). + * Drop 114_dri2_make_sure_x_drawable_exists.patch + - This was an early attempt by upstream which fixed the aforementioned + Clutter crash, but which introduced a memory leak. + (Fixes #565981) + + -- Bryce Harrington Thu, 22 Apr 2010 17:24:38 -0700 + +xorg-server (2:1.7.6-2ubuntu6) lucid; urgency=low + + * Add 122_xext_fix_card32_overflow_in_xauth.patch: Prevent overflow + of a CARD32 variable millis by doing bounds checking. This is a + patch currently in discussion at fdo #27134, so this patch can be + dropped in favor of whatever upstream decides to include. + (LP: #519049) + + -- Bryce Harrington Thu, 15 Apr 2010 14:10:53 -0700 + +xorg-server (2:1.7.6-2ubuntu5) lucid; urgency=low + + * Update patches in previous upload to fix FTBS issue. + + -- Bryce Harrington Thu, 15 Apr 2010 11:03:01 -0700 + +xorg-server (2:1.7.6-2ubuntu4) lucid; urgency=low + + * Add several cherrypicks of fixes from upstream git tree which fix various + issues and that look safe with low or no risk of regression. + + 115_xext_fix_cursor_ref_counting.patch: Xext: Fix cursor reference + counting hazard. + + 116_fix_typos_in_swap_functions.patch: Fixes typos in several of the + glxcmdsswap routines. + + 117_fix_crash_with_createglyphset.patch: Fixes crash introduced in + FindGlyphsByHash() if one client disconnects while a second is in + the middle of doing certain Glyph operations. + + 118_xkb_fix_garbage_init.patch: Fixes typo that can cause garbage + bits to get appended on the xkbControlsNotify changedControls mask + because it was uninitialized on the stack. + + -- Bryce Harrington Wed, 14 Apr 2010 18:49:56 -0700 + +xorg-server (2:1.7.6-2ubuntu3) lucid; urgency=low + + * add support for omapfb to 111_armel-drv-fallbacks.patch + + -- Alexander Sack Mon, 12 Apr 2010 14:43:42 +0200 + +xorg-server (2:1.7.6-2ubuntu2) lucid; urgency=low + + [Bryce Harrington] + * Add 113_quell_nouveau_aiglx.patch: Don't emit error message about + AIGLX on nouveau. 3D is not supported yet on -nouveau so this error + message serves only to confuse bug reporters. + (LP: #529590) + + [Robert Sarvatt] + * Add 114_dri2_make_sure_x_drawable_exists.patch: Makes sure + a corresponding X drawable exists before trying to use it, fixing + xserver segfaults under DRI2 when closing down GLX apps. + (LP: #550218) + + -- Bryce Harrington Wed, 31 Mar 2010 16:37:45 -0700 + +xorg-server (2:1.7.6-2ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #546933) + + [ Michael Casadevall ] + * Updated 111_armel-drv-fallbacks.patch to also add support for finding + dovefb devices in addition to imx51 ones. (LP: #550701) + + -- Timo Aaltonen Tue, 30 Mar 2010 22:01:12 +0300 + +xorg-server (2:1.7.6-2) unstable; urgency=low + + [ Timo Aaltonen ] + * Add 08-config-xorg-conf-d.diff, 09-inputclass-sans-abi9.diff, + 10-config-libudev-backend.diff. Backport xorg.conf.d, inputclass + and libudev support from xserver 1.8. Replaces the patches we had + before. This allows us to migrate from a temporary udev based + input device configuration straight to the long term solution + introduced in 1.8. + * Add 11-xfree86-fix-video-fallback.diff from SUSE. Allows the video + fallback method to work when there's an xorg.conf around. + * Add 12-xfree86-dont-complain-about-missing-coredevices.diff. + No reason to complain about these, unless AEI is off. + * Add 13-unbreak-input-abi.diff. Keep the old NewInputDeviceRequest(), + rename the new as NIDR18() and call it from NIDR(). This way we + don't break the input ABI. + * Add 14-tone-down-nidr-errors.diff. Use X_INFO instead of X_ERROR. + + [ Julien Cristau ] + * 15-keep-udev-x11-driver.diff: keep looking for the x11_driver udev + property as a transitional measure. This should allow the new server to + work while drivers aren't transitioned to xorg.conf.d yet. + + -- Timo Aaltonen Tue, 30 Mar 2010 21:32:52 +0300 + +xorg-server (2:1.7.6-1ubuntu3) lucid; urgency=low + + * Extend 112_xaa-fbcomposite-fix-negative-size.patch to also correct a + mod() definition in the mi code which suffers the same flaw. + + -- Bryce Harrington Mon, 29 Mar 2010 14:15:07 -0700 + +xorg-server (2:1.7.6-1ubuntu2) lucid; urgency=low + + * Add 112_xaa-fbcomposite-fix-negative-size.patch: Prevent 3rd-party + controllable Xorg crash/exploit when XAA and compositing is in use. + Be more careful in sign-changes with mod(). + (LP: #551193) + + -- Bryce Harrington Mon, 29 Mar 2010 13:37:06 -0700 + +xorg-server (2:1.7.6-1ubuntu1) lucid; urgency=low + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 107, included in Debian. + * Drop patch 108, included upstream. + * control: Drop the udeb, we don't need it for lucid. + * control: Relax/drop some build-deps caused by the udeb. + + [Bryce Harrington] + * Add 110_findglyphbyhash-fix.patch from upstream to fix a sporadic + crash in FindGlyphByHash. + (LP: #401045) + * Renumber patch 201_armel-drv-fallbacks.patch to 111 + + -- Bryce Harrington Wed, 24 Mar 2010 12:04:20 -0700 + +xorg-server (2:1.7.6-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Timo Aaltonen ] + * New upstream release, closes: #574354. + + [ Julien Cristau ] + * Don't build xserver-xorg-core-udeb on sparc. The linker fails because + relocations have to be truncated when building statically against + libnettle. + + -- Cyril Brulebois Tue, 23 Mar 2010 16:59:08 +0100 + +xorg-server (2:1.7.5.902-1) unstable; urgency=low + + [ Julien Cristau ] + * config/udev: fix adding unnamed devices. + * Build two flavours, one for the main package and one for the udeb. + * Add patch to fix Xorg build with XV disabled. + + [ Timo Aaltonen ] + * Add 16-config-dont-filter-input-subsys.diff so for instance serial + wacom devices are initialized by the udev backend (LP: #522318, + closes: #568236). + + [ Brice Goglin ] + * New upstream release. + + Allow for missing or disabled compat_output, closes: #572268, #554450. + + Reenable RECORD extension, closes: #570680. + + dix: try to ring the bell even if the current device doesn't have one, + closes: #564200. + * Refresh patches. + * Fix typo in xvfb-run.1, thanks Joey Hess, closes: #527490. + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Cyril Brulebois ] + * Add udeb needed for the graphical installer: xserver-xorg-core-udeb. + * Version/Bump some B-D to make sure xserver-xorg-core-udeb gets its + dependencies on the (recently-added) udebs rather than on the + libraries: + - libpciaccess-dev + - libudev-dev + - libxau-dev + - libxfont-dev + * Replace 02_Add-libgcrypt-as-an-option-for-sha1.diff with + 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff so that it's + also possible to link against libnettle. Link (unconditionally) + statically against libnettle.a to avoid an extra udeb for a few bytes. + * Add nettle-dev to Build-Depends; and pass --with-sha1=libnettle for + the udeb build (and --with-sha1=libgcrypt for the main build). + * Add myself to Uploaders. + * Tweak builderstring to use the name of the person responsible for the + upload instead of an host-specific one (Closes: #574017). + + -- Cyril Brulebois Mon, 15 Mar 2010 22:19:01 +0100 + +xorg-server (2:1.7.5-1ubuntu4) lucid; urgency=low + + * 201_armel-drv-fallbacks.patch: use imx driver if available on + armel imx51 systems; the current test checks for mxc_gpu + devices listed in /sys/devices/platform and ensures that the + imx_drv module can be loaded; if both succeed, imx driver is + used instead of fbdev; note: the mxc_gpu device test should be + replaced with parsing output of /proc/fb once the mxc driver + provides reasonable content there. + + -- Alexander Sack Wed, 24 Mar 2010 13:03:41 +0100 + +xorg-server (2:1.7.5-1ubuntu3) lucid; urgency=low + + * Add 109_fix-swcursor-crash.patch: Avoid dereferencing null pointer + while reloading cursors during resume. + (LP: #371405) + + -- Bryce Harrington Thu, 11 Mar 2010 17:16:12 -0800 + +xorg-server (2:1.7.5-1ubuntu2) lucid; urgency=low + + [ Bryce Harrington ] + [Timo Aaltonen] + * Add 107_dont_filter_input_subsys.diff so for instance serial wacom + devices are initialized by the udev backend (LP: #522318) + + [Bryce Harrington] + * Add 108_reenable_record_ext.patch: Upstream patch to make the + record callback work with the new internal core/Xi events mechanism + instead of xEvents. With this fix, the record extension can be + re-enabled. + (LP: #315456) + + -- Timo Aaltonen Tue, 02 Mar 2010 17:09:33 +0200 + +xorg-server (2:1.7.5-1ubuntu1) lucid; urgency=low + + [ Bryce Harrington ] + [Robert Hooker] + * Add 106_nouveau_autodetect.patch: makes nouveau the default driver + for supported cards when not explicitly named in xorg.conf. + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 101, included in Debian. + + [Robert Collins] + * Add 199_xfvb-help-typo.patch to fix typo in help for xvfb (fdo #32990) + * Add 200_randr-null.patch to clarify a pointer initialization (fdo #26389) + + -- Timo Aaltonen Fri, 19 Feb 2010 13:24:15 +0200 + +xorg-server (2:1.7.5-1) unstable; urgency=low + + [ Julien Cristau ] + * Remove myself from Uploaders + + [ Brice Goglin ] + * New upstream release. + + Restore lastDeviceEventTime update in dixSaveScreens, + closes: #563816. + + Don't double-swap the RandR PropertyNotify event, + closes: #569036. + + Xi: reset the sli pointers after copying device classes, + closes: #566147. + * Bump Standards-Version to 3.8.4. + + -- Brice Goglin Tue, 16 Feb 2010 08:00:27 +0100 + +xorg-server (2:1.7.4-2) unstable; urgency=low + + [ Julien Cristau ] + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + + [ Brice Goglin ] + * Add 05_only_call_gamma_set_if_nonnull.diff to unbreak the nv driver, + closes: #564203. + + -- Brice Goglin Wed, 20 Jan 2010 23:51:26 +0100 + +xorg-server (2:1.7.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). + + -- Julien Cristau Tue, 12 Jan 2010 10:49:22 +0000 + +xorg-server (2:1.7.3.902-1ubuntu12) lucid; urgency=low + + * Add 198_nohwaccess.patch: Needed for rootless X. Adds a -nohwaccess + argument to make X not access the hardware ports directly. + + -- Bryce Harrington Fri, 05 Feb 2010 22:17:20 -0800 + +xorg-server (2:1.7.3.902-1ubuntu11) lucid; urgency=low + + * Add 196_xvfb-fbscreeninit-handling.patch and 197_xvfb-randr.patch: + Adds xrandr support to xvfb. Thanks lifeless! + (LP: #516123) + + -- Bryce Harrington Thu, 04 Feb 2010 10:56:12 -0800 + +xorg-server (2:1.7.3.902-1ubuntu10) lucid; urgency=low + + * 100_rethrow_signals.patch: Fix SigAbortServer to cleanly exit(1) on a + non-signal crash, as the original upstream code does. Not exiting leads to + continuing back into the code which threw the error, which eventually + leads to writing into the already closed log file and other operations + which cause segfaults. + * Re-enable 100_rethrow_signals.patch. Hello apport. + + -- Martin Pitt Wed, 03 Feb 2010 17:29:53 -0800 + +xorg-server (2:1.7.3.902-1ubuntu9) lucid; urgency=low + + * Fully disable 100_rethrow_signals.patch as it seems to still cause + crashes. Goodbye apport. + (LP: #506510) + + -- Bryce Harrington Mon, 18 Jan 2010 23:31:08 -0800 + +xorg-server (2:1.7.3.902-1ubuntu8) lucid; urgency=low + + * Drop 160_log_timestamping.patch. The bootup time objectives have been + met so this patch is no longer required. + + -- Bryce Harrington Sat, 16 Jan 2010 02:28:30 -0800 + +xorg-server (2:1.7.3.902-1ubuntu7) lucid; urgency=low + + * Update 100_rethrow_signals.patch: Don't log more error messages after + the log has been closed, else it causes a SIGSEGV (signal 11) crash + under several different conditions, including on even ordinary error + exits. + (LP: #506510, #507345, #506977, #504497, #507083) + + -- Bryce Harrington Fri, 15 Jan 2010 15:22:34 -0800 + +xorg-server (2:1.7.3.902-1ubuntu6) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Correct the name of the alternative that we need to remove. + Thanks to Steve Langasek for spotting the error. + + -- Alberto Milone Thu, 14 Jan 2010 12:50:19 +0100 + +xorg-server (2:1.7.3.902-1ubuntu5) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Make sure that the alternative which was previously provided by + xserver-xorg-core is removed. + + -- Alberto Milone Tue, 12 Jan 2010 11:37:49 +0100 + +xorg-server (2:1.7.3.902-1ubuntu4) lucid; urgency=low + + * debian/patches/191-Xorg-add-an-extra-module-path.patch: + - Patch from Mandriva to allow the use of an extra-modules-dir so that + the modules installed in this dir will override the ones in the + default directory. + * debian/rules: + - Remove alternatives stuff introduced in a previous upload. + - Configure with --with-extra-module-dir="/usr/lib/xorg/extra-modules". + - Do not install libglx.so and libdri.so in a different place any more. + - Do not install ld.so.conf file any more. Mesa will deal with this. + * debian/xserver-xorg-core.links: + - Do not create link to /usr/lib/xvmcconfig-standard/XvMCConfig. + - Remove links file. + * debian/xserver-xorg-core.postinst.in: + - Do not install an alternative any more. Mesa will deal with this. + * debian/xserver-xorg-core.prerm.in: + - Remove file. + + -- Alberto Milone Mon, 11 Jan 2010 14:48:35 +0100 + +xorg-server (2:1.7.3.902-1ubuntu3) lucid; urgency=low + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). (LP: #504254) + + -- Timo Aaltonen Sat, 09 Jan 2010 19:34:30 +0200 + +xorg-server (2:1.7.3.902-1ubuntu2) lucid; urgency=low + + * debian/rules: + - Make sure that /usr/lib/standard-x11/ld.so.conf points to + the libraries provided by mesa. + + -- Alberto Milone Fri, 08 Jan 2010 18:55:52 +0100 + +xorg-server (2:1.7.3.902-1ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. + + [ Michael Vogt ] + * Add 101_nv-crash-fix.diff: Do not crash if gamma_set is NULL. + (LP: #494627) + + [ Alberto Milone ] + * Install libglx.so and libdri.so in /usr/lib/standard-x11 as X + seems to prefer the file in /usr/lib/xorg/modules/extensions/standard/ + over links in /usr/lib/xorg/modules/extensions/. + + -- Timo Aaltonen Fri, 08 Jan 2010 14:21:15 +0200 + +xorg-server (2:1.7.3.902-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Run udevadm trigger on postinst, and depend on udev [linux-any]. + + [ Julien Cristau ] + * Add xserver-common dependency on x11-xkb-utils for xkbcomp. + * Remove our copy of input_id, add Depends on new enough udev instead. + * New upstream release. + * Make xserver-common recommend xfonts-base, some clients don't work without + those. + * Upload to unstable. + + -- Julien Cristau Wed, 06 Jan 2010 17:44:59 +0000 + +xorg-server (2:1.7.3.901-1ubuntu5) lucid; urgency=low + + * Use alternatives to make it easier to switch between X11 and 3rd + party modules. + * Add link to /usr/lib/xvmcconfig-standard/XvMCConfig and use it + for alternatives. + + -- Alberto Milone Mon, 04 Jan 2010 12:08:17 +0100 + +xorg-server (2:1.7.3.901-1ubuntu4) lucid; urgency=low + + * xvfb: Depend again on xauth. Depend on x11-xkb-utils. LP: #500102. + + -- Matthias Klose Thu, 24 Dec 2009 12:20:02 +0100 + +xorg-server (2:1.7.3.901-1ubuntu3) lucid; urgency=low + + * Update 100_rethrow_signals.patch to work with xserver 1.7 + + -- Bryce Harrington Fri, 18 Dec 2009 18:55:56 -0800 + +xorg-server (2:1.7.3.901-1ubuntu2) lucid; urgency=low + + [ Alberto Milone ] + * debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch: + Make the patch build again with xserver 1.7. + + [ Timo Aaltonen ] + * Enable patch 190 now that it works. + + -- Timo Aaltonen Tue, 15 Dec 2009 14:49:39 +0200 + +xorg-server (2:1.7.3.901-1ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. + + -- Timo Aaltonen Mon, 14 Dec 2009 11:34:33 +0200 + +xorg-server (2:1.7.3.901-1) experimental; urgency=low + + [ Julien Cristau ] + * Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12). + * xserver-xorg-dev: add Depends on x11proto-kb-dev and libxkbfile-dev for + xkbsrv.h (closes: #559676). Thanks, Ron! + * Update input_id to the version in udev 149. + * Update xserver-xorg-core bug script to run udevadm info instead of lshal. + + [ Brice Goglin ] + * New upstream release. + + Refresh patches. + + -- Brice Goglin Sat, 12 Dec 2009 17:46:45 +0100 + +xorg-server (2:1.7.2-2ubuntu2) lucid; urgency=low + + * local/64-xorg-xkb.rules: Use "program" instead of "file" when + grepping the XKB settings from console-setup. + + -- Timo Aaltonen Tue, 08 Dec 2009 13:17:04 +0200 + +xorg-server (2:1.7.2-2ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - debian/rules, debian/control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - debian/rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - local/xvfb-run: Use "-extension Composite" to fix xvfb-run crashing. + - debian/patches: + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + * debian/control: Drop obsolete Conflicts/Breaks against -psb, + -synaptics and -evdev. + * debian/local/xserver-xephyr.1: Delete, upstream has Xephyr.1 now. + * Dropped patches: + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Upstream dropped it. + - 102_ubuntu_sharevts_load_cpu.patch: Upstream. + - 103_psb_auto.patch: Fallback to vesa done differently upstream. + - 110_fedora_no_move_damage.patch: Upstream dropped it. + - 140_quell_acpi_errmsgs.patch: Superseded. + - 153_make_dmx_compile.patch: Xdmx is fixed upstream. + - 156_exevents_copykeyclass_nullptrcheck.patch: No longer needed. + Appropriate checks are done on the pointers prior to CopyKeyClass + being called now. + - 158_raise_maxclients.patch: Breaks binary drivers. We've had this + reverted for some time now, may as well just get rid of it entirely. + - 174_set_bg_pixmap_of_cow_to_none.patch: Upstream + - 177_animated_cursor_change_master.patch: Different fix upstream. + - 180_fedora_no_synaptics_mouse_synthesis.patch: Superseded. + - 181_fedora_log_proc_cmdline.patch: Upstream. + - 185_dix_badwindow.patch: Upstream. + - 186_autoconfig_geode.patch: Upstream. + * 189_xserver_1.5.0_bg_none_root.patch: Fetched a new version. + * 135_rethrow_signals.patch, 168_glibc_trace_to_stderr.patch: + Disabled until fixed to work with the current version. + * 160_log_timestamping.patch: Updated and re-enabled for boot speed + testing in Lucid. This patch should be disabled by beta2. + * 169_mipointer_nullptr_checks.patch: Updated. MIPOINTER() still + can return NULL under some circumstances, and its return values + are still being dereferenced without checking for NULL. + * 188_default_primary_to_first_busid.patch: Updated. Still looks to be + relevant for certain multi-card systems. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Updated. + * control, local/64-xorg-xkb.rules: Don't depend on keyboard-configuration + until we have it. + * rules, local/64-xorg-xkb.rules: Use input_id from udev. + + -- Timo Aaltonen Mon, 07 Dec 2009 15:30:18 +0200 + +xorg-server (2:1.7.2-2) experimental; urgency=low + + [ Julien Cristau ] + * debian/rules: upstream build system got fixed, no need to remove + configure-generated files. + * Steal input_id helper from udev, install it in /lib/xorg. Thanks, Martin + Pitt! + + [ Brice Goglin ] + * Cherry pick upstream commit to fix the ABI. + + -- Brice Goglin Mon, 30 Nov 2009 20:10:27 +0100 + +xorg-server (2:1.7.2-1) experimental; urgency=low + + * New upstream release + + Xorg sets umask to 022 (closes: #555308) + * Delete 09_debian_xserver_rtff.diff. Was disabled since 1.3.99, and is not + necessary since the fall back to builtin fonts was added. + * Change the server's dependency on xserver-common to >= ${source:Version}, + to allow installation of different versions of the various servers. + * Add build-dep on libglib2.0-dev, xkb-data and x11-xkb-utils for unit + tests, and run the tests unless nocheck is in DEB_BUILD_OPTIONS. + * Cherry-pick upstream commit to turn ModeDebug on during server startup, + replacing our Turn-on-ModeDebug-by-default.patch. + * Number our patches to make it easier to keep track of things. Requested + by the Ubuntu folks. + * xvfb-run: retry a few times if Xvfb can't be started when using + --auto-servernum, to make concurrent invocations work (closes: #521075). + Thanks, Kees Cook! + * Use libudev instead of libhal for input hotplug on linux. + * Add udev rule to get keymap from /etc/default/keyboard. + + -- Julien Cristau Sat, 28 Nov 2009 16:48:43 +0100 + +xorg-server (2:1.7.0-1) experimental; urgency=low + + * Add missing Conflicts on xserver-xorg-video-5 and xserver-xorg-input-4. + * Add xkb-data to xserver-common's Depends. XKB is mandatory in 1.7. + * Make all servers depend on xserver-common (= ${source:Version}). + * New upstream release + + fixes Xvfb crashes (closes: #529927) + + fixes DGA init crash (closes: #548716) + + -- Julien Cristau Sun, 04 Oct 2009 15:57:01 +0200 + +xorg-server (2:1.6.99.903-1) experimental; urgency=low + + * New upstream snapshot. + + doesn't fill log file with errors when acpid isn't running + (closes: #487904, #500583) + + adds autoconfig for geode variants (closes: #544988) + + fixes idle time computation (closes: #542064) + + Xnest uses the host's mouse acceleration and speed (closes: #325181) + + Xephyr now has a manpage (closes: #427121) + + Xdmx works again (closes: #541254) + * Update build deps + * Update patch stack: + - 20_hurd-i386.diff applied upstream + - fedora-bad-fbdev-thats-mine.patch applied upstream + - fedora-pci-primary.diff superseded upstream + - fedora-vboxvideo.diff applied upstream + - kfreebsd-ftbfs.diff applied upstream + - Add-libgcrypt-as-an-option-for-sha1.diff refreshed + - Turn-on-ModeDebug-by-default.patch refreshed + * Cleanup some libtool cruft in debian/rules clean. + * Bump serverminver, videoabiver and inputabiver. + * Bump debhelper compat level to 5: + - handle dh_strip behaviour change + - fix xserver-xorg-core.install + * Bump Standards-Version to 3.8.3. + + -- Julien Cristau Tue, 29 Sep 2009 17:51:05 +0200 + +xorg-server (2:1.6.4-2ubuntu6) lucid; urgency=low + + * 189_xserver_1.5.0_bg_none_root.patch: Moblin patch to allow X to + create a root window with no background by passing the -nr + argument. This will make X no longer clear the framebuffer when it + starts, thus eliminating a flicker between bootsplash and gdm. -nr + is ignored if this feature is not supported by the driver. This patch + is not upstream yet. + TESTERS: Watch for screen corruption issues during X or app start. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Causes the X + Keyboard Compiler (xkbcomp) to create a cache file of the keyboard + settings. This will make the 2nd and later boots slightly faster. + TESTERS: Watch for issues relating to keyboard customizations not + taking effect properly following boot. + + -- Bryce Harrington Mon, 23 Nov 2009 13:59:44 -0800 + +xorg-server (2:1.6.4-2ubuntu5) lucid; urgency=low + + * Rework xvfb-run patch to wait for server to come up before checking + status (LP: #481591, Debian bug 521075). + + -- Kees Cook Fri, 13 Nov 2009 16:15:36 -0800 + +xorg-server (2:1.6.4-2ubuntu4) karmic; urgency=low + + * Add 188_default_primary_to_first_busid.patch: X can abort if multiple + video devices are present, and none are marked as primary. This makes + X just pick the first one it sees and carry on. + (LP: #459512) + + -- Bryce Harrington Mon, 26 Oct 2009 10:05:44 -0700 + +xorg-server (2:1.6.4-2ubuntu3) karmic; urgency=low + + * local/xvfb-run: Fix race condition in xvfb-run that can cause + concurrent invocations to fail. + (LP: #348052) + + -- Bryce Harrington Wed, 14 Oct 2009 15:21:51 -0700 + +xorg-server (2:1.6.4-2ubuntu2) karmic; urgency=low + + * Add 187_edid_quirk_hp_nc8430.patch: Quirk for another LPL monitor, to + fix huge font sizes due to invalid EDID from the hardware. + (LP: #380009) + + -- Bryce Harrington Tue, 13 Oct 2009 02:25:46 -0700 + +xorg-server (2:1.6.4-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. (LP: #447010) + Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Specify correct paths to fonts + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 103_psb_auto.patch: + Autodetect poulsbo devices (but use -vesa since -psb is broken) + + 110_fedora_no_move_damage.patch: + further aiglx support + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 140_quell_acpi_errmsgs.patch: + Avoid generating extraneous warnings when acpi is missing + + 153_make_dmx_compile.patch: + Change xcalloc -> calloc, so that dmx compiles. + + 156_exevents_copykeyclass_nullptrcheck.patch, + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 174_set_bg_pixmap_of_cow_to_none.patch: + Set background pixmap of composite overlay window to no background + + 177_animated_cursor_change_master.patch: + Don't create animated cursors for slave devices + + 180_fedora_no_synaptics_mouse_synthesis.patch: + Don't synthesize a mouse section if a synaptics device is found + + 181_fedora_log_proc_cmdline.patch: + Dump /proc/cmdline in the log file too + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 185_dix_badwindow.patch: + Don't return BadMatch from GetProperty if window isn't actually a window + + 186_autoconfig_geode.patch + Perform autodetection correctly for various geode devices + * Update 184_virtual_devices_autodetect.patch to only include inserting + cirrus, since vbox is covered by the new fedora patch. + * Drop patches already included upstream: + - 187_lastdeviceeventtime-no-reset.patch + - 178_glx_flush_cache.patch + - 179_glx_cleanup_drawables.patch + - 183_dont_reset_event_time.patch + - 182_negative_sync_transitions.patch + * Ubuntu bugs fixed as of this release: + - Generate key up event only when key is released. (Fixed previously) + (LP: #403339) + - Fix XDPMS change event idle handling + (LP: #114336, #152999) + - Don't shutdown the libhal ctx if it failed to initialize. Fixes + crash if HAL or dbus is not running or is interrupted. + (LP: #114336) + - Fix crash if SendCoreEvents is off. Don't send events through + master in this case. + (LP: #368135) + - Fix SWCursor check in xf86CursorSetCursor to prevent cursor image + showing up on every screen with Xinerama. + (LP: #357901) + + -- Bryce Harrington Fri, 09 Oct 2009 12:01:52 -0700 + +xorg-server (2:1.6.4-2) unstable; urgency=low + + * Add fix-dga-removal.patch, closes: #548724. + + -- Brice Goglin Wed, 30 Sep 2009 22:40:29 +0200 + +xorg-server (2:1.6.4-1) unstable; urgency=low + + * New upstream release. + * Update 20_hurd-i386.diff, thanks Samuel Thibault, closes: #548606. + * Drop render-return-the-supported-version.patch, applied upstream. + + -- Brice Goglin Mon, 28 Sep 2009 07:23:07 +0200 + +xorg-server (2:1.6.3.901-1) unstable; urgency=low + + [ Julien Cristau ] + * Add patch stolen from Fedora to add the vboxvideo driver to the + autodetection routine (closes: #540884). + * Add built-ins to the default font path so that non-Xorg servers can use + them (closes: #542707). Thanks, Josselin Mouette! + * Add avr32 to the libselinux-dev/libaudit-dev build-deps (closes: #543540). + Thanks, Bradley Smith! + * Add patch to return the actually supported version in RenderQueryVersion + rather than whatever renderproto version the server built against. + * New upstream release. + + idle counter computation fixes (closes: #542064) + * Cherry-pick three more patches nominated on + http://www.x.org/wiki/Server16Branch: + - Don't reset the lastDeviceEventTime when doing DPMS actions + - dri2: Don't crash if pPriv is NULL + - EXA: Only take special code path for 1x1 fill for pixmaps + + [ David Nusinow ] + * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a + + -- Julien Cristau Mon, 14 Sep 2009 15:33:46 +0200 + +xorg-server (2:1.6.3-1ubuntu7) karmic; urgency=low + + * Add 187_lastdeviceeventtime-no-reset.patch: Avoids resetting IDLETIME on + DPMS events. Cherrypick from upstream. + (LP: #397839) + + -- Loïc Minier Mon, 28 Sep 2009 10:54:08 +0200 + +xorg-server (2:1.6.3-1ubuntu6) karmic; urgency=low + + * Add 186_autoconfig_geode.patch: Add autoconfiguration support for + older geode cards. Cherrypick from upstream. + (LP: #423866) + + -- Bryce Harrington Tue, 08 Sep 2009 15:43:28 -0700 + +xorg-server (2:1.6.3-1ubuntu5) karmic; urgency=low + + * Add 185_dix_badwindow.patch: dixLookupWindow may return BadMatch if + the window in question isn't actually a window. In this case, + GetProperty needs to return BadWindow - not BadMatch. Fixes unexpected + crash in some GNOME applications not expecting to get BadMatch returned + from this function call. + (LP: #321041) + + -- Bryce Harrington Thu, 03 Sep 2009 18:27:04 -0700 + +xorg-server (2:1.6.3-1ubuntu4) karmic; urgency=low + + * Add 184_virtual_devices_autodetect.patch: Automatic driver detection + for vbox and kvm for non-cirrus devices. + (LP: #338219, #348497) + + -- Bryce Harrington Mon, 24 Aug 2009 14:58:22 -0700 + +xorg-server (2:1.6.3-1ubuntu3) karmic; urgency=low + + * Add 183_dont_reset_event_time.patch: Upstream cherrypick. + Fix another random display blanking issue. When we turn off DPMS with + DPMSModeOff and do dixSaveScreens, don't reset the event time else + session clients using IDLETIME will be reset. + See http://blogs.gnome.org/hughsie/2009/08/17/ + + -- Bryce Harrington Wed, 19 Aug 2009 10:21:45 -0700 + +xorg-server (2:1.6.3-1ubuntu2) karmic; urgency=low + + * Add 182_negative_sync_transitions.patch: Upstream cherrypick. + Fix random blanking display when system is not idle, caused by + mishandling of negative transition triggers in XSync. + (LP: #397839) + + -- Bryce Harrington Fri, 14 Aug 2009 11:21:09 -0700 + +xorg-server (2:1.6.3-1ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * control: Drop libaudit-dev from build-deps, since SELinux-support + is still disabled anyway. + * Drop 182_fedora_quirk_pea.patch, included in 1.6.3. + + -- Timo Aaltonen Wed, 05 Aug 2009 14:11:01 +0300 + +xorg-server (2:1.6.3-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Sat, 01 Aug 2009 08:55:40 +0200 + +xorg-server (2:1.6.2.901-1ubuntu3) karmic; urgency=low + + * Add 182_fedora_quirk_pea.patch: Quirk for Peacock Ergovision 19 + to use first detailed mode. + * Add 181_fedora_log_proc_cmdline.patch: Log the /proc/cmdline into + Xorg.0.log + * Add 180_fedora_no_synaptics_mouse_synthesis.patch: Don't synthesise a + mouse section if synaptics devices are found. + (LP: #406291, #405281, #396908) + * Actually enable patches 178 and 179 + + -- Bryce Harrington Tue, 04 Aug 2009 02:37:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu2) karmic; urgency=low + + * Add 178_glx_flush_cache.patch and 179_glx_cleanup_drawables.patch: + - Cleanup destroyed windows and drawables, to prevent crash during + compiz startup. + (LP: #408293) + + -- Bryce Harrington Mon, 03 Aug 2009 07:55:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu1) karmic; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #403316) + * Drop 170_primary_pci_video_device.patch, included in Debian + + -- Timo Aaltonen Tue, 28 Jul 2009 15:34:16 +0300 + +xorg-server (2:1.6.2.901-1) unstable; urgency=low + + * New upstream release candidate. + * Bump mesa Build-Depends to >= 7.5 to fix DRI2 madness again, + closes: #538637. + + -- Brice Goglin Mon, 27 Jul 2009 00:17:42 +0200 + +xorg-server (2:1.6.2-1) unstable; urgency=low + + [ Brice Goglin ] + * New upstream release. + + Fixes dri2 madness introduced in previous upload + (closes: #534522, #536019, #534766, #534771, #534890). + + Fixes xkb bogus length in write keyboard desc, closes: #529625. + + Fixes SWCursor being multiply rendered, closes: #526260. + + Drop Change-default-for-ExaOptimizeMigration-to-false.diff, + applied upstream. + + Pull upstream server-1.6-branch up to commit 606f6dba. + * Bump serverminver to 2:1.6.2 for the dri2 upstream changes in the + previous upload. + + [ Julien Cristau ] + * Bump xserver-xorg-dev's dependency on dri2proto to >= 2.1 for the same + reason. + * Don't set PCI_TXT_IDS_DIR, we don't use that anymore. + * xserver-xorg-core.bug.script: add a newline between X log and lshal + output. + + -- Brice Goglin Mon, 13 Jul 2009 23:35:13 +0200 + +xorg-server (2:1.6.1.901-3) unstable; urgency=low + + [ Julien Cristau ] + * xvfb-run: don't pass the magic cookie to xauth on the command line + (CVE-2009-1573; closes: #526678). Thanks, Loïc Minier! + * xvfb-run: use mktemp to create the temporary directory. + * Change default for ExaOptimizeMigration to false. This option still + causes visual corruption in some cases. Thanks, Michel Dänzer! + * Only include hal info for keyboards, mice, touchpads and tablets in the + bug script. + * In the bug script, grep dmesg for agp in addition to drm. + * Add patch stolen from Fedora to disable the fbdev driver when it's loaded + together with a PCI or SBUS driver, instead of calling FatalError (closes: + #508476). + * Add patch stolen from Fedora to try and detect the primary PCI device by + mapping the legacy VGA bios and comparing the vendor and device ids. + Previously if there was more than one VGA device and the config didn't + specify BusIDs, the server would just fail to start, so this hack should + improve things. + * Update configure options: + + use --enable-xvfb instead of --enable-vfb + + drop --disable-builtin-fonts, --enable-xtrap, --disable-kdrive-vesa, + --disable-lbx, --disable-xprint, --disable-xorgconfig, --disable-xorgcfg + which don't exist anymore + + use --disable-config-hal and --disable-dri on hurd-i386 + + reorder options to match configure.ac, and use explicit + --enable/--disable instead of using the defaults / autodetection + * Don't recommend xfonts-base. libXfont provides builtin versions of the + fixed and cursor fonts, which are the only required ones. Keep xfonts-* + packages in Suggests for xserver-xorg-core. + * Bump Standards-Version to 3.8.2 now that we have README.source. + * Drop Build-Conflicts on xlibs-static-dev; it's only in oldstable at this + point. + * Pull from upstream server-1.6-branch as of June 23rd (commit dbac41b). + * Bump build-dep on dri2proto to 2.1 for new protocol. + * Bump build-dep on libselinux1-dev to 2.0.80 for avc_netlink_acquire_fd. + + [ David Nusinow ] + * Add README.source + + -- Julien Cristau Tue, 23 Jun 2009 19:52:10 +0200 + +xorg-server (2:1.6.1.901-2ubuntu2) karmic; urgency=low + + * Add xserver-1.5.0-bad-fbdev-thats-mine.patch - If no xorg.conf is + specified, framebuffer device can erroneously grab the PCI. Make + it fail instead in this case. + (LP: #383407) + + -- Bryce Harrington Wed, 24 Jun 2009 15:24:44 -0700 + +xorg-server (2:1.6.1.901-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * Dropped patches: + - obsolete: + 100_xserver_exa_force_greedy.patch + 107_fedora_dont_backfill_bg_none.patch + - upstream: + 163_thinko_in_xf86targetpreferred.patch + 171_xkb_geometry_copying.patch + 173_edid_quirk_philips_lcd.patch + 175_set_pointer_screen_in_xtestfakeinput.patch + 176_quell_warning_exacopydirty.patch + - included by Debian: 999_default_modedebug_on.patch + * Disable 143_default_to_vesa.patch for now, breaks autoconfiguration + when the pci-ids directory exists but has no match. (LP: #379504) + * Disable SELinux support for now, because libaudit-dev needs to be + moved to main first. + + -- Timo Aaltonen Sun, 24 May 2009 00:32:37 +0300 + +xorg-server (2:1.6.1.901-2) unstable; urgency=low + + * Merge from upstream server-1.6-branch (commit a9f85dce). + * Fix FTBFS on kfreebsd (closes: #525475). Thanks, Petr Salinger! + + -- Julien Cristau Thu, 14 May 2009 17:37:40 +0200 + +xorg-server (2:1.6.1.901-1) experimental; urgency=low + + * New upstream development release + + fixes crash in CheckMotion with xinerama (closes: #524853) + + Refresh 20_hurd-i386.diff + + [ Brice Goglin ] + * Add 20_hurd-i386.diff to fix FTBFS on hurd-i386, + thanks Samuel Thibault! (closes: #523970) + + [ David Nusinow ] + * Have the reportbug script append lshal and drm info. + The drm info comes from grepping dmesg output. + + [ Julien Cristau ] + * Properly initialize libgcrypt in the libgcrypt patch (closes: #524822). + Thanks, Sven Joachim! + + -- David Nusinow Mon, 11 May 2009 21:50:37 -0400 + +xorg-server (2:1.6.1-1) unstable; urgency=low + + [ Julien Cristau ] + * Disable dri2 on hurd-i386. Thanks, Samuel Thibault! + + [ Brice Goglin ] + * New upstream release. + + -- Brice Goglin Wed, 15 Apr 2009 13:30:51 +0200 + +xorg-server (2:1.6.0-1) unstable; urgency=low + + [ David Nusinow ] + * Add 0001-xorg.conf-5-refer-to-mousedrv-4-.-Debian-394058.patch to + refer to correct (semi-obsolete) mouse driver manpage. + closes: #394058 + + [ Julien Cristau ] + * New upstream release. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: remove, + included upstream. + * Turn on ModeDebug by default. + * Use libgcrypt for SHA1 instead of OpenSSL's libcrypto. + * Build the xselinux extension on Linux architectures. + * Remove build-dependencies on x11proto-evie-dev, x11proto-trap-dev, + x11proto-xf86misc-dev; the corresponding extensions are removed. + * Remove build-dependencies on x11proto-print-dev, libfreetype6-dev and + xfonts-utils since we don't build Xprt anymore. + * Fix lintian warnings about xserver-xorg-core.NEWS formatting. + * Move -dbg package to new section debug, add ${misc:Depends} where missing. + * Remove unused 06_use_proc_instead_of_sysfs_for_pci_domains.diff, obsoleted + by pci-rework. + * Merge changelog entries 2:1.4.2-9 to 2:1.4.2-11. + * Upload to unstable. + + -- Julien Cristau Thu, 09 Apr 2009 00:36:40 +0100 + +xorg-server (2:1.6.0-0ubuntu15) karmic; urgency=low + + * Re-enable 999_default_modedebug_on.patch to provide debug info in + Xorg.0.log for development series. + + -- Bryce Harrington Sun, 10 May 2009 22:35:02 -0700 + +xorg-server (2:1.6.0-0ubuntu14) jaunty; urgency=low + + * Add 177_animated_cursor_change_master.patch: Fixes crash when using + animated cursors. + (LP: #358009) + + -- Bryce Harrington Wed, 08 Apr 2009 18:52:56 -0700 + +xorg-server (2:1.6.0-0ubuntu13) jaunty; urgency=low + + * Add 176_quell_warning_exacopydirty.patch: Quells innocuous but scary + sounding "exaCopyDirty: Pending damage region empty!" warning, as it + can lead to false-positives with bug reporters. + + -- Bryce Harrington Wed, 08 Apr 2009 14:49:36 -0700 + +xorg-server (2:1.6.0-0ubuntu12) jaunty; urgency=low + + * local/xvfb-run: Revert change from 2:1.6.0-0ubuntu9; prevents running + multiple times. + (LP: #357338. Reopen 348052 rejecting patch) + + -- Bryce Harrington Tue, 07 Apr 2009 15:21:32 -0700 + +xorg-server (2:1.6.0-0ubuntu11) jaunty; urgency=low + + * Add 175_set_pointer_screen_in_xtestfakeinput.patch: Fixes issue when + using Vino, mouse cursor can get stuck in the upper left corner of the + screen. The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid + out-of-range events when the lastSlave was an SD with an explicit axis range. + Device events sent through XTest don't need this flag, they are expected to be + in the valuator range of the device anyway. + (LP: #337926) + + -- Bryce Harrington Mon, 06 Apr 2009 17:22:35 -0700 + +xorg-server (2:1.6.0-0ubuntu10) jaunty; urgency=low + + * debian/patches/174_set_bg_pixmap_of_cow_to_none.patch: + - Set bg pixmap of composite overlay window to None. + Thanks to Havoc Pennington for the patch. + (LP: #356254). + + -- Alberto Milone Mon, 06 Apr 2009 15:06:14 +0200 + +xorg-server (2:1.6.0-0ubuntu9) jaunty; urgency=low + + * local/xvfb-run: Fixes race condition with concurrent invocations + (LP: #348052) + * local/xvfb-run, xvfb-run.1: Add correct docs about error codes + (LP: #328205) + * local/xserver-xephyr.1, rules, xserver-xephyr.install: Add man page + for xephyr + (LP: #134906) + + -- Bryce Harrington Wed, 01 Apr 2009 20:37:22 -0700 + +xorg-server (2:1.6.0-0ubuntu8) jaunty; urgency=low + + * Add 173_edid_quirk_philips_lcd.patch : + Quirk for wrongly reported screen dimensions. + Fixes "huge fonts" issues. + (LP: #353074) + + -- Tormod Volden Wed, 01 Apr 2009 19:47:13 +0200 + +xorg-server (2:1.6.0-0ubuntu7) jaunty; urgency=low + + * Add 172_cwgetbackingpicture_nullptr_check.patch: + - cwGetBackingPicture can segfault when minimizing/maximizing firefox with + a flash video playing. This appears to be a race condition in which the + backing picture's data is not always fully defined. + (LP: #319402) + + -- Bryce Harrington Mon, 30 Mar 2009 22:20:17 -0700 + +xorg-server (2:1.6.0-0ubuntu6) jaunty; urgency=low + + * Add 171_xkb_geometry_copying.patch: + - Fixes crash when plugging/unplugging USB devices due to incorrect + copying of XKB geometry base_color and label_color. Patch + cherrypicked from upstream. + (LP: #333222, #321946) + + -- Bryce Harrington Fri, 27 Mar 2009 19:58:33 -0700 + +xorg-server (2:1.6.0-0ubuntu5) jaunty; urgency=low + + [Tormod Volden] + * Disable 160_log_timestamping.patch before the beta, this was only used + for testing, and the patch also has a serious stack corruption bug. + (LP: #328035) + + [Bryce Harrington] + * Disable 999_default_modedebug_on.patch before the beta, this was used + only for testing. + * Add 169_mipointer_nullptr_checks.patch: + - MIPOINTER() can return NULL in some circumstances, so always check + its return value before dereferencing. + - Fixes crash with keyrepeat on non-primary screen on -nvidia when + using Xinerama (and probably other serious mipointer-related crashes) + (LP: #324465) + * Add 170_primary_pci_video_device.patch: + - Patch from redhat + - Fixes failure when multiple video cards are present. Xserver currently + exits with an error "(EE) No device detected" in such cases. + (LP: #267241) + + -- Bryce Harrington Tue, 24 Mar 2009 09:57:17 -0700 + +xorg-server (2:1.6.0-0ubuntu4) jaunty; urgency=low + + * Add 168_glibc_trace_to_stderr.patch: + - Catch glibc internal abort traces on stderr instead of to the + controlling terminal (LP: #345748). + + -- Kees Cook Thu, 19 Mar 2009 22:39:33 -0700 + +xorg-server (2:1.6.0-0ubuntu3) jaunty; urgency=low + + * Add 165_man_xorg_conf_no_device_ident.patch: + - Device identifier no longer necessary in Screen section of + xorg.conf. Update man page accordingly. + (LP: #261577) + * Add 166_nullptr_xinerama_keyrepeat.patch: + - Avoids null pointer dereference when holding down keys on + non-primary screen when using TwinView / Xinerama on -nvidia. + (LP: #324465) + * Add 167_nullptr_xisbread.patch: + - Avoids null pointer dereference in XisbRead to prevent a (difficult + to reproduce) crash during or after a resume from RAM. + (LP: #324368) + + -- Bryce Harrington Thu, 19 Mar 2009 00:17:40 -0700 + +xorg-server (2:1.6.0-0ubuntu2) jaunty; urgency=low + + * Add 163_thinko_in_xf86targetpreferred.patch: + - For monitors that do not define a "preferred" mode, if the monitor + is not connected to the first output, X wouldn't pick up the mode + correctly, resulting in a "No modes" error in Xorg.0.log and dropping + user to failsafe-X mode. + (LP: #335214) + * Add 164_trap-aspect-ratios.patch: + - Some monitors fib in the EDID they provide, giving their physical + dimensions in the global block, and their aspect ratio(!) in + the detailed timings. This totally messes up DPI calculations + resulting in huge fonts. + (LP: #320930) + + -- Bryce Harrington Wed, 18 Mar 2009 20:47:12 -0700 + +xorg-server (2:1.6.0-0ubuntu1) jaunty; urgency=low + + [ Bryce Harrington ] + * New upstream release + - Fixes segfault during X startup for drivers with RANDR < 1.2 + (LP: #319210) + - Fixes EDID for monitors that incorrectly report aspect ratio instead + of resolution (LP: #311485) + - Fixes issue where X stops responding to mouse clicks after some time + if using Xinerama. (LP: #296167) + * Add 162_null_crtc_in_rotation.patch: Fixes crash when two displays on + separate cards are attached. X doesn't work with multiple cards yet, + but crashing is not an appropriate way to handle such a situation. + (LP: #139990) + + [ Timo Aaltonen ] + * 159_xinerama_focus.patch, + 161_force_paired_kbd_device.patch: + - Dropped, applied upstream + + -- Bryce Harrington Fri, 06 Mar 2009 14:44:31 -0800 + +xorg-server (2:1.5.99.902-1) experimental; urgency=low + + * New upstream release candidate. + * xserver-xorg-core.install: there are no more font modules. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: new patch, + fixes a crash with some multimedia keyboards (closes: #513384). + + -- Julien Cristau Sat, 31 Jan 2009 19:32:31 +0100 + +xorg-server (2:1.5.99.902-0ubuntu7) jaunty; urgency=low + + * Add 161_force_paired_kbd_device.patch: Fixes issue where a multimedia + keyboard (or keyboard-like device) sends its multimedia key events + through the mouse device file. In this case, pair the device with the + master before processing the events. Patch cherrypicked from upstream. + (LP: #318261) + + -- Bryce Harrington Tue, 17 Feb 2009 17:20:51 -0800 + +xorg-server (2:1.5.99.902-0ubuntu6) jaunty; urgency=low + + * Add 999_default_modedebug_on.patch. Defaults ModeDebug to on. + Upstream requests that users include this option when forwarding bugs + upstream, thus it should be carried at least during development and + reverted by -beta. Performance won't be impacted, and boot time will + be slowed only a negligible amount, as it merely adds a few additional + prints. + + -- Bryce Harrington Tue, 10 Feb 2009 14:06:38 -0800 + +xorg-server (2:1.5.99.902-0ubuntu5) jaunty; urgency=low + + * Revert 158_raise_maxclients.patch. Breaks -nvidia. Binary drivers FTL. + (LP: #326344) + + -- Bryce Harrington Mon, 09 Feb 2009 13:51:04 -0800 + +xorg-server (2:1.5.99.902-0ubuntu4) jaunty; urgency=low + + * 160_log_timestamping.patch: Only add timestamp on tagged messages + (LP: #285787) + + -- Tormod Volden Fri, 06 Feb 2009 23:33:11 +0100 + +xorg-server (2:1.5.99.902-0ubuntu3) jaunty; urgency=low + + * Add 160_log_timestamping.patch: Show timestamps in Xorg.*.log + files. + (LP: #285787) + + -- Bryce Harrington Fri, 06 Feb 2009 06:28:48 -0800 + +xorg-server (2:1.5.99.902-0ubuntu2) jaunty; urgency=low + + [Bryce Harrington] + * Add 157_check_null_modes.patch: Catch null pointer dereference in + video mode selection, which can cause xserver crash when using SDL + applications with qemu/kvm. + (LP: #300310) + * Add 158_raise_maxclients.patch to raise max number of clients from 256 + to 512. Trade-off is that this reduces client resources available to + 1,048,576 total resources (which should still be ample). + (LP: #260138) + + [Steven Harms] + * 159_xinerama_focus.patch: Resolves xinerama focus issues + with multiple screens + (LP: #41301) + + -- Bryce Harrington Wed, 04 Feb 2009 22:33:28 -0800 + +xorg-server (2:1.5.99.902-0ubuntu1) jaunty; urgency=low + + * New upstream release candidate. + + -- Timo Aaltonen Sat, 31 Jan 2009 11:03:52 +0200 + +xorg-server (2:1.5.99.901-2) experimental; urgency=low + + [ Julien Cristau ] + * Bump libdrm-dev build-dep to help out sbuild. + + [ Timo Aaltonen ] + * debian/rules: Disable builtin fonts (LP: #308649, closes: #512706) + + -- Julien Cristau Fri, 23 Jan 2009 21:16:14 +0100 + +xorg-server (2:1.5.99.901-1ubuntu1) jaunty; urgency=low + + * Merge with Debian experimental. + * debian/rules: Include xorg-server.conf for dbus support. + + -- Timo Aaltonen Fri, 23 Jan 2009 13:53:33 +0200 + +xorg-server (2:1.5.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + adds autodetection of sbus devices (closes: #483942). + Thanks, Bernhard R. Link! + + RandR version 1.3 adds panning (closes: #509699). + + fixes a crash with XAA and fb24_32ReformatTile (closes: #443480). + + correctly sets RAW mode on the console when xorg.conf is absent + (closes: #505746). + + [ Timo Aaltonen ] + * debian/control: + - Add x11proto-dri2-dev to build-depends. + - Bump the x11proto-randr-dev build-dep version to 1.2.99.3. + - Bump the libpixman-1-dev build-dep version to 0.13.2. + - Bump the xtrans-dev build-dep version to 1.2.2. + - Bump the x11proto-xext-dev build-dep version to 7.0.3. + - Bump the x11proto-input-dev build-dep version to 1.5. + - Bump the libgl1-mesa-dev and mesa-common-dev build-dep to + 7.2+git20081209.a0d5c3cf. + - Bump the x11proto-core build-dep to 7.0.13. + - Add a build-dep on libxinerama-dev. + - Conflict xserver-xorg-video-4, xserver-xorg-input-2.1. + * debian/rules: + - Enable dri2 again. + * debian/patches: + 02_Disable-DRI-in-Xephyr.patch + 03_glx-init-infinite-loop.diff + - Dropped, implemented upstream. + 13_debian_add_xkbpath_env_variable.diff + - Disabled for now, needs to be reimplemented or dropped. + * debian/{input,video}abiver: Bump the input (4) and videoabiver (5). + * debian/serverminver: Bump to 2:1.5.99.901. + + [ Julien Cristau ] + * Ditch the GLX Public License and the CID Font Code Public License from + debian/copyright. The CID code has been removed a while ago, and all code + under the GLXPL has been relicensed to the SGI Free Software License B 2.0. + This finally closes: #211765. + + [ Yves-Alexis Perez ] + * debian/control: update deps for xserver-xorg-dev: + - libpixman-1-dev (>= 0.13.2-1) + - x11proto-core-dev (>= 7.0.14) + - x11proto-input-dev (>= 1.5.0) + - x11proto-xext-dev (>= 7.0.4) + - x11proto-randr-dev (>= 1.2.99.3) + - add x11proto-dri2-dev + + -- Julien Cristau Wed, 21 Jan 2009 20:59:34 +0100 + +xorg-server (2:1.5.99.901-0ubuntu1) jaunty; urgency=low + + [ Timo Aaltonen ] + * debian/rules: Enable dbus-support. + * Merge current server-1.6-branch. + * Disable patch 107 for now, to see what kind of a performance hit + it'll be. The problem it causes is random garbage on windows + while apps are being loaded. + (LP: #254468) + * Remove patches 150, 151, 152, 154, applied upstream. + + [ Bryce Harrington ] + * 156_exevents_copykeyclass_nullptrcheck.patch: Add several NULL pointer + checks in CopyKeyClass to prevent SEGFAULT seen when pressing button + on an ATI USB remote control. + (LP: #311254) + + -- Timo Aaltonen Sat, 17 Jan 2009 16:17:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu3) jaunty; urgency=low + + [Timo Aaltonen] + * debian/rules: Disable builtin fonts (LP: #308649) + + [Bryce Harrington] + * 135_rethrow_signals.patch: Update for 1.6 and re-enable. + (LP: #226668) + + -- Bryce Harrington Tue, 16 Dec 2008 19:04:14 -0800 + +xorg-server (2:1.5.99.3-0ubuntu2) jaunty; urgency=low + + * Merge server-1.6-branch (LP: #308225). + + -- Timo Aaltonen Tue, 16 Dec 2008 10:00:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu1) jaunty; urgency=low + + * Merge from debian experimental git branch. + * Dropped patches: + - 103_inputproto_1.4.3_is_fine.patch: obsolete + - 137_add_device_property_support.patch: upstream + - 138_look_at_all_bytes_of_dev_enabled.diff: upstream + - 141_improved_driver_selection.patch: upstream + - 150_no_visibility_notify_on_unredirect.patch: upstream + * 110_fedora_no_move_damage.patch modified to use new function names. + * Renumbered 142_psb_auto.patch to 103. + * Add a couple of patches from the proposed queue: + - 150_dont-update-vcp-valuators.patch + The VCP doesn't need to update the valuators anyway since it cannot + send XI events. Just skip that bit. + - 151_allow-null-as-rulesfile.patch + If no rules file is given, simply re-use the previous one. If no + RF is given the first time this function is called, use the + built-in default. + - 152_let-the-ddx-decide-on-the-xkbrulesdefaults.patch + Rather than assuming rules in the CoreKeyboardProc, init the default + rules in InitCoreDevices, then re-use them later. + * Add 153_make_dmx_compile.patch + - Change xcalloc -> calloc, so that dmx compiles. Not tested if it + also works. + * Drop patch 136, since SwitchCoreKeyboard is gone, and patches 151/152 + basically reimplement the functionality. + * Add 154_force-copykeyclass-for-key-events.patch, to fix fdo + bug 19048. Without this the server default layout would always be + used. + + [ Bryce Harrington ] + * Patch 135 updated so that apport actually works now, but leave it + disabled until the code is updated for 1.6. + + -- Timo Aaltonen Mon, 15 Dec 2008 11:34:53 +0200 + + +xorg-server (2:1.5.3-1ubuntu1) jaunty; urgency=low + + * Merge from debian-experimental, remaining changes: + + debian/control: + - x11proto-input-dev, libxi-dev build-deps bumped because of + input properties. + - Conflict with xserver-xorg-video-psb << 0.15.0-0ubuntu1~804um5 + as these versions didn't have an ABI provide. + - Breaks old synaptics, evdev which didn't have properties. + + debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 103_inputproto_1.4.3_is_fine.patch: + Don't require inputproto 1.4.4 in configure.ac. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 135_rethrow_signals.patch + Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + - 136_fedora_force_switchcorekeyboard_for_evdev.patch + Allow clients to set the layout. + - 137_add_device_property_support.patch + Add support for input-device properties (XI 1.5). + - 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + - 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. + - 141_improved_driver_selection.patch + Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + - 142_psb_auto.patch + Autoload vesa for the psb hardware, psb being broken currently. + - 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + - 150_no_visibility_notify_on_unredirect.patch + Do not sent VisibilityNotify events when MapUnmapEvents + are disabled + + debian/local/xvfb-run: disable the Composite-extension for xvfb. + + debian/serverminver: Bump the serverminver because of the newer + properties API. + + debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default as part of the SELinux merge. However, we need + the security module for xauth on Kubuntu, else ubiquity fails. + (LP 247537) + * Changes done: + - debian/control: xfvb doesn't need to Depend on xauth, xfonts-base + anymore, Recommends are pulled in by default now. + + -- Timo Aaltonen Wed, 26 Nov 2008 13:42:11 +0200 + +xorg-server (2:1.5.3-1) experimental; urgency=low + + [ Loic Minier ] + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + [ Julien Cristau ] + * New upstream release. + * Fix infinite loop on server reset when swrast_dri.so is missing. Only + push swrast on the glx provider stack on first generation, so we don't + turn the stack into a circular list (closes: #500287). + * Enable the record extension (closes: #504303). + * Merge changes from 2:1.4.2-8. + + -- Julien Cristau Tue, 11 Nov 2008 23:17:14 +0100 + +xorg-server (2:1.5.2-2ubuntu3) intrepid; urgency=low + + * 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + (LP: #281610) + + -- Bryce Harrington Thu, 23 Oct 2008 07:31:47 -0700 + +xorg-server (2:1.5.2-2ubuntu2) intrepid; urgency=low + + * 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + (LP: #261977) + + -- Bryce Harrington Thu, 23 Oct 2008 06:21:18 -0700 + +xorg-server (2:1.5.2-2ubuntu1) intrepid; urgency=low + + * debian/patches/150_no_visibility_notify_on_unredirect.patch + - do not sent VisibilityNotify events when MapUnmapEvents + are disabled (LP: #278112) + + -- Michael Vogt Sat, 18 Oct 2008 00:05:30 +0200 + +xorg-server (2:1.5.2-1ubuntu4) intrepid; urgency=low + + * Update patch 142_psb_auto to only try vesa, not even psb, as this requires + the psb driver to be loadable, and it's not available anymore (and broken + anyway). + + -- Loic Minier Wed, 15 Oct 2008 18:14:28 +0200 + +xorg-server (2:1.5.2-1ubuntu3) intrepid; urgency=low + + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + -- Loic Minier Wed, 15 Oct 2008 17:57:13 +0200 + +xorg-server (2:1.5.2-1ubuntu2) intrepid; urgency=low + + * Update patch 142_psb_auto to also try psb and vesa for 0x8109. + * Apply and drop patch 123_no_composite_for_xvfb_run which was changing + files below debian/ (xvfb-run, to disable the Composite extension by + default). + + -- Loic Minier Wed, 15 Oct 2008 15:27:23 +0200 + +xorg-server (2:1.5.2-1ubuntu1) intrepid; urgency=low + + * Merge from debian-experimental. + * Update patch 142_psb_auto to try vesa if psb fails; thanks Oliver Grawert. + * Refresh patch 100_xserver_exa_force_greedy to apply cleanly. + * Let xserver-xorg-core conflict with xserver-xorg-video-psb + << 0.15.0-0ubuntu1~804um5 as these versions didn't have an ABI provide. + + -- Loic Minier Tue, 14 Oct 2008 23:03:06 +0200 + +xorg-server (2:1.5.2-1) experimental; urgency=low + + * New upstream bugfix release. + * debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching using + plain text files provided by drivers. + * Don't pass --with-serverconfig-path to configure, we only used to override + it for Xprint. + * Re-introduce the xserver-common package, containing + /usr/lib/xorg/protocol.txt and the Xserver(1) manpage for now. + * debian/rules: Use filter instead of findstring for noopt in + DEB_BUILD_OPTIONS. + * Remove obsolete conffile /etc/X11/xserver/SecurityPolicy on upgrades. + * Merge changes from 2:1.4.2-7. + + -- Julien Cristau Sat, 11 Oct 2008 20:20:28 +0200 + +xorg-server (2:1.5.1-1ubuntu3) intrepid; urgency=low + + * Pull upstream changes from server-1.5-branch including b595b65e: + - Fix GKVE with key_code > 255 (LP: #274203) + - DGA: Fix ProcXF86DGASetViewPort for missing support in driver. + Fixes a segfault when trying to activate a DGA mode without + checking whether DGA modesetting is at all possible. + - Check nextEnabledOutput()'s return in bestModeForAspect() + In case no enabled outputs, we will reference wrong index of + output array. + - int10: Fix a nasty memory leak. + - int10: Don't warn when scanning for devices we don't have. + Some BIOSes (hi XGI!) will attempt to enumerate the PCI bus by + asking for the config space of every possible device number. + This despite perfectly functional BIOS methods to enumerate the + bus exactly. + - int10: Remove useless check. + If you have more than one PCI device with the same d/b/d/f, you're + already in trouble. + - http://bugs.freedesktop.org/show_bug.cgi?id=14373 + xkb: squash canonical types into explicit ones on core reconstruction. + xkb: fix core keyboard map generation. + - xkb: fix use of uninitialized variable. + - Remove usage of mfbChangeWindowAttributes missed in e4d11e58c... + - Only build dri2 when DRI2 is enabled. + * Merge patches 138 and 139 into 137, and update the properties API to + match the current version in master (final API for XI 1.5). + (LP: #274728) + * Bump the build-dep on x11proto-input-dev and libxi-dev. + * Bump the serverminver because of newer properties API. + * Add Breaks against current synaptics and evdev, since they use the old + API and need to be updated with the server. + + -- Timo Aaltonen Fri, 10 Oct 2008 11:16:56 +0300 + +xorg-server (2:1.5.1-1ubuntu2) intrepid; urgency=low + + * Merge with Debian experimental: + - debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching + using plain text files provided by drivers. (LP: #261977) + + -- Timo Aaltonen Fri, 26 Sep 2008 12:05:12 +0300 + +xorg-server (2:1.5.1-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. (LP: #269388) + + -- Timo Aaltonen Wed, 24 Sep 2008 19:33:34 +0300 + +xorg-server (2:1.5.1-1) experimental; urgency=low + + * New upstream bugfix release. + * 02_Disable-DRI-in-Xephyr.patch: don't use DRI in Xephyr, as it doesn't + work correctly. + * Merge changelog from 2:1.4.2-6 (all changes are upstream now). + + -- Julien Cristau Wed, 24 Sep 2008 17:49:18 +0200 + +xorg-server (2:1.5.0-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * 141_improved_driver_selection.patch + - Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + * 142_psb_auto.patch + - Renamed, refreshed. + + -- Timo Aaltonen Tue, 09 Sep 2008 11:44:13 +0300 + +xorg-server (2:1.5.0-1) experimental; urgency=low + + * New upstream release. + * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch, + 1.2 requests are properly swapped now. + * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION. Yes, that means + rebuilding video drivers; sorry about that. + + -- Julien Cristau Thu, 04 Sep 2008 02:05:47 +0200 + +xorg-server (2:1.4.99.906-2ubuntu5) intrepid; urgency=low + + * Bump the serverminver because of input properties. + + -- Timo Aaltonen Wed, 03 Sep 2008 16:03:28 +0300 + +xorg-server (2:1.4.99.906-2ubuntu4) intrepid; urgency=low + + [ Bryce Harrington ] + * 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. (LP: #247195) + + -- Timo Aaltonen Wed, 03 Sep 2008 10:48:24 +0300 + +xorg-server (2:1.4.99.906-2ubuntu3) intrepid; urgency=low + + [ Bryce Harrington ] + * 135_rethrow_signals.patch: Update to make it catch and throw a + wider variety of signals, and do a clean shutdown of the X server + (code borrowed from FatalError()). + + -- Bryce Harrington Mon, 01 Sep 2008 13:19:46 -0700 + +xorg-server (2:1.4.99.906-2ubuntu2) intrepid; urgency=low + + * 103_inputproto_1.4.3_is_fine.patch: + - Don't require inputproto 1.4.4 in configure.ac.. + + -- Timo Aaltonen Thu, 28 Aug 2008 13:24:05 +0300 + +xorg-server (2:1.4.99.906-2ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * Dropped patches, upstream: + 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 131_remove_open-coded_strcasestr.patch + 132_add_parsing_for_xkb.options.patch + 133_support_strlist_for_xkboptions.patch + 134_protect_against_out_of_bounds.patch + * control: Fix build-dep on inputproto to >= 1.4.3-2ubuntu2 for + DeviceControlChanged. + + -- Timo Aaltonen Thu, 28 Aug 2008 12:39:33 +0300 + +xorg-server (2:1.4.99.906-2) experimental; urgency=low + + * Pull from server-1.5-branch as of Aug 27th + + input devices from xorg.conf aren't ignored if there is no ServerLayout + option (closes: #492140) + * Bump build-dep on inputproto to >= 1.4.4 for DeviceControlChanged. + * Merge in changes from 2:1.4.2-3 to 2:1.4.2-5. + + -- Julien Cristau Thu, 28 Aug 2008 00:33:02 +0200 + +xorg-server (2:1.4.99.906-1ubuntu4) intrepid; urgency=low + + * 137_add_device_property_support.patch, + 138_xi_expose_enable_disabledevice.patch, + 139_xi_protect_against_null_handlers.patch: + - Add support for input-device properties. + * debian/control: Bump the build-depends on x11proto-input-dev + and libxi-dev. + + -- Timo Aaltonen Fri, 22 Aug 2008 09:00:14 +0300 + +xorg-server (2:1.4.99.906-1ubuntu3) intrepid; urgency=low + + * 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 136_fedora_force_switchcorekeyboard_for_evdev.patch + - Allow clients to set the layout. + * Drop 130_fedora_call_switchcorekeyboard.patch, obsoleted. + + -- Timo Aaltonen Wed, 06 Aug 2008 13:30:28 +0300 + +xorg-server (2:1.4.99.906-1ubuntu2) intrepid; urgency=low + + * Add 135_rethrow_signals.patch + - Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + + -- Bryce Harrington Tue, 05 Aug 2008 16:20:46 -0700 + +xorg-server (2:1.4.99.906-1ubuntu1) intrepid; urgency=low + + * Merge with debian experimental, 1.5RC6 (LP: #247120, #253021) + * Drop 120_fedora_xserver-xaa-evict-pixmaps.patch, because offscreen + pixmaps are already disabled by default. + * Drop 124_fix_randr_no_crtc.patch, fixed upstream. + * Add 130_fedora_call_switchcorekeyboard.patch, a hack to fix fd.o bug + #16364. Breaks if the first hotplugged keyboard is not the wanted + keyboard. + * Patches from upstream master: + 131_remove_open-coded_strcasestr.patch + - pre-requisite for the rest + 132_add_parsing_for_xkb.options.patch + - parsing xkb.options didn't work (fd.o #16874) + 133_support_strlist_for_xkboptions.patch + - allow using a list for xkb.options like before. + 134_protect_against_out_of_bounds.patch + - protect against potential out-of-bounds indexing. + + -- Timo Aaltonen Tue, 05 Aug 2008 01:49:42 +0300 + +xorg-server (2:1.4.99.906-1) experimental; urgency=low + + * debian/rules: drop useless handling of nostrip in DEB_BUILD_OPTIONS (this + is taken care of by dh_strip); make the rules files and xsfbs.mk + parallel-safe, and enable parallel=n using example code from Debian + Policy. + * debian/rules: put the source package name and version in builderstring + instead of osvendor, add builder email as well; don't explicitly set + osname, configure sets it to $(uname -srm) by default. + * New upstream release candidate. + - fixes 64-bit Xephyr (closes: #491569) + - work around the DIX losing physical monitor dimensions for randr 1.1 + drivers, in particular nvidia (closes: #488987) + - make sure RANDR reports refresh as 0 if pixel clock is 0 (closes: + #490258) + - doesn't try to load dri2 when it's not built (closes: #491651) + * Switch to running autoreconf at build time, and build-depend on automake, + libtool and xutils-dev. + * Reformat the SGI Free Software License B, to shut up over 1000 lintian + warnings. + + -- Julien Cristau Sun, 27 Jul 2008 18:30:45 +0200 + +xorg-server (2:1.4.99.905-0ubuntu5) intrepid; urgency=low + + * debian/rules: + Added --enable-record. By default, xorg-server does not build the + RECORD extension. Added the record module (for Xnee and other purposes). + + -- Chris Nasho Thu, 31 Jul 2008 17:26:00 -0400 + +xorg-server (2:1.4.99.905-0ubuntu4) intrepid; urgency=low + + * debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default in commit 86b2e59bfb79bd042a13c35fbb4ccecec576f629, + as part of the SELinux merge. However, we need the security module + for xauth on Kubuntu, else ubiquity fails. (Ref. LP 247537) + + -- Bryce Harrington Wed, 16 Jul 2008 06:01:45 -0700 + +xorg-server (2:1.4.99.905-0ubuntu3) intrepid; urgency=low + + * patches/124_fix_randr_no_crtc.patch: + + In certain circumstances, xrandr multiscreen initialization fails + to associate crtcs with monitors, resulting in startup failures + in some GDK-based applications when using -vesa. This occurs + because mode-Clock, mode->HTotal, and mode->VTotal are all 0. + (LP: #246585) + + -- Bryce Harrington Tue, 15 Jul 2008 07:01:13 -0700 + +xorg-server (2:1.4.99.905-0ubuntu2) intrepid; urgency=low + + * Merge with debian git, new changes: + - Build with --enable-glx-tls, we build mesa with TLS support + (otherwise swrast_dri.so might fail to load due to unresolved + symbols). + - Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without + this package, the GLX extension fails to initialise (and takes the + server down) due to missing swrast_dri.so. + + -- Timo Aaltonen Mon, 07 Jul 2008 11:44:39 +0300 + +xorg-server (2:1.4.99.905-0ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental, remaining changes: + * debian/control: + - Change maintainer address. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 104_psb_auto.patch + Add automatic detection of Poulsbo hardware when running without a + Device definition. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch + A hack to evict XAA pixmaps and disable the pixmap cache when the first + texture is bound. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + * Cleaned up patches: + - upstream, either directly or otherwise implemented: + 103_fedora_openchrome.patch, 105_reduce_wakeups_from_smart_scheduler.diff + 108_fedora_honor_displaysize.patch, 109_glx_fail_if_no_texture_bound.diff + 144_fedora_xserver-1.3.0-xnest-exposures.patch, + 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch, + 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch, + 148_dix_touchscreen_fixes.diff, + 149_add_quirks_for_physical_screen_size_issues.patch, + 150_edid_quirk_lp154w01.patch, 151_x86emu_handle_cpuid.patch, + 153_exa_skip_empty_glyphs.diff, 154_fix_rotation_for_multimon.diff, + 155_exa_fix_off-by-one.diff, 156_resize_composite_overlay.diff, + 157_fix_exa_pixmap_width.diff, 158_xkb_wrapping.diff, + 159_xkb_default_to_null.diff, 160_default_to_intel.diff, + 161_fix_big_endian_cursor.diff, 162_cve-2007-6429.diff, + 163_fix_untrusted_access.diff, 164_fix_context_sharing.diff, + 165_fedora_xserver-1.5.0-xaa-option-inversion.patch, + 166_fix_lpl_monitors.diff, 167_xf86AutoConfig_geode_addition.diff, + 168_closedir.patch, + 170_xorg-xserver-1.4-cve-2008-1377.diff, + 171_xorg-xserver-1.4-cve-2008-1379.diff, + 172_xorg-xserver-1.4-cve-2008-2360.diff, + 173_xorg-xserver-1.4-cve-2008-2361.diff, + 174_xorg-xserver-1.4-cve-2008-2362.diff + - obsolete: + 101_fedora-apm-typedefs.patch + 104_fedora_init_origins_fix.patch + 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - unnecessary: + 106_ubuntu_fpic_libxf86config.patch (the lib is not shipped) + + -- Timo Aaltonen Fri, 04 Jul 2008 13:39:34 +0300 + +xorg-server (2:1.4.99.905-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + - fixes FTBFS on alpha (closes: #472205); won't work, though, because + of #485528 + - fixes FTBFS on GNU/kFreeBSD (closes: #482550) + * 001_ubuntu_add_extra_modelines_from_xorg.patch: remove, replace with + 001_fedora_extramodes.patch stolen from fedora 9 cvs, rev 1.8. + * xvfb: recommend xauth instead of xbase-clients. + * xserver-xfbdev: recommend xfonts-base. + * debian/rules: drop our special handling for stripping modules, which I + think dates back to the days of the custom module loader. + * debian/rules: drop some remaining xprintisms. + * bump serverminver to 2:1.4.99.905. + * Stop build-depending on mesa-swx11-source (mesa 7.1 will build the + software driver itself), and don't pass --with-mesa-source to configure. + * Build with --enable-glx-tls, we build mesa with TLS support (otherwise + swrast_dri.so might fail to load due to unresolved symbols). + * Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without this + package, the GLX extension fails to initialise (and takes the server down) + due to missing swrast_dri.so. + + [ Timo Aaltonen ] + * Re-enable dri & glx. + * Add a build-dep on mesa-common-dev (>= 7.1~rc1) and bump the desired + version of libgl1-mesa-dev respectively. + * Bump the libdrm-dev build-dep version to 2.3.1. + + -- Julien Cristau Sun, 13 Jul 2008 23:33:05 +0200 + +xorg-server (2:1.4.99.902-1) experimental; urgency=low + + * Add postrm script for xserver-xorg-core, to remove + /var/log/Xorg.*.log{,.old} on purge (closes: #343384). + * Use dh_* -s instead of -a in binary-arch, to fix FTBFS on s390 (which + doesn't build xserver-xfbdev). + * New upstream release candidate. + + refresh 13_debian_add_xkbpath_env_variable.diff + + doesn't crash when there is no pci device (closes: #472823) + + includes a quirk for LPL monitors with broken EDID (closes: #473260) + + XKB is now enabled in Xnest (closes: #164379) + * Stop building Xprt, and drop related patches; it will be provided as a + separate package. + + -- Julien Cristau Fri, 23 May 2008 00:58:45 +0200 + +xorg-server (2:1.4.99.901-2) experimental; urgency=low + + * xserver-xorg-dev needs to depend on libpciaccess-dev. + * Pull from upstream server-1.5-branch as of March 21st (commit 98249dfa). + + fixes build on ia64 (closes: #471663) + * Add missing conflicts on xserver-xorg-input-2. + + -- Julien Cristau Fri, 21 Mar 2008 22:40:36 +0100 + +xorg-server (2:1.4.99.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + * Update patches: + + 001_ubuntu_add_extra_modelines_from_xorg.patch: remove useless + whitespace changes + + 02_libvgahw_gcc4_volatile_fix.diff: delete, the gcc bug this was working + around is fixed for a long time + + 03_auto_load_driver.diff, 04_auto_load_driver_no_conf.diff, + 05_kill_type1.diff, 07_autoconfig_screen_with_device_section.diff, + 08_better_dpms_logging.diff, 10_dont_look_in_home_for_config.diff, + 11_dont_crash_on_bad_dri_mode.diff, 14_default_screen_section.diff, + 21_glx_align_fixes.patch, 40_default_dpi_96.patch, + 41_vbe_filter_less.diff, + 42_dont_break_grab_and_focus_for_window_when_redirecting.diff, + 43_allow_override_BIOS_EDID_preferred_mode.diff, + 44_preferredmode_infinite_loop.diff, + 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff, + 46_reduce_wakeups_from_smart_scheduler.patch, + 47_fbdevhw_magic_numbers.diff, 51_xkb-and-loathing.diff, + 93_xprint_fonts_fix: remove, applied upstream + + 06_use_proc_instead_of_sysfs_for_pci_domains.diff: disable for now, + shouldn't be needed with pciaccess + + 13_debian_add_xkbpath_env_variable.diff: refresh + + 94_xprint_XSERVER_LIBS: disable, should be fixed upstream + * Disable glx, dri and dri2 for now. + * Re-enable dmx, build the xdmx and xdmx-tools packages. + * Add build-deps on libpciaccess-dev and libssl-dev for Xorg, bump build-dep + on libpixman-1-dev to >= 0.9.5. + * Add build-dep on libxv-dev for Xephyr. + * Drop XS- prefix from Vcs-* debian/control fields. + * Bump videoabiver to 2.9, inputabiver to 2.1, serverminver to 2:1.4.99.901. + * Drop obsolete --with-rgb-path configure option. + * /etc/X11/xserver/SecurityPolicy is gone, don't install it. + * Don't build-dep on "foo (>= bar-1)", to fix lintian warnings. + + [ Drew Parsons ] + * Remove 94_xprint_XSERVER_LIBS (not needed in xserver 1.5). + + [ Brice Goglin ] + * Build the Xfbdev server for real now, in new package xserver-xfbdev, + closes: #439764. + + -- Julien Cristau Fri, 14 Mar 2008 13:46:48 +0100 + +xorg-server (2:1.4.2-11) unstable; urgency=low + + * Bump x11proto-input-dev build-dep to >= 1.5.0 to fix keyboard layout + breakage with new libxi built against the same. Closes: #515976 + + -- David Nusinow Thu, 19 Feb 2009 21:52:24 -0500 + +xorg-server (2:1.4.2-10) unstable; urgency=medium + + * Cherry-pick from upstream: GLcore: make googleearth not crash the server + on sw-rendering (closes: #495483). + + -- Julien Cristau Fri, 09 Jan 2009 02:26:06 +0100 + +xorg-server (2:1.4.2-9) unstable; urgency=low + + * Cherry-pick patches from upstream to make xf86ScaleAxis() work correctly. + * Steal patch from Fedora: more sanity checks to stop vmmouse from + segfaulting the server (closes: #503459). + + -- Julien Cristau Thu, 13 Nov 2008 23:32:47 +0100 + +xorg-server (2:1.4.2-8) unstable; urgency=low + + * Add patch from Petr Salinger to fix PCI domain support on kfreebsd + (closes: #499501). + * xfree86: xf86SetDepthBpp needs to respect the driver's depth24flags. + Instead of forcing a 32bpp framebuffer, we pick a value that the driver + actually supports (closes: #504819, #486925); cherry-picked from upstream + git. + + -- Julien Cristau Tue, 11 Nov 2008 20:46:52 +0100 + +xorg-server (2:1.4.2-7) unstable; urgency=low + + * Update debian/copyright to the SGI Free Software License B, version 2.0. + It now mirrors the free X11 license used by X.Org. + http://www.sgi.com/company_info/newsroom/press_releases/2008/september/opengl.html + * Not closing bug#211765 for now, because GL/glx/glxext.c and + hw/dmx/glxProxy/glxext.c are covered by the GLX Public License, which is + still not free. SGI has since released their code under FreeB, but that + doesn't necessarily apply to contributions from other people. Hopefully + this can be cleared up soon, though. + * xvfb-run: append to $ERRORFILE instead of truncating it, so the error + output from Xvfb is not deleted when we run 'xauth remove'. + + -- Julien Cristau Tue, 30 Sep 2008 00:39:58 +0200 + +xorg-server (2:1.4.2-6) unstable; urgency=low + + * Xevie: always set rep.length to 0 (closes: #497337). Thanks, Thorvald + Natvig! + * Xevie: swap replies if necessary, to not confuse clients with a different + endianness. + * Cherry-picked from upstream git: + XF86VidMode: Correct a NULL pointer dereference (closes: #498289) + + -- Julien Cristau Mon, 15 Sep 2008 01:21:13 +0200 + +xorg-server (2:1.4.2-5) unstable; urgency=low + + * Don't pretend we support randr 1.2 when queried by swapped clients. The + dispatch code for RandR 1.2 requests would return BadImplementation anyway + (closes: #495833). + * Cherry-picked from upstream: + + exa: fix assert logic thinko. + + -- Julien Cristau Tue, 26 Aug 2008 19:27:34 +0200 + +xorg-server (2:1.4.2-4) unstable; urgency=low + + * Re-enable patch 47_fbdevhw_magic_numbers.diff, fixes xen framebuffer + (closes: #493901). Thanks, Olivier Tétard! If someone knows why I + disabled it a year ago, I'd love to know. + + -- Julien Cristau Fri, 15 Aug 2008 19:15:54 +0200 + +xorg-server (2:1.4.2-3) unstable; urgency=low + + * Add Romanian debconf translation (closes: #489069). Thanks, Eddy + Petrișor! + * Update Dutch debconf translation (closes: #491663). Thanks, Thijs + Kinkhorst! + * Pull from server-1.4-branch: + - Xi: ChangeDeviceControl presence events should set the appropriate + devchange + - Fix potential crasher in xf86CrtcRotate() + * Cherry-picked from 1.5: + - Work around the DIX losing mmWidth/mmHeight for RandR 1.1 DDXen + (closes: #491526). + + -- Julien Cristau Sat, 02 Aug 2008 23:22:32 +0200 + +xorg-server (2:1.4.2-2) unstable; urgency=low + + [ Julien Cristau ] + * GLX: zero the buffer used in __glXDisp_GetVisualConfigs (backport from + upstream). + + [ Brice Goglin ] + * Cherry-pick various patches from upstream: + - Fix incorrect test regarding keyboard map. + - xfree86: append, not prepend, new input devices to xf86InputDevs. + + -- Julien Cristau Fri, 18 Jul 2008 10:53:26 +0200 + +xorg-server (2:1.4.2-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release. + * Security fixes from the previous upload are included upstream. + * Cherry-pick patches from upstream git to make the LeftOf and Above options + in xorg.conf actually work (closes: #466526). + * 48_xaa_nooffscreenpixmaps.diff: disable XAA offscreen pixmaps by default; + they can be enabled with Option "XaaOffscreenPixmaps" (closes: #478277, + #433331). + * Cherry-pick various patches from upstream for Xorg's modes code: + - add quirks for monitors with broken EDID (closes: #473260) + - fix max clock computation + - inherit the preferred mode from the global configuration (so if you have + Modes "800x600" in the Display subsection the server will honor it + instead of ignoring it) + * Backport patch from upstream git to fix emulation of int1A PCI BIOS + services (closes: #404885). Thanks, Robert de Bath! + + [ Brice Goglin ] + * Update patches to not require -p0, closes: #485185. + + -- Julien Cristau Thu, 26 Jun 2008 01:57:18 +0200 + +xorg-server (2:1.4.1~git20080517-2) unstable; urgency=high + + * High urgency upload for security fixes. + * New patch from upstream to fix multiple security issues reported by + iDefense: + CVE-2008-2360 - RENDER Extension heap buffer overflow + CVE-2008-2361 - RENDER Extension crash + CVE-2008-2362 - RENDER Extension memory corruption + CVE-2008-1379 - MIT-SHM arbitrary memory read + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Julien Cristau Mon, 09 Jun 2008 14:59:04 +0200 + +xorg-server (2:1.4.1~git20080517-1) unstable; urgency=low + + [ Julien Cristau ] + * Pass -DPRE_RELEASE=0 in CPPFLAGS, so we don't print the pre-release + warning in the Xorg log. + * Pull from upstream server-1.4-branch + + drop patch 40_default_dpi_96.patch applied upstream + + refresh patches 03_auto_load_driver.diff and + 04_auto_load_driver_no_conf.diff + * Don't build-depend on packages with a -1 debian revision. + * Drop the XS- prefix from Vcs-* control fields. + * Add x11-common to the Depends field of xnest, xvfb and xserver-xephyr (its + init script sets up the /tmp/.X11-unix directory). + * Re-enable the dmx DDX, and build the xdmx and xdmx-tools packages (the + build is now fixed upstream); closes: #449254. + + [ Drew Parsons ] + * Patch 95_xprint_disable_dbus disables dbus in Xprint by providing + dummy config functions. Taken from upstream commit + 2a3d1421e0cc18822ae8f478fcc272e16a9e9340, with removal of + CONFIG_LIB from configure.ac shifted to 94_xprint_XSERVER_LIBS. + Closes: #472180. + * Enable the xprint DDX, and build the xprint and xprint-common packages. + + -- Julien Cristau Sun, 18 May 2008 13:36:11 +0200 + +xorg-server (2:1.4.1~git20080507-1) unstable; urgency=low + + * Pull from upstream server-1.4-branch, highlights: + - the server should now scale input events correctly + - xkb keymap failures now give an explanation instead of just a 'failed to + load' message + * Drop patch 51_xkb-and-loathing.diff, applied upstream + * Refresh patches 13_debian_add_xkbpath_env_variable.diff, + 21_glx_align_fixes.patch, 46_reduce_wakeups_from_smart_scheduler.patch and + 94_xprint_XSERVER_LIBS. + * chmod +x configure in debian/rules clean so we can build a git snapshot + where configure is not in the tarball. + * Cherry-pick fix from upstream's master branch to re-arm the DPMS timer + when re-enabling DPMS (closes: #397197). + + -- Julien Cristau Thu, 08 May 2008 15:34:38 +0200 + +xorg-server (2:1.4.1~git20080131-4) unstable; urgency=low + + * fix AlwaysCore handling: enabling AlwaysCore in xorg.conf 1) is the + default, and 2) shouldn't prevent the device from sending core events + (closes: #461760). + + -- Julien Cristau Tue, 29 Apr 2008 20:14:22 +0200 + +xorg-server (2:1.4.1~git20080131-3) unstable; urgency=low + + * XKB: Fix processInputProc wrapping (cherry-picked from upstream). + Thanks to Thomas Jaeger. This should fix the bug with some keys getting + stuck (closes: #473165). + * xkb: when copying the keymap, make sure the structs default to 0/NULL + (cherry-picked from upstream). Fixes a crash and closes: #461783. + * __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target + (cherry-picked from upstream). + * EXA: Fix off-by-one in polyline drawing (cherry-picked from upstream). + * EXA: Skip empty glyphs (cherry-picked from upstream). + * Fix overly-restrictive integer overflow check in EXA pixmap creation + (cherry-picked from upstream). Fixes BadAlloc errors returned by + XCreatePixmap for pixmaps of width 8192 or greater (closes: #471782). + + Following patches by Bart Trojanowski, stolen from the ubuntu package: + * 15_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + * 16_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + * Add 17_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (closes: #451089). + + -- Julien Cristau Wed, 02 Apr 2008 00:20:15 +0200 + +xorg-server (2:1.4.1~git20080131-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 46_reduce_wakeups_from_smart_scheduler.patch to reduce + power consumption, closes: #462700. + + [ Drew Parsons ] + * Restore Xprint, cherry-picking commits + f7f79724fdea0cc6fda0e90e56431df937d49335 and + d67e210f3458b62d7d4a6032aabfda0004d661c1 from master (xserver 1.5). + Include patch 94_xprint_XSERVER_LIBS to give new meaning of + XSERVER_LIBS as expected in configure.ac from master (see commit + a02db0d500cac20d0f0f107d27c064a175018421). Delete + 94_xprint_XSERVER_LIBS when we upgrade to xserver 1.5. + + [ Julien Cristau ] + * Re-enable patch 51_xkb-and-loathing.diff: ignore SIGALRM around calls to + Popen()/Pclose() to fix a hang when opening menus in OpenOffice.org + (once again closes: #433131) + * Refresh all patches to make patch-audit happy. + * Pull from upstream server-1.4-branch as of March 14th. + * 42_dont_break_grab_and_focus_for_window_when_redirecting.diff removed, + applied upstream. + * Don't build xprint just yet, because it needs NEW processing. + + [ David Nusinow ] + * Add 11_dont_crash_on_bad_dri_mode. See bugzilla #13860 + + -- Julien Cristau Fri, 14 Mar 2008 15:18:16 +0100 + +xorg-server (2:1.4.1~git20080131-1ubuntu12) intrepid; urgency=low + + * Fix multiple security issues: + + CVE-2008-2360 - RENDER Extension heap buffer overflow + + CVE-2008-2361 - RENDER Extension crash + + CVE-2008-2362 - RENDER Extension memory corruption + + CVE-2008-1379 - MIT-SHM arbitrary memory read + + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Bryce Harrington Wed, 11 Jun 2008 10:54:15 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu11) intrepid; urgency=low + + * 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - Choose the default driver for the platform instead of the generic + default (vesa) if there is no PCI info. Without this, on platforms + like PS3 where fbdev should be used rather than vesa, the system + will fail to start up. (LP: #219424) + + -- Bryce Harrington Tue, 13 May 2008 13:09:17 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu10) intrepid; urgency=low + + [Timo Aaltonen] + * 166_fix_lpl_monitors.diff: + - fix LPL monitors properly (LP: #204065) + + [Martin-Eric Racine] + * 167_xf86AutoConfig_geode_addition.diff: + - Autodetect geode video devices (LP: #219630) + + [Bryce Harrington] + * 166_fix_lpl_monitors.diff: + - Modified to apply to Ubuntu + * 168_closedir.patch: + - Fix crash on PS3 due to closing a dir that wasn't successfully opened + (LP: #217647) + + -- Bryce Harrington Tue, 13 May 2008 00:03:40 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu9) hardy; urgency=low + + * debian/patches/series, + debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn on patch included in previous commit - obviously accidentially + forgotten. + - Now that its really enabled, make it apply to 1.4.1 code base + accordingly. (LP: #182038) + + -- Alexander Sack Tue, 15 Apr 2008 18:23:51 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu8) hardy; urgency=low + + * debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn XAA Offscreen Pixmaps off by default, and use + XaaOffscreenPixmaps "true" to turn them on. This setting was an + early pre-EXA HW optimization attempt that didn't pan out; upstream is + deprecating XAA in favor of EXA generally, and for situations where + XAA is still in use recommends NOT using this optimization hack, since + they found it often just made performance worse, and sometimes created + visualization bugs. People wishing to gain added performance should be + experimenting with EXA anyway, not this setting. (closes LP: #182038) + + -- Bryce Harrington Mon, 21 Apr 2008 12:30:53 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu7) hardy; urgency=low + + * 159_xkb_default_to_null.diff: + When copying the keymap, make sure the structs default to 0/NULL. + (LP: #184651) + * 160_default_to_intel.diff: + Default to using intel instead of i810. (LP: #158709) + * 161_fix_big_endian_cursor.diff: + Fix RandR 1.2 driver interface conversion of two colour cursors to + ARGB. (LP: #141118) + * Fixes from the upstream 1.4-branch: + - 162_cve-2007-6429.diff: + CVE-2007-6429: Always test for size+offset wrapping. + - 163_fix_untrusted_access.diff: + Security: Fix for fdo bug #14480: untrusted access broken in 7.3. + - 164_fix_context_sharing.diff: + Fix context sharing between direct/indirect contexts + + -- Timo Aaltonen Wed, 09 Apr 2008 11:06:04 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu6) hardy; urgency=low + + * 157_fix_exa_pixmap_width.diff: + A patch from upstream to allow wider pixmaps with EXA (LP: #205599) + * 158_xkb_wrapping.diff: + A patch reviewed by upstream that prevents keys from getting stuck under + certain situations. (LP: #194214) + * 51_xkb-and-loathing.diff: + Re-enable. Ignore SIGALRM around calls to Popen()/Pclose() to fix a hang + when opening menus in OpenOffice.org. (LP: #204137) + + -- Timo Aaltonen Sun, 30 Mar 2008 19:18:32 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu5) hardy; urgency=low + + * Add some patches from upstream 1.4-branch or proposed set: + - 109_glx_fail_if_no_texture_bound.diff + + __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture + target. + - 153_exa_skip_empty_glyphs.diff + + Fix a crasher when EXA and RenderAccel is in use. + - 154_fix_rotation_for_multimon.diff + + Fix rotation for multi-monitor situation. + - 155_exa_fix_off-by-one.diff + + Fix off-by-one in polyline drawing. + - 156_resize_composite_overlay.diff + + Resize composite overlay window when the root window changes. + (LP: #199700) + + -- Timo Aaltonen Thu, 13 Mar 2008 18:21:41 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu4) hardy; urgency=low + + * Add 152_xserver_exa_force_greedy.patch to provide a mechanism for + drivers to force greedy mode on. (LP: #177492, others) + + -- Bryce Harrington Tue, 19 Feb 2008 13:38:16 -0800 + +xorg-server (2:1.4.1~git20080131-1ubuntu3) hardy; urgency=low + + [ Bryce Harrington ] + * Add 150_edid_quirk_lp154w01.patch to fix font size on LGPhilipsLCD + LP154W01-TLAE (LP: #127827) + * Add 149_add_quirks_for_physical_screen_size_issues.patch to help + address various common EDID issues (like monitors that report in + centimeters instead of millimeters, etc.) (LP: #151311) + + [ Timo Aaltonen ] + * Add 151_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (LP: #180742) + + -- Timo Aaltonen Tue, 19 Feb 2008 17:48:05 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu2) hardy; urgency=low + + * Add patch 148_dix_touchscreen_fixes.diff from Matthew Garrett to fix + touchscreen issues with DIX. + http://lists.freedesktop.org/archives/xorg-commit/2008-February/014648.html + + -- Steve Kowalik Fri, 08 Feb 2008 10:30:04 +1100 + +xorg-server (2:1.4.1~git20080131-1ubuntu1) hardy; urgency=low + + [ Timo Aaltonen ] + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * 108_fedora_honor_displaysize.patch: + - Patch from upstream/Fedora to honor the DisplaySize-setting. + (LP: #135738, b.fd.o #9758) + * Drop patch 100_avoid_acpi_insanity.diff, superseded by patch 45. + + [ Bart Trojanowski, Martin-Eric Racine ] + * 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + (LP: #140051) + * 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + (LP: #140051) + + -- Timo Aaltonen Tue, 05 Feb 2008 18:57:14 +0200 + +xorg-server (2:1.4.1~git20080131-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff + to prevent XF86_APM_CAPABILITY_CHANGED from being issued for all ACPI + events, thanks Sjoerd Simons, closes: #461463. + + [ David Nusinow ] + * Update Japanese translation from Hideki Yamane. closes: #462761 + * New upstream pull + + Fixes crashes due to absent LED's being referenced + + -- David Nusinow Thu, 31 Jan 2008 21:43:12 -0500 + +xorg-server (2:1.4.1~git20080118-1ubuntu2) hardy; urgency=low + + * Remove the DPI patch for real this time, conflicts with the upstream + commit that was pulled. + * 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + + -- Timo Aaltonen Sat, 19 Jan 2008 20:26:41 +0200 + +xorg-server (2:1.4.1~git20080118-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 19 Jan 2008 02:40:00 +0200 + +xorg-server (2:1.4.1~git20080118-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_dont_break_grab_and_focus_for_window_when_redirecting.diff + to prevent password authentication bypass, closes: #449108. + + [ Julien Cristau ] + * New upstream snapshot + + includes the security fixes from the previous version + + fixes regression introduced by the fix for CVE-2007-6429 in the MIT-SHM + extension (closes: #461410) + + -- Brice Goglin Fri, 18 Jan 2008 22:20:32 +0100 + +xorg-server (2:1.4.1~git20080105-2) unstable; urgency=low + + [ David Nusinow ] + * Improve dpms logging patch to correctly label message type + + [ Brice Goglin ] + * Grab upstream commit db9ae863536fff80b5463d99e71dc47ae587980d + to set DEFAULT_DPI to 96 instead of 75. + + [ Julien Cristau ] + * Fix multiple security issues + + CVE-2007-6427: XInput Extension Memory Corruption + + CVE-2007-6428: TOG-CUP Extension Memory Corruption + + CVE-2007-6429: EVI Extension Integer Overflow, + MIT-SHM Extension Integer Overflow + + CVE-2007-5760: XFree86-Misc Extension Invalid Array Index + + CVE-2007-5958: file existence disclosure + + CVE-2008-0006: PCF font parser buffer overflow + * Bump Standards-Version to 3.7.3 (no changes). + + -- Julien Cristau Thu, 17 Jan 2008 15:10:03 +0100 + +xorg-server (2:1.4.1~git20080105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * debian/patches/103_fedora_openchrome.patch: + - Patch from Fedora to use openchrome instead of via. + + -- Timo Aaltonen Tue, 08 Jan 2008 18:05:21 +0200 + +xorg-server (2:1.4.1~git20080105-1) unstable; urgency=low + + * Don't reference non-existent bug-reporting.txt file in xvfb-run.1 + * New upstream git pull, again from the server-1.4-branch + + Drop 08_xkb_infinite_loop.diff, it's upstream now + * Improve logging when DPMS is enabled implicitly + + Adds 08_better_dpms_logging.diff + + -- David Nusinow Sun, 06 Jan 2008 16:56:38 -0500 + +xorg-server (2:1.4.1~git20071212-1ubuntu2) hardy; urgency=low + + * debian/patches/101_fedora-apm-typedefs.patch: + - Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + + -- Timo Aaltonen Mon, 17 Dec 2007 11:54:46 +0200 + +xorg-server (2:1.4.1~git20071212-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Thu, 13 Dec 2007 13:43:35 +0200 + +xorg-server (2:1.4.1~git20071212-2) unstable; urgency=low + + * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over + an infinite loop in event processing (closes: #451989). + + -- Julien Cristau Sat, 22 Dec 2007 00:02:01 +0100 + +xorg-server (2:1.4.1~git20071212-1) unstable; urgency=low + + [ Julien Cristau ] + * debian/rules: Use lsb_release -i -s to get the vendor name, instead of + hardcoding "Debian". + * debian/control: build-dep on lsb-release. + * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor. + * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an + infinite loop when PreferredMode is used in xorg.conf. + + [ David Nusinow ] + * New upstream version. This is based on the server-1.4-branch, and includes + all the changes in the 1.4.0.90 (pre-)release as well as additional fixes. + This is primarily a bugfix release + + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream + + -- David Nusinow Wed, 12 Dec 2007 20:19:11 -0500 + +xorg-server (2:1.4.1~git20071119-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * Bring back old changelog entries. + * debian/patches/120_fedora_xserver-xaa-evict-pixmaps.patch: + - New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + + -- Timo Aaltonen Tue, 20 Nov 2007 15:35:59 +0200 + +xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low + + * Ship a .orig.tar.gz that's been autoreconf'ed. Closes: #451891 + * Re-enable validation of the screen section of xorg.conf + Modify 14_default_screen_section.diff. This also fixes a problem where the + server can't find the device section when it is specified in the screen + section. Closes: #451950 + + -- David Nusinow Mon, 19 Nov 2007 20:38:04 -0500 + +xorg-server (2:1.4.1~git20071117-1) unstable; urgency=low + + [ Julien Cristau ] + * Add conflict on xserver-xorg-input-wacom (<< 0.7.8) to xserver-xorg-core. + That driver is built against the old ABI, but doesn't provide + xserver-xorg-input. + + [ David Nusinow ] + * Add 14_default_screen_section.diff. This allows you to not have a screen + section in your xorg.conf. A basic default one with a simple identifier + will be created for you in this case using all default values + + [ Christian Perrier ] + * Debconf translations: + * Galician. Closes: #444764 + * German. Closes: #444917 + * Brazilian Portuguese. Closes: #445266 + * Russian. Closes: #443859 + * Portuguese. Closes: #445051 + * Slovak. Closes: #446418, #448220 + + [ Brice Goglin ] + * Bump x11proto-core-dev build-dependency to >= 7.0.9, + thanks Max Kellermann, closes: #446869. + + [ David Nusinow ] + * New upstream stable snapshot + + fixes a bunch of input-related bugs, notably keyboard leds + (closes: #440743 and its pile of duplicates) + * Remove patches merged in this snapshot + + 08_exa_fix_exaFillRegionTiled_fallback.diff + + 11_exa_no_negative_tile_offsets.diff + + 42_fix_RemoveGeneralSocket_crash_from_dbus.diff + + 44_XKB_mapping_changes_for_all_core-sending_devices.diff + + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff + * Make xephyr recommend xfonts-base. Closes: #451542 + + -- David Nusinow Sat, 17 Nov 2007 18:54:02 -0500 + +xorg-server (2:1.4.1~git20071105-1ubuntu2) hardy; urgency=low + + * Brown paper bag release: include all the patches. + + -- Timo Aaltonen Sat, 10 Nov 2007 15:24:28 +0200 + +xorg-server (2:1.4.1~git20071105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just disable + it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 10 Nov 2007 13:07:55 +0200 + +xorg-server (2:1.4-3) unstable; urgency=low + + [ David Nusinow ] + * Minor cleanups of 03_autoload_drivers.diff. Thanks to Julien for + spotting all these ugly bits + + Newline after #else when picking the driver (this is the failsafe + choice) + + Change by hacked "ids" file name suffix check to use strncmp and check + for ".ids" + + Use strncpy instead of strncat unnecessarily + * Add support for a partially configured device section + Implemented in 03_autoload_driver.diff. Now if you have a device section + but lack a driver, it'll use the settings. This will allow you to just + have a device section and enable EXA but not have to specify the driver or + anything else. + * Add 07_autoconfig_screen_with_device_section.diff + This patch allows the Screen section to not specify a device section. If + this happens, the server will automatically use the first device section + listed in the xorg.conf instead + + [ Brice Goglin ] + * Allow building the Xfbdev server in new package xserver-xfbdev, but leave + it disabled for now (see #439764). + * Add upstream commit 27ad5d74c20f01516a1bff73be283f8982fcf0fe as patch + 44_XKB_mapping_changes_for_all_core-sending_devices.diff to fix broken + xmodmap invocation in .xsession, closes: #443044. + * Add upstream commit 0e800ca4651a947ccef239e6fe7bf64aab92257c as patch + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff to fix crash + in GetKeyboardValuatorEvents, closes: #443697. + + [ Christian Perrier ] + * Debconf templates and debian/control reviewed by the debian-l10n- + english team as part of the Smith review project. Closes: #442210 + * Debconf translation updates: + - Swedish. Closes: #443047 + - Czech. Closes: #443100 + - French + - Vietnamese. Closes: #443174 + - Italian. Closes: #422414 + * New debconf translations + - Hungarian. Closes: #442956 + - Thai. Closes: #442962 + - Tamil. Closes: #443027 + - Basque. Closes: #443156 + - Hebrew. Closes: #443204 + - Bulgarian. Closes: #443226 + - Finnish. Closes: #443611 + + [ Julien Cristau ] + * Add patch backported from upstream commit + 13949f997289068354e83bc83e50d97b8232efb1 to remove the type1 module: patch + 05_kill_type1.diff replaces 48_disable_type1.diff, and is now enabled in + debian/patches/series. + * Don't build kdrive-based servers we're not shipping. + * Use ${binary:Version} instead of ${Source-Version}. + * Add 08_exa_fix_exaFillRegionTiled_fallback.diff by Michel Dänzer to punt + on fallback case not handled correctly in exaFillRegionTiled (backported + from master's c7d6d1f5); closes: #444203. + * Add 11_exa_no_negative_tile_offsets.diff by Michel Dänzer to make sure + tile offsets passed to drivers are never negative (backported from + master's 006f6525). + * Add 12_bgPixel_fix_64bit_issue.diff by Hong Liu: bgPixel (unsigned long) + is 64-bit on x86_64, so -1 != 0xffffffff (master's 9adea807). + + -- Julien Cristau Sat, 29 Sep 2007 16:14:35 +0200 + +xorg-server (2:1.4-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_fix_RemoveGeneralSocket_crash_from_dbus.diff to fix a crash + when leaving, closes: #440547. + * Add 43_allow_override_BIOS_EDID_preferred_mode.diff to allow overriding + BIOD/EDID preferred mode with Option PreferredMode in the config file. + + [ David Nusinow ] + * Upload to unstable + + -- David Nusinow Sun, 16 Sep 2007 14:24:18 -0400 + +xorg-server (2:1.4-1) experimental; urgency=low + + * New upstream release (X.Org 7.3) + + RandR doesn't mark Xinerama as active when no crtcs are enabled + (closes: #431746) + * Add proper depends to xserver-xorg-dev: + x11proto-core-dev, x11proto-input-dev (>= 1.4), x11proto-xext-dev, + x11proto-video-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev (>= + 2:0.9.3), x11proto-fonts-dev + * Bump serverminver to 2:1.4, videoabiver to 2, inputabiver to 2. + + -- Julien Cristau Mon, 10 Sep 2007 14:35:38 +0200 + +xorg-server (2:1.3.99.2-1) experimental; urgency=low + + [ David Nusinow ] + * Refactor auto_load_driver patch to allow the same method to be used when + there is no xorg.conf present + * Add 04_auto_load_driver_no_config.diff to use my auto_load_driver method + when there's no xorg.conf present + + [ Brice Goglin ] + * Simplify output redirections in the reportbug script, + thanks Justin Pryzby, closes: #358390. + * Add missing URL in long descriptions, update links to the upstream + module, fix some capitalization, thanks Christian Perrier. + + [ Julien Cristau ] + * New upstream release candidate. + + bump build dep on renderproto to >= 0.9.3, and on pixman to >= 0.9.4-2. + + bump video abi version and serverminver. + * Drop the Conflict on fglrx-driver, which is taken care of by the abi + version. + + -- Julien Cristau Tue, 04 Sep 2007 17:32:19 +0200 + +xorg-server (2:1.3.99.0-2) experimental; urgency=low + + * Improve 03_auto_load_driver.diff + + Move memory cleanup and directory closing to after the end label to + prevent leaks. Thanks Julien. + + Allow a driver to claim everything from a specific vendor. It does so by + only specifying a vendor ID and leaving the latter four digits empty. + + -- David Nusinow Sun, 19 Aug 2007 16:06:54 -0400 + +xorg-server (2:1.3.99.0-1) experimental; urgency=low + + [ Julien Cristau, David Nusinow ] + * New upstream release candidate. + + X is now more tolerant of devices without a CtrlProc (closes: #269860). + + cvt(1) and gtf(1) typos fixed (closes: #432065). + + Make sure DRIScreenPrivIndex is -1 when no DRI screen private is + allocated. (closes: #413697). + + __glXDRIscreenProbe: Use drmOpen/CloseOnce (closes: #419614). + + segfault in swrast_Triangle fixed in mesa (closes: #407502). + + the Xvfb manpage doesn't refer to /usr/tmp anymore (closes: #270257). + + typos in Xserver(1) fixed (closes: #306688). + + * Remove patches that were pushed upstream + + 03_xnest_manpage_overhaul.diff + + 04_read_rom_in_chunks.diff + + 05_module_defaults.diff + + 07_stolen_from_HEAD_xorgconf_manpage.diff + + 08_s390_servermd.diff + + 12_security_policy_in_etc.diff + + 16_s390_fix.diff + + 18_execinfo_configured.patch + + 23_kfreebsd_support.diff + + 24_hurd_ioperm_fix.diff + + 32_disable_sparc_pci_bridge.diff + + 39_alpha_build_flags.patch + + 40_consolidate_portPriv_pDraw_assignments.diff + + 42_only_run_special_key_behaviours_on_non-XKB.diff + + 44_fedora-xephyr-keysym-madness.diff (different fix applied upstream) + + 45_CVE-2007-2437.diff + + 46_export-ramdac-symbols.diff + + 49_map_keyboard_driver_to_kbd.diff + + 50_alpha_no_include_asm_pci.h.diff + + 94_use_default_font_path.diff + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff and + 127_mesa-6.5.3-compat.diff (obsolete) + + * Update other patches: + + 09_debian_xserver_rtff.diff disabled (doesn't apply, and isn't even + used AFAICS; + + 11_define_XFree86Server.diff dropped, to be fixed in drivers instead; + + 13_debian_add_xkbpath_env_variable.diff refreshed; + + 21_glx_align_fixes.patch updated; + + 43_xephyr_crash_at_exit.diff dropped (doesn't apply); + + 47_fbdevhw_magic_numbers.diff disabled for now; + + 48_disable_type1.diff disabled for now; + + 51_xkb-and-loathing.diff disabled for now. + + [ Julien Cristau ] + * Add build-dep on x11proto-input-dev (>= 1.4.2), libpixman-1-dev + (>= 0.9.0), libdbus-1-dev, libhal-dev (except on hurd-i386 for the last + two). + * Bump build-dep on mesa-swx11-source to >> 7.0.1~rc2-1. + * Bump serverminver to this version, videoabiver to 1.9, inputabiver to + 0.9 (so this doesn't clash with a release and drivers have to be + rebuilt). + * Bump build-dep on compositeproto to >= 0.4. + * Install the upstream changelog. + * Disable the xprint and dmx DDX for now, they fail to build. + * xserver-xorg-dev needs a dependency on libpixman-1-dev. + * Add explanations about our tarball and upstream URL to debian/copyright. + + [ Drew Parsons ] + * Update Xprint build to include pixman. + + [ David Nusinow ] + * Add 03_auto_load_driver.diff. This patch allows the server to select a + driver and automatically create a Devices section when none is specified + in your xorg.conf. It chooses the driver based on a set of PCI ID's that + the driver itself provides in /usr/share/xserver-xorg/pci. If no driver + claims the PCI ID of your primary video card, then it will choose a + fallback based on your system. + + -- Julien Cristau Sat, 18 Aug 2007 18:28:49 +0200 + +xorg-server (2:1.3.0.0.dfsg-13) UNRELEASED; urgency=low + + [ Debconf templates translations ] + * Italian added. Closes: #422414 + * Slovak added. Closes: #438578 + + -- Christian Perrier Sun, 26 Aug 2007 12:09:52 +0200 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu8) gutsy; urgency=low + + * Add 145_glx_visuals_bound_check.patch to fix issue where mesa + incorrectly counts its visuals and can free too many of them during + video mode changes (VT switch, restart, hibernate, etc.) such as + when running Compiz. (closes LP: #127101) + + -- Bryce Harrington Fri, 28 Sep 2007 15:48:08 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu7) gutsy; urgency=low + + * Drop 143_fedora_xserver-1.3.0-randr12-config-hack.patch + as it causes failure to detect proper resolution on some intel + hardware. (closes LP: #144956) + + -- Bryce Harrington Tue, 25 Sep 2007 14:42:59 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu6) gutsy; urgency=low + + * Drop 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch + as it is causing black bars to appear on screen for i810 users. + (closes LP: #137604 + several dupes) + + -- Bryce Harrington Thu, 20 Sep 2007 14:35:54 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu5) gutsy; urgency=low + + [ Kees Cook ] + * debian/patches/132_composite-no-clipping.diff: Adjusted WindowRec + structure order and RedirectDraw logic to avoid nvidia crashes + (fixes LP: #130325). + * debian/patches/100_security_fdo-bug-7447.diff: Composite used for + pixmap population on redirect. [CVE-2007-4730] + + -- Bryce Harrington Tue, 18 Sep 2007 17:20:14 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu4) gutsy; urgency=low + + * debian/patches/133_psb_auto.patch: Add automatic detection of + Poulsbo hardware when running without a Device definition. + * Added some cherry-picked patches from fedora: + - 134_fedorda_xorg-x11-server-1.1.1-vt-activate-is-a-terrible-api.patch: + Fixes race condition where someone does a VT_ACTIVATE + between another ACTIVATE/WAITACTIVE by adding a fail. + (Potentially might address Ubuntu bugs 134478 and/or 134982) + - 135_fedora_xorg-x11-server-1.1.1-xkb-in-xnest.patch: Fixes issue when + starting a session in an xnest nest environment as a different user, + where keyboard map does not get preserved. Removes + NO_HW_ONLY_EXTS check to address this issue. (RedHat bug 193431; + Potentially may address Ubuntu bug 44846) + - 136_fedora_xserver-1.2.0-honor-displaysize.patch: Fixes issue if monitor + width and height have been specified, xserver would override them + with the hsize/vsize detected from DDC. + - 137_fedora_xserver-1.2.0-vfprintf.patch: Fixes typo 'vfprinf' + - 138_fedora_xserver-1.3.0-default-dpi.patch: Changes default dpi to 100. + (Addresses Ubuntu bugs 118745, 107320, many others...) + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch: Fixes + document fontpaths shown in the man page. + - 140_fedora_xserver-1.3.0-domain-obiwan.patch: Fixes longstanding bug in + domain support. + - 141_fedora_xserver-1.3.0-edid-quirk-backports.patch: Adds quirk for + Samsung SyncMaster 225BW. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch: Composite on + 8bpp pseudocolor root windows appears to fail, so just disable it + on anything pseudocolor for safety. + - 143_fedora_xserver-1.3.0-randr12-config-hack.patch: Adds check to use + the screen's xrandr modes if a preferred mode was not specified. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: Only collect xnest + exposures for xexposes with non-zero height and width. + + -- Bryce Harrington Fri, 7 Sep 2007 14:23:23 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu3) gutsy; urgency=low + + * Added some cherry-picked patches from xserver 1.3.99: + - 202_Add_quirk_for_Acer_AL1706_monitor_to_force_60hz_refresh.patch: + The Acer AL1706 monitor reports support for 75hz via EDID, but + does not sync when this range is given, so force it to 60hz. + - 205_Bug_10770-_Inputdevs_isnt_a_valid_config_file_keyword.patch: + Fixes typo in config file parser. + - 208_Bug_6620-_Fixed_a_missing_else_in_ATIPseudoDMAInit.patch: + Fixes issue where registers were written twice on R200, sometimes + also putting bad values in atis->cce_pri_size. + - 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch: + Fixes situation where when a specific mode is requested by monitor + or user, xorg would tweak it to something incorrect. + - 216_Bug_9041-_Check_the_return_code_in_xf86MapDomainMemory.patch: + Fixes issue where mmap return value was being ignored and failing + to issue fatal error as it should. + - 221_ExaOffscreenMarkUsed-_Dont_crash_when_theres_no_offscreen_memory.patch: + Fixes crash when there is no offscreen memory for EXA. + - 222_Fix_a_crash_when_rotating_the_screen.patch: + Fixes crash when rotating screen with xrandr. + - 223_Fix_bug_8871-scrolling_corruption_with_a_compositing_manager.patch: + Fixes scrolling corruption with composite due to incorrectly + generated GraphicsExposes. + - 224_Fix_calculations_in_x86_emulator_for_the_long_long_case_Andreas_Schwab.patch: + Fixes long long multiplication when in x86 emulator. + - 227_Fix_sync_polarity_on_Samsung_SyncMaster_205BW_monitor.patch: + Adds quirk for Samsung SyncMaster 205BW + - 230_In___glXCreateARGBConfig_insert_the_new_GL_mode_at_the__end__of_the_linked_list.patch: + Fixes insertion order of linked list that can cause GLX clients to + fail when attempting to use the last GLX mode/visual. + - 231_In_dmxBackendMouGetInfo_initialize_the_info-minval_maxval_arrays_to_the_size_of_the_backend_display.patch: + Fixes potential issue in X input where axis clipping code in + GetPointerEvents() constrains the pointer's coordinate range to a + max of 0, causing the mouse to not move. + - 234_Reapply_patch_to_fix_AMD_CPU_detection.patch: + Fixes AMD Geode CPU detection. + - 236_Syncmaster_226_monitor_needs_60Hz_refresh_10545.patch: + Adds quirk for Samsung SyncMaster 226BW. + - 238_Update_pci.ids_to_2007-07-16_snapshot.patch: + Updates our pci ids to support more current hardware. + Remove nvidia ids in extrapci.ids that are now in pci.ids. + Add nvidia ids to extrapci.ids that are in xf86-video-nv but not pci.ids + - 241_XFree86-_Treat_evdev_and_vmmouse_as_mouse_drivers_bug_10512_10559.patch: + Fix issue where a default mouse device gets automatically added + when an evdev or vmmouse section has already been specified. + - 243_exaDriverInit-_Fail_if_pScreenInfo_or_a_member_of_it_is_invalid.patch: + Fix crash in EXA when pScreenInfo or a member of it is invalid. + - 244_fix_an_occasional_crash_in_GetWindowName_bug-_9798.patch: + Fixes crash by adding check of XmbTextPropertyToTextList()'s + return code. + - 245_regenerated_to_fix_bug_10371.patch: + Fixes issue where if DRI is disabled, GL_MAX_TEXTURE_COORDS_ARB + value is not returned correctly from glGetIntegerv(). + + -- Bryce Harrington Fri, 31 Aug 2007 18:36:22 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu2) gutsy; urgency=low + + * Don't send a configuration change event just because somebody's pressed + a brightness key + + -- Matthew Garrett Sun, 26 Aug 2007 16:17:15 +0100 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu1) gutsy; urgency=low + + * Merge from debian unstable, remaining changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch, + 120_fedora_disable_offscreen_pixmaps.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Patches needed to build against newer Mesa. + + 132_composite-no-clipping.diff: + Change the semantics of manual-redirect Composite windows so that + they do not clip sibling or parent drawing. Needed by hildon-desktop + to prevent home applets from clipping. + - debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + + -- Timo Aaltonen Tue, 21 Aug 2007 22:01:38 +0300 + +xorg-server (2:1.3.0.0.dfsg-12) unstable; urgency=low + + [ Brice Goglin ] + * Add 51_xkb-and-loathing.diff to fix a hang in OpenOffice.org + when opening menus, closes: #433131. + * Install the exa(4) and fbdevhw(4) manpages. + + [ Julien Cristau ] + * Update the xorg.conf(5) manpage to get documentation for RandR 1.2 + options: + + 07_stolen_from_HEAD_xorgconf_manpage.diff: new patch; + + 07_xorgconf_manpage_overhaul.diff dropped; + + 34_xorg.conf_man_typos.patch dropped; + + 05_module_defaults.diff, 94_use_default_font_path.diff: dropped hunks + applying to hw/xfree86/doc/man/xorg.conf.man.pre. + * Add patch 11_define_XFree86Server.diff: XFree86Server needs to be defined + in xorg-server.h and exported to drivers. + * Add patches 125_glx_remove-stray__GLinterface.diff + 126_glxproxy_remove-stray__GLinterface.diff and 127_mesa-6.5.3-compat.diff + to build with mesa >= 6.5.3, and bump build-dependency on + mesa-swx11-source. + * Include the Debian package version in OSVENDOR to make it appear in the + X log. + + -- Julien Cristau Thu, 09 Aug 2007 16:32:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-11) unstable; urgency=low + + * Yet another alpha build fix: also remove the asm/pci.h include from + os-support/linux/lnx_axp.c. Include "lnx.h" and instead. + + -- Julien Cristau Sat, 14 Jul 2007 20:09:35 +0200 + +xorg-server (2:1.3.0.0.dfsg-10) unstable; urgency=medium + + * hw/xfree86/common/compiler.h and declare incompatible + prototypes for outb and friends, so change the patch from -9 to not + #include and rely on declarations in lnx.h itself for the + IOBASE_* macros. + + -- Julien Cristau Sat, 14 Jul 2007 18:06:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-9) unstable; urgency=medium + + * Include instead of in + hw/xfree86/os-support/linux/lnx.h, as the latter isn't exported to + userspace anymore; fixes FTBFS on alpha. Thanks, Steve Langasek! + + -- Julien Cristau Sat, 14 Jul 2007 12:17:10 +0200 + +xorg-server (2:1.3.0.0.dfsg-8) unstable; urgency=medium + + * Medium-urgency upload to get the fix for #428794 in testing faster, + hopefully. + + [ Brice Goglin ] + * Add 47_fbdevhw_magic_numbers.diff: patch by Adam Jackson to keep the + fbdev2xfree_timing() function from changing the pixel clock value if the + fbdev driver claims that it is 0. + + [ Julien Cristau ] + * Don't build the type1 font module. + * Add patch by Alan Coopersmith to map (case-insensitively) the old + "keyboard" input driver to "kbd" (addresses: #428794). I'm not + reassigning the bug to xserver-xorg-core for now so as not to break + testing by letting xserver-xorg-input-keyboard transition before the fixed + xorg-server. + + -- Julien Cristau Sat, 14 Jul 2007 01:48:20 +0200 + +xorg-server (2:1.3.0.0.dfsg-7) unstable; urgency=low + + [ Brice Goglin ] + * Add 40_consolidate_portPriv_pDraw_assignments.diff to avoid a crash + in xf86XVReputVideo (closes: #424899, #431655). + * Add 41_vbe_filter_less.diff to not reject VESA modes early since + xf86ValidateModes should handle them just fine (closes: #424684). + * Add 42_only_run_special_key_behaviours_on_non-XKB.diff to fix special + keys in Xephyr (closes: #415025). + * Add 43_xephyr_crash_at_exit.diff to avoid crashing Xephyr when first + client disconnect (closes: #420421). + + -- Julien Cristau Wed, 04 Jul 2007 23:42:40 +0200 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu3) gutsy; urgency=low + + * debian/patches/series: + - Re-enable 132_composite-no-clipping.diff with fix from upstream + + -- Bryce Harrington Wed, 25 Jul 2007 16:39:29 -0700 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu2) gutsy; urgency=low + + * debian/patches/series: + - don't apply 132_composite-no-clipping.diff for now, it doesn't work + correctly when using compiz + + -- Sebastien Bacher Fri, 13 Jul 2007 17:03:42 +0100 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + - 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Mesa 6.5.3 build support + * debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + * debian/patches/132_composite-no-clipping.diff: Change the + semantics of manual-redirect Composite windows so that they do not + clip sibling or parent drawing. Needed by hildon-desktop to prevent + home applets from clipping. + + -- Bryce Harrington Mon, 2 Jul 2007 12:47:44 -0700 + +xorg-server (2:1.3.0.0.dfsg-6) unstable; urgency=low + + * Change fglrx conflict to << 8.37.6 (closes: #424975). + + -- Julien Cristau Fri, 01 Jun 2007 14:58:39 +0200 + +xorg-server (2:1.3.0.0.dfsg-5) unstable; urgency=low + + [ Brice Goglin ] + * Add 24_hurd_ioperm_fix.diff to fix xf86Enable/DisableIO on Hurd with + recent GNU Mach. Thanks Samuel Thibault! + * Add 06_use_proc_instead_of_sysfs_for_pci_domains.diff since sysfs-based + PCI management code is broken at least on sparc and powerpc. + Closes: #422077, #422095. Thanks to Jim Watson for testing! + * Install the Xephyr README, closes: #395888. + * Update 07_xorgconf_manpage_overhaul.diff to drop the reference to the + xorg.conf example which we do not install since Xserver 1.3 does automatic + configuration, the manpage is very well documented, and we generate a + config file during installation. Closes: #222932. + * Fix warning in /etc/init.d/xprint when /usr/lib/X11/fonts does not exist. + Closes: #422352. Thanks Cristian Ionescu-Idbohrn! + * Pull upstream commit 9c80eda826448822328bb678a7d284cc43fffb17 to disable + RandR's fake xinerama geometry when there's more than one protocol screen + (closes: #420679). + + [ Julien Cristau ] + * Add patch to make sure that the ramdac symbols are present in the server + and drivers can use them (closes: #423129). + * xserver-xorg-core Conflicts with fglrx-driver, which broke with 1.3. + We'll need to make this versioned (or drop it) when fglrx is fixed. + + -- Julien Cristau Wed, 16 May 2007 15:17:55 +0200 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu2) gutsy; urgency=low + + * Build-Depend on mesa 6.5.3 + * Apply Mandriva patches to build against mesa 6.5.3 + - 125_glx_remove-stray__GLinterface.diff + - 126_glxproxy_remove-stray__GLinterface.diff + - 127_mesa-6.5.3-compat.diff + + -- Kyle McMartin Sat, 26 May 2007 18:12:35 +0000 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + * Drop 124_fix-pdripriv_null_deref.patch. Already fixed in GLX code. + See upstream FDO bug #8537 + + -- Bryce Harrington Mon, 14 May 2007 16:40:03 -0700 + +xorg-server (2:1.3.0.0.dfsg-4) unstable; urgency=low + + * Cherry-pick patch from upstream git to fix security issue in the Xrender + extension: malicious clients can cause a division by zero in the server + (closes: #422936). Reference: CVE-2007-2437. Thanks, Micah Anderson! + + -- Julien Cristau Wed, 09 May 2007 02:11:08 +0200 + +xorg-server (2:1.3.0.0.dfsg-3) unstable; urgency=low + + * Include 94_use_default_font_path.diff. This patch is like Eugene's patch + to always look in the default font path from the past, but now we provide + an option to disable looking in the default font path at runtime. This + will allow people to specify additional font paths in their xorg.conf + without losing their current paths. This will also help avoid people + having ye olde "fixed font" problem. + * Fix compilation warnings for 05_module_defaults.diff. Previously the patch + used a generic pointer for the options record, but now we use the actual + XF86OptionsPtr type. + + -- David Nusinow Thu, 26 Apr 2007 22:39:52 -0400 + +xorg-server (2:1.3.0.0.dfsg-2) unstable; urgency=low + + * Add Brice Goglin's fix for 05_module_defaults.diff, so that it also works + when there is no module section at all. Thanks to Michel Dänzer for + helping also. + + -- David Nusinow Sat, 21 Apr 2007 09:34:12 -0400 + +xorg-server (2:1.3.0.0.dfsg-1) unstable; urgency=low + + * Upload to unstable. + * Add XS-Vcs-* to debian/control. + * Remove non-free file hw/xfree86/doc/README.DRI from the upstream tarball. + * Bump serverminver to 2:1.3.0.0. + + -- Julien Cristau Fri, 20 Apr 2007 07:54:14 +0200 + +xorg-server (2:1.3.0.0-1) experimental; urgency=low + + * New upstream release + + -- David Nusinow Thu, 19 Apr 2007 22:27:05 -0400 + +xorg-server (2:1.2.99.905-3) experimental; urgency=low + + [ Julien Cristau ] + * xvfb now Recommends: xfonts-base (closes: #314598). + + [ David Nusinow ] + * Add 05_module_defaults.diff. This provides default modules loading + capabilities for the server that may be overrided easily. Previously the + server would load a set of default modules, but only if none were + specified in the xorg.conf, or if you didn't have a xorg.conf at all. This + patch provides a default set and you can add only the "Load" instructions + to xorg.conf that you want without losing the defaults. Similarly, if you + don't want to load a module that's loaded by default, you can add + "Disable modulename" to your xorg.conf (see man xorg.conf in this release + for details). See upstream bug #10541 for more. + + -- David Nusinow Sun, 15 Apr 2007 11:17:45 -0400 + +xorg-server (2:1.2.99.905-2) experimental; urgency=low + + * Install the cvt and gtf utilities and their manpages (closes: #414792). + * Build the xserver-xorg-core-dbg package, which contains debugging symbols + for Xorg and /usr/lib/xorg/modules/**/*.so + + -- Julien Cristau Mon, 09 Apr 2007 20:38:22 +0200 + +xorg-server (2:1.2.99.905-1) experimental; urgency=low + + * New upstream release candidate. + + includes fix for CVE-2007-1003: XC-MISC Extension ProcXCMiscGetXIDList() + Memory Corruption. + + -- Julien Cristau Fri, 06 Apr 2007 12:05:40 +0200 + +xorg-server (2:1.2.99.903-1) experimental; urgency=low + + [ Drew Parsons ] + * Add exclude entries to dh_install in debian/rules. + + [ Julien Cristau ] + * Prepare packaging to ship debugging symbols for xserver-xorg-core in + xserver-xorg-core-dbg, but leave it commented out so we can get rc3 in the + archive first. + * New upstream release candidate. + + bump serverminver to 2:1.2.99.903. + + -- Julien Cristau Tue, 27 Mar 2007 07:33:29 +0200 + +xorg-server (2:1.2.99.902-1) experimental; urgency=low + + [ Drew Parsons ] + * Bring xprint back into the xorg fold. + - include existing patches: + - 91_ttf2pt1 allows Xprint to use ttf2pt1 for Type1 font handling + (but extract and apply manually the patch to + hw/xprint/ps/Makefile.am so it may be applied by autoconf) + - 91_ttf2pt1_updates brings ttf2pt1 into the modern X11R7.1 world + - 92_xprint-security-holes-fix.patch places PS/PDF file output + into the user's home directory (~/Xprintjobs), more secure than + a shared /tmp/Xprintjobs + - 93_spooltodir_check_file_exists ensures output filenames are + less than 256 characters in length + - 93_xprint_fonts_fix released references to font names after use. + - enable freetype support for Xprint. + - add descriptions to debian/control and Build-Dependency on + x11proto-print-dev + * Run autoreconf to update changes to hw/xprint/ps/Makefile.am. + + [ Brice Goglin ] + * Apply patch from adrian@smop.co.uk to our xvfb-run wrapper + to check whether Xvfb started ok and fix its cleanup + (closes: #351042). + + [ Julien Cristau ] + * New upstream release candidate. + * Bump serverminver to 2:1.2.99.902. + * Drop patch 42_build_int10_submodules.diff, and use x86emu on all + architectures instead (closes: #410879). + * Refresh patches: + + 12_security_policy_in_etc.diff + + 21_glx_align_fixes.patch + + 23_kfreebsd_support.diff + * Delete a few files generated by configure on clean, since they seem to + have been included in the tarball. + + -- Julien Cristau Thu, 15 Mar 2007 04:28:00 +0100 + +xorg-server (2:1.2.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + Remove patches 24 (hurd support), 35 (randr byteswap) and 43 (set damage + version), applied upstream. + + Bump build-dep on x11proto-randr-dev to >= 1.2, and on + x11proto-damage-dev to >= 1.1. + + -- Julien Cristau Wed, 7 Mar 2007 19:58:53 +0100 + +xorg-server (2:1.2.0-6) experimental; urgency=low + + * Set videoabiver to 1.0, same as in xorg-server 1.1. + + -- Julien Cristau Fri, 2 Mar 2007 16:38:12 +0100 + +xorg-server (2:1.2.0-5) experimental; urgency=low + + * Add input ABI versioning metadata. Rename serverabiver file to + videoabiver, and add inputabiver. Bump serverminver to 2:1.2.0-5 to deal + with this change. + + -- David Nusinow Thu, 1 Mar 2007 22:09:45 -0500 + +xorg-server (2:1.2.0-4) experimental; urgency=low + + [ Julien Cristau ] + * Don't strip modules when DEB_BUILD_OPTIONS contains nostrip. Thanks, + Cyril Brulebois! + + [ David Nusinow ] + * Move serverabiver file to serverminver. Use serverabiver to store the + actual video ABI version number (1.1 right now). This will allow drivers + to automatically generate their Provides: xserver-xorg-video-* line when + built against a particular server version. The rename of the files + is to better denote what they actually are. + * Bump the serverminver to 2:1.2.0-4 because of this change + + -- David Nusinow Wed, 21 Feb 2007 21:53:51 -0500 + +xorg-server (2:1.2.0-3ubuntu8) feisty; urgency=low + + * SECURITY UPDATE: arbitrary code execution with root privs via integer + overflows in MISC-XC. + * Add debian/patches/131_misc_xc_overflows.patch: upstream fixes. + * References + CVE-2007-1003 + + -- Kees Cook Thu, 29 Mar 2007 17:46:44 -0700 + +xorg-server (2:1.2.0-3ubuntu7) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.patch + - update to the latest version from Fedora (rev. 1.6, was 1.1) + + -- Timo Aaltonen Fri, 30 Mar 2007 10:39:01 +0300 + +xorg-server (2:1.2.0-3ubuntu6) feisty; urgency=low + + * debian/{rules,xsfbs/xsfbs.mk,serverminver,inputabiver} + - Import changes from current debian package, needed for the new intel + driver. + - Rename serverabiver to videoabiver, value 1.0. + - Set serverminver as this version. + * debian/patches: + 129_remove_extra_i2c_bittimeout.patch + 130_slow_down_ddc_i2c.patch + - Patches from server-1.3 branch, which make probing the monitor more + robust. + + -- Timo Aaltonen Thu, 29 Mar 2007 00:56:17 +0300 + +xorg-server (2:1.2.0-3ubuntu5) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.diff + - Re-enable. Despite being a hack, it works and is needed for compositing + managers to work properly. (LP: #89189) + + -- Timo Aaltonen Tue, 27 Mar 2007 02:33:31 +0300 + +xorg-server (2:1.2.0-3ubuntu4) feisty; urgency=low + + * debian/patches/107_fedora_dont_backfill_bg_none.patch: + - Re-enable to see if it helps with performance regressions. + * debian/patches/127_check_for_clientgone.patch: + - A fix from upstream. (LP: #60288) + * debian/patches/128_fix_client_privates_leak.patch + - Plug a memory leak. (LP: #92882) + * debian/rules + - Fix a typo in --with-default-font-path. + + -- Timo Aaltonen Sat, 17 Mar 2007 00:38:09 +0200 + +xorg-server (2:1.2.0-3ubuntu3) feisty; urgency=low + + * debian/patches: + - Rename 019_ubuntu_enable_composite.diff to 119_* so that it is in line + with the rest of our patches + - Re-add 126_debian_always_use_default_font_path.diff. This was dropped + by Debian but needed by us since we still have legacy fontpaths in + old configurations, so new paths need to be appended to the list. + + -- Timo Aaltonen Wed, 28 Feb 2007 11:54:18 +0200 + +xorg-server (2:1.2.0-3ubuntu2) feisty; urgency=low + + * debian/control: + - xvfb Depends on xauth, xfonts-base + + -- Sebastien Bacher Tue, 27 Feb 2007 23:31:06 +0100 + +xorg-server (2:1.2.0-3ubuntu1) feisty; urgency=low + + * Don't drop 42_build_int10_submodules.diff, it's useful + * 019_ubuntu_enable_composite.diff: + - enable composite + * debian/control: + - fixed Maintainer email + * debian/xserver-xorg-core.install: + - list ioport, gtf, pcitweak and scanpci + and manpages for scanpci, gtf, pcitweak + + [ Timo Aaltonen ] + * Merge with Debian, remaining changes: + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/control: + + don't Conflict with xserver-xorg-video + - refreshed and renamed patches + 102_ubuntu_sharevts_load_cpu.patch + 104_fedora_init_origins_fix.patch + 106_ubuntu_fpic_libxf86config.patch + 114_fedora_no_composite_in_xnest.patch + 121_only_switch_vt_when_active.diff + 124_fix-pdripriv_null_deref.patch + - dropped for now: + 42_build_int10_submodules.diff - causes "some regression" + * dropped patches (comments from Michel Daenzer): + - 107_fedora_dont_backfill_bg_none.patch + "Breaks X semantics and thus can't go in upstream. Apps/toolkits + need to be fixed not to use background none windows." + - 108_fedora_gl_include_inferiors.patch + "Breaks GLX semantics and should no longer be necessary now that + the GLX compositing managers default to using the Composite + Overlay Window." + - 120_fedora_disable_offscreen_pixmaps.diff + "Last time I looked at this, it was a gross hack to work around XAA + deficiencies in offscreen pixmap handling, which makes the server + die immediately when trying to use GLX_EXT_texture_from_pixmap + with EXA, due to calling XAA functions without checking it's + active or even loaded." + * debian/control: + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + * debian/patches/125_randr-version-supported.diff: + - The server supports protocol 1.1, make sure we use it. + + -- Sebastien Bacher Mon, 26 Feb 2007 09:36:38 +0100 + +xorg-server (2:1.2.0-3) experimental; urgency=low + + [ Julien Cristau ] + * Pass --with-os-name and --with-os-vendor to configure. + * Bump serverabiver to 2:1.2.0-1. + * Add patch from upstream git to set the supported damage version from the + server, instead of from the damage headers. xserver 1.2.0 supports damage + 1.0, not 1.1. + + -- Julien Cristau Sat, 17 Feb 2007 12:03:03 +0100 + +xorg-server (2:1.2.0-2) experimental; urgency=low + + * Delete useless debian/substvars. + * Change my email address in debian/control. + * Fix patch 42_build_int10_submodules.diff. The definition of + xf86InitInt10() was moved to int10/helper_exec.c between 1.1.1 and 1.2.0, + so we move it to int10/helper_mem.c, which we build in the main int10 + module, not the vm86 and x86emu submodules. Thanks to Cédric Augonnet and + Brice Goglin for the report and testing. + + -- Julien Cristau Sat, 10 Feb 2007 20:57:57 +0100 + +xorg-server (2:1.2.0-1) experimental; urgency=low + + * New upstream release. + + 40_xorg-xserver-1.1.0-dbe-render.diff dropped. + + 38_GetDrawableAttributes.patch dropped. + + 37_build-mesa-mipmap.patch dropped. + + 33_Xserver_man_typos.patch dropped. + + 24_hurd_support.diff massively reduced. + + 13_debian_add_xkbpath_env_variable.diff refreshed. + + 07_xorgconf_manpage_overhaul.diff updated. + + 42_build_int10_submodules.diff updated. + * Bump build-dep on mesa-swx11-source to >= 6.5.2. + * Version build-dependencies on x11proto-composite-dev and x11proto-kb-dev + to match configure.ac. + * Add build-dep on libxfixes-dev (needed for Xdmx). + + -- Julien Cristau Fri, 9 Feb 2007 20:54:27 +0100 + +xorg-server (2:1.1.99.903-1) experimental; urgency=low + + * New upstream release candidate. + * Forward-port patches: + * 07_xorgconf_manpage_overhaul.diff: refresh + * 12_security_policy_in_etc.diff: refresh + * 21_glx_align_fixes.patch: refresh + * 23_kfreebsd_support.diff: refresh + * 24_hurd_support.diff: refresh + * 34_xorg.conf_man_typos.patch: refresh + * 36_fix_ffs.patch: remove, applied upstream + * Bump build-dependency on libdrm-dev to (>= 2.3.0) because that is the X + server's minimum requirement. + + -- Thierry Reding Sat, 2 Dec 2006 12:44:59 +0100 + +xorg-server (2:1.1.99.902-1) experimental; urgency=low + + * Update to latest upstream release candidate. + * Forward-port patches: + * 02_libvgahw_gcc4_volatile_fix.diff: update + * 04_read_rom_in_chunks.diff: update + * 05_arm_cache_flush.diff: remove, applied upstream + * 06_arm_is_not_x86_and_has_no_vga.diff: remove, applied upstream + * 07_xorgconf_manpage_overhaul.diff: update + * 08_s390_servermd.diff: update + * 09_debian_xserver_rtff.diff: update + * 12_security_policy_in_etc.diff: update + * 13_debian_add_xkbpath_env_variable.diff: update + * 15_symlink_mesa.diff: remove, fixed upstream + * 16_s390_fix.diff: update + * 17_ignoreabi.diff: remove, applied upstream + * 18_execinfo_only_for_backtrace.patch: remove, applied upstream + * 18_execinfo_configured.patch: remove, applied upstream + * 19_configurable_misc_utils.patch: remove, applied upstream + * 20_mesa_6.5.1.diff: remove, applied upstream + * 21_glx_align_fixes.patch: update + * 22_xkb_cycle_3layouts.diff: remove, applied upstream + * 23_kfreebsd_support.diff: update, partially applied upstream + * 24_hurd_support.diff: update, partially applied upstream + * 25_tfp_damage.diff: remove, applied upstream + * 26_aiglx_happy_vt_switch.diff: remove, applied upstream + * 27_aiglx_locking.diff: remove, applied upstream + * 28_mesa_copy_sub_buffer.diff: remove, applied upstream + * 29_mesa_reseed_makefile.diff: remove, fixed upstream + * 30_fix_vmode_switch.diff: remove, fixed upstream + * 31_blocksigio.diff: remove, fixed upstream + * 32_disable_sparc_pci_bridge.diff: update + * 34_xorg.conf_man_typos.patch: update + * 35_randr_byteswap.patch: update + * 36_fix_ffs.patch: update + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + remove, applied upstream + * Upstream no longer ships a changelog, so don't try to install it. + * Add 37_build-mesa-mipmap.patch that adds the missing mipmap.c to libmain's + sources. + * Add 38_GetDrawableAttributes.patch which readds support for the + GetDrawableAttributes extension that's needed for compiz to work properly. + + -- Thierry Reding Fri, 1 Dec 2006 20:32:34 +0100 + +xorg-server (2:1.1.1-21) unstable; urgency=emergency + + * Security update. + * Fix integer overflow in the ProcXCMiscGetXIDList() function in the XC-MISC + extension. Reference: CVE-2007-1003. + + -- Julien Cristau Wed, 04 Apr 2007 00:34:51 +0200 + +xorg-server (2:1.1.1-20) unstable; urgency=low + + * xephyr: Add patch from upstream git to fix memory leak in + ephyrScreenFini(). Thanks, Guillem Jover! + + -- Julien Cristau Tue, 6 Mar 2007 22:20:14 +0100 + +xorg-server (2:1.1.1-19) unstable; urgency=high + + [ Drew Parsons ] + * Removed spurious space in default font line + (/usr/X11R6/lib/X11/fonts/Type1 not "/usr/X11R6/lib/ X11/fonts/Type1") + + [ David Nusinow ] + * Conflict with and replace xserver-common, because that package used to + provide the SecurityPolicy file. This is an RC bugfix because it breaks + upgrades, so it gets a high urgency. Thanks Christian Tsotras and Lionel + Elie Mamane for reporting and it. Closes: #402658 + + -- David Nusinow Wed, 28 Feb 2007 21:48:19 -0500 + +xorg-server (2:1.1.1-18) unstable; urgency=medium + + * Add patch from Fedora to make xephyr work on 64bit architectures + (closes: #405928). + + -- Julien Cristau Fri, 16 Feb 2007 22:20:08 +0100 + +xorg-server (2:1.1.1-17) unstable; urgency=medium + + * Make the int10 module usable on i386 with a 64bit kernel (closes: #409730). + + New patch 42_build_int10_submodules.diff, which allows us to build vm86 + and x86emu as two separate submodules, and make the int10 module itself + fall back to loading x86emu if vm86 calls fail. + + Add workaround for https://bugs.freedesktop.org/show_bug.cgi?id=7299 to + the above patch: move definition of Int10Current from int10/xf86int10.c + to int10/helper_mem.c. + + Drop the part of 39_alpha_build_flags.patch applying to + hw/xfree86/os-support/linux/Makefile.in, and run autoreconf with all + patches applied. + + -- Julien Cristau Wed, 7 Feb 2007 20:37:19 +0100 + +xorg-server (2:1.1.1-16) unstable; urgency=medium + + * New patch 41_xfree86_linux_acpi_fix_tokenizing.diff from upstream git to + fix a crash on acpi events (closes: #409443). + + -- Julien Cristau Sat, 3 Feb 2007 22:56:04 +0100 + +xorg-server (2:1.1.1-15) unstable; urgency=high + + * High-urgency upload for security bugfix. + * New patch 40_xorg-xserver-1.1.0-dbe-render.diff to fix multiple integer + overflows in the dbe and render extensions. + CVE IDs: CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + * Add myself to Uploaders, and remove Fabio and Branden, with their + permission. They're of course welcome back when they have more time! + + -- Julien Cristau Tue, 9 Jan 2007 15:45:46 +0100 + +xorg-server (2:1.1.1-14) unstable; urgency=high + + * The "let's drop 20 years of build logic and replace it with autoconf in a + single release, trust me, what could go wrong? " release + * High-urgency upload for RC bugfix + * New patch 39_alpha_build_flags.patch: no really, when they said + lnx_ev56.c should be built with -mcpu=ev56, they really meant it. + Closes: #392500. + + -- Steve Langasek Sun, 7 Jan 2007 15:19:08 -0800 + +xorg-server (2:1.1.1-13) unstable; urgency=medium + + [ Julien Cristau ] + * xserver-xorg-core recommends xfonts-base and suggests xfonts-100dpi | + xfonts-75dpi and xfonts-scalable. Also add explanation about fonts to the + long description, stolen from the old xserver-common package (closes: + #400654). + + [ David Nusinow ] + * This is important for upgrades to etch, and has no notable risk, so bump + priority to medium. + + -- David Nusinow Fri, 29 Dec 2006 19:57:51 -0500 + +xorg-server (2:1.1.1-12) unstable; urgency=low + + [ Julien Cristau ] + * Delete hw/xfree86/common/xf86Build.h in debian/rules clean, since it's + wrongly included in the upstream tarball. + + [ David Nusinow ] + * Pull fix for the ignore_abi.diff patch. This one's a major brown bag on my + part. Thanks Michel Dänzer. + * Add 38_wait_for_something_force_timer_reset.diff which forces the server + to reset timers when they've overrun in some cases rather than wait + forever. Patch by Daniel Stone. Thanks Michel Dänzer for pointing the + changes out. Closes: #374026 + + -- David Nusinow Tue, 12 Dec 2006 21:13:20 -0500 + +xorg-server (2:1.1.1-11) unstable; urgency=low + + [ Drew Parsons ] + * Patches 33_Xserver_man_typos.patch and 34_xorg.conf_man_typos.patch + fix minor typos in Xserver and xorg.conf man pages. + Closes: #364556, #308899. + * Add patch 35_randr_byteswap.patch from upstream. Fixes a client/server + byteswapping problem. Closes: #291100. + + [ Julien Cristau ] + * Don't build-depend on libdrm-dev on hurd-i386 (closes: #358015). Thanks, + Samuel Thibault. + * Update hurd support patch (closes: #356300). Thanks, Samuel Thibault. + * Add reportbug script stolen from the monolith, to add the user's config + and log file in every bug report. + * Delete hw/xfree86/common/xf86Build.h from our source tree, so that the + build date is correctly calculated at build time, and not hardcoded to + 07 July 2006. Thanks to Jurij Smakov for noticing. + * Add patch 36_fix_ffs.patch by Jurij Smakov to fix infinite loop in ffs() + if called with an argument of 0 (closes: #395564). + * Add patch 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms + from upstream git to fix color issue on big endian platforms + (closes: #392453). Thanks to Michel Dänzer for the patch! + * Fix typo in xvfb-run (closes: #337703). + * Install xdmxconfig and its manpage in xdmx-tools (closes: #393991). + * Add Replaces: xdmx (<= 2:1.1.1-10) to xdmx-tools because of the xmdxconfig + manpage move. + + -- David Nusinow Fri, 24 Nov 2006 15:44:52 -0500 + +xorg-server (2:1.1.1-10) unstable; urgency=low + + [ Denis Barbier ] + * Fix video mode switching. Closes: #391052 + * Fix FTBFS on kfreebsd-i386 and kfreebsd-amd64. Thanks Petr Salinger. + Closes: #363517 + + [ David Nusinow ] + * Add depends on xserver-xorg so that /etc/X11/X gets installed. Thanks + Frans Pop. Closes: #392295 + * Add 31_blocksigio.diff. This patch by Alan Hourihane, and it prevents a + race condition when a driver tries to set the cursor state when the server + is in the middle of switching resolution. Thanks to Frans Pop for + reporting the bug, Michel Dänzer for reading through the backtrace and + diagnosing the problem, and Alan for the final patch. Closes: #390646. + + [ Jurij Smakov ] + * Add 32_disable_sparc_pci_bridge.diff. Disable PCI bridge handling on + sparc, which is broken and causes filesystem corruption (by poking + the PCI bus in the wrong places) on some machines. Closes: #392312. + + [ Drew Parsons ] + * Use __appmansuffix__ not __mansuffix__ in + 03_xnest_manpage_overhaul.diff. Closes: #390599. + * Install upstream ChangeLog. Closes: #365274. + + -- David Nusinow Mon, 16 Oct 2006 21:59:51 -0400 + +xorg-server (2:1.1.1-9) unstable; urgency=low + + [ Jurij Smakov ] + * Add 21_glx_align_fixes.patch to reintroduce the setting of __GLX_ALIGN64 + variable, lost during the modular transition. This setting is essential + for architectures with strong alignment requirements. Patch affects + alpha, sparc, amd64, ia64 and s390, mimicking the behaviour of the + monolithic build. Closes: #388125. + + [ Denis Barbier ] + * Add 22_xkb_cycle_3layouts.diff to fix layout switching when 3 layouts + are present. Thanks Ivan Pascal for the patch. Closes: #345803 + + [ David Nusinow ] + * Add kFreeBSD support patch (23). Thanks to Robert Millan, Petr Salinger, + Daniel Stone, and Michael Banck for input and patch writing. + Closes: #363517 + * Add hurd support patch (24). Thanks Samuel Thibault, Daniel Stone, and + Michael Banck. Closes: #356300 + * Disable the explicit enabling of dri in the configure. The configure + script autodetects whether or not to use this anyway, and enabling it + explicitly breaks the build on hurd. Thanks Samuel Thibault and Michael + Banck. Closes: #358015 + * Add several patches written by Kristian Høgsberg for allowing compiz to + work with AIGLX. These patches were vetted by Theirry Reding with valuable + advice from Michel Dänzer, and feedback from Kristian himself. + - 25_tfp_damage.diff + - 26_aiglx_happy_vt_switch.diff + - 27_aiglx_locking.diff + - 28_mesa_copy_sub_buffer.diff + - 29_mesa_reseed_makefile.diff + - update of 20_mesa_6.5.1.diff + * Remove bizarre wholesale inclusion of another patch in the 23_kbsd patch + + [ Eugene Konev ] + * Use --with-default-font-path instead of --with-fontdir. + * Set RGBPath through --with-rgb-path. + * Drop 11_debian_always_use_default_font_path.diff. + * Drop 14_debian_always_look_in_our_module_path.diff. + * Ship SecurityPolicy in xserver-xorg-core. + + -- David Nusinow Thu, 28 Sep 2006 23:59:35 -0400 + +xorg-server (2:1.1.1-8) unstable; urgency=low + + * Update mesa symlink patch to the latest from HEAD + * Add 20_mesa_6.5.1.diff to allow the server to build with mesa 6.5.1 + * Bump build-dep versions on x11proto-gl to 1.4.8, and mesa to 6.5.1 + + -- David Nusinow Mon, 25 Sep 2006 22:21:37 -0400 + +xorg-server (2:1.1.1-7) unstable; urgency=low + + * Fix s390 build issue. Thanks Bastian Blank for the report and Eugene Konev + for the patch. Closes: #388628. + * Disable build of various utilities that we don't ship anyway. Patch thanks + to Eugene Konev. + + -- David Nusinow Thu, 21 Sep 2006 23:07:16 -0400 + +xorg-server (2:1.1.1-6) unstable; urgency=low + + * Upload 7.1 to unstable. + + [ Drew Parsons ] + * Added SGI FreeB licence to debian/copyright. Closes: #368563. + * Apply upstream patches 18_execinfo_only_for_backtrace.patch, to use + execinfo.h for and only for backtrace. Applied git patch + 5a3488ccac8e5dabd9fc98bc41ef178ead1b2faf directly into configure scripts, + activated with autoreconf. Closes: #363218. + * Only requires build-depends version of x11proto-gl-dev on 1.4.6. + + [ Steve Langasek ] + * Add versioned build-depends on x11proto-fixes-dev (>= 4.0), to + ensure the package is built against the right protocol version. + Closes: #383778. + + -- David Nusinow Mon, 18 Sep 2006 18:30:07 -0400 + +xorg-server (2:1.1.1-5) experimental; urgency=low + + * Fix error in 16_s390_fix.diff caused by my idiot copying. Thanks Yannick + Roehlly and Daniel Stone. + + -- David Nusinow Sun, 27 Aug 2006 23:25:21 +0000 + +xorg-server (2:1.1.1-4) experimental; urgency=low + + [ Drew Parsons ] + * Tighten dependencies between X11R7.1 server and video drivers. + xserver-xorg-core no longer Depends: xserver-xorg-video-all + | xserver-xorg-video but instead Conflicts: xserver-xorg-video. + (closes: #383873) + The dependency on xserver-xorg-video-all | xserver-xorg-video-1.0 is + managed by the xserver-xorg binary package (not included here in + order to avoid circular dependencies). (closes: #362313) + * Likewise remove Depends: xserver-xorg-input-all | xserver-xorg-input + (again, handled by xserver-xorg) to avoid circular dependency with drivers. + + [ David Nusinow ] + * Epoch bump + * Add 17_ignoreabi.diff to allow users to simply set a value in xorg.conf + rather than pass -ignoreABI to the server every time it starts + + -- David Nusinow Wed, 23 Aug 2006 22:03:06 +0000 + +xorg-server (1:1.1.1-3) unstable; urgency=low + + * Add 16_s390_fix.diff to fix FTBFS on s390. Thanks Bastian Blank. + (closes: #362641) + * Bump build-depends version of libgl1-mesa-dev to 6.5.x package we have in + experimental currently + * Bump build-depends version of x11proto-gl-dev to 1.4.7 or greater + + -- David Nusinow Tue, 22 Aug 2006 00:57:31 +0000 + +xorg-server (1:1.1.1-2) experimental; urgency=low + + [ Drew Parsons ] + * Updated mesa-swx11-source build-depends to (>> 6.5.0), required + for xserver 1.1.1. (closes: #383334) + + [ David Nusinow ] + * Enable and ship xephyr + * Hack off the 'x' manpage suffix + * Install Xnest manpage + * Bump policy version to 3.7.2.0. No changes necessary. + + -- David Nusinow Wed, 16 Aug 2006 21:14:44 +0000 + +xorg-server (1:1.1.1-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release + * Move patch target call so that we don't try and build twice + * Remove obsolete 15_security_allocate_local.diff and + 16_SECURITY_setuid.diff + * Add 15_symlink_mesa.diff + + -- David Nusinow Sun, 6 Aug 2006 16:12:25 +0000 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.1.1-0ubuntu14) feisty; urgency=low + + * Add 'debian/patches/38_Fix-pDRIPriv_NULL_deref.patch': NULL-init DRI + screen private data, thanks to Tormod Volden (LP: #60288). + + -- Kees Cook Sat, 10 Feb 2007 20:27:44 -0800 + +xorg-server (1:1.1.1-0ubuntu13) feisty; urgency=low + + * 19_revert_xkb_change_breaking_XkbGetKeyboard.patch: + - patch from fedora (with extra Makefile.in change), revert change that + broke XkbGetKeyboard() (Ubuntu: #58083) + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + - upstream patch copied from the Debian package, fix blue screen with + compiz on ppc (Ubuntu: #58373) + + -- Sebastien Bacher Fri, 12 Jan 2007 12:17:28 +0100 + +xorg-server (1:1.1.1-0ubuntu12.1) edgy-security; urgency=low + + * SECURITY UPDATE: Arbitrary code execution with root privileges via heap + overflows in DBE and Render extensions. + * Add 'debian/patches/021_ubuntu_dbe-render_overflows.diff' from + upstream + * References + CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + + -- Kees Cook Mon, 8 Jan 2007 12:45:41 -0800 + +xorg-server (1:1.1.1-0ubuntu12) edgy; urgency=low + + * debian/patches/17_no_composite_for_xvfb.patch: + - fix a crasher by not using composite for Xvfb when using -render + * debian/patches/18_no_composite_for_xvfb_run.patch: + - use "-extension Composite" to fix xvfb-run crashing + + -- Sebastien Bacher Fri, 13 Oct 2006 17:12:49 +0200 + +xorg-server (1:1.1.1-0ubuntu11) edgy; urgency=low + + * debian/patches/16_only_switch_vt_when_active.patch: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + -- Ryan Lortie Thu, 21 Sep 2006 01:26:35 -0400 + +xorg-server (1:1.1.1-0ubuntu10) edgy; urgency=low + + * Build xserver-xephyr from xorg-server package. Malone: #57077, #57084 + + -- Tollef Fog Heen Wed, 6 Sep 2006 12:57:32 +0200 + +xorg-server (1:1.1.1-0ubuntu9) edgy; urgency=low + + * Enable composite extension by default + * Add patch from fd.o bugzilla #7916 to avoid aiglx hangs on vt + switches + + -- Matthew Garrett Sat, 26 Aug 2006 03:20:31 +0100 + +xorg-server (1:1.1.1-0ubuntu8) edgy; urgency=low + + * Steal patch from Fedora to allow compiz to trigger the disabling of + XAA off-screen pixmaps + + -- Matthew Garrett Wed, 23 Aug 2006 21:26:08 +0100 + +xorg-server (1:1.1.1-0ubuntu7) edgy; urgency=low + + * (temporarily) Removed Breaks: section from xserver-xorg-core (necessary + until apt-get properly supports this feature) + * Tightened Build-Depends: mesa-swx11-source to >= + 6.5.0.git.20060810-0ubuntu1 + * Tightened Build-Depends of libgl1-mesa-dev to >= + 6.5.0.git.20060810-0ubuntu1 + + -- Rodrigo Parra Novo Tue, 15 Aug 2006 07:26:07 -0300 + +xorg-server (1:1.1.1-0ubuntu6) edgy; urgency=low + + * Tightened Build-Depends of mesa-swx11-source to version 6.5.0.git.20060809 + * Removed patch 003_fedora_root_window_black_pattern.patch (not necessary + for Ubuntu) + + -- Rodrigo Parra Novo Fri, 11 Aug 2006 11:41:29 -0300 + +xorg-server (1:1.1.1-0ubuntu5) edgy; urgency=low + + * Renamed 003_ubuntu_sharevts_load_cpu.patch to + 002_ubuntu_sharevts_load_cpu.patch + * Added 003_fedora_root_window_black_pattern.patch (black background + pattern instead of default X background pattern. Feel free to revert if + you feel strongly against this one) + * Added 005_fdo4320_composite_fastpath.patch and + 016_fdo7482_xdmx_render_fix.patch (upstream bug fixes, bug numbers + annotated on patch names) + * Added 004_fedora_init_origins_fix.patch (multihead initialization) + * Added 006_ubuntu_fpic_libxf86config.patch + * Added 007_fedora_dont_backfill_bg_none.patch + * Added 008_fedora_gl_include_inferiors.patch, + 009_fedora_mesa_copy_sub_buffer.patch, + 010_fedora_no_move_damage.patch, + 012_fedora_tfp_damage.patch and + 014_fedora_no_composite_in_xnest.patch (further aiglx support) + * 011_fedora_pci_scan_fixes.patch (pci scan fixes - testing is needed to + check if an extra upstream patch for pci domains is also necessary) + * Added 015_fedora_sane_default_mode.patch (tweak default mode - please feel + free to revert this patch if you feel strongly against it) + * Added 017_fedora_add_missing_headers_to_sdk.patch + * Added 018_ubuntu_linux_kernel_include_fixes.patch and + 013_ubuntu_symlink_mesa_source.patch (build fixes against current + linux-kernel-modules * mesa-swx11-source - these already existed before, + but were applied directly to the source tree, instead of being quilt + patches) + * Just for reference: debian patch #02 is candidate for removal on next + upload. I'll refrain from removing it now to diminish the chances of this + being a breaks-for-everyone release + * Moved SecurityPolicy example from /usr/share/doc/examples/ to + /usr/share/doc/xserver-xorg-core/ + + -- Rodrigo Parra Novo Mon, 7 Aug 2006 17:21:05 -0300 + +xorg-server (1:1.1.1-0ubuntu4) edgy; urgency=low + + * Added new Breaks: section to xorg-server-core: + xserver-xorg-driver-all, xserver-xorg-driver-apm, + xserver-xorg-driver-ark, xserver-xorg-driver-ati, + xserver-xorg-driver-chips, xserver-xorg-driver-cirrus, + xserver-xorg-driver-cyrix, xserver-xorg-driver-dummy, + xserver-xorg-driver-fbdev, xserver-xorg-driver-glint, + xserver-xorg-driver-i128, xserver-xorg-driver-i740, + xserver-xorg-driver-i810, xserver-xorg-driver-imstt, + xserver-xorg-driver-mga, xserver-xorg-driver-neomagic, + xserver-xorg-driver-newport, xserver-xorg-driver-nsc, + xserver-xorg-driver-nv, xserver-xorg-driver-rendition, + xserver-xorg-driver-s3, xserver-xorg-driver-s3virge, + xserver-xorg-driver-savage, xserver-xorg-driver-siliconmotion, + xserver-xorg-driver-sis, xserver-xorg-driver-sisusb, + xserver-xorg-driver-tdfx, xserver-xorg-driver-tga, + xserver-xorg-driver-trident, xserver-xorg-driver-tseng, + xserver-xorg-driver-v4l, xserver-xorg-driver-vesa, + xserver-xorg-driver-vga, xserver-xorg-driver-via, + xserver-xorg-driver-vmware, xserver-xorg-driver-voodoo, + xserver-xorg-video-all (<< 7.0.22ubuntu7), + xserver-xorg-video-apm (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-ark (<< 1:0.6.0-0ubuntu1), + xserver-xorg-video-ati (<< 1:6.6.1-0ubuntu1), + xserver-xorg-video-chips (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-cirrus (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-cyrix (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-dummy (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-fbdev (<< 1:0.3.0-0ubuntu1), + xserver-xorg-video-glint (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-i128 (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-i740 (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-i810 (<< 1:1.6.1-0ubuntu1), + xserver-xorg-video-imstt (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-mga (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-neomagic (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-newport (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-nsc (<< 1:2.8.1-0ubuntu1), + xserver-xorg-video-nv (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-rendition (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-s3 (<< 1:0.4.1-0ubuntu1), + xserver-xorg-video-s3virge (<< 1:1.9.1-0ubuntu1), + xserver-xorg-video-savage (<< 1:2.1.1-0ubuntu1), + xserver-xorg-video-siliconmotion (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-sis (<< 1:0.9.1-0ubuntu1), + xserver-xorg-video-sisusb (<< 1:0.8.1-0ubuntu1), + xserver-xorg-video-tdfx (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tga (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-trident (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tseng (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-v4l (<< 1:0.1.1-0ubuntu1), + xserver-xorg-video-vesa (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-vga (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-via (<< 1:0.2.1-0ubuntu1), + xserver-xorg-video-vmware (<< 1:10.13.0-0ubuntu1), + xserver-xorg-video-voodoo (<< 1:1.1.0-oubuntu1) + + -- Rodrigo Parra Novo Tue, 1 Aug 2006 22:59:55 -0300 + +xorg-server (1:1.1.1-0ubuntu3) edgy; urgency=low + + * Build with -fno-stack-protector (see LP#54650) + + -- Matt Zimmerman Mon, 31 Jul 2006 16:28:59 -0700 + +xorg-server (1:1.1.1-0ubuntu2) edgy; urgency=low + + * (sparc only) removed stale inclusion of asm/kbio.h on + hw/xfree86/os-support/linux/lnx_io.c and + hw/xfree86/os-support/linux/lnx_kbd.c + * Update debian/serverabiver to 1:1.1.1 + + -- Rodrigo Parra Novo Mon, 31 Jul 2006 12:53:22 -0300 + +xorg-server (1:1.1.1-0ubuntu1) edgy; urgency=low + + * New Upstream version + * Changed Build-Depends from mesa-swrast-source to mesa-swx11-source, + following Debian package nomenclature + * Re-did 12_security_policy_in_etc.diff for 1.1.1 + * Dropped 15_security_allocate_local.diff (applied upstream) + * Dropped 16_SECURITY_setuid.diff (applied upstream) + * Dropped 000_ubuntu_fix_read_kernel_mapping.patch (applied upstream) + * Dropped 002_ubuntu_fix_for_certain_intel_chipsets.patch (applied upstream) + * Updated versioned Build-Depends on mesa-swx11-source to version + 6.5.0.cvs.20060725-0ubuntu1 + * Added arrayobj.c, arrayobj.h, bitset.h & rbadaptors.h to + GL/symlink-mesa.sh (linked from mesa-swx11-source) + * Added arrayobj.c to default build target on GL/mesa/main + + -- Rodrigo Parra Novo Tue, 25 Jul 2006 20:06:28 -0300 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.0.2-9) UNRELEASED; urgency=high + + [ Denis Barbier ] + * Fix 13_debian_add_xkbpath_env_variable.diff, XKBPATH environment + variable was not always taken into account. + + [ David Nusinow ] + * Remove two Ubuntu packaging holdovers. Have xvfb recommend xbase-clients + rather than xauth, and have xserver-xorg-core recommend xkb-data rather + than xkeyboard-config. Thanks Sterling MacNay. + * Security update. Fix for setuid privledge escalation vulernabilities. + See http://lists.freedesktop.org/archives/xorg/2006-June/016146.html for + the full advisory. + + [ Jurij Smakov ] + * Stop including the non-existent asm/kbio.h header file in + hw/xfree86/os-support/linux/lnx_{io,kbd}.c to avoid the build failure + on sparc. + + -- David Nusinow Sat, 1 Jul 2006 17:20:45 -0400 + +xorg-server (1:1.0.2-8) unstable; urgency=low + + * Move xserverrc back to xbase-clients. Thanks Benjamin Mesing. + * Add 15_security_allocate_local.diff. This fixes Bug fd.o bug #6642. + Fix buffer overflow in Render. (CVE 2006-1526). Patch by Eric Anholt. + + -- David Nusinow Tue, 2 May 2006 21:47:17 -0400 + +xorg-server (1:1.0.2-7) unstable; urgency=low + + * Ship xserverrc again in /etc/X11/xinit. Thanks Bastian Kleineidam and + Vasilis Vasaitis. (closes: #357713) + + -- David Nusinow Wed, 26 Apr 2006 00:01:16 -0400 + +xorg-server (1:1.0.2-6) unstable; urgency=low + + [ David Nusinow ] + * Use -DNO_INLINE on s390. Thanks Bastian Blank and Julien Cristau. + (closes: #362641) + * Re-add xvfb-run and manpage to xvfb package. Thanks Josselin Mouette and + Jamie Wilkinson. (closes: #363494) + * Add 014_debian_always_look_in_our_module_path.diff. This will cause the + server to always look in the default module path even if they've specified + an alternate path in their xorg.conf file via the ModulePath option. A + note to users: you should remove this part of your xorg.conf unless you + need it, as the server will look in the right place for modules if you + don't specify a location. + * Run dh_install with --list-missing + * Add missing manpages all around. Thanks Roland Mas and Jan Hudec. + (closes: #362489, #364199) + * Actually install apps to xdmx-tools. Thanks Xavier Bestel. + (closes: #356813) + + [ Denis Barbier ] + * Add 13_debian_add_xkbpath_env_variable.diff so that the server takes + the XKBPATH environment variable into account. (closes: #363229) + + -- David Nusinow Sat, 22 Apr 2006 17:06:23 -0400 + +xorg-server (1:1.0.2-5) unstable; urgency=low + + * Add 11_debian_always_use_default_font_path.diff from Eugene Konev. This + patch causes the server to add the default font path to whatever the user + has specified. Right now, that's /usr/share/fonts/X11, as defined on + configure in debian/rules. Thanks Eugene, this will definitely go a long + way. + * Document how to get rid of error loading glcore (and other modules) in + NEWS.Debian. Thanks Matej Vela and others. + * Provide the virtual 'xserver' package. Thanks Steve Langasek and Daniel + Stone. (closes: #362750) + * Add 12_security_policy_in_etc.diff from Eugene Konev. This will allow us + to tell the server on configure to look in /etc/X11/xserver for the + SecurityPolicy file. Thanks Joey Hess and Eugene. (closes: #362246) + + -- David Nusinow Mon, 17 Apr 2006 00:34:08 -0400 + +xorg-server (1:1.0.2-4) unstable; urgency=low + + * Document the need to update paths in xserver-xorg-core's NEWS file. + (closes: #362077, #362244, #362431) + * Make xserver-xorg-core Architecture: any. (closes: #362150) + * Build with --with-fontdir=/usr/share/fonts/X11. Remove + --with-default-font-path option to make this work. Thanks Eugene Konev. + + -- David Nusinow Thu, 13 Apr 2006 23:54:06 -0400 + +xorg-server (1:1.0.2-3) unstable; urgency=low + + * Add build-conflicts on xlibs-static-dev. Thanks Zephaniah E. Hull. + + -- David Nusinow Tue, 11 Apr 2006 18:44:51 -0400 + +xorg-server (1:1.0.2-2) unstable; urgency=low + + * Upload to unstable + * Add versioned build-dep on libdmx-dev. Thanks Frank Lichtenheld. + (closes: #361752) + + -- David Nusinow Mon, 10 Apr 2006 19:34:04 -0400 + +xorg-server (1:1.0.2-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release. Fixes CVE-2006-0745 + + [ Denis Barbier ] + * Set XKB base path to /usr/share/X11/xkb. + + -- David Nusinow Mon, 20 Mar 2006 21:41:04 -0500 + +xorg-server (1:1.0.2-0ubuntu10) dapper; urgency=low + + * Backport a fix for Intel bridge handling: + debian/patches/002_fix_for_certain_intel_chipsets.patch + (Closes Ubuntu: #29880) + + -- Paul Sladen Sun, 14 May 2006 19:01:32 +0100 + +xorg-server (1:1.0.2-0ubuntu9) dapper; urgency=low + + * Add 1680x1050 60 and 85Hz Modelines. Thanks to Bart Verwilst for the data. + (Closes Ubuntu: #6096) + + -- Fabio M. Di Nitto Fri, 05 May 2006 12:38:22 +0200 + +xorg-server (1:1.0.2-0ubuntu8) dapper; urgency=low + + * Fix "XCB rendertest crashes server": + - Add patch 001-CVE-2006-1526.patch.dpatch. + (CVE-2006-1526) + + -- Fabio M. Di Nitto Wed, 03 May 2006 09:01:09 +0200 + +xorg-server (1:1.0.2-0ubuntu7) dapper; urgency=low + + * Ship again xorg.conf(5) + (Closes Ubuntu: #33703) + + -- Fabio M. Di Nitto Mon, 01 May 2006 13:37:40 +0200 + +xorg-server (1:1.0.2-0ubuntu6) dapper; urgency=low + + * Fix severe internal memory corruption: + - Add patch: 000-fix-read-kernel-mapping.patch.dpatch. + (freedesktop bugzilla: #6472) + + -- Fabio M. Di Nitto Fri, 21 Apr 2006 08:07:33 +0200 + +xorg-server (1:1.0.2-0ubuntu5) dapper; urgency=low + + * Fix CPU load when using -sharevts: + - Add patch: 991_sharevts-load-cpu.patch + (Thanks for the initial patch to Michael Witrant) + (Closes Ubuntu: #33611) + + -- Fabio M. Di Nitto Mon, 10 Apr 2006 13:30:26 +0200 + +xorg-server (1:1.0.2-0ubuntu4) dapper; urgency=low + + * Fix SecurityPolicy path to /etc/X11/xserver/SecurityPolicy + and ship an example. NOTE: this file is NOT installed by default, + the WARNING you see in Xorg.0.log is an harmless WARNING. + Add patch: 990_ubuntu_fix_security_policy_path.patch. + (Close Ubuntu: #31608) + + * Readd manpages to the different packages. + + * Ship again ioport, gtf, pcitweak and scanpci. + (Closes Ubuntu: #37720) + + -- Fabio M. Di Nitto Tue, 04 Apr 2006 16:33:00 +0200 + +xorg-server (1:1.0.2-0ubuntu3) dapper; urgency=low + + * What about shipping xorg-server.m4 to make developer life easier? + + -- Fabio M. Di Nitto Thu, 23 Mar 2006 10:32:55 +0100 + +xorg-server (1:1.0.2-0ubuntu2) dapper; urgency=low + + * xserver-xorg-dev Depends: x11proto-randr-dev. + (Closes Ubuntu: #35594) + + -- Fabio M. Di Nitto Wed, 22 Mar 2006 08:09:46 +0100 + +xorg-server (1:1.0.2-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Drop patches: + + CVE-2006-0745 + + add-missing-sparc-include + + fix-backtrace + + fix-crash-on-null-addr + + * UVF execption granted by mdz. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:39:01 +0100 + +xorg-server (1:1.0.1-2) experimental; urgency=low + + [ David Nusinow ] + * Add versioned dependency on x11-common + * Remove old cruft in our patches directory + * Port patches from trunk + + 030_libvgahw_gcc4_volatile_fix.diff + + general/026_xc_programs_manpage_overhaul.diff + + arm/303_arm_cache_flush.diff + + arm/315_arm_is_not_x86_and_has_no_vga.diff + + general/099e_xorgconf_manpage_overhaul.diff + + s390/500_s390_support.diff + + debian/910_debian_Xserver_RTFF.diff + * add 04_read_rom_in_chunks.diff. This reads PCI ROM in large chunks rather + than one byte at a time. This patch by Alex Williamson and forwarded to us + by Dann Frazier. Thanks to both of them. (closes: #353168) + * Don't build xserver-xorg-core on s390. This means putting all the other + arches as being explicitly listed. Damn !s390. + * Version the conflict with xserver-xfree86 to allow for the transition + package to be installed + * Remove README.DRI, as it is non-free. Add it to prune list. + * Add 10_dont_look_in_home_for_config.diff to prevent looking in a user's + home directory for xorg.conf. Thanks Daniel Stone for the patch. + + -- David Nusinow Sun, 12 Mar 2006 16:18:13 -0500 + +xorg-server (1:1.0.1-1) experimental; urgency=low + + * First upload to Debian + * Add bison and flex to the build-depends + * Define INSTALL in debian/rules + * Add xserver-xorg-core dependency xserver-xorg-video-all | + xserver-xorg-video. The former is a metapackage that depends on all the + video drivers we ship and the latter is a virtual package that each video + driver provides. This scheme will install the metapackage by default but + will permit any single video driver to satsify the dependency. Do the same + thing for the input drivers. + * switch dpatch build-dependency to quilt + * Deal with mesa packaging rename: build-dep on mesa-swrast-source -> + mesa-swx11-source + * Change xserver-core depends to be on x11-common rather than xorg-common + * Have xserver-xorg-dev install the files in /usr/share/aclocal so we get + xorg-server.m4 + * Manually set permissions on serverabiver installation + * Set the default font path to /usr/share/fonts/X11 instead of + /usr/share/X11/fonts. Thanks Eugene Konev. + + -- David Nusinow Mon, 20 Feb 2006 00:18:45 -0500 + +xorg-server (1:1.0.1-0ubuntu8) dapper; urgency=low + + * [SECURITY] Fix CVE-2006-0745. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:33:50 +0100 + +xorg-server (1:1.0.1-0ubuntu7) dapper; urgency=low + + * debian/control: + - xvfb Depends on xfonts-base too, fix pointed by fabbione + + -- Sebastien Bacher Fri, 3 Mar 2006 22:21:56 +0100 + +xorg-server (1:1.0.1-0ubuntu5) dapper; urgency=low + + * Add missing include on sparc. Fix FTBFS. + + -- Fabio M. Di Nitto Wed, 01 Feb 2006 13:45:41 +0100 + +xorg-server (1:1.0.1-0ubuntu4) dapper; urgency=low + + * Backport from upstream HEAD at Daniel's request: + - Add forgotten HAVE_BACKTRACE define, so that we actually get + backtraces when Xorg segfaults. + + -- Colin Watson Fri, 27 Jan 2006 13:47:56 +0000 + +xorg-server (1:1.0.1-0ubuntu3) dapper; urgency=low + + * Depend on x11-common rather than xorg-common and xserver-common + + -- Tollef Fog Heen Wed, 18 Jan 2006 17:13:12 +0100 + +xorg-server (1:1.0.1-0ubuntu2) dapper; urgency=low + + * Add flex to build-deps, fixing FTBFS. + + -- Tollef Fog Heen Wed, 18 Jan 2006 12:34:03 +0100 + +xorg-server (1:1.0.1-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Fri, 6 Jan 2006 08:00:52 +1100 + +xorg-server (1:1.0.0-0ubuntu1) dapper; urgency=low + + * New upstream release. + + fbCompositeGeneral is now around 97.3% less stuffed (closes: + Ubuntu#20286). + + 'Fix' mouse issues in the DIX by adding XFree86Server defines (sigh; + closes: Ubuntu#20200). + + Fix Emulate3Buttons mouse posting (closes: Ubuntu#11308). + * Bump Build-Depends on libxt-dev (appdefaultdir), libdrm-dev (libdrm2), and + mesa-swrast-source (new files). + * Add --with-fontdir and scotch --with-default-font-path to fix font paths + for non-Xorg servers (closes: Ubuntu#20157). + * Fix path to SecurityPolicy and RGB_DB. + * Move update-linux-hardened-support call to xserver-xorg-core postinst + (from xserver-xorg postinst). + * Add patch to os/access.c so we don't crash on a null-addressed interface + (closes: Ubuntu#20414). + + -- Daniel Stone Tue, 13 Dec 2005 07:27:13 +1100 + +xorg-server (1:0.99.3-0ubuntu6) dapper; urgency=low + + * Fix xserver-xorg-dev Depends field to only depend on the headers this + this package actually uses. + * Re-add xvfb-run to xfvb (closes: Ubuntu#20157). + + -- Daniel Stone Mon, 5 Dec 2005 15:04:14 +1100 + +xorg-server (1:0.99.3-0ubuntu5) dapper; urgency=low + + * Add -ffunction-sections where needed + * Depend: xserver-common: needed for dexconf and /usr/X11R6/bin/X + + -- LaMont Jones Sat, 26 Nov 2005 05:15:36 +0000 + +xorg-server (1:0.99.3-0ubuntu4) dapper; urgency=low + + * Add two more dependencies to build the other half of the video drivers: + - x11proto-xext-dev, x11proto-video-dev + + -- Adam Conrad Fri, 25 Nov 2005 02:36:44 +1100 + +xorg-server (1:0.99.3-0ubuntu3) dapper; urgency=low + + * Add a few dependencies to xorg-server-dev as the path of least resistance + to get all the various input and video drivers to build again: + - For the video drivers: x11proto-randr-dev, x11proto-render-dev, + x11proto-fonts-dev, x11proto-xf86dri-dev, libdrm-dev + - For the input drivers: x11proto-core-dev, x11proto-input-dev, + x11proto-randr-dev (why do input drivers want randr?) + + -- Adam Conrad Thu, 24 Nov 2005 18:51:25 +1100 + +xorg-server (1:0.99.3-0ubuntu2) dapper; urgency=low + + * Add missing libfreetype6-dev build-depends. + + -- Daniel Stone Thu, 24 Nov 2005 10:26:44 +1100 + +xorg-server (1:0.99.3-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Mon, 21 Nov 2005 14:13:41 +1100 + +xorg-server (1:0.99.2+cvs.20051025-3) dapper; urgency=low + + * Version mesa-swrast-source Build-Dep to 6.4.0 or higher, so GLcore is a + little less crash-happy (e.g. when moving your glxgears window). + * Export /usr/share/xserver-xorg/serverabiver to xserver-xorg-dev, which + describes the relationship needed from a driver on xserver-xorg-core. + + -- Daniel Stone Fri, 28 Oct 2005 13:00:26 +1000 + +xorg-server (1:0.99.2+cvs.20051025-2) dapper; urgency=low + + * Add Build-Deps on libxaw7-dev, libxmu-dev, libxt-dev, libxpm-dev, + libx11-dev, libxtst-dev, and libxres-dev for DMX utils. + + -- Daniel Stone Wed, 26 Oct 2005 14:34:40 +1000 + +xorg-server (1:0.99.2+cvs.20051025-1) dapper; urgency=low + + * Update to new upstream version. + * All applicable patches have been committed upstream, bar #989 and #990. + + -- Daniel Stone Thu, 20 Oct 2005 10:26:33 +1000 + +xorg-server (1:0.99.0+cvs.20050901-1) breezy; urgency=low + + * First xorg-server release. + + -- Daniel Stone Wed, 6 Jul 2005 15:48:17 +1000 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +7 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..e0cb716 --- /dev/null +++ b/debian/control @@ -0,0 +1,391 @@ +Source: xorg-server +Section: x11 +Priority: optional +Maintainer: Ubuntu X-SWAT +XSBC-Original-Maintainer: Debian X Strike Force +Build-Depends: + debhelper (>= 7), + dpkg-dev (>= 1.16.1), + quilt, + lsb-release, + pkg-config, + bison, + flex, + automake, + libtool, + xauth, + xutils-dev (>= 1:7.6+4), + xfonts-utils (>= 1:7.5+1), + x11proto-bigreqs-dev (>= 1:1.1.0), + x11proto-composite-dev (>= 1:0.4), + x11proto-core-dev (>= 7.0.22), + x11proto-damage-dev (>= 1.1), + x11proto-fixes-dev (>= 1:5.0-2ubuntu1), + x11proto-kb-dev (>= 1.0.3), + x11proto-xinerama-dev, + x11proto-randr-dev (>= 1.4.0), + x11proto-record-dev (>= 1.13.99.1), + x11proto-render-dev (>= 2:0.11), + x11proto-resource-dev (>= 1.2.0), + x11proto-scrnsaver-dev, + x11proto-video-dev, + x11proto-xcmisc-dev (>= 1.2.0), + x11proto-xext-dev (>= 7.2.99.901), + x11proto-xf86bigfont-dev (>= 1.2.0), + x11proto-xf86dga-dev (>= 2.0.99.1), + x11proto-xf86vidmode-dev (>= 2.2.99.1), + x11proto-present-dev, + x11proto-dri3-dev, + xtrans-dev (>= 1.3.2), + libxau-dev (>= 1:1.0.5-2), + x11proto-input-dev (>= 2.3), + x11proto-dri2-dev (>= 2.8), + libxdmcp-dev (>= 1:0.99.1), + libxfont-dev (>= 1:1.4.2), + libxkbfile-dev (>= 1:0.99.1), + libpixman-1-dev (>= 0.27.2), + libpciaccess-dev (>= 0.12.901), + libgcrypt-dev, + nettle-dev, + libudev-dev (>= 151-3) [linux-any], + libselinux1-dev (>= 2.0.80) [linux-any], + libaudit-dev [linux-any], + x11proto-xf86dri-dev (>= 2.1.0), + libdrm-dev (>= 2.4.3) [!hurd-i386], + x11proto-gl-dev (>= 1.4.17), + libgl1-mesa-dev (>= 9.2), + libxmuu-dev (>= 1:0.99.1), + libxext-dev (>= 1:0.99.1), + libx11-dev (>= 2:1.6), + libxrender-dev (>= 1:0.9.0), + libxi-dev (>= 2:1.7.1.901), + x11proto-dmx-dev (>= 1:2.2.99.1), + libdmx-dev (>= 1:1.0.1), + libxpm-dev (>= 1:3.5.3), + libxaw7-dev (>= 1:0.99.1), + libxt-dev (>= 1:0.99.1), + libxmu-dev (>= 1:0.99.1), + libxtst-dev (>= 1:0.99.1), + libxres-dev (>= 1:0.99.1), + libxfixes-dev (>= 1:5.0.1), + libxv-dev, + libxinerama-dev, + libxshmfence-dev (>= 1.1) [!hurd-i386], +# XCB bits for Xephyr + libxcb1-dev, + libxcb-shape0-dev, + libxcb-util0-dev, + libxcb-image0-dev, + libxcb-icccm4-dev, + libxcb-shm0-dev, + libxcb-keysyms1-dev, + libxcb-xv0-dev, + libxcb-glx0-dev, + libxcb-xf86dri0-dev (>= 1.6), +# unit tests + xkb-data, + x11-xkb-utils, +# getpeereid() + libbsd-dev [kfreebsd-any], +# XMir + libmirclient-dev (>= 0.1.5) [!arm64 !powerpc !ppc64el], + libatomic-ops-dev, +Standards-Version: 3.9.3 +Vcs-Git: git://git.debian.org/git/pkg-xorg/xserver/xorg-server +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git + +Package: xserver-xorg-core +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + keyboard-configuration [linux-any kfreebsd-any], + udev (>= 149) [linux-any], + devd [kfreebsd-any], + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.10.2-4) +Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable +Breaks: + xserver-xorg-video, + xserver-xorg-video-1.0, + xserver-xorg-video-1.9, + xserver-xorg-video-2, + xserver-xorg-video-4, + xserver-xorg-video-5, + xserver-xorg-video-6, + xserver-xorg-input, + xserver-xorg-input-2, + xserver-xorg-input-2.1, + xserver-xorg-input-4, + xserver-xorg-input-7, + xserver-xorg-input-wacom (<< 0.7.8), + xserver-xorg-input-joystick (<= 1:1.5.0-3), + xserver-xorg-input-synaptics (<= 1.2.2-1ubuntu4), + xserver-xorg-input-tslib (<= 0.0.6-3), + xserver-xorg-input-vmmouse (<= 1:12.6.5-4ubuntu2), + xserver-xorg-input-wacom (<= 0.10.5+20100415-1), + xserver-xorg-video-cyrix (<= 1:1.1.0-8), + xserver-xorg-video-i810 (<< 2:2.4), + xserver-xorg-video-imstt (<= 1:1.1.0-7), + xserver-xorg-video-nsc (<= 1:2.8.3-4), + xserver-xorg-video-sunbw2 (<= 1:1.1.0-5), + xserver-xorg-video-v4l (<< 1:0.2.0), + xserver-xorg-video-vga (<= 1:4.1.0-8), + libgl1-mesa-dri (<< 7.10.2-4), + libgl1-mesa-dri-experimental (<< 7.10.2-4), + qt4-x11 (<< 4:4.8.0-1ubuntu2), + utouch-geis (<< 2.2.3), + utouch-frame (<< 2.1.0), + unity (<< 7.0.2), + libxfixes3 (<< 1:5.0.1), + libxi6 (<< 2:1.7.1.901), +Conflicts: + xserver-xorg-input-evtouch, +Provides: + ${videoabi}, + ${inputabi}, +Description: Xorg X server - core server + The Xorg X server is an X server for several architectures and operating + systems, which is derived from the XFree86 4.x series of X servers. + . + The Xorg server supports most modern graphics hardware from most vendors, + and supersedes all XFree86 X servers. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xorg-core-udeb +XC-Package-Type: udeb +Section: debian-installer +# exclude sparc because of linker errors +Architecture: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe ppc64el s390 +Depends: +# merged: xserver-common (>= ${source:Version}), + xkb-data-udeb, + x11-xkb-utils-udeb, +# disabled: keyboard-configuration [linux-any kfreebsd-any], + udev-udeb (>= 149) [linux-any], + devd-udeb [kfreebsd-any], + ${shlibs:Depends}, + ${misc:Depends}, +Provides: + ${videoabi}, + ${inputabi}, +Description: Xorg X server - core server + This is a udeb, or a microdeb, for the debian-installer. + +Package: xserver-xorg-dev +Architecture: any +Depends: + libpixman-1-dev (>= 0.27.2), + x11proto-core-dev (>= 7.0.22), + x11proto-input-dev (>= 2.3), + x11proto-xext-dev (>= 7.2.99.901), + x11proto-video-dev, + x11proto-randr-dev (>= 1.4.0), + x11proto-render-dev (>= 2:0.11), + x11proto-dri2-dev (>= 2.8), + x11proto-gl-dev (>= 1.4.17), + x11proto-fonts-dev, + x11proto-xinerama-dev, + x11proto-kb-dev, + x11proto-xf86dri-dev, + x11proto-resource-dev (>= 1.2.0), + x11proto-scrnsaver-dev, + x11proto-xf86bigfont-dev (>= 1.2.0), + x11proto-dri3-dev, + x11proto-present-dev, + libxkbfile-dev, + libpciaccess-dev, + mesa-common-dev, + libmirclient-dev [!arm64 !powerpc !ppc64el], + ${misc:Depends}, +Description: Xorg X server - development files + This package provides development files for the X.Org ('Xorg') X server. + This is not quite the same as the DDK (Driver Development Kit) from the + XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides + headers and a pkg-config file for drivers using autotools to build + against. + . + Unless you are developing or building a driver, you probably want + xserver-xorg and/or xserver-xorg-core instead. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Description: distributed multihead X server + Xdmx is a proxy X server that uses one or more other X servers as its + display device(s). It provides multi-head X functionality for displays that + might be located on different machines. Xdmx functions as a front-end X server + that acts as a proxy to a set of back-end X servers. All of the visible + rendering is passed to the back-end X servers. Clients connect to the Xdmx + front-end, and everything appears as it would in a regular multi-head + configuration. If Xinerama is enabled (e.g., with +xinerama on the command + line), the clients see a single large screen. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx-tools +Architecture: any +Depends: + xdmx, + ${shlibs:Depends}, + ${misc:Depends}, +Description: Distributed Multihead X tools + This package provides a collection of tools used for administration of + the Xdmx server; see the xdmx package for more information. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xnest +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: Nested X server + Xnest is a nested X server that simply relays all its requests to another + X server, where it runs as a client. This means that it appears as another + window in your current X session. Xnest relies upon its parent X server + for font services. + . + Use of the Xephyr X server instead of Xnest is recommended. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xvfb +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, + xauth, + x11-xkb-utils +Recommends: libgl1-mesa-dri +Provides: xserver +Multi-Arch: foreign +Description: Virtual Framebuffer 'fake' X server + Xvfb provides an X server that can run on machines with no display hardware + and no physical input devices. It emulates a dumb framebuffer using virtual + memory. The primary use of this server was intended to be server testing, + but other novel uses for it have been found, including testing clients + against unusual depths and screen configurations, doing batch processing with + Xvfb as a background rendering engine, load testing, as an aid to porting the + X server to a new platform, and providing an unobtrusive way to run + applications that don't really need an X server but insist on having one + anyway. + . + This package also contains a convenience script called xvfb-run which + simplifies the automated execution of X clients in a virtual server + environment. This convenience script requires the use of the xauth + program. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xephyr +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: nested X server + Xephyr is an X server that can be run inside another X server, + much like Xnest. It is based on the kdrive X server, and as a + result it supports newer extensions than Xnest, including render and + composite. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xorg-core-dbg +Architecture: any +Depends: + xserver-xorg-core (= ${binary:Version}), + ${misc:Depends}, +Priority: extra +Section: debug +Description: Xorg - the X.Org X server (debugging symbols) + The Xorg X server is an X server for several architectures and operating + systems, which is derived from the XFree86 4.x series of X servers. + . + The Xorg server supports most modern graphics hardware from most vendors, + and supersedes all XFree86 X servers. + . + This package provides debugging symbols for the Xorg X server and associated + modules. + +Package: xserver-common +Architecture: all +Depends: + x11-common, + xkb-data, + x11-xkb-utils, + ${misc:Depends}, +Recommends: + xfonts-base, + xauth, +Breaks: + xserver-common-lts-quantal (<< 3:0), + xserver-common-lts-raring (<< 3:0), + xserver-common-lts-saucy (<< 3:0), + xserver-common-lts-trusty (<< 3:0), +Replaces: + xserver-common-lts-quantal (<< 3:0), + xserver-common-lts-raring (<< 3:0), + xserver-common-lts-saucy (<< 3:0), + xserver-common-lts-trusty (<< 3:0), + xserver-xorg-core (<< 2:1.5.2) +Description: common files used by various X servers + This package provides files necessary for all X.Org based X servers. + +Package: xserver-xorg-xmir +Architecture: amd64 armhf i386 +Depends: + ${shlibs:Depends}, + ${misc:Depends}, + xserver-xorg-core (= ${binary:Version}), +Description: Xorg - the X.Org X server (module for running nested in Mir) + xserver-xorg-xmir provides an extension module to support running an + Xorg as a client of an existing Mir compositor. + +Package: xorg-server-source +Architecture: all +Depends: + ${misc:Depends}, +Description: Xorg X server - source files + This package provides original Debian (with Debian patches already + applied, and autotools files updated) sources for the X.Org ('Xorg') + X server shipped in a tarball. This enables other projects re-using + X server codebase (e.g. VNC servers) to (re-)use officially + Debian-supported version of the X xserver for their builds. + . + Unless you are building a software product using X server sources, + you probably want xserver-xorg and/or xserver-xorg-core instead. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..cd9e80a --- /dev/null +++ b/debian/copyright @@ -0,0 +1,1822 @@ +The following is the 'standard copyright' agreed upon by most contributors, +and is currently the canonical license preferred by the X.Org Foundation. +This is a slight variant of the common MIT license form published by the +Open Source Initiative at http://www.opensource.org/licenses/mit-license.php + +Copyright holders of new code should use this license statement where +possible, and insert their name to this list. Please sort by surname +for people, and by the full name for other entities (e.g. Juliusz +Chroboczek sorts before Intel Corporation sorts before Daniel Stone). + +Copyright © 2000-2001 Juliusz Chroboczek +Copyright © 1998 Egbert Eich +Copyright © 2006-2007 Intel Corporation +Copyright © 2006 Nokia Corporation +Copyright © 2006-2008 Peter Hutterer +Copyright © 2006 Adam Jackson +Copyright © 2009-2010 NVIDIA Corporation +Copyright © 1987, 2003-2006, 2008-2010 Oracle and/or its affiliates. +Copyright © 1999 Keith Packard +Copyright © 2007-2009 Red Hat, Inc. +Copyright © 2005-2008 Daniel Stone +Copyright © 2006-2009 Simon Thum +Copyright © 2006 Luc Verhaegen + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + + + +The following licenses are 'legacy': usually MIT/X11 licenses with the name +of the copyright holder(s) in the license statement, but also some BSD-like +licenses. + + +Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the XFree86 Project shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the XFree86 Project. + + +Copyright 1997 by The XFree86 Project, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the XFree86 Project, Inc. +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The Xfree86 +Project, Inc. makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1985-1998, 2001 The Open Group +Copyright 2002 Red Hat Inc., Durham, North Carolina. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright (c) 1987, 1989-1990, 1992-1995 X Consortium + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. + + +Copyright © 1999-2000 SuSE, Inc. +Copyright © 2007 Red Hat, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts. +Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts. +Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, +Copyright 1994 Quarterdeck Office Systems. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Digital and +Quarterdeck not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997 Digital Equipment Corporation. +All rights reserved. + +This software is furnished under license and may be used and copied only in +accordance with the following terms and conditions. Subject to these +conditions, you may download, copy, install, use, modify and distribute +this software in source and/or binary form. No title or ownership is +transferred hereby. + +1) Any source code used, modified or distributed must reproduce and retain + this copyright notice and list of conditions as they appear in the + source file. + +2) No right is granted to use any trade name, trademark, or logo of Digital + Equipment Corporation. Neither the "Digital Equipment Corporation" + name nor any trademark or logo of Digital Equipment Corporation may be + used to endorse or promote products derived from this software without + the prior written permission of Digital Equipment Corporation. + +3) This software is provided "AS-IS" and any express or implied warranties, + including but not limited to, any implied warranties of merchantability, + fitness for a particular purpose, or non-infringement are disclaimed. + In no event shall DIGITAL be liable for any damages whatsoever, and in + particular, DIGITAL shall not be liable for special, indirect, + consequential, or incidental damages or damages for lost profits, loss + of revenue or loss of use, whether such damages arise in contract, + negligence, tort, under statute, in equity, at law or otherwise, even + if advised of the possibility of such damage. + + +Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + + +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice including the dates of first publication and +either this permission notice or a reference to +http://oss.sgi.com/projects/FreeB/ +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 1994, 1995 Hewlett-Packard Company + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the Hewlett-Packard +Company shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the Hewlett-Packard Company. + + +Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Hewlett-Packard not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 2001-2004 Red Hat Inc., Durham, North Carolina. +Copyright (c) 2003 by the XFree86 Project, Inc. +Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright © 2008 Red Hat, Inc. +Partly based on code Copyright © 2000 SuSE, Inc. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without +fee, provided that the above copyright notice appear in all copies +and that both that copyright notice and this permission notice +appear in supporting documentation, and that the name of Red Hat +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. Red +Hat makes no representations about the suitability of this software +for any purpose. It is provided "as is" without express or implied +warranty. + +Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN +NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2006 Red Hat, Inc. +(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sub license, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 1995 X Consortium +Copyright 2004 Red Hat Inc., Durham, North Carolina. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM, +AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written +authorization from the X Consortium. + + +Copyright 1998-2000 Precision Insight, Inc., Cedar Park, Texas. +Copyright 2000 VA Linux Systems, Inc. +Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. +Copyright (c) 2003-2004 Torrey T. Lyons. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +(C) Copyright IBM Corporation 2003 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +on the rights to use, copy, modify, merge, publish, distribute, sub +license, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + + +(C) Copyright IBM Corporation 2004-2005 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sub license, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +IBM, +AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 1997 Metro Link Incorporated + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of the Metro Link shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from Metro Link. + + +Copyright 1995-1998 by Metro Link, Inc. +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Metro Link, Inc. not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Metro Link, Inc. makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Metro Link Incorporated + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Metro Link +Incorporated not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Metro Link Incorporated makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of Conectiva Linux shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +Conectiva Linux. + + +Copyright (c) 2001, Andy Ritger aritger@nvidia.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. +o Neither the name of NVIDIA nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +Copyright 1992 Vrije Universiteit, The Netherlands + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the Vrije Universiteit not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The Vrije Universiteit makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL The Vrije Universiteit BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Concurrent Computer Corporation + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Concurrent Computer +Corporation not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Concurrent Computer Corporation makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2004 Nokia + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Nokia not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Nokia makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL NOKIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +(c)Copyright 1988,1991 Adobe Systems Incorporated. +All rights reserved. + +Permission to use, copy, modify, distribute, and sublicense this software and its +documentation for any purpose and without fee is hereby granted, provided that +the above copyright notices appear in all copies and that both those copyright +notices and this permission notice appear in supporting documentation and that +the name of Adobe Systems Incorporated not be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission. No trademark license to use the Adobe trademarks is hereby +granted. If the Adobe trademark "Display PostScript"(tm) is used to describe +this software, its functionality or for any other purpose, such use shall be +limited to a statement that this software works in conjunction with the Display +PostScript system. Proper trademark attribution to reflect Adobe's ownership +of the trademark shall be given whenever any such reference to the Display +PostScript system is made. + +ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY +PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ADOBE +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON- +INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE TO YOU +OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT +LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER +SUPPORT FOR THE SOFTWARE. + +Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems +Incorporated which may be registered in certain jurisdictions. + + +Copyright 1989 Network Computing Devices, Inc., Mountain View, California. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of N.C.D. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. N.C.D. makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + + +Copyright (c) 1987 by the Regents of the University of California + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies. The University of California +makes no representations about the suitability of this +software for any purpose. It is provided "as is" without +express or implied warranty. + + +Copyright 1992, 1993 Data General Corporation; +Copyright 1992, 1993 OMRON Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and that +neither the name OMRON or DATA GENERAL be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission of the party whose name is to be used. Neither OMRON or +DATA GENERAL make any representation about the suitability of this software +for any purpose. It is provided "as is" without express or implied warranty. + +OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL OMRON OR DATA GENERAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright © 1998-2004, 2006 Keith Packard +Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc. +Copyright (c) 2002 Apple Computer, Inc. +Copyright (c) 2003 Torrey T. Lyons. +All Rights Reserved. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 1999 Keith Packard +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 MontaVista Software Inc. +Copyright © 2005 OpenedHand Ltd. +Copyright © 2006 Nokia Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the authors and/or copyright holders +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The authors and/or +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1993 by Davor Matic + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. Davor Matic makes no representations about +the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Harold L Hunt II +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Harold L Hunt II. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Thomas Roell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Thomas Roell makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Thomas Roell and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Thomas Roell and +David Wexelblat makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91,92,93 by Thomas Roell, Germany. +Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Thomas Roell nor +SGCS be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Thomas Roell nor SGCS makes no representations about the suitability +of this software for any purpose. It is provided "as is" without +express or implied warranty. + +THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Alan Hourihane, Wigan, England. +Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Alan Hourihane not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Alan Hourihane makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995 Kaleb S. KEITHLEY + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Kaleb S. KEITHLEY +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Kaleb S. KEITHLEY + + +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Matthieu Herrb not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Matthieu Herrb makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL MATTHIEU HERRB BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2004, Egbert Eich + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Egbert Eich shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from Egbert Eich. + + +Copyright 1993 by David Wexelblat +Copyright 2005 by Kean Johnston +Copyright 1993 by David McCullough + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of David Wexelblat not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. David Wexelblat makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995-1999 by Frederic Lepied, France. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Frederic Lepied not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Frederic Lepied makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Anders Carlsson + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Anders Carlsson not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Anders Carlsson makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ANDERS CARLSSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2003 Anders Carlsson +Copyright © 2003-2004 Eric Anholt +Copyright © 2004 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Eric Anholt not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Eric Anholt makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Philip Blundell + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Philip Blundell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Philip Blundell makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL PHILIP BLUNDELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + + +Copyright (c) 1994-2003 by The XFree86 Project, Inc. +Copyright 1997 by Metro Link, Inc. +Copyright 2003 by David H. Dawes. +Copyright 2003 by X-Oz Technologies. +Copyright (c) 2004, X.Org Foundation + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the copyright holder(s) +and author(s) shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Software without prior written +authorization from the copyright holder(s) and author(s). + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat +Copyright 1999 by David Holland +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 Hewlett-Packard Company +Copyright © 2004, 2005 Red Hat, Inc. +Copyright © 2004 Nicholas Miell +Copyright © 2005 Trolltech AS +Copyright © 2006 Intel Corporation +Copyright © 2006-2007 Keith Packard +Copyright © 2008 Red Hat, Inc +Copyright © 2008 George Sapountzis + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of the copyright holders not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. The copyright holders make no representations +about the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + 2005 Lars Knoll & Zack Rusin, Trolltech + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987, 1998 The Open Group +Copyright © 1998-1999, 2001 The XFree86 Project, Inc. +Copyright © 2000 VA Linux Systems, Inc. +Copyright (c) 2000, 2001 Nokia Home Communications +Copyright © 2007, 2008 Red Hat, Inc. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + + +Copyright 1996 by Thomas E. Dickey + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the above listed +copyright holder(s) not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright (c) 2001 Andreas Monitzer. +Copyright (c) 2001-2004 Greg Parker. +Copyright (c) 2001-2004 Torrey T. Lyons +Copyright (c) 2002-2003 Apple Computer, Inc. +Copyright (c) 2004-2005 Alexander Gottwald +Copyright (c) 2002-2009 Apple Inc. +Copyright (c) 2007 Jeremy Huddleston +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name(s) of the above copyright +holders shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written authorization. + + +Copyright (C) 1999,2000 by Eric Sunshine +Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the author shall not be used in +advertising or otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the author. + + +Copyright © 2002 David Dawes + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of the author(s) shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +the author(s). + + +Copyright (C) 1996-1999 SciTech Software, Inc. +Copyright (C) David Mosberger-Tang +Copyright (C) 1999 Egbert Eich +Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the authors not be used +in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. The authors makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2005-2006 Luc Verhaegen. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Copyright 1995 by Robin Cutshaw +Copyright 2000 by Egbert Eich +Copyright 2002 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holder(s) +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holder(s) make(s) no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of Marc Aurele La France not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. Marc Aurele La France makes no representations +about the suitability of this software for any purpose. It is provided +"as-is" without express or implied warranty. + +MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany +Copyright 1992 by David Dawes +Copyright 1992 by Jim Tsillas +Copyright 1992 by Rich Murphey +Copyright 1992 by Robert Baron +Copyright 1992 by Orest Zborowski +Copyright 1993 by Vrije Universiteit, The Netherlands +Copyright 1993 by David Wexelblat +Copyright 1994, 1996 by Holger Veit +Copyright 1997 by Takis Psarogiannakopoulos +Copyright 1994-2003 by The XFree86 Project, Inc + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holders +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2001-2005 by J. Kean Johnston + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name J. Kean Johnston not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. J. Kean Johnston makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright 1997,1998 by UCHIYAMA Yasushi + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of UCHIYAMA Yasushi not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. UCHIYAMA Yasushi makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Keith Packard + 2004 Eric Anholt + 2005 Zack Rusin + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of copyright holders not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Copyright holders make no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +(C) Copyright IBM Corporation 2002-2007 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +on the rights to use, copy, modify, merge, publish, distribute, sub +license, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +this permission notice appear in supporting documentation. This permission +notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright © 2007 OpenedHand Ltd + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of OpenedHand Ltd not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. OpenedHand Ltd makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1989, 1990, 1993, 1994 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +This code is derived from software contributed to Berkeley by +Michael Rendell of Memorial University of Newfoundland. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000..4a3e532 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,7 @@ +[DEFAULT] +# the default branch for upstream sources: +upstream-branch = upstream-experimental +# the default branch for the debian patch: +debian-branch = ubuntu +# use pristine-tar: +pristine-tar = True diff --git a/debian/local/10-kbd.conf b/debian/local/10-kbd.conf new file mode 100644 index 0000000..fee5fc8 --- /dev/null +++ b/debian/local/10-kbd.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "kbd catchall" + MatchIsKeyboard "on" + Driver "kbd" +EndSection diff --git a/debian/local/10-mouse.conf b/debian/local/10-mouse.conf new file mode 100644 index 0000000..39183ea --- /dev/null +++ b/debian/local/10-mouse.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "mouse catchall" + MatchIsPointer "on" + Driver "mouse" +EndSection diff --git a/debian/local/64-xorg-xkb.rules b/debian/local/64-xorg-xkb.rules new file mode 100644 index 0000000..5a3c5b8 --- /dev/null +++ b/debian/local/64-xorg-xkb.rules @@ -0,0 +1,8 @@ +ACTION!="add|change", GOTO="xorg_xkb_end" +SUBSYSTEM!="input", GOTO="xorg_xkb_end" +KERNEL!="event*", GOTO="xorg_xkb_end" + +# import keyboard layout from /etc/default/keyboard +ENV{ID_INPUT_KEY}=="?*", IMPORT{file}="/etc/default/keyboard" + +LABEL="xorg_xkb_end" diff --git a/debian/local/dh_xsf_substvars b/debian/local/dh_xsf_substvars new file mode 100644 index 0000000..c5242ed --- /dev/null +++ b/debian/local/dh_xsf_substvars @@ -0,0 +1,53 @@ +#!/bin/sh +# © 2011 Cyril Brulebois +# +# Usage: +# Call this script from debian/rules, before dh_gencontrol is run, +# to get all needed variables computed in debian/$p.substvars for +# each package $p found through dh_listpackages. +# . +# This script has support for udebs. +set -e + +# Sanity check. All drivers build-depend on debhelper: +if ! which dh_listpackages >/dev/null 2>&1; then + echo "E: dh_listpackages not found, debhelper package missing?" + exit 1 +fi + +# Read the dependencies once: +INPUTDEP=$(cat /usr/share/xserver-xorg/xinputdep 2>/dev/null) +VIDEODEP=$(cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null) + +# Iterate on the packages: +for package in $(dh_listpackages); do + case $package in + *-udeb) + # udebs depend on udebs, tweak the dependency on the server: + inputdep=$(echo "$INPUTDEP"|sed 's/xserver-xorg-core/&-udeb/') + videodep=$(echo "$VIDEODEP"|sed 's/xserver-xorg-core/&-udeb/') + ;; + *) + # just copy the dependencies read previously: + inputdep="$INPUTDEP" + videodep="$VIDEODEP" + esac + + # To avoid having "unused substitution variable" warnings from + # dpkg-gencontrol, only set variables which make sense: + case $package in + *-dbg|*-dev|*-all) + # debug, devel, or meta package, no need for Depends/Provides. + : + ;; + xserver-xorg-input-*) + # input driver: + echo "xinpdriver:Depends=$inputdep" >> debian/$package.substvars + echo "xinpdriver:Provides=xorg-driver-input" >> debian/$package.substvars + ;; + xserver-xorg-video-*) + # video driver: + echo "xviddriver:Depends=$videodep" >> debian/$package.substvars + echo "xviddriver:Provides=xorg-driver-video" >> debian/$package.substvars + esac +done diff --git a/debian/local/xsf.pm b/debian/local/xsf.pm new file mode 100644 index 0000000..9037d70 --- /dev/null +++ b/debian/local/xsf.pm @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Debian::Debhelper::Dh_Lib; + +insert_before("dh_gencontrol", "dh_xsf_substvars"); + +1; diff --git a/debian/local/xvfb-run b/debian/local/xvfb-run new file mode 100644 index 0000000..82ecb5b --- /dev/null +++ b/debian/local/xvfb-run @@ -0,0 +1,191 @@ +#!/bin/sh + +# This script starts an instance of Xvfb, the "fake" X server, runs a command +# with that server available, and kills the X server when done. The return +# value of the command becomes the return value of this script, except in cases +# where this script encounters an error. +# +# If anyone is using this to build a Debian package, make sure the package +# Build-Depends on xvfb and xauth. + +set -e + +PROGNAME=xvfb-run +SERVERNUM=99 +AUTHFILE= +ERRORFILE=/dev/null +XVFBARGS="-screen 0 640x480x8" +LISTENTCP="-nolisten tcp" +XAUTHPROTO=. + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the event +# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the +# script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +# Display a message, wrapping lines at the terminal width. +message () { + echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} +} + +# Display an error message. +error () { + message "error: $*" >&2 +} + +# Display a usage message. +usage () { + if [ -n "$*" ]; then + message "usage error: $*" + fi + cat <>"$ERRORFILE" 2>&1 + fi + if [ -n "$XVFB_RUN_TMPDIR" ]; then + if ! rm -r "$XVFB_RUN_TMPDIR"; then + error "problem while cleaning up temporary directory" + exit 5 + fi + fi + if [ -n "$XVFBPID" ]; then + kill "$XVFBPID" >>"$ERRORFILE" 2>&1 + fi +} + +# Parse the command line. +ARGS=$(getopt --options +ae:f:hn:lp:s:w: \ + --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \ + --name "$PROGNAME" -- "$@") +GETOPT_STATUS=$? + +if [ $GETOPT_STATUS -ne 0 ]; then + error "internal error; getopt exited with status $GETOPT_STATUS" + exit 6 +fi + +eval set -- "$ARGS" + +while :; do + case "$1" in + -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;; + -e|--error-file) ERRORFILE="$2"; shift ;; + -f|--auth-file) AUTHFILE="$2"; shift ;; + -h|--help) SHOWHELP="yes" ;; + -n|--server-num) SERVERNUM="$2"; shift ;; + -l|--listen-tcp) LISTENTCP="" ;; + -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;; + -s|--server-args) XVFBARGS="$2"; shift ;; + -w|--wait) shift ;; + --) shift; break ;; + *) error "internal error; getopt permitted \"$1\" unexpectedly" + exit 6 + ;; + esac + shift +done + +if [ "$SHOWHELP" ]; then + usage + exit 0 +fi + +if [ -z "$*" ]; then + usage "need a command to run" >&2 + exit 2 +fi + +if ! which xauth >/dev/null; then + error "xauth command not found" + exit 3 +fi + +# tidy up after ourselves +trap clean_up EXIT + +# If the user did not specify an X authorization file to use, set up a temporary +# directory to house one. +if [ -z "$AUTHFILE" ]; then + XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)" + # Create empty file to avoid xauth warning + AUTHFILE=$(tempfile -n "$XVFB_RUN_TMPDIR/Xauthority") +fi + +# Start Xvfb. +MCOOKIE=$(mcookie) +tries=10 +while [ $tries -gt 0 ]; do + tries=$(( $tries - 1 )) + XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1 +add :$SERVERNUM $XAUTHPROTO $MCOOKIE +EOF + # handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept + # connections + trap : USR1 + (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) & + XVFBPID=$! + + wait || : + if kill -0 $XVFBPID 2>/dev/null; then + break + elif [ -n "$AUTONUM" ]; then + # The display is in use so try another one (if '-a' was specified). + SERVERNUM=$((SERVERNUM + 1)) + SERVERNUM=$(find_free_servernum) + continue + fi + error "Xvfb failed to start" >&2 + XVFBPID= + exit 1 +done + +# Start the command and save its exit status. +set +e +DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1 +RETVAL=$? +set -e + +# Return the executed command's exit status. +exit $RETVAL + +# vim:set ai et sts=4 sw=4 tw=80: diff --git a/debian/local/xvfb-run.1 b/debian/local/xvfb-run.1 new file mode 100644 index 0000000..da6f606 --- /dev/null +++ b/debian/local/xvfb-run.1 @@ -0,0 +1,281 @@ +.\" Copyright 1998-2004 Branden Robinson . +.\" +.\" This is free software; you may redistribute it and/or modify +.\" it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2, +.\" or (at your option) any later version. +.\" +.\" This is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" the Debian operating system, in /usr/share/common-licenses/GPL; if +.\" not, write to the Free Software Foundation, Inc., 59 Temple Place, +.\" Suite 330, Boston, MA 02111-1307 USA +.\" +.\" We need the URL macro from groff's www macro package, but also want +.\" things to work all right for people who don't have it. So we define +.\" our own URL macro and let the www macro package override it if it's +.\" available. +.de URL +\\$2 \(laURL: \\$1 \(ra\\$3 +.. +.if \n[.g] .mso www.tmac +.TH xvfb\-run 1 "2004\-11\-12" "Debian Project" +.SH NAME +xvfb\-run \- run specified X client or command in a virtual X server environment +.SH SYNOPSIS +.B xvfb\-run +[ +.I options +] +.I command +.SH DESCRIPTION +.B xvfb\-run +is a wrapper for the +.BR Xvfb (1x) +command which simplifies the task of running commands (typically an X +client, or a script containing a list of clients to be run) within a virtual +X server environment. +.PP +.B xvfb\-run +sets up an X authority file (or uses an existing user\-specified one), +writes a cookie to it (see +.BR xauth (1x)) +and then starts the +.B Xvfb +X server as a background process. +The process ID of +.B Xvfb +is stored for later use. +The specified +.I command +is then run using the X display corresponding to the +.B Xvfb +server +just started and the X authority file created earlier. +.PP +When the +.I command +exits, its status is saved, the +.B Xvfb +server is killed (using the process ID stored earlier), the X authority +cookie removed, and the authority file deleted (if the user did not specify +one to use). +.B xvfb\-run +then exits with the exit status of +.IR command , +except in error conditions (see +.SM +.B EXIT STATUS +below). +.PP +.B xvfb\-run +requires the +.B xauth +command to function. +.SH OPTIONS +.TP +.B \-a\fR,\fB \-\-auto\-servernum +Try to get a free server number, starting at 99, or the argument to +.BR \-\-server\-num . +.TP +.BI \-e\ file \fR,\fB\ \-\-error\-file= file +Store output from +.B xauth +and +.B Xvfb +in +.IR file . +The default is +.IR /dev/null . +.TP +.BI \-f\ file \fR,\fB\ \-\-auth\-file= file +Store X authentication data in +.IR file . +By default, a temporary directory called +.IR xvfb\-run. PID +(where PID is the process ID of +.B xvfb\-run +itself) is created in the directory specified by the environment variable +.B TMPDIR +(or +.I /tmp +if that variable is null or unset), and the +.BR tempfile (1) +command is used to create a file in that temporary directory called +.IR Xauthority . +.TP +.B \-h\fR,\fB \-\-help +Display a usage message and exit. +.TP +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +Use +.I servernumber +as the server number (but see the +.B \-a\fR,\fB \-\-auto\-servernum +option above). +The default is 99. +.TP +.B \-l\fR,\fB \-\-listen\-tcp +Enable TCP port listening in the X server. +For security reasons (to avoid denial\-of\-service attacks or exploits), +TCP port listening is disabled by default. +.TP +.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname +Use +.I protocolname +as the X authority protocol to use. +The default is \(oq.\(cq, which +.B xauth +interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1. +.TP +.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments +Pass +.I arguments +to the +.B Xvfb +server. +Be careful to quote any whitespace characters that may occur within +.I arguments +to prevent them from regarded as separators for +.BR xvfb\-run 's +own arguments. +Also, note that specification of \(oq\-nolisten tcp\(cq in +.I arguments +may override the function of +.BR xvfb\-run 's +own +.B \-l\fR,\fB \-\-listen\-tcp +option, and that specification of the server number (e.g., \(oq:1\(cq) may +be ignored because of the way the X server parses its argument list. +Use the +.B xvfb\-run +option +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +to achieve the latter function. +The default is \(oq\-screen 0 640x480x8\(cq. +.TP +.BI \-w\ delay \fR,\fB\ \-\-wait= delay +Ignored for compatibility with earlier versions. +.SH ENVIRONMENT +.TP +.B COLUMNS +indicates the width of the terminal device in character cells. +This value is used for formatting diagnostic messages. +If not set, the terminal is queried using +.BR stty (1) +to determine its width. +If that fails, a value of \(oq80\(cq is assumed. +.TP +.B TMPDIR +specifies the directory in which to place +.BR xvfb\-run 's +temporary directory for storage of the X authority file; only used if the +.B \-f +or +.B \-\-auth\-file +options are not specified. +.SH "OUTPUT FILES" +.PP +Unless the +.B \-f +or +.B \-\-auth\-file +options are specified, a temporary +directory and file within it are created (and deleted) to store the X +authority cookies used by the +.B Xvfb +server and client(s) run under it. +See +.BR tempfile (1). +If \-f or \-\-auth\-file are used, then the specified X authority file is +only written to, not created or deleted (though +.B xauth +creates an authority file itself if told to use use that does not already +exist). +.PP +An error file with a user\-specified name is also created if the +.B \-e +or +.B \-\-error\-file +options are specifed; see above. +.SH "EXIT STATUS" +.B xvfb\-run +uses its exit status as well as output to standard error to communicate +diagnostics. +.TP +0 +.B xvfb\-run +only uses this exit status if the +.B \-h\fR,\fB \-\-help +option is given. +In all other situations, this may be interpreted as success of the specified +command. +.TP +1 +.B Xvfb +did not start correctly. +.TP +2 +No command to run was specified. +.TP +3 +The +.B xauth +command is not available. +.TP +4 +The temporary directory that was going to be used already exists; since +.B xvfb\-run +produces a uniquely named directory, this may indicate an attempt by another +process on the system to exploit a temporary file race condition. +.TP +5 +A problem was encountered while cleaning up the temporary directory. +.TP +6 +A problem was encountered while using +.BR getopt (1) +to parse the command\-line arguments. +.SH EXAMPLES +.TP +.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo +runs the +.BR xlogo (1x) +demonstration client inside the +.B Xvfb +X server on the first available server number greater than or equal to 1. +.TP +.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces +runs the +.BR ico (1x) +demonstration client (and passes it the +.B \-faces +argument) inside the +.B Xvfb +X server, configured with a root window of 1024 by 768 pixels and a color +depth of 24 bits. +.PP +Note that the demo X clients used in the above examples will not exit on +their own, so they will have to be killed before +.B xvfb\-run +will exit. +.SH BUGS +See +.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" . +If you wish to report a bug in +.BR xvfb\-run , +please use the +.BR reportbug (1) +command. +.SH AUTHOR +.B xvfb\-run +was written by Branden Robinson and Jeff Licquia with sponsorship from +Progeny Linux Systems. +.SH "SEE ALSO" +.BR Xvfb (1x), +.BR xauth (1x) +.\" vim:set et tw=80: diff --git a/debian/patches/001_fedora_extramodes.patch b/debian/patches/001_fedora_extramodes.patch new file mode 100644 index 0000000..77005b2 --- /dev/null +++ b/debian/patches/001_fedora_extramodes.patch @@ -0,0 +1,83 @@ +From: Adam Jackson +Date: Sun, 28 Oct 2007 09:37:52 +0100 +Subject: [PATCH] Fedora extra modes list + +--- +--- a/hw/xfree86/common/extramodes ++++ b/hw/xfree86/common/extramodes +@@ -3,16 +3,75 @@ + // + // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ + // ++// NOTE: Please keep all video modes sorted in order of X res, then Y res for ++// ease of maintenance and readability. + + # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz + ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + ++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync ++ ++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz ++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync ++ ++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz ++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync ++ ++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync ++ ++# 1152x864 @ 85Hz (Red Hat custom modeline) ++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync ++ ++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync ++ ++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz ++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync ++ ++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz ++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync ++ + # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz + ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + ++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz ++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync ++ + # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz + ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + ++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync ++ ++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz ++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync ++ ++# 1600x1024 for SGI 1600 SW ++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync ++ ++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz ++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync ++ ++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz ++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync ++ ++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz ++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync ++ ++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz ++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ + # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz + Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + diff --git a/debian/patches/02_kbsd-input-devd.diff b/debian/patches/02_kbsd-input-devd.diff new file mode 100644 index 0000000..bdadae2 --- /dev/null +++ b/debian/patches/02_kbsd-input-devd.diff @@ -0,0 +1,551 @@ +>From d96e2bd2a2b48ede527ad7071d3e0eeda9861b73 Mon Sep 17 00:00:00 2001 +From: Robert Millan +Date: Mon, 24 Feb 2014 23:22:57 +0100 +Subject: [PATCH] Add devd config backend for FreeBSD (and GNU/kFreeBSD) + +Based on original code by Baptiste Daroussin, with some fixes made +by Koop Mast and myself. + +Signed-off-by: Robert Millan +--- + config/Makefile.am | 4 + + config/config-backends.h | 5 + + config/config.c | 5 + + config/devd.c | 387 +++++++++++++++++++++++++++++++++++++++ + configure.ac | 16 ++ + hw/xfree86/common/xf86Config.c | 7 +- + hw/xfree86/common/xf86Globals.c | 3 +- + include/dix-config.h.in | 3 + + 8 files changed, 427 insertions(+), 3 deletions(-) + create mode 100644 config/devd.c + +Index: xorg-server/config/Makefile.am +=================================================================== +--- xorg-server.orig/config/Makefile.am ++++ xorg-server/config/Makefile.am +@@ -40,6 +40,10 @@ if CONFIG_WSCONS + libconfig_la_SOURCES += wscons.c + endif # CONFIG_WSCONS + ++if CONFIG_DEVD ++libconfig_la_SOURCES += devd.c ++endif ++ + endif # CONFIG_NEED_DBUS + + endif # !CONFIG_UDEV +Index: xorg-server/config/config-backends.h +=================================================================== +--- xorg-server.orig/config/config-backends.h ++++ xorg-server/config/config-backends.h +@@ -75,3 +75,8 @@ void config_hal_fini(void); + int config_wscons_init(void); + void config_wscons_fini(void); + #endif ++ ++#ifdef CONFIG_DEVD ++int config_devd_init(void); ++void config_devd_fini(void); ++#endif +Index: xorg-server/config/config.c +=================================================================== +--- xorg-server.orig/config/config.c ++++ xorg-server/config/config.c +@@ -64,6 +64,9 @@ config_init(void) + #elif defined(CONFIG_WSCONS) + if (!config_wscons_init()) + ErrorF("[config] failed to initialise wscons\n"); ++#elif defined(CONFIG_DEVD) ++ if (!config_devd_init()) ++ ErrorF("[config] failed to initialise devd\n"); + #endif + } + +@@ -82,6 +85,8 @@ config_fini(void) + config_dbus_core_fini(); + #elif defined(CONFIG_WSCONS) + config_wscons_fini(); ++#elif defined(CONFIG_DEVD) ++ config_devd_fini(); + #endif + } + +Index: xorg-server/config/devd.c +=================================================================== +--- /dev/null ++++ xorg-server/config/devd.c +@@ -0,0 +1,387 @@ ++/* ++ * Copyright © 2012 Baptiste Daroussin ++ * Copyright © 2014 Robert Millan ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Author: Baptiste Daroussin ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "input.h" ++#include "inputstr.h" ++#include "hotplug.h" ++#include "config-backends.h" ++#include "os.h" ++ ++#define DEVD_SOCK_PATH "/var/run/devd.pipe" ++ ++#define DEVD_EVENT_ADD '+' ++#define DEVD_EVENT_REMOVE '-' ++ ++static int sock_devd = -1; ++ ++struct hw_type { ++ const char *driver; ++ int flag; ++ const char *xdriver; ++}; ++ ++static struct hw_type hw_types[] = { ++ {"ukbd", ATTR_KEYBOARD, "kbd"}, ++ {"atkbd", ATTR_KEYBOARD, "kbd"}, ++ {"ums", ATTR_POINTER, "mouse"}, ++ {"psm", ATTR_POINTER, "mouse"}, ++ {"uhid", ATTR_POINTER, "mouse"}, ++ {"joy", ATTR_JOYSTICK, NULL}, ++ {"atp", ATTR_TOUCHPAD, NULL}, ++ {"uep", ATTR_TOUCHSCREEN, NULL}, ++ {NULL, -1, NULL}, ++}; ++ ++static bool ++sysctl_exists(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ size_t len; ++ int ret; ++ ++ if (format == NULL) ++ return false; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ ret = sysctlbyname(name, NULL, &len, NULL, 0); ++ ++ if (ret == -1) ++ len = 0; ++ ++ free(name); ++ return (len > 0); ++} ++ ++static char * ++sysctl_get_str(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ char *dest = NULL; ++ size_t len; ++ ++ if (format == NULL) ++ return NULL; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ if (sysctlbyname(name, NULL, &len, NULL, 0) == 0) { ++ dest = malloc(len + 1); ++ if (!dest) ++ goto unwind; ++ if (sysctlbyname(name, dest, &len, NULL, 0) == 0) ++ dest[len] = '\0'; ++ else { ++ free(dest); ++ dest = NULL; ++ } ++ } ++ ++ unwind: ++ free(name); ++ return dest; ++} ++ ++static void ++device_added(char *devname) ++{ ++ char path[PATH_MAX]; ++ char *vendor; ++ char *product = NULL; ++ char *config_info = NULL; ++ char *walk; ++ InputOption *options = NULL; ++ InputAttributes attrs = { }; ++ DeviceIntPtr dev = NULL; ++ int i, rc; ++ int fd; ++ ++ for (i = 0; hw_types[i].driver != NULL; i++) { ++ if (strncmp(devname, hw_types[i].driver, ++ strlen(hw_types[i].driver)) == 0 && ++ isdigit(*(devname + strlen(hw_types[i].driver)))) { ++ attrs.flags |= hw_types[i].flag; ++ break; ++ } ++ } ++ if (hw_types[i].driver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", ++ devname); ++ return; ++ } ++ if (hw_types[i].xdriver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", ++ devname); ++ return; ++ } ++ snprintf(path, sizeof(path), "/dev/%s", devname); ++ ++ options = input_option_new(NULL, "_source", "server/devd"); ++ if (!options) ++ return; ++ ++ vendor = ++ sysctl_get_str("dev.%s.%s.%%desc", hw_types[i].driver, ++ devname + strlen(hw_types[i].driver)); ++ if (vendor == NULL) { ++ attrs.vendor = strdup("(unnamed)"); ++ attrs.product = strdup("(unnamed)"); ++ } ++ else { ++ if ((walk = strchr(vendor, ' ')) != NULL) { ++ walk[0] = '\0'; ++ walk++; ++ product = walk; ++ if ((walk = strchr(product, ',')) != NULL) ++ walk[0] = '\0'; ++ } ++ ++ attrs.vendor = strdup(vendor); ++ if (product) ++ attrs.product = strdup(product); ++ else ++ attrs.product = strdup("(unnamed)"); ++ ++ options = input_option_new(options, "name", xstrdup(attrs.product)); ++ ++ free(vendor); ++ } ++ attrs.usb_id = NULL; ++ attrs.device = strdup(path); ++ options = input_option_new(options, "driver", hw_types[i].xdriver); ++ if (attrs.flags & ATTR_KEYBOARD) { ++ /* ++ * Don't pass device option if keyboard is attached to console (open fails), ++ * thus activating special logic in xf86-input-keyboard. ++ */ ++ fd = open(path, O_RDONLY | O_NONBLOCK | O_EXCL); ++ if (fd > 0) { ++ close(fd); ++ options = input_option_new(options, "device", xstrdup(path)); ++ } ++ } ++ else { ++ options = input_option_new(options, "device", xstrdup(path)); ++ } ++ ++ if (asprintf(&config_info, "devd:%s", devname) == -1) { ++ config_info = NULL; ++ goto unwind; ++ } ++ ++ if (device_is_duplicate(config_info)) { ++ LogMessage(X_WARNING, "config/devd: device %s already added. " ++ "Ignoring.\n", attrs.product); ++ goto unwind; ++ } ++ ++ options = input_option_new(options, "config_info", config_info); ++ LogMessage(X_INFO, "config/devd: adding input device %s (%s)\n", ++ attrs.product, path); ++ ++ rc = NewInputDeviceRequest(options, &attrs, &dev); ++ ++ if (rc != Success) ++ goto unwind; ++ ++ unwind: ++ free(config_info); ++ input_option_free_list(&options); ++ ++ free(attrs.usb_id); ++ free(attrs.product); ++ free(attrs.device); ++ free(attrs.vendor); ++} ++ ++static void ++device_removed(char *devname) ++{ ++ char *value; ++ ++ if (asprintf(&value, "devd:%s", devname) == -1) ++ return; ++ ++ remove_devices("devd", value); ++ ++ free(value); ++} ++ ++static ssize_t ++socket_getline(int fd, char **out) ++{ ++ char *buf, *newbuf; ++ ssize_t ret, cap, sz = 0; ++ char c; ++ ++ cap = 1024; ++ buf = malloc(cap * sizeof(char)); ++ if (!buf) ++ return -1; ++ ++ for (;;) { ++ ret = read(sock_devd, &c, 1); ++ if (ret < 1) { ++ if (errno == EINTR) ++ continue; ++ free(buf); ++ return -1; ++ } ++ ++ if (c == '\n') ++ break; ++ ++ if (sz + 1 >= cap) { ++ cap *= 2; ++ newbuf = realloc(buf, cap * sizeof(char)); ++ if (!newbuf) { ++ free(buf); ++ return -1; ++ } ++ buf = newbuf; ++ } ++ buf[sz] = c; ++ sz++; ++ } ++ ++ buf[sz] = '\0'; ++ if (sz >= 0) ++ *out = buf; ++ else ++ free(buf); ++ ++ return sz; /* number of bytes in the line, not counting the line break */ ++} ++ ++static void ++wakeup_handler(void *data, int err, void *read_mask) ++{ ++ char *line = NULL; ++ char *walk; ++ ++ if (err < 0) ++ return; ++ ++ if (FD_ISSET(sock_devd, (fd_set *) read_mask)) { ++ if (socket_getline(sock_devd, &line) < 0) ++ return; ++ ++ walk = strchr(line + 1, ' '); ++ if (walk != NULL) ++ walk[0] = '\0'; ++ ++ switch (*line) { ++ case DEVD_EVENT_ADD: ++ device_added(line + 1); ++ break; ++ case DEVD_EVENT_REMOVE: ++ device_removed(line + 1); ++ break; ++ default: ++ break; ++ } ++ free(line); ++ } ++} ++ ++static void ++block_handler(void *data, struct timeval **tv, void *read_mask) ++{ ++} ++ ++int ++config_devd_init(void) ++{ ++ struct sockaddr_un devd; ++ char devicename[1024]; ++ int i, j; ++ ++ /* first scan the sysctl to determine the hardware if needed */ ++ ++ for (i = 0; hw_types[i].driver != NULL; i++) { ++ for (j = 0; sysctl_exists("dev.%s.%i.%%desc", hw_types[i].driver, j); ++ j++) { ++ snprintf(devicename, sizeof(devicename), "%s%i", hw_types[i].driver, ++ j); ++ device_added(devicename); ++ } ++ ++ } ++ sock_devd = socket(AF_UNIX, SOCK_STREAM, 0); ++ if (sock_devd < 0) { ++ ErrorF("config/devd: Fail opening stream socket"); ++ return 0; ++ } ++ ++ devd.sun_family = AF_UNIX; ++ strlcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(devd.sun_path)); ++ ++ if (connect(sock_devd, (struct sockaddr *) &devd, sizeof(devd)) < 0) { ++ close(sock_devd); ++ ErrorF("config/devd: Fail to connect to devd"); ++ return 0; ++ } ++ ++ RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL); ++ AddGeneralSocket(sock_devd); ++ ++ return 1; ++} ++ ++void ++config_devd_fini(void) ++{ ++ if (sock_devd < 0) ++ return; ++ ++ RemoveGeneralSocket(sock_devd); ++ RemoveBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL); ++ close(sock_devd); ++} +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac ++++ xorg-server/configure.ac +@@ -618,6 +618,7 @@ AC_ARG_ENABLE(config-udev, AS_HELP_ST + AC_ARG_ENABLE(config-udev-kms, AS_HELP_STRING([--enable-config-udev-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=$enableval], [CONFIG_UDEV_KMS=auto]) + AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no]) + AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto]) ++AC_ARG_ENABLE(config-devd, AS_HELP_STRING([--disable-config-devd], [Build devd support (default: auto)]), [CONFIG_DEVD=$enableval], [CONFIG_DEVD=auto]) + AC_ARG_ENABLE(config-wscons, AS_HELP_STRING([--enable-config-wscons], [Build wscons config support (default: auto)]), [CONFIG_WSCONS=$enableval], [CONFIG_WSCONS=auto]) + AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=yes]) + AC_ARG_ENABLE(vgahw, AS_HELP_STRING([--enable-vgahw], [Build Xorg with vga access (default: enabled)]), [VGAHW=$enableval], [VGAHW=yes]) +@@ -922,6 +923,21 @@ if test "x$CONFIG_WSCONS" = xyes; then + AC_DEFINE(CONFIG_WSCONS, 1, [Use wscons for input auto configuration]) + fi + ++if test "x$CONFIG_DEVD" = xauto; then ++ case $host_os in ++ freebsd* | kfreebsd*-gnu) ++ CONFIG_DEVD=yes; ++ ;; ++ *) ++ CONFIG_DEVD=no; ++ ;; ++ esac ++fi ++AM_CONDITIONAL(CONFIG_DEVD, [test "x$CONFIG_DEVD" = xyes]) ++if test "x$CONFIG_DEVD" = xyes; then ++ AC_DEFINE(CONFIG_DEVD, 1, [Use devd for input auto configuration]) ++fi ++ + if test "x$USE_SIGIO_BY_DEFAULT" = xyes; then + USE_SIGIO_BY_DEFAULT_VALUE=TRUE + else +Index: xorg-server/hw/xfree86/common/xf86Config.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Config.c ++++ xorg-server/hw/xfree86/common/xf86Config.c +@@ -1377,15 +1377,18 @@ checkCoreInputDevices(serverLayoutPtr se + } + + if (!xf86Info.forceInputDevices && !(foundPointer && foundKeyboard)) { +-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) ++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \ ++ defined(CONFIG_DEVD) + const char *config_backend; + + #if defined(CONFIG_HAL) + config_backend = "HAL"; + #elif defined(CONFIG_UDEV) + config_backend = "udev"; +-#else ++#elif defined(CONFIG_WSCONS) + config_backend = "wscons"; ++#elif defined(CONFIG_DEVD) ++ config_backend = "devd"; + #endif + xf86Msg(X_INFO, "The server relies on %s to provide the list of " + "input devices.\n\tIf no devices become available, " +Index: xorg-server/hw/xfree86/common/xf86Globals.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Globals.c ++++ xorg-server/hw/xfree86/common/xf86Globals.c +@@ -123,7 +123,8 @@ xf86InfoRec xf86Info = { + .log = LogNone, + .disableRandR = FALSE, + .randRFrom = X_DEFAULT, +-#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) ++#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSCONS) || \ ++ defined(CONFIG_DEVD) + .forceInputDevices = FALSE, + .autoAddDevices = TRUE, + .autoEnableDevices = TRUE, +Index: xorg-server/include/dix-config.h.in +=================================================================== +--- xorg-server.orig/include/dix-config.h.in ++++ xorg-server/include/dix-config.h.in +@@ -420,6 +420,9 @@ + /* Support HAL for hotplug */ + #undef CONFIG_HAL + ++/* Support devd for hotplug */ ++#undef CONFIG_DEVD ++ + /* Have a monotonic clock from clock_gettime() */ + #undef MONOTONIC_CLOCK + diff --git a/debian/patches/03_static-nettle.diff b/debian/patches/03_static-nettle.diff new file mode 100644 index 0000000..4a48338 --- /dev/null +++ b/debian/patches/03_static-nettle.diff @@ -0,0 +1,17 @@ +Link against static libnettle + +There's no libnettle udeb. + +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac 2013-08-02 20:15:25.471466837 +0200 ++++ xorg-server/configure.ac 2013-08-02 20:17:12.875999417 +0200 +@@ -1433,7 +1433,7 @@ + if test "x$with_sha1" = xlibnettle; then + AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1], + [Use libnettle SHA1 functions]) +- SHA1_LIBS=-lnettle ++ SHA1_LIBS=-l:libnettle.a + fi + AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes]) + if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then diff --git a/debian/patches/05_Revert-Unload-submodules.diff b/debian/patches/05_Revert-Unload-submodules.diff new file mode 100644 index 0000000..1cc8ff8 --- /dev/null +++ b/debian/patches/05_Revert-Unload-submodules.diff @@ -0,0 +1,28 @@ +From 272537ae14a04911fcf2fec51492fa0f91c4a676 Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Wed, 29 Aug 2012 20:16:40 +0200 +Subject: [PATCH] Revert "Unload submodules." + +This reverts commit 0d4bb5442ceb8e8e4a8de6cfc4203cae469eee72. + +This doesn't seem to work quite well. See Debian bug#686152. +--- + hw/xfree86/common/xf86Helper.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/hw/xfree86/common/xf86Helper.c ++++ b/hw/xfree86/common/xf86Helper.c +@@ -1596,7 +1596,13 @@ xf86LoadOneModule(char *name, pointer op + void + xf86UnloadSubModule(pointer mod) + { ++ /* ++ * This is disabled for now. The loader isn't smart enough yet to undo ++ * relocations. ++ */ ++#if 0 + UnloadSubModule(mod); ++#endif + } + + Bool diff --git a/debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff b/debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff new file mode 100644 index 0000000..c3a6e50 --- /dev/null +++ b/debian/patches/06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff @@ -0,0 +1,68 @@ +From 10aaa5d2ffa62df99f03c857dc78e6ff2b33c183 Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Sun, 30 Sep 2012 12:02:11 +0200 +Subject: [PATCH] Revert "fb: reorder Bresenham error correction to avoid + overshoot." + +This reverts commit 3e62f48edf47a59d923ac58b6d4262b02456a556. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54168 +Debian: http://buss.debian.org/688908 + +Signed-off-by: Julien Cristau +--- + fb/fbseg.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/fb/fbseg.c b/fb/fbseg.c +index 1848387..0e4e0a9 100644 +--- a/fb/fbseg.c ++++ b/fb/fbseg.c +@@ -65,12 +65,6 @@ fbBresSolid(DrawablePtr pDrawable, + if (axis == X_AXIS) { + bits = 0; + while (len--) { +- if (e >= 0) { +- WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits)); +- bits = 0; +- dst += dstStride; +- e += e3; +- } + bits |= mask; + mask = fbBresShiftMask(mask, signdx, dstBpp); + if (!mask) { +@@ -80,12 +74,21 @@ fbBresSolid(DrawablePtr pDrawable, + mask = mask0; + } + e += e1; ++ if (e >= 0) { ++ WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits)); ++ bits = 0; ++ dst += dstStride; ++ e += e3; ++ } + } + if (bits) + WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits)); + } + else { + while (len--) { ++ WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask)); ++ dst += dstStride; ++ e += e1; + if (e >= 0) { + e += e3; + mask = fbBresShiftMask(mask, signdx, dstBpp); +@@ -94,9 +97,6 @@ fbBresSolid(DrawablePtr pDrawable, + mask = mask0; + } + } +- WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask)); +- dst += dstStride; +- e += e1; + } + } + +-- +1.7.10.4 + diff --git a/debian/patches/08_xfree86_fix_ia64_inx_outx.diff b/debian/patches/08_xfree86_fix_ia64_inx_outx.diff new file mode 100644 index 0000000..10dbbe9 --- /dev/null +++ b/debian/patches/08_xfree86_fix_ia64_inx_outx.diff @@ -0,0 +1,64 @@ +From: Stephan Schreiber +Subject: xfree86: restore {in,out}{b,w,l} on linux/ia64 + +Call the equivalent glibc functions. + +Debian bug #685750 + +--- a/hw/xfree86/common/compiler.h ++++ b/hw/xfree86/common/compiler.h +@@ -438,6 +438,54 @@ extern _X_EXPORT unsigned int inl(unsign + #include + #endif /* __NetBSD__ */ + ++#elif defined(linux) && defined(__ia64__) ++/* for Linux on ia64, we use the LIBC _inx/_outx routines */ ++/* note that the appropriate setup via "ioperm" needs to be done */ ++/* *before* any inx/outx is done. */ ++ ++extern _X_EXPORT void _outb(unsigned char val, unsigned long port); ++extern _X_EXPORT void _outw(unsigned short val, unsigned long port); ++extern _X_EXPORT void _outl(unsigned int val, unsigned long port); ++extern _X_EXPORT unsigned int _inb(unsigned long port); ++extern _X_EXPORT unsigned int _inw(unsigned long port); ++extern _X_EXPORT unsigned int _inl(unsigned long port); ++ ++static __inline__ void ++outb(unsigned long port, unsigned char val) ++{ ++ _outb(val, port); ++} ++ ++static __inline__ void ++outw(unsigned long port, unsigned short val) ++{ ++ _outw(val, port); ++} ++ ++static __inline__ void ++outl(unsigned long port, unsigned int val) ++{ ++ _outl(val, port); ++} ++ ++static __inline__ unsigned int ++inb(unsigned long port) ++{ ++ return _inb(port); ++} ++ ++static __inline__ unsigned int ++inw(unsigned long port) ++{ ++ return _inw(port); ++} ++ ++static __inline__ unsigned int ++inl(unsigned long port) ++{ ++ return _inl(port); ++} ++ + #elif (defined(linux) || defined(__FreeBSD__)) && defined(__amd64__) + + #include diff --git a/debian/patches/105_nvidia_fglrx_autodetect.patch b/debian/patches/105_nvidia_fglrx_autodetect.patch new file mode 100644 index 0000000..1d08205 --- /dev/null +++ b/debian/patches/105_nvidia_fglrx_autodetect.patch @@ -0,0 +1,53 @@ +diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c +index 43c746b..750b425 100644 +--- a/hw/xfree86/common/xf86AutoConfig.c ++++ b/hw/xfree86/common/xf86AutoConfig.c +@@ -75,6 +75,13 @@ + "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \ + "EndSection\n\n" + ++#define BUILTIN_SCREEN_SECTION_PROPRIETARY \ ++ "Section \"Screen\"\n" \ ++ "\tIdentifier\t" BUILTIN_SCREEN_NAME "\n" \ ++ "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \ ++ "\tDefaultDepth\t24\n" \ ++ "EndSection\n\n" ++ + #define BUILTIN_LAYOUT_SECTION_PRE \ + "Section \"ServerLayout\"\n" \ + "\tIdentifier\t\"Builtin Default Layout\"\n" +@@ -153,7 +160,11 @@ xf86AutoConfig(void) + for (p = deviceList; *p; p++) { + snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p); + AppendToConfig(buf); +- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); ++ if (strcmp(*p, "fglrx") == 0 || strcmp(*p, "nvidia") == 0) ++ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_PROPRIETARY, *p, ++ 0, *p, 0); ++ else ++ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); + AppendToConfig(buf); + } + +diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c +index e52f1da..bd62a7e 100644 +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1107,7 +1107,8 @@ videoPtrToDriverList(struct pci_device *dev, + driverList[0] = "ast"; + break; + case 0x1002: +- driverList[0] = "ati"; ++ driverList[0] = "fglrx"; ++ driverList[1] = "ati"; + break; + case 0x102c: + driverList[0] = "chips"; +@@ -1143,6 +1144,7 @@ videoPtrToDriverList(struct pci_device *dev, + { + int idx = 0; + ++ driverList[idx++] = "nvidia"; + #ifdef __linux__ + driverList[idx++] = "nouveau"; + #endif diff --git a/debian/patches/111_armel-drv-fallbacks.patch b/debian/patches/111_armel-drv-fallbacks.patch new file mode 100644 index 0000000..bc76c4e --- /dev/null +++ b/debian/patches/111_armel-drv-fallbacks.patch @@ -0,0 +1,86 @@ +diff --git a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c +index 55412b4..d4a95d2 100644 +--- a/hw/xfree86/common/xf86AutoConfig.c ++++ b/hw/xfree86/common/xf86AutoConfig.c +@@ -45,6 +45,12 @@ + #include "xf86sbusBus.h" + #endif + ++#if defined(__arm__) && defined(__linux__) ++#include "loaderProcs.h" ++#include /* For opendir in test_sysfs_device */ ++#include /* For opendir in test_sysfs_device */ ++#endif ++ + #ifdef sun + #include + #include +@@ -200,6 +206,27 @@ xf86AutoConfig(void) + return ret == CONFIG_OK; + } + ++#if defined(__arm__) && defined(__linux__) ++static int ++test_sysfs_device(char *device_name, char *driver_name) ++{ ++ DIR *dir = opendir("/sys/devices/platform"); ++ struct dirent *current_dir; ++ int len = strlen(device_name); ++ ++ while (current_dir = readdir(dir)) { ++ if (strlen(current_dir->d_name) >= len && ++ strncmp(device_name, current_dir->d_name, len) == 0) ++ break; ++ } ++ closedir(dir); ++ if (!current_dir) ++ return 0; ++ ++ return 1; ++} ++#endif /* defined(__arm__) && defined(__linux__) */ ++ + static void + listPossibleVideoDrivers(char *matches[], int nmatches) + { +@@ -287,6 +314,21 @@ listPossibleVideoDrivers(char *matches[], int nmatches) + #endif + } + ++#if defined(__linux__) && defined(__arm__) ++ if (i < (nmatches - 1)) { ++ if (test_sysfs_device("mxc_gpu", "imx")) ++ matches[i++] = xnfstrdup("imx"); ++ else if (test_sysfs_device("dovefb", "dovefb")) ++ matches[i++] = xnfstrdup("dovefb"); ++ else if (test_sysfs_device("omapdrm", "omap")) ++ matches[i++] = xnfstrdup("omap"); ++ else if (test_sysfs_device("omapfb", "omapfb")) ++ matches[i++] = xnfstrdup("omapfb"); ++ else if (test_sysfs_device("omap", "pvr")) ++ matches[i++] = xnfstrdup("pvr"); ++ } ++#endif /* defined(__linux__) && defined(__arm__) */ ++ + #if defined(__linux__) + matches[i++] = xnfstrdup("modesetting"); + #endif +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 24b9473..0061c25 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -362,6 +362,14 @@ xf86platformProbeDev(DriverPtr drvp) + if (xf86IsPrimaryPlatform(&xf86_platform_devices[j])) + break; + } ++ else { ++ /* there's no way to handle real platform devices at this point, ++ * as there's no valid busID to be used, so try to move forward ++ * in case there's only one platform device, and see if the ++ * driver's probe succeeds or not at least once */ ++ if ((xf86_num_platform_devices == 1) && (!foundScreen)) ++ break; ++ } + } + } + diff --git a/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch b/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch new file mode 100644 index 0000000..6f8cfab --- /dev/null +++ b/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch @@ -0,0 +1,25 @@ +diff --git a/Xext/security.c b/Xext/security.c +index 3699510..5e5a703 100644 +--- a/Xext/security.c ++++ b/Xext/security.c +@@ -260,9 +260,9 @@ SecurityComputeAuthorizationTimeout(SecurityAuthorizationPtr pAuth, + /* maxSecs is the number of full seconds that can be expressed in + * 32 bits worth of milliseconds + */ +- CARD32 maxSecs = (CARD32) (~0) / (CARD32) MILLI_PER_SECOND; ++ CARD32 maxSecs = (CARD32) (MAXINT) / (CARD32) MILLI_PER_SECOND; + +- if (seconds > maxSecs) { /* only come here if we want to wait more than 49 days */ ++ if (seconds > maxSecs) { /* only come here if we want to wait more than 24 days */ + pAuth->secondsRemaining = seconds - maxSecs; + return maxSecs * MILLI_PER_SECOND; + } +@@ -296,8 +296,6 @@ SecurityAuthorizationExpired(OsTimerPtr timer, CARD32 time, pointer pval) + { + SecurityAuthorizationPtr pAuth = (SecurityAuthorizationPtr) pval; + +- assert(pAuth->timer == timer); +- + if (pAuth->secondsRemaining) { + return SecurityComputeAuthorizationTimeout(pAuth, + pAuth->secondsRemaining); diff --git a/debian/patches/168_glibc_trace_to_stderr.patch b/debian/patches/168_glibc_trace_to_stderr.patch new file mode 100644 index 0000000..4020d88 --- /dev/null +++ b/debian/patches/168_glibc_trace_to_stderr.patch @@ -0,0 +1,14 @@ +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index 0974893..797f054 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -938,6 +938,9 @@ OsVendorInit(void) + + if (!beenHere) { + umask(022); ++ /* have glibc report internal abort traces to stderr instead of ++ the controlling terminal */ ++ setenv("LIBC_FATAL_STDERR_", "1", 0); + xf86LogInit(); + } + diff --git a/debian/patches/188_default_primary_to_first_busid.patch b/debian/patches/188_default_primary_to_first_busid.patch new file mode 100644 index 0000000..99c33c0 --- /dev/null +++ b/debian/patches/188_default_primary_to_first_busid.patch @@ -0,0 +1,15 @@ +diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c +index e52f1da..462faa9 100644 +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -135,8 +135,8 @@ xf86PciProbe(void) + } + else { + xf86Msg(X_NOTICE, +- "More than one possible primary device found\n"); +- primaryBus.type ^= (BusType) (-1); ++ "More than one possible primary device found. Using first one seen.\n"); ++ break; + } + } + } diff --git a/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch b/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch new file mode 100644 index 0000000..c5a08bc --- /dev/null +++ b/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch @@ -0,0 +1,398 @@ +Last-Update: 2013-09-19 + +Index: xorg-server-1.14.2.901/configure.ac +=================================================================== +--- xorg-server-1.14.2.901.orig/configure.ac 2013-09-19 11:43:53.948797077 -0400 ++++ xorg-server-1.14.2.901/configure.ac 2013-09-19 11:43:53.944797077 -0400 +@@ -517,9 +517,9 @@ + AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]), + [ XKBPATH="$withval" ], + [ XKBPATH="${datadir}/X11/xkb" ]) +-AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]), ++AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${localstatedir}/cache/xkb)]), + [ XKBOUTPUT="$withval" ], +- [ XKBOUTPUT="compiled" ]) ++ [ XKBOUTPUT="${localstatedir}/cache/xkb" ]) + AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES], + [Keyboard ruleset (default: base/evdev)]), + [ XKB_DFLT_RULES="$withval" ], +@@ -1225,7 +1225,7 @@ + dnl Make sure XKM_OUTPUT_DIR is an absolute path + XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1` + if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then +- XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT" ++ AC_MSG_ERROR([xkb-output must be an absolute path.]) + fi + + dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed +Index: xorg-server-1.14.2.901/xkb/README.compiled +=================================================================== +--- xorg-server-1.14.2.901.orig/xkb/README.compiled 2013-09-19 11:43:53.948797077 -0400 ++++ xorg-server-1.14.2.901/xkb/README.compiled 2013-09-19 11:43:53.944797077 -0400 +@@ -4,10 +4,10 @@ + or some other tool might destroy or replace the files in this directory, + so it is not a safe place to store compiled keymaps for long periods of + time. The default keymap for any server is usually stored in: +- X-default.xkm +-where is the display number of the server in question, which makes +-it possible for several servers *on the same host* to share the same +-directory. ++ server-.xkm ++ ++where is the SHA1 hash of keymap source, so that compiled ++keymap of different keymap sources are stored in different files. + + Unless the X server is modified, sharing this directory between servers on + different hosts could cause problems. +Index: xorg-server-1.14.2.901/xkb/ddxLoad.c +=================================================================== +--- xorg-server-1.14.2.901.orig/xkb/ddxLoad.c 2013-09-19 11:43:53.948797077 -0400 ++++ xorg-server-1.14.2.901/xkb/ddxLoad.c 2013-09-19 11:51:04.744800715 -0400 +@@ -30,6 +30,12 @@ + + #include + ++#ifdef HAVE_SHA1_IN_LIBGCRYPT /* Use libgcrypt for SHA1 */ ++#include ++#else /* Use OpenSSL's libcrypto */ ++#warning "xkbcomp caching support disabled" ++#endif ++ + #include + #include + #include +@@ -43,20 +49,9 @@ + #define XKBSRV_NEED_FILE_FUNCS + #include + #include ++#include + #include "xkb.h" + +- /* +- * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is +- * relative to the top-level XKB configuration directory. +- * Making the server write to a subdirectory of that directory +- * requires some work in the general case (install procedure +- * has to create links to /var or somesuch on many machines), +- * so we just compile into /usr/tmp for now. +- */ +-#ifndef XKM_OUTPUT_DIR +-#define XKM_OUTPUT_DIR "compiled/" +-#endif +- + #define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\"" + #define ERROR_PREFIX "\"> \"" + #define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\"" +@@ -69,35 +64,87 @@ + #endif + + static void +-OutputDirectory(char *outdir, size_t size) ++OutputDirectory(char *outdir, size_t size, Bool *is_private_directory) + { + #ifndef WIN32 + /* Can we write an xkm and then open it too? */ + if (access(XKM_OUTPUT_DIR, W_OK | X_OK) == 0 && + (strlen(XKM_OUTPUT_DIR) < size)) { + (void) strcpy(outdir, XKM_OUTPUT_DIR); ++ if (is_private_directory) ++ *is_private_directory = TRUE; + } + else + #else + if (strlen(Win32TempDir()) + 1 < size) { + (void) strcpy(outdir, Win32TempDir()); + (void) strcat(outdir, "\\"); ++ if (is_private_directory) ++ *is_private_directory = FALSE; + } + else + #endif + if (strlen("/tmp/") < size) { + (void) strcpy(outdir, "/tmp/"); ++ if (is_private_directory) ++ *is_private_directory = FALSE; + } + } + ++#ifndef SHA_DIGEST_LENGTH ++#define SHA_DIGEST_LENGTH 20 ++#endif ++ ++static Bool ++Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH * 2 + 1], const char *input) ++{ ++ int i; ++ unsigned char sha1[SHA_DIGEST_LENGTH]; ++ ++#ifdef HAVE_SHA1_IN_LIBGCRYPT /* Use libgcrypt for SHA1 */ ++ static int init; ++ gcry_md_hd_t h; ++ gcry_error_t err; ++ ++ if (!init) { ++ if (!gcry_check_version(NULL)) ++ return BadAlloc; ++ gcry_control(GCRYCTL_DISABLE_SECMEM, 0); ++ gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); ++ init = 1; ++ } ++ ++ err = gcry_md_open(&h, GCRY_MD_SHA1, 0); ++ if (err) ++ return BadAlloc; ++ gcry_md_write(h, input, strlen(input)); ++ memcpy(sha1, gcry_md_read(h, GCRY_MD_SHA1), 20); ++ gcry_md_close(h); ++#endif ++ ++ /* convert sha1 to sha1_asc */ ++ for (i = 0; i < SHA_DIGEST_LENGTH; ++i) { ++ sprintf(sha1Asc + i * 2, "%02X", sha1[i]); ++ } ++ ++ return Success; ++} ++ ++/* call xkbcomp and compile XKB keymap, return xkm file name in ++ nameRtrn */ + static Bool + XkbDDXCompileKeymapByNames(XkbDescPtr xkb, + XkbComponentNamesPtr names, + unsigned want, +- unsigned need, char *nameRtrn, int nameRtrnLen) ++ unsigned need, char *nameRtrn, int nameRtrnLen, ++ Bool *is_private_directory) + { + FILE *out; +- char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX]; ++ char *buf = NULL, xkmfile[PATH_MAX], xkm_output_dir[PATH_MAX]; ++ char *tmpXkmFile = NULL; ++ char *canonicalXkmFileName = NULL; ++ char sha1Asc[SHA_DIGEST_LENGTH * 2 + 1], xkbKeyMapBuf[100 * 1024]; ++ int ret, result; + + const char *emptystring = ""; + char *xkbbasedirflag = NULL; +@@ -108,14 +155,68 @@ + /* WIN32 has no popen. The input must be stored in a file which is + used as input for xkbcomp. xkbcomp does not read from stdin. */ + char tmpname[PATH_MAX]; +- const char *xkmfile = tmpname; ++ const char *xkbfile = tmpname; + #else +- const char *xkmfile = "-"; ++ const char *xkbfile = "-"; + #endif + +- snprintf(keymap, sizeof(keymap), "server-%s", display); ++ /* Write keymap source (xkbfile) to memory buffer `xkbKeyMapBuf', ++ of which SHA1 is generated and used as result xkm file name */ ++ memset(xkbKeyMapBuf, 0, sizeof(xkbKeyMapBuf)); ++ out = fmemopen(xkbKeyMapBuf, sizeof(xkbKeyMapBuf), "w"); ++ if (NULL == out) { ++ ErrorF("[xkb] Open xkbKeyMapBuf for writing failed\n"); ++ return FALSE; ++ } ++ ret = XkbWriteXKBKeymapForNames(out, names, xkb, want, need); ++ if (fclose(out) != 0) { ++ ErrorF ++ ("[xkb] XkbWriteXKBKeymapForNames error, perhaps xkbKeyMapBuf is too small\n"); ++ return FALSE; ++ } ++#ifdef DEBUG ++ if (xkbDebugFlags) { ++ ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n"); ++ fputs(xkbKeyMapBuf, stderr); ++ } ++#endif ++ if (!ret) { ++ ErrorF ++ ("[xkb] Generating XKB Keymap failed, giving up compiling keymap\n"); ++ return FALSE; ++ } ++ ++ DebugF("[xkb] computing SHA1 of keymap\n"); ++ if (Success == Sha1Asc(sha1Asc, xkbKeyMapBuf)) { ++ snprintf(xkmfile, sizeof(xkmfile), "server-%s", sha1Asc); ++ } ++ else { ++ ErrorF("[xkb] Computing SHA1 of keymap failed, " ++ "using display name instead as xkm file name\n"); ++ snprintf(xkmfile, sizeof(xkmfile), "server-%s", display); ++ } ++ ++ OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir), is_private_directory); ++ /* set nameRtrn, fail if it's too small */ ++ if ((strlen(xkmfile) + 1 > nameRtrnLen) && nameRtrn) { ++ ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n"); ++ return FALSE; ++ } ++ strncpy(nameRtrn, xkmfile, nameRtrnLen); + +- OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir)); ++ /* if the xkm file already exists, reuse it */ ++ canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile); ++ if ((*is_private_directory) && (access(canonicalXkmFileName, R_OK) == 0)) { ++ /* yes, we can reuse the old xkm file */ ++ LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName); ++ result = TRUE; ++ goto _ret; ++ } ++ LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName); ++ ++ /* continue to call xkbcomp to compile the keymap. to avoid race ++ condition, we compile it to a tmpfile then rename it to ++ xkmfile */ + + #ifdef WIN32 + strcpy(tmpname, Win32TempDir()); +@@ -139,15 +240,21 @@ + } + } + ++ if ((tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL) { ++ ErrorF("[xkb] Can't generate temp xkm file name"); ++ result = FALSE; ++ goto _ret; ++ } ++ + if (asprintf(&buf, + "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" " +- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"", ++ "-em1 %s -emp %s -eml %s \"%s\"", + xkbbindir, xkbbindirsep, + ((xkbDebugFlags < 2) ? 1 : + ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)), +- xkbbasedirflag ? xkbbasedirflag : "", xkmfile, ++ xkbbasedirflag ? xkbbasedirflag : "", xkbfile, + PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1, +- xkm_output_dir, keymap) == -1) ++ tmpXkmFile) == -1) + buf = NULL; + + free(xkbbasedirflag); +@@ -158,6 +265,11 @@ + return FALSE; + } + ++ /* there's a potential race condition between calling tempnam() ++ and invoking xkbcomp to write the result file (potential temp ++ file name conflicts), but since xkbcomp is a standalone ++ program, we have to live with this */ ++ + #ifndef WIN32 + out = Popen(buf, "w"); + #else +@@ -165,32 +277,43 @@ + #endif + + if (out != NULL) { +-#ifdef DEBUG +- if (xkbDebugFlags) { +- ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n"); +- XkbWriteXKBKeymapForNames(stderr, names, xkb, want, need); ++ /* write XKBKeyMapBuf to xkbcomp */ ++ if (EOF == fputs(xkbKeyMapBuf, out)) { ++ ErrorF("[xkb] Sending keymap to xkbcomp failed\n"); ++ result = FALSE; ++ goto _ret; + } +-#endif +- XkbWriteXKBKeymapForNames(out, names, xkb, want, need); + #ifndef WIN32 + if (Pclose(out) == 0) + #else + if (fclose(out) == 0 && System(buf) >= 0) + #endif + { ++ /* xkbcomp success */ + if (xkbDebugFlags) + DebugF("[xkb] xkb executes: %s\n", buf); +- if (nameRtrn) { +- strlcpy(nameRtrn, keymap, nameRtrnLen); ++ ++ /* if canonicalXkmFileName already exists now, we simply ++ overwrite it, this is OK */ ++ ret = rename(tmpXkmFile, canonicalXkmFileName); ++ if (0 != ret) { ++ ErrorF("[xkb] Can't rename %s to %s, error: %s\n", ++ tmpXkmFile, canonicalXkmFileName, strerror(errno)); ++ ++ /* in case of error, don't unlink tmpXkmFile, leave i ++ for debugging */ ++ ++ result = FALSE; ++ goto _ret; + } +- free(buf); + #ifdef WIN32 + unlink(tmpname); + #endif +- return TRUE; ++ result = TRUE; ++ goto _ret; + } + else +- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap); ++ LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile); + #ifdef WIN32 + /* remove the temporary file */ + unlink(tmpname); +@@ -205,8 +328,17 @@ + } + if (nameRtrn) + nameRtrn[0] = '\0'; +- free(buf); +- return FALSE; ++ result = FALSE; ++ ++ _ret: ++ if (tmpXkmFile) ++ free(tmpXkmFile); ++ if (canonicalXkmFileName) ++ free(canonicalXkmFileName); ++ if (buf) ++ free(buf); ++ ++ return result; + } + + static FILE * +@@ -217,7 +349,7 @@ + + buf[0] = '\0'; + if (mapName != NULL) { +- OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir)); ++ OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir), NULL); + if ((XkbBaseDirectory != NULL) && (xkm_output_dir[0] != '/') + #ifdef WIN32 + && (!isalpha(xkm_output_dir[0]) || xkm_output_dir[1] != ':') +@@ -256,6 +388,7 @@ + FILE *file; + char fileName[PATH_MAX]; + unsigned missing; ++ Bool is_private_directory; + + *xkbRtrn = NULL; + if ((keybd == NULL) || (keybd->key == NULL) || +@@ -271,7 +404,8 @@ + return 0; + } + else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need, +- nameRtrn, nameRtrnLen)) { ++ nameRtrn, nameRtrnLen, ++ &is_private_directory)) { + LogMessage(X_ERROR, "XKB: Couldn't compile keymap\n"); + return 0; + } +@@ -293,7 +427,8 @@ + (*xkbRtrn)->defined); + } + fclose(file); +- (void) unlink(fileName); ++ if (!is_private_directory) ++ (void) unlink(fileName); + return (need | want) & (~missing); + } + diff --git a/debian/patches/191-Xorg-add-an-extra-module-path.patch b/debian/patches/191-Xorg-add-an-extra-module-path.patch new file mode 100644 index 0000000..6ff6c30 --- /dev/null +++ b/debian/patches/191-Xorg-add-an-extra-module-path.patch @@ -0,0 +1,90 @@ +diff --git a/configure.ac b/configure.ac +index 2693ce7..44780a2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -467,6 +467,10 @@ AC_ARG_WITH(module-dir, AS_HELP_STRING([--with-module-dir=DIR], + [Directory where modules are installed (default: $libdir/xorg/modules)]), + [ moduledir="$withval" ], + [ moduledir="${libdir}/xorg/modules" ]) ++AC_ARG_WITH(extra-module-dir,AS_HELP_STRING([--with-extra-module-dir=DIR], ++ [Extra module directory to search for modules before the default one (default: empty)]), ++ [ extra_moduledir="$withval" ], ++ [ extra_moduledir="" ]) + AC_ARG_WITH(log-dir, AS_HELP_STRING([--with-log-dir=DIR], + [Directory where log files are kept (default: $localstatedir/log)]), + [ logdir="$withval" ], +@@ -1751,6 +1755,7 @@ if test "x$XORG" = xyes; then + AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file]) + AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory]) + AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path]) ++ AC_DEFINE_DIR(EXTRA_MODULE_PATH, extra_moduledir, [Extra module search path, searched before the default one]) + AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path]) + AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location]) + AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support]) +diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c +index ec679df..8ae85ab 100644 +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -647,11 +647,22 @@ configFiles(XF86ConfFilesPtr fileconf) + + /* ModulePath */ + +- if (fileconf) { +- if (xf86ModPathFrom != X_CMDLINE && fileconf->file_modulepath) { ++ if (xf86ModPathFrom != X_CMDLINE) { ++ if (fileconf && fileconf->file_modulepath) { + xf86ModulePath = fileconf->file_modulepath; + xf86ModPathFrom = X_CONFIG; + } ++ else if (strcmp(xf86ExtraModulePath, "") != 0) { ++ char *newpath = malloc(strlen(xf86ExtraModulePath) ++ + strlen(xf86ModulePath) ++ + 2); ++ ++ strcpy(newpath, xf86ExtraModulePath); ++ strcat(newpath, ","); ++ strcat(newpath, xf86ModulePath); ++ ++ xf86ModulePath = newpath; ++ } + } + + xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath); +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index 0071004..13c403f 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -136,6 +136,7 @@ xf86InfoRec xf86Info = { + const char *xf86ConfigFile = NULL; + const char *xf86ConfigDir = NULL; + const char *xf86ModulePath = DEFAULT_MODULE_PATH; ++const char *xf86ExtraModulePath = EXTRA_MODULE_PATH; + MessageType xf86ModPathFrom = X_DEFAULT; + const char *xf86LogFile = DEFAULT_LOGPREFIX; + MessageType xf86LogFileFrom = X_DEFAULT; +diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h +index 8d9cb55..fc057b3 100644 +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -77,6 +77,7 @@ extern _X_EXPORT const char *xf86ServerName; + + extern _X_EXPORT xf86InfoRec xf86Info; + extern _X_EXPORT const char *xf86ModulePath; ++extern _X_EXPORT const char *xf86ExtraModulePath; + extern _X_EXPORT MessageType xf86ModPathFrom; + extern _X_EXPORT const char *xf86LogFile; + extern _X_EXPORT MessageType xf86LogFileFrom; +diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in +index 2cc416a..4722023 100644 +--- a/include/xorg-config.h.in ++++ b/include/xorg-config.h.in +@@ -42,6 +42,9 @@ + /* Path to loadable modules. */ + #undef DEFAULT_MODULE_PATH + ++/* Path to extra loadable modules. */ ++#undef EXTRA_MODULE_PATH ++ + /* Path to installed libraries. */ + #undef DEFAULT_LIBRARY_PATH + diff --git a/debian/patches/208_switch_on_release.diff b/debian/patches/208_switch_on_release.diff new file mode 100644 index 0000000..d1f7d26 --- /dev/null +++ b/debian/patches/208_switch_on_release.diff @@ -0,0 +1,110 @@ +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index c473df1..0ac2c71 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -341,22 +341,83 @@ _XkbFilterLatchState(XkbSrvInfoPtr xkbi, + } + + static int +-_XkbFilterLockState(XkbSrvInfoPtr xkbi, ++xkbSwitchGroupOnRelease(void) ++{ ++ /* TODO: user configuring */ ++ return TRUE; ++} ++ ++static void ++xkbUpdateLockedGroup(XkbSrvInfoPtr xkbi, XkbAction *pAction) ++{ ++ XkbGroupAction ga = pAction->group; ++ ++ if (ga.flags & XkbSA_GroupAbsolute) ++ xkbi->state.locked_group = XkbSAGroup(&ga); ++ else ++ xkbi->state.locked_group += XkbSAGroup(&ga); ++} ++ ++static XkbFilterPtr _XkbNextFreeFilter(XkbSrvInfoPtr xkbi); ++ ++static int ++_XkbFilterLockGroup(XkbSrvInfoPtr xkbi, + XkbFilterPtr filter, unsigned keycode, XkbAction *pAction) + { +- if (pAction && (pAction->type == XkbSA_LockGroup)) { +- if (pAction->group.flags & XkbSA_GroupAbsolute) +- xkbi->state.locked_group = XkbSAGroup(&pAction->group); +- else +- xkbi->state.locked_group += XkbSAGroup(&pAction->group); +- return 1; ++ int sendEvent = 1; ++ ++ if (!xkbSwitchGroupOnRelease()) { ++ xkbUpdateLockedGroup(xkbi, pAction); ++ return sendEvent; + } ++ ++ /* Delay switch till button release */ ++ if (filter->keycode == 0) { /* initial press */ ++ filter->keycode = keycode; ++ filter->active = 1; ++ filter->filterOthers = 0; /* for what? */ ++ filter->filter = _XkbFilterLockGroup; ++ ++ /* filter->priv = 0; */ ++ filter->upAction = *pAction; ++ ++ /* Ok, now we need to simulate the action which would go if this action didn't block it. ++ XkbSA_SetMods is the one: it is to set modifier' flag up. */ ++ { ++ XkbStateRec fake_state = xkbi->state; ++ XkbAction act; ++ ++ fake_state.mods = 0; ++ act = XkbGetKeyAction(xkbi, &fake_state, keycode); ++ ++ /* KLUDGE: XkbSA_SetMods only? */ ++ if (act.type == XkbSA_SetMods) { ++ XkbFilterPtr filter = _XkbNextFreeFilter(xkbi); ++ ++ sendEvent = _XkbFilterSetState(xkbi, filter, keycode, &act); ++ } ++ } ++ } ++ else { ++ /* do nothing if some button else is pressed */ ++ if (!pAction) ++ xkbUpdateLockedGroup(xkbi, &filter->upAction); ++ filter->active = 0; ++ } ++ ++ return sendEvent; ++} ++ ++static int ++_XkbFilterLockMods(XkbSrvInfoPtr xkbi, ++ XkbFilterPtr filter, unsigned keycode, XkbAction *pAction) ++{ + if (filter->keycode == 0) { /* initial press */ + filter->keycode = keycode; + filter->active = 1; + filter->filterOthers = 0; + filter->priv = xkbi->state.locked_mods & pAction->mods.mask; +- filter->filter = _XkbFilterLockState; ++ filter->filter = _XkbFilterLockMods; + filter->upAction = *pAction; + if (!(filter->upAction.mods.flags & XkbSA_LockNoLock)) + xkbi->state.locked_mods |= pAction->mods.mask; +@@ -1129,9 +1190,12 @@ XkbHandleActions(DeviceIntPtr dev, DeviceIntPtr kbd, DeviceEvent *event) + sendEvent = _XkbFilterLatchState(xkbi, filter, key, &act); + break; + case XkbSA_LockMods: ++ filter = _XkbNextFreeFilter(xkbi); ++ sendEvent = _XkbFilterLockMods(xkbi, filter, key, &act); ++ break; + case XkbSA_LockGroup: + filter = _XkbNextFreeFilter(xkbi); +- sendEvent = _XkbFilterLockState(xkbi, filter, key, &act); ++ sendEvent = _XkbFilterLockGroup(xkbi, filter, key, &act); + break; + case XkbSA_ISOLock: + filter = _XkbNextFreeFilter(xkbi); diff --git a/debian/patches/226_fall_back_to_autoconfiguration.patch b/debian/patches/226_fall_back_to_autoconfiguration.patch new file mode 100644 index 0000000..70fa7e5 --- /dev/null +++ b/debian/patches/226_fall_back_to_autoconfiguration.patch @@ -0,0 +1,78 @@ +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -161,6 +161,7 @@ + int xf86NumInputDrivers = 0; + int xf86NumScreens = 0; + int xf86NumGPUScreens = 0; ++Bool xf86AttemptedFallback = FALSE; + + const char *xf86VisualNames[] = { + "StaticGray", +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -481,20 +481,34 @@ + free(optionlist); + } + ++ Fallback: + /* Load all driver modules specified in the config file */ + /* If there aren't any specified in the config file, autoconfig them */ + /* FIXME: Does not handle multiple active screen sections, but I'm not + * sure if we really want to handle that case*/ + configured_device = xf86ConfigLayout.screens->screen->device; +- if ((!configured_device) || (!configured_device->driver)) { ++ if (xf86AttemptedFallback) { ++ configured_device->driver = NULL; ++ if (!autoConfigDevice(configured_device)) { ++ xf86Msg(X_ERROR, "Auto configuration on fallback failed\n"); ++ return; ++ } ++ } ++ else if ((!configured_device) || (!configured_device->driver)) { + if (!autoConfigDevice(configured_device)) { + xf86Msg(X_ERROR, "Automatic driver configuration failed\n"); + return; + } + } + if ((modulelist = xf86DriverlistFromConfig())) { +- xf86LoadModules(modulelist, NULL); +- free(modulelist); ++ if (!xf86LoadModules(modulelist, NULL) && !xf86AttemptedFallback) { ++ free(modulelist); ++ xf86AttemptedFallback = TRUE; ++ goto Fallback; ++ } ++ else { ++ free(modulelist); ++ } + } + + /* Load all input driver modules specified in the config file. */ +@@ -554,8 +568,15 @@ + else + xf86Info.dontVTSwitch = TRUE; + +- if (xf86BusConfig() == FALSE) +- return; ++ if (xf86BusConfig() == FALSE) { ++ if (!xf86AttemptedFallback) { ++ xf86AttemptedFallback = TRUE; ++ goto Fallback; ++ } ++ else { ++ return; ++ } ++ } + + xf86PostProbe(); + +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -89,6 +89,7 @@ + extern _X_EXPORT Bool xf86Resetting; + extern _X_EXPORT Bool xf86Initialising; + extern _X_EXPORT int xf86NumScreens; ++extern _X_EXPORT Bool xf86AttemptedFallback; + extern _X_EXPORT const char *xf86VisualNames[]; + extern _X_EXPORT int xf86Verbose; /* verbosity level */ + extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */ diff --git a/debian/patches/227_null_ptr_midispcur.patch b/debian/patches/227_null_ptr_midispcur.patch new file mode 100644 index 0000000..4b26c16 --- /dev/null +++ b/debian/patches/227_null_ptr_midispcur.patch @@ -0,0 +1,15 @@ +diff --git a/mi/midispcur.c b/mi/midispcur.c +index 24b9a70..266c7e0 100644 +--- a/mi/midispcur.c ++++ b/mi/midispcur.c +@@ -466,6 +466,10 @@ miDCRestoreUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen, + GCPtr pGC; + + pBuffer = miGetDCDevice(pDev, pScreen); ++ ++ if (!pBuffer) ++ return FALSE; ++ + pSave = pBuffer->pSave; + + pWin = pScreen->root; diff --git a/debian/patches/228_autobind_gpu.patch b/debian/patches/228_autobind_gpu.patch new file mode 100644 index 0000000..e950c9d --- /dev/null +++ b/debian/patches/228_autobind_gpu.patch @@ -0,0 +1,111 @@ +From 37d51acb3b6a38af1717bfaa7925043c35bfb447 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Fri, 17 Aug 2012 09:49:24 +1000 +Subject: [PATCH] autobind GPUs to the screen, (v3) + +this is racy and really not what we want for hotplug going forward, +but until DE support is in GNOME its probably for the best. + +v2: fix if config or slave config is NULL +v3: fix multi useful slaves +DO NOT UPSTREAM. +--- + hw/xfree86/common/xf86Init.c | 12 ++++++++++++ + hw/xfree86/common/xf86platformBus.c | 3 +++ + hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++ + 3 files changed, 47 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index d231ced..89629c1 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin) + return ret; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++static void ++xf86AutoConfigOutputDevices(void) ++{ ++ int i; ++ ++ for (i = 0; i < xf86NumGPUScreens; i++) ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); ++} ++ + static void + InstallSignalHandlers(void) + { +@@ -926,6 +936,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) + for (i = 0; i < xf86NumGPUScreens; i++) + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + ++ xf86AutoConfigOutputDevices(); ++ + xf86VGAarbiterWrapFunctions(); + if (sigio_blocked) + OsReleaseSIGIO(); +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 0525e39..82fef32 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -387,6 +387,8 @@ xf86platformProbeDev(DriverPtr drvp) + return foundScreen; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++ + int + xf86platformAddDevice(int index) + { +@@ -446,6 +448,7 @@ xf86platformAddDevice(int index) + + /* attach unbound to 0 protocol screen */ + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); + + return 0; + } +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 3011f13..34c1848 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -3323,3 +3323,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) + crtc->x = crtc->y = 0; + } + } ++ ++ ++void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master) ++{ ++ RRProviderPtr master_provider; ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master); ++ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ Bool unbound = FALSE; ++ ++ if (!config || !slave_config) ++ return; ++ ++ master_provider = config->randr_provider; ++ ++ if ((master->capabilities & RR_Capability_SinkOffload) && ++ pScrn->capabilities & RR_Capability_SourceOffload) { ++ /* source offload */ ++ ++ DetachUnboundGPU(pScrn->pScreen); ++ unbound = TRUE; ++ AttachOffloadGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->offload_sink = master_provider; ++ } ++ if ((master->capabilities & RR_Capability_SourceOutput) && ++ pScrn->capabilities & RR_Capability_SinkOutput) { ++ /* sink offload */ ++ if (!unbound) ++ DetachUnboundGPU(pScrn->pScreen); ++ AttachOutputGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->output_source = master_provider; ++ } ++} +-- +1.8.1 + diff --git a/debian/patches/232-xf86compatoutput-valgrind.patch b/debian/patches/232-xf86compatoutput-valgrind.patch new file mode 100644 index 0000000..8d59186 --- /dev/null +++ b/debian/patches/232-xf86compatoutput-valgrind.patch @@ -0,0 +1,13 @@ +diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h +index 802303f..6e80210 100644 +--- a/hw/xfree86/modes/xf86Crtc.h ++++ b/hw/xfree86/modes/xf86Crtc.h +@@ -730,6 +730,8 @@ static _X_INLINE xf86OutputPtr + xf86CompatOutput(ScrnInfoPtr pScrn) + { + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); ++ if (config->compat_output < 0) ++ return NULL; + + return config->output[config->compat_output]; + } diff --git a/debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch b/debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch new file mode 100644 index 0000000..a652174 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0000-glx-check-return.patch @@ -0,0 +1,184 @@ +From 61a292adf45405641de1c522a04c148e0a152acd Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Thu, 9 Oct 2014 15:17:17 +0200 +Subject: glx: check return from __glXGetAnswerBuffer + +This function can return NULL; make sure every caller tests for that. + +Reviewed-by: Adam Jackson +Signed-off-by: Keith Packard + +diff --git a/glx/indirect_dispatch.c b/glx/indirect_dispatch.c +index 329b2e6..f6cabef 100644 +--- a/glx/indirect_dispatch.c ++++ b/glx/indirect_dispatch.c +@@ -2464,6 +2464,9 @@ __glXDisp_AreTexturesResident(__GLXclientState * cl, GLbyte * pc) + GLboolean answerBuffer[200]; + GLboolean *residences = + __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); ++ ++ if (residences == NULL) ++ return BadAlloc; + retval = + glAreTexturesResident(n, (const GLuint *) (pc + 4), residences); + __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval); +@@ -2488,6 +2491,9 @@ __glXDisp_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc) + GLboolean answerBuffer[200]; + GLboolean *residences = + __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); ++ ++ if (residences == NULL) ++ return BadAlloc; + retval = + glAreTexturesResident(n, (const GLuint *) (pc + 4), residences); + __glXSendReply(cl->client, residences, n, 1, GL_TRUE, retval); +@@ -2593,6 +2599,9 @@ __glXDisp_GenTextures(__GLXclientState * cl, GLbyte * pc) + GLuint *textures = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (textures == NULL) ++ return BadAlloc; + glGenTextures(n, textures); + __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0); + error = Success; +@@ -2616,6 +2625,9 @@ __glXDisp_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc) + GLuint *textures = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (textures == NULL) ++ return BadAlloc; + glGenTextures(n, textures); + __glXSendReply(cl->client, textures, n, 4, GL_TRUE, 0); + error = Success; +@@ -3883,6 +3895,9 @@ __glXDisp_GenQueries(__GLXclientState * cl, GLbyte * pc) + GLuint *ids = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (ids == NULL) ++ return BadAlloc; + GenQueries(n, ids); + __glXSendReply(cl->client, ids, n, 4, GL_TRUE, 0); + error = Success; +@@ -4253,6 +4268,9 @@ __glXDisp_GenProgramsARB(__GLXclientState * cl, GLbyte * pc) + GLuint *programs = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (programs == NULL) ++ return BadAlloc; + GenProgramsARB(n, programs); + __glXSendReply(cl->client, programs, n, 4, GL_TRUE, 0); + error = Success; +@@ -4630,6 +4648,10 @@ __glXDisp_GenFramebuffers(__GLXclientState * cl, GLbyte * pc) + GLuint *framebuffers = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (framebuffers == NULL) ++ return BadAlloc; ++ + GenFramebuffers(n, framebuffers); + __glXSendReply(cl->client, framebuffers, n, 4, GL_TRUE, 0); + error = Success; +@@ -4655,6 +4677,9 @@ __glXDisp_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc) + GLuint *renderbuffers = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (renderbuffers == NULL) ++ return BadAlloc; + GenRenderbuffers(n, renderbuffers); + __glXSendReply(cl->client, renderbuffers, n, 4, GL_TRUE, 0); + error = Success; +diff --git a/glx/indirect_dispatch_swap.c b/glx/indirect_dispatch_swap.c +index 647d0c9..c0bb64d 100644 +--- a/glx/indirect_dispatch_swap.c ++++ b/glx/indirect_dispatch_swap.c +@@ -2731,6 +2731,9 @@ __glXDispSwap_AreTexturesResident(__GLXclientState * cl, GLbyte * pc) + GLboolean answerBuffer[200]; + GLboolean *residences = + __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); ++ ++ if (residences == NULL) ++ return BadAlloc; + retval = + glAreTexturesResident(n, + (const GLuint *) +@@ -2759,6 +2762,9 @@ __glXDispSwap_AreTexturesResidentEXT(__GLXclientState * cl, GLbyte * pc) + GLboolean answerBuffer[200]; + GLboolean *residences = + __glXGetAnswerBuffer(cl, n, answerBuffer, sizeof(answerBuffer), 1); ++ ++ if (residences == NULL) ++ return BadAlloc; + retval = + glAreTexturesResident(n, + (const GLuint *) +@@ -2878,6 +2884,9 @@ __glXDispSwap_GenTextures(__GLXclientState * cl, GLbyte * pc) + GLuint *textures = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (textures == NULL) ++ return BadAlloc; + glGenTextures(n, textures); + (void) bswap_32_array((uint32_t *) textures, n); + __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0); +@@ -2903,6 +2912,9 @@ __glXDispSwap_GenTexturesEXT(__GLXclientState * cl, GLbyte * pc) + GLuint *textures = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (textures == NULL) ++ return BadAlloc; + glGenTextures(n, textures); + (void) bswap_32_array((uint32_t *) textures, n); + __glXSendReplySwap(cl->client, textures, n, 4, GL_TRUE, 0); +@@ -4290,6 +4302,9 @@ __glXDispSwap_GenQueries(__GLXclientState * cl, GLbyte * pc) + GLuint *ids = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ if (ids == NULL) ++ return BadAlloc; ++ + GenQueries(n, ids); + (void) bswap_32_array((uint32_t *) ids, n); + __glXSendReplySwap(cl->client, ids, n, 4, GL_TRUE, 0); +@@ -4697,6 +4712,9 @@ __glXDispSwap_GenProgramsARB(__GLXclientState * cl, GLbyte * pc) + GLuint *programs = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ if (programs == NULL) ++ return BadAlloc; ++ + GenProgramsARB(n, programs); + (void) bswap_32_array((uint32_t *) programs, n); + __glXSendReplySwap(cl->client, programs, n, 4, GL_TRUE, 0); +@@ -5122,6 +5140,10 @@ __glXDispSwap_GenFramebuffers(__GLXclientState * cl, GLbyte * pc) + GLuint *framebuffers = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (framebuffers == NULL) ++ return BadAlloc; ++ + GenFramebuffers(n, framebuffers); + (void) bswap_32_array((uint32_t *) framebuffers, n); + __glXSendReplySwap(cl->client, framebuffers, n, 4, GL_TRUE, 0); +@@ -5149,6 +5171,10 @@ __glXDispSwap_GenRenderbuffers(__GLXclientState * cl, GLbyte * pc) + GLuint *renderbuffers = + __glXGetAnswerBuffer(cl, n * 4, answerBuffer, sizeof(answerBuffer), + 4); ++ ++ if (renderbuffers == NULL) ++ return BadAlloc; ++ + GenRenderbuffers(n, renderbuffers); + (void) bswap_32_array((uint32_t *) renderbuffers, n); + __glXSendReplySwap(cl->client, renderbuffers, n, 4, GL_TRUE, 0); +-- +cgit v0.10.2 + diff --git a/debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch b/debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch new file mode 100644 index 0000000..12025f6 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0000-regionsize-size_t.patch @@ -0,0 +1,31 @@ +From 995ecfb51d4ab8197e4591d5c0957e08a0bd6a59 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Thu, 30 Oct 2014 09:00:21 +1000 +Subject: include: change RegionSize() to take a size_t + +/usr/include/xorg/regionstr.h:130:36: warning: implicit conversion changes +signedness: 'int' to 'unsigned long' [-Wsign-conversion] + return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec))); + ^ ~ + +Really only just pushes the problem to the caller, but maybe that motivates +someone to fix it. + +Signed-off-by: Peter Hutterer + +diff --git a/include/regionstr.h b/include/regionstr.h +index 4a0725d..515e93f 100644 +--- a/include/regionstr.h ++++ b/include/regionstr.h +@@ -125,7 +125,7 @@ RegionEnd(RegionPtr reg) + } + + static inline size_t +-RegionSizeof(int n) ++RegionSizeof(size_t n) + { + return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec))); + } +-- +cgit v0.10.2 + diff --git a/debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch b/debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch new file mode 100644 index 0000000..b5fbb7d --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch @@ -0,0 +1,40 @@ +From d2f5bd2c3e3cbe4778749d457550355d344ca62a Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Fri, 17 Jan 2014 18:54:03 -0800 +Subject: [PATCH 01/33] unchecked malloc may allow unauthed client to crash + Xserver [CVE-2014-8091] + +authdes_ezdecode() calls malloc() using a length provided by the +connection handshake sent by a newly connected client in order +to authenticate to the server, so should be treated as untrusted. + +It didn't check if malloc() failed before writing to the newly +allocated buffer, so could lead to a server crash if the server +fails to allocate memory (up to UINT16_MAX bytes, since the len +field is a CARD16 in the X protocol). + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + os/rpcauth.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/os/rpcauth.c b/os/rpcauth.c +index d60ea35..413cc61 100644 +--- a/os/rpcauth.c ++++ b/os/rpcauth.c +@@ -66,6 +66,10 @@ authdes_ezdecode(const char *inmsg, int len) + SVCXPRT xprt; + + temp_inmsg = malloc(len); ++ if (temp_inmsg == NULL) { ++ why = AUTH_FAILED; /* generic error, since there is no AUTH_BADALLOC */ ++ return NULL; ++ } + memmove(temp_inmsg, inmsg, len); + + memset((char *) &msg, 0, sizeof(msg)); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch b/debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch new file mode 100644 index 0000000..085109a --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch @@ -0,0 +1,34 @@ +From 7e17b41d2907afd82d668f25694e1da12e34895e Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Wed, 22 Jan 2014 21:11:16 -0800 +Subject: [PATCH 02/33] dix: integer overflow in ProcPutImage() [CVE-2014-8092 + 1/4] + +ProcPutImage() calculates a length field from a width, left pad and depth +specified by the client (if the specified format is XYPixmap). + +The calculations for the total amount of memory the server needs for the +pixmap can overflow a 32-bit number, causing out-of-bounds memory writes +on 32-bit systems (since the length is stored in a long int variable). + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + dix/dispatch.c | 3 +++ + 1 file changed, 3 insertions(+) + +Index: xorg-server-1.15.1/dix/dispatch.c +=================================================================== +--- xorg-server-1.15.1.orig/dix/dispatch.c 2014-12-04 11:52:11.007847226 -0500 ++++ xorg-server-1.15.1/dix/dispatch.c 2014-12-04 11:52:10.975847036 -0500 +@@ -1957,6 +1957,9 @@ + tmpImage = (char *) &stuff[1]; + lengthProto = length; + ++ if (lengthProto >= (INT32_MAX / stuff->height)) ++ return BadLength; ++ + if ((bytes_to_int32(lengthProto * stuff->height) + + bytes_to_int32(sizeof(xPutImageReq))) != client->req_len) + return BadLength; diff --git a/debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch b/debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch new file mode 100644 index 0000000..d5f2d75 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch @@ -0,0 +1,47 @@ +From 2f605f86acec5ce853f764c41f8c737154a274f5 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Mon, 6 Jan 2014 23:30:14 -0800 +Subject: [PATCH 03/33] dix: integer overflow in GetHosts() [CVE-2014-8092 + 2/4] + +GetHosts() iterates over all the hosts it has in memory, and copies +them to a buffer. The buffer length is calculated by iterating over +all the hosts and adding up all of their combined length. There is a +potential integer overflow, if there are lots and lots of hosts (with +a combined length of > ~4 gig). This should be possible by repeatedly +calling ProcChangeHosts() on 64bit machines with enough memory. + +This patch caps the list at 1mb, because multi-megabyte hostname +lists for X access control are insane. + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + os/access.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: xorg-server-1.16.0/os/access.c +=================================================================== +--- xorg-server-1.16.0.orig/os/access.c 2014-12-04 11:11:43.752542885 -0500 ++++ xorg-server-1.16.0/os/access.c 2014-12-04 11:11:43.748542843 -0500 +@@ -1323,6 +1323,10 @@ + for (host = validhosts; host; host = host->next) { + nHosts++; + n += pad_to_int32(host->len) + sizeof(xHostEntry); ++ /* Could check for INT_MAX, but in reality having more than 1mb of ++ hostnames in the access list is ridiculous */ ++ if (n >= 1048576) ++ break; + } + if (n) { + *data = ptr = malloc(n); +@@ -1331,6 +1335,8 @@ + } + for (host = validhosts; host; host = host->next) { + len = host->len; ++ if ((ptr + sizeof(xHostEntry) + len) > (data + n)) ++ break; + ((xHostEntry *) ptr)->family = host->family; + ((xHostEntry *) ptr)->length = len; + ptr += sizeof(xHostEntry); diff --git a/debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch b/debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch new file mode 100644 index 0000000..552bd8b --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch @@ -0,0 +1,125 @@ +From d7b2f5c06259c7e6ba037909adec4c2a5a8b15ec Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Wed, 22 Jan 2014 22:37:15 -0800 +Subject: [PATCH 04/33] dix: integer overflow in RegionSizeof() [CVE-2014-8092 + 3/4] + +RegionSizeof contains several integer overflows if a large length +value is passed in. Once we fix it to return 0 on overflow, we +also have to fix the callers to handle this error condition + +v2: Fixed limit calculation in RegionSizeof as pointed out by jcristau. + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +Reviewed-by: Julien Cristau +--- + dix/region.c | 20 +++++++++++++------- + include/regionstr.h | 10 +++++++--- + 2 files changed, 20 insertions(+), 10 deletions(-) + +Index: xorg-server-1.15.1/dix/region.c +=================================================================== +--- xorg-server-1.15.1.orig/dix/region.c 2014-12-05 08:24:42.034665485 -0500 ++++ xorg-server-1.15.1/dix/region.c 2014-12-05 08:24:42.030665458 -0500 +@@ -169,7 +169,6 @@ + ((r1)->y1 <= (r2)->y1) && \ + ((r1)->y2 >= (r2)->y2) ) + +-#define xallocData(n) malloc(RegionSizeof(n)) + #define xfreeData(reg) if ((reg)->data && (reg)->data->size) free((reg)->data) + + #define RECTALLOC_BAIL(pReg,n,bail) \ +@@ -205,8 +204,9 @@ + #define DOWNSIZE(reg,numRects) \ + if (((numRects) < ((reg)->data->size >> 1)) && ((reg)->data->size > 50)) \ + { \ +- RegDataPtr NewData; \ +- NewData = (RegDataPtr)realloc((reg)->data, RegionSizeof(numRects)); \ ++ size_t NewSize = RegionSizeof(numRects); \ ++ RegDataPtr NewData = \ ++ (NewSize > 0) ? realloc((reg)->data, NewSize) : NULL ; \ + if (NewData) \ + { \ + NewData->size = (numRects); \ +@@ -345,17 +345,20 @@ + RegionRectAlloc(RegionPtr pRgn, int n) + { + RegDataPtr data; ++ size_t rgnSize; + + if (!pRgn->data) { + n++; +- pRgn->data = xallocData(n); ++ rgnSize = RegionSizeof(n); ++ pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL; + if (!pRgn->data) + return RegionBreak(pRgn); + pRgn->data->numRects = 1; + *RegionBoxptr(pRgn) = pRgn->extents; + } + else if (!pRgn->data->size) { +- pRgn->data = xallocData(n); ++ rgnSize = RegionSizeof(n); ++ pRgn->data = (rgnSize > 0) ? malloc(rgnSize) : NULL; + if (!pRgn->data) + return RegionBreak(pRgn); + pRgn->data->numRects = 0; +@@ -367,7 +370,8 @@ + n = 250; + } + n += pRgn->data->numRects; +- data = (RegDataPtr) realloc(pRgn->data, RegionSizeof(n)); ++ rgnSize = RegionSizeof(n); ++ data = (rgnSize > 0) ? realloc(pRgn->data, rgnSize) : NULL; + if (!data) + return RegionBreak(pRgn); + pRgn->data = data; +@@ -1312,6 +1316,7 @@ + { + + RegionPtr pRgn; ++ size_t rgnSize; + RegDataPtr pData; + BoxPtr pBox; + int i; +@@ -1338,7 +1343,8 @@ + } + return pRgn; + } +- pData = xallocData(nrects); ++ rgnSize = RegionSizeof(nrects); ++ pData = (rgnSize > 0) ? malloc(rgnSize) : NULL; + if (!pData) { + RegionBreak(pRgn); + return pRgn; +Index: xorg-server-1.15.1/include/regionstr.h +=================================================================== +--- xorg-server-1.15.1.orig/include/regionstr.h 2014-12-05 08:24:42.034665485 -0500 ++++ xorg-server-1.15.1/include/regionstr.h 2014-12-05 08:24:42.030665458 -0500 +@@ -127,7 +127,10 @@ + static inline size_t + RegionSizeof(size_t n) + { +- return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec))); ++ if (n < ((INT_MAX - sizeof(RegDataRec)) / sizeof(BoxRec))) ++ return (sizeof(RegDataRec) + ((n) * sizeof(BoxRec))); ++ else ++ return 0; + } + + static inline void +@@ -138,9 +141,10 @@ + (_pReg)->data = (RegDataPtr) NULL; + } + else { ++ size_t rgnSize; + (_pReg)->extents = RegionEmptyBox; +- if (((_size) > 1) && ((_pReg)->data = +- (RegDataPtr) malloc(RegionSizeof(_size)))) { ++ if (((_size) > 1) && ((rgnSize = RegionSizeof(_size)) > 0) && ++ (((_pReg)->data = malloc(rgnSize)) != NULL)) { + (_pReg)->data->size = (_size); + (_pReg)->data->numRects = 0; + } diff --git a/debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch b/debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch new file mode 100644 index 0000000..1009488 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch @@ -0,0 +1,34 @@ +From 7d4f361a216718fc7333ab805dafdb9e5c85c180 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Wed, 22 Jan 2014 23:44:46 -0800 +Subject: [PATCH 05/33] dix: integer overflow in REQUEST_FIXED_SIZE() + [CVE-2014-8092 4/4] + +Force use of 64-bit integers when evaluating data provided by clients +in 32-bit fields which can overflow when added or multiplied during +checks. + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + include/dix.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/include/dix.h b/include/dix.h +index 991a3ce..e0c6ed8 100644 +--- a/include/dix.h ++++ b/include/dix.h +@@ -76,7 +76,8 @@ SOFTWARE. + + #define REQUEST_FIXED_SIZE(req, n)\ + if (((sizeof(req) >> 2) > client->req_len) || \ +- (((sizeof(req) + (n) + 3) >> 2) != client->req_len)) \ ++ ((n >> 2) >= client->req_len) || \ ++ ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \ + return(BadLength) + + #define LEGAL_NEW_RESOURCE(id,client)\ +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch b/debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch new file mode 100644 index 0000000..430e956 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch @@ -0,0 +1,35 @@ +From f07eb544bbcfd9d4c64f036b654f4567f1fd2b9c Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Wed, 22 Jan 2014 23:40:18 -0800 +Subject: [PATCH 06/33] dri2: integer overflow in ProcDRI2GetBuffers() + [CVE-2014-8094] + +ProcDRI2GetBuffers() tries to validate a length field (count). +There is an integer overflow in the validation. This can cause +out of bound reads and memory corruption later on. + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +Reviewed-by: Julien Cristau +--- + hw/xfree86/dri2/dri2ext.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c +index ffd66fa..221ec53 100644 +--- a/hw/xfree86/dri2/dri2ext.c ++++ b/hw/xfree86/dri2/dri2ext.c +@@ -270,6 +270,9 @@ ProcDRI2GetBuffers(ClientPtr client) + unsigned int *attachments; + + REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4); ++ if (stuff->count > (INT_MAX / 4)) ++ return BadLength; ++ + if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess, + &pDrawable, &status)) + return status; +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch b/debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch new file mode 100644 index 0000000..0167ec0 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch @@ -0,0 +1,73 @@ +From 0d50f11aa10fe64c74ab7b3c572cc2f3ff583020 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Wed, 22 Jan 2014 23:12:04 -0800 +Subject: [PATCH 07/33] dbe: unvalidated lengths in DbeSwapBuffers calls + [CVE-2014-8097] + +ProcDbeSwapBuffers() has a 32bit (n) length value that it uses to read +from a buffer. The length is never validated, which can lead to out of +bound reads, and possibly returning the data read from out of bounds to +the misbehaving client via an X Error packet. + +SProcDbeSwapBuffers() swaps data (for correct endianness) before +handing it off to the real proc. While doing the swapping, the +length field is not validated, which can cause memory corruption. + +v2: reorder checks to avoid compilers optimizing out checks for overflow +that happen after we'd already have done the overflowing multiplications. + +Reported-by: Ilja Van Sprundel +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + dbe/dbe.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/dbe/dbe.c b/dbe/dbe.c +index 527588c..df2ad5c 100644 +--- a/dbe/dbe.c ++++ b/dbe/dbe.c +@@ -450,18 +450,20 @@ ProcDbeSwapBuffers(ClientPtr client) + DbeSwapInfoPtr swapInfo; + xDbeSwapInfo *dbeSwapInfo; + int error; +- register int i, j; +- int nStuff; ++ unsigned int i, j; ++ unsigned int nStuff; + + REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); + nStuff = stuff->n; /* use local variable for performance. */ + + if (nStuff == 0) { ++ REQUEST_SIZE_MATCH(xDbeSwapBuffersReq); + return Success; + } + + if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec)) + return BadAlloc; ++ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, nStuff * sizeof(xDbeSwapInfo)); + + /* Get to the swap info appended to the end of the request. */ + dbeSwapInfo = (xDbeSwapInfo *) &stuff[1]; +@@ -914,13 +916,16 @@ static int + SProcDbeSwapBuffers(ClientPtr client) + { + REQUEST(xDbeSwapBuffersReq); +- register int i; ++ unsigned int i; + xDbeSwapInfo *pSwapInfo; + + swaps(&stuff->length); + REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); + + swapl(&stuff->n); ++ if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec)) ++ return BadAlloc; ++ REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo)); + + if (stuff->n != 0) { + pSwapInfo = (xDbeSwapInfo *) stuff + 1; +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch b/debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch new file mode 100644 index 0000000..421f070 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch @@ -0,0 +1,551 @@ +From 54fa1f815507cd27280f661be7a64f2f2e6c579e Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 10:54:41 -0800 +Subject: [PATCH 08/33] Xi: unvalidated lengths in Xinput extension + [CVE-2014-8095] + +Multiple functions in the Xinput extension handling of requests from +clients failed to check that the length of the request sent by the +client was large enough to perform all the required operations and +thus could read or write to memory outside the bounds of the request +buffer. + +This commit includes the creation of a new REQUEST_AT_LEAST_EXTRA_SIZE +macro in include/dix.h for the common case of needing to ensure a +request is large enough to include both the request itself and a +minimum amount of extra data following the request header. + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + Xi/chgdctl.c | 8 ++++++-- + Xi/chgfctl.c | 2 ++ + Xi/sendexev.c | 3 +++ + Xi/xiallowev.c | 2 ++ + Xi/xichangecursor.c | 2 +- + Xi/xichangehierarchy.c | 35 ++++++++++++++++++++++++++++++++--- + Xi/xigetclientpointer.c | 1 + + Xi/xigrabdev.c | 9 ++++++++- + Xi/xipassivegrab.c | 12 ++++++++++-- + Xi/xiproperty.c | 14 ++++++-------- + Xi/xiquerydevice.c | 1 + + Xi/xiquerypointer.c | 2 ++ + Xi/xiselectev.c | 8 ++++++++ + Xi/xisetclientpointer.c | 3 ++- + Xi/xisetdevfocus.c | 4 ++++ + Xi/xiwarppointer.c | 2 ++ + include/dix.h | 4 ++++ + 17 files changed, 94 insertions(+), 18 deletions(-) + +diff --git a/Xi/chgdctl.c b/Xi/chgdctl.c +index d078aa2..b3ee867 100644 +--- a/Xi/chgdctl.c ++++ b/Xi/chgdctl.c +@@ -78,7 +78,7 @@ SProcXChangeDeviceControl(ClientPtr client) + + REQUEST(xChangeDeviceControlReq); + swaps(&stuff->length); +- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); ++ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl)); + swaps(&stuff->control); + ctl = (xDeviceCtl *) &stuff[1]; + swaps(&ctl->control); +@@ -115,7 +115,7 @@ ProcXChangeDeviceControl(ClientPtr client) + xDeviceEnableCtl *e; + + REQUEST(xChangeDeviceControlReq); +- REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq); ++ REQUEST_AT_LEAST_EXTRA_SIZE(xChangeDeviceControlReq, sizeof(xDeviceCtl)); + + len = stuff->length - bytes_to_int32(sizeof(xChangeDeviceControlReq)); + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixManageAccess); +@@ -192,6 +192,10 @@ ProcXChangeDeviceControl(ClientPtr client) + break; + case DEVICE_ENABLE: + e = (xDeviceEnableCtl *) &stuff[1]; ++ if ((len != bytes_to_int32(sizeof(xDeviceEnableCtl)))) { ++ ret = BadLength; ++ goto out; ++ } + + if (IsXTestDevice(dev, NULL)) + status = !Success; +diff --git a/Xi/chgfctl.c b/Xi/chgfctl.c +index 6dcf60c..224c2ba 100644 +--- a/Xi/chgfctl.c ++++ b/Xi/chgfctl.c +@@ -467,6 +467,8 @@ ProcXChangeFeedbackControl(ClientPtr client) + xStringFeedbackCtl *f = ((xStringFeedbackCtl *) &stuff[1]); + + if (client->swapped) { ++ if (len < bytes_to_int32(sizeof(xStringFeedbackCtl))) ++ return BadLength; + swaps(&f->num_keysyms); + } + if (len != +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 3c21386..183f88d 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -135,6 +135,9 @@ ProcXSendExtensionEvent(ClientPtr client) + if (ret != Success) + return ret; + ++ if (stuff->num_events == 0) ++ return ret; ++ + /* The client's event type must be one defined by an extension. */ + + first = ((xEvent *) &stuff[1]); +diff --git a/Xi/xiallowev.c b/Xi/xiallowev.c +index ebef233..ca263ef 100644 +--- a/Xi/xiallowev.c ++++ b/Xi/xiallowev.c +@@ -48,6 +48,7 @@ int + SProcXIAllowEvents(ClientPtr client) + { + REQUEST(xXIAllowEventsReq); ++ REQUEST_AT_LEAST_SIZE(xXIAllowEventsReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +@@ -55,6 +56,7 @@ SProcXIAllowEvents(ClientPtr client) + if (stuff->length > 3) { + xXI2_2AllowEventsReq *req_xi22 = (xXI2_2AllowEventsReq *) stuff; + ++ REQUEST_AT_LEAST_SIZE(xXI2_2AllowEventsReq); + swapl(&req_xi22->touchid); + swapl(&req_xi22->grab_window); + } +diff --git a/Xi/xichangecursor.c b/Xi/xichangecursor.c +index 7a1bb7a..8e6255b 100644 +--- a/Xi/xichangecursor.c ++++ b/Xi/xichangecursor.c +@@ -57,11 +57,11 @@ int + SProcXIChangeCursor(ClientPtr client) + { + REQUEST(xXIChangeCursorReq); ++ REQUEST_SIZE_MATCH(xXIChangeCursorReq); + swaps(&stuff->length); + swapl(&stuff->win); + swapl(&stuff->cursor); + swaps(&stuff->deviceid); +- REQUEST_SIZE_MATCH(xXIChangeCursorReq); + return (ProcXIChangeCursor(client)); + } + +diff --git a/Xi/xichangehierarchy.c b/Xi/xichangehierarchy.c +index 9e36354..2732445 100644 +--- a/Xi/xichangehierarchy.c ++++ b/Xi/xichangehierarchy.c +@@ -411,7 +411,7 @@ int + ProcXIChangeHierarchy(ClientPtr client) + { + xXIAnyHierarchyChangeInfo *any; +- int required_len = sizeof(xXIChangeHierarchyReq); ++ size_t len; /* length of data remaining in request */ + int rc = Success; + int flags[MAXDEVICES] = { 0 }; + +@@ -421,21 +421,46 @@ ProcXIChangeHierarchy(ClientPtr client) + if (!stuff->num_changes) + return rc; + ++ if (stuff->length > (INT_MAX >> 2)) ++ return BadAlloc; ++ len = (stuff->length << 2) - sizeof(xXIAnyHierarchyChangeInfo); ++ + any = (xXIAnyHierarchyChangeInfo *) &stuff[1]; + while (stuff->num_changes--) { ++ if (len < sizeof(xXIAnyHierarchyChangeInfo)) { ++ rc = BadLength; ++ goto unwind; ++ } ++ + SWAPIF(swaps(&any->type)); + SWAPIF(swaps(&any->length)); + +- required_len += any->length; +- if ((stuff->length * 4) < required_len) ++ if ((any->length > (INT_MAX >> 2)) || (len < (any->length << 2))) + return BadLength; + ++#define CHANGE_SIZE_MATCH(type) \ ++ do { \ ++ if ((len < sizeof(type)) || (any->length != (sizeof(type) >> 2))) { \ ++ rc = BadLength; \ ++ goto unwind; \ ++ } \ ++ } while(0) ++ + switch (any->type) { + case XIAddMaster: + { + xXIAddMasterInfo *c = (xXIAddMasterInfo *) any; + ++ /* Variable length, due to appended name string */ ++ if (len < sizeof(xXIAddMasterInfo)) { ++ rc = BadLength; ++ goto unwind; ++ } + SWAPIF(swaps(&c->name_len)); ++ if (c->name_len > (len - sizeof(xXIAddMasterInfo))) { ++ rc = BadLength; ++ goto unwind; ++ } + + rc = add_master(client, c, flags); + if (rc != Success) +@@ -446,6 +471,7 @@ ProcXIChangeHierarchy(ClientPtr client) + { + xXIRemoveMasterInfo *r = (xXIRemoveMasterInfo *) any; + ++ CHANGE_SIZE_MATCH(xXIRemoveMasterInfo); + rc = remove_master(client, r, flags); + if (rc != Success) + goto unwind; +@@ -455,6 +481,7 @@ ProcXIChangeHierarchy(ClientPtr client) + { + xXIDetachSlaveInfo *c = (xXIDetachSlaveInfo *) any; + ++ CHANGE_SIZE_MATCH(xXIDetachSlaveInfo); + rc = detach_slave(client, c, flags); + if (rc != Success) + goto unwind; +@@ -464,6 +491,7 @@ ProcXIChangeHierarchy(ClientPtr client) + { + xXIAttachSlaveInfo *c = (xXIAttachSlaveInfo *) any; + ++ CHANGE_SIZE_MATCH(xXIAttachSlaveInfo); + rc = attach_slave(client, c, flags); + if (rc != Success) + goto unwind; +@@ -471,6 +499,7 @@ ProcXIChangeHierarchy(ClientPtr client) + break; + } + ++ len -= any->length * 4; + any = (xXIAnyHierarchyChangeInfo *) ((char *) any + any->length * 4); + } + +diff --git a/Xi/xigetclientpointer.c b/Xi/xigetclientpointer.c +index 3c90d58..306dd39 100644 +--- a/Xi/xigetclientpointer.c ++++ b/Xi/xigetclientpointer.c +@@ -50,6 +50,7 @@ int + SProcXIGetClientPointer(ClientPtr client) + { + REQUEST(xXIGetClientPointerReq); ++ REQUEST_SIZE_MATCH(xXIGetClientPointerReq); + + swaps(&stuff->length); + swapl(&stuff->win); +diff --git a/Xi/xigrabdev.c b/Xi/xigrabdev.c +index 63d95bc..e2a2ae3 100644 +--- a/Xi/xigrabdev.c ++++ b/Xi/xigrabdev.c +@@ -47,6 +47,11 @@ int + SProcXIGrabDevice(ClientPtr client) + { + REQUEST(xXIGrabDeviceReq); ++ /* ++ * Check here for at least the length of the struct we swap, then ++ * let ProcXIGrabDevice check the full size after we swap mask_len. ++ */ ++ REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +@@ -71,7 +76,7 @@ ProcXIGrabDevice(ClientPtr client) + unsigned int pointer_mode; + + REQUEST(xXIGrabDeviceReq); +- REQUEST_AT_LEAST_SIZE(xXIGrabDeviceReq); ++ REQUEST_FIXED_SIZE(xXIGrabDeviceReq, ((size_t) stuff->mask_len) * 4); + + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGrabAccess); + if (ret != Success) +@@ -131,6 +136,7 @@ int + SProcXIUngrabDevice(ClientPtr client) + { + REQUEST(xXIUngrabDeviceReq); ++ REQUEST_SIZE_MATCH(xXIUngrabDeviceReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +@@ -148,6 +154,7 @@ ProcXIUngrabDevice(ClientPtr client) + TimeStamp time; + + REQUEST(xXIUngrabDeviceReq); ++ REQUEST_SIZE_MATCH(xXIUngrabDeviceReq); + + ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess); + if (ret != Success) +diff --git a/Xi/xipassivegrab.c b/Xi/xipassivegrab.c +index 700622d..9241ffd 100644 +--- a/Xi/xipassivegrab.c ++++ b/Xi/xipassivegrab.c +@@ -53,6 +53,7 @@ SProcXIPassiveGrabDevice(ClientPtr client) + uint32_t *mods; + + REQUEST(xXIPassiveGrabDeviceReq); ++ REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +@@ -63,6 +64,8 @@ SProcXIPassiveGrabDevice(ClientPtr client) + swaps(&stuff->mask_len); + swaps(&stuff->num_modifiers); + ++ REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq, ++ ((uint32_t) stuff->mask_len + stuff->num_modifiers) *4); + mods = (uint32_t *) &stuff[1] + stuff->mask_len; + + for (i = 0; i < stuff->num_modifiers; i++, mods++) { +@@ -92,7 +95,8 @@ ProcXIPassiveGrabDevice(ClientPtr client) + int mask_len; + + REQUEST(xXIPassiveGrabDeviceReq); +- REQUEST_AT_LEAST_SIZE(xXIPassiveGrabDeviceReq); ++ REQUEST_FIXED_SIZE(xXIPassiveGrabDeviceReq, ++ ((uint32_t) stuff->mask_len + stuff->num_modifiers) * 4); + + if (stuff->deviceid == XIAllDevices) + dev = inputInfo.all_devices; +@@ -252,6 +256,7 @@ SProcXIPassiveUngrabDevice(ClientPtr client) + uint32_t *modifiers; + + REQUEST(xXIPassiveUngrabDeviceReq); ++ REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq); + + swaps(&stuff->length); + swapl(&stuff->grab_window); +@@ -259,6 +264,8 @@ SProcXIPassiveUngrabDevice(ClientPtr client) + swapl(&stuff->detail); + swaps(&stuff->num_modifiers); + ++ REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq, ++ ((uint32_t) stuff->num_modifiers) << 2); + modifiers = (uint32_t *) &stuff[1]; + + for (i = 0; i < stuff->num_modifiers; i++, modifiers++) +@@ -277,7 +284,8 @@ ProcXIPassiveUngrabDevice(ClientPtr client) + int i, rc; + + REQUEST(xXIPassiveUngrabDeviceReq); +- REQUEST_AT_LEAST_SIZE(xXIPassiveUngrabDeviceReq); ++ REQUEST_FIXED_SIZE(xXIPassiveUngrabDeviceReq, ++ ((uint32_t) stuff->num_modifiers) << 2); + + if (stuff->deviceid == XIAllDevices) + dev = inputInfo.all_devices; +diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c +index 463607d..8e8e4b0 100644 +--- a/Xi/xiproperty.c ++++ b/Xi/xiproperty.c +@@ -1013,10 +1013,9 @@ int + SProcXListDeviceProperties(ClientPtr client) + { + REQUEST(xListDevicePropertiesReq); ++ REQUEST_SIZE_MATCH(xListDevicePropertiesReq); + + swaps(&stuff->length); +- +- REQUEST_SIZE_MATCH(xListDevicePropertiesReq); + return (ProcXListDeviceProperties(client)); + } + +@@ -1037,10 +1036,10 @@ int + SProcXDeleteDeviceProperty(ClientPtr client) + { + REQUEST(xDeleteDevicePropertyReq); ++ REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq); + + swaps(&stuff->length); + swapl(&stuff->property); +- REQUEST_SIZE_MATCH(xDeleteDevicePropertyReq); + return (ProcXDeleteDeviceProperty(client)); + } + +@@ -1048,13 +1047,13 @@ int + SProcXGetDeviceProperty(ClientPtr client) + { + REQUEST(xGetDevicePropertyReq); ++ REQUEST_SIZE_MATCH(xGetDevicePropertyReq); + + swaps(&stuff->length); + swapl(&stuff->property); + swapl(&stuff->type); + swapl(&stuff->longOffset); + swapl(&stuff->longLength); +- REQUEST_SIZE_MATCH(xGetDevicePropertyReq); + return (ProcXGetDeviceProperty(client)); + } + +@@ -1253,11 +1252,10 @@ int + SProcXIListProperties(ClientPtr client) + { + REQUEST(xXIListPropertiesReq); ++ REQUEST_SIZE_MATCH(xXIListPropertiesReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +- +- REQUEST_SIZE_MATCH(xXIListPropertiesReq); + return (ProcXIListProperties(client)); + } + +@@ -1279,11 +1277,11 @@ int + SProcXIDeleteProperty(ClientPtr client) + { + REQUEST(xXIDeletePropertyReq); ++ REQUEST_SIZE_MATCH(xXIDeletePropertyReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); + swapl(&stuff->property); +- REQUEST_SIZE_MATCH(xXIDeletePropertyReq); + return (ProcXIDeleteProperty(client)); + } + +@@ -1291,6 +1289,7 @@ int + SProcXIGetProperty(ClientPtr client) + { + REQUEST(xXIGetPropertyReq); ++ REQUEST_SIZE_MATCH(xXIGetPropertyReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +@@ -1298,7 +1297,6 @@ SProcXIGetProperty(ClientPtr client) + swapl(&stuff->type); + swapl(&stuff->offset); + swapl(&stuff->len); +- REQUEST_SIZE_MATCH(xXIGetPropertyReq); + return (ProcXIGetProperty(client)); + } + +diff --git a/Xi/xiquerydevice.c b/Xi/xiquerydevice.c +index 4e544f0..67a9a4f 100644 +--- a/Xi/xiquerydevice.c ++++ b/Xi/xiquerydevice.c +@@ -54,6 +54,7 @@ int + SProcXIQueryDevice(ClientPtr client) + { + REQUEST(xXIQueryDeviceReq); ++ REQUEST_SIZE_MATCH(xXIQueryDeviceReq); + + swaps(&stuff->length); + swaps(&stuff->deviceid); +diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c +index e9bdd42..7ec0c85 100644 +--- a/Xi/xiquerypointer.c ++++ b/Xi/xiquerypointer.c +@@ -63,6 +63,8 @@ int + SProcXIQueryPointer(ClientPtr client) + { + REQUEST(xXIQueryPointerReq); ++ REQUEST_SIZE_MATCH(xXIQueryPointerReq); ++ + swaps(&stuff->length); + swaps(&stuff->deviceid); + swapl(&stuff->win); +diff --git a/Xi/xiselectev.c b/Xi/xiselectev.c +index 45a996e..168579f 100644 +--- a/Xi/xiselectev.c ++++ b/Xi/xiselectev.c +@@ -114,6 +114,7 @@ int + SProcXISelectEvents(ClientPtr client) + { + int i; ++ int len; + xXIEventMask *evmask; + + REQUEST(xXISelectEventsReq); +@@ -122,10 +123,17 @@ SProcXISelectEvents(ClientPtr client) + swapl(&stuff->win); + swaps(&stuff->num_masks); + ++ len = stuff->length - bytes_to_int32(sizeof(xXISelectEventsReq)); + evmask = (xXIEventMask *) &stuff[1]; + for (i = 0; i < stuff->num_masks; i++) { ++ if (len < bytes_to_int32(sizeof(xXIEventMask))) ++ return BadLength; ++ len -= bytes_to_int32(sizeof(xXIEventMask)); + swaps(&evmask->deviceid); + swaps(&evmask->mask_len); ++ if (len < evmask->mask_len) ++ return BadLength; ++ len -= evmask->mask_len; + evmask = + (xXIEventMask *) (((char *) &evmask[1]) + evmask->mask_len * 4); + } +diff --git a/Xi/xisetclientpointer.c b/Xi/xisetclientpointer.c +index 38ff51e..24d4a53 100644 +--- a/Xi/xisetclientpointer.c ++++ b/Xi/xisetclientpointer.c +@@ -51,10 +51,11 @@ int + SProcXISetClientPointer(ClientPtr client) + { + REQUEST(xXISetClientPointerReq); ++ REQUEST_SIZE_MATCH(xXISetClientPointerReq); ++ + swaps(&stuff->length); + swapl(&stuff->win); + swaps(&stuff->deviceid); +- REQUEST_SIZE_MATCH(xXISetClientPointerReq); + return (ProcXISetClientPointer(client)); + } + +diff --git a/Xi/xisetdevfocus.c b/Xi/xisetdevfocus.c +index 372ec24..96a9a16 100644 +--- a/Xi/xisetdevfocus.c ++++ b/Xi/xisetdevfocus.c +@@ -44,6 +44,8 @@ int + SProcXISetFocus(ClientPtr client) + { + REQUEST(xXISetFocusReq); ++ REQUEST_AT_LEAST_SIZE(xXISetFocusReq); ++ + swaps(&stuff->length); + swaps(&stuff->deviceid); + swapl(&stuff->focus); +@@ -56,6 +58,8 @@ int + SProcXIGetFocus(ClientPtr client) + { + REQUEST(xXIGetFocusReq); ++ REQUEST_AT_LEAST_SIZE(xXIGetFocusReq); ++ + swaps(&stuff->length); + swaps(&stuff->deviceid); + +diff --git a/Xi/xiwarppointer.c b/Xi/xiwarppointer.c +index 3f051f7..780758a 100644 +--- a/Xi/xiwarppointer.c ++++ b/Xi/xiwarppointer.c +@@ -56,6 +56,8 @@ int + SProcXIWarpPointer(ClientPtr client) + { + REQUEST(xXIWarpPointerReq); ++ REQUEST_SIZE_MATCH(xXIWarpPointerReq); ++ + swaps(&stuff->length); + swapl(&stuff->src_win); + swapl(&stuff->dst_win); +diff --git a/include/dix.h b/include/dix.h +index e0c6ed8..21176a8 100644 +--- a/include/dix.h ++++ b/include/dix.h +@@ -74,6 +74,10 @@ SOFTWARE. + if ((sizeof(req) >> 2) > client->req_len )\ + return(BadLength) + ++#define REQUEST_AT_LEAST_EXTRA_SIZE(req, extra) \ ++ if (((sizeof(req) + ((uint64_t) extra)) >> 2) > client->req_len ) \ ++ return(BadLength) ++ + #define REQUEST_FIXED_SIZE(req, n)\ + if (((sizeof(req) >> 2) > client->req_len) || \ + ((n >> 2) >= client->req_len) || \ +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch b/debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch new file mode 100644 index 0000000..a5f4b4f --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch @@ -0,0 +1,27 @@ +From 5fdc679e24abb348014164bf53b82a884a5b380d Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 17:18:54 -0800 +Subject: [PATCH 09/33] xcmisc: unvalidated length in SProcXCMiscGetXIDList() + [CVE-2014-8096] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + Xext/xcmisc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Xext/xcmisc.c b/Xext/xcmisc.c +index 034bfb6..1e91010 100644 +--- a/Xext/xcmisc.c ++++ b/Xext/xcmisc.c +@@ -167,6 +167,7 @@ static int + SProcXCMiscGetXIDList(ClientPtr client) + { + REQUEST(xXCMiscGetXIDListReq); ++ REQUEST_SIZE_MATCH(xXCMiscGetXIDListReq); + + swaps(&stuff->length); + swapl(&stuff->count); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch new file mode 100644 index 0000000..0242368 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch @@ -0,0 +1,176 @@ +From 362ea7ec75543b694ebc8ab7268a2402e80a10bd Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 19:23:17 -0800 +Subject: [PATCH 10/33] Xv: unvalidated lengths in XVideo extension swapped + procs [CVE-2014-8099] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + Xext/xvdisp.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +Index: xorg-server-1.16.0/Xext/xvdisp.c +=================================================================== +--- xorg-server-1.16.0.orig/Xext/xvdisp.c 2014-12-04 11:15:10.726714736 -0500 ++++ xorg-server-1.16.0/Xext/xvdisp.c 2014-12-04 11:15:10.722714693 -0500 +@@ -1207,6 +1207,7 @@ + SProcXvQueryExtension(ClientPtr client) + { + REQUEST(xvQueryExtensionReq); ++ REQUEST_SIZE_MATCH(xvQueryExtensionReq); + swaps(&stuff->length); + return XvProcVector[xv_QueryExtension] (client); + } +@@ -1215,6 +1216,7 @@ + SProcXvQueryAdaptors(ClientPtr client) + { + REQUEST(xvQueryAdaptorsReq); ++ REQUEST_SIZE_MATCH(xvQueryAdaptorsReq); + swaps(&stuff->length); + swapl(&stuff->window); + return XvProcVector[xv_QueryAdaptors] (client); +@@ -1224,6 +1226,7 @@ + SProcXvQueryEncodings(ClientPtr client) + { + REQUEST(xvQueryEncodingsReq); ++ REQUEST_SIZE_MATCH(xvQueryEncodingsReq); + swaps(&stuff->length); + swapl(&stuff->port); + return XvProcVector[xv_QueryEncodings] (client); +@@ -1233,6 +1236,7 @@ + SProcXvGrabPort(ClientPtr client) + { + REQUEST(xvGrabPortReq); ++ REQUEST_SIZE_MATCH(xvGrabPortReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->time); +@@ -1243,6 +1247,7 @@ + SProcXvUngrabPort(ClientPtr client) + { + REQUEST(xvUngrabPortReq); ++ REQUEST_SIZE_MATCH(xvUngrabPortReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->time); +@@ -1253,6 +1258,7 @@ + SProcXvPutVideo(ClientPtr client) + { + REQUEST(xvPutVideoReq); ++ REQUEST_SIZE_MATCH(xvPutVideoReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1272,6 +1278,7 @@ + SProcXvPutStill(ClientPtr client) + { + REQUEST(xvPutStillReq); ++ REQUEST_SIZE_MATCH(xvPutStillReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1291,6 +1298,7 @@ + SProcXvGetVideo(ClientPtr client) + { + REQUEST(xvGetVideoReq); ++ REQUEST_SIZE_MATCH(xvGetVideoReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1310,6 +1318,7 @@ + SProcXvGetStill(ClientPtr client) + { + REQUEST(xvGetStillReq); ++ REQUEST_SIZE_MATCH(xvGetStillReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1329,6 +1338,7 @@ + SProcXvPutImage(ClientPtr client) + { + REQUEST(xvPutImageReq); ++ REQUEST_AT_LEAST_SIZE(xvPutImageReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1352,6 +1362,7 @@ + SProcXvShmPutImage(ClientPtr client) + { + REQUEST(xvShmPutImageReq); ++ REQUEST_SIZE_MATCH(xvShmPutImageReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1379,6 +1390,7 @@ + SProcXvSelectVideoNotify(ClientPtr client) + { + REQUEST(xvSelectVideoNotifyReq); ++ REQUEST_SIZE_MATCH(xvSelectVideoNotifyReq); + swaps(&stuff->length); + swapl(&stuff->drawable); + return XvProcVector[xv_SelectVideoNotify] (client); +@@ -1388,6 +1400,7 @@ + SProcXvSelectPortNotify(ClientPtr client) + { + REQUEST(xvSelectPortNotifyReq); ++ REQUEST_SIZE_MATCH(xvSelectPortNotifyReq); + swaps(&stuff->length); + swapl(&stuff->port); + return XvProcVector[xv_SelectPortNotify] (client); +@@ -1397,6 +1410,7 @@ + SProcXvStopVideo(ClientPtr client) + { + REQUEST(xvStopVideoReq); ++ REQUEST_SIZE_MATCH(xvStopVideoReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->drawable); +@@ -1407,6 +1421,7 @@ + SProcXvSetPortAttribute(ClientPtr client) + { + REQUEST(xvSetPortAttributeReq); ++ REQUEST_SIZE_MATCH(xvSetPortAttributeReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->attribute); +@@ -1418,6 +1433,7 @@ + SProcXvGetPortAttribute(ClientPtr client) + { + REQUEST(xvGetPortAttributeReq); ++ REQUEST_SIZE_MATCH(xvGetPortAttributeReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->attribute); +@@ -1428,6 +1444,7 @@ + SProcXvQueryBestSize(ClientPtr client) + { + REQUEST(xvQueryBestSizeReq); ++ REQUEST_SIZE_MATCH(xvQueryBestSizeReq); + swaps(&stuff->length); + swapl(&stuff->port); + swaps(&stuff->vid_w); +@@ -1441,6 +1458,7 @@ + SProcXvQueryPortAttributes(ClientPtr client) + { + REQUEST(xvQueryPortAttributesReq); ++ REQUEST_SIZE_MATCH(xvQueryPortAttributesReq); + swaps(&stuff->length); + swapl(&stuff->port); + return XvProcVector[xv_QueryPortAttributes] (client); +@@ -1450,6 +1468,7 @@ + SProcXvQueryImageAttributes(ClientPtr client) + { + REQUEST(xvQueryImageAttributesReq); ++ REQUEST_SIZE_MATCH(xvQueryImageAttributesReq); + swaps(&stuff->length); + swapl(&stuff->port); + swapl(&stuff->id); +@@ -1462,6 +1481,7 @@ + SProcXvListImageFormats(ClientPtr client) + { + REQUEST(xvListImageFormatsReq); ++ REQUEST_SIZE_MATCH(xvListImageFormatsReq); + swaps(&stuff->length); + swapl(&stuff->port); + return XvProcVector[xv_ListImageFormats] (client); diff --git a/debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch new file mode 100644 index 0000000..d8f4b65 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch @@ -0,0 +1,64 @@ +From 45000a2286023e2307fda53e602ab24afd2193be Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 19:28:05 -0800 +Subject: [PATCH 11/33] dri3: unvalidated lengths in DRI3 extension swapped + procs [CVE-2014-8103 1/2] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + dri3/dri3_request.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: xorg-server-1.15.1/dri3/dri3_request.c +=================================================================== +--- xorg-server-1.15.1.orig/dri3/dri3_request.c 2014-12-04 11:53:23.380277861 -0500 ++++ xorg-server-1.15.1/dri3/dri3_request.c 2014-12-04 11:53:23.376277836 -0500 +@@ -311,6 +311,7 @@ + sproc_dri3_query_version(ClientPtr client) + { + REQUEST(xDRI3QueryVersionReq); ++ REQUEST_SIZE_MATCH(xDRI3QueryVersionReq); + + swaps(&stuff->length); + swapl(&stuff->majorVersion); +@@ -322,6 +323,7 @@ + sproc_dri3_open(ClientPtr client) + { + REQUEST(xDRI3OpenReq); ++ REQUEST_SIZE_MATCH(xDRI3OpenReq); + + swaps(&stuff->length); + swapl(&stuff->drawable); +@@ -333,6 +335,7 @@ + sproc_dri3_pixmap_from_buffer(ClientPtr client) + { + REQUEST(xDRI3PixmapFromBufferReq); ++ REQUEST_SIZE_MATCH(xDRI3PixmapFromBufferReq); + + swaps(&stuff->length); + swapl(&stuff->pixmap); +@@ -348,6 +351,7 @@ + sproc_dri3_buffer_from_pixmap(ClientPtr client) + { + REQUEST(xDRI3BufferFromPixmapReq); ++ REQUEST_SIZE_MATCH(xDRI3BufferFromPixmapReq); + + swaps(&stuff->length); + swapl(&stuff->pixmap); +@@ -358,6 +362,7 @@ + sproc_dri3_fence_from_fd(ClientPtr client) + { + REQUEST(xDRI3FenceFromFDReq); ++ REQUEST_SIZE_MATCH(xDRI3FenceFromFDReq); + + swaps(&stuff->length); + swapl(&stuff->drawable); +@@ -369,6 +374,7 @@ + sproc_dri3_fd_from_fence(ClientPtr client) + { + REQUEST(xDRI3FDFromFenceReq); ++ REQUEST_SIZE_MATCH(xDRI3FDFromFenceReq); + + swaps(&stuff->length); + swapl(&stuff->drawable); diff --git a/debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch b/debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch new file mode 100644 index 0000000..3fca050 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch @@ -0,0 +1,68 @@ +From e4bde707b4972a03ffc7737bb8e70eed830670ca Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 19:33:34 -0800 +Subject: [PATCH 12/33] present: unvalidated lengths in Present extension + procs [CVE-2014-8103 2/2] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +Reviewed-by: Julien Cristau +--- + present/present_request.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/present/present_request.c b/present/present_request.c +index 835890d..7c53e72 100644 +--- a/present/present_request.c ++++ b/present/present_request.c +@@ -210,6 +210,7 @@ proc_present_query_capabilities (ClientPtr client) + RRCrtcPtr crtc = NULL; + int r; + ++ REQUEST_SIZE_MATCH(xPresentQueryCapabilitiesReq); + r = dixLookupWindow(&window, stuff->target, client, DixGetAttrAccess); + switch (r) { + case Success: +@@ -254,6 +255,7 @@ static int + sproc_present_query_version(ClientPtr client) + { + REQUEST(xPresentQueryVersionReq); ++ REQUEST_SIZE_MATCH(xPresentQueryVersionReq); + + swaps(&stuff->length); + swapl(&stuff->majorVersion); +@@ -265,6 +267,7 @@ static int + sproc_present_pixmap(ClientPtr client) + { + REQUEST(xPresentPixmapReq); ++ REQUEST_AT_LEAST_SIZE(xPresentPixmapReq); + + swaps(&stuff->length); + swapl(&stuff->window); +@@ -284,6 +287,7 @@ static int + sproc_present_notify_msc(ClientPtr client) + { + REQUEST(xPresentNotifyMSCReq); ++ REQUEST_SIZE_MATCH(xPresentNotifyMSCReq); + + swaps(&stuff->length); + swapl(&stuff->window); +@@ -297,6 +301,7 @@ static int + sproc_present_select_input (ClientPtr client) + { + REQUEST(xPresentSelectInputReq); ++ REQUEST_SIZE_MATCH(xPresentSelectInputReq); + + swaps(&stuff->length); + swapl(&stuff->window); +@@ -308,6 +313,7 @@ static int + sproc_present_query_capabilities (ClientPtr client) + { + REQUEST(xPresentQueryCapabilitiesReq); ++ REQUEST_SIZE_MATCH(xPresentQueryCapabilitiesReq); + swaps(&stuff->length); + swapl(&stuff->target); + return (*proc_present_vector[stuff->presentReqType]) (client); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch b/debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch new file mode 100644 index 0000000..c9d8e6d --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch @@ -0,0 +1,51 @@ +From 1322c6ce2a64ca3290ec76144d8443dec50f2183 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 19:38:09 -0800 +Subject: [PATCH 13/33] randr: unvalidated lengths in RandR extension swapped + procs [CVE-2014-8101] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + randr/rrsdispatch.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c +index 08c3b6a..47558cf 100644 +--- a/randr/rrsdispatch.c ++++ b/randr/rrsdispatch.c +@@ -27,6 +27,7 @@ SProcRRQueryVersion(ClientPtr client) + { + REQUEST(xRRQueryVersionReq); + ++ REQUEST_SIZE_MATCH(xRRQueryVersionReq); + swaps(&stuff->length); + swapl(&stuff->majorVersion); + swapl(&stuff->minorVersion); +@@ -38,6 +39,7 @@ SProcRRGetScreenInfo(ClientPtr client) + { + REQUEST(xRRGetScreenInfoReq); + ++ REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); + swaps(&stuff->length); + swapl(&stuff->window); + return (*ProcRandrVector[stuff->randrReqType]) (client); +@@ -69,6 +71,7 @@ SProcRRSelectInput(ClientPtr client) + { + REQUEST(xRRSelectInputReq); + ++ REQUEST_SIZE_MATCH(xRRSelectInputReq); + swaps(&stuff->length); + swapl(&stuff->window); + swaps(&stuff->enable); +@@ -152,6 +155,7 @@ SProcRRConfigureOutputProperty(ClientPtr client) + { + REQUEST(xRRConfigureOutputPropertyReq); + ++ REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq); + swaps(&stuff->length); + swapl(&stuff->output); + swapl(&stuff->property); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch b/debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch new file mode 100644 index 0000000..b712c7b --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch @@ -0,0 +1,36 @@ +From c12a45abf1ae41f5deca298489f5e76ac54f2121 Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Tue, 28 Oct 2014 10:30:04 +0100 +Subject: [PATCH 14/33] render: check request size before reading it + [CVE-2014-8100 1/2] + +Otherwise we may be reading outside of the client request. + +Signed-off-by: Julien Cristau +Reviewed-by: Alan Coopersmith +Signed-off-by: Alan Coopersmith +--- + render/render.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/render/render.c b/render/render.c +index e3031da..200e0c8 100644 +--- a/render/render.c ++++ b/render/render.c +@@ -276,11 +276,11 @@ ProcRenderQueryVersion(ClientPtr client) + + REQUEST(xRenderQueryVersionReq); + ++ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); ++ + pRenderClient->major_version = stuff->majorVersion; + pRenderClient->minor_version = stuff->minorVersion; + +- REQUEST_SIZE_MATCH(xRenderQueryVersionReq); +- + if ((stuff->majorVersion * 1000 + stuff->minorVersion) < + (SERVER_RENDER_MAJOR_VERSION * 1000 + SERVER_RENDER_MINOR_VERSION)) { + rep.majorVersion = stuff->majorVersion; +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch b/debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch new file mode 100644 index 0000000..d5cd34e --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch @@ -0,0 +1,140 @@ +From c21e46f03bd2096aaed666d91a3188a5676f6222 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 19:51:29 -0800 +Subject: [PATCH 15/33] render: unvalidated lengths in Render extn. swapped + procs [CVE-2014-8100 2/2] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + render/render.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/render/render.c b/render/render.c +index 200e0c8..723f380 100644 +--- a/render/render.c ++++ b/render/render.c +@@ -1995,7 +1995,7 @@ static int + SProcRenderQueryVersion(ClientPtr client) + { + REQUEST(xRenderQueryVersionReq); +- ++ REQUEST_SIZE_MATCH(xRenderQueryVersionReq); + swaps(&stuff->length); + swapl(&stuff->majorVersion); + swapl(&stuff->minorVersion); +@@ -2006,6 +2006,7 @@ static int + SProcRenderQueryPictFormats(ClientPtr client) + { + REQUEST(xRenderQueryPictFormatsReq); ++ REQUEST_SIZE_MATCH(xRenderQueryPictFormatsReq); + swaps(&stuff->length); + return (*ProcRenderVector[stuff->renderReqType]) (client); + } +@@ -2014,6 +2015,7 @@ static int + SProcRenderQueryPictIndexValues(ClientPtr client) + { + REQUEST(xRenderQueryPictIndexValuesReq); ++ REQUEST_AT_LEAST_SIZE(xRenderQueryPictIndexValuesReq); + swaps(&stuff->length); + swapl(&stuff->format); + return (*ProcRenderVector[stuff->renderReqType]) (client); +@@ -2029,6 +2031,7 @@ static int + SProcRenderCreatePicture(ClientPtr client) + { + REQUEST(xRenderCreatePictureReq); ++ REQUEST_AT_LEAST_SIZE(xRenderCreatePictureReq); + swaps(&stuff->length); + swapl(&stuff->pid); + swapl(&stuff->drawable); +@@ -2042,6 +2045,7 @@ static int + SProcRenderChangePicture(ClientPtr client) + { + REQUEST(xRenderChangePictureReq); ++ REQUEST_AT_LEAST_SIZE(xRenderChangePictureReq); + swaps(&stuff->length); + swapl(&stuff->picture); + swapl(&stuff->mask); +@@ -2053,6 +2057,7 @@ static int + SProcRenderSetPictureClipRectangles(ClientPtr client) + { + REQUEST(xRenderSetPictureClipRectanglesReq); ++ REQUEST_AT_LEAST_SIZE(xRenderSetPictureClipRectanglesReq); + swaps(&stuff->length); + swapl(&stuff->picture); + swaps(&stuff->xOrigin); +@@ -2065,6 +2070,7 @@ static int + SProcRenderFreePicture(ClientPtr client) + { + REQUEST(xRenderFreePictureReq); ++ REQUEST_SIZE_MATCH(xRenderFreePictureReq); + swaps(&stuff->length); + swapl(&stuff->picture); + return (*ProcRenderVector[stuff->renderReqType]) (client); +@@ -2074,6 +2080,7 @@ static int + SProcRenderComposite(ClientPtr client) + { + REQUEST(xRenderCompositeReq); ++ REQUEST_SIZE_MATCH(xRenderCompositeReq); + swaps(&stuff->length); + swapl(&stuff->src); + swapl(&stuff->mask); +@@ -2093,6 +2100,7 @@ static int + SProcRenderScale(ClientPtr client) + { + REQUEST(xRenderScaleReq); ++ REQUEST_SIZE_MATCH(xRenderScaleReq); + swaps(&stuff->length); + swapl(&stuff->src); + swapl(&stuff->dst); +@@ -2193,6 +2201,7 @@ static int + SProcRenderCreateGlyphSet(ClientPtr client) + { + REQUEST(xRenderCreateGlyphSetReq); ++ REQUEST_SIZE_MATCH(xRenderCreateGlyphSetReq); + swaps(&stuff->length); + swapl(&stuff->gsid); + swapl(&stuff->format); +@@ -2203,6 +2212,7 @@ static int + SProcRenderReferenceGlyphSet(ClientPtr client) + { + REQUEST(xRenderReferenceGlyphSetReq); ++ REQUEST_SIZE_MATCH(xRenderReferenceGlyphSetReq); + swaps(&stuff->length); + swapl(&stuff->gsid); + swapl(&stuff->existing); +@@ -2213,6 +2223,7 @@ static int + SProcRenderFreeGlyphSet(ClientPtr client) + { + REQUEST(xRenderFreeGlyphSetReq); ++ REQUEST_SIZE_MATCH(xRenderFreeGlyphSetReq); + swaps(&stuff->length); + swapl(&stuff->glyphset); + return (*ProcRenderVector[stuff->renderReqType]) (client); +@@ -2227,6 +2238,7 @@ SProcRenderAddGlyphs(ClientPtr client) + xGlyphInfo *gi; + + REQUEST(xRenderAddGlyphsReq); ++ REQUEST_AT_LEAST_SIZE(xRenderAddGlyphsReq); + swaps(&stuff->length); + swapl(&stuff->glyphset); + swapl(&stuff->nglyphs); +@@ -2261,6 +2273,7 @@ static int + SProcRenderFreeGlyphs(ClientPtr client) + { + REQUEST(xRenderFreeGlyphsReq); ++ REQUEST_AT_LEAST_SIZE(xRenderFreeGlyphsReq); + swaps(&stuff->length); + swapl(&stuff->glyphset); + SwapRestL(stuff); +@@ -2278,6 +2291,7 @@ SProcRenderCompositeGlyphs(ClientPtr client) + int size; + + REQUEST(xRenderCompositeGlyphsReq); ++ REQUEST_AT_LEAST_SIZE(xRenderCompositeGlyphsReq); + + switch (stuff->renderReqType) { + default: +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch b/debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch new file mode 100644 index 0000000..e3ff6a3 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch @@ -0,0 +1,27 @@ +From c0308b700e3e0f0b6b1dc350e822b6218d080f1a Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 26 Jan 2014 20:02:20 -0800 +Subject: [PATCH 16/33] xfixes: unvalidated length in + SProcXFixesSelectSelectionInput [CVE-2014-8102] + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + xfixes/select.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xfixes/select.c b/xfixes/select.c +index c088ed3..e964d58 100644 +--- a/xfixes/select.c ++++ b/xfixes/select.c +@@ -201,6 +201,7 @@ SProcXFixesSelectSelectionInput(ClientPtr client) + { + REQUEST(xXFixesSelectSelectionInputReq); + ++ REQUEST_SIZE_MATCH(xXFixesSelectSelectionInputReq); + swaps(&stuff->length); + swapl(&stuff->window); + swapl(&stuff->selection); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch b/debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch new file mode 100644 index 0000000..cbad490 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch @@ -0,0 +1,195 @@ +From 0b199c0b23aecfdce53c28ea653c9342217d6f33 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 9 Feb 2014 21:27:27 -0800 +Subject: [PATCH 17/33] Add request length checking test cases for some Xinput + 1.x requests + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + configure.ac | 1 + + test/Makefile.am | 2 +- + test/xi1/Makefile.am | 34 +++++++++ + test/xi1/protocol-xchangedevicecontrol.c | 122 ++++++++++++++++++++++++++++++ + 4 files changed, 158 insertions(+), 1 deletion(-) + create mode 100644 test/xi1/Makefile.am + create mode 100644 test/xi1/protocol-xchangedevicecontrol.c + +Index: xorg-server-1.15.1/configure.ac +=================================================================== +--- xorg-server-1.15.1.orig/configure.ac 2014-12-04 11:54:14.712587810 -0500 ++++ xorg-server-1.15.1/configure.ac 2014-12-04 11:54:14.708587787 -0500 +@@ -2553,6 +2553,7 @@ + hw/kdrive/linux/Makefile + hw/kdrive/src/Makefile + test/Makefile ++test/xi1/Makefile + test/xi2/Makefile + xserver.ent + xorg-server.pc +Index: xorg-server-1.15.1/test/xi1/Makefile.am +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server-1.15.1/test/xi1/Makefile.am 2014-12-04 11:54:14.708587787 -0500 +@@ -0,0 +1,34 @@ ++if ENABLE_UNIT_TESTS ++if HAVE_LD_WRAP ++noinst_PROGRAMS = \ ++ protocol-xchangedevicecontrol ++ ++TESTS=$(noinst_PROGRAMS) ++TESTS_ENVIRONMENT = $(XORG_MALLOC_DEBUG_ENV) ++ ++AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ ++AM_CPPFLAGS = @XORG_INCS@ -I$(srcdir)/../xi2 ++TEST_LDADD=../libxservertest.la $(XORG_SYS_LIBS) $(XSERVER_SYS_LIBS) $(GLX_SYS_LIBS) ++COMMON_SOURCES=$(srcdir)/../xi2/protocol-common.c ++ ++if SPECIAL_DTRACE_OBJECTS ++TEST_LDADD += $(OS_LIB) $(DIX_LIB) ++endif ++ ++protocol_xchangedevicecontrol_LDADD=$(TEST_LDADD) ++ ++protocol_xchangedevicecontrol_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient ++ ++protocol_xchangedevicecontrol_SOURCES=$(COMMON_SOURCES) protocol-xchangedevicecontrol.c ++ ++else ++# Print that xi1-tests were skipped (exit code 77 for automake test harness) ++TESTS = xi1-tests ++CLEANFILES = $(TESTS) ++ ++xi1-tests: ++ @echo 'echo "ld -wrap support required for xi1 unit tests, skipping"' > $@ ++ @echo 'exit 77' >> $@ ++ $(AM_V_GEN)chmod +x $@ ++endif ++endif +Index: xorg-server-1.15.1/test/xi1/protocol-xchangedevicecontrol.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server-1.15.1/test/xi1/protocol-xchangedevicecontrol.c 2014-12-04 11:54:14.708587787 -0500 +@@ -0,0 +1,122 @@ ++/** ++ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include ++#endif ++ ++/* ++ * Protocol testing for ChangeDeviceControl request. ++ */ ++#include ++#include ++#include ++#include ++#include "inputstr.h" ++#include "chgdctl.h" ++ ++#include "protocol-common.h" ++ ++static ClientRec client_request; ++ ++static void ++reply_ChangeDeviceControl(ClientPtr client, int len, char *data, void *userdata) ++{ ++ xChangeDeviceControlReply *rep = (xChangeDeviceControlReply *) data; ++ ++ if (client->swapped) { ++ swapl(&rep->length); ++ swaps(&rep->sequenceNumber); ++ } ++ ++ reply_check_defaults(rep, len, ChangeDeviceControl); ++ ++ /* XXX: check status code in reply */ ++} ++ ++static void ++request_ChangeDeviceControl(ClientPtr client, xChangeDeviceControlReq * req, ++ xDeviceCtl *ctl, int error) ++{ ++ int rc; ++ ++ client_request.req_len = req->length; ++ rc = ProcXChangeDeviceControl(&client_request); ++ assert(rc == error); ++ ++ /* XXX: ChangeDeviceControl doesn't seem to fill in errorValue to check */ ++ ++ client_request.swapped = TRUE; ++ swaps(&req->length); ++ swaps(&req->control); ++ swaps(&ctl->length); ++ swaps(&ctl->control); ++ /* XXX: swap other contents of ctl, depending on type */ ++ rc = SProcXChangeDeviceControl(&client_request); ++ assert(rc == error); ++} ++ ++static unsigned char *data[4096]; /* the request buffer */ ++ ++static void ++test_ChangeDeviceControl(void) ++{ ++ xChangeDeviceControlReq *request = (xChangeDeviceControlReq *) data; ++ xDeviceCtl *control = (xDeviceCtl *) (&request[1]); ++ ++ request_init(request, ChangeDeviceControl); ++ ++ reply_handler = reply_ChangeDeviceControl; ++ ++ client_request = init_client(request->length, request); ++ ++ printf("Testing invalid lengths:\n"); ++ printf(" -- no control struct\n"); ++ request_ChangeDeviceControl(&client_request, request, control, BadLength); ++ ++ printf(" -- xDeviceResolutionCtl\n"); ++ request_init(request, ChangeDeviceControl); ++ request->control = DEVICE_RESOLUTION; ++ control->length = (sizeof(xDeviceResolutionCtl) >> 2); ++ request->length += control->length - 2; ++ request_ChangeDeviceControl(&client_request, request, control, BadLength); ++ ++ printf(" -- xDeviceEnableCtl\n"); ++ request_init(request, ChangeDeviceControl); ++ request->control = DEVICE_ENABLE; ++ control->length = (sizeof(xDeviceEnableCtl) >> 2); ++ request->length += control->length - 2; ++ request_ChangeDeviceControl(&client_request, request, control, BadLength); ++ ++ /* XXX: Test functionality! */ ++} ++ ++int ++main(int argc, char **argv) ++{ ++ init_simple(); ++ ++ test_ChangeDeviceControl(); ++ ++ return 0; ++} diff --git a/debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch b/debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch new file mode 100644 index 0000000..20ee8ec --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch @@ -0,0 +1,86 @@ +From a8d2ec0a4c11fb5804c073a5b74ba342d59843a8 Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 9 Feb 2014 21:28:05 -0800 +Subject: [PATCH 18/33] Add request length checking test cases for some Xinput + 2.x requests + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + test/xi2/protocol-xigetclientpointer.c | 5 +++++ + test/xi2/protocol-xipassivegrabdevice.c | 8 ++++++++ + test/xi2/protocol-xiquerypointer.c | 4 ++++ + test/xi2/protocol-xiwarppointer.c | 3 +++ + 4 files changed, 20 insertions(+) + +Index: xorg-server-1.15.1/test/xi2/protocol-xigetclientpointer.c +=================================================================== +--- xorg-server-1.15.1.orig/test/xi2/protocol-xigetclientpointer.c 2014-12-04 11:54:32.024693177 -0500 ++++ xorg-server-1.15.1/test/xi2/protocol-xigetclientpointer.c 2014-12-04 11:54:32.020693152 -0500 +@@ -124,6 +124,11 @@ + request.win = INVALID_WINDOW_ID; + request_XIGetClientPointer(&client_request, &request, BadWindow); + ++ printf("Testing invalid length\n"); ++ client_request.req_len -= 4; ++ request_XIGetClientPointer(&client_request, &request, BadLength); ++ client_request.req_len += 4; ++ + test_data.cp_is_set = FALSE; + + printf("Testing window None, unset ClientPointer.\n"); +Index: xorg-server-1.15.1/test/xi2/protocol-xipassivegrabdevice.c +=================================================================== +--- xorg-server-1.15.1.orig/test/xi2/protocol-xipassivegrabdevice.c 2014-12-04 11:54:32.024693177 -0500 ++++ xorg-server-1.15.1/test/xi2/protocol-xipassivegrabdevice.c 2014-12-04 11:54:32.020693152 -0500 +@@ -139,6 +139,7 @@ + int modifiers; + int mask_len; + ++ client_request.req_len = req->length; + rc = ProcXIPassiveGrabDevice(&client_request); + assert(rc == error); + +@@ -190,6 +191,13 @@ + request_XIPassiveGrabDevice(&client_request, request, BadDevice, + request->deviceid); + ++ printf("Testing invalid length\n"); ++ request->length -= 2; ++ request_XIPassiveGrabDevice(&client_request, request, BadLength, ++ client_request.errorValue); ++ /* re-init request since swapped length test leaves some values swapped */ ++ request_init(request, XIPassiveGrabDevice); ++ request->grab_window = CLIENT_WINDOW_ID; + request->deviceid = XIAllMasterDevices; + + printf("Testing invalid grab types\n"); +Index: xorg-server-1.15.1/test/xi2/protocol-xiquerypointer.c +=================================================================== +--- xorg-server-1.15.1.orig/test/xi2/protocol-xiquerypointer.c 2014-12-04 11:54:32.024693177 -0500 ++++ xorg-server-1.15.1/test/xi2/protocol-xiquerypointer.c 2014-12-04 11:54:32.020693152 -0500 +@@ -201,6 +201,10 @@ + test_data.dev = devices.mouse; + request.deviceid = devices.mouse->id; + request_XIQueryPointer(&client_request, &request, Success); ++ ++ /* test REQUEST_SIZE_MATCH */ ++ client_request.req_len -= 4; ++ request_XIQueryPointer(&client_request, &request, BadLength); + } + + int +Index: xorg-server-1.15.1/test/xi2/protocol-xiwarppointer.c +=================================================================== +--- xorg-server-1.15.1.orig/test/xi2/protocol-xiwarppointer.c 2014-12-04 11:54:32.024693177 -0500 ++++ xorg-server-1.15.1/test/xi2/protocol-xiwarppointer.c 2014-12-04 11:54:32.020693152 -0500 +@@ -198,6 +198,9 @@ + request_XIWarpPointer(&client_request, &request, Success); + + /* FIXME: src_x/y checks */ ++ ++ client_request.req_len -= 2; /* invalid length */ ++ request_XIWarpPointer(&client_request, &request, BadLength); + } + + int diff --git a/debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch b/debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch new file mode 100644 index 0000000..972f4a4 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch @@ -0,0 +1,74 @@ +From d4934a8fb4fab54d39c42ca445687985fe4410cd Mon Sep 17 00:00:00 2001 +From: Alan Coopersmith +Date: Sun, 9 Feb 2014 22:42:47 -0800 +Subject: [PATCH 19/33] Add REQUEST_FIXED_SIZE testcases to test/misc.c + +Signed-off-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +--- + test/misc.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/test/misc.c b/test/misc.c +index dd792e6..66330a1 100644 +--- a/test/misc.c ++++ b/test/misc.c +@@ -28,6 +28,8 @@ + #include + #include "misc.h" + #include "scrnintstr.h" ++#include "dix.h" ++#include "dixstruct.h" + + ScreenInfo screenInfo; + +@@ -155,11 +157,46 @@ dix_update_desktop_dimensions(void) + assert_dimensions(-w2, -h2, w2, h2); + } + ++static int ++dix_request_fixed_size_overflow(ClientRec *client) ++{ ++ xReq req = { 0 }; ++ ++ client->req_len = req.length = 1; ++ REQUEST_FIXED_SIZE(req, SIZE_MAX); ++ return Success; ++} ++ ++static int ++dix_request_fixed_size_match(ClientRec *client) ++{ ++ xReq req = { 0 }; ++ ++ client->req_len = req.length = 9; ++ REQUEST_FIXED_SIZE(req, 30); ++ return Success; ++} ++ ++static void ++dix_request_size_checks(void) ++{ ++ ClientRec client = { 0 }; ++ int rc; ++ ++ rc = dix_request_fixed_size_overflow(&client); ++ assert(rc == BadLength); ++ ++ rc = dix_request_fixed_size_match(&client); ++ assert(rc == Success); ++} ++ ++ + int + main(int argc, char **argv) + { + dix_version_compare(); + dix_update_desktop_dimensions(); ++ dix_request_size_checks(); + + return 0; + } +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch b/debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch new file mode 100644 index 0000000..508d9e7 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch @@ -0,0 +1,44 @@ +From 096a5af8e52faafc38ae84dd17bede7ac03a3b83 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:36 -0500 +Subject: [PATCH 20/33] glx: Be more paranoid about variable-length requests + [CVE-2014-8093 1/6] + +If the size computation routine returns -1 we should just reject the +request outright. Clamping it to zero could give an attacker the +opportunity to also mangle cmdlen in such a way that the subsequent +length check passes, and the request would get executed, thus passing +data we wanted to reject to the renderer. + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/glxcmds.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: xorg-server-1.15.1/glx/glxcmds.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxcmds.c 2014-12-04 11:55:22.293001486 -0500 ++++ xorg-server-1.15.1/glx/glxcmds.c 2014-12-04 11:55:22.289001461 -0500 +@@ -2052,7 +2052,7 @@ + extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE, + client->swapped); + if (extra < 0) { +- extra = 0; ++ return BadLength; + } + if (cmdlen != __GLX_PAD(entry.bytes + extra)) { + return BadLength; +@@ -2169,7 +2169,7 @@ + extra = (*entry.varsize) (pc + __GLX_RENDER_LARGE_HDR_SIZE, + client->swapped); + if (extra < 0) { +- extra = 0; ++ return BadLength; + } + /* large command's header is 4 bytes longer, so add 4 */ + if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) { diff --git a/debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch b/debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch new file mode 100644 index 0000000..591e88e --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch @@ -0,0 +1,165 @@ +From 74e31c4809dbfe437a3e2a53ee38658da1f3c8ed Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:37 -0500 +Subject: [PATCH 21/33] glx: Be more strict about rejecting invalid image + sizes [CVE-2014-8093 2/6] + +Before this we'd just clamp the image size to 0, which was just +hideously stupid; if the parameters were such that they'd overflow an +integer, you'd allocate a small buffer, then pass huge values into (say) +ReadPixels, and now you're scribbling over arbitrary server memory. + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/singlepix.c | 16 ++++++++-------- + glx/singlepixswap.c | 16 ++++++++-------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/glx/singlepix.c b/glx/singlepix.c +index 506fdaa..8b6c261 100644 +--- a/glx/singlepix.c ++++ b/glx/singlepix.c +@@ -65,7 +65,7 @@ __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc) + lsbFirst = *(GLboolean *) (pc + 25); + compsize = __glReadPixels_size(format, type, width, height); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst); +@@ -124,7 +124,7 @@ __glXDisp_GetTexImage(__GLXclientState * cl, GLbyte * pc) + compsize = + __glGetTexImage_size(target, level, format, type, width, height, depth); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -218,9 +218,9 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1); + + if (compsize < 0) +- compsize = 0; ++ return BadLength; + if (compsize2 < 0) +- compsize2 = 0; ++ return BadLength; + compsize = __GLX_PAD(compsize); + compsize2 = __GLX_PAD(compsize2); + +@@ -296,7 +296,7 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -365,7 +365,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -426,7 +426,7 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + + compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -491,7 +491,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +diff --git a/glx/singlepixswap.c b/glx/singlepixswap.c +index 8469101..8dc304f 100644 +--- a/glx/singlepixswap.c ++++ b/glx/singlepixswap.c +@@ -75,7 +75,7 @@ __glXDispSwap_ReadPixels(__GLXclientState * cl, GLbyte * pc) + lsbFirst = *(GLboolean *) (pc + 25); + compsize = __glReadPixels_size(format, type, width, height); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + glPixelStorei(GL_PACK_LSB_FIRST, lsbFirst); +@@ -144,7 +144,7 @@ __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc) + compsize = + __glGetTexImage_size(target, level, format, type, width, height, depth); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -252,9 +252,9 @@ GetSeparableFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1); + + if (compsize < 0) +- compsize = 0; ++ return BadLength; + if (compsize2 < 0) +- compsize2 = 0; ++ return BadLength; + compsize = __GLX_PAD(compsize); + compsize2 = __GLX_PAD(compsize2); + +@@ -338,7 +338,7 @@ GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, height, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -415,7 +415,7 @@ GetHistogram(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -483,7 +483,7 @@ GetMinmax(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + + compsize = __glGetTexImage_size(target, 1, format, type, 2, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +@@ -554,7 +554,7 @@ GetColorTable(__GLXclientState * cl, GLbyte * pc, GLXContextTag tag) + */ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + if (compsize < 0) +- compsize = 0; ++ return BadLength; + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); + __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch b/debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch new file mode 100644 index 0000000..3357e9b --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch @@ -0,0 +1,59 @@ +From 902b6a30c660f4b38afd936726071b631ada3fcf Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:38 -0500 +Subject: [PATCH 22/33] glx: Additional paranoia in __glXGetAnswerBuffer / + __GLX_GET_ANSWER_BUFFER (v2) [CVE-2014-8093 3/6] + +If the computed reply size is negative, something went wrong, treat it +as an error. + +v2: Be more careful about size_t being unsigned (Matthieu Herrb) +v3: SIZE_MAX not SIZE_T_MAX (Alan Coopersmith) + +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/indirect_util.c | 7 ++++++- + glx/unpack.h | 3 ++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/glx/indirect_util.c b/glx/indirect_util.c +index 926e57c..de81491 100644 +--- a/glx/indirect_util.c ++++ b/glx/indirect_util.c +@@ -76,9 +76,14 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size, + const unsigned mask = alignment - 1; + + if (local_size < required_size) { +- const size_t worst_case_size = required_size + alignment; ++ size_t worst_case_size; + intptr_t temp_buf; + ++ if (required_size < SIZE_MAX - alignment) ++ worst_case_size = required_size + alignment; ++ else ++ return NULL; ++ + if (cl->returnBufSize < worst_case_size) { + void *temp = realloc(cl->returnBuf, worst_case_size); + +diff --git a/glx/unpack.h b/glx/unpack.h +index 52fba74..2b1ebcf 100644 +--- a/glx/unpack.h ++++ b/glx/unpack.h +@@ -83,7 +83,8 @@ extern xGLXSingleReply __glXReply; + ** pointer. + */ + #define __GLX_GET_ANSWER_BUFFER(res,cl,size,align) \ +- if ((size) > sizeof(answerBuffer)) { \ ++ if (size < 0) return BadLength; \ ++ else if ((size) > sizeof(answerBuffer)) { \ + int bump; \ + if ((cl)->returnBufSize < (size)+(align)) { \ + (cl)->returnBuf = (GLbyte*)realloc((cl)->returnBuf, \ +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch b/debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch new file mode 100644 index 0000000..40dd0af --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch @@ -0,0 +1,59 @@ +From 53e2f52df33e5d45ce070ab2454c5a3d497cc8f6 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:39 -0500 +Subject: [PATCH 23/33] glx: Fix image size computation for + EXT_texture_integer [CVE-2014-8098 1/8] + +Without this we'd reject the request with BadLength. Note that some old +versions of Mesa had a bug in the same place, and would _send_ zero +bytes of image data; these will now be rejected, correctly. + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/rensize.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/glx/rensize.c b/glx/rensize.c +index ba22d10..9ff73c7 100644 +--- a/glx/rensize.c ++++ b/glx/rensize.c +@@ -224,6 +224,11 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + case GL_ALPHA: + case GL_LUMINANCE: + case GL_INTENSITY: ++ case GL_RED_INTEGER_EXT: ++ case GL_GREEN_INTEGER_EXT: ++ case GL_BLUE_INTEGER_EXT: ++ case GL_ALPHA_INTEGER_EXT: ++ case GL_LUMINANCE_INTEGER_EXT: + elementsPerGroup = 1; + break; + case GL_422_EXT: +@@ -234,14 +239,19 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + case GL_DEPTH_STENCIL_MESA: + case GL_YCBCR_MESA: + case GL_LUMINANCE_ALPHA: ++ case GL_LUMINANCE_ALPHA_INTEGER_EXT: + elementsPerGroup = 2; + break; + case GL_RGB: + case GL_BGR: ++ case GL_RGB_INTEGER_EXT: ++ case GL_BGR_INTEGER_EXT: + elementsPerGroup = 3; + break; + case GL_RGBA: + case GL_BGRA: ++ case GL_RGBA_INTEGER_EXT: ++ case GL_BGRA_INTEGER_EXT: + case GL_ABGR_EXT: + elementsPerGroup = 4; + break; +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch b/debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch new file mode 100644 index 0000000..af08e6a --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch @@ -0,0 +1,79 @@ +From 13f54e513024fc8224065515d9c664135aba1848 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:40 -0500 +Subject: [PATCH 24/33] glx: Add safe_{add,mul,pad} (v3) [CVE-2014-8093 4/6] + +These are paranoid about integer overflow, and will return -1 if their +operation would overflow a (signed) integer or if either argument is +negative. + +Note that RenderLarge requests are sized with a uint32_t so in principle +this could be sketchy there, but dix limits bigreqs to 128M so you +shouldn't ever notice, and honestly if you're sending more than 2G of +rendering commands you're already doing something very wrong. + +v2: Use INT_MAX for consistency with the rest of the server (jcristau) +v3: Reject negative arguments (anholt) + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/glxserver.h | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +Index: xorg-server-1.15.1/glx/glxserver.h +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxserver.h 2014-12-04 11:55:58.221223978 -0500 ++++ xorg-server-1.15.1/glx/glxserver.h 2014-12-04 11:55:58.217223954 -0500 +@@ -230,6 +230,47 @@ + * Routines for computing the size of variably-sized rendering commands. + */ + ++static _X_INLINE int ++safe_add(int a, int b) ++{ ++ if (a < 0 || b < 0) ++ return -1; ++ ++ if (INT_MAX - a < b) ++ return -1; ++ ++ return a + b; ++} ++ ++static _X_INLINE int ++safe_mul(int a, int b) ++{ ++ if (a < 0 || b < 0) ++ return -1; ++ ++ if (a == 0 || b == 0) ++ return 0; ++ ++ if (a > INT_MAX / b) ++ return -1; ++ ++ return a * b; ++} ++ ++static _X_INLINE int ++safe_pad(int a) ++{ ++ int ret; ++ ++ if (a < 0) ++ return -1; ++ ++ if ((ret = safe_add(a, 3)) < 0) ++ return -1; ++ ++ return ret & (GLuint)~3; ++} ++ + extern int __glXTypeSize(GLenum enm); + extern int __glXImageSize(GLenum format, GLenum type, + GLenum target, GLsizei w, GLsizei h, GLsizei d, diff --git a/debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch b/debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch new file mode 100644 index 0000000..37c7cd0 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch @@ -0,0 +1,72 @@ +From 02f91446a5446d7287a0fc30aa8b15a1cd29c2cf Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Mon, 10 Nov 2014 12:13:41 -0500 +Subject: [PATCH 25/33] glx: Length checking for GLXRender requests (v2) + [CVE-2014-8098 2/8] + +v2: +Remove can't-happen comparison for cmdlen < 0 (Michal Srb) + +Reviewed-by: Adam Jackson +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Julien Cristau +Signed-off-by: Alan Coopersmith +--- + glx/glxcmds.c | 21 ++++++++++----------- + 1 file changed, 10 insertions(+), 11 deletions(-) + +Index: xorg-server-1.15.1/glx/glxcmds.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxcmds.c 2014-12-04 11:56:07.897284200 -0500 ++++ xorg-server-1.15.1/glx/glxcmds.c 2014-12-04 11:56:07.893284176 -0500 +@@ -2015,7 +2015,7 @@ + left = (req->length << 2) - sz_xGLXRenderReq; + while (left > 0) { + __GLXrenderSizeData entry; +- int extra; ++ int extra = 0; + __GLXdispatchRenderProcPtr proc; + int err; + +@@ -2034,6 +2034,9 @@ + cmdlen = hdr->length; + opcode = hdr->opcode; + ++ if (left < cmdlen) ++ return BadLength; ++ + /* + ** Check for core opcodes and grab entry data. + */ +@@ -2047,6 +2050,10 @@ + return __glXError(GLXBadRenderRequest); + } + ++ if (cmdlen < entry.bytes) { ++ return BadLength; ++ } ++ + if (entry.varsize) { + /* variable size command */ + extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE, +@@ -2054,17 +2061,9 @@ + if (extra < 0) { + return BadLength; + } +- if (cmdlen != __GLX_PAD(entry.bytes + extra)) { +- return BadLength; +- } + } +- else { +- /* constant size command */ +- if (cmdlen != __GLX_PAD(entry.bytes)) { +- return BadLength; +- } +- } +- if (left < cmdlen) { ++ ++ if (cmdlen != safe_pad(safe_add(entry.bytes, extra))) { + return BadLength; + } + diff --git a/debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch b/debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch new file mode 100644 index 0000000..4a13b3e --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch @@ -0,0 +1,225 @@ +From 84caa119e859d66e1a8368f265c16769e44e3291 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:42 -0500 +Subject: [PATCH 26/33] glx: Integer overflow protection for non-generated + render requests (v3) [CVE-2014-8093 5/6] + +v2: +Fix constants in __glXMap2fReqSize (Michal Srb) +Validate w/h/d for proxy targets too (Keith Packard) + +v3: +Fix Map[12]Size to correctly reject order == 0 (Julien Cristau) + +Reviewed-by: Keith Packard +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/rensize.c | 77 ++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 41 insertions(+), 36 deletions(-) + +diff --git a/glx/rensize.c b/glx/rensize.c +index 9ff73c7..d46334a 100644 +--- a/glx/rensize.c ++++ b/glx/rensize.c +@@ -43,19 +43,11 @@ + (((a & 0xff000000U)>>24) | ((a & 0xff0000U)>>8) | \ + ((a & 0xff00U)<<8) | ((a & 0xffU)<<24)) + +-static int +-Map1Size(GLint k, GLint order) +-{ +- if (order <= 0 || k < 0) +- return -1; +- return k * order; +-} +- + int + __glXMap1dReqSize(const GLbyte * pc, Bool swap) + { + GLenum target; +- GLint order, k; ++ GLint order; + + target = *(GLenum *) (pc + 16); + order = *(GLint *) (pc + 20); +@@ -63,15 +55,16 @@ __glXMap1dReqSize(const GLbyte * pc, Bool swap) + target = SWAPL(target); + order = SWAPL(order); + } +- k = __glMap1d_size(target); +- return 8 * Map1Size(k, order); ++ if (order < 1) ++ return -1; ++ return safe_mul(8, safe_mul(__glMap1d_size(target), order)); + } + + int + __glXMap1fReqSize(const GLbyte * pc, Bool swap) + { + GLenum target; +- GLint order, k; ++ GLint order; + + target = *(GLenum *) (pc + 0); + order = *(GLint *) (pc + 12); +@@ -79,23 +72,24 @@ __glXMap1fReqSize(const GLbyte * pc, Bool swap) + target = SWAPL(target); + order = SWAPL(order); + } +- k = __glMap1f_size(target); +- return 4 * Map1Size(k, order); ++ if (order < 1) ++ return -1; ++ return safe_mul(4, safe_mul(__glMap1f_size(target), order)); + } + + static int + Map2Size(int k, int majorOrder, int minorOrder) + { +- if (majorOrder <= 0 || minorOrder <= 0 || k < 0) ++ if (majorOrder < 1 || minorOrder < 1) + return -1; +- return k * majorOrder * minorOrder; ++ return safe_mul(k, safe_mul(majorOrder, minorOrder)); + } + + int + __glXMap2dReqSize(const GLbyte * pc, Bool swap) + { + GLenum target; +- GLint uorder, vorder, k; ++ GLint uorder, vorder; + + target = *(GLenum *) (pc + 32); + uorder = *(GLint *) (pc + 36); +@@ -105,15 +99,14 @@ __glXMap2dReqSize(const GLbyte * pc, Bool swap) + uorder = SWAPL(uorder); + vorder = SWAPL(vorder); + } +- k = __glMap2d_size(target); +- return 8 * Map2Size(k, uorder, vorder); ++ return safe_mul(8, Map2Size(__glMap2d_size(target), uorder, vorder)); + } + + int + __glXMap2fReqSize(const GLbyte * pc, Bool swap) + { + GLenum target; +- GLint uorder, vorder, k; ++ GLint uorder, vorder; + + target = *(GLenum *) (pc + 0); + uorder = *(GLint *) (pc + 12); +@@ -123,8 +116,7 @@ __glXMap2fReqSize(const GLbyte * pc, Bool swap) + uorder = SWAPL(uorder); + vorder = SWAPL(vorder); + } +- k = __glMap2f_size(target); +- return 4 * Map2Size(k, uorder, vorder); ++ return safe_mul(4, Map2Size(__glMap2f_size(target), uorder, vorder)); + } + + /** +@@ -175,14 +167,16 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + GLint bytesPerElement, elementsPerGroup, groupsPerRow; + GLint groupSize, rowSize, padding, imageSize; + ++ if (w == 0 || h == 0 || d == 0) ++ return 0; ++ + if (w < 0 || h < 0 || d < 0 || + (type == GL_BITMAP && + (format != GL_COLOR_INDEX && format != GL_STENCIL_INDEX))) { + return -1; + } +- if (w == 0 || h == 0 || d == 0) +- return 0; + ++ /* proxy targets have no data */ + switch (target) { + case GL_PROXY_TEXTURE_1D: + case GL_PROXY_TEXTURE_2D: +@@ -199,6 +193,12 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + return 0; + } + ++ /* real data has to have real sizes */ ++ if (imageHeight < 0 || rowLength < 0 || skipImages < 0 || skipRows < 0) ++ return -1; ++ if (alignment != 1 && alignment != 2 && alignment != 4 && alignment != 8) ++ return -1; ++ + if (type == GL_BITMAP) { + if (rowLength > 0) { + groupsPerRow = rowLength; +@@ -207,11 +207,14 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + groupsPerRow = w; + } + rowSize = bits_to_bytes(groupsPerRow); ++ if (rowSize < 0) ++ return -1; + padding = (rowSize % alignment); + if (padding) { + rowSize += alignment - padding; + } +- return ((h + skipRows) * rowSize); ++ ++ return safe_mul(safe_add(h, skipRows), rowSize); + } + else { + switch (format) { +@@ -303,6 +306,7 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + default: + return -1; + } ++ /* known safe by the switches above, not checked */ + groupSize = bytesPerElement * elementsPerGroup; + if (rowLength > 0) { + groupsPerRow = rowLength; +@@ -310,18 +314,21 @@ __glXImageSize(GLenum format, GLenum type, GLenum target, + else { + groupsPerRow = w; + } +- rowSize = groupsPerRow * groupSize; ++ ++ if ((rowSize = safe_mul(groupsPerRow, groupSize)) < 0) ++ return -1; + padding = (rowSize % alignment); + if (padding) { + rowSize += alignment - padding; + } +- if (imageHeight > 0) { +- imageSize = (imageHeight + skipRows) * rowSize; +- } +- else { +- imageSize = (h + skipRows) * rowSize; +- } +- return ((d + skipImages) * imageSize); ++ ++ if (imageHeight > 0) ++ h = imageHeight; ++ h = safe_add(h, skipRows); ++ ++ imageSize = safe_mul(h, rowSize); ++ ++ return safe_mul(safe_add(d, skipImages), imageSize); + } + } + +@@ -445,9 +452,7 @@ __glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap) + /* XXX Should rowLength be used for either or both image? */ + image1size = __glXImageSize(format, type, 0, w, 1, 1, + 0, rowLength, 0, 0, alignment); +- image1size = __GLX_PAD(image1size); + image2size = __glXImageSize(format, type, 0, h, 1, 1, + 0, rowLength, 0, 0, alignment); +- return image1size + image2size; +- ++ return safe_add(safe_pad(image1size), image2size); + } +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch b/debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch new file mode 100644 index 0000000..38e325e --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch @@ -0,0 +1,155 @@ +From 6070d07a25b33e9630f8dbbde1d1df6f25164286 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:43 -0500 +Subject: [PATCH 27/33] glx: Length checking for RenderLarge requests (v2) + [CVE-2014-8098 3/8] + +This is a half-measure until we start passing request length into the +varsize function, but it's better than the nothing we had before. + +v2: Verify that there's at least a large render header's worth of +dataBytes (Julien Cristau) + +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/glxcmds.c | 57 ++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 34 insertions(+), 23 deletions(-) + +Index: xorg-server-1.15.1/glx/glxcmds.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxcmds.c 2014-12-04 11:56:22.749376887 -0500 ++++ xorg-server-1.15.1/glx/glxcmds.c 2014-12-04 11:56:22.745376862 -0500 +@@ -2099,6 +2099,8 @@ + + __GLX_DECLARE_SWAP_VARIABLES; + ++ REQUEST_AT_LEAST_SIZE(xGLXRenderLargeReq); ++ + req = (xGLXRenderLargeReq *) pc; + if (client->swapped) { + __GLX_SWAP_SHORT(&req->length); +@@ -2114,12 +2116,14 @@ + __glXResetLargeCommandStatus(cl); + return error; + } ++ if (safe_pad(req->dataBytes) < 0) ++ return BadLength; + dataBytes = req->dataBytes; + + /* + ** Check the request length. + */ +- if ((req->length << 2) != __GLX_PAD(dataBytes) + sz_xGLXRenderLargeReq) { ++ if ((req->length << 2) != safe_pad(dataBytes) + sz_xGLXRenderLargeReq) { + client->errorValue = req->length; + /* Reset in case this isn't 1st request. */ + __glXResetLargeCommandStatus(cl); +@@ -2129,7 +2133,7 @@ + + if (cl->largeCmdRequestsSoFar == 0) { + __GLXrenderSizeData entry; +- int extra; ++ int extra = 0; + size_t cmdlen; + int err; + +@@ -2142,13 +2146,17 @@ + return __glXError(GLXBadLargeRequest); + } + ++ if (dataBytes < __GLX_RENDER_LARGE_HDR_SIZE) ++ return BadLength; ++ + hdr = (__GLXrenderLargeHeader *) pc; + if (client->swapped) { + __GLX_SWAP_INT(&hdr->length); + __GLX_SWAP_INT(&hdr->opcode); + } +- cmdlen = hdr->length; + opcode = hdr->opcode; ++ if ((cmdlen = safe_pad(hdr->length)) < 0) ++ return BadLength; + + /* + ** Check for core opcodes and grab entry data. +@@ -2170,17 +2178,13 @@ + if (extra < 0) { + return BadLength; + } +- /* large command's header is 4 bytes longer, so add 4 */ +- if (cmdlen != __GLX_PAD(entry.bytes + 4 + extra)) { +- return BadLength; +- } + } +- else { +- /* constant size command */ +- if (cmdlen != __GLX_PAD(entry.bytes + 4)) { +- return BadLength; +- } ++ ++ /* the +4 is safe because we know entry.bytes is small */ ++ if (cmdlen != safe_pad(safe_add(entry.bytes + 4, extra))) { ++ return BadLength; + } ++ + /* + ** Make enough space in the buffer, then copy the entire request. + */ +@@ -2207,6 +2211,7 @@ + ** We are receiving subsequent (i.e. not the first) requests of a + ** multi request command. + */ ++ int bytesSoFar; /* including this packet */ + + /* + ** Check the request number and the total request count. +@@ -2225,11 +2230,18 @@ + /* + ** Check that we didn't get too much data. + */ +- if ((cl->largeCmdBytesSoFar + dataBytes) > cl->largeCmdBytesTotal) { ++ if ((bytesSoFar = safe_add(cl->largeCmdBytesSoFar, dataBytes)) < 0) { + client->errorValue = dataBytes; + __glXResetLargeCommandStatus(cl); + return __glXError(GLXBadLargeRequest); + } ++ ++ if (bytesSoFar > cl->largeCmdBytesTotal) { ++ client->errorValue = dataBytes; ++ __glXResetLargeCommandStatus(cl); ++ return __glXError(GLXBadLargeRequest); ++ } ++ + memcpy(cl->largeCmdBuf + cl->largeCmdBytesSoFar, pc, dataBytes); + cl->largeCmdBytesSoFar += dataBytes; + cl->largeCmdRequestsSoFar++; +@@ -2241,17 +2253,16 @@ + ** This is the last request; it must have enough bytes to complete + ** the command. + */ +- /* NOTE: the two pad macros have been added below; they are needed +- ** because the client library pads the total byte count, but not +- ** the per-request byte counts. The Protocol Encoding says the +- ** total byte count should not be padded, so a proposal will be +- ** made to the ARB to relax the padding constraint on the total +- ** byte count, thus preserving backward compatibility. Meanwhile, +- ** the padding done below fixes a bug that did not allow +- ** large commands of odd sizes to be accepted by the server. ++ /* NOTE: the pad macro below is needed because the client library ++ ** pads the total byte count, but not the per-request byte counts. ++ ** The Protocol Encoding says the total byte count should not be ++ ** padded, so a proposal will be made to the ARB to relax the ++ ** padding constraint on the total byte count, thus preserving ++ ** backward compatibility. Meanwhile, the padding done below ++ ** fixes a bug that did not allow large commands of odd sizes to ++ ** be accepted by the server. + */ +- if (__GLX_PAD(cl->largeCmdBytesSoFar) != +- __GLX_PAD(cl->largeCmdBytesTotal)) { ++ if (safe_pad(cl->largeCmdBytesSoFar) != cl->largeCmdBytesTotal) { + client->errorValue = dataBytes; + __glXResetLargeCommandStatus(cl); + return __glXError(GLXBadLargeRequest); diff --git a/debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch b/debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch new file mode 100644 index 0000000..d42c840 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch @@ -0,0 +1,51 @@ +From efb3efd096edba7551e4e0e40bea522651211303 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:44 -0500 +Subject: [PATCH 28/33] glx: Top-level length checking for swapped + VendorPrivate requests [CVE-2014-8098 4/8] + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/glxcmdsswap.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/glx/glxcmdsswap.c b/glx/glxcmdsswap.c +index 5d179f3..9ec1222 100644 +--- a/glx/glxcmdsswap.c ++++ b/glx/glxcmdsswap.c +@@ -958,11 +958,13 @@ __glXDispSwap_RenderLarge(__GLXclientState * cl, GLbyte * pc) + int + __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + xGLXVendorPrivateReq *req; + GLint vendorcode; + __GLXdispatchVendorPrivProcPtr proc; + + __GLX_DECLARE_SWAP_VARIABLES; ++ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateReq); + + req = (xGLXVendorPrivateReq *) pc; + __GLX_SWAP_SHORT(&req->length); +@@ -985,11 +987,13 @@ __glXDispSwap_VendorPrivate(__GLXclientState * cl, GLbyte * pc) + int + __glXDispSwap_VendorPrivateWithReply(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + xGLXVendorPrivateWithReplyReq *req; + GLint vendorcode; + __GLXdispatchVendorPrivProcPtr proc; + + __GLX_DECLARE_SWAP_VARIABLES; ++ REQUEST_AT_LEAST_SIZE(xGLXVendorPrivateWithReplyReq); + + req = (xGLXVendorPrivateWithReplyReq *) pc; + __GLX_SWAP_SHORT(&req->length); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch b/debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch new file mode 100644 index 0000000..19ea8c6 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch @@ -0,0 +1,74 @@ +From 554e382ba7aae961ca88c75edb1caffb5d00e9f6 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:45 -0500 +Subject: [PATCH 29/33] glx: Request length checks for SetClientInfoARB + [CVE-2014-8098 5/8] + +Reviewed-by: Keith Packard +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/clientinfo.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/glx/clientinfo.c b/glx/clientinfo.c +index 4aaa4c9..c5fef30 100644 +--- a/glx/clientinfo.c ++++ b/glx/clientinfo.c +@@ -33,18 +33,21 @@ static int + set_client_info(__GLXclientState * cl, xGLXSetClientInfoARBReq * req, + unsigned bytes_per_version) + { ++ ClientPtr client = cl->client; + char *gl_extensions; + char *glx_extensions; + ++ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq); ++ + /* Verify that the size of the packet matches the size inferred from the + * sizes specified for the various fields. + */ +- const unsigned expected_size = sz_xGLXSetClientInfoARBReq +- + (req->numVersions * bytes_per_version) +- + __GLX_PAD(req->numGLExtensionBytes) +- + __GLX_PAD(req->numGLXExtensionBytes); ++ int size = sz_xGLXSetClientInfoARBReq; ++ size = safe_add(size, safe_mul(req->numVersions, bytes_per_version)); ++ size = safe_add(size, safe_pad(req->numGLExtensionBytes)); ++ size = safe_add(size, safe_pad(req->numGLXExtensionBytes)); + +- if (req->length != (expected_size / 4)) ++ if (size < 0 || req->length != (size / 4)) + return BadLength; + + /* Verify that the actual length of the GL extension string matches what's +@@ -80,8 +83,11 @@ __glXDisp_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc) + int + __glXDispSwap_SetClientInfoARB(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc; + ++ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq); ++ + req->length = bswap_16(req->length); + req->numVersions = bswap_32(req->numVersions); + req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes); +@@ -99,8 +105,11 @@ __glXDisp_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc) + int + __glXDispSwap_SetClientInfo2ARB(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + xGLXSetClientInfoARBReq *req = (xGLXSetClientInfoARBReq *) pc; + ++ REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq); ++ + req->length = bswap_16(req->length); + req->numVersions = bswap_32(req->numVersions); + req->numGLExtensionBytes = bswap_32(req->numGLExtensionBytes); +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch b/debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch new file mode 100644 index 0000000..c91b25c --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch @@ -0,0 +1,45 @@ +From 475a39f6ac52aa2dc1babfece38d73da1a478731 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:46 -0500 +Subject: [PATCH 30/33] glx: Length-checking for non-generated vendor private + requests [CVE-2014-8098 6/8] + +Reviewed-by: Keith Packard +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/indirect_program.c | 2 ++ + glx/swap_interval.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/glx/indirect_program.c b/glx/indirect_program.c +index cda139e..5caee7b 100644 +--- a/glx/indirect_program.c ++++ b/glx/indirect_program.c +@@ -56,6 +56,8 @@ DoGetProgramString(struct __GLXclientStateRec *cl, GLbyte * pc, + __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error); + ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateWithReplyReq, 8); ++ + pc += __GLX_VENDPRIV_HDR_SIZE; + if (cx != NULL) { + GLenum target; +diff --git a/glx/swap_interval.c b/glx/swap_interval.c +index 17bc992..2320550 100644 +--- a/glx/swap_interval.c ++++ b/glx/swap_interval.c +@@ -46,6 +46,8 @@ DoSwapInterval(__GLXclientState * cl, GLbyte * pc, int do_swap) + __GLXcontext *cx; + GLint interval; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 4); ++ + cx = __glXLookupContextByTag(cl, tag); + + if ((cx == NULL) || (cx->pGlxScreen == NULL)) { +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch b/debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch new file mode 100644 index 0000000..496f108 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch @@ -0,0 +1,561 @@ +From 4ab40b2b60f4f841f75250e1e60c1624d8212cd4 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:47 -0500 +Subject: [PATCH 31/33] glx: Length checking for non-generated single requests + (v2) [CVE-2014-8098 7/8] + +v2: +Fix single versus vendor-private length checking for ARB_imaging subset +extensions. (Julien Cristau) + +v3: +Fix single versus vendor-private length checking for ARB_imaging subset +extensions. (Julien Cristau) + +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Julien Cristau +Signed-off-by: Alan Coopersmith +--- + glx/indirect_texture_compression.c | 4 ++++ + glx/single2.c | 23 +++++++++++++++---- + glx/single2swap.c | 19 ++++++++++++---- + glx/singlepix.c | 44 ++++++++++++++++++++++++------------ + glx/singlepixswap.c | 34 ++++++++++++++++++++++++---- + 5 files changed, 95 insertions(+), 29 deletions(-) + +Index: xorg-server-1.15.1/glx/indirect_texture_compression.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/indirect_texture_compression.c 2014-12-04 11:56:48.021535287 -0500 ++++ xorg-server-1.15.1/glx/indirect_texture_compression.c 2014-12-04 11:56:48.017535262 -0500 +@@ -43,6 +43,8 @@ + __GLXcontext *const cx = __glXForceCurrent(cl, req->contextTag, &error); + ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); ++ + pc += __GLX_SINGLE_HDR_SIZE; + if (cx != NULL) { + const GLenum target = *(GLenum *) (pc + 0); +@@ -85,6 +87,8 @@ + __glXForceCurrent(cl, bswap_32(req->contextTag), &error); + ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); ++ + pc += __GLX_SINGLE_HDR_SIZE; + if (cx != NULL) { + const GLenum target = (GLenum) bswap_32(*(int *) (pc + 0)); +Index: xorg-server-1.15.1/glx/single2.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/single2.c 2014-12-04 11:56:48.021535287 -0500 ++++ xorg-server-1.15.1/glx/single2.c 2014-12-04 11:56:48.017535262 -0500 +@@ -45,11 +45,14 @@ + int + __glXDisp_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + GLsizei size; + GLenum type; + __GLXcontext *cx; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -76,10 +79,13 @@ + int + __glXDisp_SelectBuffer(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; + GLsizei size; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -104,7 +110,7 @@ + int + __glXDisp_RenderMode(__GLXclientState * cl, GLbyte * pc) + { +- ClientPtr client; ++ ClientPtr client = cl->client; + xGLXRenderModeReply reply; + __GLXcontext *cx; + GLint nitems = 0, retBytes = 0, retval, newModeCheck; +@@ -112,6 +118,8 @@ + GLenum newMode; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -188,7 +196,6 @@ + ** selection array, as per the API for glRenderMode itself. + */ + noChangeAllowed:; +- client = cl->client; + reply = (xGLXRenderModeReply) { + .type = X_Reply, + .sequenceNumber = client->sequence, +@@ -207,9 +214,12 @@ + int + __glXDisp_Flush(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; + int error; + ++ REQUEST_SIZE_MATCH(xGLXSingleReq); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -223,10 +233,12 @@ + int + __glXDisp_Finish(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; +- ClientPtr client; + int error; + ++ REQUEST_SIZE_MATCH(xGLXSingleReq); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -317,7 +329,7 @@ + int + DoGetString(__GLXclientState * cl, GLbyte * pc, GLboolean need_swap) + { +- ClientPtr client; ++ ClientPtr client = cl->client; + __GLXcontext *cx; + GLenum name; + const char *string; +@@ -327,6 +339,8 @@ + char *buf = NULL, *buf1 = NULL; + GLint length = 0; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + /* If the client has the opposite byte order, swap the contextTag and + * the name. + */ +@@ -343,7 +357,6 @@ + pc += __GLX_SINGLE_HDR_SIZE; + name = *(GLenum *) (pc + 0); + string = (const char *) glGetString(name); +- client = cl->client; + + if (string == NULL) + string = ""; +Index: xorg-server-1.15.1/glx/single2swap.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/single2swap.c 2014-12-04 11:56:48.021535287 -0500 ++++ xorg-server-1.15.1/glx/single2swap.c 2014-12-04 11:56:48.017535262 -0500 +@@ -41,6 +41,7 @@ + int + __glXDispSwap_FeedbackBuffer(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + GLsizei size; + GLenum type; + +@@ -48,6 +49,8 @@ + __GLXcontext *cx; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 8); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -77,12 +80,15 @@ + int + __glXDispSwap_SelectBuffer(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; + GLsizei size; + + __GLX_DECLARE_SWAP_VARIABLES; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -109,7 +115,7 @@ + int + __glXDispSwap_RenderMode(__GLXclientState * cl, GLbyte * pc) + { +- ClientPtr client; ++ ClientPtr client = cl->client; + __GLXcontext *cx; + xGLXRenderModeReply reply; + GLint nitems = 0, retBytes = 0, retval, newModeCheck; +@@ -120,6 +126,8 @@ + __GLX_DECLARE_SWAP_ARRAY_VARIABLES; + int error; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -200,7 +208,6 @@ + ** selection array, as per the API for glRenderMode itself. + */ + noChangeAllowed:; +- client = cl->client; + reply = (xGLXRenderModeReply) { + .type = X_Reply, + .sequenceNumber = client->sequence, +@@ -224,11 +231,14 @@ + int + __glXDispSwap_Flush(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; + int error; + + __GLX_DECLARE_SWAP_VARIABLES; + ++ REQUEST_SIZE_MATCH(xGLXSingleReq); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -243,12 +253,14 @@ + int + __glXDispSwap_Finish(__GLXclientState * cl, GLbyte * pc) + { ++ ClientPtr client = cl->client; + __GLXcontext *cx; +- ClientPtr client; + int error; + + __GLX_DECLARE_SWAP_VARIABLES; + ++ REQUEST_SIZE_MATCH(xGLXSingleReq); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -260,7 +272,6 @@ + cx->hasUnflushedCommands = GL_FALSE; + + /* Send empty reply packet to indicate finish is finished */ +- client = cl->client; + __GLX_BEGIN_REPLY(0); + __GLX_PUT_RETVAL(0); + __GLX_SWAP_REPLY_HEADER(); +Index: xorg-server-1.15.1/glx/singlepix.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/singlepix.c 2014-12-04 11:56:48.021535287 -0500 ++++ xorg-server-1.15.1/glx/singlepix.c 2014-12-04 11:56:48.017535262 -0500 +@@ -51,6 +51,8 @@ + int error; + char *answer, answerBuffer[200]; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 28); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -100,6 +102,8 @@ + char *answer, answerBuffer[200]; + GLint width = 0, height = 0, depth = 1; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 20); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -157,6 +161,8 @@ + GLubyte answerBuffer[200]; + char *answer; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { + return error; +@@ -217,15 +223,13 @@ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1); + +- if (compsize < 0) ++ if ((compsize = safe_pad(compsize)) < 0) + return BadLength; +- if (compsize2 < 0) ++ if ((compsize2 = safe_pad(compsize2)) < 0) + return BadLength; +- compsize = __GLX_PAD(compsize); +- compsize2 = __GLX_PAD(compsize2); + + glPixelStorei(GL_PACK_SWAP_BYTES, swapBytes); +- __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1); ++ __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1); + __glXClearErrorOccured(); + glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), + *(GLenum *) (pc + 8), answer, answer + compsize, NULL); +@@ -249,7 +253,8 @@ + __glXDisp_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -257,7 +262,8 @@ + __glXDisp_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -323,7 +329,8 @@ + __glXDisp_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -331,7 +338,8 @@ + __glXDisp_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -390,7 +398,8 @@ + __glXDisp_GetHistogram(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -398,7 +407,8 @@ + __glXDisp_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -450,7 +460,8 @@ + __glXDisp_GetMinmax(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -458,7 +469,8 @@ + __glXDisp_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -517,7 +529,8 @@ + __glXDisp_GetColorTable(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -525,6 +538,7 @@ + __glXDisp_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); +- ++ ClientPtr client = cl->client; ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } +Index: xorg-server-1.15.1/glx/singlepixswap.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/singlepixswap.c 2014-12-04 11:56:48.021535287 -0500 ++++ xorg-server-1.15.1/glx/singlepixswap.c 2014-12-04 11:56:48.017535262 -0500 +@@ -53,6 +53,8 @@ + int error; + char *answer, answerBuffer[200]; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 28); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -114,6 +116,8 @@ + char *answer, answerBuffer[200]; + GLint width = 0, height = 0, depth = 1; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 20); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -184,6 +188,8 @@ + + __GLX_DECLARE_SWAP_VARIABLES; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 4); ++ + __GLX_SWAP_INT(&((xGLXSingleReq *) pc)->contextTag); + cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); + if (!cx) { +@@ -251,15 +257,13 @@ + compsize = __glGetTexImage_size(target, 1, format, type, width, 1, 1); + compsize2 = __glGetTexImage_size(target, 1, format, type, height, 1, 1); + +- if (compsize < 0) ++ if ((compsize = safe_pad(compsize)) < 0) + return BadLength; +- if (compsize2 < 0) ++ if ((compsize2 = safe_pad(compsize2)) < 0) + return BadLength; +- compsize = __GLX_PAD(compsize); +- compsize2 = __GLX_PAD(compsize2); + + glPixelStorei(GL_PACK_SWAP_BYTES, !swapBytes); +- __GLX_GET_ANSWER_BUFFER(answer, cl, compsize + compsize2, 1); ++ __GLX_GET_ANSWER_BUFFER(answer, cl, safe_add(compsize, compsize2), 1); + __glXClearErrorOccured(); + glGetSeparableFilter(*(GLenum *) (pc + 0), *(GLenum *) (pc + 4), + *(GLenum *) (pc + 8), answer, answer + compsize, NULL); +@@ -285,7 +289,9 @@ + __glXDispSwap_GetSeparableFilter(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetSeparableFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -293,7 +299,9 @@ + __glXDispSwap_GetSeparableFilterEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetSeparableFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -367,7 +375,9 @@ + __glXDispSwap_GetConvolutionFilter(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetConvolutionFilter(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -375,7 +385,9 @@ + __glXDispSwap_GetConvolutionFilterEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetConvolutionFilter(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -441,7 +453,9 @@ + __glXDispSwap_GetHistogram(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetHistogram(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -449,7 +463,9 @@ + __glXDispSwap_GetHistogramEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetHistogram(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -507,7 +523,9 @@ + __glXDispSwap_GetMinmax(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetMinmax(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -515,7 +533,9 @@ + __glXDispSwap_GetMinmaxEXT(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetMinmax(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } + +@@ -581,7 +601,9 @@ + __glXDispSwap_GetColorTable(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_SINGLE_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXSingleReq, 16); + return GetColorTable(cl, pc + __GLX_SINGLE_HDR_SIZE, tag); + } + +@@ -589,6 +611,8 @@ + __glXDispSwap_GetColorTableSGI(__GLXclientState * cl, GLbyte * pc) + { + const GLXContextTag tag = __GLX_GET_VENDPRIV_CONTEXT_TAG(pc); ++ ClientPtr client = cl->client; + ++ REQUEST_FIXED_SIZE(xGLXVendorPrivateReq, 16); + return GetColorTable(cl, pc + __GLX_VENDPRIV_HDR_SIZE, tag); + } diff --git a/debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch b/debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch new file mode 100644 index 0000000..131b0d6 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch @@ -0,0 +1,913 @@ +From d303d79450436a1ef04252c2a7e36870c2506f38 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 10 Nov 2014 12:13:48 -0500 +Subject: [PATCH 32/33] glx: Pass remaining request length into ->varsize (v2) + [CVE-2014-8098 8/8] + +v2: Handle more multiplies in indirect_reqsize.c (Julien Cristau) + +Reviewed-by: Julien Cristau +Reviewed-by: Michal Srb +Reviewed-by: Andy Ritger +Signed-off-by: Adam Jackson +Signed-off-by: Alan Coopersmith +--- + glx/glxcmds.c | 7 +- + glx/glxserver.h | 2 +- + glx/indirect_reqsize.c | 142 +++++++++++++++++++------------------ + glx/indirect_reqsize.h | 181 +++++++++++++++++++++++++++++------------------- + glx/rensize.c | 27 +++++--- + 5 files changed, 205 insertions(+), 154 deletions(-) + +Index: xorg-server-1.15.1/glx/glxcmds.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxcmds.c 2014-12-04 11:57:06.345650678 -0500 ++++ xorg-server-1.15.1/glx/glxcmds.c 2014-12-04 11:57:06.337650627 -0500 +@@ -2057,7 +2057,8 @@ + if (entry.varsize) { + /* variable size command */ + extra = (*entry.varsize) (pc + __GLX_RENDER_HDR_SIZE, +- client->swapped); ++ client->swapped, ++ left - __GLX_RENDER_HDR_SIZE); + if (extra < 0) { + return BadLength; + } +@@ -2134,6 +2135,7 @@ + if (cl->largeCmdRequestsSoFar == 0) { + __GLXrenderSizeData entry; + int extra = 0; ++ int left = (req->length << 2) - sz_xGLXRenderLargeReq; + size_t cmdlen; + int err; + +@@ -2174,7 +2176,8 @@ + ** will be in the 1st request, so it's okay to do this. + */ + extra = (*entry.varsize) (pc + __GLX_RENDER_LARGE_HDR_SIZE, +- client->swapped); ++ client->swapped, ++ left - __GLX_RENDER_LARGE_HDR_SIZE); + if (extra < 0) { + return BadLength; + } +Index: xorg-server-1.15.1/glx/glxserver.h +=================================================================== +--- xorg-server-1.15.1.orig/glx/glxserver.h 2014-12-04 11:57:06.345650678 -0500 ++++ xorg-server-1.15.1/glx/glxserver.h 2014-12-04 11:57:06.337650627 -0500 +@@ -179,7 +179,7 @@ + /* + * Tables for computing the size of each rendering command. + */ +-typedef int (*gl_proto_size_func) (const GLbyte *, Bool); ++typedef int (*gl_proto_size_func) (const GLbyte *, Bool, int); + + typedef struct { + int bytes; +Index: xorg-server-1.15.1/glx/indirect_reqsize.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/indirect_reqsize.c 2014-12-04 11:57:06.345650678 -0500 ++++ xorg-server-1.15.1/glx/indirect_reqsize.c 2014-12-04 11:57:06.337650627 -0500 +@@ -31,24 +31,22 @@ + #include "indirect_size.h" + #include "indirect_reqsize.h" + +-#define __GLX_PAD(x) (((x) + 3) & ~3) +- + #if defined(__CYGWIN__) || defined(__MINGW32__) + #undef HAVE_ALIAS + #endif + #ifdef HAVE_ALIAS + #define ALIAS2(from,to) \ +- GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \ ++ GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \ + __attribute__ ((alias( # to ))); + #define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize ) + #else + #define ALIAS(from,to) \ +- GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \ +- { return __glX ## to ## ReqSize( pc, swap ); } ++ GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap, int reqlen ) \ ++ { return __glX ## to ## ReqSize( pc, swap, reqlen ); } + #endif + + int +-__glXCallListsReqSize(const GLbyte * pc, Bool swap) ++__glXCallListsReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 0); + GLenum type = *(GLenum *) (pc + 4); +@@ -60,11 +58,11 @@ + } + + compsize = __glCallLists_size(type); +- return __GLX_PAD((compsize * n)); ++ return safe_pad(safe_mul(compsize, n)); + } + + int +-__glXBitmapReqSize(const GLbyte * pc, Bool swap) ++__glXBitmapReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -88,7 +86,7 @@ + } + + int +-__glXFogfvReqSize(const GLbyte * pc, Bool swap) ++__glXFogfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 0); + GLsizei compsize; +@@ -98,11 +96,11 @@ + } + + compsize = __glFogfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXLightfvReqSize(const GLbyte * pc, Bool swap) ++__glXLightfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -112,11 +110,11 @@ + } + + compsize = __glLightfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXLightModelfvReqSize(const GLbyte * pc, Bool swap) ++__glXLightModelfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 0); + GLsizei compsize; +@@ -126,11 +124,11 @@ + } + + compsize = __glLightModelfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXMaterialfvReqSize(const GLbyte * pc, Bool swap) ++__glXMaterialfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -140,11 +138,11 @@ + } + + compsize = __glMaterialfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXPolygonStippleReqSize(const GLbyte * pc, Bool swap) ++__glXPolygonStippleReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -164,7 +162,7 @@ + } + + int +-__glXTexParameterfvReqSize(const GLbyte * pc, Bool swap) ++__glXTexParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -174,11 +172,11 @@ + } + + compsize = __glTexParameterfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXTexImage1DReqSize(const GLbyte * pc, Bool swap) ++__glXTexImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -206,7 +204,7 @@ + } + + int +-__glXTexImage2DReqSize(const GLbyte * pc, Bool swap) ++__glXTexImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -236,7 +234,7 @@ + } + + int +-__glXTexEnvfvReqSize(const GLbyte * pc, Bool swap) ++__glXTexEnvfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -246,11 +244,11 @@ + } + + compsize = __glTexEnvfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXTexGendvReqSize(const GLbyte * pc, Bool swap) ++__glXTexGendvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -260,11 +258,11 @@ + } + + compsize = __glTexGendv_size(pname); +- return __GLX_PAD((compsize * 8)); ++ return safe_pad(safe_mul(compsize, 8)); + } + + int +-__glXTexGenfvReqSize(const GLbyte * pc, Bool swap) ++__glXTexGenfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -274,11 +272,11 @@ + } + + compsize = __glTexGenfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXPixelMapfvReqSize(const GLbyte * pc, Bool swap) ++__glXPixelMapfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei mapsize = *(GLsizei *) (pc + 4); + +@@ -286,11 +284,11 @@ + mapsize = bswap_32(mapsize); + } + +- return __GLX_PAD((mapsize * 4)); ++ return safe_pad(safe_mul(mapsize, 4)); + } + + int +-__glXPixelMapusvReqSize(const GLbyte * pc, Bool swap) ++__glXPixelMapusvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei mapsize = *(GLsizei *) (pc + 4); + +@@ -298,11 +296,11 @@ + mapsize = bswap_32(mapsize); + } + +- return __GLX_PAD((mapsize * 2)); ++ return safe_pad(safe_mul(mapsize, 2)); + } + + int +-__glXDrawPixelsReqSize(const GLbyte * pc, Bool swap) ++__glXDrawPixelsReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -330,7 +328,7 @@ + } + + int +-__glXPrioritizeTexturesReqSize(const GLbyte * pc, Bool swap) ++__glXPrioritizeTexturesReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 0); + +@@ -338,11 +336,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 4) + (n * 4)); ++ return safe_pad(safe_add(safe_mul(n, 4), safe_mul(n, 4))); + } + + int +-__glXTexSubImage1DReqSize(const GLbyte * pc, Bool swap) ++__glXTexSubImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -370,7 +368,7 @@ + } + + int +-__glXTexSubImage2DReqSize(const GLbyte * pc, Bool swap) ++__glXTexSubImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -400,7 +398,7 @@ + } + + int +-__glXColorTableReqSize(const GLbyte * pc, Bool swap) ++__glXColorTableReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -428,7 +426,7 @@ + } + + int +-__glXColorTableParameterfvReqSize(const GLbyte * pc, Bool swap) ++__glXColorTableParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -438,11 +436,11 @@ + } + + compsize = __glColorTableParameterfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXColorSubTableReqSize(const GLbyte * pc, Bool swap) ++__glXColorSubTableReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -470,7 +468,7 @@ + } + + int +-__glXConvolutionFilter1DReqSize(const GLbyte * pc, Bool swap) ++__glXConvolutionFilter1DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -498,7 +496,7 @@ + } + + int +-__glXConvolutionFilter2DReqSize(const GLbyte * pc, Bool swap) ++__glXConvolutionFilter2DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = 0; +@@ -528,7 +526,7 @@ + } + + int +-__glXConvolutionParameterfvReqSize(const GLbyte * pc, Bool swap) ++__glXConvolutionParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 4); + GLsizei compsize; +@@ -538,11 +536,11 @@ + } + + compsize = __glConvolutionParameterfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXTexImage3DReqSize(const GLbyte * pc, Bool swap) ++__glXTexImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = *(GLint *) (pc + 8); +@@ -579,7 +577,7 @@ + } + + int +-__glXTexSubImage3DReqSize(const GLbyte * pc, Bool swap) ++__glXTexSubImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLint row_length = *(GLint *) (pc + 4); + GLint image_height = *(GLint *) (pc + 8); +@@ -613,7 +611,7 @@ + } + + int +-__glXCompressedTexImage1DReqSize(const GLbyte * pc, Bool swap) ++__glXCompressedTexImage1DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei imageSize = *(GLsizei *) (pc + 20); + +@@ -621,11 +619,11 @@ + imageSize = bswap_32(imageSize); + } + +- return __GLX_PAD(imageSize); ++ return safe_pad(imageSize); + } + + int +-__glXCompressedTexImage2DReqSize(const GLbyte * pc, Bool swap) ++__glXCompressedTexImage2DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei imageSize = *(GLsizei *) (pc + 24); + +@@ -633,11 +631,11 @@ + imageSize = bswap_32(imageSize); + } + +- return __GLX_PAD(imageSize); ++ return safe_pad(imageSize); + } + + int +-__glXCompressedTexImage3DReqSize(const GLbyte * pc, Bool swap) ++__glXCompressedTexImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei imageSize = *(GLsizei *) (pc + 28); + +@@ -645,11 +643,11 @@ + imageSize = bswap_32(imageSize); + } + +- return __GLX_PAD(imageSize); ++ return safe_pad(imageSize); + } + + int +-__glXCompressedTexSubImage3DReqSize(const GLbyte * pc, Bool swap) ++__glXCompressedTexSubImage3DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei imageSize = *(GLsizei *) (pc + 36); + +@@ -657,11 +655,11 @@ + imageSize = bswap_32(imageSize); + } + +- return __GLX_PAD(imageSize); ++ return safe_pad(imageSize); + } + + int +-__glXPointParameterfvReqSize(const GLbyte * pc, Bool swap) ++__glXPointParameterfvReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum pname = *(GLenum *) (pc + 0); + GLsizei compsize; +@@ -671,11 +669,11 @@ + } + + compsize = __glPointParameterfv_size(pname); +- return __GLX_PAD((compsize * 4)); ++ return safe_pad(safe_mul(compsize, 4)); + } + + int +-__glXDrawBuffersReqSize(const GLbyte * pc, Bool swap) ++__glXDrawBuffersReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 0); + +@@ -683,11 +681,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 4)); ++ return safe_pad(safe_mul(n, 4)); + } + + int +-__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap) ++__glXProgramStringARBReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei len = *(GLsizei *) (pc + 8); + +@@ -695,11 +693,11 @@ + len = bswap_32(len); + } + +- return __GLX_PAD(len); ++ return safe_pad(len); + } + + int +-__glXVertexAttribs1dvNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs1dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -707,11 +705,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 8)); ++ return safe_pad(safe_mul(n, 8)); + } + + int +-__glXVertexAttribs2dvNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs2dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -719,11 +717,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 16)); ++ return safe_pad(safe_mul(n, 16)); + } + + int +-__glXVertexAttribs3dvNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs3dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -731,11 +729,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 24)); ++ return safe_pad(safe_mul(n, 24)); + } + + int +-__glXVertexAttribs3fvNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs3fvNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -743,11 +741,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 12)); ++ return safe_pad(safe_mul(n, 12)); + } + + int +-__glXVertexAttribs3svNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs3svNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -755,11 +753,11 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 6)); ++ return safe_pad(safe_mul(n, 6)); + } + + int +-__glXVertexAttribs4dvNVReqSize(const GLbyte * pc, Bool swap) ++__glXVertexAttribs4dvNVReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLsizei n = *(GLsizei *) (pc + 4); + +@@ -767,7 +765,7 @@ + n = bswap_32(n); + } + +- return __GLX_PAD((n * 32)); ++ return safe_pad(safe_mul(n, 32)); + } + + ALIAS(Fogiv, Fogfv) +Index: xorg-server-1.15.1/glx/indirect_reqsize.h +=================================================================== +--- xorg-server-1.15.1.orig/glx/indirect_reqsize.h 2014-12-04 11:57:06.345650678 -0500 ++++ xorg-server-1.15.1/glx/indirect_reqsize.h 2014-12-04 11:57:06.337650627 -0500 +@@ -36,115 +36,156 @@ + #define PURE + #endif + +-extern PURE _X_HIDDEN int __glXCallListsReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXBitmapReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXFogfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXFogivReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXLightfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXLightivReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXLightModelfvReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXLightModelivReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXMaterialfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXMaterialivReqSize(const GLbyte * pc, Bool swap); ++extern PURE _X_HIDDEN int __glXCallListsReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXBitmapReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXFogfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXFogivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXLightfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXLightivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXLightModelfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXLightModelivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMaterialfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMaterialivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXPolygonStippleReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXTexParameterfvReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXTexParameterivReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXTexImage1DReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexImage2DReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexEnvfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexEnvivReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexGendvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexGenfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXTexGenivReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXMap1dReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXMap1fReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXMap2dReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXMap2fReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXPixelMapfvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXPixelMapuivReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXPixelMapusvReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXDrawPixelsReqSize(const GLbyte * pc, Bool swap); +-extern PURE _X_HIDDEN int __glXDrawArraysReqSize(const GLbyte * pc, Bool swap); ++ Bool swap, int reqlen); ++extern PURE _X_HIDDEN int __glXTexImage1DReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexImage2DReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexEnvfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexEnvivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexGendvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexGenfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXTexGenivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMap1dReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMap1fReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMap2dReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXMap2fReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXPixelMapfvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXPixelMapuivReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXPixelMapusvReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXDrawPixelsReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); ++extern PURE _X_HIDDEN int __glXDrawArraysReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXPrioritizeTexturesReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXTexSubImage1DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXTexSubImage2DReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXColorTableReqSize(const GLbyte * pc, Bool swap); ++ Bool swap, int reqlen); ++extern PURE _X_HIDDEN int __glXColorTableReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXColorTableParameterfvReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXColorTableParameterivReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXColorSubTableReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXConvolutionFilter1DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXConvolutionFilter2DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXConvolutionParameterfvReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXConvolutionParameterivReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXSeparableFilter2DReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXTexImage3DReqSize(const GLbyte * pc, Bool swap); ++ Bool swap, int reqlen); ++extern PURE _X_HIDDEN int __glXTexImage3DReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXTexSubImage3DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexImage1DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexImage2DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexImage3DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexSubImage1DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexSubImage2DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXCompressedTexSubImage3DReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXPointParameterfvReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXPointParameterivReqSize(const GLbyte * pc, +- Bool swap); +-extern PURE _X_HIDDEN int __glXDrawBuffersReqSize(const GLbyte * pc, Bool swap); ++ Bool swap, int reqlen); ++extern PURE _X_HIDDEN int __glXDrawBuffersReqSize(const GLbyte * pc, Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXProgramStringARBReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXDeleteFramebuffersReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXDeleteRenderbuffersReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs1dvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs1fvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs1svNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs2dvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs2fvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs2svNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs3dvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs3fvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs3svNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs4dvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs4fvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs4svNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, int reqlen); + extern PURE _X_HIDDEN int __glXVertexAttribs4ubvNVReqSize(const GLbyte * pc, +- Bool swap); ++ Bool swap, ++ int reqlen); + + #undef PURE + +Index: xorg-server-1.15.1/glx/rensize.c +=================================================================== +--- xorg-server-1.15.1.orig/glx/rensize.c 2014-12-04 11:57:06.345650678 -0500 ++++ xorg-server-1.15.1/glx/rensize.c 2014-12-04 11:57:06.341650652 -0500 +@@ -44,7 +44,7 @@ + ((a & 0xff00U)<<8) | ((a & 0xffU)<<24)) + + int +-__glXMap1dReqSize(const GLbyte * pc, Bool swap) ++__glXMap1dReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum target; + GLint order; +@@ -61,7 +61,7 @@ + } + + int +-__glXMap1fReqSize(const GLbyte * pc, Bool swap) ++__glXMap1fReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum target; + GLint order; +@@ -86,7 +86,7 @@ + } + + int +-__glXMap2dReqSize(const GLbyte * pc, Bool swap) ++__glXMap2dReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum target; + GLint uorder, vorder; +@@ -103,7 +103,7 @@ + } + + int +-__glXMap2fReqSize(const GLbyte * pc, Bool swap) ++__glXMap2fReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + GLenum target; + GLint uorder, vorder; +@@ -359,13 +359,14 @@ + } + + int +-__glXDrawArraysReqSize(const GLbyte * pc, Bool swap) ++__glXDrawArraysReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + __GLXdispatchDrawArraysHeader *hdr = (__GLXdispatchDrawArraysHeader *) pc; + __GLXdispatchDrawArraysComponentHeader *compHeader; + GLint numVertexes = hdr->numVertexes; + GLint numComponents = hdr->numComponents; + GLint arrayElementSize = 0; ++ GLint x, size; + int i; + + if (swap) { +@@ -374,6 +375,13 @@ + } + + pc += sizeof(__GLXdispatchDrawArraysHeader); ++ reqlen -= sizeof(__GLXdispatchDrawArraysHeader); ++ ++ size = safe_mul(sizeof(__GLXdispatchDrawArraysComponentHeader), ++ numComponents); ++ if (size < 0 || reqlen < 0 || reqlen < size) ++ return -1; ++ + compHeader = (__GLXdispatchDrawArraysComponentHeader *) pc; + + for (i = 0; i < numComponents; i++) { +@@ -417,17 +425,18 @@ + return -1; + } + +- arrayElementSize += __GLX_PAD(numVals * __glXTypeSize(datatype)); ++ x = safe_pad(safe_mul(numVals, __glXTypeSize(datatype))); ++ if ((arrayElementSize = safe_add(arrayElementSize, x)) < 0) ++ return -1; + + pc += sizeof(__GLXdispatchDrawArraysComponentHeader); + } + +- return ((numComponents * sizeof(__GLXdispatchDrawArraysComponentHeader)) + +- (numVertexes * arrayElementSize)); ++ return safe_add(size, safe_mul(numVertexes, arrayElementSize)); + } + + int +-__glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap) ++__glXSeparableFilter2DReqSize(const GLbyte * pc, Bool swap, int reqlen) + { + __GLXdispatchConvolutionFilterHeader *hdr = + (__GLXdispatchConvolutionFilterHeader *) pc; diff --git a/debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch b/debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch new file mode 100644 index 0000000..b004cac --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch @@ -0,0 +1,34 @@ +From a7c63d6599067dc8ff0d114536d2db3fadb4e195 Mon Sep 17 00:00:00 2001 +From: Robert Morell +Date: Wed, 12 Nov 2014 18:51:43 -0800 +Subject: [PATCH 33/33] glx: Fix mask truncation in __glXGetAnswerBuffer + [CVE-2014-8093 6/6] + +On a system where sizeof(unsigned) != sizeof(intptr_t), the unary +bitwise not operation will result in a mask that clears all high bits +from temp_buf in the expression: + temp_buf = (temp_buf + mask) & ~mask; + +Signed-off-by: Robert Morell +Reviewed-by: Alan Coopersmith +Signed-off-by: Alan Coopersmith +--- + glx/indirect_util.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/glx/indirect_util.c b/glx/indirect_util.c +index de81491..9ba2815 100644 +--- a/glx/indirect_util.c ++++ b/glx/indirect_util.c +@@ -73,7 +73,7 @@ __glXGetAnswerBuffer(__GLXclientState * cl, size_t required_size, + void *local_buffer, size_t local_size, unsigned alignment) + { + void *buffer = local_buffer; +- const unsigned mask = alignment - 1; ++ const intptr_t mask = alignment - 1; + + if (local_size < required_size) { + size_t worst_case_size; +-- +1.7.9.2 + diff --git a/debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch b/debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch new file mode 100644 index 0000000..11ea00e --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch @@ -0,0 +1,47 @@ +From b20912c3d45cbbde3c443e6c3d9e189092fe65e1 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 9 Dec 2014 09:30:57 -0800 +Subject: dbe: Call to DDX SwapBuffers requires address of int, not unsigned + int [CVE-2014-8097 pt. 2] + +When the local types used to walk the DBE request were changed, this +changed the type of the parameter passed to the DDX SwapBuffers API, +but there wasn't a matching change in the API definition. + +At this point, with the API frozen, I just stuck a new variable in +with the correct type. Because we've already bounds-checked nStuff to +be smaller than UINT32_MAX / sizeof(DbeSwapInfoRec), we know it will +fit in a signed int without overflow. + +Signed-off-by: Keith Packard +Signed-off-by: Alan Coopersmith + +diff --git a/dbe/dbe.c b/dbe/dbe.c +index df2ad5c..e5d928d 100644 +--- a/dbe/dbe.c ++++ b/dbe/dbe.c +@@ -452,6 +452,7 @@ ProcDbeSwapBuffers(ClientPtr client) + int error; + unsigned int i, j; + unsigned int nStuff; ++ int nStuff_i; /* DDX API requires int for nStuff */ + + REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); + nStuff = stuff->n; /* use local variable for performance. */ +@@ -527,9 +528,10 @@ ProcDbeSwapBuffers(ClientPtr client) + * could deal with cross-screen synchronization. + */ + +- while (nStuff > 0) { ++ nStuff_i = nStuff; ++ while (nStuff_i > 0) { + pDbeScreenPriv = DBE_SCREEN_PRIV_FROM_WINDOW(swapInfo[0].pWindow); +- error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff, swapInfo); ++ error = (*pDbeScreenPriv->SwapBuffers) (client, &nStuff_i, swapInfo); + if (error != Success) { + free(swapInfo); + return error; +-- +cgit v0.10.2 + diff --git a/debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch b/debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch new file mode 100644 index 0000000..612561f --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch @@ -0,0 +1,36 @@ +From 61b17c0f10307e25e51e30e6fb1d3e3127f82d86 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 9 Dec 2014 09:30:58 -0800 +Subject: glx: Can't mix declarations and code in X.org sources [CVE-2014-8098 + pt. 9] + +We're using compiler compatibility settings which generate warnings +when a variable is declared after the first statement. + +Signed-off-by: Keith Packard +Reviewed-by: Alan Coopersmith +Signed-off-by: Alan Coopersmith + +diff --git a/glx/clientinfo.c b/glx/clientinfo.c +index c5fef30..74ad919 100644 +--- a/glx/clientinfo.c ++++ b/glx/clientinfo.c +@@ -36,13 +36,14 @@ set_client_info(__GLXclientState * cl, xGLXSetClientInfoARBReq * req, + ClientPtr client = cl->client; + char *gl_extensions; + char *glx_extensions; ++ int size; + + REQUEST_AT_LEAST_SIZE(xGLXSetClientInfoARBReq); + + /* Verify that the size of the packet matches the size inferred from the + * sizes specified for the various fields. + */ +- int size = sz_xGLXSetClientInfoARBReq; ++ size = sz_xGLXSetClientInfoARBReq; + size = safe_add(size, safe_mul(req->numVersions, bytes_per_version)); + size = safe_add(size, safe_pad(req->numGLExtensionBytes)); + size = safe_add(size, safe_pad(req->numGLXExtensionBytes)); +-- +cgit v0.10.2 + diff --git a/debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch b/debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch new file mode 100644 index 0000000..69f1ea9 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch @@ -0,0 +1,28 @@ +From 9802a0162f738de03585ca3f3b8a8266494f7d45 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 9 Dec 2014 09:30:59 -0800 +Subject: Missing parens in REQUEST_FIXED_SIZE macro [CVE-2014-8092 pt. 5] + +The 'n' parameter must be surrounded by parens in both places to +prevent precedence from mis-computing things. + +Signed-off-by: Keith Packard +Reviewed-by: Alan Coopersmith +Signed-off-by: Alan Coopersmith + +diff --git a/include/dix.h b/include/dix.h +index 21176a8..921156b 100644 +--- a/include/dix.h ++++ b/include/dix.h +@@ -80,7 +80,7 @@ SOFTWARE. + + #define REQUEST_FIXED_SIZE(req, n)\ + if (((sizeof(req) >> 2) > client->req_len) || \ +- ((n >> 2) >= client->req_len) || \ ++ (((n) >> 2) >= client->req_len) || \ + ((((uint64_t) sizeof(req) + (n) + 3) >> 2) != (uint64_t) client->req_len)) \ + return(BadLength) + +-- +cgit v0.10.2 + diff --git a/debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch b/debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch new file mode 100644 index 0000000..ade1661 --- /dev/null +++ b/debian/patches/CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch @@ -0,0 +1,29 @@ +From 1559a94395258fd73e369f1a2c98a44bfe21a486 Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Tue, 9 Dec 2014 09:31:00 -0800 +Subject: dix: GetHosts bounds check using wrong pointer value [CVE-2014-8092 + pt. 6] + +GetHosts saves the pointer to allocated memory in *data, and then +wants to bounds-check writes to that region, but was mistakenly using +a bare 'data' instead of '*data'. Also, data is declared as void **, +so we need a cast to turn it into a byte pointer so we can actually do +pointer comparisons. + +Signed-off-by: Keith Packard +Reviewed-by: Alan Coopersmith +Signed-off-by: Alan Coopersmith + +Index: xorg-server-1.15.1/os/access.c +=================================================================== +--- xorg-server-1.15.1.orig/os/access.c 2014-12-09 17:12:07.880851371 -0500 ++++ xorg-server-1.15.1/os/access.c 2014-12-09 17:12:07.880851371 -0500 +@@ -1335,7 +1335,7 @@ + } + for (host = validhosts; host; host = host->next) { + len = host->len; +- if ((ptr + sizeof(xHostEntry) + len) > (data + n)) ++ if ((ptr + sizeof(xHostEntry) + len) > ((unsigned char *) *data + n)) + break; + ((xHostEntry *) ptr)->family = host->family; + ((xHostEntry *) ptr)->length = len; diff --git a/debian/patches/config-add-no-removal.patch b/debian/patches/config-add-no-removal.patch new file mode 100644 index 0000000..88a5b6d --- /dev/null +++ b/debian/patches/config-add-no-removal.patch @@ -0,0 +1,30 @@ +diff --git a/config/udev.c b/config/udev.c +index 454838f..74ac998 100644 +--- a/config/udev.c ++++ b/config/udev.c +@@ -300,10 +300,9 @@ wakeup_handler(pointer data, int err, pointer read_mask) + return; + action = udev_device_get_action(udev_device); + if (action) { +- if (!strcmp(action, "add")) { +- device_removed(udev_device); ++ if (!strcmp(action, "add")) + device_added(udev_device); +- } else if (!strcmp(action, "change")) { ++ else if (!strcmp(action, "change")) { + /* ignore change for the drm devices */ + if (strcmp(udev_device_get_subsystem(udev_device), "drm")) { + device_removed(udev_device); +diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c +index 76f5583..c125e35 100644 +--- a/hw/xfree86/os-support/linux/lnx_platform.c ++++ b/hw/xfree86/os-support/linux/lnx_platform.c +@@ -126,6 +126,8 @@ xf86PlatformDeviceProbe(struct OdevAttributes *attribs) + return; + + out_free: ++ LogMessage(X_INFO, "config/udev: Ignoring already known drm device (%s)\n", ++ path); + config_odev_free_attribute_list(attribs); + } + diff --git a/debian/patches/disable-rotation-transform-gpuscreens.patch b/debian/patches/disable-rotation-transform-gpuscreens.patch new file mode 100644 index 0000000..9f95572 --- /dev/null +++ b/debian/patches/disable-rotation-transform-gpuscreens.patch @@ -0,0 +1,13 @@ +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index a441fd1..9147a26 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -778,7 +778,7 @@ xf86CrtcScreenInit(ScreenPtr screen) + if (!crtc->funcs->shadow_allocate || !crtc->funcs->shadow_create) + break; + } +- if (c == config->num_crtc) { ++ if (c == config->num_crtc && !screen->isGPU) { + xf86RandR12SetRotations(screen, RR_Rotate_0 | RR_Rotate_90 | + RR_Rotate_180 | RR_Rotate_270 | + RR_Reflect_X | RR_Reflect_Y); diff --git a/debian/patches/drm_device_keep_trying.patch b/debian/patches/drm_device_keep_trying.patch new file mode 100644 index 0000000..8a8f920 --- /dev/null +++ b/debian/patches/drm_device_keep_trying.patch @@ -0,0 +1,172 @@ +From: Maarten Lankhorst +Subject: [PATCH] do not use drmGetBusid to grab the pci-id name + +The kernel returns EACCES or EAGAIN on drm open when the drm device is +currently unavailable, such as if it is in use by another process +(e.g. plymouth), or hasn't finished initializing (e.g. on a really fast +SSD). Because the probing is done before a vt switch is completed, +we have no way to ensure that we can own DRM master. This results +in failing to boot. + +Also attrib->unowned is not initialized, always initialize it to fix +a valgrind warning, and to prevent adding the same device a second time +after a vt switch. + +Fixes: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/982889 + +Signed-off-by: Bryce Harrington +--- + hw/xfree86/os-support/linux/lnx_platform.c | 29 +++++++++++++++++++++++++--- + 1 file changed, 26 insertions(+), 3 deletions(-) + +--- a/config/udev.c ++++ b/config/udev.c +@@ -98,7 +98,7 @@ + if (strncmp(sysname, "card", 4) != 0) + return; + +- LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path); ++ LogMessage(X_INFO, "config/udev: Adding drm device (%s) %s %s\n", path, sysname, syspath); + + config_udev_odev_setup_attribs(path, syspath, NewGPUDeviceRequest); + return; +@@ -430,11 +430,23 @@ + #ifdef CONFIG_UDEV_KMS + + static Bool ++get_pci_busid(const char *in, char *pci_str) ++{ ++ int ret, domain, bus, dev, func; ++ ret = sscanf(in, "/%04x:%02x:%02x.%d/drm/card%*d", &domain, &bus, &dev, &func); ++ if (ret != 4) ++ return FALSE; ++ sprintf(pci_str, "pci:%04x:%02x:%02x.%d", domain, bus, dev, func); ++ return TRUE; ++} ++ ++static Bool + config_udev_odev_setup_attribs(const char *path, const char *syspath, + config_odev_probe_proc_ptr probe_callback) + { + struct OdevAttributes *attribs = config_odev_allocate_attribute_list(); + int ret; ++ const char *platform; + + if (!attribs) + return FALSE; +@@ -447,6 +459,33 @@ + if (ret == FALSE) + goto fail; + ++ if (strstr(syspath, "/devices/pci")) { ++ char pci_str[17]; ++ const char *end = strstr(syspath, "/drm/card"); ++ if (strstr(syspath, "/usb")) ++ ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, ""); ++ else if (get_pci_busid(end - 13, pci_str)) ++ ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, pci_str); ++ } else if ((platform = strstr(syspath, "/devices/platform/"))) { ++ /* OMAP relies on this, modesetting doesn't use it */ ++ const char *end; ++ platform += 18; ++ end = strchr(platform, '.'); ++ if (end) { ++ char *busid; ++ ret = asprintf(&busid, "platform:%.*s:%02li", ++ (int)(end - platform), platform, strtol(end + 1, NULL, 10)); ++ if (ret >= 0) { ++ ret = config_odev_add_attribute(attribs, ODEV_ATTRIB_BUSID, busid); ++ free(busid); ++ } ++ else ++ ret = TRUE; ++ } ++ } ++ if (ret == FALSE) ++ goto fail; ++ + /* ownership of attribs is passed to probe layer */ + probe_callback(attribs); + return TRUE; +--- a/hw/xfree86/os-support/linux/lnx_platform.c ++++ b/hw/xfree86/os-support/linux/lnx_platform.c +@@ -19,44 +19,6 @@ + + #include "hotplug.h" + +-static Bool +-get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index) +-{ +- drmSetVersion sv; +- char *buf; +- int fd; +- int err = 0; +- +- fd = open(path, O_RDWR, O_CLOEXEC); +- if (fd == -1) +- return FALSE; +- +- sv.drm_di_major = 1; +- sv.drm_di_minor = 4; +- sv.drm_dd_major = -1; /* Don't care */ +- sv.drm_dd_minor = -1; /* Don't care */ +- +- err = drmSetInterfaceVersion(fd, &sv); +- if (err) { +- ErrorF("setversion 1.4 failed: %s\n", strerror(-err)); +- goto out; +- } +- +- /* for a delayed probe we've already added the device */ +- if (delayed_index == -1) { +- xf86_add_platform_device(attribs); +- delayed_index = xf86_num_platform_devices - 1; +- } +- +- buf = drmGetBusid(fd); +- xf86_add_platform_device_attrib(delayed_index, +- ODEV_ATTRIB_BUSID, buf); +- drmFreeBusid(buf); +-out: +- close(fd); +- return (err == 0); +-} +- + Bool + xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid) + { +@@ -105,11 +67,6 @@ + char *dpath; + dpath = xf86_get_platform_attrib(index, ODEV_ATTRIB_PATH); + +- ret = get_drm_info(attribs, dpath, index); +- if (ret == FALSE) { +- xf86_remove_platform_device(index); +- return; +- } + ret = xf86platformAddDevice(index); + if (ret == -1) + xf86_remove_platform_device(index); +@@ -145,18 +102,10 @@ + + LogMessage(X_INFO, "xfree86: Adding drm device (%s)\n", path); + +- if (!xf86VTOwner()) { +- /* if we don't currently own the VT then don't probe the device, +- just mark it as unowned for later use */ +- attribs->unowned = TRUE; +- xf86_add_platform_device(attribs); +- return; +- } +- +- ret = get_drm_info(attribs, path, -1); +- if (ret == FALSE) +- goto out_free; +- ++ /* if we don't currently own the VT then don't probe the device, ++ just mark it as unowned for later use */ ++ attribs->unowned = !xf86VTOwner(); ++ xf86_add_platform_device(attribs); + return; + + out_free: diff --git a/debian/patches/fb-24-depth.patch b/debian/patches/fb-24-depth.patch new file mode 100644 index 0000000..bdbd4c7 --- /dev/null +++ b/debian/patches/fb-24-depth.patch @@ -0,0 +1,35 @@ +commit fe5018e0564118a7a8198fa286186fdb9ed818c7 +Author: Takashi Iwai +Date: Tue Aug 19 15:57:22 2014 -0500 + + fb: Fix invalid bpp for 24bit depth window + + We have a hack in fb layer for a 24bpp screen to use 32bpp images, and + fbCreateWindow() replaces its drawable.bitsPerPixel field + appropriately. But, the problem is that it always replaces when 32bpp + is passed. If the depth is 32, this results in bpp < depth, which is + actually invalid. + + Meanwhile, fbCreatePixmap() has a more check and it creates with 24bpp + only when the passed depth <= 24 for avoiding such a problem. + + This oneliner patch just adds the similar check in fbCreateWindow(). + This (hopefully) fixes the long-standing broken graphics mess of + cirrus KMS with 24bpp. + + Signed-off-by: Takashi Iwai + Reviewed-by: Keith Packard + +diff --git a/fb/fbwindow.c b/fb/fbwindow.c +index 368c4b8..c90175f 100644 +--- a/fb/fbwindow.c ++++ b/fb/fbwindow.c +@@ -33,7 +33,7 @@ fbCreateWindow(WindowPtr pWin) + { + dixSetPrivate(&pWin->devPrivates, fbGetWinPrivateKey(pWin), + fbGetScreenPixmap(pWin->drawable.pScreen)); +- if (pWin->drawable.bitsPerPixel == 32) ++ if (pWin->drawable.bitsPerPixel == 32 && pWin->drawable.depth <= 24) + pWin->drawable.bitsPerPixel = + fbGetScreenPrivate(pWin->drawable.pScreen)->win32bpp; + return TRUE; diff --git a/debian/patches/fix-detach-gpu.patch b/debian/patches/fix-detach-gpu.patch new file mode 100644 index 0000000..cba33cf --- /dev/null +++ b/debian/patches/fix-detach-gpu.patch @@ -0,0 +1,89 @@ +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1800,7 +1800,8 @@ + ScreenPtr cmScreen = pScreen->current_master; + + xf86DetachOutputGPU(pScreen); +- AttachUnboundGPU(cmScreen, pScreen); ++ if (!pScreen->current_master) ++ AttachUnboundGPU(cmScreen, pScreen); + } + provider->output_source = NULL; + return TRUE; +@@ -1811,7 +1812,8 @@ + + SetRootClip(source_provider->pScreen, FALSE); + +- DetachUnboundGPU(pScreen); ++ if (!pScreen->current_master) ++ DetachUnboundGPU(pScreen); + AttachOutputGPU(source_provider->pScreen, pScreen); + + provider->output_source = source_provider; +@@ -1828,7 +1830,8 @@ + if (provider->offload_sink) { + ScreenPtr cmScreen = pScreen->current_master; + xf86DetachOutputGPU(pScreen); +- AttachUnboundGPU(cmScreen, pScreen); ++ if (!pScreen->current_master) ++ AttachUnboundGPU(cmScreen, pScreen); + } + + provider->offload_sink = NULL; +@@ -1838,7 +1841,8 @@ + if (provider->offload_sink == sink_provider) + return TRUE; + +- DetachUnboundGPU(pScreen); ++ if (!pScreen->current_master) ++ DetachUnboundGPU(pScreen); + AttachOffloadGPU(sink_provider->pScreen, pScreen); + + provider->offload_sink = sink_provider; +@@ -1917,12 +1921,14 @@ + config->randr_provider->offload_sink = NULL; + RRSetChanged(screen); + } +- else if (config->randr_provider->output_source) { ++ ++ if (config->randr_provider->output_source) { + xf86DetachOutputGPU(screen); + config->randr_provider->output_source = NULL; + RRSetChanged(screen); + } +- else if (screen->current_master) ++ ++ if (screen->current_master) + DetachUnboundGPU(screen); + } + config->randr_provider = NULL; +--- a/dix/dispatch.c ++++ b/dix/dispatch.c +@@ -3911,6 +3911,8 @@ AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new) + assert(new->isGPU); + assert(!new->current_master); + xorg_list_add(&new->unattached_head, &pScreen->unattached_list); ++ xorg_list_init(&new->offload_head); ++ xorg_list_init(&new->output_head); + new->current_master = pScreen; + } + +@@ -3937,7 +3937,8 @@ + { + assert(slave->isGPU); + xorg_list_del(&slave->output_head); +- slave->current_master = NULL; ++ if (xorg_list_is_empty(&slave->offload_head)) ++ slave->current_master = NULL; + } + + void +@@ -3953,6 +3954,7 @@ + { + assert(slave->isGPU); + xorg_list_del(&slave->offload_head); +- slave->current_master = NULL; ++ if (xorg_list_is_empty(&slave->output_head)) ++ slave->current_master = NULL; + } + diff --git a/debian/patches/fix-ftbfs-ppc64el.patch b/debian/patches/fix-ftbfs-ppc64el.patch new file mode 100644 index 0000000..f188ac8 --- /dev/null +++ b/debian/patches/fix-ftbfs-ppc64el.patch @@ -0,0 +1,13 @@ +diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c +index a9a9fa5..f88cdc0 100644 +--- a/hw/kdrive/src/kinput.c ++++ b/hw/kdrive/src/kinput.c +@@ -221,7 +221,7 @@ KdUnregisterFd(void *closure, int fd, Bool do_close) + if (do_close) + close(kdInputFds[i].fd); + kdNumInputFds--; +- for (j = i; j < (kdNumInputFds - 1); j++) ++ for (j = i; j < (kdNumInputFds - 1) && j < (KD_MAX_INPUT_FDS - 1); j++) + kdInputFds[j] = kdInputFds[j + 1]; + break; + } diff --git a/debian/patches/mi-dont-process-disabled.patch b/debian/patches/mi-dont-process-disabled.patch new file mode 100644 index 0000000..81691ee --- /dev/null +++ b/debian/patches/mi-dont-process-disabled.patch @@ -0,0 +1,62 @@ +Date: Tue, 20 May 2014 14:32:59 +1000 +From: Peter Hutterer +Subject: [PATCH] mi: don't process events from disabled devices (#77884) + +Once a device is disabled, it doesn't have a sprite pointer anymore. If an +event is still in the queue and processed after DisableDevice finished, a +dereference causes a crash. Example backtrace (crash forced by injecting an +event at the right time): + +(EE) 0: /opt/xorg/bin/Xorg (OsSigHandler+0x3c) [0x48d334] +(EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x37fcc0f74f] +(EE) 2: /opt/xorg/bin/Xorg (mieqMoveToNewScreen+0x38) [0x609240] +(EE) 3: /opt/xorg/bin/Xorg (mieqProcessDeviceEvent+0xd4) [0x609389] +(EE) 4: /opt/xorg/bin/Xorg (mieqProcessInputEvents+0x206) [0x609720] +(EE) 5: /opt/xorg/bin/Xorg (ProcessInputEvents+0xd) [0x4aeb58] +(EE) 6: /opt/xorg/bin/Xorg (xf86VTSwitch+0x1a6) [0x4af457] +(EE) 7: /opt/xorg/bin/Xorg (xf86Wakeup+0x2bf) [0x4af0a7] +(EE) 8: /opt/xorg/bin/Xorg (WakeupHandler+0x83) [0x4445cb] +(EE) 9: /opt/xorg/bin/Xorg (WaitForSomething+0x3fe) [0x491bf6] +(EE) 10: /opt/xorg/bin/Xorg (Dispatch+0x97) [0x435748] +(EE) 11: /opt/xorg/bin/Xorg (dix_main+0x61d) [0x4438a9] +(EE) 12: /opt/xorg/bin/Xorg (main+0x28) [0x49ba28] +(EE) 13: /lib64/libc.so.6 (__libc_start_main+0xf5) [0x37fc821d65] +(EE) 14: /opt/xorg/bin/Xorg (_start+0x29) [0x425e69] +(EE) 15: ? (?+0x29) [0x29] + +xf86VTSwitch() calls ProcessInputEvents() before disabling a device, and +DisableDevice() calls mieqProcessInputEvents() again when flushing touches and +button events. Between that and disabling the device (which causes new events +to be refused) there is a window where events may be triggered and enqueued. +On the next call to PIE that event is processed on a now defunct device, +causing the crash. + +The simplest fix to this is to discard events from disabled devices. We flush +the queue often enough before disabling that when we get here, we really don't +care about the events from this device. + +X.Org Bug 77884 +--- +Modified by Maarten Lankhorst to pass tests. + + mi/mieq.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/mi/mieq.c b/mi/mieq.c +index 4c07480..188a0b0 100644 +--- a/mi/mieq.c ++++ b/mi/mieq.c +@@ -515,6 +515,10 @@ mieqProcessDeviceEvent(DeviceIntPtr dev, InternalEvent *event, ScreenPtr screen) + + verify_internal_event(event); + ++ /* refuse events from disabled devices */ ++ if (dev && !dev->enabled) ++ return 0; ++ + /* Custom event handler */ + handler = miEventQueue.handlers[event->any.type]; + +-- +1.9.0 + diff --git a/debian/patches/no-nv.patch b/debian/patches/no-nv.patch new file mode 100644 index 0000000..4fb23e7 --- /dev/null +++ b/debian/patches/no-nv.patch @@ -0,0 +1,24 @@ +commit b770266fa9c3fab5374bdf109676e0b129ac4546 +Author: Bryce Harrington +Date: Wed Apr 3 13:36:20 2013 -0700 + + Don't bother probing -nv on linux. + + For linux this driver is long obsolete now. It may have some relevance + on non-linux systems. + +diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c +index b2545be..73a662d 100644 +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1220,8 +1220,9 @@ xf86VideoPtrToDriverList(struct pci_device *dev, + driverList[idx++] = "nvidia"; + #ifdef __linux__ + driverList[idx++] = "nouveau"; +-#endif ++#else + driverList[idx++] = "nv"; ++#endif + break; + } + case 0x1106: diff --git a/debian/patches/pixman-validate.patch b/debian/patches/pixman-validate.patch new file mode 100644 index 0000000..513de6c --- /dev/null +++ b/debian/patches/pixman-validate.patch @@ -0,0 +1,27 @@ +diff --git a/exa/exa_render.c b/exa/exa_render.c +index 172e2b5..807eeba 100644 +--- a/exa/exa_render.c ++++ b/exa/exa_render.c +@@ -1141,7 +1141,8 @@ exaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst, + + exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST); + for (; ntrap; ntrap--, traps++) +- (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1); ++ if (xTrapezoidValid(traps)) ++ (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1); + exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST); + + xRel = bounds.x1 + xSrc - xDst; +diff --git a/render/picture.h b/render/picture.h +index c85353a..49eb263 100644 +--- a/render/picture.h ++++ b/render/picture.h +@@ -211,7 +211,7 @@ typedef pixman_fixed_t xFixed; + /* whether 't' is a well defined not obviously empty trapezoid */ + #define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \ + (t)->right.p1.y != (t)->right.p2.y && \ +- (int) ((t)->bottom - (t)->top) > 0) ++ (t)->bottom > 0 && (int) ((t)->bottom - (t)->top) > 0) + + /* + * Standard NTSC luminance conversions: diff --git a/debian/patches/ppc64el-endian-fix.patch b/debian/patches/ppc64el-endian-fix.patch new file mode 100644 index 0000000..6950b27 --- /dev/null +++ b/debian/patches/ppc64el-endian-fix.patch @@ -0,0 +1,34 @@ +From adb7bc3386559dfee34b359dadcbb6796bc416e7 Mon Sep 17 00:00:00 2001 +From: Dinar Valeev +Date: Mon, 24 Feb 2014 10:36:54 +0000 +Subject: arch: Fix image and bitmap byte order for ppc64le + +So far PPC was big endian for sure. For ppc64le this is no longer +true. + +Signed-off-by: Egbert Eich +Reviewed-by: Mark Kettenis +Signed-off-by: Keith Packard +--- +diff --git a/include/servermd.h b/include/servermd.h +index 081123b..e413314 100644 +--- a/include/servermd.h ++++ b/include/servermd.h +@@ -114,8 +114,13 @@ SOFTWARE. + + #if defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) + +-#define IMAGE_BYTE_ORDER MSBFirst +-#define BITMAP_BIT_ORDER MSBFirst ++#if defined(__LITTLE_ENDIAN__) ++#define IMAGE_BYTE_ORDER LSBFirst ++#define BITMAP_BIT_ORDER LSBFirst ++#else ++#define IMAGE_BYTE_ORDER MSBFirst ++#define BITMAP_BIT_ORDER MSBFirst ++#endif + #define GLYPHPADBYTES 4 + + #endif /* PowerPC */ +-- +cgit v0.9.0.2-2-gbebe diff --git a/debian/patches/rotation-slaved-crtc-bounds.patch b/debian/patches/rotation-slaved-crtc-bounds.patch new file mode 100644 index 0000000..4c8345a --- /dev/null +++ b/debian/patches/rotation-slaved-crtc-bounds.patch @@ -0,0 +1,122 @@ +From: Chris Wilson +To: xorg-devel@lists.x.org +Subject: [PATCH 2/3] randr: Consider rotation of slaved crtcs when computing bounds +Date: Wed, 23 Jul 2014 12:35:14 +0100 + +When creating a pixmap to cover a rotated slaved CRTC, we need to +consider its rotated size as that is the area that it occupies in the +framebuffer. The slave is then responsible for mapping the copy of the +framebuffer onto the rotated scanout - which can be the usual RandR +shadow composite method. + +Signed-off-by: Chris Wilson +Cc: Dave Airlie +Cc: Maarten Lankhorst +--- + randr/rrcrtc.c | 56 ++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 36 insertions(+), 20 deletions(-) + +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -273,27 +273,43 @@ + return FALSE; + } + +-static void +-crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom) ++static int mode_height(const RRModeRec *mode, Rotation rotation) + { +- *left = crtc->x; +- *top = crtc->y; +- +- switch (crtc->rotation) { ++ switch (rotation & 0xf) { + case RR_Rotate_0: + case RR_Rotate_180: ++ return mode->mode.height; ++ case RR_Rotate_90: ++ case RR_Rotate_270: ++ return mode->mode.width; + default: +- *right = crtc->x + crtc->mode->mode.width; +- *bottom = crtc->y + crtc->mode->mode.height; +- return; ++ return 0; ++ } ++} ++ ++static int mode_width(const RRModeRec *mode, Rotation rotation) ++{ ++ switch (rotation & 0xf) { ++ case RR_Rotate_0: ++ case RR_Rotate_180: ++ return mode->mode.width; + case RR_Rotate_90: + case RR_Rotate_270: +- *right = crtc->x + crtc->mode->mode.height; +- *bottom = crtc->y + crtc->mode->mode.width; +- return; ++ return mode->mode.height; ++ default: ++ return 0; + } + } + ++static void ++crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom) ++{ ++ *left = crtc->x; ++ *top = crtc->y; ++ *right = crtc->x + mode_width(crtc->mode, crtc->rotation); ++ *bottom = crtc->y + mode_height(crtc->mode, crtc->rotation); ++} ++ + /* overlapping counts as adjacent */ + static Bool + crtcs_adjacent(const RRCrtcPtr a, const RRCrtcPtr b) +@@ -466,9 +482,9 @@ + if (!pScrPriv->crtcs[c]->mode) + continue; + newbox.x1 = pScrPriv->crtcs[c]->x; +- newbox.x2 = pScrPriv->crtcs[c]->x + pScrPriv->crtcs[c]->mode->mode.width; ++ newbox.x2 = pScrPriv->crtcs[c]->x + mode_width(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation); + newbox.y1 = pScrPriv->crtcs[c]->y; +- newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height; ++ newbox.y2 = pScrPriv->crtcs[c]->y + mode_height(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation); + } + RegionInit(&new_crtc_region, &newbox, 1); + RegionUnion(&total_region, &total_region, &new_crtc_region); +@@ -487,9 +503,9 @@ + if (!pScrPriv->crtcs[c]->mode) + continue; + newbox.x1 = pScrPriv->crtcs[c]->x; +- newbox.x2 = pScrPriv->crtcs[c]->x + pScrPriv->crtcs[c]->mode->mode.width; ++ newbox.x2 = pScrPriv->crtcs[c]->x + mode_width(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation); + newbox.y1 = pScrPriv->crtcs[c]->y; +- newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height; ++ newbox.y2 = pScrPriv->crtcs[c]->y + mode_height(pScrPriv->crtcs[c]->mode, pScrPriv->crtcs[c]->rotation); + } + RegionInit(&new_crtc_region, &newbox, 1); + RegionUnion(&total_region, &total_region, &new_crtc_region); +@@ -544,8 +560,8 @@ + int width = 0, height = 0; + + if (mode) { +- width = mode->mode.width; +- height = mode->mode.height; ++ width = mode_width(mode, rotation); ++ height = mode_height(mode, rotation); + } + ErrorF("have a master to look out for\n"); + ret = rrCheckPixmapBounding(master, crtc, +@@ -1672,8 +1688,8 @@ + changed = FALSE; + if (crtc->mode && crtc->x == pDrawable->x && + crtc->y == pDrawable->y && +- crtc->mode->mode.width == pDrawable->width && +- crtc->mode->mode.height == pDrawable->height) ++ mode_width(crtc->mode, crtc->rotation) == pDrawable->width && ++ mode_height(crtc->mode, crtc->rotation) == pDrawable->height) + size_fits = TRUE; + + /* is the pixmap already set? */ diff --git a/debian/patches/rrcrtc-brackets-are-hard.patch b/debian/patches/rrcrtc-brackets-are-hard.patch new file mode 100644 index 0000000..6605162 --- /dev/null +++ b/debian/patches/rrcrtc-brackets-are-hard.patch @@ -0,0 +1,42 @@ +From dd0c31d6b7559bb0dda6283a5d345d537f1d6b42 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Tue, 30 Jul 2013 13:17:45 +1000 +Subject: [PATCH] rrcrtc: brackets are hard, lets go shopping. + +Slaving two outputs on a secondary GPU to a primary GPU testing +picked this up, in that we'd try to resize to the totally the +wrong thing, then as usual segfault in the rotation code. + +Signed-off-by: Dave Airlie +--- + randr/rrcrtc.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c +index 2f76b62..40b01f0 100644 +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -474,7 +474,7 @@ rrCheckPixmapBounding(ScreenPtr pScreen, + + xorg_list_for_each_entry(slave, &pScreen->output_slave_list, output_head) { + rrScrPriv(slave); +- for (c = 0; c < pScrPriv->numCrtcs; c++) ++ for (c = 0; c < pScrPriv->numCrtcs; c++) { + if (pScrPriv->crtcs[c] == rr_crtc) { + newbox.x1 = x; + newbox.x2 = x + w; +@@ -489,8 +489,9 @@ rrCheckPixmapBounding(ScreenPtr pScreen, + newbox.y1 = pScrPriv->crtcs[c]->y; + newbox.y2 = pScrPriv->crtcs[c]->y + pScrPriv->crtcs[c]->mode->mode.height; + } +- RegionInit(&new_crtc_region, &newbox, 1); +- RegionUnion(&total_region, &total_region, &new_crtc_region); ++ RegionInit(&new_crtc_region, &newbox, 1); ++ RegionUnion(&total_region, &total_region, &new_crtc_region); ++ } + } + + newsize = RegionExtents(&total_region); +-- +1.8.2.1 + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..f1c7cc4 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,105 @@ +## Patches with a number < 100 are applied in debian. +## Ubuntu patches start with 100. +001_fedora_extramodes.patch +02_kbsd-input-devd.diff +03_static-nettle.diff +05_Revert-Unload-submodules.diff +06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff +08_xfree86_fix_ia64_inx_outx.diff + +## Ubuntu patches, not upstreamable +105_nvidia_fglrx_autodetect.patch +168_glibc_trace_to_stderr.patch +188_default_primary_to_first_busid.patch +190_cache-xkbcomp_output_for_fast_start_up.patch +191-Xorg-add-an-extra-module-path.patch +226_fall_back_to_autoconfiguration.patch + +## send upstream +232-xf86compatoutput-valgrind.patch +xfree86-no-xv-for-gpuscreens.patch +no-nv.patch + +## waiting for review by upstream +111_armel-drv-fallbacks.patch +122_xext_fix_card32_overflow_in_xauth.patch +# https://bugs.freedesktop.org/show_bug.cgi?id=27134 +# http://lists.x.org/archives/xorg-devel/2010-April/007777.html +# Resent to mailing list, Feb 2013 +208_switch_on_release.diff +# https://bugs.freedesktop.org/show_bug.cgi?id=865 +# - Violates XKB spec: Section 6.3, SA_LockGroup +# http://lists.freedesktop.org/archives/xorg-devel/2013-January/035046.html +# - Different implementation proposed on fdo mailing list +227_null_ptr_midispcur.patch +# https://bugs.freedesktop.org/show_bug.cgi?id=24181 +# Probably is just papering over issue; needs further analysis + +## upstream patches + +# hybrid graphics fixes +228_autobind_gpu.patch +xf86-fixup-detection.patch +xf86-inactive-gpuscreen.patch +xrandr-rroutputchanged-main.patch +rrcrtc-brackets-are-hard.patch +config-add-no-removal.patch +xf86-ignore-conflicting-rr-caps.patch +fix-detach-gpu.patch +disable-rotation-transform-gpuscreens.patch + +pixman-validate.patch +fix-ftbfs-ppc64el.patch +xmir.patch +drm_device_keep_trying.patch +xi2-resize-touch.patch +xi-dont-copy-too-much.patch +mi-dont-process-disabled.patch +ppc64el-endian-fix.patch +xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch +xfree86_keep_non_seat0_from_touching_vts.patch +xfree86_add_matchseat_key_to_xorg_conf.patch +xfree86_add_matchseat_key_description_to_xorg_conf_man.patch +rotation-slaved-crtc-bounds.patch +fb-24-depth.patch + +# CVE-2014-8095 to CVE-2014-8103 +CVE-2014-8xxx/0000-glx-check-return.patch +CVE-2014-8xxx/0000-regionsize-size_t.patch +CVE-2014-8xxx/0001-unchecked-malloc-may-allow-unauthed-client-to-crash-.patch +CVE-2014-8xxx/0002-dix-integer-overflow-in-ProcPutImage-CVE-2014-8092-1.patch +CVE-2014-8xxx/0003-dix-integer-overflow-in-GetHosts-CVE-2014-8092-2-4.patch +CVE-2014-8xxx/0004-dix-integer-overflow-in-RegionSizeof-CVE-2014-8092-3.patch +CVE-2014-8xxx/0005-dix-integer-overflow-in-REQUEST_FIXED_SIZE-CVE-2014-.patch +CVE-2014-8xxx/0006-dri2-integer-overflow-in-ProcDRI2GetBuffers-CVE-2014.patch +CVE-2014-8xxx/0007-dbe-unvalidated-lengths-in-DbeSwapBuffers-calls-CVE-.patch +CVE-2014-8xxx/0008-Xi-unvalidated-lengths-in-Xinput-extension-CVE-2014-.patch +CVE-2014-8xxx/0009-xcmisc-unvalidated-length-in-SProcXCMiscGetXIDList-C.patch +CVE-2014-8xxx/0010-Xv-unvalidated-lengths-in-XVideo-extension-swapped-p.patch +CVE-2014-8xxx/0011-dri3-unvalidated-lengths-in-DRI3-extension-swapped-p.patch +CVE-2014-8xxx/0012-present-unvalidated-lengths-in-Present-extension-pro.patch +CVE-2014-8xxx/0013-randr-unvalidated-lengths-in-RandR-extension-swapped.patch +CVE-2014-8xxx/0014-render-check-request-size-before-reading-it-CVE-2014.patch +CVE-2014-8xxx/0015-render-unvalidated-lengths-in-Render-extn.-swapped-p.patch +CVE-2014-8xxx/0016-xfixes-unvalidated-length-in-SProcXFixesSelectSelect.patch +CVE-2014-8xxx/0017-Add-request-length-checking-test-cases-for-some-Xinp.patch +CVE-2014-8xxx/0018-Add-request-length-checking-test-cases-for-some-Xinp.patch +CVE-2014-8xxx/0019-Add-REQUEST_FIXED_SIZE-testcases-to-test-misc.c.patch +CVE-2014-8xxx/0020-glx-Be-more-paranoid-about-variable-length-requests-.patch +CVE-2014-8xxx/0021-glx-Be-more-strict-about-rejecting-invalid-image-siz.patch +CVE-2014-8xxx/0022-glx-Additional-paranoia-in-__glXGetAnswerBuffer-__GL.patch +CVE-2014-8xxx/0023-glx-Fix-image-size-computation-for-EXT_texture_integ.patch +CVE-2014-8xxx/0024-glx-Add-safe_-add-mul-pad-v3-CVE-2014-8093-4-6.patch +CVE-2014-8xxx/0025-glx-Length-checking-for-GLXRender-requests-v2-CVE-20.patch +CVE-2014-8xxx/0026-glx-Integer-overflow-protection-for-non-generated-re.patch +CVE-2014-8xxx/0027-glx-Length-checking-for-RenderLarge-requests-v2-CVE-.patch +CVE-2014-8xxx/0028-glx-Top-level-length-checking-for-swapped-VendorPriv.patch +CVE-2014-8xxx/0029-glx-Request-length-checks-for-SetClientInfoARB-CVE-2.patch +CVE-2014-8xxx/0030-glx-Length-checking-for-non-generated-vendor-private.patch +CVE-2014-8xxx/0031-glx-Length-checking-for-non-generated-single-request.patch +CVE-2014-8xxx/0032-glx-Pass-remaining-request-length-into-varsize-v2-CV.patch +CVE-2014-8xxx/0033-glx-Fix-mask-truncation-in-__glXGetAnswerBuffer-CVE-.patch +CVE-2014-8xxx/0034-CVE-2014-8097-additional.patch +CVE-2014-8xxx/0035-CVE-2014-8098-additional.patch +CVE-2014-8xxx/0036-CVE-2014-8092-additional.patch +CVE-2014-8xxx/0037-CVE-2014-8092-additional-2.patch diff --git a/debian/patches/xf86-fixup-detection.patch b/debian/patches/xf86-fixup-detection.patch new file mode 100644 index 0000000..e454c75 --- /dev/null +++ b/debian/patches/xf86-fixup-detection.patch @@ -0,0 +1,79 @@ +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -546,6 +546,15 @@ + for (k = 0; k < xf86NumEntities; k++) { + EntityPtr pEnt = xf86Entities[k]; + ++#ifdef XSERVER_PLATFORM_BUS ++ if (pEnt->bus.type == BUS_PLATFORM && ++ pEnt->bus.id.plat->pdev && ++ MATCH_PCI_DEVICES(pEnt->bus.id.plat->pdev, pPci)) { ++ foundScreen = TRUE; ++ break; ++ } ++#endif ++ + if (pEnt->bus.type != BUS_PCI) + continue; + if (pEnt->bus.id.pci == pPci) { +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -167,11 +167,12 @@ + for (i = 0; i < xf86NumEntities; i++) { + const EntityPtr u = xf86Entities[i]; + +- if (pd->pdev && u->bus.type == BUS_PCI) +- return !MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci); +- if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat)) { ++ if (pd->pdev && u->bus.type == BUS_PCI && ++ MATCH_PCI_DEVICES(pd->pdev, u->bus.id.pci)) ++ return FALSE; ++ ++ if ((u->bus.type == BUS_PLATFORM) && (pd == u->bus.id.plat)) + return FALSE; +- } + } + return TRUE; + } +@@ -302,6 +303,11 @@ + for (nent = 0; nent < xf86NumEntities; nent++) { + EntityPtr pEnt = xf86Entities[nent]; + ++ if (dev->pdev && pEnt->bus.type == BUS_PCI && ++ MATCH_PCI_DEVICES(dev->pdev, pEnt->bus.id.pci)) { ++ return FALSE; ++ } ++ + if (pEnt->bus.type != BUS_PLATFORM) + continue; + if (pEnt->bus.id.plat == dev) { +@@ -368,18 +374,15 @@ + /* for non-seat0 servers assume first device is the master */ + if (ServerIsNotSeat0()) + break; +- if (xf86_platform_devices[j].pdev) { +- if (xf86IsPrimaryPlatform(&xf86_platform_devices[j])) +- break; +- } +- else { ++ if (xf86IsPrimaryPlatform(&xf86_platform_devices[j])) ++ break; ++ else + /* there's no way to handle real platform devices at this point, + * as there's no valid busID to be used, so try to move forward + * in case there's only one platform device, and see if the + * driver's probe succeeds or not at least once */ + if ((xf86_num_platform_devices == 1) && (!foundScreen)) + break; +- } + } + } + +@@ -398,6 +401,7 @@ + } + } + ++ free(devList); + return foundScreen; + } + diff --git a/debian/patches/xf86-ignore-conflicting-rr-caps.patch b/debian/patches/xf86-ignore-conflicting-rr-caps.patch new file mode 100644 index 0000000..162a30f --- /dev/null +++ b/debian/patches/xf86-ignore-conflicting-rr-caps.patch @@ -0,0 +1,20 @@ +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1569,10 +1569,16 @@ + } + + if (config->name) { ++ uint32_t caps = pScrn->capabilities; + config->randr_provider = RRProviderCreate(pScreen, config->name, + strlen(config->name)); + +- RRProviderSetCapabilities(config->randr_provider, pScrn->capabilities); ++ if (!pScreen->isGPU) ++ caps &= RR_Capability_SinkOffload | RR_Capability_SourceOutput; ++ else ++ caps &= RR_Capability_SourceOffload | RR_Capability_SinkOutput; ++ ++ RRProviderSetCapabilities(config->randr_provider, caps); + } + + return TRUE; diff --git a/debian/patches/xf86-inactive-gpuscreen.patch b/debian/patches/xf86-inactive-gpuscreen.patch new file mode 100644 index 0000000..11ffec4 --- /dev/null +++ b/debian/patches/xf86-inactive-gpuscreen.patch @@ -0,0 +1,26 @@ +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index c790d50..a47c2d0 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -387,7 +387,7 @@ xf86platformProbeDev(DriverPtr drvp) + Bool foundScreen = FALSE; + GDevPtr *devList; + const unsigned numDevs = xf86MatchDevice(drvp->driverName, &devList); +- int i, j; ++ int i, j, flags; + + /* find the main device or any device specificed in xorg.conf */ + for (i = 0; i < numDevs; i++) { +@@ -415,7 +415,11 @@ xf86platformProbeDev(DriverPtr drvp) + if (j == xf86_num_platform_devices) + continue; + +- foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], 0); ++ flags = 0; ++ if (!devList[i]->active) ++ flags |= PLATFORM_PROBE_GPU_SCREEN; ++ ++ foundScreen = probeSingleDevice(&xf86_platform_devices[j], drvp, devList[i], flags); + if (!foundScreen) + continue; + } diff --git a/debian/patches/xfree86-no-xv-for-gpuscreens.patch b/debian/patches/xfree86-no-xv-for-gpuscreens.patch new file mode 100644 index 0000000..cfb0f08 --- /dev/null +++ b/debian/patches/xfree86-no-xv-for-gpuscreens.patch @@ -0,0 +1,36 @@ +diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c +index 92d0f6d..a33366a 100644 +--- a/hw/xfree86/common/xf86xv.c ++++ b/hw/xfree86/common/xf86xv.c +@@ -234,7 +234,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86VideoAdaptorPtr * adaptors, int num) + XF86XVScreenPtr ScreenPriv; + XvScreenPtr pxvs; + +- if (num <= 0 || noXvExtension) ++ if (num <= 0 || noXvExtension || pScreen->isGPU) + return FALSE; + + if (Success != XvScreenInit(pScreen)) +diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c +index 78a32bf..a0f6fcd 100644 +--- a/hw/xfree86/common/xf86xvmc.c ++++ b/hw/xfree86/common/xf86xvmc.c +@@ -148,11 +148,15 @@ xf86XvMCScreenInit(ScreenPtr pScreen, + { + XvMCAdaptorPtr pAdapt; + xf86XvMCScreenPtr pScreenPriv; +- XvScreenPtr pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates, +- XF86XvScreenKey); ++ XvScreenPtr pxvs; + int i, j; + +- if (noXvExtension) ++ if (noXvExtension || pScreen->isGPU || !XF86XvScreenKey) ++ return FALSE; ++ ++ pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates, ++ XF86XvScreenKey); ++ if (!pxvs) + return FALSE; + + if (!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors))) diff --git a/debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch b/debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch new file mode 100644 index 0000000..c7f70cc --- /dev/null +++ b/debian/patches/xfree86_add_matchseat_key_description_to_xorg_conf_man.patch @@ -0,0 +1,68 @@ +From a6f5ffd5879e7fb052d343592951cc476b699bb4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= +Date: Thu, 3 Apr 2014 11:19:15 -0300 +Subject: [PATCH] xfree86: add short description about MatchSeat key in + xorg.conf man page +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Laércio de Sousa +Reviewed-by: Dave Airlie +Signed-off-by: Peter Hutterer +--- + hw/xfree86/man/xorg.conf.man | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man +index 6d2652e..cadd87b 100644 +--- a/hw/xfree86/man/xorg.conf.man ++++ b/hw/xfree86/man/xorg.conf.man +@@ -1378,6 +1378,14 @@ for the regular text mode. + The frequency is specified in MHz. + This is rarely used. + .TP 7 ++.BI "MatchSeat " "seat\-id" ++Only apply this ++.B Device ++section if X server was started with ++.B -seat ++.I seat\-id ++option. ++.TP 7 + .BI "Option \*qModeDebug\*q \*q" boolean \*q + Enable printing of additional debugging information about modesetting to + the server log. +@@ -1900,6 +1908,14 @@ The only case where there is even a choice in this value is for depth 24, + where some hardware supports both a packed 24 bit framebuffer layout and a + sparse 32 bit framebuffer layout. + .TP 7 ++.BI "MatchSeat " "seat\-id" ++Only apply this ++.B Screen ++section if X server was started with ++.B -seat ++.I seat\-id ++option. ++.TP 7 + .B Options + Various + .B Option +@@ -2295,6 +2311,14 @@ and the first two should normally be used to indicate the core pointer + and core keyboard devices respectively. + .RE + .TP 7 ++.BI "MatchSeat " "seat\-id" ++Only apply this ++.B ServerLayout ++section if X server was started with ++.B -seat ++.I seat\-id ++option. ++.TP 7 + .B Options + In addition to the following, any option permitted in the + .B ServerFlags +-- +2.0.4 + diff --git a/debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch b/debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch new file mode 100644 index 0000000..31ab950 --- /dev/null +++ b/debian/patches/xfree86_add_matchseat_key_to_xorg_conf.patch @@ -0,0 +1,248 @@ +From 7070ebeebaca1b51f8a2801989120784a1c374ae Mon Sep 17 00:00:00 2001 +From: Oleg Samarin +Date: Thu, 3 Apr 2014 11:19:14 -0300 +Subject: [PATCH] xfree86: add new key MatchSeat to xorg.conf sections + "Device", "Screen", and "ServerLayout" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This patch introduces a new key MatchSeat in xorg.conf (also applies to +any .conf file in xorg.conf.d). It will allow targeting a given +"Device", "Screen", and/or "ServerLayout" section to a particular +seat only (specified by option "-seat" in X server command line), +so that other seats won't be affected. + +Without this patch, one needs to write a separate xorg.conf.custom +file and pass it to X server via "-config" option, if one wants that +these settings only apply for the right seat. However, in some cases, +this solution is undesirable or even impossible (e.g. when using GDM, +which doesn't allow X server command line customization). + +Example file (/etc/X11/xorg.conf.d/seat1.conf), which would be ignored +by X server unless it was started with "-seat seat1" option: + +Section "Device" + Identifier "card0" + Driver "nvidia" + Option "NoLogo" "True" + MatchSeat "seat1" +EndSection + +Signed-off-by: Oleg Samarin +Signed-off-by: Laércio de Sousa +Reviewed-by: Dave Airlie +Signed-off-by: Peter Hutterer +--- + hw/xfree86/common/xf86Config.c | 34 +++++++++++++++++++++++++--------- + hw/xfree86/parser/Device.c | 6 ++++++ + hw/xfree86/parser/Layout.c | 6 ++++++ + hw/xfree86/parser/Screen.c | 6 ++++++ + hw/xfree86/parser/xf86Parser.h | 3 +++ + hw/xfree86/parser/xf86tokens.h | 1 + + 6 files changed, 47 insertions(+), 9 deletions(-) + +Index: xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/common/xf86Config.c 2014-09-11 10:50:39.823851011 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/common/xf86Config.c 2014-09-11 10:55:16.098992439 -0300 +@@ -232,6 +232,18 @@ + return tmp_path; + } + ++#define FIND_SUITABLE(pointertype, listhead, ptr) \ ++ do { \ ++ pointertype _l, _p; \ ++ \ ++ for (_l = (listhead), _p = NULL; !_p && _l; _l = (pointertype)_l->list.next) { \ ++ if (!_l->match_seat || (SeatId && xf86nameCompare(_l->match_seat, SeatId) == 0)) \ ++ _p = _l; \ ++ } \ ++ \ ++ (ptr) = _p; \ ++ } while(0) ++ + /* + * use the datastructure that the parser provides and pick out the parts + * that we need at this point +@@ -1600,8 +1612,11 @@ + * config file, or - if it is NULL - configScreen autogenerates one for + * us */ + if (!count) { ++ XF86ConfScreenPtr screen; ++ ++ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen); + slp[0].screen = xnfcalloc(1, sizeof(confScreenRec)); +- if (!configScreen(slp[0].screen, xf86configptr->conf_screen_lst, ++ if (!configScreen(slp[0].screen, screen, + 0, X_CONFIG)) { + free(slp[0].screen); + free(slp); +@@ -1841,7 +1856,7 @@ + * set it to NULL so that the section can be autoconfigured later */ + screenp->device = xnfcalloc(1, sizeof(GDevRec)); + if ((!conf_screen->scrn_device) && (xf86configptr->conf_device_lst)) { +- conf_screen->scrn_device = xf86configptr->conf_device_lst; ++ FIND_SUITABLE (XF86ConfDevicePtr, xf86configptr->conf_device_lst, conf_screen->scrn_device); + xf86Msg(X_DEFAULT, "No device specified for screen \"%s\".\n" + "\tUsing the first device section listed.\n", screenp->id); + } +@@ -2374,6 +2389,7 @@ + char *scanptr; + Bool singlecard = 0; + Bool implicit_layout = FALSE; ++ XF86ConfLayoutPtr layout; + + if (!autoconfig) { + char *filename, *dirname, *sysdirname; +@@ -2449,14 +2465,17 @@ + */ + + /* First check if a layout section is present, and if it is valid. */ ++ FIND_SUITABLE(XF86ConfLayoutPtr, xf86configptr->conf_layout_lst, layout); ++ if (layout == NULL || xf86ScreenName != NULL) { ++ XF86ConfScreenPtr screen; + +- if (xf86configptr->conf_layout_lst == NULL || xf86ScreenName != NULL) { + if (xf86ScreenName == NULL) { + xf86Msg(X_DEFAULT, + "No Layout section. Using the first Screen section.\n"); + } ++ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen); + if (!configImpliedLayout(&xf86ConfigLayout, +- xf86configptr->conf_screen_lst, ++ screen, + xf86configptr)) { + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); + return CONFIG_PARSE_ERROR; +@@ -2471,16 +2490,13 @@ + if (optlist && xf86FindOption(optlist, "defaultserverlayout")) + dfltlayout = + xf86SetStrOption(optlist, "defaultserverlayout", NULL); +- if (!configLayout +- (&xf86ConfigLayout, xf86configptr->conf_layout_lst, +- dfltlayout)) { ++ if (!configLayout(&xf86ConfigLayout, layout, dfltlayout)) { + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); + return CONFIG_PARSE_ERROR; + } + } + else { +- if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst, +- NULL)) { ++ if (!configLayout(&xf86ConfigLayout, layout, NULL)) { + xf86Msg(X_ERROR, "Unable to determine the screen layout\n"); + return CONFIG_PARSE_ERROR; + } +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Device.c 2014-09-11 10:48:54.272129993 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Device.c 2014-09-11 10:55:16.094992284 -0300 +@@ -72,6 +72,7 @@ + {RAMDAC, "ramdac"}, + {DACSPEED, "dacspeed"}, + {CLOCKS, "clocks"}, ++ {MATCHSEAT, "matchseat"}, + {OPTION, "option"}, + {VIDEORAM, "videoram"}, + {BIOSBASE, "biosbase"}, +@@ -217,6 +218,11 @@ + Error(NUMBER_MSG, "TextClockFreq"); + ptr->dev_textclockfreq = (int) (val.realnum * 1000.0 + 0.5); + break; ++ case MATCHSEAT: ++ if (xf86getSubToken(&(ptr->dev_comment)) != STRING) ++ Error(QUOTE_MSG, "MatchSeat"); ++ ptr->match_seat = val.str; ++ break; + case OPTION: + ptr->dev_option_lst = xf86parseOption(ptr->dev_option_lst); + break; +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Layout.c 2014-09-11 10:48:54.272129993 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Layout.c 2014-09-11 10:55:16.094992284 -0300 +@@ -71,6 +71,7 @@ + {ENDSECTION, "endsection"}, + {SCREEN, "screen"}, + {IDENTIFIER, "identifier"}, ++ {MATCHSEAT, "matchseat"}, + {INACTIVE, "inactive"}, + {INPUTDEVICE, "inputdevice"}, + {OPTION, "option"}, +@@ -110,6 +111,11 @@ + ptr->lay_identifier = val.str; + has_ident = TRUE; + break; ++ case MATCHSEAT: ++ if (xf86getSubToken(&(ptr->lay_comment)) != STRING) ++ Error(QUOTE_MSG, "MatchSeat"); ++ ptr->match_seat = val.str; ++ break; + case INACTIVE: + { + XF86ConfInactivePtr iptr; +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/Screen.c 2014-09-11 10:48:54.272129993 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/Screen.c 2014-09-11 10:55:16.094992284 -0300 +@@ -199,6 +199,7 @@ + static xf86ConfigSymTabRec ScreenTab[] = { + {ENDSECTION, "endsection"}, + {IDENTIFIER, "identifier"}, ++ {MATCHSEAT, "matchseat"}, + {OBSDRIVER, "driver"}, + {MDEVICE, "device"}, + {MONITOR, "monitor"}, +@@ -237,6 +238,11 @@ + Error(ONLY_ONE_MSG, "Identifier or Driver"); + has_ident = TRUE; + break; ++ case MATCHSEAT: ++ if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) ++ Error(QUOTE_MSG, "MatchSeat"); ++ ptr->match_seat = val.str; ++ break; + case OBSDRIVER: + if (xf86getSubToken(&(ptr->scrn_comment)) != STRING) + Error(QUOTE_MSG, "Driver"); +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86Parser.h 2014-09-11 10:48:54.272129993 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86Parser.h 2014-09-11 10:55:16.094992284 -0300 +@@ -224,6 +224,7 @@ + int dev_screen; + XF86OptionPtr dev_option_lst; + char *dev_comment; ++ char *match_seat; + } XF86ConfDeviceRec, *XF86ConfDevicePtr; + + typedef struct { +@@ -275,6 +276,7 @@ + XF86OptionPtr scrn_option_lst; + char *scrn_comment; + int scrn_virtualX, scrn_virtualY; ++ char *match_seat; + } XF86ConfScreenRec, *XF86ConfScreenPtr; + + typedef struct { +@@ -366,6 +368,7 @@ + XF86ConfInactivePtr lay_inactive_lst; + XF86ConfInputrefPtr lay_input_lst; + XF86OptionPtr lay_option_lst; ++ char *match_seat; + char *lay_comment; + } XF86ConfLayoutRec, *XF86ConfLayoutPtr; + +Index: xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h +=================================================================== +--- xorg-server-trusty-matchseat.orig/hw/xfree86/parser/xf86tokens.h 2014-09-11 10:48:54.272129993 -0300 ++++ xorg-server-trusty-matchseat/hw/xfree86/parser/xf86tokens.h 2014-09-11 10:55:16.094992284 -0300 +@@ -87,6 +87,7 @@ + VENDOR, + DASH, + COMMA, ++ MATCHSEAT, + OPTION, + COMMENT, + diff --git a/debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch b/debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch new file mode 100644 index 0000000..982d629 --- /dev/null +++ b/debian/patches/xfree86_allow_fallback_to_pci_bus_probe_for_non_seat0.patch @@ -0,0 +1,52 @@ +From 29b1484bb9555e45067669cbfe68a3c40596f4ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= +Date: Thu, 3 Apr 2014 11:19:13 -0300 +Subject: [PATCH] xfree86: allow fallback to PCI bus probe for graphics devices + on non-seat0 X servers (#66851) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently non-seat0 X servers only probe platform bus for graphics devices, +which is OK for most KMS-compliant drivers. However, for non-KMS drivers +(like NVIDIA proprietary ones), graphics devices can't be reached +by platform bus probe, resulting in a "No devices detected" error. + +This patch allows a fallback to PCI bus probe for non-seat0 X servers +in case no platform bus graphics device is found. + +Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66851 + +Signed-off-by: Laércio de Sousa +Reviewed-by: Hans de Goede +Reviewed-by: Dave Airlie +Signed-off-by: Peter Hutterer +--- + hw/xfree86/common/xf86Bus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c +index 507c57d..b3b3f8c 100644 +--- a/hw/xfree86/common/xf86Bus.c ++++ b/hw/xfree86/common/xf86Bus.c +@@ -81,7 +81,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) + if (drv->platformProbe != NULL) { + foundScreen = xf86platformProbeDev(drv); + } +- if (ServerIsNotSeat0()) ++ if (ServerIsNotSeat0() && foundScreen) + return foundScreen; + #endif + +@@ -201,7 +201,7 @@ xf86BusProbe(void) + { + #ifdef XSERVER_PLATFORM_BUS + xf86platformProbe(); +- if (ServerIsNotSeat0()) ++ if (ServerIsNotSeat0() && xf86_num_platform_devices > 0) + return; + #endif + #ifdef XSERVER_LIBPCIACCESS +-- +2.0.4 + diff --git a/debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch b/debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch new file mode 100644 index 0000000..4106a27 --- /dev/null +++ b/debian/patches/xfree86_keep_non_seat0_from_touching_vts.patch @@ -0,0 +1,50 @@ +From 46cf2a60934076bf568062eb83121ce90b6ff596 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= +Date: Thu, 12 Dec 2013 14:22:48 -0200 +Subject: [PATCH] xfree86: Keep a non-seat0 X server from touching VTs (#71258) + +Updated patch following Hans de Goede's advice. + +If -seat option is passed with a value different from seat0, +X server won't call xf86OpenConsole(). + +This is needed to avoid any race condition between seat0 and +non-seat0 X servers. If a non-seat0 X server opens a given VT +before a seat0 one which expects to open the same VT, one can +get an inactive systemd-logind graphical session for seat0. + +This patch was first tested in a multiseat setup with multiple +video cards and works quite well. + +I suppose it can also make things like DontVTSwitch and -sharevts +meaningless for non-seat0 seats, so it may fix bug #69477, too. + +Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71258 + https://bugs.freedesktop.org/show_bug.cgi?id=69477 (maybe) + +See also: http://lists.x.org/archives/xorg-devel/2013-October/038391.html + https://bugzilla.redhat.com/show_bug.cgi?id=1018196 + +Signed-off-by: Hans de Goede +Reviewed-by: Hans de Goede +--- + hw/xfree86/common/xf86Init.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index 9c8a86a..952bf37 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -544,7 +544,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) + if (NEED_IO_ENABLED(flags)) + want_hw_access = TRUE; + +- if (!(flags & HW_SKIP_CONSOLE)) ++ /* Non-seat0 X servers should not open console */ ++ if (!(flags & HW_SKIP_CONSOLE) && !ServerIsNotSeat0()) + xorgHWOpenConsole = TRUE; + } + +-- +2.0.4 + diff --git a/debian/patches/xi-dont-copy-too-much.patch b/debian/patches/xi-dont-copy-too-much.patch new file mode 100644 index 0000000..117f7f4 --- /dev/null +++ b/debian/patches/xi-dont-copy-too-much.patch @@ -0,0 +1,67 @@ +commit 56929f41e6c4cc1b2d72a33d14b4d993e7b613a3 +Author: Peter Hutterer +Date: Tue Apr 29 16:52:01 2014 +1000 + + Xi: don't copy a DeviceEvent into an InternalEvent + + ==26141== Invalid read of size 8 + ==26141== at 0x58FAEA: DeliverEmulatedMotionEvent (exevents.c:1484) + + An InternalEvent is bigger than a DeviceEvent, thus copying one to the other + reads past the allocated boundary. Shouldn't have any real effect since we + shouldn't access anything past the DeviceEvent boundary if the event type is + correct. + + Signed-off-by: Peter Hutterer + +diff --git a/Xi/exevents.c b/Xi/exevents.c +index 9c207eb..02530bd 100644 +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -1469,7 +1469,7 @@ static void + DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev) + { +- InternalEvent motion; ++ DeviceEvent motion; + + if (ti->num_listeners) { + ClientPtr client; +@@ -1481,11 +1481,11 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, + ti->listeners[0].type != LISTENER_POINTER_GRAB) + return; + +- motion = *ev; +- motion.any.type = ET_TouchUpdate; +- motion.device_event.detail.button = 0; ++ motion = ev->device_event; ++ motion.type = ET_TouchUpdate; ++ motion.detail.button = 0; + +- if (!RetrieveTouchDeliveryData(dev, ti, &motion, ++ if (!RetrieveTouchDeliveryData(dev, ti, (InternalEvent*)&motion, + &ti->listeners[0], &client, &win, &grab, + &mask)) + return; +@@ -1500,18 +1500,18 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, + } + } + +- DeliverTouchEmulatedEvent(dev, ti, &motion, &ti->listeners[0], client, ++ DeliverTouchEmulatedEvent(dev, ti, (InternalEvent*)&motion, &ti->listeners[0], client, + win, grab, mask); + } + else { + InternalEvent button; + int converted; + +- converted = TouchConvertToPointerEvent(ev, &motion, &button); ++ converted = TouchConvertToPointerEvent(ev, (InternalEvent*)&motion, &button); + + BUG_WARN(converted == 0); + if (converted) +- ProcessOtherEvent(&motion, dev); ++ ProcessOtherEvent((InternalEvent*)&motion, dev); + } + } + diff --git a/debian/patches/xi2-resize-touch.patch b/debian/patches/xi2-resize-touch.patch new file mode 100644 index 0000000..021dd59 --- /dev/null +++ b/debian/patches/xi2-resize-touch.patch @@ -0,0 +1,34 @@ +diff --git a/dix/touch.c b/dix/touch.c +index a7ea213..1478e38 100644 +--- a/dix/touch.c ++++ b/dix/touch.c +@@ -460,12 +460,26 @@ TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev) + if (ev->flags & (TOUCH_CLIENT_ID | TOUCH_REPLAYING)) + return; + ++ if (ti->history_elements == ti->history_size - 1) { ++ DeviceEvent *hist = NULL; ++ size_t sz = ti->history_size * 2; ++ ++ if (sz < 10000) { ++ hist = realloc(ti->history, sz * sizeof(*hist)); ++ ++ if (hist) { ++ ti->history = hist; ++ ti->history_size = sz; ++ memset(&hist[sz/2], 0, sizeof(*hist)*sz/2); ++ } ++ } ++ } ++ + ti->history[ti->history_elements++] = *ev; +- /* FIXME: proper overflow fixes */ + if (ti->history_elements > ti->history_size - 1) { + ti->history_elements = ti->history_size - 1; +- DebugF("source device %d: history size %d overflowing for touch %u\n", +- ti->sourceid, ti->history_size, ti->client_id); ++ ErrorF("source device %d: history size %d overflowing for touch %u\n", ++ ti->sourceid, ti->history_size, ti->client_id); + } + } + diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch new file mode 100644 index 0000000..c649889 --- /dev/null +++ b/debian/patches/xmir.patch @@ -0,0 +1,2145 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -631,6 +631,7 @@ + AC_ARG_ENABLE(libdrm, AS_HELP_STRING([--enable-libdrm], [Build Xorg with libdrm support (default: enabled)]), [DRM=$enableval],[DRM=yes]) + AC_ARG_ENABLE(clientids, AS_HELP_STRING([--disable-clientids], [Build Xorg with client ID tracking (default: enabled)]), [CLIENTIDS=$enableval], [CLIENTIDS=yes]) + AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], [Build Xorg with pciaccess library (default: enabled)]), [PCI=$enableval], [PCI=yes]) ++AC_ARG_ENABLE(xmir, AS_HELP_STRING([--enable-xmir], [Build support for nesting in Mir (default: auto)]), [XMIR=$enableval], [XMIR=auto]) + AC_ARG_ENABLE(linux_acpi, AC_HELP_STRING([--disable-linux-acpi], [Disable building ACPI support on Linux (if available).]), [enable_linux_acpi=$enableval], [enable_linux_acpi=yes]) + AC_ARG_ENABLE(linux_apm, AC_HELP_STRING([--disable-linux-apm], [Disable building APM support on Linux (if available).]), [enable_linux_apm=$enableval], [enable_linux_apm=yes]) + +@@ -1275,6 +1276,15 @@ + SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $XINERAMAPROTO" + fi + ++if test "x$XMIR" != xno; then ++ PKG_CHECK_MODULES([XMIR], [mirclient], [XMIR=yes], [XMIR=no]) ++ AC_SUBST([XMIR_LIBS]) ++ AC_SUBST([XMIR_CFLAGS]) ++ AC_DEFINE(XMIR, 1, [Support Mir nested mode]) ++ SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES mirclient" ++fi ++AM_CONDITIONAL(XMIR, [test "x$XMIR" = xyes]) ++ + AM_CONDITIONAL(XACE, [test "x$XACE" = xyes]) + if test "x$XACE" = xyes; then + AC_DEFINE(XACE, 1, [Build X-ACE extension]) +@@ -2439,6 +2449,7 @@ + hw/xfree86/utils/man/Makefile + hw/xfree86/utils/cvt/Makefile + hw/xfree86/utils/gtf/Makefile ++hw/xfree86/xmir/Makefile + hw/dmx/config/Makefile + hw/dmx/config/man/Makefile + hw/dmx/doc/Makefile +--- a/hw/xfree86/Makefile.am ++++ b/hw/xfree86/Makefile.am +@@ -30,15 +30,20 @@ + INT10_SUBDIR = int10 + endif + ++if XMIR ++XMIR_SUBDIR = xmir ++endif ++ + SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \ + ramdac $(VGAHW_SUBDIR) loader modes $(DRI_SUBDIR) \ + $(DRI2_SUBDIR) . $(VBE_SUBDIR) i2c dixmods \ +- fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man ++ fbdevhw shadowfb exa $(XF86UTILS_SUBDIR) doc man \ ++ $(XMIR_SUBDIR) + + DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \ + parser ramdac shadowfb vbe vgahw \ + loader dixmods dri dri2 exa modes \ +- utils doc man ++ utils doc man xmir + + bin_PROGRAMS = Xorg + nodist_Xorg_SOURCES = sdksyms.c +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -118,6 +118,7 @@ + {.name = "fb",.toLoad = TRUE,.load_opt = NULL}, + {.name = "shadow",.toLoad = TRUE,.load_opt = NULL}, + #endif ++ {.name = "xmir", .toLoad = FALSE, .load_opt = NULL}, + {.name = NULL,.toLoad = FALSE,.load_opt = NULL} + }; + +@@ -260,6 +261,17 @@ + return NULL; + } + ++ /* ++ * Set the xmir module to autoload if requested. ++ */ ++ if (xorgMir) { ++ for (i=0 ; ModuleDefaults[i].name != NULL ; i++) { ++ if (strcmp(ModuleDefaults[i].name, "xmir") == 0) { ++ ModuleDefaults[i].toLoad = TRUE; ++ } ++ } ++ } ++ + if (xf86configptr->conf_modules) { + /* Walk the disable list and let people know what we've parsed to + * not be loaded +--- a/hw/xfree86/common/xf86Events.c ++++ b/hw/xfree86/common/xf86Events.c +@@ -105,8 +105,6 @@ + extern void (*xf86OSPMClose) (void); + #endif + +-static void xf86VTSwitch(void); +- + /* + * Allow arbitrary drivers or other XFree86 code to register with our main + * Wakeup handler. +@@ -411,7 +409,7 @@ + * xf86VTSwitch -- + * Handle requests for switching the vt. + */ +-static void ++_X_EXPORT void + xf86VTSwitch(void) + { + int i; +@@ -471,7 +469,7 @@ + + xf86AccessLeave(); /* We need this here, otherwise */ + +- if (!xf86VTSwitchAway()) { ++ if (!xorgMir && !xf86VTSwitchAway()) { + /* + * switch failed + */ +@@ -530,7 +528,7 @@ + } + else { + DebugF("xf86VTSwitch: Entering\n"); +- if (!xf86VTSwitchTo()) ++ if (!xorgMir && !xf86VTSwitchTo()) + return; + + #ifdef XF86PM +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -206,3 +206,6 @@ + #endif + RootWinPropPtr *xf86RegisteredPropertiesTable = NULL; + Bool xorgHWAccess = FALSE; ++Bool xorgMir = FALSE; ++const char *mirID = NULL; ++const char *mirSocket = NULL; +--- a/hw/xfree86/common/xf86Helper.c ++++ b/hw/xfree86/common/xf86Helper.c +@@ -100,7 +100,14 @@ + if (xf86DriverList[drvIndex]->module) + UnloadModule(xf86DriverList[drvIndex]->module); + free(xf86DriverList[drvIndex]); +- xf86DriverList[drvIndex] = NULL; ++ ++ /* Compact xf86DriverList array, update xf86NumDrivers */ ++ xf86NumDrivers--; ++ if(drvIndex != xf86NumDrivers) ++ memmove(xf86DriverList + drvIndex, ++ xf86DriverList + drvIndex + 1, ++ sizeof(DriverPtr) * (xf86NumDrivers - drvIndex)); ++ xf86DriverList = realloc(xf86DriverList, xf86NumDrivers * sizeof(DriverPtr)); + } + } + +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -554,7 +554,7 @@ + * needed at this early stage. + */ + +- for (i = 0; i < xf86NumDrivers; i++) { ++ for (i = 0; i < xf86NumDrivers; ) { + xorgHWFlags flags = HW_IO; + + if (xf86DriverList[i]->Identify != NULL) +@@ -565,11 +565,20 @@ + GET_REQUIRED_HW_INTERFACES, + &flags); + ++ if (xorgMir && ++ (NEED_IO_ENABLED(flags) || !(flags & HW_SKIP_CONSOLE))) { ++ ErrorF("Driver needs flags %lu, incompatible with nested, deleting.\n", flags); ++ xf86DeleteDriver(i); ++ continue; ++ } ++ + if (NEED_IO_ENABLED(flags)) + want_hw_access = TRUE; + + if (!(flags & HW_SKIP_CONSOLE)) + xorgHWOpenConsole = TRUE; ++ ++ i++; + } + + if (xorgHWOpenConsole) +@@ -662,9 +671,13 @@ + } + + /* Remove (unload) drivers that are not required */ +- for (i = 0; i < xf86NumDrivers; i++) +- if (xf86DriverList[i] && xf86DriverList[i]->refCount <= 0) ++ for (i = 0; i < xf86NumDrivers; ) ++ if (xf86DriverList[i] && ++ !xf86DriverHasEntities(xf86DriverList[i]) && ++ xf86DriverList[i]->refCount <= 0) + xf86DeleteDriver(i); ++ else ++ i++; + + /* + * At this stage we know how many screens there are. +@@ -1490,6 +1503,17 @@ + xf86Info.ShareVTs = TRUE; + return 1; + } ++ if (!strcmp(argv[i], "-mir")) { ++ CHECK_FOR_REQUIRED_ARGUMENT(); ++ mirID = argv[++i]; ++ xorgMir = TRUE; ++ return 2; ++ } ++ if (!strcmp(argv[i], "-mirSocket")) { ++ CHECK_FOR_REQUIRED_ARGUMENT(); ++ mirSocket = argv[++i]; ++ return 2; ++ } + + /* OS-specific processing */ + return xf86ProcessArgument(argc, argv, i); +@@ -1563,6 +1587,8 @@ + ErrorF + ("-novtswitch don't automatically switch VT at reset & exit\n"); + ErrorF("-sharevts share VTs with another X server\n"); ++ ErrorF ++ ("-mir MirID run nested in a Mir compositor with app id MirID\n"); + /* OS-specific usage */ + xf86UseMsg(); + ErrorF("\n"); +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -93,6 +93,9 @@ + extern _X_EXPORT const char *xf86VisualNames[]; + extern _X_EXPORT int xf86Verbose; /* verbosity level */ + extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */ ++extern _X_EXPORT Bool xorgMir; ++extern _X_EXPORT const char *mirID; ++extern _X_EXPORT const char *mirSocket; + + extern _X_EXPORT RootWinPropPtr *xf86RegisteredPropertiesTable; + +@@ -149,6 +152,9 @@ + extern _X_EXPORT int (*xf86PMGetEventFromOs) (int fd, pmEvent * events, + int num); + extern _X_EXPORT pmWait (*xf86PMConfirmEventToOs) (int fd, pmEvent event); ++extern _X_EXPORT void ++xf86VTSwitch(void); ++ + + /* xf86Helper.c */ + extern _X_EXPORT void +--- a/hw/xfree86/ramdac/xf86Cursor.c ++++ b/hw/xfree86/ramdac/xf86Cursor.c +@@ -58,7 +58,12 @@ + xf86CursorScreenPtr ScreenPriv; + miPointerScreenPtr PointPriv; + +- if (!xf86InitHardwareCursor(pScreen, infoPtr)) ++ infoPtr->pScrn = xf86ScreenToScrn(pScreen); ++ ++ /* If we can't create a hardware cursor don't bother initialising HW cursor support */ ++ if (infoPtr->MaxWidth != 0 && ++ infoPtr->MaxHeight != 0 && ++ !xf86InitHardwareCursor(pScreen, infoPtr)) + return FALSE; + + if (!dixRegisterPrivateKey(&xf86CursorScreenKeyRec, PRIVATE_SCREEN, 0)) +--- a/hw/xfree86/ramdac/xf86HWCurs.c ++++ b/hw/xfree86/ramdac/xf86HWCurs.c +@@ -114,8 +114,6 @@ + infoPtr->RealizeCursor = RealizeCursorInterleave0; + } + +- infoPtr->pScrn = xf86ScreenToScrn(pScreen); +- + return TRUE; + } + +--- /dev/null ++++ b/hw/xfree86/xmir/Makefile.am +@@ -0,0 +1,26 @@ ++INCLUDES = \ ++ $(XORG_INCS) \ ++ -I$(srcdir)/../ddc \ ++ -I$(srcdir)/../ramdac \ ++ -I$(srcdir)/../i2c \ ++ -I$(srcdir)/../parser \ ++ -I$(srcdir)/../modes ++ ++libxmir_la_LTLIBRARIES = libxmir.la ++libxmir_la_CFLAGS = \ ++ -DHAVE_XORG_CONFIG_H \ ++ $(DRI_CFLAGS) \ ++ $(DIX_CFLAGS) $(XORG_CFLAGS) $(LIBDRM_CFLAGS) \ ++ $(XMIR_CFLAGS) ++ ++libxmir_la_LDFLAGS = -module -avoid-version $(LIBDRM_LIBS) $(XMIR_LIBS) ++libxmir_ladir = $(moduledir)/extensions ++libxmir_la_SOURCES = \ ++ xmir.c \ ++ xmir-window.c \ ++ xmir-output.c \ ++ xmir-thread-proxy.c \ ++ xmir.h \ ++ xmir-private.h ++ ++sdk_HEADERS = xmir.h +--- /dev/null ++++ b/hw/xfree86/xmir/xmir-output.c +@@ -0,0 +1,678 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#include ++#include ++#include ++ ++#include ++#include "xmir.h" ++#include "xmir-private.h" ++#include "xf86Crtc.h" ++#include "xf86Priv.h" ++ ++struct xmir_crtc { ++ xmir_screen *xmir; ++ xmir_window *root_fragment; ++ MirDisplayConfiguration *config; ++}; ++ ++static const char * ++xmir_mir_dpms_mode_description(MirPowerMode mode) ++{ ++ switch (mode) ++ { ++ case mir_power_mode_on: ++ return "mir_power_mode_on"; ++ case mir_power_mode_standby: ++ return "mir_power_mode_standby"; ++ case mir_power_mode_suspend: ++ return "mir_power_mode_suspend"; ++ case mir_power_mode_off: ++ return "mir_power_mode_off"; ++ default: ++ return "OMGUNKNOWN!"; ++ } ++} ++ ++static void ++xmir_crtc_dpms(xf86CrtcPtr crtc, int mode) ++{ ++ xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn); ++ struct xmir_crtc *xmir_crtc = crtc->driver_private; ++ ++ for (int i = 0; i < crtc_cfg->num_output; i++) { ++ /* If this output should be driven by our "CRTC", set DPMS mode */ ++ MirDisplayOutput *output = crtc_cfg->output[i]->driver_private; ++ if (crtc_cfg->output[i]->crtc == crtc) { ++ xf86Msg(X_INFO, "Setting DPMS mode for output %d to %d\n", i, mode); ++ switch (mode) { ++ case DPMSModeOn: ++ output->power_mode = mir_power_mode_on; ++ xmir_crtc->xmir->dpms_on = TRUE; ++ break; ++ case DPMSModeStandby: ++ output->power_mode = mir_power_mode_standby; ++ xmir_crtc->xmir->dpms_on = FALSE; ++ break; ++ case DPMSModeSuspend: ++ output->power_mode = mir_power_mode_suspend; ++ xmir_crtc->xmir->dpms_on = FALSE; ++ break; ++ case DPMSModeOff: ++ output->power_mode = mir_power_mode_off; ++ xmir_crtc->xmir->dpms_on = FALSE; ++ break; ++ } ++ } ++ } ++ mir_wait_for(mir_connection_apply_display_config(xmir_connection_get(), ++ xmir_crtc->config)); ++} ++ ++static const char* ++xmir_get_output_type_str(MirDisplayOutput *mir_output) ++{ ++ const char *str = "Invalid"; ++ ++ switch(mir_output->type) ++ { ++ case mir_display_output_type_vga: str = "VGA"; break; ++ case mir_display_output_type_dvii: str = "DVI"; break; ++ case mir_display_output_type_dvid: str = "DVI"; break; ++ case mir_display_output_type_dvia: str = "DVI"; break; ++ case mir_display_output_type_composite: str = "Composite"; break; ++ case mir_display_output_type_svideo: str = "TV"; break; ++ case mir_display_output_type_lvds: str = "LVDS"; break; ++ case mir_display_output_type_component: str = "CTV"; break; ++ case mir_display_output_type_ninepindin: str = "DIN"; break; ++ case mir_display_output_type_displayport: str = "DP"; break; ++ case mir_display_output_type_hdmia: str = "HDMI"; break; ++ case mir_display_output_type_hdmib: str = "HDMI"; break; ++ case mir_display_output_type_tv: str = "TV"; break; ++ case mir_display_output_type_edp: str = "eDP"; break; ++ ++ case mir_display_output_type_unknown: str = "None"; break; ++ default: break; ++ } ++ ++ return str; ++} ++ ++static void ++xmir_output_populate(xf86OutputPtr xf86output, MirDisplayOutput *output) ++{ ++ /* We can always arbitrarily clone and output */ ++ xf86output->possible_crtcs = 0xffffffff; ++ xf86output->possible_clones = 0xffffffff; ++ ++ xf86output->driver_private = output; ++ ++ xf86output->interlaceAllowed = FALSE; ++ xf86output->doubleScanAllowed = FALSE; ++ xf86output->mm_width = output->physical_width_mm; ++ xf86output->mm_height = output->physical_height_mm; ++ /* TODO: Subpixel order from Mir */ ++ xf86output->subpixel_order = SubPixelUnknown; ++} ++ ++static DisplayModePtr ++xmir_create_xf86mode(const struct MirDisplayMode *mir_mode) ++{ ++ DisplayModePtr mode; ++ ++ mode = xf86CVTMode(mir_mode->horizontal_resolution, ++ mir_mode->vertical_resolution, ++ mir_mode->refresh_rate, ++ FALSE, FALSE); ++ ++ /* ++ * And now, because the CVT standard doesn't support such common ++ * resolutions as 1366x768... ++ */ ++ mode->VDisplay = mir_mode->vertical_resolution; ++ mode->HDisplay = mir_mode->horizontal_resolution; ++ ++ xf86SetModeDefaultName(mode); ++ ++ return mode; ++} ++ ++static void ++xmir_free_xf86mode(DisplayModePtr mode) ++{ ++ free(mode->name); ++ free(mode); ++} ++ ++static Bool ++xmir_set_mode_for_output(MirDisplayOutput *output, ++ DisplayModePtr mode) ++{ ++ for (int i = 0; i < output->num_modes; i++) { ++ Bool modes_equal = FALSE; ++ DisplayModePtr mir_mode = NULL; ++ xf86Msg(X_INFO, "Checking against mode (%dx%d)@%.2f\n", ++ output->modes[i].horizontal_resolution, ++ output->modes[i].vertical_resolution, ++ output->modes[i].refresh_rate); ++ ++ mir_mode = xmir_create_xf86mode(&output->modes[i]); ++ modes_equal = xf86ModesEqual(mode, mir_mode); ++ xmir_free_xf86mode(mir_mode); ++ ++ if (modes_equal) { ++ output->current_mode = i; ++ output->used = 1; ++ xf86Msg(X_INFO, "Matched mode %d\n", i); ++ return TRUE; ++ } ++ } ++ return FALSE; ++} ++ ++static uint32_t ++xmir_update_outputs_for_crtc(xf86CrtcPtr crtc, DisplayModePtr mode, int x, int y) ++{ ++ xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn); ++ uint32_t representative_output_id = mir_display_output_id_invalid; ++ ++ for (int i = 0; i < crtc_cfg->num_output; i++) { ++ /* If this output should be driven by our "CRTC", set its mode */ ++ if (crtc_cfg->output[i]->crtc == crtc) { ++ MirDisplayOutput *output = crtc_cfg->output[i]->driver_private; ++ xmir_set_mode_for_output(output, mode); ++ output->position_x = x; ++ output->position_y = y; ++ representative_output_id = output->output_id; ++ } ++ } ++ return representative_output_id; ++} ++ ++static void ++xmir_disable_unused_outputs(xf86CrtcPtr crtc) ++{ ++ xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(crtc->scrn); ++ ++ for (int i = 0; i < crtc_cfg->num_output; i++) ++ /* If any outputs are no longer associated with a CRTC, disable them */ ++ if (crtc_cfg->output[i]->crtc == NULL) ++ ((MirDisplayOutput*)crtc_cfg->output[i]->driver_private)->used = 0; ++} ++ ++static void ++xmir_stupid_callback(MirSurface *surf, void *ctx) ++{ ++} ++ ++static void ++xmir_dump_config(MirDisplayConfiguration *config) ++{ ++ for (int i = 0; i < config->num_outputs; i++) ++ { ++ xf86Msg(X_INFO, "Output %d (%s, %s) has mode %d (%d x %d @ %.2f), position (%d,%d), dpms: %s\n", ++ config->outputs[i].output_id, ++ config->outputs[i].connected ? "connected" : "disconnected", ++ config->outputs[i].used ? "enabled" : "disabled", ++ config->outputs[i].current_mode, ++ config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].horizontal_resolution : 0, ++ config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].vertical_resolution : 0, ++ config->outputs[i].used ? config->outputs[i].modes[config->outputs[i].current_mode].refresh_rate : 0, ++ config->outputs[i].position_x, ++ config->outputs[i].position_y, ++ xmir_mir_dpms_mode_description(config->outputs[i].power_mode)); ++ for (int m = 0; m < config->outputs[i].num_modes; m++) ++ { ++ xf86Msg(X_INFO, " mode %d: (%d x %d @ %.2f)\n", ++ m, ++ config->outputs[i].modes[m].horizontal_resolution, ++ ++ config->outputs[i].modes[m].vertical_resolution, ++ config->outputs[i].modes[m].refresh_rate); ++ } ++ } ++} ++ ++static void ++xmir_update_config(xf86CrtcConfigPtr crtc_cfg) ++{ ++ MirDisplayConfiguration *new_config; ++ struct xmir_crtc *xmir_crtc = crtc_cfg->crtc[0]->driver_private; ++ ++ mir_display_config_destroy(xmir_crtc->config); ++ ++ new_config = mir_connection_create_display_config(xmir_connection_get()); ++ for (int i = 0; i < crtc_cfg->num_crtc; i++) { ++ xmir_crtc = crtc_cfg->crtc[i]->driver_private; ++ xmir_crtc-> config = new_config; ++ } ++ ++ if (crtc_cfg->num_output != new_config->num_outputs) ++ FatalError("[xmir] New Mir config has different number of outputs?"); ++ ++ for (int i = 0; i < crtc_cfg->num_output ; i++) { ++ /* TODO: Ensure that the order actually matches up */ ++ xmir_output_populate(crtc_cfg->output[i], new_config->outputs + i); ++ } ++ xf86Msg(X_INFO, "Recieved updated config from Mir:\n"); ++ xmir_dump_config(new_config); ++} ++ ++static void ++xmir_crtc_surface_created(MirSurface *surface, void *ctx) ++{ ++ xf86CrtcPtr crtc = ctx; ++ struct xmir_crtc *xmir_crtc = crtc->driver_private; ++ ++ if (xmir_crtc->root_fragment->surface != NULL) ++ mir_surface_release(xmir_crtc->root_fragment->surface, xmir_stupid_callback, NULL); ++ ++ xmir_crtc->root_fragment->surface = surface; ++} ++ ++static Bool ++xmir_crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, ++ Rotation rotation, int x, int y) ++{ ++ MirSurfaceParameters params = { ++ .name = "Xorg", ++ .width = mode->HDisplay, ++ .height = mode->VDisplay, ++ .pixel_format = mir_pixel_format_xrgb_8888, ++ .buffer_usage = mir_buffer_usage_hardware, ++ .output_id = mir_display_output_id_invalid ++ }; ++ BoxRec output_bounds = { ++ .x1 = x, ++ .y1 = y, ++ .x2 = x + mode->HDisplay, ++ .y2 = y + mode->VDisplay ++ }; ++ struct xmir_crtc *xmir_crtc = crtc->driver_private; ++ uint32_t output_id = mir_display_output_id_invalid; ++ const char *error_msg; ++ ++ if (mode->HDisplay == 0 || mode->VDisplay == 0) ++ return FALSE; ++ ++ xf86Msg(X_INFO, "Initial configuration for crtc %p:\n", crtc); ++ xmir_dump_config(xmir_crtc->config); ++ ++ xf86Msg(X_INFO, "Setting mode to %dx%d (%.2f)\n", mode->HDisplay, mode->VDisplay, mode->VRefresh); ++ output_id = xmir_update_outputs_for_crtc(crtc, mode, x, y); ++ xmir_disable_unused_outputs(crtc); ++ ++ xf86Msg(X_INFO, "Updated configuration:\n"); ++ ++ xmir_dump_config(xmir_crtc->config); ++ mir_wait_for(mir_connection_apply_display_config(xmir_connection_get(), ++ xmir_crtc->config)); ++ error_msg = mir_connection_get_error_message(xmir_connection_get()); ++ if (*error_msg != '\0') { ++ xf86Msg(X_ERROR, "[xmir] Failed to set new display config: %s\n", ++ error_msg); ++ return FALSE; ++ /* TODO: Restore correct config cache */ ++ } ++ ++ xf86Msg(X_INFO, "Post-modeset config:\n"); ++ xmir_update_config(XF86_CRTC_CONFIG_PTR(crtc->scrn)); ++ ++ if (output_id == mir_display_output_id_invalid) { ++ if (xmir_crtc->root_fragment->surface != NULL) ++ mir_wait_for(mir_surface_release(xmir_crtc->root_fragment->surface, xmir_stupid_callback, NULL)); ++ xmir_crtc->root_fragment->surface = NULL; ++ return TRUE; ++ } ++ ++ params.output_id = output_id; ++ xf86Msg(X_INFO, "Putting surface on output %d\n", output_id); ++ mir_wait_for(mir_connection_create_surface(xmir_connection_get(), ++ ¶ms, ++ xmir_crtc_surface_created, ++ crtc)); ++ if (!mir_surface_is_valid(xmir_crtc->root_fragment->surface)) { ++ xf86Msg(X_ERROR, ++ "[xmir] Failed to create surface for %dx%d mode: %s\n", ++ mode->HDisplay, mode->VDisplay, ++ mir_surface_get_error_message(xmir_crtc->root_fragment->surface)); ++ return FALSE; ++ } ++ ++ ++ /* During X server init this will be NULL. ++ This is fixed up in xmir_window_create */ ++ xmir_crtc->root_fragment->win = xf86ScrnToScreen(crtc->scrn)->root; ++ ++ RegionInit(&xmir_crtc->root_fragment->region, &output_bounds, 0); ++ xmir_crtc->root_fragment->has_free_buffer = TRUE; ++ ++ return TRUE; ++} ++ ++static void ++crtc_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg) ++{ ++} ++ ++static void ++crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y) ++{ ++} ++ ++static void ++crtc_show_cursor (xf86CrtcPtr crtc) ++{ ++} ++ ++static void ++crtc_hide_cursor (xf86CrtcPtr crtc) ++{ ++} ++ ++static void ++crtc_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image) ++{ ++} ++ ++static PixmapPtr ++crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height) ++{ ++ return NULL; ++} ++ ++static void * ++crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height) ++{ ++ return NULL; ++} ++ ++static void ++crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data) ++{ ++} ++ ++static void ++xmir_crtc_destroy(xf86CrtcPtr crtc) ++{ ++ struct xmir_crtc *xmir_crtc = crtc->driver_private; ++ ++ if (xmir_crtc->root_fragment->surface != NULL) ++ mir_surface_release(xmir_crtc->root_fragment->surface, NULL, NULL); ++ ++ free(xmir_crtc); ++} ++ ++static const xf86CrtcFuncsRec crtc_funcs = { ++ .dpms = xmir_crtc_dpms, ++ .set_mode_major = xmir_crtc_set_mode_major, ++ .set_cursor_colors = crtc_set_cursor_colors, ++ .set_cursor_position = crtc_set_cursor_position, ++ .show_cursor = crtc_show_cursor, ++ .hide_cursor = crtc_hide_cursor, ++ .load_cursor_argb = crtc_load_cursor_argb, ++ .shadow_create = crtc_shadow_create, ++ .shadow_allocate = crtc_shadow_allocate, ++ .shadow_destroy = crtc_shadow_destroy, ++ .destroy = xmir_crtc_destroy, ++}; ++ ++static void ++xmir_output_dpms(xf86OutputPtr output, int mode) ++{ ++ return; ++} ++ ++static xf86OutputStatus ++xmir_output_detect(xf86OutputPtr output) ++{ ++ MirDisplayOutput *mir_output = output->driver_private; ++ return mir_output->connected ? XF86OutputStatusConnected : XF86OutputStatusDisconnected; ++} ++ ++static Bool ++xmir_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes) ++{ ++ return MODE_OK; ++} ++ ++static DisplayModePtr ++xmir_output_get_modes(xf86OutputPtr xf86output) ++{ ++ MirDisplayOutput *mir_output = xf86output->driver_private; ++ DisplayModePtr modes = NULL; ++ ++ for (int i = 0; i < mir_output->num_modes; i++) { ++ DisplayModePtr mode = xmir_create_xf86mode(&mir_output->modes[i]); ++ ++ mode->type = M_T_DRIVER; ++ if (i == mir_output->preferred_mode) ++ mode->type |= M_T_PREFERRED; ++ ++ modes = xf86ModesAdd(modes, mode); ++ } ++ /* TODO: Get Mir to send us the EDID blob and add that */ ++ ++ return modes; ++} ++ ++static void ++xmir_output_destroy(xf86OutputPtr xf86output) ++{ ++ /* The MirDisplayOutput* in driver_private gets cleaned up by ++ mir_display_config_destroy() */ ++} ++ ++static const xf86OutputFuncsRec xmir_output_funcs = { ++ .dpms = xmir_output_dpms, ++ .detect = xmir_output_detect, ++ .mode_valid = xmir_output_mode_valid, ++ .get_modes = xmir_output_get_modes, ++ .destroy = xmir_output_destroy ++}; ++ ++ ++struct xmir_visit_set_pixmap_window { ++ PixmapPtr old, new; ++}; ++ ++static int ++xmir_visit_set_window_pixmap(WindowPtr window, pointer data) ++{ ++ struct xmir_visit_set_pixmap_window *visit = data; ++ ++ if (window->drawable.pScreen->GetWindowPixmap(window) == visit->old) { ++ window->drawable.pScreen->SetWindowPixmap(window, visit->new); ++ return WT_WALKCHILDREN; ++ } ++ ++ return WT_DONTWALKCHILDREN; ++} ++ ++static void ++xmir_set_screen_pixmap(PixmapPtr old_front, PixmapPtr new_front) ++{ ++ struct xmir_visit_set_pixmap_window visit = { ++ .old = old_front, ++ .new = new_front ++ }; ++ (old_front->drawable.pScreen->SetScreenPixmap)(new_front); ++ ++ TraverseTree(old_front->drawable.pScreen->root, &xmir_visit_set_window_pixmap, &visit); ++} ++ ++static Bool ++xmir_resize(ScrnInfoPtr scrn, int width, int height) ++{ ++ xf86CrtcConfigPtr crtc_cfg = XF86_CRTC_CONFIG_PTR(scrn); ++ ScreenPtr screen = xf86ScrnToScreen(scrn); ++ PixmapPtr old_screen_pixmap, new_screen_pixmap; ++ ++ if (scrn->virtualX == width && scrn->virtualY == height) ++ return TRUE; ++ ++ old_screen_pixmap = screen->GetScreenPixmap(screen); ++ new_screen_pixmap = screen->CreatePixmap(screen, width, height, scrn->depth, ++ CREATE_PIXMAP_USAGE_BACKING_PIXMAP); ++ ++ if (!new_screen_pixmap) ++ return FALSE; ++ ++ scrn->virtualX = width; ++ scrn->virtualY = height; ++ scrn->displayWidth = width; ++ ++ for (int i = 0; i < crtc_cfg->num_crtc; i++) { ++ xf86CrtcPtr crtc = crtc_cfg->crtc[i]; ++ ++ if (!crtc->enabled) ++ continue; ++ ++ xmir_crtc_set_mode_major(crtc, &crtc->mode, ++ crtc->rotation, crtc->x, crtc->y); ++ } ++ ++ xmir_set_screen_pixmap(old_screen_pixmap, new_screen_pixmap); ++ screen->DestroyPixmap(old_screen_pixmap); ++ ++ xf86_reload_cursors(screen); ++ ++ return TRUE; ++} ++ ++static const xf86CrtcConfigFuncsRec config_funcs = { ++ xmir_resize ++}; ++ ++static void ++xmir_handle_hotplug(void *ctx) ++{ ++ ScrnInfoPtr scrn = *(ScrnInfoPtr *)ctx; ++ xf86CrtcConfigPtr crtc_config = XF86_CRTC_CONFIG_PTR(scrn); ++ ++ if (crtc_config->num_crtc == 0) ++ FatalError("[xmir] Received hotplug event, but have no CRTCs?\n"); ++ ++ xmir_update_config(crtc_config); ++ ++ /* Trigger RANDR refresh */ ++ RRGetInfo(xf86ScrnToScreen(scrn), TRUE); ++} ++ ++static void ++xmir_display_config_callback(MirConnection *unused, void *ctx) ++{ ++ xmir_screen *xmir = ctx; ++ ++ xmir_post_to_eventloop(xmir->hotplug_event_handler, &xmir->scrn); ++} ++ ++Bool ++xmir_mode_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir) ++{ ++ int i; ++ MirDisplayConfiguration *display_config; ++ xf86CrtcPtr xf86crtc; ++ int output_type_count[mir_display_output_type_edp + 1]; ++ ++ memset(output_type_count, 0, sizeof output_type_count); ++ ++ /* Set up CRTC config functions */ ++ xf86CrtcConfigInit(scrn, &config_funcs); ++ ++ /* We don't scanout of a single surface, so we don't have a scanout limit */ ++ xf86CrtcSetSizeRange(scrn, ++ 320, 320, ++ INT16_MAX, INT16_MAX); ++ ++ /* Hook up hotplug notification */ ++ xmir->hotplug_event_handler = ++ xmir_register_handler(&xmir_handle_hotplug, ++ sizeof (ScreenPtr)); ++ ++ mir_connection_set_display_config_change_callback( ++ xmir_connection_get(), ++ &xmir_display_config_callback, xmir); ++ ++ display_config = ++ mir_connection_create_display_config(xmir_connection_get()); ++ ++ xmir->root_window_fragments = malloc((display_config->cards[0].max_simultaneous_outputs + 1) * ++ sizeof(xmir_window *)); ++ xmir->root_window_fragments[display_config->cards[0].max_simultaneous_outputs] = NULL; ++ ++ if (xmir->root_window_fragments == NULL) ++ return FALSE; ++ ++ for (i = 0; i < display_config->num_outputs; i++) { ++ xf86OutputPtr xf86output; ++ char name[32]; ++ MirDisplayOutput *mir_output = &display_config->outputs[i]; ++ const char* output_type_str = xmir_get_output_type_str(mir_output); ++ int type_count = i; ++ ++ if (mir_output->type >= 0 && mir_output->type <= mir_display_output_type_edp) ++ type_count = output_type_count[mir_output->type]++; ++ ++ snprintf(name, sizeof name, "%s-%d", output_type_str, type_count); ++ xf86output = xf86OutputCreate(scrn, &xmir_output_funcs, name); ++ ++ xmir_output_populate(xf86output, mir_output); ++ } ++ ++ for (i = 0; i < display_config->cards[0].max_simultaneous_outputs; i++) { ++ struct xmir_crtc *xmir_crtc = malloc(sizeof *xmir_crtc); ++ if (xmir_crtc == NULL) ++ return FALSE; ++ ++ xmir_crtc->xmir = xmir; ++ xmir_crtc->root_fragment = calloc(1, sizeof *xmir_crtc->root_fragment); ++ xmir_crtc->config = display_config; ++ ++ if (xmir_crtc->root_fragment == NULL) ++ return FALSE; ++ ++ xmir->root_window_fragments[i] = xmir_crtc->root_fragment; ++ RegionNull(&xmir_crtc->root_fragment->region); ++ ++ xf86crtc = xf86CrtcCreate(scrn, &crtc_funcs); ++ xf86crtc->driver_private = xmir_crtc; ++ } ++ ++ xf86SetScrnInfoModes(scrn); ++ ++ /* TODO: Use initial Mir state rather than setting up our own */ ++ xf86InitialConfiguration(scrn, TRUE); ++ ++ return TRUE; ++} +--- /dev/null ++++ b/hw/xfree86/xmir/xmir-private.h +@@ -0,0 +1,106 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#ifndef _XMIR_PRIVATE_H ++#define _XMIR_PRIVATE_H ++ ++#include ++#include "xmir.h" ++#include "xf86str.h" ++#include "list.h" ++#include "scrnintstr.h" ++#include "regionstr.h" ++ ++#define MIR_MAX_BUFFER_AGE 3 ++ ++typedef struct xmir_marshall_handler xmir_marshall_handler; ++ ++struct xmir_screen { ++ ScrnInfoPtr scrn; ++ CreateWindowProcPtr CreateWindow; ++ DestroyWindowProcPtr DestroyWindow; ++ xmir_driver * driver; ++ xmir_marshall_handler *submit_rendering_handler; ++ xmir_marshall_handler *hotplug_event_handler; ++ xmir_marshall_handler *focus_event_handler; ++ struct xorg_list damage_list; ++ struct xmir_window **root_window_fragments; /* NULL terminated array of xmir_window * */ ++ unsigned int dpms_on:1; /* Until Mir is less stupid about DPMS */ ++}; ++ ++struct xmir_window { ++ WindowPtr win; ++ MirSurface *surface; ++ RegionRec region; ++ RegionRec past_damage[MIR_MAX_BUFFER_AGE]; ++ DamagePtr damage; ++ int damage_index; ++ struct xorg_list link_damage; ++ unsigned int has_free_buffer:1; ++ unsigned int damaged:1; ++}; ++ ++MirConnection * ++xmir_connection_get(void); ++ ++xmir_screen * ++xmir_screen_get(ScreenPtr screen); ++ ++xmir_window * ++xmir_window_get(WindowPtr win); ++ ++void ++xmir_window_enable_damage_tracking(xmir_window *xmir_win); ++ ++void ++xmir_window_disable_damage_tracking(xmir_window *xmir_win); ++ ++ ++Bool ++xmir_screen_init_window(ScreenPtr screen, xmir_screen *xmir); ++ ++Bool ++xmir_mode_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir); ++ ++void ++xmir_init_thread_to_eventloop(void); ++ ++xmir_marshall_handler * ++xmir_register_handler(void (*msg_handler)(void *msg), size_t msg_size); ++ ++void ++xmir_post_to_eventloop(xmir_marshall_handler *handler, void *msg); ++ ++void ++xmir_process_from_eventloop(void); ++ ++ #endif /* _MIR_PRIVATE_H */ +--- /dev/null ++++ b/hw/xfree86/xmir/xmir-thread-proxy.c +@@ -0,0 +1,124 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "xf86.h" ++#include "xmir-private.h" ++ ++struct xmir_marshall_handler { ++ void (*msg_handler)(void *msg); ++ size_t msg_size; ++ char msg[]; ++}; ++ ++static int pipefds[2]; ++ ++static void ++xmir_wakeup_handler(pointer data, int err, pointer read_mask) ++{ ++ if (err >= 0 && FD_ISSET(pipefds[0], (fd_set *)read_mask)) ++ xmir_process_from_eventloop(); ++} ++ ++void ++xmir_init_thread_to_eventloop(void) ++{ ++ int err = pipe(pipefds); ++ if (err == -1) ++ FatalError("[XMIR] Failed to create thread-proxy pipes: %s\n", strerror(errno)); ++ ++ /* Set the read end to not block; we'll pull from this in the event loop ++ * We don't need to care about the write end, as that'll be written to ++ * from its own thread ++ */ ++ fcntl(pipefds[0], F_SETFL, O_NONBLOCK); ++ ++ AddGeneralSocket(pipefds[0]); ++ RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA, ++ xmir_wakeup_handler, ++ NULL); ++} ++ ++xmir_marshall_handler * ++xmir_register_handler(void (*msg_handler)(void *msg), size_t msg_size) ++{ ++ xmir_marshall_handler *handler; ++ ++ if (msg_size + sizeof *handler > PIPE_BUF) ++ return NULL; ++ ++ handler = malloc(sizeof *handler + msg_size); ++ if (!handler) ++ return NULL; ++ ++ handler->msg_handler = msg_handler; ++ handler->msg_size = msg_size; ++ return handler; ++} ++ ++void ++xmir_post_to_eventloop(xmir_marshall_handler *handler, void *msg) ++{ ++ ssize_t written; ++ const int total_size = sizeof *handler + handler->msg_size; ++ /* We require the total size to be less than PIPE_BUF to ensure an atomic write */ ++ assert(total_size < PIPE_BUF); ++ ++ memcpy(handler->msg, msg, handler->msg_size); ++ written = write(pipefds[1], handler, total_size); ++ if (written != total_size) ++ xf86Msg(X_ERROR, "[XMIR] Failed to proxy message to mainloop\n"); ++} ++ ++void ++xmir_process_from_eventloop(void) ++{ ++ xmir_marshall_handler handler; ++ void *msg; ++ ++ for (;;) { ++ if (read(pipefds[0], &handler, sizeof handler) < 0) { ++ return; ++ } ++ ++ msg = malloc(handler.msg_size); ++ if(read(pipefds[0], msg, handler.msg_size) == handler.msg_size) ++ (*handler.msg_handler)(msg); ++ free(msg); ++ } ++} ++ +--- /dev/null ++++ b/hw/xfree86/xmir/xmir-window.c +@@ -0,0 +1,343 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#ifdef HAVE_XORG_CONFIG_H ++#include "xorg-config.h" ++#endif ++#include ++#include "windowstr.h" ++#include "regionstr.h" ++#include "damagestr.h" ++ ++#include "xmir.h" ++#include "xmir-private.h" ++ ++#include "xf86.h" ++ ++#include ++#include ++ ++static DevPrivateKeyRec xmir_window_private_key; ++static const RegionRec xmir_empty_region = { {0, 0, 0, 0}, &RegionBrokenData }; ++ ++xmir_window * ++xmir_window_get(WindowPtr win) ++{ ++ /* The root window is handled specially */ ++ assert(win->parent != NULL); ++ ++ return dixGetPrivate(&win->devPrivates, &xmir_window_private_key); ++} ++ ++_X_EXPORT int ++xmir_window_get_fd(xmir_window *xmir_win) ++{ ++ MirBufferPackage *package; ++ ++ if (mir_platform_type_gbm != mir_surface_get_platform_type(xmir_win->surface)) ++ FatalError("[xmir] Only supported on DRM Mir platform\n"); ++ ++ mir_surface_get_current_buffer(xmir_win->surface, &package); ++ if (package->fd_items != 1) ++ FatalError("[xmir] Unexpected buffer contents from Mir; this is a programming error\n"); ++ ++ return package->fd[0]; ++} ++ ++static void ++xmir_handle_buffer_available(void *ctx) ++{ ++ xmir_screen *xmir; ++ xmir_window *mir_win = *(xmir_window **)ctx; ++ ++ if (mir_win->surface == NULL) ++ return; ++ ++ xmir = xmir_screen_get(xmir_window_to_windowptr(mir_win)->drawable.pScreen); ++ ++ mir_win->has_free_buffer = TRUE; ++ mir_win->damage_index = (mir_win->damage_index + 1) % MIR_MAX_BUFFER_AGE; ++ ++ if (xmir_window_is_dirty(mir_win)) ++ (*xmir->driver->BufferAvailableForWindow)(mir_win, ++ xmir_window_get_dirty(mir_win)); ++} ++ ++static inline int ++index_in_damage_buffer(int current_index, int age) ++{ ++ int index = (current_index - age) % MIR_MAX_BUFFER_AGE; ++ ++ return index < 0 ? MIR_MAX_BUFFER_AGE + index : index; ++} ++ ++static void ++handle_buffer_received(MirSurface *surf, void *ctx) ++{ ++ xmir_window *xmir_win = ctx; ++ ++ xmir_screen *xmir = ++ xmir_screen_get(xmir_window_to_windowptr(xmir_win)->drawable.pScreen); ++ ++ xmir_post_to_eventloop(xmir->submit_rendering_handler, &xmir_win); ++} ++ ++static RegionPtr ++damage_region_for_current_buffer(xmir_window *xmir_win) ++{ ++ MirBufferPackage *package; ++ RegionPtr region; ++ int age; ++ ++ mir_surface_get_current_buffer(xmir_win->surface, &package); ++ age = package->age; ++ ++ region = &xmir_win->past_damage[index_in_damage_buffer(xmir_win->damage_index, age)]; ++ ++ /* As per EGL_EXT_buffer_age, contents are undefined for age == 0 */ ++ if (age == 0) ++ RegionCopy(region, &xmir_win->region); ++ ++ return region; ++} ++ ++/* Submit rendering for @window to Mir ++ * @region is an (optional) damage region, to hint the compositor as to what ++ * region has changed. It can be NULL to indicate the whole window should be ++ * considered dirty. ++ */ ++_X_EXPORT int ++xmir_submit_rendering_for_window(xmir_window *xmir_win, ++ RegionPtr region) ++{ ++ RegionPtr tracking; ++ ++ if (!xmir_screen_get(xmir_win->win->drawable.pScreen)->dpms_on) ++ return Success; ++ ++ xmir_win->has_free_buffer = FALSE; ++ tracking = damage_region_for_current_buffer(xmir_win); ++ mir_surface_swap_buffers(xmir_win->surface, &handle_buffer_received, xmir_win); ++ ++ if (region == NULL) ++ RegionEmpty(tracking); ++ else ++ RegionSubtract(tracking, tracking, region); ++ ++ if (RegionNil(tracking)) ++ xorg_list_del(&xmir_win->link_damage); ++ ++ return Success; ++} ++ ++_X_EXPORT Bool ++xmir_window_has_free_buffer(xmir_window *xmir_win) ++{ ++ return xmir_win->has_free_buffer; ++} ++ ++_X_EXPORT RegionPtr ++xmir_window_get_dirty(xmir_window *xmir_win) ++{ ++ if (xorg_list_is_empty(&xmir_win->link_damage)) ++ return (RegionPtr)&xmir_empty_region; ++ ++ if (xmir_win->damaged) { ++ int i; ++ RegionPtr damage = DamageRegion(xmir_win->damage); ++ RegionIntersect(damage, damage, &xmir_win->region); ++ ++ for (i = 0; i < MIR_MAX_BUFFER_AGE; i++) { ++ RegionUnion(&xmir_win->past_damage[i], ++ &xmir_win->past_damage[i], ++ damage); ++ } ++ ++ DamageEmpty(xmir_win->damage); ++ xmir_win->damaged = 0; ++ } ++ ++ return damage_region_for_current_buffer(xmir_win); ++} ++ ++_X_EXPORT Bool ++xmir_window_is_dirty(xmir_window *xmir_win) ++{ ++ return RegionNotEmpty(xmir_window_get_dirty(xmir_win)); ++} ++ ++_X_EXPORT WindowPtr ++xmir_window_to_windowptr(xmir_window *xmir_win) ++{ ++ return xmir_win->win; ++} ++ ++_X_EXPORT BoxPtr ++xmir_window_get_drawable_region(xmir_window *xmir_win) ++{ ++ return RegionExtents(&xmir_win->region); ++} ++ ++_X_EXPORT int32_t ++xmir_window_get_stride(xmir_window *xmir_win) ++{ ++ MirBufferPackage *package; ++ ++ mir_surface_get_current_buffer(xmir_win->surface, &package); ++ ++ return package->stride; ++} ++ ++static void ++damage_report(DamagePtr damage, RegionPtr region, void *ctx) ++{ ++ xmir_window *xmir_win = ctx; ++ ++ xmir_win->damaged = 1; ++ xorg_list_move(&xmir_win->link_damage, ++ &xmir_screen_get(damage->pScreen)->damage_list); ++} ++ ++static void ++damage_destroy(DamagePtr damage, void *ctx) ++{ ++ xmir_window *xmir_win = ctx; ++ xorg_list_del(&xmir_win->link_damage); ++} ++ ++void ++xmir_window_enable_damage_tracking(xmir_window *xmir_win) ++{ ++ WindowPtr win = xmir_win->win; ++ ++ if (xmir_win->damage != NULL) ++ return; ++ ++ xorg_list_init(&xmir_win->link_damage); ++ xmir_win->damage = DamageCreate(damage_report, damage_destroy, ++ DamageReportNonEmpty, TRUE, ++ win->drawable.pScreen, xmir_win); ++ DamageRegister(&win->drawable, xmir_win->damage); ++ ++ for (int i = 0; i < MIR_MAX_BUFFER_AGE; i++) { ++ RegionNull(&xmir_win->past_damage[i]); ++ } ++ xmir_win->damage_index = 0; ++ xmir_win->damaged = 0; ++} ++ ++void ++xmir_window_disable_damage_tracking(xmir_window *xmir_win) ++{ ++ if (xmir_win->damage != NULL) { ++ DamageUnregister(xmir_win->damage); ++ DamageDestroy(xmir_win->damage); ++ xmir_win->damage = NULL; ++ } ++} ++ ++static Bool ++xmir_create_window(WindowPtr win) ++{ ++ ScreenPtr screen = win->drawable.pScreen; ++ xmir_screen *xmir = xmir_screen_get(screen); ++ Bool ret; ++ ++ screen->CreateWindow = xmir->CreateWindow; ++ ret = (*screen->CreateWindow)(win); ++ screen->CreateWindow = xmir_create_window; ++ ++ /* Until we support rootless operation, we care only for the root ++ * window, which has no parent. ++ */ ++ if (win->parent == NULL) { ++ /* The CRTC setup has already created the root_window_fragments ++ array. We need to hook the root window into it */ ++ for (int i = 0; xmir->root_window_fragments[i] != NULL; i++) { ++ xmir->root_window_fragments[i]->win = win; ++ ++ /* TODO: This creates one Damage tracker per fragment; we only ++ really need one, though */ ++ xmir_window_enable_damage_tracking(xmir->root_window_fragments[i]); ++ } ++ } ++ return ret; ++} ++ ++static Bool ++xmir_destroy_window(WindowPtr win) ++{ ++ ScreenPtr screen = win->drawable.pScreen; ++ xmir_screen *xmir = xmir_screen_get(screen); ++ Bool ret; ++ ++ screen->DestroyWindow = xmir->DestroyWindow; ++ ret = (*screen->DestroyWindow)(win); ++ screen->DestroyWindow = xmir_destroy_window; ++ ++ /* Until we support rootless operation, we care only for the root ++ * window, which has no parent. ++ */ ++ if (win->parent == NULL) { ++ /* Break the link with the root_window_fragments */ ++ for (int i = 0; xmir->root_window_fragments[i] != NULL; i++) { ++ xmir->root_window_fragments[i]->win = NULL; ++ ++ /* We cannot use xmir_window_disable_damage_tracking here because ++ * the Damage extension will also clean it up on window destruction ++ */ ++ xorg_list_del(&xmir->root_window_fragments[i]->link_damage); ++ } ++ } ++ ++ return ret; ++} ++ ++Bool ++xmir_screen_init_window(ScreenPtr screen, xmir_screen *xmir) ++{ ++ if (!dixRegisterPrivateKey(&xmir_window_private_key, PRIVATE_WINDOW, 0)) ++ return FALSE; ++ ++ xmir->CreateWindow = screen->CreateWindow; ++ screen->CreateWindow = xmir_create_window; ++ xmir->DestroyWindow = screen->DestroyWindow; ++ screen->DestroyWindow = xmir_destroy_window; ++ ++ xmir->submit_rendering_handler = ++ xmir_register_handler(&xmir_handle_buffer_available, ++ sizeof (xmir_window *)); ++ if (xmir->submit_rendering_handler == NULL) ++ return FALSE; ++ ++ return TRUE; ++} +--- /dev/null ++++ b/hw/xfree86/xmir/xmir.c +@@ -0,0 +1,263 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#ifdef HAVE_XORG_CONFIG_H ++#include ++#endif ++ ++#include "xmir.h" ++#include "xmir-private.h" ++ ++#include "list.h" ++#include "xf86.h" ++#include "xf86Crtc.h" ++#include "xf86Priv.h" ++ ++#include ++#include ++ ++#include ++#include ++ ++static DevPrivateKeyRec xmir_screen_private_key; ++/* ++ * We have only a single Mir connection, regardless of how many ++ * drivers load. ++ */ ++static MirConnection *conn; ++ ++MirConnection * ++xmir_connection_get(void) ++{ ++ return conn; ++} ++ ++xmir_screen * ++xmir_screen_get(ScreenPtr screen) ++{ ++ return dixGetPrivate(&screen->devPrivates, &xmir_screen_private_key); ++} ++ ++_X_EXPORT int ++xmir_get_drm_fd(const char *busid) ++{ ++ MirPlatformPackage platform; ++ int i, fd = -1; ++ ++ mir_connection_get_platform(conn, &platform); ++ ++ for (i = 0; i < platform.fd_items; ++i) { ++ char *fd_busid = drmGetBusid(platform.fd[i]); ++ if (!strcasecmp(busid, fd_busid)) ++ fd = platform.fd[i]; ++ drmFreeBusid(fd_busid); ++ } ++ return fd; ++} ++ ++static void ++handle_auth_magic(int status, void *ctx) ++{ ++ int *retVal = ctx; ++ *retVal = status; ++} ++ ++_X_EXPORT int ++xmir_auth_drm_magic(xmir_screen *xmir, uint32_t magic) ++{ ++ int status; ++ mir_wait_for(mir_connection_drm_auth_magic(xmir_connection_get(), ++ magic, ++ &handle_auth_magic, ++ &status)); ++ return status; ++} ++ ++_X_EXPORT xmir_screen * ++xmir_screen_create(ScrnInfoPtr scrn) ++{ ++ xmir_screen *xmir = calloc (1, sizeof *xmir); ++ if (xmir == NULL) ++ return NULL; ++ ++ xmir->scrn = scrn; ++ xmir->dpms_on = TRUE; ++ ++ return xmir; ++} ++ ++_X_EXPORT Bool ++xmir_screen_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir, xmir_driver *driver) ++{ ++ xmir->driver = driver; ++ xorg_list_init(&xmir->damage_list); ++ ++ if (!xmir_mode_pre_init(scrn, xmir)) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++static void xmir_handle_focus_event(void *ctx) ++{ ++ Bool new_focus = *(Bool *)ctx; ++ xf86Msg(X_INFO, "[XMir] Handling focus event, new_focus = %s\n", new_focus ? "TRUE" : "FALSE"); ++ ++ /* TODO: Split xf86VTSwitch out so that we don't need to check xf86VTOwner*/ ++ /* TODO: Disable input on startup until we receive a usc ACK */ ++ if (new_focus && !xf86VTOwner()) ++ xf86VTSwitch(); ++ ++ if (!new_focus && xf86VTOwner()) ++ xf86VTSwitch(); ++} ++ ++static void xmir_handle_lifecycle_event(MirConnection *unused, MirLifecycleState state, void *ctx) ++{ ++ (void)unused; ++ xmir_screen *xmir = ctx; ++ Bool new_focus; ++ switch(state) ++ { ++ case mir_lifecycle_state_will_suspend: ++ new_focus = FALSE; ++ break; ++ case mir_lifecycle_state_resumed: ++ new_focus = TRUE; ++ break; ++ default: ++ xf86Msg(X_ERROR, "Received unknown Mir lifetime event\n"); ++ return; ++ } ++ xmir_post_to_eventloop(xmir->focus_event_handler, &new_focus); ++} ++ ++_X_EXPORT Bool ++xmir_screen_init(ScreenPtr screen, xmir_screen *xmir) ++{ ++ if (!dixRegisterPrivateKey(&xmir_screen_private_key, PRIVATE_SCREEN, 0)) ++ return FALSE; ++ dixSetPrivate(&screen->devPrivates, &xmir_screen_private_key, xmir); ++ ++ if (!xmir_screen_init_window(screen, xmir)) ++ return FALSE; ++ ++ if (!xf86_cursors_init(screen, 0,0,0)) ++ xf86Msg(X_WARNING, "xf86Cursor initialisation failed\n"); ++ ++ /* Hook up focus -> VT switch proxy */ ++ xmir->focus_event_handler = ++ xmir_register_handler(&xmir_handle_focus_event, ++ sizeof(Bool)); ++ if (xmir->focus_event_handler == NULL) ++ return FALSE; ++ ++ mir_connection_set_lifecycle_event_callback(xmir_connection_get(), ++ &xmir_handle_lifecycle_event, ++ xmir); ++ ++ return TRUE; ++} ++ ++_X_EXPORT void ++xmir_screen_close(ScreenPtr screen, xmir_screen *xmir) ++{ ++ ++} ++ ++_X_EXPORT void ++xmir_screen_destroy(xmir_screen *xmir) ++{ ++ ++} ++ ++_X_EXPORT void ++xmir_screen_for_each_damaged_window(xmir_screen *xmir, xmir_window_proc callback) ++{ ++ xmir_window *xmir_win, *tmp_win; ++ xorg_list_for_each_entry_safe(xmir_win, tmp_win, &xmir->damage_list, link_damage) { ++ if (xmir_window_has_free_buffer(xmir_win) && ++ xmir_window_is_dirty(xmir_win)) ++ (*callback)(xmir_win, xmir_window_get_dirty(xmir_win)); ++ } ++} ++ ++static MODULESETUPPROTO(xMirSetup); ++static MODULETEARDOWNPROTO(xMirTeardown); ++ ++static XF86ModuleVersionInfo VersRec = { ++ "xmir", ++ MODULEVENDORSTRING, ++ MODINFOSTRING1, ++ MODINFOSTRING2, ++ XORG_VERSION_CURRENT, ++ 1, 0, 0, ++ ABI_CLASS_EXTENSION, ++ ABI_EXTENSION_VERSION, ++ MOD_CLASS_NONE, ++ {0, 0, 0, 0} ++}; ++ ++_X_EXPORT XF86ModuleData xmirModuleData = { &VersRec, xMirSetup, xMirTeardown }; ++ ++static pointer ++xMirSetup(pointer module, pointer opts, int *errmaj, int *errmin) ++{ ++ static Bool setupDone = FALSE; ++ ++ if (setupDone) { ++ if (errmaj) ++ *errmaj = LDR_ONCEONLY; ++ return NULL; ++ } ++ ++ conn = mir_connect_sync(mirSocket, mirID); ++ ++ if (!mir_connection_is_valid(conn)) { ++ if (errmaj) ++ *errmaj = LDR_MODSPECIFIC; ++ FatalError("Failed to connect to Mir: %s\n", ++ mir_connection_get_error_message(conn)); ++ return NULL; ++ } ++ ++ xmir_init_thread_to_eventloop(); ++ ++ setupDone = TRUE; ++ ++ return module; ++} ++ ++static void ++xMirTeardown(pointer module) ++{ ++} +--- /dev/null ++++ b/hw/xfree86/xmir/xmir.h +@@ -0,0 +1,103 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#ifndef _XMIR_H ++#define _XMIR_H ++ ++#include ++#include ++ ++#include "xf86str.h" ++#include "scrnintstr.h" ++#include "window.h" ++ ++typedef struct xmir_screen xmir_screen; ++typedef struct xmir_window xmir_window; ++ ++typedef void (*xmir_window_proc)(xmir_window *xmir_win, RegionPtr damaged_region); ++ ++#define XMIR_DRIVER_VERSION 1 ++typedef struct { ++ int version; ++ xmir_window_proc BufferAvailableForWindow; ++} xmir_driver; ++ ++_X_EXPORT int ++xmir_get_drm_fd(const char *busid); ++ ++_X_EXPORT int ++xmir_auth_drm_magic(xmir_screen *xmir, uint32_t magic); ++ ++_X_EXPORT xmir_screen * ++xmir_screen_create(ScrnInfoPtr scrn); ++ ++_X_EXPORT Bool ++xmir_screen_pre_init(ScrnInfoPtr scrn, xmir_screen *xmir, xmir_driver *driver); ++ ++_X_EXPORT Bool ++xmir_screen_init(ScreenPtr screen, xmir_screen *xmir); ++ ++_X_EXPORT void ++xmir_screen_close(ScreenPtr screen, xmir_screen *xmir); ++ ++_X_EXPORT void ++xmir_screen_destroy(xmir_screen *xmir); ++ ++_X_EXPORT WindowPtr ++xmir_window_to_windowptr(xmir_window *xmir_win); ++ ++_X_EXPORT int ++xmir_window_get_fd(xmir_window *xmir_win); ++ ++_X_EXPORT int ++xmir_submit_rendering_for_window(xmir_window *xmir_win, ++ RegionPtr region); ++ ++_X_EXPORT Bool ++xmir_window_has_free_buffer(xmir_window *xmir_win); ++ ++_X_EXPORT RegionPtr ++xmir_window_get_dirty(xmir_window *xmir_win); ++ ++_X_EXPORT Bool ++xmir_window_is_dirty(xmir_window *xmir_win); ++ ++_X_EXPORT BoxPtr ++xmir_window_get_drawable_region(xmir_window *xmir_win); ++ ++_X_EXPORT int32_t ++xmir_window_get_stride(xmir_window *xmir_win); ++ ++_X_EXPORT void ++xmir_screen_for_each_damaged_window(xmir_screen *xmir, xmir_window_proc callback); ++ ++#endif /* _XMIR_H */ +--- a/include/list.h ++++ b/include/list.h +@@ -184,6 +184,14 @@ + prev->next = next; + } + ++static inline void ++xorg_list_move(struct xorg_list *entry, struct xorg_list *head) ++{ ++ __xorg_list_del(entry->prev, entry->next); ++ __xorg_list_add(entry, head->prev, head); ++} ++ ++ + /** + * Remove the element from the list it is in. Using this function will reset + * the pointers to/from this element so it is removed from the list. It does +--- a/include/xorg-server.h.in ++++ b/include/xorg-server.h.in +@@ -224,4 +224,7 @@ + /* Use XTrans FD passing support */ + #undef XTRANS_SEND_FDS + ++/* Build XMIR nested server */ ++#undef XMIR ++ + #endif /* _XORG_SERVER_H_ */ +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -6,6 +6,9 @@ + # For now, requires xf86 ddx, could be adjusted to use another + SUBDIRS += xi2 + noinst_PROGRAMS += xkb input xtest misc fixes xfree86 hashtabletest os signal-logging touch ++if XMIR ++noinst_PROGRAMS += xmir-thread-proxy ++endif #XMIR + endif + check_LTLIBRARIES = libxservertest.la + +@@ -38,6 +41,8 @@ + signal_logging_LDADD=$(TEST_LDADD) + hashtabletest_LDADD=$(TEST_LDADD) $(top_srcdir)/Xext/hashtable.c + os_LDADD=$(TEST_LDADD) ++xmir_thread_proxy_LDADD=$(TEST_LDADD) $(top_srcdir)/hw/xfree86/xmir/xmir-thread-proxy.c -lpthread ++xmir_thread_proxy_CFLAGS=$(AM_CFLAGS) $(XMIR_CFLAGS) -I$(top_srcdir)/hw/xfree86/xmir -I$(top_srcdir)/hw/xfree86/common + + libxservertest_la_LIBADD = $(XSERVER_LIBS) + if XORG +--- /dev/null ++++ b/test/xmir-thread-proxy.c +@@ -0,0 +1,154 @@ ++/* ++ * Copyright © 2012 Canonical, Inc ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Soft- ++ * ware"), to deal in the Software without restriction, including without ++ * limitation the rights to use, copy, modify, merge, publish, distribute, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, provided that the above copyright ++ * notice(s) and this permission notice appear in all copies of the Soft- ++ * ware and that both the above copyright notice(s) and this permission ++ * notice appear in supporting documentation. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- ++ * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY ++ * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++ * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE- ++ * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR- ++ * MANCE OF THIS SOFTWARE. ++ * ++ * Except as contained in this notice, the name of a copyright holder shall ++ * not be used in advertising or otherwise to promote the sale, use or ++ * other dealings in this Software without prior written authorization of ++ * the copyright holder. ++ * ++ * Authors: ++ * Christopher James Halse Rogers (christopher.halse.rogers@canonical.com) ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#include "xmir-private.h" ++ ++struct test_content { ++ int *variable; ++ int value; ++}; ++ ++static void ++_test_callback(void *msg_content) ++{ ++ struct test_content *content = msg_content; ++ *content->variable = content->value; ++} ++ ++static void ++xmir_test_marshall_to_eventloop(void) ++{ ++ xmir_marshall_handler *test_marshaller; ++ struct test_content msg; ++ int check = 0; ++ ++ xmir_init_thread_to_eventloop(); ++ ++ test_marshaller = xmir_register_handler(&_test_callback, sizeof msg); ++ ++ msg.variable = ✓ ++ msg.value = 1; ++ ++ xmir_post_to_eventloop(test_marshaller, &msg); ++ xmir_process_from_eventloop(); ++ ++ assert(check == 1); ++} ++ ++static void ++_racy_test_callback(void *msg_content) ++{ ++ struct test_content *content = msg_content; ++ int new_value = *content->variable + 1; ++ /* Ensure the other threads get to run and see the old value of content->variable */ ++ usleep(100); ++ *content->variable = new_value; ++} ++ ++struct thread_context { ++ xmir_marshall_handler *marshaller; ++ struct test_content *msg; ++}; ++ ++static void * ++_post_racy_msg(void *thread_ctx) ++{ ++ struct thread_context *ctx = thread_ctx; ++ ++ xmir_post_to_eventloop(ctx->marshaller, ctx->msg); ++ ++ return NULL; ++} ++ ++#define NUM_THREADS 10 ++ ++static void ++xmir_test_many_threads_to_eventloop(void) ++{ ++ pthread_t threads[NUM_THREADS]; ++ pthread_attr_t attr; ++ xmir_marshall_handler *test_marshaller; ++ struct thread_context ctx; ++ struct test_content msg; ++ int check = 0, i; ++ ++ pthread_attr_init(&attr); ++ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); ++ ++ xmir_init_thread_to_eventloop(); ++ ++ test_marshaller = xmir_register_handler(&_racy_test_callback, sizeof msg); ++ ++ msg.variable = ✓ ++ ++ ctx.marshaller = test_marshaller; ++ ctx.msg = &msg; ++ ++ for (i = 0; i < NUM_THREADS; i++) { ++ pthread_create(&threads[i], &attr, _post_racy_msg, (void *)&ctx); ++ } ++ ++ pthread_attr_destroy(&attr); ++ ++ for (i = 0; i < NUM_THREADS; i++) { ++ pthread_join(threads[i], NULL); ++ } ++ ++ xmir_process_from_eventloop(); ++ ++ assert(check == NUM_THREADS); ++} ++ ++static void ++xmir_test_refuses_to_marshall_too_large_msg(void) ++{ ++ xmir_init_thread_to_eventloop(); ++ ++ assert(xmir_register_handler(&_test_callback, PIPE_BUF) == NULL); ++} ++ ++int ++main(int argc, char **argv) ++{ ++ xmir_test_marshall_to_eventloop(); ++ xmir_test_many_threads_to_eventloop(); ++ xmir_test_refuses_to_marshall_too_large_msg(); ++} diff --git a/debian/patches/xrandr-rroutputchanged-main.patch b/debian/patches/xrandr-rroutputchanged-main.patch new file mode 100644 index 0000000..0d8121e --- /dev/null +++ b/debian/patches/xrandr-rroutputchanged-main.patch @@ -0,0 +1,63 @@ +From e78c75f5e19cf38f276b1631078f87b502fdc555 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Sun, 8 Dec 2013 10:00:08 +0100 +Subject: [PATCH 1/1] randr: make RROutputChanged change the main protocol + screen not the gpu screen + +We only set changes on the main protocol screen as, for example +in RRSetChanged() and RRTellChanged(), therefore we should follow +the same logic when reporting that an output changed in +RROutputChanged(). + +This means that RRTellChanged() will then update the relevant +timestamps also when events come from gpu screens. + +Reviewed-by: Dave Airlie +Signed-off-by: Alberto Milone +--- + randr/rroutput.c | 25 ++++++++++++++++++++----- + 1 file changed, 20 insertions(+), 5 deletions(-) + +diff --git a/randr/rroutput.c b/randr/rroutput.c +index 2b0b82f..3cc9852 100644 +--- a/randr/rroutput.c ++++ b/randr/rroutput.c +@@ -31,15 +31,30 @@ RESTYPE RROutputType; + void + RROutputChanged(RROutputPtr output, Bool configChanged) + { ++ /* set changed bits on the master screen only */ + ScreenPtr pScreen = output->pScreen; + + output->changed = TRUE; +- if (pScreen) { +- rrScrPriv(pScreen); +- RRSetChanged(pScreen); +- if (configChanged) +- pScrPriv->configChanged = TRUE; ++ if (!pScreen) ++ return; ++ ++ ScreenPtr master; ++ rrScrPriv(pScreen); ++ rrScrPrivPtr mastersp; ++ ++ if (pScreen->isGPU) { ++ master = pScreen->current_master; ++ if (!master) ++ return; ++ mastersp = rrGetScrPriv(master); + } ++ else { ++ mastersp = pScrPriv; ++ } ++ ++ RRSetChanged(pScreen); ++ if (configChanged) ++ mastersp->configChanged = TRUE; + } + + /* +-- +1.7.9.5 + diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..a2bbaf0 --- /dev/null +++ b/debian/rules @@ -0,0 +1,402 @@ +#!/usr/bin/make -f +# debian/rules for the Debian xorg-server package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# Set up the $(STAMP_DIR) directory, and use it for quilt' stamp: +STAMP_DIR := stampdir +QUILT_STAMPFN := $(STAMP_DIR)/patch +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +include /usr/share/quilt/quilt.make + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +# udeb is arch-dependent... +ifneq (, $(filter %-udeb, $(shell dh_listpackages -s))) + udeb = yes +endif + +# ...but let's support disabling it to speed up debug builds: +ifneq (,$(filter noudeb,$(DEB_BUILD_OPTIONS))) + udeb = + DH_INSTALL_OPTIONS = -Nxserver-xorg-core-udeb +endif + + +ifeq ($(DEB_HOST_ARCH_OS), linux) + selinux = --enable-xselinux + build_xmir = --enable-xmir +else + selinux = --disable-xselinux +endif + +# Mir isn't built on PPC +ifneq (,$(filter $(DEB_HOST_ARCH), arm64 powerpc ppc64el)) + build_xmir = --disable-xmir +endif + +ifeq ($(DEB_HOST_ARCH_OS), hurd) + dri = --disable-dri --disable-dri2 --disable-dri3 +else + dri = --enable-dri --enable-dri2 +ifeq ($(DEB_HOST_ARCH_OS), linux) + dri += --enable-dri3 +else + # disable dri3 on kbsd until xtrans fd passing is enabled + dri += --disable-dri3 +endif +endif + +config_backend = --disable-config-dbus --disable-config-hal +ifeq ($(DEB_HOST_ARCH_OS), linux) + config_backend += --enable-config-udev +else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) + config_backend += --disable-config-udev --enable-config-devd + libs = $(shell pkg-config --libs libbsd-overlay) + cppflags = $(shell pkg-config --cflags libbsd-overlay) +else # hurd + config_backend += --disable-config-udev +endif + +vars = $(shell DEB_BUILD_MAINT_OPTIONS="hardening=+pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,-Bsymbolic" DEB_CPPFLAGS_MAINT_APPEND="-DPRE_RELEASE=0 $(cppflags)" dpkg-buildflags --export=configure) LIBS="$(libs)" + +ifneq (,$(filter nocheck, $(DEB_BUILD_OPTIONS))) + config_tests = --disable-unit-tests +else + config_tests = --enable-unit-tests +endif + +INSTALL=/usr/bin/install + +VENDOR = $(shell lsb_release -i -s) +SUPPORT = For technical support please see http://www.ubuntu.com/support + +SOURCE_NAME := xorg-server +SOURCE_VERSION := $(shell dpkg-parsechangelog | awk -F': ' '/^Version: / {print $$2}') + +# Add a workaround for LP: #1266492 +confflags += lt_cv_prog_compiler_static_works=no + +# Add a workaround for LP: #1266492 +confflags += lt_cv_prog_compiler_static_works=no + +# disable-static is so we don't get libfoo.a for modules. now if only we could +# kill the .las. +confflags += \ + --disable-silent-rules \ + --disable-static \ + --without-dtrace \ + --disable-strict-compilation \ + --disable-debug \ + $(config_tests) \ + --with-int10=x86emu \ + --with-extra-module-dir="/usr/lib/${DEB_HOST_MULTIARCH}/xorg/extra-modules,/usr/lib/xorg/extra-modules" \ + --with-os-vendor="$(VENDOR)" \ + --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(SUPPORT))" \ + --with-xkb-path=/usr/share/X11/xkb \ + --with-xkb-output=/var/lib/xkb \ + --disable-install-libxf86config \ + --enable-mitshm \ + --enable-xres \ + --disable-xcsecurity \ + --disable-tslib \ + --enable-dbe \ + --disable-xf86bigfont \ + --enable-dpms \ + $(config_backend) \ + --enable-xorg \ + --disable-linux-acpi \ + --disable-linux-apm \ + --disable-xquartz \ + --disable-xwin \ + --disable-xfake \ + --disable-xfbdev \ + --disable-install-setuid + +confflags_main = \ + --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,built-ins" \ + --enable-aiglx \ + --enable-glx-tls \ + --enable-registry \ + --enable-composite \ + --enable-record \ + --enable-xv \ + --enable-xvmc \ + --enable-dga \ + --enable-screensaver \ + --enable-xdmcp \ + --enable-xdm-auth-1 \ + --enable-glx \ + $(dri) \ + --enable-present \ + --enable-xinerama \ + --enable-xf86vidmode \ + --enable-xace \ + $(selinux) \ + --enable-xfree86-utils \ + --enable-dmx \ + --enable-xvfb \ + --enable-xnest \ + --enable-kdrive \ + --enable-xephyr \ + $(build_xfbdev) \ + $(build_xmir) \ + --with-sha1=libgcrypt \ + --enable-xcsecurity \ + $(config_backend_main) \ + $(void) + +confflags_udeb = \ + --with-default-font-path="built-ins" \ + --disable-aiglx \ + --disable-glx-tls \ + --disable-registry \ + --disable-composite \ + --disable-record \ + --disable-xv \ + --disable-xvmc \ + --enable-dga \ + --disable-screensaver \ + --disable-xdmcp \ + --disable-xdm-auth-1 \ + --disable-glx \ + --disable-dri \ + --disable-dri2 \ + --disable-xinerama \ + --disable-xf86vidmode \ + --disable-xace \ + --disable-xselinux \ + --disable-xfree86-utils \ + --disable-dmx \ + --disable-xvfb \ + --disable-xnest \ + --disable-kdrive \ + --disable-xephyr \ + --disable-xfbdev \ + --disable-xmir \ + --with-sha1=libnettle \ + $(config_backend_udeb) \ + $(void) + +$(QUILT_STAMPFN): $(STAMP_DIR)/stampdir + +$(STAMP_DIR)/autoreconf: $(STAMP_DIR)/stampdir $(QUILT_STAMPFN) + dh_testdir + autoreconf -vfi + >$@ + +$(STAMP_DIR)/build-source: $(STAMP_DIR)/autoreconf + mkdir -p build-source + tar \ + --owner=0 --group=0 \ + --transform 's,^,xorg-server/,' \ + --exclude=stampdir --exclude=debian \ + --exclude=build-* --exclude=autom4te.cache \ + -cf - * | xz > build-source/xorg-server.tar.xz + >$@ + +$(STAMP_DIR)/configure-%: $(STAMP_DIR)/autoreconf + dh_testdir + mkdir -p build-$* + cd build-$* && \ + ../configure \ + --prefix=/usr \ + --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + --sysconfdir=/etc \ + --localstatedir=/var \ + $(confflags) \ + $(confflags_$*) \ + $(vars) + >$@ + +$(STAMP_DIR)/build-%: $(STAMP_DIR)/configure-% + dh_testdir + cd build-$* && $(MAKE) + >$@ + +$(STAMP_DIR)/tests-%: $(STAMP_DIR)/build-% + cd build-$* && $(MAKE) check VERBOSE=1 + >$@ + +build: abibumpcheck +build: $(STAMP_DIR)/build-main +build: $(STAMP_DIR)/tests-main +ifeq ($(udeb), yes) +build: $(STAMP_DIR)/build-udeb +build: $(STAMP_DIR)/tests-udeb +endif +build-arch: build +build-indep: $(STAMP_DIR)/build-source build + +clean: unpatch + dh_testdir + rm -rf $(STAMP_DIR) + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf build-* + rm -f compile config.guess config.sub configure depcomp install-sh + rm -f ltmain.sh missing INSTALL aclocal.m4 ylwrap + rm -f include/do-not-use-config.h.in + rm -f m4/lt*.m4 m4/libtool.m4 + find -name Makefile.in -delete + rm -f test-driver + dh_clean + +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs + + cd build-main && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/main install +ifeq ($(udeb), yes) + cd build-udeb && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/udeb install +endif + + # oh, yuck. + find debian/tmp/*/usr/lib/xorg -type f -name '*.la' | \ + xargs rm -f + + # remove modules not needed in d-i + rm -rf debian/tmp/udeb/usr/lib/xorg/modules/multimedia + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxaa.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libexa.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libwfb.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxf8_16bpp.so + + # we don't ship these from the udeb build, reduce noise from dh_install + # --list-missing + rm -rf debian/tmp/udeb/usr/include + rm -rf debian/tmp/udeb/usr/share/aclocal + rm -rf debian/tmp/udeb/usr/share/man + rm -rf debian/tmp/udeb/usr/lib/pkgconfig + + install -m 755 debian/local/xvfb-run debian/tmp/main/usr/bin + # Make sure Xvfb at least starts up + PATH=debian/tmp/main/usr/bin/:/bin:/usr/bin \ + debian/tmp/main/usr/bin/xvfb-run -s "-screen 0 1280x1024x24 -nolisten tcp -noreset" true + + install debian/local/xvfb-run.1 debian/tmp/main/usr/share/man/man1 +ifneq ($(DEB_HOST_ARCH_OS), linux) + install -d debian/tmp/main/usr/share/X11/xorg.conf.d + install -m 644 debian/local/10-*.conf debian/tmp/main/usr/share/X11/xorg.conf.d +ifeq ($(udeb), yes) + install -d debian/tmp/udeb/usr/share/X11/xorg.conf.d + install -m 644 debian/local/10-*.conf debian/tmp/udeb/usr/share/X11/xorg.conf.d +endif +endif + +# stub to start building deb files, used by binary-indep and binary-arch +binary-initial: + dh_testdir + dh_testroot + +# stub to build deb files, used by binary-indep and binary-arch +binary-deb: + dh_lintian + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +# Only read the first line, the rest of the file is used to determine +# when the minimal version as to be bumped: +SERVERMINVER = debian/serverminver +serverminver = $(shell head -1 $(SERVERMINVER)) + +.PHONY: abibumpcheck +abibumpcheck: debian/serverminver $(QUILT_STAMPFN) + @echo Checking for the need of an ABI bump + # Build an updated version of the file: + head -1 $(SERVERMINVER) > $(SERVERMINVER).new + perl -ne 'print "$$1:$$2.$$3\n" if /^#define\s+(ABI_(?:VIDEODRV|XINPUT)_VERSION)\s+SET_ABI_VERSION\(\s*(\d+)\s*,\s*(\d+)\s*\)/' hw/xfree86/common/xf86Module.h|sort >> $(SERVERMINVER).new + # Compare both files: + @if ! cmp --quiet $(SERVERMINVER) $(SERVERMINVER).new; then \ + echo "serverminver bump required, ABI changed!";\ + echo "When bumping major or minor, always bump required xorg-server minimum";\ + echo "version too, the newly built drivers are not backwards compatible!";\ + diff -u $(SERVERMINVER) $(SERVERMINVER).new; \ + exit 1; \ + else \ + echo "ABI unchanged"; \ + rm -f $(SERVERMINVER).new; \ + fi + +# Build architecture-dependent files here. +binary-arch: build install + $(MAKE) -f debian/rules DH_OPTIONS=-s binary-initial + + dh_installdocs -s + dh_installchangelogs -s + dh_install $(DH_INSTALL_OPTIONS) -s --list-missing + $(INSTALL) -d $(CURDIR)/debian/xserver-xorg-dev/usr/share/xserver-xorg + # Extract only the major ABI version: + abi_videodrv=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_videodrv xorg-server|cut -d . -f 1`; \ + echo videoabi=xorg-video-abi-$$abi_videodrv > debian/xserver-xorg-core.substvars && \ + echo "xorg-video-abi-$$abi_videodrv, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/videodrvdep + abi_xinput=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_xinput xorg-server|cut -d . -f 1`; \ + echo inputabi=xorg-input-abi-$$abi_xinput >> debian/xserver-xorg-core.substvars && \ + echo "xorg-input-abi-$$abi_xinput, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/xinputdep + + # The udeb uses the same substvars: + cp debian/xserver-xorg-core.substvars debian/xserver-xorg-core-udeb.substvars + + $(INSTALL) -m 755 -d debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core + $(INSTALL) -m 755 debian/xserver-xorg-core.bug.script debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core/script +ifeq ($(DEB_HOST_ARCH_OS), linux) + install -d debian/xserver-xorg-core/lib/udev/rules.d + install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core/lib/udev/rules.d +ifeq ($(udeb), yes) + install -d debian/xserver-xorg-core-udeb/lib/udev/rules.d + install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core-udeb/lib/udev/rules.d +endif +endif + dh_installdebconf -s + dh_installman -s + dh_link -s + dh_strip -pxserver-xorg-xmir -pxserver-xorg-core --dbg-package=xserver-xorg-core-dbg + dh_strip -s -Nxserver-xorg-core -Nxserver-xorg-core-dbg + $(MAKE) -f debian/rules DH_OPTIONS=-s binary-deb + + +# Build architecture-independent files here +binary-indep: build-indep install check + $(MAKE) -f debian/rules DH_OPTIONS=-i binary-initial + dh_install -i + dh_installdocs -i + dh_installchangelogs -i ChangeLog + + $(MAKE) -f debian/rules DH_OPTIONS=-i binary-deb + +check: + dh_testdir + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/debian/serverminver b/debian/serverminver new file mode 100644 index 0000000..c01f07e --- /dev/null +++ b/debian/serverminver @@ -0,0 +1,3 @@ +2:1.14.99.902 +ABI_VIDEODRV_VERSION:15.0 +ABI_XINPUT_VERSION:20.0 diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..60a37d4 --- /dev/null +++ b/debian/watch @@ -0,0 +1,3 @@ +#git=git://anongit.freedesktop.org/xorg/xserver +version=3 +http://xorg.freedesktop.org/releases/individual/xserver/ xorg-server-(.*)\.tar\.gz diff --git a/debian/xdmx-tools.install b/debian/xdmx-tools.install new file mode 100644 index 0000000..3eac31a --- /dev/null +++ b/debian/xdmx-tools.install @@ -0,0 +1,6 @@ +main/usr/bin/dmx* usr/bin +main/usr/bin/vdltodmx usr/bin +main/usr/bin/xdmxconfig usr/bin +main/usr/share/man/man1/vdltodmx.1 usr/share/man/man1 +main/usr/share/man/man1/dmxtodmx.1 usr/share/man/man1 +main/usr/share/man/man1/xdmxconfig.1 usr/share/man/man1 diff --git a/debian/xdmx.install b/debian/xdmx.install new file mode 100644 index 0000000..c6a37eb --- /dev/null +++ b/debian/xdmx.install @@ -0,0 +1,2 @@ +main/usr/bin/Xdmx usr/bin +main/usr/share/man/man1/Xdmx.1 usr/share/man/man1 diff --git a/debian/xnest.install b/debian/xnest.install new file mode 100644 index 0000000..b11a15e --- /dev/null +++ b/debian/xnest.install @@ -0,0 +1,2 @@ +main/usr/bin/Xnest usr/bin +main/usr/share/man/man1/Xnest.1 usr/share/man/man1 diff --git a/debian/xorg-server-source.install b/debian/xorg-server-source.install new file mode 100644 index 0000000..712189c --- /dev/null +++ b/debian/xorg-server-source.install @@ -0,0 +1 @@ +build-source/xorg-server.tar.* usr/src diff --git a/debian/xserver-common.install b/debian/xserver-common.install new file mode 100644 index 0000000..28c12bb --- /dev/null +++ b/debian/xserver-common.install @@ -0,0 +1,3 @@ +main/usr/lib/xorg/protocol.txt usr/lib/xorg +main/usr/share/man/man1/Xserver.1 usr/share/man/man1 +main/var/lib/xkb/README.compiled var/lib/xkb diff --git a/debian/xserver-xephyr.docs b/debian/xserver-xephyr.docs new file mode 100644 index 0000000..059d734 --- /dev/null +++ b/debian/xserver-xephyr.docs @@ -0,0 +1 @@ +hw/kdrive/ephyr/README diff --git a/debian/xserver-xephyr.install b/debian/xserver-xephyr.install new file mode 100644 index 0000000..c0939e6 --- /dev/null +++ b/debian/xserver-xephyr.install @@ -0,0 +1,2 @@ +main/usr/bin/Xephyr usr/bin +main/usr/share/man/man1/Xephyr.1 usr/share/man/man1 diff --git a/debian/xserver-xorg-core-udeb.install b/debian/xserver-xorg-core-udeb.install new file mode 100644 index 0000000..8092696 --- /dev/null +++ b/debian/xserver-xorg-core-udeb.install @@ -0,0 +1,7 @@ +# from xserver-common: +udeb/usr/lib/xorg/protocol.txt usr/lib/xorg + +# from xserver-xorg-core: +udeb/usr/lib/xorg/modules usr/lib/xorg +udeb/usr/bin/Xorg usr/bin +udeb/usr/share/X11/xorg.conf.d usr/share/X11/ diff --git a/debian/xserver-xorg-core.bug.script b/debian/xserver-xorg-core.bug.script new file mode 100644 index 0000000..c78ce6e --- /dev/null +++ b/debian/xserver-xorg-core.bug.script @@ -0,0 +1,146 @@ +#!/bin/sh + +PATH="/sbin:$PATH" +CONFIG_DIR=/etc/X11 +SERVER_BINARY=/usr/bin/Xorg +SERVER_SYMLINK="$CONFIG_DIR/X" +XORGCONFIG="$CONFIG_DIR/xorg.conf" +XORGCONFIG_DIR="$CONFIG_DIR/xorg.conf.d" +CONFIG_AUX_DIR=/var/lib/x11 +X11R6_LIBS=/usr/X11R6/lib +LOCAL_LIBS=/usr/local/lib + +# Pretty echo, underline the specified string: +pecho() { + echo "$@" + echo "$@"|sed 's/./-/g' +} + +exec >&3 + +if [ -e "$SERVER_SYMLINK" ]; then + pecho "X server symlink status:" + ls -dl "$SERVER_SYMLINK" + ls -dl "$(readlink "$SERVER_SYMLINK")" +else + echo "$SERVER_SYMLINK does not exist." +fi + +if ! [ -L "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not a symlink." +fi + +if ! [ -x "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not executable." +fi + +echo + +if ldd "$SERVER_BINARY" | grep -qs "$LOCAL_LIBS"; then + pecho "The server is using local libraries!" + ldd "$SERVER_BINARY" | grep "$LOCAL_LIBS" + echo +fi + +if ldd "$SERVER_BINARY" | grep -qs "$X11R6_LIBS"; then + pecho "The server is using obsolete libraries!" + ldd "$SERVER_BINARY" | grep "$X11R6_LIBS" + echo +fi + +if dpkg-divert --list | grep -qs -i libgl; then + pecho "Diversions concerning libGL are in place" + dpkg-divert --list | grep -i libgl + echo +fi + +if which lspci > /dev/null 2>&1; then + pecho "VGA-compatible devices on PCI bus:" + LC_ALL=C lspci -nn | grep 'VGA compatible controller' +else + echo "The lspci command was not found; not including PCI data." +fi + +echo + +if [ -e "$XORGCONFIG" ]; then + pecho "Xorg X server configuration file status:" + ls -dl "$XORGCONFIG" + echo + pecho "Contents of $XORGCONFIG:" + iconv -c -t ascii "$XORGCONFIG" +else + echo "$XORGCONFIG does not exist." +fi + +echo + +if [ -d "$XORGCONFIG_DIR" ]; then + pecho "Contents of $XORGCONFIG_DIR:" + ls -l "$XORGCONFIG_DIR" +else + echo "$XORGCONFIG_DIR does not exist." +fi + +echo + +KMS_CONFS_DIR=/etc/modprobe.d +KMS_CONFS=$(ls $KMS_CONFS_DIR/*-kms.conf 2>/dev/null) + +if [ -n "$KMS_CONFS" ]; then + pecho "KMS configuration files:" + for CONF in $KMS_CONFS; do + echo "$CONF:" + # Indent, and get rid of empty lines: + sed 's/^/ /' < "$CONF"|egrep -v '^\s*$' + done +else + echo "$KMS_CONFS_DIR contains no KMS configuration files." +fi + +echo + +KERNEL_VERSION=/proc/version + +if [ -e "$KERNEL_VERSION" ]; then + pecho "Kernel version ($KERNEL_VERSION):" + cat /proc/version +else + echo "No kernel version found (missing $KERNEL_VERSION)." +fi + +echo + +XORG_LOGS=$(ls -dt /var/log/Xorg.*.log 2>/dev/null) + +if [ -n "$XORG_LOGS" ]; then + pecho "Xorg X server log files on system:" + ls -dlrt /var/log/Xorg.*.log 2>/dev/null + echo + for LOG in $XORG_LOGS; do + if [ -f "$LOG" ]; then + pecho "Contents of most recent Xorg X server log file ($LOG):" + cat "$LOG" + # the log files are large; only show the most recent + break + fi + done +else + echo "No Xorg X server log files found." +fi + +echo + +if [ -x /sbin/udevadm ]; then + pecho "udev information:" + /sbin/udevadm info --export-db | awk -F '\n' -v RS='\n\n' '/E: ID_INPUT/ { print; print "" }' + echo +fi + +if [ -x /bin/dmesg ]; then + pecho "DRM Information from dmesg:" + dmesg | egrep -i 'drm|agp' + echo +fi + +# vim:set ai et sts=4 sw=4 tw=0: diff --git a/debian/xserver-xorg-core.install b/debian/xserver-xorg-core.install new file mode 100644 index 0000000..0abdf30 --- /dev/null +++ b/debian/xserver-xorg-core.install @@ -0,0 +1,14 @@ +main/usr/lib/xorg/modules/*.so usr/lib/xorg/modules +main/usr/lib/xorg/modules/multimedia usr/lib/xorg/modules +main/usr/lib/xorg/modules/extensions/libglx.so usr/lib/xorg/modules/extensions +main/usr/bin/Xorg usr/bin +main/usr/share/man/man1/Xorg.1 usr/share/man/man1 +main/usr/share/man/man4/exa.4 usr/share/man/man4 +main/usr/share/man/man4/fbdevhw.4 usr/share/man/man4 +main/usr/share/man/man5/xorg.conf.5 usr/share/man/man5 +main/usr/share/man/man5/xorg.conf.d.5 usr/share/man/man5 +main/usr/bin/cvt usr/bin +main/usr/bin/gtf usr/bin +main/usr/share/man/man1/cvt.1 usr/share/man/man1 +main/usr/share/man/man1/gtf.1 usr/share/man/man1 +main/usr/share/X11/xorg.conf.d usr/share/X11/ diff --git a/debian/xserver-xorg-core.lintian-overrides b/debian/xserver-xorg-core.lintian-overrides new file mode 100644 index 0000000..635a9b6 --- /dev/null +++ b/debian/xserver-xorg-core.lintian-overrides @@ -0,0 +1,3 @@ +# That's OK, they were virtual packages: +breaks-without-version xserver-xorg-input-7 +breaks-without-version xserver-xorg-video-6 diff --git a/debian/xserver-xorg-core.postrm b/debian/xserver-xorg-core.postrm new file mode 100644 index 0000000..0eb50b1 --- /dev/null +++ b/debian/xserver-xorg-core.postrm @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +case "$1" in +purge) + rm /var/log/Xorg.*.log || true + rm /var/log/Xorg.*.log.old || true + ;; +esac + +#DEBHELPER# + +# vim:set ai et sts=2 sw=2 tw=0: diff --git a/debian/xserver-xorg-dev.install b/debian/xserver-xorg-dev.install new file mode 100644 index 0000000..9ec3c60 --- /dev/null +++ b/debian/xserver-xorg-dev.install @@ -0,0 +1,6 @@ +main/usr/include/xorg usr/include +main/usr/lib/pkgconfig/xorg-server.pc usr/lib/pkgconfig +main/usr/share/aclocal usr/share + +../../debian/local/dh_xsf_substvars usr/bin +../../debian/local/xsf.pm /usr/share/perl5/Debian/Debhelper/Sequence/ diff --git a/debian/xserver-xorg-xmir.install b/debian/xserver-xorg-xmir.install new file mode 100644 index 0000000..d710363 --- /dev/null +++ b/debian/xserver-xorg-xmir.install @@ -0,0 +1 @@ +main/usr/lib/xorg/modules/extensions/libxmir.so usr/lib/xorg/modules/extensions diff --git a/debian/xvfb.install b/debian/xvfb.install new file mode 100644 index 0000000..9fb2663 --- /dev/null +++ b/debian/xvfb.install @@ -0,0 +1,4 @@ +main/usr/bin/Xvfb usr/bin +main/usr/bin/xvfb-run usr/bin +main/usr/share/man/man1/xvfb-run.1 usr/share/man/man1 +main/usr/share/man/man1/Xvfb.1 usr/share/man/man1 diff --git a/doc/c-extensions b/doc/c-extensions new file mode 100644 index 0000000..4a90061 --- /dev/null +++ b/doc/c-extensions @@ -0,0 +1,68 @@ +First of all: C89 or better. If you don't have that, port gcc first. + +Use of C language extensions throughout the X server tree +--------------------------------------------------------- + +Optional extensions: +The server will still build if your toolchain does not support these +extensions, although the results may not be optimal. + + * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.: + void parseOptions(Option *options _X_SENTINEL(0)); + parseOptions("foo", "bar", NULL); /* this is OK */ + parseOptions("foo", "bar", "baz"); /* this is not */ + This definition comes from Xfuncproto.h in the core + protocol headers. + * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics; + check the format string when built with + -Wformat (gcc) or similar. + * _X_EXPORT: this function should appear in symbol tables. + * _X_HIDDEN: this function should not appear in the _dynamic_ symbol + table. + * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function + is never called from another module. + * _X_INLINE: inline this functon if possible (generally obeyed unless + disabling optimisations). + * _X_DEPRECATED: warn on use of this function. + +Mandatory extensions: +The server will not build if your toolchain does not support these extensions. + + * named initialisers: explicitly initialising structure members, e.g.: + struct foo bar = { .baz = quux, .brian = "dog" }; + * variadic macros: macros with a variable number of arguments, e.g.: + #define DebugF(x, ...) /**/ + * interleaved code and declarations: { foo = TRUE; int bar; do_stuff(); } + + +Use of library facilities throughout the X server tree +------------------------------------------------------------- + +Non-OS-dependent code can assume facilities at least as good as +the non-OS-facility parts of POSIX-1.2001. Ideally this would +be C99, but even gcc+glibc doesn't implement that yet. + +Unix-like systems are assumed to be at least as good as UNIX03. + +Note that there are two Windows ports, Cygwin and MinGW: +- Cygwin is more or less like Linux. +- MinGW is more restrictive. Windows does not provide the required +POSIX facilities, so some non-OS-dependent code is stubbed out or +has an alternate implementation if WIN32 is defined. Code that +needs to be portable to Windows should be careful to, well, be portable. + + +Required OS facilities +------------------------------------------------------------- + +Linux systems must be at least 2.4 or later. As a practical matter +though, 2.4 kernels never receive any testing. Use 2.6 already. + +TODO: Solaris. + +TODO: *BSD. + +Windows-dependent code assumes at least NT 5.1. + +OSX support is generally limited to the most recent version. Currently +that means 10.5. diff --git a/dri3/dri3_event.c b/dri3/dri3_event.c new file mode 100644 index 0000000..02f0f65 --- /dev/null +++ b/dri3/dri3_event.c @@ -0,0 +1,163 @@ +/* + * Copyright © 2013 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#include "dri3_priv.h" + +RESTYPE dri3_event_type; + +static int +dri3_free_event(pointer data, XID id) +{ + dri3_event_ptr dri3_event = (dri3_event_ptr) data; + dri3_window_priv_ptr window_priv = dri3_window_priv(dri3_event->window); + dri3_event_ptr *previous, current; + + for (previous = &window_priv->events; (current = *previous); previous = ¤t->next) { + if (current == dri3_event) { + *previous = dri3_event->next; + break; + } + } + free((pointer) dri3_event); + return 1; + +} + +void +dri3_free_events(WindowPtr window) +{ + dri3_window_priv_ptr window_priv = dri3_window_priv(window); + dri3_event_ptr event; + + if (!window_priv) + return; + + while ((event = window_priv->events)) + FreeResource(event->id, RT_NONE); +} + +static void +dri3_event_swap(xGenericEvent *from, xGenericEvent *to) +{ + *to = *from; + swaps(&to->sequenceNumber); + swapl(&to->length); + swaps(&to->evtype); + switch (from->evtype) { + case DRI3_ConfigureNotify: { + xDRI3ConfigureNotify *c = (xDRI3ConfigureNotify *) to; + + swapl(&c->eid); + swapl(&c->window); + swaps(&c->x); + swaps(&c->y); + swaps(&c->width); + swaps(&c->height); + swaps(&c->off_x); + swaps(&c->off_y); + swaps(&c->pixmap_width); + swaps(&c->pixmap_height); + swapl(&c->pixmap_flags); + break; + } + } +} + +void +dri3_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling) +{ + dri3_window_priv_ptr window_priv = dri3_window_priv(window); + + if (window_priv) { + xDRI3ConfigureNotify cn = { + .type = GenericEvent, + .extension = dri3_request, + .length = (sizeof(xDRI3ConfigureNotify) - 32) >> 2, + .evtype = DRI3_ConfigureNotify, + .eid = 0, + .window = window->drawable.id, + .x = x, + .y = y, + .width = w, + .height = h, + .off_x = 0, + .off_y = 0, + .pixmap_width = w, + .pixmap_height = h, + .pixmap_flags = 0 + }; + dri3_event_ptr event; + dri3_screen_priv_ptr screen_priv = dri3_screen_priv(window->drawable.pScreen); + + if (screen_priv->info && screen_priv->info->driver_config) + screen_priv->info->driver_config(window, &cn); + + for (event = window_priv->events; event; event = event->next) { + if (event->mask & (1 << DRI3ConfigureNotify)) { + cn.eid = event->id; + WriteEventsToClient(event->client, 1, (xEvent *) &cn); + } + } + } +} + +int +dri3_select_input(ClientPtr client, XID eid, WindowPtr window, CARD32 mask) +{ + dri3_window_priv_ptr window_priv = dri3_window_priv(window); + dri3_event_ptr event; + + if (!window_priv) + return BadAlloc; + + event = calloc (1, sizeof (dri3_event_rec)); + if (!event) + return BadAlloc; + + event->client = client; + event->window = window; + event->id = eid; + event->mask = mask; + + event->next = window_priv->events; + window_priv->events = event; + + if (!AddResource(event->id, dri3_event_type, (pointer) event)) + return BadAlloc; + + return Success; +} + +Bool +dri3_event_init(void) +{ + dri3_event_type = CreateNewResourceType(dri3_free_event, "DRI3Event"); + if (!dri3_event_type) + return FALSE; + + GERegisterExtension(dri3_request, dri3_event_swap); + return TRUE; +} diff --git a/dri3/dri3int.h b/dri3/dri3int.h new file mode 100644 index 0000000..7f53eba --- /dev/null +++ b/dri3/dri3int.h @@ -0,0 +1,26 @@ +/* + * Copyright © 2011 Daniel Stone + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Author: Daniel Stone + */ + +extern Bool DRI2ModuleSetup(void); diff --git a/fix-miregion b/fix-miregion new file mode 100644 index 0000000..fc502bb --- /dev/null +++ b/fix-miregion @@ -0,0 +1,29 @@ +#!/bin/sh +sed -i \ +-e 's/miRegionCreate\b/RegionCreate/g' \ +-e 's/miRegionInit\b/RegionInit/g' \ +-e 's/miRegionDestroy\b/RegionDestroy/g' \ +-e 's/miRegionUninit\b/RegionUninit/g' \ +-e 's/miRegionCopy\b/RegionCopy/g' \ +-e 's/miIntersect\b/RegionIntersect/g' \ +-e 's/miUnion\b/RegionUnion/g' \ +-e 's/miRegionAppend\b/RegionAppend/g' \ +-e 's/miRegionValidate\b/RegionValidate/g' \ +-e 's/miRectsToRegion\b/RegionFromRects/g' \ +-e 's/miSubtract\b/RegionSubtract/g' \ +-e 's/miInverse\b/RegionInverse/g' \ +-e 's/miRectIn\b/RegionContainsRect/g' \ +-e 's/miTranslateRegion\b/RegionTranslate/g' \ +-e 's/miRegionReset\b/RegionReset/g' \ +-e 's/miRegionBreak\b/RegionBreak/g' \ +-e 's/miPointInRegion\b/RegionContainsPoint/g' \ +-e 's/miRegionEqual\b/RegionEqual/g' \ +-e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \ +-e 's/miRegionEmpty\b/RegionEmpty/g' \ +-e 's/miRegionExtents\b/RegionExtents/g' \ +-e 's/miPrintRegion\b/RegionPrint/g' \ +-e 's/miRectAlloc\b/RegionRectAlloc/g' \ +-e 's/miValidRegion\b/RegionIsValid/g' \ +-e 's/miRegionBroken\b/RegionBroken/g' \ +-e 's/miClipSpans\b/RegionClipSpans/g' \ +"$@" diff --git a/fix-miregion-private b/fix-miregion-private new file mode 100644 index 0000000..ebc24fa --- /dev/null +++ b/fix-miregion-private @@ -0,0 +1,14 @@ +#!/bin/sh +sed -i \ +-e 's/miEmptyBox\b/RegionEmptyBox/g' \ +-e 's/miEmptyData\b/RegionEmptyData/g' \ +-e 's/miBrokenData\b/RegionBrokenData/g' \ +-e 's/miBrokenRegion\b/RegionBrokenRegion/g' \ +-e 's/miCoalesce\b/RegionCoalesce/g' \ +-e 's/miAppendNonO\b/RegionAppendNonO/g' \ +-e 's/miRegionOp\b/RegionOp/g' \ +-e 's/miSetExtents\b/RegionSetExtents/g' \ +-e 's/miIntersectO\b/RegionIntersectO/g' \ +-e 's/miUnionO\b/RegionUnionO/g' \ +-e 's/miSubtractO\b/RegionSubtractO/g' \ +"$@" diff --git a/fix-patch-whitespace b/fix-patch-whitespace new file mode 100644 index 0000000..2d06d8e --- /dev/null +++ b/fix-patch-whitespace @@ -0,0 +1,4 @@ +#!/bin/sh +git diff --check | +sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' | +sh diff --git a/fix-region b/fix-region new file mode 100644 index 0000000..ef8eb42 --- /dev/null +++ b/fix-region @@ -0,0 +1,38 @@ +#!/bin/sh +sed -i \ + -e 's/REGION_NIL\b/RegionNil/g' \ + -e 's/REGION_NAR\b/RegionNar/g' \ + -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \ + -e 's/REGION_SIZE\b/RegionSize/g' \ + -e 's/REGION_RECTS\b/RegionRects/g' \ + -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \ + -e 's/REGION_BOX\b/RegionBox/g' \ + -e 's/REGION_TOP\b/RegionTop/g' \ + -e 's/REGION_END\b/RegionEnd/g' \ + -e 's/REGION_SZOF\b/RegionSizeof/g' \ + -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \ + -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \ + -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \ + -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \ + -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \ + -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \ + -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \ + -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \ + -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \ + -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \ + -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \ + -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \ + -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \ + -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \ + -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \ + -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \ + -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \ + -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \ + -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \ + -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \ + -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \ + -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \ + -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \ + -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \ + -e 's/REGION_NULL$/RegionNull/g' \ + "$@" diff --git a/glx/glthread.c b/glx/glthread.c new file mode 100644 index 0000000..fd4c6cc --- /dev/null +++ b/glx/glthread.c @@ -0,0 +1,204 @@ +/* + * Mesa 3-D graphics library + * Version: 6.5.1 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * XXX There's probably some work to do in order to make this file + * truly reusable outside of Mesa. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#include +#endif + +#include +#include +#include "glthread.h" + +/* + * This file should still compile even when THREADS is not defined. + * This is to make things easier to deal with on the makefile scene.. + */ +#ifdef THREADS +#include + +/* + * Error messages + */ +#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data" +#define GET_TSD_ERROR "_glthread_: failed to get thread specific data" +#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data" + +/* + * Magic number to determine if a TSD object has been initialized. + * Kind of a hack but there doesn't appear to be a better cross-platform + * solution. + */ +#define INIT_MAGIC 0xff8adc98 + +/* + * POSIX Threads -- The best way to go if your platform supports them. + * Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly + * has them, and many of the free Unixes now have them. + * Be sure to use appropriate -mt or -D_REENTRANT type + * compile flags when building. + */ +#ifdef PTHREADS + +_X_EXPORT unsigned long +_glthread_GetID(void) +{ + return (unsigned long) pthread_self(); +} + +void +_glthread_InitTSD(_glthread_TSD * tsd) +{ + if (pthread_key_create(&tsd->key, NULL /*free */ ) != 0) { + perror(INIT_TSD_ERROR); + exit(-1); + } + tsd->initMagic = INIT_MAGIC; +} + +void * +_glthread_GetTSD(_glthread_TSD * tsd) +{ + if (tsd->initMagic != (int) INIT_MAGIC) { + _glthread_InitTSD(tsd); + } + return pthread_getspecific(tsd->key); +} + +void +_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) +{ + if (tsd->initMagic != (int) INIT_MAGIC) { + _glthread_InitTSD(tsd); + } + if (pthread_setspecific(tsd->key, ptr) != 0) { + perror(SET_TSD_ERROR); + exit(-1); + } +} + +#endif /* PTHREADS */ + +/* + * Win32 Threads. The only available option for Windows 95/NT. + * Be sure that you compile using the Multithreaded runtime, otherwise + * bad things will happen. + */ +#ifdef WIN32_THREADS + +void +FreeTSD(_glthread_TSD * p) +{ + if (p->initMagic == INIT_MAGIC) { + TlsFree(p->key); + p->initMagic = 0; + } +} + +void +InsteadOf_exit(int nCode) +{ + DWORD dwErr = GetLastError(); +} + +unsigned long +_glthread_GetID(void) +{ + return GetCurrentThreadId(); +} + +void +_glthread_InitTSD(_glthread_TSD * tsd) +{ + tsd->key = TlsAlloc(); + if (tsd->key == TLS_OUT_OF_INDEXES) { + perror("Mesa:_glthread_InitTSD"); + InsteadOf_exit(-1); + } + tsd->initMagic = INIT_MAGIC; +} + +void * +_glthread_GetTSD(_glthread_TSD * tsd) +{ + if (tsd->initMagic != INIT_MAGIC) { + _glthread_InitTSD(tsd); + } + return TlsGetValue(tsd->key); +} + +void +_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) +{ + /* the following code assumes that the _glthread_TSD has been initialized + to zero at creation */ + if (tsd->initMagic != INIT_MAGIC) { + _glthread_InitTSD(tsd); + } + if (TlsSetValue(tsd->key, ptr) == 0) { + perror("Mesa:_glthread_SetTSD"); + InsteadOf_exit(-1); + } +} + +#endif /* WIN32_THREADS */ + +#else /* THREADS */ + +/* + * no-op functions + */ + +_X_EXPORT unsigned long +_glthread_GetID(void) +{ + return 0; +} + +void +_glthread_InitTSD(_glthread_TSD * tsd) +{ + (void) tsd; +} + +void * +_glthread_GetTSD(_glthread_TSD * tsd) +{ + (void) tsd; + return NULL; +} + +void +_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) +{ + (void) tsd; + (void) ptr; +} + +#endif /* THREADS */ diff --git a/hw/kdrive/Xkdrive.man b/hw/kdrive/Xkdrive.man new file mode 100644 index 0000000..b37f9f1 --- /dev/null +++ b/hw/kdrive/Xkdrive.man @@ -0,0 +1,57 @@ +.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $ +.\" +.TH Xkdrive 1 __vendorversion__ +.SH NAME +Xkdrive \- tiny X server +.SH SYNOPSIS +.B Xvesa +.RI [ :display ] +.RI [ option ...] + +.B Xfbdev +.RI [ :display ] +.RI [ option ...] +.SH DESCRIPTION +.B Xkdrive +is a family of X servers designed to be particularly small. This +manual page describes the common functionality of the +.B Xkdrive +servers; for information on a specific X server, please refer to the +relevant manual page. +.SH OPTIONS +In addition to the standard options accepted by all X servers (see +Xserver(1)), all the +.B Xkdrive +servers accept the following options: +.TP 8 +.B -card \fIpcmcia\fP +use pcmcia card as additional screen. +.TP 8 +.B -dumb +disable hardware acceleration. +.TP 8 +.B -origin \fIX\fP,\fIY\fP +Locates the next screen in the Xinerama virtual screen. +.TP 8 +.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB +use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values). +.TP 8 +.B -softCursor +disable the hardware cursor. +.TP 8 +.B -videoTest +start the server, pause momentarily, and exit. +.TP 8 +.B -zaphod +disable switching screens by moving the pointer across a screen boundary. +.TP 8 +.B -2button +enable emulation of a middle mouse button by chording. +.TP 8 +.B -3button +disable emulation of a middle mouse button by chording. +.SH SEE ALSO +X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1). +.SH AUTHORS +The Xkdrive common core was written by Keith Packard, +and is based on the Sample Implementation of X. diff --git a/hw/kdrive/fbdev/Xfbdev.man b/hw/kdrive/fbdev/Xfbdev.man new file mode 100644 index 0000000..bfdae16 --- /dev/null +++ b/hw/kdrive/fbdev/Xfbdev.man @@ -0,0 +1,28 @@ +.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $ +.\" +.TH Xfbdev 1 __vendorversion__ +.SH NAME +Xfbdev \- Linux framebuffer device tiny X server +.SH SYNOPSIS +.B Xfbdev +.RI [ :display ] +.RI [ option ...] +.SH DESCRIPTION +.B Xfbdev +is a generic X server for Linux. +.B Xfbdev +doesn't know about any particular hardware, and uses the framebuffer +provided by the Linux framebuffer device. +.SH OPTIONS +.B Xfbdev +accepts the common options of the Xkdrive family of servers. Please +see Xkdrive(1). +.SH KEYBOARD +To be written. +.SH SEE ALSO +X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1). +.SH AUTHORS +The +.B Xfbdev +server was written by Keith Packard. + diff --git a/hw/xfree86/dixmods/extmod/modinit.h b/hw/xfree86/dixmods/extmod/modinit.h new file mode 100644 index 0000000..4c9b6e3 --- /dev/null +++ b/hw/xfree86/dixmods/extmod/modinit.h @@ -0,0 +1,80 @@ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include + +#ifdef XTEST +extern void XTestExtensionInit(void); +#include +#endif + +#if 1 +extern void XTestExtension1Init(void); +#endif + +#if 1 +extern void XCMiscExtensionInit(void); +#endif + +#ifdef SCREENSAVER +extern void ScreenSaverExtensionInit(void); +#include +#endif + +#ifdef XF86VIDMODE +extern void XFree86VidModeExtensionInit(void); +#include +#endif + +#ifdef XFreeXDGA +extern void XFree86DGAExtensionInit(void); +extern void XFree86DGARegister(void); +#include +#endif + +#ifdef DPMSExtension +extern void DPMSExtensionInit(void); +#include +#endif + +#ifdef XV +extern void XvExtensionInit(void); +extern void XvMCExtensionInit(void); +extern void XvRegister(void); +#include +#include +#endif + +#ifdef RES +extern void ResExtensionInit(void); +#include +#endif + +#ifdef SHM +#include +extern void ShmExtensionInit(void); +extern void ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs); +#endif + +#ifdef XSELINUX +extern void SELinuxExtensionInit(void); +#include "xselinux.h" +#endif + +#ifdef XEVIE +extern void XevieExtensionInit(void); +#endif + +#if 1 +extern void SecurityExtensionInit(void); +#endif + +#if 1 +extern void PanoramiXExtensionInit(void); +#endif + +#if 1 +extern void XkbExtensionInit(void); +#endif diff --git a/hw/xfree86/os-support/shared/platform_noop.c b/hw/xfree86/os-support/shared/platform_noop.c new file mode 100644 index 0000000..199ae5e --- /dev/null +++ b/hw/xfree86/os-support/shared/platform_noop.c @@ -0,0 +1,23 @@ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#ifdef XSERVER_PLATFORM_BUS +/* noop platform device support */ +#include "xf86_OSproc.h" + +#include "xf86.h" +#include "xf86platformBus.h" + +Bool +xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid) +{ + return FALSE; +} + +void xf86PlatformDeviceProbe(struct OdevAttributes *attribs) +{ + +} +#endif diff --git a/hw/xquartz/GL/glcontextmodes.c b/hw/xquartz/GL/glcontextmodes.c new file mode 100644 index 0000000..1ce3570 --- /dev/null +++ b/hw/xquartz/GL/glcontextmodes.c @@ -0,0 +1,586 @@ +/* + * (C) Copyright IBM Corporation 2003 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file glcontextmodes.c + * Utility routines for working with \c __GLcontextModes structures. At + * some point most or all of these functions will be moved to the Mesa + * code base. + * + * \author Ian Romanick + */ + +#if defined(IN_MINI_GLX) +#include +#else +#if defined(HAVE_DIX_CONFIG_H) +#include +#endif +#include +#include +#include "GL/glxint.h" +#endif + +/* Memory macros */ +#if defined(IN_MINI_GLX) +#include +#include +#define _mesa_malloc(b) malloc(b) +#define _mesa_free(m) free(m) +#define _mesa_memset memset +#else +#ifdef XFree86Server +#include +#include +#define _mesa_malloc(b) malloc(b) +#define _mesa_free(m) free(m) +#define _mesa_memset memset +#else +#include +#define _mesa_memset memset +#define _mesa_malloc(b) Xmalloc(b) +#define _mesa_free(m) free(m) +#endif /* XFree86Server */ +#endif /* !defined(IN_MINI_GLX) */ + +#include "glcontextmodes.h" + +#if !defined(IN_MINI_GLX) +#define NUM_VISUAL_TYPES 6 + +/** + * Convert an X visual type to a GLX visual type. + * + * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) + * to be converted. + * \return If \c visualType is a valid X visual type, a GLX visual type will + * be returned. Otherwise \c GLX_NONE will be returned. + */ +GLint +_gl_convert_from_x_visual_type(int visualType) +{ + static const int glx_visual_types[NUM_VISUAL_TYPES] = { + GLX_STATIC_GRAY, GLX_GRAY_SCALE, + GLX_STATIC_COLOR, GLX_PSEUDO_COLOR, + GLX_TRUE_COLOR, GLX_DIRECT_COLOR + }; + + return ((unsigned)visualType < NUM_VISUAL_TYPES) + ? glx_visual_types[visualType] : GLX_NONE; +} + +/** + * Convert a GLX visual type to an X visual type. + * + * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, + * \c GLX_STATIC_GRAY, etc.) to be converted. + * \return If \c visualType is a valid GLX visual type, an X visual type will + * be returned. Otherwise -1 will be returned. + */ +GLint +_gl_convert_to_x_visual_type(int visualType) +{ + static const int x_visual_types[NUM_VISUAL_TYPES] = { + TrueColor, DirectColor, + PseudoColor, StaticColor, + GrayScale, StaticGray + }; + + return ((unsigned)(visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES) + ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1; +} + +/** + * Copy a GLX visual config structure to a GL context mode structure. All + * of the fields in \c config are copied to \c mode. Additional fields in + * \c mode that can be derrived from the fields of \c config (i.e., + * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode + * that cannot be derived are set to default values. + * + * \param mode Destination GL context mode. + * \param config Source GLX visual config. + * + * \note + * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes + * structure will be set to the \c vid of the \c __GLXvisualConfig structure. + */ +void +_gl_copy_visual_to_context_mode(__GLcontextModes * mode, + const __GLXvisualConfig * config) +{ + __GLcontextModes * const next = mode->next; + + (void)_mesa_memset(mode, 0, sizeof(__GLcontextModes)); + mode->next = next; + + mode->visualID = config->vid; + mode->visualType = _gl_convert_from_x_visual_type(config->class); + mode->xRenderable = GL_TRUE; + mode->fbconfigID = config->vid; + mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT; + + mode->rgbMode = (config->rgba != 0); + mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; + + mode->colorIndexMode = !(mode->rgbMode); + mode->doubleBufferMode = (config->doubleBuffer != 0); + mode->stereoMode = (config->stereo != 0); + + mode->haveAccumBuffer = ((config->accumRedSize + + config->accumGreenSize + + config->accumBlueSize + + config->accumAlphaSize) > 0); + mode->haveDepthBuffer = (config->depthSize > 0); + mode->haveStencilBuffer = (config->stencilSize > 0); + + mode->redBits = config->redSize; + mode->greenBits = config->greenSize; + mode->blueBits = config->blueSize; + mode->alphaBits = config->alphaSize; + mode->redMask = config->redMask; + mode->greenMask = config->greenMask; + mode->blueMask = config->blueMask; + mode->alphaMask = config->alphaMask; + mode->rgbBits = mode->rgbMode ? config->bufferSize : 0; + mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0; + + mode->accumRedBits = config->accumRedSize; + mode->accumGreenBits = config->accumGreenSize; + mode->accumBlueBits = config->accumBlueSize; + mode->accumAlphaBits = config->accumAlphaSize; + mode->depthBits = config->depthSize; + mode->stencilBits = config->stencilSize; + + mode->numAuxBuffers = config->auxBuffers; + mode->level = config->level; + + mode->visualRating = config->visualRating; + mode->transparentPixel = config->transparentPixel; + mode->transparentRed = config->transparentRed; + mode->transparentGreen = config->transparentGreen; + mode->transparentBlue = config->transparentBlue; + mode->transparentAlpha = config->transparentAlpha; + mode->transparentIndex = config->transparentIndex; + mode->samples = config->multiSampleSize; + mode->sampleBuffers = config->nMultiSampleBuffers; + /* mode->visualSelectGroup = config->visualSelectGroup; ? */ + + mode->swapMethod = GLX_SWAP_UNDEFINED_OML; + + mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE; + mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ? + GL_TRUE : GL_FALSE; + mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE; + mode->bindToTextureTargets = mode->rgbMode ? + GLX_TEXTURE_1D_BIT_EXT | + GLX_TEXTURE_2D_BIT_EXT | + GLX_TEXTURE_RECTANGLE_BIT_EXT : 0; + mode->yInverted = GL_FALSE; +} + +/** + * Get data from a GL context mode. + * + * \param mode GL context mode whose data is to be returned. + * \param attribute Attribute of \c mode that is to be returned. + * \param value_return Location to store the data member of \c mode. + * \return If \c attribute is a valid attribute of \c mode, zero is + * returned. Otherwise \c GLX_BAD_ATTRIBUTE is returned. + */ +int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return) +{ + switch (attribute) { + case GLX_USE_GL: + *value_return = GL_TRUE; + return 0; + + case GLX_BUFFER_SIZE: + *value_return = mode->rgbBits; + return 0; + + case GLX_RGBA: + *value_return = mode->rgbMode; + return 0; + + case GLX_RED_SIZE: + *value_return = mode->redBits; + return 0; + + case GLX_GREEN_SIZE: + *value_return = mode->greenBits; + return 0; + + case GLX_BLUE_SIZE: + *value_return = mode->blueBits; + return 0; + + case GLX_ALPHA_SIZE: + *value_return = mode->alphaBits; + return 0; + + case GLX_DOUBLEBUFFER: + *value_return = mode->doubleBufferMode; + return 0; + + case GLX_STEREO: + *value_return = mode->stereoMode; + return 0; + + case GLX_AUX_BUFFERS: + *value_return = mode->numAuxBuffers; + return 0; + + case GLX_DEPTH_SIZE: + *value_return = mode->depthBits; + return 0; + + case GLX_STENCIL_SIZE: + *value_return = mode->stencilBits; + return 0; + + case GLX_ACCUM_RED_SIZE: + *value_return = mode->accumRedBits; + return 0; + + case GLX_ACCUM_GREEN_SIZE: + *value_return = mode->accumGreenBits; + return 0; + + case GLX_ACCUM_BLUE_SIZE: + *value_return = mode->accumBlueBits; + return 0; + + case GLX_ACCUM_ALPHA_SIZE: + *value_return = mode->accumAlphaBits; + return 0; + + case GLX_LEVEL: + *value_return = mode->level; + return 0; + + case GLX_TRANSPARENT_TYPE_EXT: + *value_return = mode->transparentPixel; + return 0; + + case GLX_TRANSPARENT_RED_VALUE: + *value_return = mode->transparentRed; + return 0; + + case GLX_TRANSPARENT_GREEN_VALUE: + *value_return = mode->transparentGreen; + return 0; + + case GLX_TRANSPARENT_BLUE_VALUE: + *value_return = mode->transparentBlue; + return 0; + + case GLX_TRANSPARENT_ALPHA_VALUE: + *value_return = mode->transparentAlpha; + return 0; + + case GLX_TRANSPARENT_INDEX_VALUE: + *value_return = mode->transparentIndex; + return 0; + + case GLX_X_VISUAL_TYPE: + *value_return = mode->visualType; + return 0; + + case GLX_CONFIG_CAVEAT: + *value_return = mode->visualRating; + return 0; + + case GLX_VISUAL_ID: + *value_return = mode->visualID; + return 0; + + case GLX_DRAWABLE_TYPE: + *value_return = mode->drawableType; + return 0; + + case GLX_RENDER_TYPE: + *value_return = mode->renderType; + return 0; + + case GLX_X_RENDERABLE: + *value_return = mode->xRenderable; + return 0; + + case GLX_FBCONFIG_ID: + *value_return = mode->fbconfigID; + return 0; + + case GLX_MAX_PBUFFER_WIDTH: + *value_return = mode->maxPbufferWidth; + return 0; + + case GLX_MAX_PBUFFER_HEIGHT: + *value_return = mode->maxPbufferHeight; + return 0; + + case GLX_MAX_PBUFFER_PIXELS: + *value_return = mode->maxPbufferPixels; + return 0; + + case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX: + *value_return = mode->optimalPbufferWidth; + return 0; + + case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX: + *value_return = mode->optimalPbufferHeight; + return 0; + + case GLX_SWAP_METHOD_OML: + *value_return = mode->swapMethod; + return 0; + + case GLX_SAMPLE_BUFFERS_SGIS: + *value_return = mode->sampleBuffers; + return 0; + + case GLX_SAMPLES_SGIS: + *value_return = mode->samples; + return 0; + + case GLX_BIND_TO_TEXTURE_RGB_EXT: + *value_return = mode->bindToTextureRgb; + return 0; + + case GLX_BIND_TO_TEXTURE_RGBA_EXT: + *value_return = mode->bindToTextureRgba; + return 0; + + case GLX_BIND_TO_MIPMAP_TEXTURE_EXT: + *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE : + GL_FALSE; + return 0; + + case GLX_BIND_TO_TEXTURE_TARGETS_EXT: + *value_return = mode->bindToTextureTargets; + return 0; + + case GLX_Y_INVERTED_EXT: + *value_return = mode->yInverted; + return 0; + + /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX. + * It is ONLY for communication between the GLX client and the GLX + * server. + */ + case GLX_VISUAL_SELECT_GROUP_SGIX: + default: + return GLX_BAD_ATTRIBUTE; + } +} +#endif /* !defined(IN_MINI_GLX) */ + +/** + * Allocate a linked list of \c __GLcontextModes structures. The fields of + * each structure will be initialized to "reasonable" default values. In + * most cases this is the default value defined by table 3.4 of the GLX + * 1.3 specification. This means that most values are either initialized to + * zero or \c GLX_DONT_CARE (which is -1). As support for additional + * extensions is added, the new values will be initialized to appropriate + * values from the extension specification. + * + * \param count Number of structures to allocate. + * \param minimum_size Minimum size of a structure to allocate. This allows + * for differences in the version of the + * \c __GLcontextModes stucture used in libGL and in a + * DRI-based driver. + * \returns A pointer to the first element in a linked list of \c count + * stuctures on success, or \c NULL on failure. + * + * \warning Use of \c minimum_size does \b not guarantee binary compatibility. + * The fundamental assumption is that if the \c minimum_size + * specified by the driver and the size of the \c __GLcontextModes + * structure in libGL is the same, then the meaning of each byte in + * the structure is the same in both places. \b Be \b careful! + * Basically this means that fields have to be added in libGL and + * then propagated to drivers. Drivers should \b never arbitrarilly + * extend the \c __GLcontextModes data-structure. + */ +__GLcontextModes * +_gl_context_modes_create(unsigned count, size_t minimum_size) +{ + const size_t size = (minimum_size > sizeof(__GLcontextModes)) + ? minimum_size : sizeof(__GLcontextModes); + __GLcontextModes * base = NULL; + __GLcontextModes ** next; + unsigned i; + + next = &base; + for (i = 0; i < count; i++) { + *next = (__GLcontextModes *)_mesa_malloc(size); + if (*next == NULL) { + _gl_context_modes_destroy(base); + base = NULL; + break; + } + + (void)_mesa_memset(*next, 0, size); + (*next)->visualID = GLX_DONT_CARE; + (*next)->visualType = GLX_DONT_CARE; + (*next)->visualRating = GLX_NONE; + (*next)->transparentPixel = GLX_NONE; + (*next)->transparentRed = GLX_DONT_CARE; + (*next)->transparentGreen = GLX_DONT_CARE; + (*next)->transparentBlue = GLX_DONT_CARE; + (*next)->transparentAlpha = GLX_DONT_CARE; + (*next)->transparentIndex = GLX_DONT_CARE; + (*next)->xRenderable = GLX_DONT_CARE; + (*next)->fbconfigID = GLX_DONT_CARE; + (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML; + (*next)->bindToTextureRgb = GLX_DONT_CARE; + (*next)->bindToTextureRgba = GLX_DONT_CARE; + (*next)->bindToMipmapTexture = GLX_DONT_CARE; + (*next)->bindToTextureTargets = GLX_DONT_CARE; + (*next)->yInverted = GLX_DONT_CARE; + + next = &((*next)->next); + } + + return base; +} + +/** + * Destroy a linked list of \c __GLcontextModes structures created by + * \c _gl_context_modes_create. + * + * \param modes Linked list of structures to be destroyed. All structres + * in the list will be freed. + */ +void +_gl_context_modes_destroy(__GLcontextModes * modes) +{ + while (modes != NULL) { + __GLcontextModes * const next = modes->next; + + _mesa_free(modes); + modes = next; + } +} + +/** + * Find a context mode matching a Visual ID. + * + * \param modes List list of context-mode structures to be searched. + * \param vid Visual ID to be found. + * \returns A pointer to a context-mode in \c modes if \c vid was found in + * the list, or \c NULL if it was not. + */ + +__GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->visualID == vid) + return m; + + return NULL; +} + +__GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->fbconfigID == fbid) + return m; + + return NULL; +} + +/** + * Determine if two context-modes are the same. This is intended to be used + * by libGL implementations to compare to sets of driver generated FBconfigs. + * + * \param a Context-mode to be compared. + * \param b Context-mode to be compared. + * \returns \c GL_TRUE if the two context-modes are the same. \c GL_FALSE is + * returned otherwise. + */ +GLboolean +_gl_context_modes_are_same(const __GLcontextModes * a, + const __GLcontextModes * b) +{ + return ((a->rgbMode == b->rgbMode) && + (a->floatMode == b->floatMode) && + (a->colorIndexMode == b->colorIndexMode) && + (a->doubleBufferMode == b->doubleBufferMode) && + (a->stereoMode == b->stereoMode) && + (a->redBits == b->redBits) && + (a->greenBits == b->greenBits) && + (a->blueBits == b->blueBits) && + (a->alphaBits == b->alphaBits) && +#if 0 /* For some reason these don't get set on the client-side in libGL. */ + (a->redMask == b->redMask) && + (a->greenMask == b->greenMask) && + (a->blueMask == b->blueMask) && + (a->alphaMask == b->alphaMask) && +#endif + (a->rgbBits == b->rgbBits) && + (a->indexBits == b->indexBits) && + (a->accumRedBits == b->accumRedBits) && + (a->accumGreenBits == b->accumGreenBits) && + (a->accumBlueBits == b->accumBlueBits) && + (a->accumAlphaBits == b->accumAlphaBits) && + (a->depthBits == b->depthBits) && + (a->stencilBits == b->stencilBits) && + (a->numAuxBuffers == b->numAuxBuffers) && + (a->level == b->level) && + (a->visualRating == b->visualRating) && + + (a->transparentPixel == b->transparentPixel) && + + ((a->transparentPixel != GLX_TRANSPARENT_RGB) || + ((a->transparentRed == b->transparentRed) && + (a->transparentGreen == b->transparentGreen) && + (a->transparentBlue == b->transparentBlue) && + (a->transparentAlpha == b->transparentAlpha))) && + + ((a->transparentPixel != GLX_TRANSPARENT_INDEX) || + (a->transparentIndex == b->transparentIndex)) && + + (a->sampleBuffers == b->sampleBuffers) && + (a->samples == b->samples) && + ((a->drawableType & b->drawableType) != 0) && + (a->renderType == b->renderType) && + (a->maxPbufferWidth == b->maxPbufferWidth) && + (a->maxPbufferHeight == b->maxPbufferHeight) && + (a->maxPbufferPixels == b->maxPbufferPixels) && + (a->optimalPbufferWidth == b->optimalPbufferWidth) && + (a->optimalPbufferHeight == b->optimalPbufferHeight) && + (a->swapMethod == b->swapMethod) && + (a->bindToTextureRgb == b->bindToTextureRgb) && + (a->bindToTextureRgba == b->bindToTextureRgba) && + (a->bindToMipmapTexture == b->bindToMipmapTexture) && + (a->bindToTextureTargets == b->bindToTextureTargets) && + (a->yInverted == b->yInverted)); +} diff --git a/hw/xquartz/GL/glcontextmodes.h b/hw/xquartz/GL/glcontextmodes.h new file mode 100644 index 0000000..7237ccc --- /dev/null +++ b/hw/xquartz/GL/glcontextmodes.h @@ -0,0 +1,60 @@ +/* + * (C) Copyright IBM Corporation 2003 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file glcontextmodes.h + * \author Ian Romanick + */ + +#ifndef GLCONTEXTMODES_H +#define GLCONTEXTMODES_H + +#include "GL/internal/glcore.h" + +#if !defined(IN_MINI_GLX) +extern GLint +_gl_convert_from_x_visual_type(int visualType); +extern GLint +_gl_convert_to_x_visual_type(int visualType); +extern void +_gl_copy_visual_to_context_mode(__GLcontextModes * mode, + const __GLXvisualConfig * config); +extern int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return); +#endif /* !defined(IN_MINI_GLX) */ + +extern __GLcontextModes * +_gl_context_modes_create(unsigned count, size_t minimum_size); +extern void +_gl_context_modes_destroy(__GLcontextModes * modes); +extern __GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid); +extern __GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid); +extern GLboolean +_gl_context_modes_are_same(const __GLcontextModes * a, + const __GLcontextModes * b); + +#endif /* GLCONTEXTMODES_H */ diff --git a/xkb/XKM_file_format.txt b/xkb/XKM_file_format.txt new file mode 100644 index 0000000..0ba28ee --- /dev/null +++ b/xkb/XKM_file_format.txt @@ -0,0 +1,684 @@ + XKM File Format Description + Version 15 + +1. Introduction + +The XKM file format is the exchange format for XKB keyboard descriptions +between the server and xkbcomp. Usually, the server forks off xkbcomp, +xkbcomp compiles the XKM format from the given parameters. +The resulting XKM file is put into a directory readable by the server and +then parsed. + +The XKM format is little more than a binary dump of various XKB-specific +structures and hence tied to the ABI of the server. + + ❧❧❧❧❧❧❧❧❧❧❧ + +1.1 About this file format description + +This description was produced by analyzing the XKM parsing code. Parts of +the file description present in the original format specification may be +missing. This description thus cannot be a reference document for XKM +implementations. + +No description of the meaning of the various fields is given here. Refer to +the XKB protocol specification for more details. + ❧❧❧❧❧❧❧❧❧❧❧ + +2. Notations used in this document + +Notation for structures: + +┌─── + Name of struct + name of field: type or fixed value of field + name of field: type or fixed value of field +└─── + +Data types are identical to those used in the X Protocol specification +except where noted otherwise. Structs specific to XKM are prefixed with XKM, +defines specific to the XKB protocol specification are prefixed with Xkb and +their value is equivalent to that in the protocol specification. + +Multiple instances of a given type are denoted in the following form: + name of field: LISTofFIELDTYPE + +Length specifiers for such fields are usually prefixed with num_. For +example, a struct containing a num_foo of 8 and a 'foo' field contains 8 +structures of type 'foo'. + +Variable length padding is specified as pad(x), where x is the length of the +data to be padded out to a multiple of 4 bytes. For example, given an x of +10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12 +bytes. + +A special notation is a variable content struct. In this case, the contents +of the struct depend on the value of one or more specific fields. +┌─── + Name of struct + field: type or fixed value of field + field: type or fixed value of field + ─── + field ⇒ value 1 + ⇒ + specific field: type + specific field: type + ─── + field ⇒ value 2 + ⇒ + specific field: type + specific field: type +└─── +This notation denotes that if field is of value 1, this struct contains the +specific fields listed underneath value 1. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3. XKM Format + +The XKM format is a binary format with structs usually being padded to a +multiple of 4 bytes. No provisions for endianess are provided, the parser is +left to guess the endianess of the XKM file. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.1 Common data types + +┌─── + XKMCountedString + count: CARD16 + string: count * CHAR + pad: pad(count + 2) +└─── + +XKMCountedString is used for user-readable identifiers. Prime example are +the level names and the section names ("complete", "evdev(inet)", etc.) + +┌─── + XKMGroupBits: CARD8 + group1 0x1 + group2 0x2 + group3 0x4 + group4 0x8 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.2 Header and Table of Contents + +┌─── + XKMHeader + version: CARD8 + identifier1: 'm' + identifier2: 'k' + idenfifier3: 'x' +└─── + +The XKM file format has a 4 byte header identifying the file and the XKM +version. The header is followed by the table of contents indicating the +sections present in this file. + +┌─── + XKMFileInfo + type: CARD8 + min_keycode: CARD8 + max_keycode: CARD8 + num_sectioninfo: CARD8 + present: CARD16 + pad: CARD16 + sectioninfo: LISTofXKMSectionInfo +└─── + +min_keycode and max_keycode specify the keycode range for this keyboard +descriptions. The core protocol requires min_keycode always be equal to or +greater than 8. + +┌─── + XKMSectionInfo + type: CARD16 + XkmTypesIndex 0 + XkmCompatMapIndex 1 + XkmSymbolsIndex 2 + XkmIndicatorsIndex 3 + XkmKeyNamesIndex 4 + XkmGeometryIndex 5 + XkmVirtualModsIndex 6 + format: CARD16 + size: CARD16 + offset: CARD16 +└─── + +Describes the section found in a chunk of a file. This struct is found +_twice_ in the file per section, once as part of the XKMFileInfo, once at +the beginning of the actual section (see offset). +The type specifies the type of the section, the section is to be parsed +according to this type. +Size and offset specify the size in bytes and the offset into the file in +bytes, respectively. + +3.3 Sections + +Each section resides at the offset specified in the XKMFileInfo sectioninfo. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.1 XKMTypes + +An XKMTypes section describes the key types defined in a layout. Roughly +speaking, a key type defines how many levels a given key has and which +modifiers change to a particular level. + +┌─── + XKMTypesSection + section_info: XKMSectionInfo + name: XKMCountedString + num_types: CARD16 + pad: CARD16 + types: LISTofXKMKeyType +└─── + +┌─── + XKMKeyType + real_mods: CARD8 + num_levels: CARD8 + virt_mods: CARD16 + num_map_entries: CARD8 + num_level_names: CARD8 + perserve: CARD8 + pad: CARD8 + map_entries: LISTofXKMKTMapEntry + name: XKMCountedString + mods: LISTofXKMModsDesc + level_names: LISXTofXKMCountedString +└─── + +The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE. + +┌─── + XKMKTMapEntry + level: CARD8 + real_mods: CARD8 + virt_mods: CARD16 +└─── + +┌─── + XKMModsDesc + real_mods: CARD8 + pad: CARD8 + virt_mods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.2 XKMCompatMap + +An XKMCompatMap section describes the actions a keyboard may trigger. This +ranges from the TerminateServer action to simple modifier bits. + +┌─── + XKMCompatMap + section_info: XKMSectionInfo + name: XKMCountedString + num_si: CARD16 + group_mask: XKMGroupBits + pad: CARD8 + si: LISTofXKMSymInterpreterDesc + groups: LISTofXKMModsDesc +└─── + +One XKMModsDesc is present for each bit set in group_mask. + +┌─── + XKMSymInterpretDesc + sym: CARD32 + mods: CARD8 + match: CARD8 + virtual_mod: CARD8 + flags: CARD8 + action_type: CARD8 + action_data: XKMActionData +└─── + +Where the action is 7 bytes of CARD8 whose content is determined by +action_type. + +┌─── + XKMActionData: + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_SetMods || + action_type ⇒ XkbSA_LatchMods || + action_type ⇒ XkbSA_LockMods + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + vmods1: CARD8 + vmods2: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_SetGroup || + action_type ⇒ XkbSA_LatchGroup || + action_type ⇒ XkbSA_LockGroup + ⇒ + flags: CARD8 + group_XXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_MovePtr + ⇒ + flags: CARD8 + high_XXX: CARD8 + low_XXX: CARD8 + high_YYY: CARD8 + low_YYY: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_PtrBtn || + action_type ⇒ XkbSA_LockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + pad: CARD32 + ─── + action_type ⇒ XkbSA_DeviceBtn || + action_type ⇒ XkbSA_LockLockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + device: CARD8 + pad0: CARD8 + pad1: CARD16 + ─── + action_type ⇒ XkbSA_SetPtrDflt + ⇒ + flags: CARD8 + affect: CARD8 + valueXXX: CARD8 + pad0: CARD32 + ─── + action_type ⇒ XkbSA_ISOLock + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + group_XXX: CARD8 + affect: CARD8 + vmods1: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_SwitchScreen + ⇒ + flags: CARD8 + screenXXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_SetControls || + action_type ⇒ XkbSA_LockControls + ⇒ + flags: CARD8 + ctrls3: CARD8 + ctrls2: CARD8 + ctrls1: CARD8 + ctrls0: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_RedirectKey + ⇒ + new_key: CARD8 + mods_mask: CARD8 + mods: CARD8 + vmods_mask0: CARD8 + vmods_mask1: CARD8 + vmods0: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_DeviceValuator + ⇒ + device: CARD8 + v1_what: CARD8 + v1_idx: CARD8 + v1_value: CARD8 + v2_what: CARD8 + v2_idx: CARD8 + v2_value: CARD8 + pad: CARD8 + ─── + action_type ⇒ XkbSA_XFree86Private || + action_type ⇒ XkbSA_Terminate + ⇒ + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_ActionMessage + ⇒ + press_msg: BOOL + release_msg: BOOL + gen_event: BOOL + message: 4 * CHAR +└─── + +Note: XkbSA_ActionMessage is currently unsupported and the contents are +ignored. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.3 XkmSymbols + +The symbols in a keymap define the actual keysyms each key may produce. + +┌─── + XKMSymbols + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + group_names_mask: XKMGroupBits + num_vmod_maps: CARD8 + group_names: LISTofXKMCountedString + keysyms: XKMKeysymMapDesc + vmod_maps: XKMVModMapDesc +└─── +One group_name is present for each bit set in group_names_mask. +The number of keysyms present is max_keycode - min_keycode + 1. + +┌─── + XKMKeysymMapDesc + width: CARD8 + num_groups: CARD8 + modifier_map: CARD8 + flags: CARD8 + names: LISTofXKMCountedString + syms: LISTofCARD32 + behavior: XKMBehaviorDesc +└─── + +Presence of names is conditional on the XkmKeyHasTypes flag. The number of +strings is equal to the number of group bits in group_names_mask in the +preceeding XKMSymbols section. +The number of elements in syms is equal to width * num_groups. +Presence of behavior is conditional on the XkmKeyHasBehavior flag. + +┌─── + XKMKeyBehaviorDesc + type: CARD8 + data: CARD8 + pad: CARD16 +└─── + +┌─── + XKMVModMapDesc + key: CARD8 + pad: CARD8 + vmods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.4 XKMIndicators + +┌─── + XKMIndicators + section_info: XKMSectionInfo + name: XKMCountedString + num_indicators: CARD8 + pad0: CARD8 + pad1: CARD16 + indicators: LISTofXKMIndicatorMapDesc +└─── + +┌─── + XKMIndicatorMapDesc + name: XKMCountedString + indicator: CARD8 + flags: CARD8 + which_mods: CARD8 + real_mods: CARD8 + vmods: CARD16 + which_groups: CARD8 + groups: CARD8 + ctrls: CARD32 +└─── + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMKeyNames + +┌─── + XKMKeyNames + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + num_aliases: CARD8 + pad: CARD8 + keynames: LISTofXKMKeyname + aliases: LISTofXKMKeyAlias +└─── + +keynames contains max_keycode - min_keycode + 1 entries. + +┌─── + XkmKeyname + name: 4 * CHAR8 +└─── + +┌─── + XkmKeyAlias + real: XkmKeyname + alias: XkmKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMGeometry + +┌─── + XKMGeometry + section_info: XKMSectionInfo + name: XKMCountedString + width_mm: CARD16 + height_mm: CARD16 + base_color_ndx: CARD8 + label_color_ndx: CARD8 + num_properties: CARD16 + num_colors: CARD16 + num_shapes: CARD16 + num_sections: CARD16 + num_doodads: CARD16 + num_key_aliases: CARD16 + pad: CARD16 + label_font: XKMCountedString + properties: LISTofXKMGeomProperty + colors: LISTofXKMCountedString + shapes: LISTofXKMGeomShape + sections: LISTofXKMGeomSection + doodads: LISTofXKMGeomDoodad + key_aliases: LISTofXKMKeyAlias +└─── + +┌─── + XKMGeomProperty + name: XKMCountedString + value: XKMCountedString + +└─── + +┌─── + XKMGeomShape + name: XKMCountedString + num_outlines: CARD8 + primary_idx: CARD8 + approx_idx: CARD8 + pad: CARD8 + outlines: LISTofXKMOutlineDesc +└─── + +┌─── + XKMOutlineDesc + num_points: CARD8 + corner_radius: CARD8 + pad: CARD16 + points: LISTofXKMPointDesc +└─── + +┌─── + XKMPointDesc + x: INT16 + y: INT16 +└─── + +┌─── + XKMGeomSection + name: XKMCountedString + top: INT16 + left: INT16 + width: CARD16 + height: CARD16 + angle: INT16 + priority: CARD8 + num_rows: CARD8 + num_doodads: CARD8 + num_overlays: CARD8 + pad: CARD16 + rows: LISTofXKMRowDesc + doodads: LISTofXKMGeomDoodad + overlays: LISTofXKMGeomOverlay +└─── + +┌─── + XKMRowDesc + top: INT16 + left: INT16 + num_keys: CARD8 + vertical: BOOL + pad: CARD16 + keys: XKMKeyDesc +└─── + +┌─── + XKMKeyDesc + name: XKMKeyname + gap: INT16 + shape_idx: CARD8 + color_idx: CARD8 +└─── + +┌─── + XKMGeomDoodad + name: XKMCountedString + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + pad1: CARD16 + pad2: CARD32 + pad3: CARD32 + ─── + type ⇒ XkbOutlineDoodad || + type ⇒ XkbSolideDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + ─── + type ⇒ XkbTextDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + width: CARD16 + height: CARD16 + color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + text: XKMCountedString + font: XKMCountedString + ─── + type ⇒ XkbIndicatorDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + shape_idx: CARD8 + on_color_idx: CARD8 + off_color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + type ⇒ XkbLogoDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + logo_name: XKMCountedString +└─── + +WARNING: XKMGeomDoodad has variable length depending on the type. +NOTE: The current server implementation does not use all fields of all +structures. + +┌─── + XKMOverlayDesc + name: XKMCountedString + num_rows: CARD8 + pad0: CARD8 + pad1: CARD16 + rows: LISTofXKMOverlayRowDesc +└─── + +┌─── + XKMOverlayRowDesc + name: XKMCountedString + row_under: CARD8 + num_keys: CARD8 + pad: CARD16 + keys: LISTofXKMOverlayKeyDesc +└─── + +┌─── + XKMOverlayKeyDesc + over: XKMKeyname + under: XKMKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.6 XKMVirtualMods + +┌─── + XKMOverlayRowDesc + section_info: XKMSectionInfo + name: XKMCountedString + bound_mask: SETofVMODBITS + named_mask: SETofVMODBITS + vmods: LISTofCARD8 + pad: pad(vmods) + names: LISTofXKMCountedString +└─── + + VMODBITS: CARD16 + +Number of elements in vmods is equal to the number of bits set in +bound_mask. The padding completes vmods to a multiple of 4 byte units. +Number of elements in names is equal to the number of bits set in +named_mask.