--- /dev/null
+((c-mode . ((c-basic-offset . 4) (indent-tabs-mode . nil))))
\ No newline at end of file
--- /dev/null
+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 [<id> <name>] [<id> <name>] ..., i.e. [us].
--- /dev/null
+/*
+ * 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 <dix-config.h>
+#endif
+
+#ifndef _DAMAGEEXT_H_
+#define _DAMAGEEXT_H_
+
+void
+ DamageExtensionInit(void);
+
+#endif /* _DAMAGEEXT_H_ */
--- /dev/null
+------------------------------------------------------
+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
--- /dev/null
+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 <maarten.lankhorst@ubuntu.com> 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 <marc.deslauriers@ubuntu.com> 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 <marc.deslauriers@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <adconrad@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> Mon, 14 Apr 2014 12:57:12 +0200
+
+xorg-server (2:1.15.1-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> 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 <jcristau@debian.org> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <lukasz.zemczak@canonical.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <ricardo.salveti@canonical.com> Tue, 04 Feb 2014 20:35:47 -0200
+
+xorg-server (2:1.15.0-1ubuntu1) trusty; urgency=low
+
+ * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> 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 <jcristau@debian.org> Thu, 06 Feb 2014 16:14:15 +0100
+
+xorg-server (2:1.15.0-1) experimental; urgency=low
+
+ * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <cjwatson@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <doko@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> Fri, 13 Dec 2013 11:24:16 +0100
+
+xorg-server (2:1.14.5-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Maarten Lankhorst <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <marc.deslauriers@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <mathieu-tl@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <jcristau@debian.org> Sat, 05 Oct 2013 15:57:55 +0200
+
+xorg-server (2:1.14.3-3) unstable; urgency=low
+
+ * Upload to unstable.
+
+ -- Julien Cristau <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <maarten.lankhorst@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <raof@ubuntu.com> 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 <doko@ubuntu.com> 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 <didrocks@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> Tue, 30 Jul 2013 12:51:40 +0200
+
+xorg-server (2:1.14.2-0ubuntu2) saucy; urgency=low
+
+ * Add support for Aarch64.
+
+ -- Matthias Klose <doko@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <alberto.milone@canonical.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <debian.tormod@gmail.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <jamie@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <bryce@ubuntu.com> 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 <adconrad@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <maarten.lankhorst@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <ricardo.salveti@linaro.org> 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 <ricardo.salveti@linaro.org> 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 <tjaalton@ubuntu.com> 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 <raof@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <maarten.lankhorst@canonical.com> 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 <jcristau@debian.org> 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 <biebl@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <ricardo.salveti@linaro.org> 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 <raof@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <raof@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <sarvatt@ubuntu.com> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <jcristau@debian.org> 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 <kibi@debian.org> 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 <chris@cooperteam.net> 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 <kibi@debian.org> 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 <jcristau@debian.org> 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 <tjaalton@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <raof@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <jcristau@debian.org> 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 <tjaalton@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> Tue, 19 Apr 2011 16:12:14 +0300
+
+xorg-server (2:1.10.1-1) experimental; urgency=low
+
+ * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org> 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 <tjaalton@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <chase.douglas@ubuntu.com> 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 <raof@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <raof@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <raof@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> Sun, 05 Dec 2010 02:16:14 +0100
+
+xorg-server (2:1.9.2-1) experimental; urgency=low
+
+ * New upstream release.
+
+ -- Cyril Brulebois <kibi@debian.org> 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. <ctrl>+<shift>+<key> fails when
+ ctrl+shift is configured for layout switching.
+ (LP: #36812)
+
+ -- Bryce Harrington <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <sarvatt@ubuntu.com> 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 <robert.hooker@canonical.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <raof@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <raof@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <chase.douglas@ubuntu.com> 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 <raof@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <raof@ubuntu.com> 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 <raof@ubuntu.com> 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 <bryce@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <asac@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <kibi@debian.org> 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 <kibi@debian.org> 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 <asac@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bgoglin@debian.org> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <martin.pitt@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <alberto.milone@canonical.com> 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 <alberto.milone@canonical.com> 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 <alberto.milone@canonical.com> 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 <tjaalton@ubuntu.com> 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 <alberto.milone@canonical.com> 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 <tjaalton@ubuntu.com> 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 <jcristau@debian.org> 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 <alberto.milone@canonical.com> 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 <doko@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bgoglin@debian.org> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <kees@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bgoglin@debian.org> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <loic.minier@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> Wed, 05 Aug 2009 14:11:01 +0300
+
+xorg-server (2:1.6.3-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Brice Goglin <bgoglin@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <bgoglin@debian.org> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <alberto.milone@canonical.com> 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 <bryce@ubuntu.com> 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 <debian.tormod@gmail.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <kees@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <debian.tormod@gmail.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <jcristau@debian.org> 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 <tjaalton@ubuntu.com> 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 <jcristau@debian.org> 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 <tjaalton@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tjaalton@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <michael.vogt@ubuntu.com> 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 <lool@dooz.org> 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 <lool@dooz.org> 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 <lool@dooz.org> 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 <lool@dooz.org> 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 <jcristau@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <chris.nasho@sympatico.ca> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <asac@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <bryce@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <stevenk@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <dnusinow@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <bgoglin@debian.org> 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 <jcristau@debian.org> 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 <tepsipakki@ubuntu.com> 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 <dnusinow@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <tepsipakki@ubuntu.com> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> 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 <bubulle@debian.org> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <bryce@ubuntu.com> 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 <mjg59@srcf.ucam.org> 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 <tepsipakki@ubuntu.com> 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 <jcristau@debian.org> 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 <unistd.h> instead.
+
+ -- Julien Cristau <jcristau@debian.org> 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 <sys/io.h> declare incompatible
+ prototypes for outb and friends, so change the patch from -9 to not
+ #include <sys/io.h> and rely on declarations in lnx.h itself for the
+ IOBASE_* macros.
+
+ -- Julien Cristau <jcristau@debian.org> Sat, 14 Jul 2007 18:06:14 +0200
+
+xorg-server (2:1.3.0.0.dfsg-9) unstable; urgency=medium
+
+ * Include <sys/io.h> instead of <asm/pci.h> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <bryce@ubuntu.com> 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 <seb128@canonical.com> 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 <bryce@ubuntu.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <kyle@ubuntu.com> 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 <bryce@ubuntu.com> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> Fri, 20 Apr 2007 07:54:14 +0200
+
+xorg-server (2:1.3.0.0-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- David Nusinow <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <kees@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <tepsipakki@ubuntu.com> 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 <seb128@canonical.com> 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 <seb128@canonical.com> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <thierry@gilfi.de> 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 <thierry@gilfi.de> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <dnusinow@debian.org> 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 <jcristau@debian.org> 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 <jcristau@debian.org> 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 <julien.cristau@ens-lyon.org> 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 <julien.cristau@ens-lyon.org> 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? <gibber, gibber>" 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 <vorlon@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <kees@ubuntu.com> 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 <seb128@canonical.com> 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 <kees@ubuntu.com> 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 <seb128@canonical.com> 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 <desrt@ubuntu.com> 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 <tfheen@ubuntu.com> 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 <mjg59@srcf.ucam.org> 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 <mjg59@srcf.ucam.org> 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 <rodarvus@ubuntu.com> 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 <rodarvus@ubuntu.com> 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 <rodarvus@ubuntu.com> 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 <rodarvus@ubuntu.com> 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 <mdz@ubuntu.com> 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 <rodarvus@ubuntu.com> 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 <rodarvus@ubuntu.com> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <ubuntu@paul.sladen.org> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <fabbione@ubuntu.com> 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 <dnusinow@debian.org> 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 <dnusinow@debian.org> 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 <fabbione@ubuntu.com> 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 <seb128@canonical.com> 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 <fabbione@ubuntu.com> 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 <cjwatson@ubuntu.com> 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 <tfheen@ubuntu.com> 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 <tfheen@ubuntu.com> Wed, 18 Jan 2006 12:34:03 +0100
+
+xorg-server (1:1.0.1-0ubuntu1) dapper; urgency=low
+
+ * New upstream release.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> 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 <lamont@ubuntu.com> 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 <adconrad@ubuntu.com> 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 <adconrad@ubuntu.com> 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 <daniel.stone@ubuntu.com> Thu, 24 Nov 2005 10:26:44 +1100
+
+xorg-server (1:0.99.3-0ubuntu1) dapper; urgency=low
+
+ * New upstream release.
+
+ -- Daniel Stone <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> 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 <daniel.stone@ubuntu.com> Wed, 6 Jul 2005 15:48:17 +1000
--- /dev/null
+Source: xorg-server
+Section: x11
+Priority: optional
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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:
+ <URL:http://www.X.org>
+ .
+ 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.
--- /dev/null
+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 <dwex@goblin.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 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 <dwex@goblin.org>
+Copyright 2005 by Kean Johnston <jkj@sco.com>
+Copyright 1993 by David McCullough <davidm@stallion.oz.au>
+
+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 <obz@Kodak.com>
+Copyright 1993 by David Wexelblat <dwex@goblin.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 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 <obz@Kodak.com>
+Copyright 1993 by David Dawes <dawes@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 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. <fred@sugix.frmug.fr.net>
+
+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 <Rich@Rice.edu>
+Copyright 1993 by David Wexelblat <dwex@goblin.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 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 <Rich@Rice.edu>
+Copyright 1993 by David Dawes <dawes@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 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 <Todd.Miller@courtesan.com>
+
+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 <dwex@goblin.org>
+Copyright 1999 by David Holland <davidh@iquest.net>
+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 <gsap7@yahoo.gr>
+
+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 <dickey@clark.net>
+
+ 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 <sunshine@sunshineco.com>
+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 <robin@XFree86.Org>
+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 <dawes@XFree86.org>
+Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
+Copyright 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
+Copyright 1992 by Orest Zborowski <obz@eskimo.com>
+Copyright 1993 by Vrije Universiteit, The Netherlands
+Copyright 1993 by David Wexelblat <dwex@XFree86.org>
+Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
+Copyright 1997 by Takis Psarogiannakopoulos <takis@dpmms.cam.ac.uk>
+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 <jkj@sco.com>
+
+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.
--- /dev/null
+[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
--- /dev/null
+Section "InputClass"
+ Identifier "kbd catchall"
+ MatchIsKeyboard "on"
+ Driver "kbd"
+EndSection
--- /dev/null
+Section "InputClass"
+ Identifier "mouse catchall"
+ MatchIsPointer "on"
+ Driver "mouse"
+EndSection
--- /dev/null
+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"
--- /dev/null
+#!/bin/sh
+# © 2011 Cyril Brulebois <kibi@debian.org>
+#
+# 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
--- /dev/null
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Debian::Debhelper::Dh_Lib;
+
+insert_before("dh_gencontrol", "dh_xsf_substvars");
+
+1;
--- /dev/null
+#!/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 <<EOF
+Usage: $PROGNAME [OPTION ...] COMMAND
+Run COMMAND (usually an X client) in a virtual X server environment.
+Options:
+-a --auto-servernum try to get a free server number, starting at
+ --server-num
+-e FILE --error-file=FILE file used to store xauth errors and Xvfb
+ output (default: $ERRORFILE)
+-f FILE --auth-file=FILE file used to store auth cookie
+ (default: ./.Xauthority)
+-h --help display this usage message and exit
+-n NUM --server-num=NUM server number to use (default: $SERVERNUM)
+-l --listen-tcp enable TCP port listening in the X server
+-p PROTO --xauth-protocol=PROTO X authority protocol name to use
+ (default: xauth command's default)
+-s ARGS --server-args=ARGS arguments (other than server number and
+ "-nolisten tcp") to pass to the Xvfb server
+ (default: "$XVFBARGS")
+EOF
+}
+
+# Find a free server number by looking at .X*-lock files in /tmp.
+find_free_servernum() {
+ # Sadly, the "local" keyword is not POSIX. Leave the next line commented in
+ # the hope Debian Policy eventually changes to allow it in /bin/sh scripts
+ # anyway.
+ #local i
+
+ i=$SERVERNUM
+ while [ -f /tmp/.X$i-lock ]; do
+ i=$(($i + 1))
+ done
+ echo $i
+}
+
+# Clean up files
+clean_up() {
+ if [ -e "$AUTHFILE" ]; then
+ XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$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:
--- /dev/null
+.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
+.\"
+.\" 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:
--- /dev/null
+From: Adam Jackson <ajax@redhat.com>
+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
+
--- /dev/null
+>From d96e2bd2a2b48ede527ad7071d3e0eeda9861b73 Mon Sep 17 00:00:00 2001
+From: Robert Millan <rmh@debian.org>
+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 <rmh@freebsd.org>
+---
+ 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 <bapt@FreeBSD.org>
++ */
++
++#ifdef HAVE_DIX_CONFIG_H
++#include <dix-config.h>
++#endif
++
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/sysctl.h>
++#include <sys/un.h>
++
++#include <ctype.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <stdarg.h>
++#include <stdbool.h>
++#include <unistd.h>
++
++#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
+
--- /dev/null
+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
--- /dev/null
+From 272537ae14a04911fcf2fec51492fa0f91c4a676 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+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
--- /dev/null
+From 10aaa5d2ffa62df99f03c857dc78e6ff2b33c183 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+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 <jcristau@debian.org>
+---
+ 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
+
--- /dev/null
+From: Stephan Schreiber <info@fs-driver.org>
+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 <machine/pio.h>
+ #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 <inttypes.h>
--- /dev/null
+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
--- /dev/null
+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 <sys/types.h> /* For opendir in test_sysfs_device */
++#include <dirent.h> /* For opendir in test_sysfs_device */
++#endif
++
+ #ifdef sun
+ #include <sys/visual_io.h>
+ #include <ctype.h>
+@@ -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;
++ }
+ }
+ }
+
--- /dev/null
+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);
--- /dev/null
+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();
+ }
+
--- /dev/null
+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;
+ }
+ }
+ }
--- /dev/null
+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<num>-default.xkm
+-where <num> 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-<SHA1>.xkm
++
++where <SHA1> 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 <xkb-config.h>
+
++#ifdef HAVE_SHA1_IN_LIBGCRYPT /* Use libgcrypt for SHA1 */
++#include <gcrypt.h>
++#else /* Use OpenSSL's libcrypto */
++#warning "xkbcomp caching support disabled"
++#endif
++
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <X11/X.h>
+@@ -43,20 +49,9 @@
+ #define XKBSRV_NEED_FILE_FUNCS
+ #include <xkbsrv.h>
+ #include <X11/extensions/XI.h>
++#include <errno.h>
+ #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);
+ }
+
--- /dev/null
+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
+
--- /dev/null
+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);
--- /dev/null
+--- 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 */
--- /dev/null
+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;
--- /dev/null
+From 37d51acb3b6a38af1717bfaa7925043c35bfb447 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@redhat.com>
+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
+
--- /dev/null
+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];
+ }
--- /dev/null
+From 61a292adf45405641de1c522a04c148e0a152acd Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+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 <ajax@redhat.com>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+
+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
+
--- /dev/null
+From 995ecfb51d4ab8197e4591d5c0957e08a0bd6a59 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+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 <peter.hutterer@who-t.net>
+
+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
+
--- /dev/null
+From d2f5bd2c3e3cbe4778749d457550355d344ca62a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 7e17b41d2907afd82d668f25694e1da12e34895e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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;
--- /dev/null
+From 2f605f86acec5ce853f764c41f8c737154a274f5 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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);
--- /dev/null
+From d7b2f5c06259c7e6ba037909adec4c2a5a8b15ec Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ 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;
+ }
--- /dev/null
+From 7d4f361a216718fc7333ab805dafdb9e5c85c180 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From f07eb544bbcfd9d4c64f036b654f4567f1fd2b9c Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ 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
+
--- /dev/null
+From 0d50f11aa10fe64c74ab7b3c572cc2f3ff583020 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <ivansprundel@ioactive.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 54fa1f815507cd27280f661be7a64f2f2e6c579e Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 5fdc679e24abb348014164bf53b82a884a5b380d Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 362ea7ec75543b694ebc8ab7268a2402e80a10bd Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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);
--- /dev/null
+From 45000a2286023e2307fda53e602ab24afd2193be Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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);
--- /dev/null
+From e4bde707b4972a03ffc7737bb8e70eed830670ca Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+---
+ 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
+
--- /dev/null
+From 1322c6ce2a64ca3290ec76144d8443dec50f2183 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From c12a45abf1ae41f5deca298489f5e76ac54f2121 Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+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 <jcristau@debian.org>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From c21e46f03bd2096aaed666d91a3188a5676f6222 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From c0308b700e3e0f0b6b1dc350e822b6218d080f1a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 0b199c0b23aecfdce53c28ea653c9342217d6f33 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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 <dix-config.h>
++#endif
++
++/*
++ * Protocol testing for ChangeDeviceControl request.
++ */
++#include <stdint.h>
++#include <X11/X.h>
++#include <X11/Xproto.h>
++#include <X11/extensions/XIproto.h>
++#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;
++}
--- /dev/null
+From a8d2ec0a4c11fb5804c073a5b74ba342d59843a8 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
--- /dev/null
+From d4934a8fb4fab54d39c42ca445687985fe4410cd Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+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 <alan.coopersmith@oracle.com>
+Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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 <stdint.h>
+ #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
+
--- /dev/null
+From 096a5af8e52faafc38ae84dd17bede7ac03a3b83 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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)) {
--- /dev/null
+From 74e31c4809dbfe437a3e2a53ee38658da1f3c8ed Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 902b6a30c660f4b38afd936726071b631ada3fcf Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 53e2f52df33e5d45ce070ab2454c5a3d497cc8f6 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 13f54e513024fc8224065515d9c664135aba1848 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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,
--- /dev/null
+From 02f91446a5446d7287a0fc30aa8b15a1cd29c2cf Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+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 <ajax@redhat.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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;
+ }
+
--- /dev/null
+From 84caa119e859d66e1a8368f265c16769e44e3291 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 6070d07a25b33e9630f8dbbde1d1df6f25164286 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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);
--- /dev/null
+From efb3efd096edba7551e4e0e40bea522651211303 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 554e382ba7aae961ca88c75edb1caffb5d00e9f6 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 475a39f6ac52aa2dc1babfece38d73da1a478731 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <keithp@keithp.com>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From 4ab40b2b60f4f841f75250e1e60c1624d8212cd4 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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);
+ }
--- /dev/null
+From d303d79450436a1ef04252c2a7e36870c2506f38 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+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 <jcristau@debian.org>
+Reviewed-by: Michal Srb <msrb@suse.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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;
--- /dev/null
+From a7c63d6599067dc8ff0d114536d2db3fadb4e195 Mon Sep 17 00:00:00 2001
+From: Robert Morell <rmorell@nvidia.com>
+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 <rmorell@nvidia.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ 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
+
--- /dev/null
+From b20912c3d45cbbde3c443e6c3d9e189092fe65e1 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+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 <keithp@keithp.com
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+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
+
--- /dev/null
+From 61b17c0f10307e25e51e30e6fb1d3e3127f82d86 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+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 <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+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
+
--- /dev/null
+From 9802a0162f738de03585ca3f3b8a8266494f7d45 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+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 <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+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
+
--- /dev/null
+From 1559a94395258fd73e369f1a2c98a44bfe21a486 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+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 <keithp@keithp.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+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;
--- /dev/null
+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);
+ }
+
--- /dev/null
+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);
--- /dev/null
+From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+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 <bryce@canonical.com>
+---
+ 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:
--- /dev/null
+commit fe5018e0564118a7a8198fa286186fdb9ed818c7
+Author: Takashi Iwai <tiwai@suse.de>
+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 <tiwai@suse.de>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+
+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;
--- /dev/null
+--- 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;
+ }
+
--- /dev/null
+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;
+ }
--- /dev/null
+Date: Tue, 20 May 2014 14:32:59 +1000
+From: Peter Hutterer <peter.hutterer@who-t.net>
+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 <http://bugs.freedesktop.org/show_bug.cgi?id=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
+
--- /dev/null
+commit b770266fa9c3fab5374bdf109676e0b129ac4546
+Author: Bryce Harrington <bryce@canonical.com>
+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:
--- /dev/null
+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:
--- /dev/null
+From adb7bc3386559dfee34b359dadcbb6796bc416e7 Mon Sep 17 00:00:00 2001
+From: Dinar Valeev <dvaleev@suse.com>
+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 <eich@freedesktop.org>
+Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
+Signed-off-by: Keith Packard <keithp@keithp.com>
+---
+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
--- /dev/null
+From: Chris Wilson <chris@chris-wilson.co.uk>
+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 <chris@chris-wilson.co.uk>
+Cc: Dave Airlie <airlied@redhat.com>
+Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
+---
+ 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? */
--- /dev/null
+From dd0c31d6b7559bb0dda6283a5d345d537f1d6b42 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied@gmail.com>
+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 <airlied@redhat.com>
+---
+ 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
+
--- /dev/null
+## 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
--- /dev/null
+--- 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;
+ }
+
--- /dev/null
+--- 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;
--- /dev/null
+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;
+ }
--- /dev/null
+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)))
--- /dev/null
+From a6f5ffd5879e7fb052d343592951cc476b699bb4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+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 <lbsousajr@gmail.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 7070ebeebaca1b51f8a2801989120784a1c374ae Mon Sep 17 00:00:00 2001
+From: Oleg Samarin <osamarin68@gmail.com>
+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 <osamarin68@gmail.com>
+Signed-off-by: Laércio de Sousa <lbsousajr@gmail.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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,
+
--- /dev/null
+From 29b1484bb9555e45067669cbfe68a3c40596f4ff Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+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 <lbsousajr@gmail.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ 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
+
--- /dev/null
+From 46cf2a60934076bf568062eb83121ce90b6ff596 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= <lbsousajr@gmail.com>
+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 <hdegoede@redhat.com>
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+---
+ 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
+
--- /dev/null
+commit 56929f41e6c4cc1b2d72a33d14b4d993e7b613a3
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+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 <peter.hutterer@who-t.net>
+
+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);
+ }
+ }
+
--- /dev/null
+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);
+ }
+ }
+
--- /dev/null
+--- 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 <stdlib.h>
++#include <stdio.h>
++#include <math.h>
++
++#include <xorg-config.h>
++#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 <mir_toolkit/mir_client_library.h>
++#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 <stdint.h>
++#include <string.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <errno.h>
++
++#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 <xorg-server.h>
++#include "windowstr.h"
++#include "regionstr.h"
++#include "damagestr.h"
++
++#include "xmir.h"
++#include "xmir-private.h"
++
++#include "xf86.h"
++
++#include <stdlib.h>
++#include <unistd.h>
++
++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 <xorg-config.h>
++#endif
++
++#include "xmir.h"
++#include "xmir-private.h"
++
++#include "list.h"
++#include "xf86.h"
++#include "xf86Crtc.h"
++#include "xf86Priv.h"
++
++#include <xf86drm.h>
++#include <string.h>
++
++#include <mir_toolkit/mir_client_library.h>
++#include <mir_toolkit/mir_client_library_drm.h>
++
++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 <stdint.h>
++#include <mir_toolkit/mir_client_library.h>
++
++#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 <dix-config.h>
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <pthread.h>
++#include <unistd.h>
++
++#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();
++}
--- /dev/null
+From e78c75f5e19cf38f276b1631078f87b502fdc555 Mon Sep 17 00:00:00 2001
+From: Alberto Milone <alberto.milone@canonical.com>
+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 <airlied@redhat.com>
+Signed-off-by: Alberto Milone <alberto.milone@canonical.com>
+---
+ 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
+
--- /dev/null
+#!/usr/bin/make -f
+# debian/rules for the Debian xorg-server package.
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>
+# Copyright © 2005 Daniel Stone <daniel@fooishbar.org>
+# Copyright © 2005 David Nusinow <dnusinow@debian.org>
+
+# 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
--- /dev/null
+2:1.14.99.902
+ABI_VIDEODRV_VERSION:15.0
+ABI_XINPUT_VERSION:20.0
--- /dev/null
+#git=git://anongit.freedesktop.org/xorg/xserver
+version=3
+http://xorg.freedesktop.org/releases/individual/xserver/ xorg-server-(.*)\.tar\.gz
--- /dev/null
+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
--- /dev/null
+main/usr/bin/Xdmx usr/bin
+main/usr/share/man/man1/Xdmx.1 usr/share/man/man1
--- /dev/null
+main/usr/bin/Xnest usr/bin
+main/usr/share/man/man1/Xnest.1 usr/share/man/man1
--- /dev/null
+build-source/xorg-server.tar.* usr/src
--- /dev/null
+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
--- /dev/null
+hw/kdrive/ephyr/README
--- /dev/null
+main/usr/bin/Xephyr usr/bin
+main/usr/share/man/man1/Xephyr.1 usr/share/man/man1
--- /dev/null
+# 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/
--- /dev/null
+#!/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:
--- /dev/null
+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/
--- /dev/null
+# That's OK, they were virtual packages:
+breaks-without-version xserver-xorg-input-7
+breaks-without-version xserver-xorg-video-6
--- /dev/null
+#!/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:
--- /dev/null
+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/
--- /dev/null
+main/usr/lib/xorg/modules/extensions/libxmir.so usr/lib/xorg/modules/extensions
--- /dev/null
+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
--- /dev/null
+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.
--- /dev/null
+/*
+ * 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 <xorg-config.h>
+#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;
+}
--- /dev/null
+/*
+ * 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 <daniel@fooishbar.org>
+ */
+
+extern Bool DRI2ModuleSetup(void);
--- /dev/null
+#!/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' \
+"$@"
--- /dev/null
+#!/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' \
+"$@"
--- /dev/null
+#!/bin/sh
+git diff --check |
+sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' |
+sh
--- /dev/null
+#!/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' \
+ "$@"
--- /dev/null
+/*
+ * 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 <dix-config.h>
+#include <X11/Xfuncproto.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#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 <errno.h>
+
+/*
+ * 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 */
--- /dev/null
+.\" $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.
--- /dev/null
+.\" $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.
+
--- /dev/null
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <X11/extensions/shapeproto.h>
+
+#ifdef XTEST
+extern void XTestExtensionInit(void);
+#include <X11/extensions/xtestproto.h>
+#endif
+
+#if 1
+extern void XTestExtension1Init(void);
+#endif
+
+#if 1
+extern void XCMiscExtensionInit(void);
+#endif
+
+#ifdef SCREENSAVER
+extern void ScreenSaverExtensionInit(void);
+#include <X11/extensions/saver.h>
+#endif
+
+#ifdef XF86VIDMODE
+extern void XFree86VidModeExtensionInit(void);
+#include <X11/extensions/xf86vmproto.h>
+#endif
+
+#ifdef XFreeXDGA
+extern void XFree86DGAExtensionInit(void);
+extern void XFree86DGARegister(void);
+#include <X11/extensions/xf86dgaproto.h>
+#endif
+
+#ifdef DPMSExtension
+extern void DPMSExtensionInit(void);
+#include <X11/extensions/dpmsconst.h>
+#endif
+
+#ifdef XV
+extern void XvExtensionInit(void);
+extern void XvMCExtensionInit(void);
+extern void XvRegister(void);
+#include <X11/extensions/Xv.h>
+#include <X11/extensions/XvMC.h>
+#endif
+
+#ifdef RES
+extern void ResExtensionInit(void);
+#include <X11/extensions/XResproto.h>
+#endif
+
+#ifdef SHM
+#include <X11/extensions/shmproto.h>
+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
--- /dev/null
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#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
--- /dev/null
+/*
+ * (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 <idr@us.ibm.com>
+ */
+
+#if defined(IN_MINI_GLX)
+#include <GL/gl.h>
+#else
+#if defined(HAVE_DIX_CONFIG_H)
+#include <dix-config.h>
+#endif
+#include <X11/X.h>
+#include <GL/glx.h>
+#include "GL/glxint.h"
+#endif
+
+/* Memory macros */
+#if defined(IN_MINI_GLX)
+#include <stdlib.h>
+#include <string.h>
+#define _mesa_malloc(b) malloc(b)
+#define _mesa_free(m) free(m)
+#define _mesa_memset memset
+#else
+#ifdef XFree86Server
+#include <os.h>
+#include <string.h>
+#define _mesa_malloc(b) malloc(b)
+#define _mesa_free(m) free(m)
+#define _mesa_memset memset
+#else
+#include <X11/Xlibint.h>
+#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));
+}
--- /dev/null
+/*
+ * (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 <idr@us.ibm.com>
+ */
+
+#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 */
--- /dev/null
+ 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.