--- xorg-server-1.19.6.orig/.dir-locals.el +++ xorg-server-1.19.6/.dir-locals.el @@ -0,0 +1 @@ +((c-mode . ((c-basic-offset . 4) (indent-tabs-mode . nil)))) \ No newline at end of file --- xorg-server-1.19.6.orig/config/dbus-api +++ xorg-server-1.19.6/config/dbus-api @@ -0,0 +1,40 @@ +D-BUS Configuration API v2 +---------------------------- + +The X server will register the bus name org.x.config.displayN, and the +object /org/x/config/N, where N is the display number. + +Currently only hotplugging of input devices is supported. + +org.x.config.input: + org.x.config.input.version: + Returns one unsigned int32, which is the API version. + + org.x.config.input.add: + Takes an argument of key/value option pairs in arrays, e.g.: + [ss][ss][ss][ss] + is the signature for four options. These options will be passed + to the input driver as with any others. + Option names beginning with _ are not allowed; they are reserved + for internal use. + + Returns a number of signed int32s. Positive integers are the + device IDs of new devices; negative numbers are X error codes, + as defined in X.h. BadMatch will be returned if the options + given do not match any device. BadValue is returned for a malformed + message. (Example: 8 is new device ID 8; -8 is BadMatch.) + + Notably, BadAlloc is never returned: the server internally signals + to D-BUS that the attempt failed for lack of memory. + + org.x.config.input.remove: + Takes one uint32 argument, which is the device ID to remove, i.e.: + u + is the signature. + + Returns one signed int32 which represents an X status as defined in + X.h. See org.x.config.input.add. Error codes are negative numbers. + + org.x.config.input.listDevices: + Lists the currently active devices. No argument. + Return value is sequence of [ ] [ ] ..., i.e. [us]. --- xorg-server-1.19.6.orig/damageext/damageext.h +++ xorg-server-1.19.6/damageext/damageext.h @@ -0,0 +1,33 @@ +/* + * Copyright © 2002 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#ifndef _DAMAGEEXT_H_ +#define _DAMAGEEXT_H_ + +void + DamageExtensionInit(void); + +#endif /* _DAMAGEEXT_H_ */ --- xorg-server-1.19.6.orig/debian/README.source +++ xorg-server-1.19.6/debian/README.source @@ -0,0 +1,66 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +---------------------------------------------- +Updating xorg-server to a new upstream release +---------------------------------------------- + +* The abibumpcheck target helps us notice any ABI bump: + - A major ABI bump means drivers have to be rebuilt. + - A minor ABI bump means the version in serverminver has to be + bumped. + Reference documentation about dependencies is available at: + http://pkg-xorg.alioth.debian.org/reference/dependencies.html +* We have to keep track of the SDK_REQUIRED_MODULES variable in + configure.ac. It is used to determine xorg-server.pc's dependencies + so xserver-xorg-dev's dependencies have to be adjusted when this + variable changes. This variable is set to a list of modules, but is + updated a few times. It's probably a good idea to use: + git grep SDK_REQUIRED_MODULES= -- configure.ac --- xorg-server-1.19.6.orig/debian/changelog +++ xorg-server-1.19.6/debian/changelog @@ -0,0 +1,9020 @@ +xorg-server (2:1.19.6-1ubuntu4.3) bionic; urgency=medium + + * sync-i965-pciids.diff: Updated with Comet Lake id's. (LP: #1821863) + + -- Timo Aaltonen Fri, 31 May 2019 14:10:48 +0300 + +xorg-server (2:1.19.6-1ubuntu4.2) bionic-security; urgency=medium + + * SECURITY UPDATE: Privilege escalation and file overwrite + - debian/patches/CVE-2018-14665.patch: disable -logfile and -modulepath + when running with elevated privileges in + hw/xfree86/common/xf86Init.c. + - CVE-2018-14665 + + -- Marc Deslauriers Thu, 25 Oct 2018 11:18:32 -0400 + +xorg-server (2:1.19.6-1ubuntu4.1) bionic; urgency=medium + + * prime-sync-refactor.diff: Fix crash on modesetting+amdgpu hybrid. + (LP: #1789913) + * sync-i965-pciids.diff: Update intel pci-id's. (LP: #1789924) + + -- Timo Aaltonen Wed, 05 Sep 2018 14:38:25 +0300 + +xorg-server (2:1.19.6-1ubuntu4) bionic; urgency=medium + + * debian/patches/fix-default-permissions.patch: fix default permissions + when creating the log directory. (LP: #1735929) + + -- Marc Deslauriers Fri, 13 Apr 2018 11:31:45 -0400 + +xorg-server (2:1.19.6-1ubuntu3) bionic; urgency=medium + + * dri2-Sync-i965_pci_ids.h-from-Mesa.patch: Update i965_pci_ids.h to + include latest CFL. (LP: #1753954) + * server-1.19.diff: Pull fixes from upstream stable branch. + (LP: #1748926) + + -- Timo Aaltonen Tue, 13 Mar 2018 11:59:01 +0200 + +xorg-server (2:1.19.6-1ubuntu2) bionic; urgency=medium + + * improve-outputclass.diff: Backport commits from upstream to improve + OutputClass to support options and overriding primary GPU. + * 191-Xorg-add-an-extra-module-path.patch, rules.flags: Drop adding + extra-modules dir, not necessary anymore with outputclass additions. + * 105_nvidia_autodetect.patch: Dropped, obsolete now. + * 188_default_primary_to_first_busid.patch: Dropped, obsolete now. + + -- Timo Aaltonen Thu, 22 Feb 2018 15:45:57 +0200 + +xorg-server (2:1.19.6-1ubuntu1) bionic; urgency=medium + + * Merge with Debian. + * XShmGetImage_fix_censoring.patch: Dropped, upstream. + + -- Timo Aaltonen Fri, 26 Jan 2018 17:27:50 +0200 + +xorg-server (2:1.19.6-1) unstable; urgency=medium + + [ Emilio Pozuelo Monfort ] + * Use --sourcedir=debian/tmp/udeb for the udeb package and + --sourcedir=debian/tmp/main for the rest, so that we don't have + to specify where the files come from as well as where they should + be installed to in *.install. + * Install xorg-server.pc to a multiarch location. Based on a patch + from Helmut Grohne. Closes: #836453. + * Move xserver-xorg-legacy to priority optional, as priority extra is + deprecated. + * Make calculation of xserver-xorg-core's xinput/video ABI provides more + robust. + * Use ${prefix} rather than ${libexecdir} for --with-module-dir, as the + module dir ends up in the pkg-config file, where libexecdir is not + defined. + + [ Timo Aaltonen ] + * New upstream release. + * 07-glx-do-not-pick-srgb-config-for-32bit-rgba-visual.diff: Add a + patch from upstream to fix potential issues with mesa git. + + -- Timo Aaltonen Thu, 18 Jan 2018 14:11:18 +0200 + +xorg-server (2:1.19.5-1) unstable; urgency=high + + [ Emilio Pozuelo Monfort ] + * rules: Try to simplify a bit flags handling and move them + to rules.flags. + * rules: Remove --disable-silent-rules, dh passes that for us. + + [ Andreas Boll ] + * New upstream release. + - CVE-2017-12176, CVE-2017-12177, CVE-2017-12178, CVE-2017-12179, + - CVE-2017-12180, CVE-2017-12181, CVE-2017-12182, CVE-2017-12183, + - CVE-2017-12184, CVE-2017-12185, CVE-2017-12186, CVE-2017-12187 + + -- Julien Cristau Fri, 13 Oct 2017 11:28:05 +0200 + +xorg-server (2:1.19.5-0ubuntu2) artful; urgency=medium + + * Backport upstream patch to fix cropping in XShmGetImage (LP: #1723732). + + -- Dmitry Shachnev Sun, 15 Oct 2017 14:59:53 +0300 + +xorg-server (2:1.19.5-0ubuntu1) artful; urgency=medium + + * New upstream release + - Fix CVE's: + CVE-2017-12176, CVE-2017-12177, CVE-2017-12178, CVE-2017-12179, + CVE-2017-12180, CVE-2017-12181, CVE-2017-12182, CVE-2017-12183, + CVE-2017-12184, CVE-2017-12185, CVE-2017-12186, CVE-2017-12187 + - Revert a commit that regressed PRIME sync + - os: Make sure big requests have sufficient length. + + -- Timo Aaltonen Fri, 13 Oct 2017 08:46:24 +0300 + +xorg-server (2:1.19.4-1ubuntu2) artful; urgency=medium + + * xvfb-run: Keep redirecting stderr to stdout, autopkgtests need it. + + -- Timo Aaltonen Wed, 11 Oct 2017 11:12:57 +0300 + +xorg-server (2:1.19.4-1ubuntu1) artful; urgency=medium + + * Merge from Debian. + - new bugfix release + + -- Timo Aaltonen Tue, 10 Oct 2017 11:13:48 +0300 + +xorg-server (2:1.19.4-1) unstable; urgency=medium + + [ Sven Joachim ] + * xvfb-run: Do not redirect stderr to stdout when running the program + (Closes: #868876, LP: #1059947). + + [ Timo Aaltonen ] + * New upstream release. (Closes: #855206, #857983, #860886) + - CVE-2017-13721, CVE-2017-13723 + * rules: Drop dh_strip override, dbgsym transition is done + (Closes: #876690). + * signing-key.asc: Update Adam Jackson's key. + + [ Julien Cristau ] + * Restore definition of DEB_HOST_ARCH_OS in debian/rules, lost in dh + conversion (2:1.19.1-1). Thanks, Helmut Grohne! + + -- Timo Aaltonen Tue, 10 Oct 2017 00:33:18 +0300 + +xorg-server (2:1.19.3-2) unstable; urgency=high + + * CVE-2017-10972: information leak out of the X server due to an + uninitialized stack area when swapping: + - Xi: Zero target buffer in SProcXSendExtensionEvent + * CVE-2017-10971: stack overflow due to missing GenericEvent handling in + XSendEvent: + - dix: Disallow GenericEvent in SendEvent request + - Xi: Verify all events in ProcXSendExtensionEvent + - Xi: Do not try to swap GenericEvent + * With both those fixes, this closes: #867492 + + -- Julien Cristau Fri, 07 Jul 2017 07:31:11 +0200 + +xorg-server (2:1.19.3-1ubuntu7) artful; urgency=medium + + * Sync from xserver-1.19-branch, drop upstreamed patches: + CVE-2017-10971-{1,2,3}.patch, + CVE-2017-10972.patch, + add-cfl-cnl-ids.diff, + sync-i965-ids.diff, + xwayland-pointer-confine.diff + + -- Timo Aaltonen Tue, 03 Oct 2017 00:24:32 +0300 + +xorg-server (2:1.19.3-1ubuntu6) artful; urgency=medium + + * xwayland-add-grab-protocol-support.diff: Dropped, causes issues with + kvm. (LP: #1713981) + + -- Timo Aaltonen Wed, 30 Aug 2017 14:42:05 +0300 + +xorg-server (2:1.19.3-1ubuntu5) artful; urgency=medium + + * add-cfl-cnl-ids.diff: Add Coffee Lake and Cannonlake pci-ids. + + -- Timo Aaltonen Mon, 28 Aug 2017 18:44:04 +0300 + +xorg-server (2:1.19.3-1ubuntu4) artful; urgency=medium + + * xwayland-tablet.diff: Add support for Wacom tablets in xwayland. + (LP: #1712571) + * xwayland-pointer-confine.diff: Add pointer locking/confinement fixes + to xwayland. + * xwayland-add-grab-protocol-support.diff: Add support for keyboard + grabbing to xwayland. Bump wayland-protocols build-dependency to 1.9. + + -- Timo Aaltonen Fri, 25 Aug 2017 08:32:17 +0300 + +xorg-server (2:1.19.3-1ubuntu3) artful; urgency=medium + + * SECURITY UPDATE: DoS and possible code execution in endianness + conversion of X Events + - debian/patches/CVE-2017-10971-1.patch: do not try to swap + GenericEvent in Xi/sendexev.c. + - debian/patches/CVE-2017-10971-2.patch: verify all events in + ProcXSendExtensionEvent in Xi/sendexev.c. + - debian/patches/CVE-2017-10971-3.patch: disallow GenericEvent in + SendEvent request in dix/events.c, dix/swapreq.c. + - CVE-2017-10971 + * SECURITY UPDATE: information leak in XEvent handling + - debian/patches/CVE-2017-10972.patch: zero target buffer in + SProcXSendExtensionEvent in Xi/sendexev.c. + - CVE-2017-10972 + + -- Marc Deslauriers Mon, 17 Jul 2017 09:34:04 -0400 + +xorg-server (2:1.19.3-1ubuntu2) artful; urgency=medium + + * sync-i965-ids.diff: Sync i965 pci-id's from mesa. + + -- Timo Aaltonen Wed, 10 May 2017 13:03:42 +0300 + +xorg-server (2:1.19.3-1ubuntu1) zesty; urgency=medium + + [ Timo Aaltonen ] + * Merge from Debian experimental. (LP: #1671799) + - Patches refreshed + - randr-adjust-masters-last-set-time.diff, + modesetting-unifdef-slave-support.diff: Dropped, upstream + - config-add-no-removal.patch, xf86-inactive-gpuscreen.patch, + fix-detach-gpu.patch: Dropped, more or less obsolete + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Cleaned up from + the package as it wasn't used. + * 111_armel-drv-fallbacks.patch: Dropped, we don't ship these drivers + anymore. + * rules: Drop the workaround that adds lt_cv_prog_compiler_static_works=no + to confflags. + * 232-xf86compatoutput-valgrind.patch: This was added upstream + already, no need to carry a duplicate check. + * 208_switch_on_release.diff: Dropped, doesn't work with 1.19. + * 228_autobind_gpu.patch: Update from Fedora, fixes nvidia. + * disable-rotation-transform-gpuscreens.patch: Dropped, nvidia + supports rotation now. + * 122_xext_fix_card32_overflow_in_xauth.patch: Dropped, upstream + review found issues and it never got applied. + * xfree86-no-xv-for-gpuscreens.patch: Drop bogus buglink. + * 227_null_ptr_midispcur.patch: Dropped, upstream didn't accept it. + * randr-do-not-check-the-screen-size.diff: Dropped, can't reproduce + #1586260 anymore without the patch. + + [ Robert Ancell ] + * debian/patches/xmir.patch: + - Refresh + - Fix warnings when built against lp:mir/0.25 + - Support both Mir 0.24, 0.25 and 0.26 client APIs + - Fix crashing on arm64 (LP: #1642297) + + -- Timo Aaltonen Mon, 27 Mar 2017 19:43:08 +0300 + +xorg-server (2:1.19.3-1) unstable; urgency=medium + + * New upstream release. + + -- Emilio Pozuelo Monfort Wed, 15 Mar 2017 20:53:42 +0100 + +xorg-server (2:1.19.2-1) unstable; urgency=medium + + [ Andreas Boll ] + * xserver-xorg-core.bug.script: Change udevadm path from /sbin to /bin + (Closes: #852584). + + [ Emilio Pozuelo Monfort ] + * New upstream stable release. + - CVE-2017-2624: Timing attack against MIT cookie. Closes: #856398. + * control: Build-depend on libbsd-dev everywhere, needed for + arc4random_buf for the above fix. + + -- Emilio Pozuelo Monfort Fri, 03 Mar 2017 15:41:15 +0100 + +xorg-server (2:1.19.1-4) unstable; urgency=medium + + * rules: Only set the suid bit on Xorg.wrap when building arch:any + packages. Thanks Julien Cristau. + + -- Emilio Pozuelo Monfort Fri, 20 Jan 2017 00:22:09 +0100 + +xorg-server (2:1.19.1-3) unstable; urgency=medium + + * rules: Fix setting suid bit on Xorg.wrap. + * rules: Don't ignore errors when setting the suid bit. + + -- Emilio Pozuelo Monfort Thu, 19 Jan 2017 19:14:06 +0100 + +xorg-server (2:1.19.1-2) unstable; urgency=medium + + * rules: Fix udeb regression from dh migration. Should also fix FTBFS + on hurd and kfreebsd. + * rules: Add --fail-missing to dh_install. + * rules: Remove unused vars config_backend_main and + config_backend_udeb. + + -- Andreas Boll Wed, 18 Jan 2017 09:46:53 +0100 + +xorg-server (2:1.19.1-1) unstable; urgency=medium + + [ Emilio Pozuelo Monfort ] + * Switch to dh. + * Drop build-deps on automake and libtool, dh-autoreconf depends on + them for us. + * rules: use install consistently. + * Drop pre-wheezy Breaks. + + [ Andreas Boll ] + * New upstream release. + - AttendClient of grab-pervious client must queue to + saved_ready_clients [v2] (Closes: #846779, #850940). + - present: Only call present_flip_notify if vblank->queued == FALSE + (Closes: #849250). + + -- Emilio Pozuelo Monfort Tue, 17 Jan 2017 20:43:34 +0100 + +xorg-server (2:1.19.0-3) unstable; urgency=medium + + * Drop xserver-xorg-core-dbg in favor of xserver-xorg-core-dbgsym. + * Cherry-pick upstream commit d6da2086951, + Revert "damage: Make damageRegionProcessPending take a damage not a + drawable". Fixes a crash caused by trying to free an invalid pointer. + Closes: #847025, #848321. + + -- Emilio Pozuelo Monfort Fri, 16 Dec 2016 19:39:45 +0100 + +xorg-server (2:1.19.0-2) unstable; urgency=medium + + * Disable glamor on the udeb build. It's not needed there. + This has the side effect of fixing the Hurd build. + * debian/patches/02_kbsd-input-devd.diff: + - Ported to NotifyFd. Fixes the kFreeBSD build. + * Bump Standards-Version to 3.9.8; no changes needed. + + -- Emilio Pozuelo Monfort Wed, 23 Nov 2016 19:32:09 +0100 + +xorg-server (2:1.19.0-1) unstable; urgency=medium + + [ Andreas Boll ] + * New upstream release. + * rules: Explicitly disable glamor on hurd. Should fix FTBFS on hurd. + + [ Emilio Pozuelo Monfort ] + * Upload to unstable. + + -- Emilio Pozuelo Monfort Tue, 22 Nov 2016 23:27:39 +0100 + +xorg-server (2:1.18.99.902-1) experimental; urgency=medium + + [ Timo Aaltonen ] + * New upstream release candidate 1. + * control: Bump libxfont-dev build-dependency. + * patches: + - refreshed + - glamor-Declare-pos-in-the-composite-glyph.diff dropped, upstream + * control: Add libxcb-xkb-dev to build-depends. + * serverminver: Bumped. + * watch: Fix a typo. + + [ Emilio Pozuelo Monfort ] + * New upstream release candidate 2. + * rules: Drop aiglx enable/disable flags, removed upstream. + * control: Bump x11proto-core-dev requirement. + * control: Add wayland-protocols build-dep on linux for Xwayland. + + -- Emilio Pozuelo Monfort Sat, 05 Nov 2016 19:56:43 +0100 + +xorg-server (2:1.18.4-2) unstable; urgency=medium + + [ Julien Cristau ] + * Adjust bug script to look for log files in $HOME/.local/share/xorg in + addition to /var/log, to handle unprivileged Xorg. + * Update a bunch of URLs in packaging to https. + + [ Andreas Boll ] + * Add glamor-Declare-pos-in-the-composite-glyph.diff from upstream + (Closes: #834054). + + -- Timo Aaltonen Tue, 06 Sep 2016 16:09:04 +0300 + +xorg-server (2:1.18.4-1ubuntu9) zesty; urgency=medium + + * control: Depend on libxfont1-dev. + + -- Timo Aaltonen Thu, 15 Dec 2016 13:44:15 +0200 + +xorg-server (2:1.18.4-1ubuntu8) zesty; urgency=medium + + * xvfb-run: Bump default bitdepth to 16 so that GLX works. + + -- Timo Aaltonen Thu, 15 Dec 2016 12:33:01 +0200 + +xorg-server (2:1.18.4-1ubuntu7) zesty; urgency=medium + + * modesetting-unifdef-slave-support.diff: Fix modesetting slave output + names. (LP: #1636397) + + -- Timo Aaltonen Tue, 25 Oct 2016 10:48:45 +0300 + +xorg-server (2:1.18.4-1ubuntu6) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Don't call epoxy every frame (LP: #1617932) + - Ignore 'unknown 11 event' (LP: #1617925) + - Improve root window resizing code + - Make randr mode names simpler + + -- Robert Ancell Wed, 07 Sep 2016 15:50:30 +1200 + +xorg-server (2:1.18.4-1ubuntu5) yakkety; urgency=medium + + * drm_device_keep_trying.patch: Dropped, shouldn't be needed anymore, and + causes issues on non-x86 archs. (LP: #1581076) + + -- Timo Aaltonen Fri, 02 Sep 2016 13:59:52 +0300 + +xorg-server (2:1.18.4-1ubuntu4) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Fix button/menu focus failures (LP: #1590553) + - Implement XWMHints properly + - Add smooth touchpad scroll support (LP: #1603917) + - Fix key repeat order + - Remove links to Unity8 bugs that are now fixed. + + -- Robert Ancell Thu, 28 Jul 2016 14:31:22 +1200 + +xorg-server (2:1.18.4-1ubuntu3) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Fix bottom/right edge corruption. (LP: #1510849) + - Fix key repeat. (LP: #1591356) + - Don't delete outputs without replacing them. (LP: #1504422) (LP: #1602561) + - Xmir -debug: Log WM types by name and number. + - Implement fake GLX frame notification/timing. + - Improve focus tracking. + + -- Robert Ancell Thu, 21 Jul 2016 11:42:03 +0200 + +xorg-server (2:1.18.4-1ubuntu2) yakkety; urgency=medium + + * debian/control, debian/rules: + - Build xmir for arm64 (LP: #1604851). + + -- Łukasz 'sil2100' Zemczak Wed, 20 Jul 2016 18:55:21 +0200 + +xorg-server (2:1.18.4-1ubuntu1) yakkety; urgency=medium + + * Merge from debian. + * glamor-disable-logic-ops-when-doing-compositing.diff: Dropped, + upstream. + + -- Timo Aaltonen Wed, 20 Jul 2016 08:22:32 +0300 + +xorg-server (2:1.18.4-1) unstable; urgency=medium + + * New upstream stable release. + * os-treat-ssh-as-a-non-local-client.diff, upstream-fixes.diff: + Dropped, upstream. + + -- Timo Aaltonen Wed, 20 Jul 2016 06:00:21 +0300 + +xorg-server (2:1.18.3-2) unstable; urgency=medium + + * Drop 08_xfree86_fix_ia64_inx_outx.diff from the tree, it wasn't + applied anyway since Dec'14. + * 06_use-intel-only-on-pre-gen4.diff: Use modesetting driver on intel + gen4 and newer. + * upstream-fixes.diff: Add fixes from 1.18-branch until effd785aa8a97c9. + * Document modesetting-on-intel in the NEWS file. + + -- Timo Aaltonen Tue, 19 Jul 2016 05:59:24 +0300 + +xorg-server (2:1.18.3-1ubuntu7) yakkety; urgency=medium + + * glamor-disable-logic-ops-when-doing-compositing.diff: Fix + libreoffice with glamor. (LP: #1575000) + + -- Timo Aaltonen Tue, 05 Jul 2016 02:08:01 +0300 + +xorg-server (2:1.18.3-1ubuntu6) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Add focus/unfocus event passing (LP: #1582471) + + -- Robert Ancell Wed, 01 Jun 2016 11:07:46 +1200 + +xorg-server (2:1.18.3-1ubuntu5) yakkety; urgency=medium + + * randr-adjust-masters-last-set-time.diff, + randr-do-not-check-the-screen-size.diff: + Fix issues changing display mode on prime setups. (LP: #1586260) + + -- Timo Aaltonen Fri, 27 May 2016 11:51:56 +0300 + +xorg-server (2:1.18.3-1ubuntu4) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Fix recently added keymap code + + -- Robert Ancell Wed, 04 May 2016 09:11:32 +1200 + +xorg-server (2:1.18.3-1ubuntu3) yakkety; urgency=medium + + * debian/patches/xmir.patch: + - Pass keymap from Mir to Xkb (LP: #1566487) + * debian/patches/xmir-fixes.diff: + - Merged into xmir.patch + + -- Robert Ancell Fri, 29 Apr 2016 14:36:49 +0200 + +xorg-server (2:1.18.3-1ubuntu2) xenial; urgency=medium + + * Disable 190_cache-xkbcomp_output_for_fast_start_up.patch for now, + compiling the keymap fails in current xenial for some reason. + (LP: #1566878) + + -- Timo Aaltonen Thu, 07 Apr 2016 12:10:12 +0300 + +xorg-server (2:1.18.3-1ubuntu1) xenial; urgency=medium + + * Merge from Debian. + * fix-xineramaqueryscreens-for-reverse-prime.diff, + glamor-factor-out-glamor-set-color.diff, + glamor-source-pictures-are-always-depth-32.diff: + Deleted, upstream. + * xmir-fixes.diff: Updated for glamor changes. + * 105_nvidia_autodetect.patch: Modified and renamed since it doesn't + need to handle fglrx anymore. + + -- Timo Aaltonen Sat, 12 Mar 2016 08:59:43 +0200 + +xorg-server (2:1.18.3-1) unstable; urgency=medium + + * New upstream release. + * Drop patches included upstream. + + -- Timo Aaltonen Tue, 05 Apr 2016 09:12:50 +0300 + +xorg-server (2:1.18.2-3) unstable; urgency=medium + + * regression fixes part2: + - replace revert-eb5108b870.diff with patch from upstream + - make-sure-hw-cursor-is-hidden-when-it-should.diff: Don't show an + extra cursor in some cases + * os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work + with DRI3. + + -- Timo Aaltonen Tue, 29 Mar 2016 10:38:47 +0300 + +xorg-server (2:1.18.2-2) unstable; urgency=medium + + * regression fixes/workarounds: + vidmode-reduce-verbosity-of-getmodeline.diff (Closes: #818634) + glamor-swizzle-red-to-0-for-alpha-textures.diff + revert-eb5108b870.diff (Closes: #818172) + + -- Timo Aaltonen Tue, 22 Mar 2016 09:47:25 +0200 + +xorg-server (2:1.18.2-1) unstable; urgency=medium + + * New upstream release. (Closes: #814982) + + -- Timo Aaltonen Sat, 12 Mar 2016 08:49:55 +0200 + +xorg-server (2:1.18.1-1ubuntu4) xenial; urgency=medium + + * glamor: Fix font rendering issue. (LP: #1555960) + + -- Timo Aaltonen Fri, 11 Mar 2016 09:36:40 +0200 + +xorg-server (2:1.18.1-1ubuntu3) xenial; urgency=medium + + * Merge xmir changes from 2:1.17.3-2ubuntu4. + * fix-xineramaqueryscreens-for-reverse-prime.diff: Fix unity-greeter + crash with nvidia prime. + + -- Timo Aaltonen Thu, 25 Feb 2016 11:49:23 +0200 + +xorg-server (2:1.18.1-1ubuntu2) xenial; urgency=medium + + * Merge xmir changes from 2:1.17.3-2ubuntu3. + + -- Timo Aaltonen Tue, 16 Feb 2016 10:02:03 +0200 + +xorg-server (2:1.18.1-1ubuntu1) xenial; urgency=medium + + * Merge from Debian experimental + * patches: Refreshed, dropped what's upstream. + * xmir-fixes.diff: Port xmir to 1.18. + * fix-ftbfs-ppc64el.patch: Dropped, not needed anymore. + + -- Timo Aaltonen Tue, 08 Dec 2015 19:47:06 +0200 + +xorg-server (2:1.18.1-1) unstable; urgency=medium + + * New upstream release. + * add_support_new_libsystemd.patch, + glamor-disable-debugging-msgs.diff, + update-intel-pciids.diff: + - dropped, upstream + + -- Timo Aaltonen Tue, 09 Feb 2016 10:27:18 +0200 + +xorg-server (2:1.18.0-3) unstable; urgency=medium + + * update-intel-pciids.diff: Sync dri2 mapping ids for intel. + * glamor-disable-debugging-msgs.diff: Make glamor less noisy with + recent mesa. + + -- Timo Aaltonen Wed, 27 Jan 2016 16:41:59 +0200 + +xorg-server (2:1.18.0-2) unstable; urgency=medium + + [ Laurent Bigonville ] + * Enable systemd socket activation support (Closes: #803254) + + [ Emilio Pozuelo Monfort ] + * Let xserver-xorg-dev depend on libxfont-dev, as dixfont.h needs + fontutil.h. + + -- Timo Aaltonen Tue, 26 Jan 2016 16:25:33 +0200 + +xorg-server (2:1.18.0-1) experimental; urgency=medium + + * New upstream release. + - drop xext-fix-udeb-build.diff, merged upstream + * Extend libgbm-dev build-dep to kfreebsd-any as well as linux-any. + + -- Julien Cristau Tue, 10 Nov 2015 22:40:43 +0100 + +xorg-server (2:1.17.99.902-1) experimental; urgency=medium + + * Team upload. + * New upstream release candidate. + * Bump x11proto-core and x11proto-randr dependencies per configure.ac. + * Stop passing deleted options to configure. + * Bump serverminver (video ABI 20.0, input ABI 22.1). + + -- Julien Cristau Thu, 29 Oct 2015 09:58:55 +0000 + +xorg-server (2:1.17.3-2ubuntu4) xenial; urgency=medium + + * debian/patches/xmir.patch: + - Revert swapinterval 0 change + + -- Robert Ancell Tue, 16 Feb 2016 09:35:17 -0800 + +xorg-server (2:1.17.3-2ubuntu3) xenial; urgency=medium + + * debian/patches/xmir.patch: + - Add ability to set title for XMir (LP: #1542028) + - Use swapinterval 0 (LP: #1502738) + - Add sufficient traversal hacks for Matchbox + + -- Robert Ancell Mon, 15 Feb 2016 17:32:21 -0800 + +xorg-server (2:1.17.3-2ubuntu2) xenial; urgency=medium + + * Disable mir on s390x. + + -- Dimitri John Ledkov Wed, 25 Nov 2015 16:11:38 +0000 + +xorg-server (2:1.17.3-2ubuntu1) xenial; urgency=medium + + [ Robert Ancell ] + * debian/patches/xmir.patch: + - Update to latest version + * debian/patches/xmir-rootless.patch: + - Merged into xmir.patch + + [ Timo Aaltonen ] + * Merge from Debian. (LP: #1511649) + * glamor-make-current-in-prepare-paths.diff, + linux-Do-not-call-FatalError-from-xf86CloseConsole.patch: + Dropped, upstream. + + -- Timo Aaltonen Tue, 10 Nov 2015 18:20:55 +0200 + +xorg-server (2:1.17.3-2) unstable; urgency=medium + + * Finalize xserver-xorg-core.NEWS. Thanks, Michael Biebl! + + -- Julien Cristau Tue, 27 Oct 2015 22:55:25 +0000 + +xorg-server (2:1.17.3-1) unstable; urgency=medium + + [ Julien Cristau ] + * New upstream release + - mi: fix typo in warning about overflowing queue (closes: #726041) + * Refresh 02_kbsd-input-devd.diff and 03_static-nettle.diff. + * Replace xorg-wrapper-envp.diff with a cherry-pick from master. + * New patch xext-fix-udeb-build.diff to fix build regression in 1.17.3. + * Add NEWS file for xserver-xorg-core with info about the -legacy split + (closes: #801487). + * Recommend libpam-systemd (closes: #802544, #802618, #802327, #802566, + probably others) + + [ Andreas Boll ] + * Use the correct repository for the Vcs-Git field (Closes: #801340). + Thanks, Vagrant Cascadian. + * Document new location for non-root Xorg log in the NEWS file. + + [ Samuel Thibault ] + * Fix xorg-wrapper on hurd (cherry-picked from master). + + -- Julien Cristau Tue, 27 Oct 2015 13:55:55 +0000 + +xorg-server (2:1.17.2-3) unstable; urgency=medium + + * Team upload. + [ Laurent Bigonville ] + * Move Xorg.wrap.1 man page from the xserver-xorg-core to + xserver-xorg-legacy package (Closes: #797661) + * Add a Breaks against systemd (<< 226-4~), before that version logind was + restarted on upgrade which makes the X server crash (See #798097) + * Bump Standards-Version to 3.9.6 (no further changes) + + [ Andreas Boll ] + * Update Vcs-* fields. + * Add upstream url. + + [ Julien Cristau ] + * Only reset environment in the Xorg wrapper if we didn't drop privileges. + + -- Laurent Bigonville Tue, 06 Oct 2015 09:06:22 +0200 + +xorg-server (2:1.17.2-2) experimental; urgency=medium + + [ Laurent Bigonville ] + * Enable logind support for the main build on Linux. + * Build and ship the setuid root wrapper from upstream, replacing + xserver-xorg's. + + [ Julien Cristau ] + * Take over x11-common's handling of the X wrapper; ship the wrapper in a + new xserver-xorg-legacy package. + * Patch the wrapper to reset Xorg's environment. I don't believe it needs + any variable there, and if that turns out to be wrong we can add a + whitelist or hardcode some values. + + -- Julien Cristau Wed, 19 Aug 2015 11:14:05 +0200 + +xorg-server (2:1.17.2-1.1) unstable; urgency=medium + + * Non-Maintainer Upload. + + [ Sven Joachim ] + * Install the whole usr/share/man/man4 directory into xserver-xorg-core, + fixes FTBFS on hurd where modesetting.4 does not exist (Closes: #794644). + + -- Samuel Thibault Tue, 11 Aug 2015 10:45:35 +0200 + +xorg-server (2:1.17.2-1ubuntu10) xenial; urgency=medium + + * debian/patches: + - linux-Do-not-call-FatalError-from-xf86CloseConsole.patch: Fix crashers + often occuring on shutdown (LP: #1237904) + - xmir.patch: Fix typo causing FTBFS + + -- Tim Lunn Mon, 26 Oct 2015 12:24:30 +1100 + +xorg-server (2:1.17.2-1ubuntu9) wily; urgency=medium + + * debian/patches/xmir.patch: + - Fix FTBFS due to change in Mir headers + + -- Robert Ancell Wed, 30 Sep 2015 16:15:39 +1300 + +xorg-server (2:1.17.2-1ubuntu8) wily; urgency=medium + + * debian/control: + - xmir depends on xserver-common (LP: #1500848) + + -- Robert Ancell Wed, 30 Sep 2015 14:56:38 +1300 + +xorg-server (2:1.17.2-1ubuntu7) wily; urgency=medium + + * glamor-make-current-in-prepare-paths.diff: Fix LO crashing the + server. (LP: #1443456) + + -- Timo Aaltonen Thu, 17 Sep 2015 12:04:08 +0300 + +xorg-server (2:1.17.2-1ubuntu6) wily; urgency=medium + + * os-make-sure-the-clientswritable-fd-set-is-initialized.diff: Fix + crashers caused by newer xproto bumping XFD_SETSIZE. (LP: #1484380) + + -- Timo Aaltonen Tue, 08 Sep 2015 10:30:31 +0300 + +xorg-server (2:1.17.2-1ubuntu5) wily; urgency=medium + + * disable-rotation-transform-gpuscreens.patch: Revert back to disabling + rotations on GPU screens. It won't work before 1.18. (LP: #1489696) + + -- Timo Aaltonen Wed, 02 Sep 2015 15:56:03 +0300 + +xorg-server (2:1.17.2-1ubuntu4) wily; urgency=medium + + * debian/patches/xmir-rootless.patch: + - Fix crash when running XMir in rootless mode (LP: #1472097) + + -- Robert Ancell Thu, 20 Aug 2015 16:31:37 +1200 + +xorg-server (2:1.17.2-1ubuntu3) wily; urgency=medium + + * debian/patches/xmir.patch: + - Fix red and blue channels being swapped on Android drivers (LP: #1471146) + + -- Robert Ancell Thu, 30 Jul 2015 15:31:29 +1200 + +xorg-server (2:1.17.2-1ubuntu2) wily; urgency=medium + + * debian/patches/xmir.patch: + - Fix cursor crash + * debian/patches/xmir-desktop-file-hint-flag.patch: + - Split Unity8 hack out from xmir.patch + + -- Robert Ancell Wed, 29 Jul 2015 14:18:31 +1200 + +xorg-server (2:1.17.2-1ubuntu1) wily; urgency=medium + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #1471185) + * fix-int10.patch: Dropped, upstream. + * pixman-validate.patch: Dropped, not upstream and not needed since + pixman got fixed. + * mi-dont-process-disabled.patch: This has been upstream for some time + now, drop it. + + [ Robert Ancell ] + * Add patch headers + * debian/xserver-xorg-core.install: + - Simplify man page install + + -- Robert Ancell Thu, 23 Jul 2015 11:04:33 +1200 + +xorg-server (2:1.17.2-1) unstable; urgency=medium + + [ Sven Joachim ] + * New upstream release. + + symbols: Fix sdksyms.sh to cope with gcc5 (Closes: #778187) + + os/access: fix regression in server interpreted auth (Closes: #784687) + + dix: Fix image byte order on big endian hardware (Closes: #785474) + + int10: Fix error check for pci_device_map_legacy (Closes: #787144) + + modesetting: Include dix-config.h from dumb_bo.c (Closes: #789823) + + unauthorised local client access in XWayland [CVE-2015-3164] + (Closes: #788410) + * Install the modesetting.4 manpage into xserver-xorg-core (Closes: #789646) + * Build xserver-xorg-core-udeb on all architectures again (Closes: #775205) + * Update debian/upstream/signing-key.asc. + + -- Julien Cristau Wed, 01 Jul 2015 18:07:40 +0200 + +xorg-server (2:1.17.1-2) unstable; urgency=medium + + * Disable libdrm support on hurd and in the kfreebsd udeb build, so we don't + try building the modesetting driver without libdrm. We should probably + revisit this later and ship modesetting_drv.so in d-i, but this should do + for now. + + -- Julien Cristau Mon, 04 May 2015 22:04:01 +0200 + +xorg-server (2:1.17.1-0ubuntu6) wily; urgency=medium + + * No change rebuild against Mir 0.14.0 + + -- Robert Ancell Thu, 16 Jul 2015 10:37:45 +1200 + +xorg-server (2:1.17.1-0ubuntu5) wily; urgency=medium + + * debain/patches/xmir.patch: + - Update from git branch, now builds against Mir 0.14.0 + * debian/patches/xmir-rootless.patch: + - Split out rootless support which requires more extensive changes to + existing X code. + * debian/control: + - Add build-depends on mir-client-platform-mesa-dev + + -- Robert Ancell Mon, 13 Jul 2015 11:33:23 +1200 + +xorg-server (2:1.17.1-0ubuntu4) wily; urgency=medium + + * debian/control: + - Rename xserver-xorg-xmir to xmir + - Build build-depends on libmirclient to 0.13.1 + * debian/xmir.install: + * debian/patches/xmir.patch: + - Use new XMir implementation + + -- Robert Ancell Wed, 03 Jun 2015 14:21:10 +1200 + +xorg-server (2:1.17.1-0ubuntu3) vivid; urgency=medium + + * Add a patch to fix vesa int10 failure. (LP: #1433198) + + -- Maarten Lankhorst Thu, 19 Mar 2015 10:13:08 +0100 + +xorg-server (2:1.17.1-0ubuntu2) vivid; urgency=medium + + * Use conflicts/replaces on modesetting. + + -- Maarten Lankhorst Thu, 12 Mar 2015 16:56:38 +0100 + +xorg-server (2:1.17.1-0ubuntu1) vivid; urgency=medium + + * Merge with 1.17 branch. + - ABI bumped. + - Patches refreshed. + - Modesetting moved to xorg-server. + + -- Maarten Lankhorst Thu, 12 Mar 2015 13:26:04 +0100 + +xorg-server (2:1.17.1-1) experimental; urgency=medium + + [ Maarten Lankhorst ] + * New upstream release 1.17.1. + * Enable the modesetting driver from xorg-server. + * Drop upstreamed patches: + - 09_Xserver-man-iglx.diff + * Disable 08_xfree86_fix_ia64_inx_outx.diff, no longer applies. + - Is this patch still needed because it seems to be handled now? + * Bump video abi to 19. + + [ Julien Cristau ] + * Bump debhelper compat level to 9. + * Update debian/copyright from upstream COPYING. + + -- Julien Cristau Sun, 03 May 2015 18:00:32 +0200 + +xorg-server (2:1.16.4-1) unstable; urgency=high + + * New upstream release + + dix: Allow zero-height PutImage requests (closes: #774308) + + os: Fix timer race conditions + + randr: attempt to fix primary on slave output + + config/udev: Respect seat assignments when assigned devices + + dix: make RegionInit legal C++ + + dri2: SourceOffloads may be for DRI3 only + + xkb: Don't swap XkbSetGeometry data in the input buffer + + xkb: Check strings length against request size (CVE-2015-0255) + + -- Julien Cristau Wed, 11 Feb 2015 01:26:07 +0100 + +xorg-server (2:1.16.2.901-1ubuntu3) vivid; urgency=medium + + * Fix FTBFS caused by the previous patch. + + -- Maarten Lankhorst Mon, 15 Dec 2014 16:11:00 +0100 + +xorg-server (2:1.16.2.901-1ubuntu2) vivid; urgency=medium + + * Fix FTBFS with the bool redefinition by undef'ing it after including mir. + + -- Maarten Lankhorst Sat, 13 Dec 2014 14:13:17 +0100 + +xorg-server (2:1.16.2.901-1ubuntu1) vivid; urgency=medium + + * Merge from released debian-unstable. + + -- Maarten Lankhorst Thu, 11 Dec 2014 16:17:07 +0100 + +xorg-server (2:1.16.2.901-1) unstable; urgency=medium + + * New upstream release + + fb: Fix Bresenham algorithms for commonly used small segments + + denial of service due to unchecked malloc in client authentication + [CVE-2014-8091] + + integer overflows calculating memory needs for requests [CVE-2014-8092, + CVE-2014-8093, CVE-2014-8094] + + out of bounds access due to not validating length or offset values in + requests [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] + See http://www.x.org/wiki/Development/Security/Advisory-2014-12-09/ + * Drop 06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff, + obsoleted by the upstream fix (closes: #752156) + * 09_Xserver-man-iglx.diff: adjust Xserver man page, we disable indirect glx + contexts by default. + + -- Julien Cristau Tue, 09 Dec 2014 22:04:20 +0100 + +xorg-server (2:1.16.1.901-1ubuntu2) vivid; urgency=medium + + * Re-enable rotation in optimus mode with SNA. (LP: #1386620) + + -- Maarten Lankhorst Thu, 06 Nov 2014 12:19:07 +0100 + +xorg-server (2:1.16.1.901-1ubuntu1) vivid; urgency=medium + + * Merge from released debian-unstable. + + -- Maarten Lankhorst Wed, 05 Nov 2014 15:38:44 +0100 + +xorg-server (2:1.16.1.901-1) unstable; urgency=medium + + * New upstream release. + + Xext/shm: Detach SHM segment after Pixmap is released + + Fix present_notify to return right away when querying current or past msc + + Fix present_pixmap when using present_notify_msc + + xkb: ignore floating slave devices when updating from master + + fb: Fix invalid bpp for 24bit depth window + + -- Julien Cristau Mon, 03 Nov 2014 21:36:14 +0100 + +xorg-server (2:1.16.1-1ubuntu1) vivid; urgency=medium + + * Merge from released debian-unstable. + * New upstream micro release. + - Import another patch from the 1.16 branch to fix KVM terminals. + This is an alternative, better, fix for (LP: #1318119). + * Remove outdated breaks/replaces, only affects the lts. + * Refresh patch series for 1.16.1 + - Drop parts of the series for primary platform devices, upstream. + + -- Maarten Lankhorst Mon, 27 Oct 2014 11:05:40 +0100 + +xorg-server (2:1.16.1-1) unstable; urgency=medium + + * Add my key to debian/upstream/signing-key.asc. + * New upstream release. + * Update help text since -iglx is now the default (cherry-pick from master) + + -- Julien Cristau Mon, 22 Sep 2014 22:12:20 +0200 + +xorg-server (2:1.16.0.901-1) unstable; urgency=medium + + * New upstream release + + glx/present: Only send GLX_BufferSwapComplete for PresentCompleteKindPixmap (closes: #761393) + * glx: Disable indirect GLX contexts by default (cherry-pick from master) + + -- Julien Cristau Tue, 16 Sep 2014 15:44:55 +0200 + +xorg-server (2:1.16.0-2) unstable; urgency=medium + + * xserver-xorg-dev: /usr/share/xserver-xorg/configure_flags.mk + Provide the flags how the xserver was configured (closes: #757246). Based + on Ubuntu patch by Matthias Klose. Thanks, Yaroslav Halchenko! + + -- Julien Cristau Sun, 31 Aug 2014 11:58:36 -0700 + +xorg-server (2:1.16.0-1ubuntu1) utopic; urgency=medium + + [ Maarten Lankhorst ] + * New upstream release. + - Refresh patches. + * Merge from released debian sid. + + [ Christopher James Halse Rogers ] + * Refresh XMir patch + + -- Maarten Lankhorst Wed, 10 Sep 2014 12:30:55 +0200 + +xorg-server (2:1.16.0-1) unstable; urgency=medium + + * New upstream release + + Revert "dix: fix up coordinate scaling when external monitors are + present" (closes: #754822) + + -- Julien Cristau Fri, 18 Jul 2014 00:17:11 +0200 + +xorg-server (2:1.15.99.904-1) unstable; urgency=medium + + * New upstream release candidate. + * Make xserver-common Multi-Arch: foreign (closes: #693922) + * Add debian/upstream/signing-key.asc, and add pgpsigurlmangle option to + debian/watch, to allow uscan to verify tarball signatures. + * Upload to unstable. + + -- Julien Cristau Tue, 08 Jul 2014 15:22:20 +0200 + +xorg-server (2:1.15.99.903-3) experimental; urgency=medium + + * Set shared memory dir to /dev/shm (closes: #747894). + * Disable dri3 on kfreebsd again to fix FTBFS. + + -- Julien Cristau Tue, 10 Jun 2014 21:50:06 +0200 + +xorg-server (2:1.15.99.903-2) experimental; urgency=medium + + * Enable xwayland for the main build on linux (closes: #747950). + + -- Julien Cristau Thu, 05 Jun 2014 21:58:45 +0200 + +xorg-server (2:1.15.99.903-1) experimental; urgency=medium + + * New upstream release candidate + - reverted quirk for "Evoluent VerticalMouse 3" (closes: #739537) + - Xi: block SIGIOs while copying device classes around (closes: #744303) + - fix FTBFS on arm + - add support for mips64 (closes: #725801) + * Enable dri3 on kfreebsd, now xtrans 1.3.3 supports fd passing. + * Enable glamor. + * Don't run tests in parallel. + * Bump video ABI and serverminver. + * Explicitly disable xwayland. + + -- Julien Cristau Thu, 05 Jun 2014 20:14:56 +0200 + +xorg-server (2:1.15.99.902-1) experimental; urgency=medium + + * New upstream snapshot. + + fix Xephyr -screen (closes: #742028) + * Refresh patches. + * Bump video ABI to 17, input ABI to 21. + * Bump xtrans requirement to 1.3.3. + * Bump xproto and fontsproto requirements. + + -- Julien Cristau Tue, 15 Apr 2014 08:35:26 +0200 + +xorg-server (2:1.15.1-0ubuntu9) utopic; urgency=medium + + * xserver-xorg-dev: /usr/share/xserver-xorg/configure_flags.mk + Provide the flags how the xserver was configured. + + -- Matthias Klose Wed, 30 Jul 2014 22:49:51 +0200 + +xorg-server (2:1.15.1-0ubuntu8) utopic; urgency=medium + + * debian/patches/xfree86-pci-bus-probe-non-seat0.patch + - Upstream patch to fix "No devices detected" error for seats + other than seat0. (LP: #1209008) + + -- Alberts Muktupāvels Tue, 01 Jul 2014 17:12:51 +0300 + +xorg-server (2:1.15.1-0ubuntu7) utopic; urgency=medium + + * Rebuild against Mir 0.4.0. + + -- Łukasz 'sil2100' Zemczak Wed, 02 Jul 2014 12:33:10 +0200 + +xorg-server (2:1.15.1-0ubuntu6) utopic; urgency=medium + + * ppc64el-endian-fix.patch: Fix PPC endian assumptions (LP: #1333422) + + -- Adam Conrad Mon, 23 Jun 2014 23:47:15 -0600 + +xorg-server (2:1.15.1-0ubuntu5) utopic; urgency=low + + * Add upstream patch to fix some valgrind issues. + - xi-dont-copy-too-much.patch + * Fix crash related to suspend/shutdown. (LP: #1208473) + - mi-dont-process-disabled.patch + + -- Maarten Lankhorst Tue, 20 May 2014 11:32:41 +0200 + +xorg-server (2:1.15.1-0ubuntu4) utopic; urgency=low + + * Resize touch event history if the array is filled up. + - xi2-resize-touch.patch + + -- Maarten Lankhorst Wed, 07 May 2014 13:52:59 +0200 + +xorg-server (2:1.15.1-0ubuntu3) utopic; urgency=medium + + * Revive the old drm_device_keep_trying.patch. + - Removing the call to get_drm_info fixes switching to guest sessions. + + -- Maarten Lankhorst Mon, 28 Apr 2014 10:06:21 +0200 + +xorg-server (2:1.15.1-0ubuntu2) trusty; urgency=medium + + * Disable support for rotations and transforms + on gpu screens for now. (LP: #1308515) + + -- Maarten Lankhorst Wed, 16 Apr 2014 10:14:39 +0200 + +xorg-server (2:1.15.1-0ubuntu1) trusty; urgency=medium + + * Merge from unreleased debian unstable. + - Unbreaks KDE desktop effects on IVB+. (LP: #1294666) + + -- Maarten Lankhorst Mon, 14 Apr 2014 12:57:12 +0200 + +xorg-server (2:1.15.1-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Mon, 14 Apr 2014 12:52:18 +0200 + +xorg-server (2:1.15.0.901-1) unstable; urgency=medium + + [ Robert Millan ] + * Add devd input backend for kFreeBSD, and use it instead of hal (closes: + #736765, #710196, #683833) + + [ Julien Cristau ] + * New upstream release + + -- Julien Cristau Mon, 31 Mar 2014 12:19:57 +0200 + +xorg-server (2:1.15.0-1ubuntu7) trusty; urgency=medium + + * Fix crash in RRCrtcDetachScanoutPixmap. (LP: #1280743) + + -- Maarten Lankhorst Thu, 13 Mar 2014 13:10:52 +0100 + +xorg-server (2:1.15.0-1ubuntu6) trusty; urgency=low + + * Add a small patch to hopefully fix FTBFS on ppc64el. + * Add breaks/replaces on xserver-common-lts-* to fix upgrades from precise. + + -- Maarten Lankhorst Thu, 13 Feb 2014 14:06:11 +0100 + +xorg-server (2:1.15.0-1ubuntu5) trusty; urgency=medium + + * Another no-change rebuild against latest Mir + + -- Łukasz 'sil2100' Zemczak Wed, 12 Feb 2014 18:33:20 +0100 + +xorg-server (2:1.15.0-1ubuntu4) trusty; urgency=low + + * Only set RR caps that are appropriate to main/gpu screen. (LP: #1277014) + + -- Maarten Lankhorst Mon, 10 Feb 2014 18:51:19 +0100 + +xorg-server (2:1.15.0-1ubuntu3) trusty; urgency=low + + * No-change rebuild against correct libgcrypt. + + -- Maarten Lankhorst Thu, 06 Feb 2014 09:38:39 +0000 + +xorg-server (2:1.15.0-1ubuntu2) trusty; urgency=medium + + * No-change rebuild against latest Mir + + -- Ricardo Salveti de Araujo Tue, 04 Feb 2014 20:35:47 -0200 + +xorg-server (2:1.15.0-1ubuntu1) trusty; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Tue, 04 Feb 2014 15:45:00 +0000 + +xorg-server (2:1.15.0-2) unstable; urgency=medium + + [ Julien Cristau ] + * Bump debhelper compat level to 7. + * Upload to unstable. + + [ Yaroslav Halchenko ] + * Adding xorg-server-source binary package to provide a tarball with + original (patched, autoreconfed) sources of the xserver (Closes: + #730552) + + -- Julien Cristau Thu, 06 Feb 2014 16:14:15 +0100 + +xorg-server (2:1.15.0-1) experimental; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Mon, 06 Jan 2014 11:00:39 +0100 + +xorg-server (2:1.14.99.904-2) experimental; urgency=medium + + * Pass VERBOSE=1 to make check to make debugging test failures possible. + * Disable dri3 on kfreebsd. xtrans doesn't enable fd passing there yet. + + -- Julien Cristau Sat, 14 Dec 2013 18:16:17 +0100 + +xorg-server (2:1.14.99.904-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate. + * Update (build-)dependencies: + - bump x11proto-xext-dev, x11proto-gl-dev, xtrans-dev, libgl1-mesa-dev + - add x11proto-present-dev, x11proto-dri3-dev, libxshmfence-dev + * Enable dri3 (on !hurd) and present extensions. + * Point to http://www.debian.org/support instead of the uploader's email + address in the Xorg log. + + [ Maarten Lankhorst ] + * Disable xorg-server's linux acpi and apm support. Can only cause bugs. + + -- Julien Cristau Thu, 12 Dec 2013 12:11:14 +0100 + +xorg-server (2:1.14.99.3-1) experimental; urgency=low + + * New upstream snapshot. + * Drop patches applied upstream: + - 02_improve-posix-saved-ids-check.diff + - 04_hashtabletest-s390x.diff + - 10_Include-missing-selection-h.diff + - os-move-arpa-inet.h-for-any-win32-system.patch + - xfree86-hurd-include-hurd.h.patch + * Update build-deps: + - bump libx11-dev to 2:1.6 for _XEatDataWords + - require xcb bits for Xephyr + - xserver-xorg-dev depends on x11proto-xf86bigfont-dev + * Bump ABI versions (should have been done upstream, but hasn't yet). + * Stop building Xfbdev. + * Reduce noise from dh_install --list-missing by deleting some files from the + udeb build after make install. + * Run abibumpcheck on build instead of clean so it's done on a patched tree. + * Remove Drew and Cyril from Uploaders. + + -- Julien Cristau Mon, 21 Oct 2013 23:46:34 +0200 + +xorg-server (2:1.14.5-1ubuntu4) trusty; urgency=medium + + * Build xserver-xorg-core-udeb on arm64 and ppc64el. + + -- Colin Watson Mon, 03 Feb 2014 15:44:50 +0000 + +xorg-server (2:1.14.5-1ubuntu3) trusty; urgency=low + + * Add a workaround for a linker crash bug. (LP: #1266492) + + -- Maarten Lankhorst Wed, 29 Jan 2014 16:13:36 +0100 + +xorg-server (2:1.14.5-1ubuntu2) trusty; urgency=medium + + * Don't build XMir on ppc64el. + + -- Matthias Klose Sun, 15 Dec 2013 22:42:40 +0100 + +xorg-server (2:1.14.5-1ubuntu1) trusty; urgency=low + + * Merge from released debian-unstable. + * Refresh xrandr-rroutputchanged-main.patch. + + -- Maarten Lankhorst Fri, 13 Dec 2013 11:24:16 +0100 + +xorg-server (2:1.14.5-1) unstable; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Fri, 13 Dec 2013 11:10:46 +0100 + +xorg-server (2:1.14.4.901-0ubuntu2) trusty; urgency=low + + * Re-apply security update again. + + -- Maarten Lankhorst Tue, 10 Dec 2013 15:25:04 +0100 + +xorg-server (2:1.14.4.901-0ubuntu1) trusty; urgency=low + + * New upstream release with some optimus fixes. + * Include a patch to fix gpu screen output hotplugging. (LP: #1259561) + + -- Maarten Lankhorst Tue, 10 Dec 2013 15:09:07 +0100 + +xorg-server (2:1.14.4-1ubuntu2) trusty; urgency=low + + * SECURITY UPDATE: unsafe use of xkb cache files + - debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch: + updated to not use xkb cache files in /tmp when running a non-root + server. + - CVE-2013-1056 + + -- Marc Deslauriers Fri, 06 Dec 2013 11:15:23 -0500 + +xorg-server (2:1.14.4-1ubuntu1) trusty; urgency=low + + * Merge released debian-unstable. + * Cherry-pick fix to sync code. (LP: #1238410) + + -- Maarten Lankhorst Wed, 04 Dec 2013 13:54:02 +0100 + +xorg-server (2:1.14.4-1) unstable; urgency=low + + * New upstream release. + * Drop upstreamed patches. + - 02_improve-posix-saved-ids-check.diff + - 04_hashtabletest-s390x.diff + - 10_Include-missing-selection-h.diff + + -- Maarten Lankhorst Wed, 04 Dec 2013 13:09:36 +0100 + +xorg-server (2:1.14.3-5ubuntu1) trusty; urgency=low + + * Merge released debian-unstable to fix mesa-10 loading. + * Drop avoid-use-after-free.diff, upstreamed. + + -- Maarten Lankhorst Mon, 25 Nov 2013 16:17:49 +0100 + +xorg-server (2:1.14.3-5) unstable; urgency=low + + * Cherry-pick a upstream commit to fix mesa-10 driver loading. + + -- Maarten Lankhorst Mon, 25 Nov 2013 14:52:54 +0100 + +xorg-server (2:1.14.3-3ubuntu4) trusty; urgency=low + + * No-change rebuild for xmir to use the new Mir ABI. + + -- Mathieu Trudel-Lapierre Mon, 28 Oct 2013 13:36:02 -0400 + +xorg-server (2:1.14.3-3ubuntu3) trusty; urgency=low + + * pixman-validate.patch: Do not render invalid trapezoids. (LP: #1197921) + + -- Maarten Lankhorst Wed, 23 Oct 2013 12:11:27 +0200 + +xorg-server (2:1.14.3-3ubuntu2) saucy-proposed; urgency=low + + * avoid-use-after-free.diff: Fix CVE-2013-4396. + + -- Timo Aaltonen Tue, 15 Oct 2013 12:05:48 +0300 + +xorg-server (2:1.14.3-3ubuntu1) saucy; urgency=low + + * Merge from unreleased debian git. + * rrcrtc-brackets-are-hard.patch: Replace xf86-detach-scanout.patch + with this patch from Fedora. Should fix crashers on hybrid systems + (LP: #1210025) + * Drop include-selection-h.patch, not needed anymore. + + -- Timo Aaltonen Thu, 03 Oct 2013 15:30:22 +0300 + +xorg-server (2:1.14.3-4) unstable; urgency=high + + [ Timo Aaltonen ] + * rules: Drop defoma support from the font path. (Closes: #689233, + LP: #986061) + + [ Julien Cristau ] + * Avoid use-after-free in dix/dixfonts.c: doImageText(). Addresses + CVE-2013-4396. + + -- Julien Cristau Sat, 05 Oct 2013 15:57:55 +0200 + +xorg-server (2:1.14.3-3) unstable; urgency=low + + * Upload to unstable. + + -- Julien Cristau Sun, 22 Sep 2013 16:32:19 +0200 + +xorg-server (2:1.14.3-2) experimental; urgency=low + + * Delete test-driver on clean. + * Add a couple patches to fix FTBFS on hurd (closes: #720736). Thanks, Pino + Toscano! + + -- Julien Cristau Fri, 20 Sep 2013 00:21:41 +0200 + +xorg-server (2:1.14.3-1) experimental; urgency=low + + [ Julien Cristau ] + * Remove the Replaces: xdmx from xdmx-tools, that was before lenny. That + change was done in the 1.10.x timeframe and then lost when moving to + 1.11.x. + + [ Michele Cane ] + * New upstream release. + + -- Julien Cristau Sun, 15 Sep 2013 23:57:26 +0200 + +xorg-server (2:1.14.2.901-2ubuntu7) saucy; urgency=low + + * Make glx link against glapi for the dispatch table symbols. (LP: #1232000) + * Cherry pick a few related glx fixes from upstream. + + -- Maarten Lankhorst Tue, 01 Oct 2013 13:30:59 +0200 + +xorg-server (2:1.14.2.901-2ubuntu6) saucy; urgency=low + + * xmir.patch: Drop vestigial libatomic-ops dependency, fixing + driver FTBFS. + + -- Christopher James Halse Rogers Thu, 26 Sep 2013 08:29:44 -0700 + +xorg-server (2:1.14.2.901-2ubuntu5) saucy; urgency=low + + * xmir.patch: Drop input on loss of focus. Fixes "I'm sending all my + passwords to IRC when I switch to a VT" with associated + unity-system-compositor change. (LP: #1192843) + * xmir.patch: Add DPMS support (LP: #1193222) + * Drop os-use-libunwind-to-generate-backtraces.patch; this was not enabled + due to libunwind8-dev not shipping a pkg-config file. Now that it does, + this causes FTBFS on armhf. + + -- Christopher James Halse Rogers Tue, 24 Sep 2013 08:58:45 -0700 + +xorg-server (2:1.14.2.901-2ubuntu4) saucy; urgency=low + + * xmir.patch: Add XRandR support + * Bump serverminver for XMir API changes + + -- Christopher James Halse Rogers Thu, 29 Aug 2013 19:42:41 +1000 + +xorg-server (2:1.14.2.901-2ubuntu3) saucy; urgency=low + + * xmir.patch: Use the API we have, not the API we've documented + + -- Christopher James Halse Rogers Thu, 22 Aug 2013 15:18:55 +1000 + +xorg-server (2:1.14.2.901-2ubuntu2) saucy; urgency=low + + * xmir.patch: Update for new API + + -- Christopher James Halse Rogers Thu, 22 Aug 2013 14:23:40 +1000 + +xorg-server (2:1.14.2.901-2ubuntu1) saucy; urgency=low + + * Merge from released debian-experimental. + * Drop upstreamed prime patches. + * Refresh 228_autobind_gpu.patch. + * Pick up some more input fixes from upstream. + + -- Maarten Lankhorst Wed, 14 Aug 2013 10:52:17 +0200 + +xorg-server (2:1.14.2.901-2) experimental; urgency=low + + * Use libbsd-overlay to get missing declarations on kfreebsd and fix FTBFS. + Require dpkg-dev 1.16.1. + * Also improve POSIX_SAVED_IDS check to work on kbsd. + * Link against libnettle.a, to unbreak the udeb (there's no libnettle udeb). + * Fix a test failure on 64bit big-endian (s390x, ppc64, sparc64). + + -- Julien Cristau Sat, 03 Aug 2013 18:17:30 +0200 + +xorg-server (2:1.14.2.901-1) experimental; urgency=low + + * New upstream release + + [ Maarten Lankhorst ] + * Bump minimum required abi, randr, dri2 and gl protos. + * Remove upstreamed patches. + - 02_Add-libnettle-as-option-for-sha1.diff + - 04_int10-fix-pci_device_read_rom-usage.diff + - 07_Revert-kinput-allocate-enough-space-for-null-charact.diff + * Bump x11proto-input-dev and libpixman-1-dev minimum versions. + + [ Timo Aaltonen ] + * Refresh 02_Add-libnettle-as-option-for-sha1.diff. + * Remove 03_fix-panning.diff, upstream + * Refresh 04_int10-fix-pci_device_read_rom-usage.diff. + * Drop 09_EXA-Track...diff, upstream. + * control: Mark xvfb as M-A: foreign. + * control: Bump inputproto build-dep to 2.3. + + [ Robert Hooker ] + * Update to a newer git snapshot, 7fe5e6dfa5c1e71 + * Bump input ABI version in serverminver + * Bump libxi-dev build requirement to 2:1.6.99.1 + + [ Julien Cristau ] + * Merge sid branch up to 2:1.12.4-6.1. + * Drop old --disable-builddocs, --disable-xcalibrate configure options from + d/rules. + * Make build-deps match xserver-xorg-dev dependencies and configure checks. + + -- Julien Cristau Sat, 27 Jul 2013 13:18:28 +0200 + +xorg-server (2:1.14.2-0ubuntu9) saucy; urgency=low + + [ Maarten Lankhorst ] + * Fix crash in RRCrtcDetachScanoutPixmap. + * Add xmir module to xserver-xorg-core-dbg. + * Fix xf86DeleteDriver infinite loop. (LP: 1208715) + + [ Christopher James Halse Rogers ] + * Fix damage reporting (LP: 1206744) + + -- Christopher James Halse Rogers Tue, 06 Aug 2013 16:11:47 +1000 + +xorg-server (2:1.14.2-0ubuntu8) saucy; urgency=low + + * Don't build XMir on AArch64. + + -- Matthias Klose Mon, 05 Aug 2013 15:51:01 +0200 + +xorg-server (2:1.14.2-0ubuntu7) saucy; urgency=low + + * Don't have the -dev package depending on libmirclient-dev on powerpc + as unavailable + + -- Didier Roche Mon, 05 Aug 2013 12:33:48 +0200 + +xorg-server (2:1.14.2-0ubuntu6) saucy; urgency=low + + * As we don't build XMir on PPC we should not try to build the + xserver-xorg-xmir package, either. + + -- Christopher James Halse Rogers Mon, 05 Aug 2013 19:09:47 +1000 + +xorg-server (2:1.14.2-0ubuntu5) saucy; urgency=low + + * rules,control: Restrict XMir build to !powerpc, as we don't build Mir there + + -- Christopher James Halse Rogers Mon, 05 Aug 2013 18:46:43 +1000 + +xorg-server (2:1.14.2-0ubuntu4) saucy; urgency=low + + * Add xmir.patch; First upload with XMir support. + + -- Christopher James Halse Rogers Thu, 01 Aug 2013 13:00:41 +1000 + +xorg-server (2:1.14.2-0ubuntu3) saucy; urgency=low + + * Oops, refresh xf86-detach-scanout, embarassing bug in the for check. + + -- Maarten Lankhorst Tue, 30 Jul 2013 12:51:40 +0200 + +xorg-server (2:1.14.2-0ubuntu2) saucy; urgency=low + + * Add support for Aarch64. + + -- Matthias Klose Wed, 24 Jul 2013 14:24:25 +0200 + +xorg-server (2:1.14.2-0ubuntu1) saucy; urgency=low + + * New upstream release. (LP: #1156498) + * Remove upstreamed patch. + - xf86setdesired-hybrid.patch + + -- Maarten Lankhorst Tue, 16 Jul 2013 09:36:06 +0200 + +xorg-server (2:1.14.1-0ubuntu1) saucy; urgency=low + + * Fix null pointer deref on logout. (LP: #1194343) + + -- Maarten Lankhorst Thu, 11 Jul 2013 16:52:28 +0200 + +xorg-server (2:1.14.1-0ubuntu0.8) saucy; urgency=low + + * Use correct version for libxfixes3. + + -- Maarten Lankhorst Wed, 03 Jul 2013 12:03:57 +0200 + +xorg-server (2:1.14.1-0ubuntu0.7) saucy; urgency=low + + * Add build-depends on recent enough libxi-dev and libxfixes-dev + for the new pointer barriers. + * Add breaks on old libxi6, libxfixes3, unity. + + -- Maarten Lankhorst Wed, 03 Jul 2013 10:37:30 +0200 + +xorg-server (2:1.14.1-0ubuntu0.6) saucy; urgency=low + + * Add patch to fix nvidia regression. + - xf86-inactive-gpuscreen.patch + + -- Maarten Lankhorst Mon, 17 Jun 2013 14:18:35 +0200 + +xorg-server (2:1.14.1-0ubuntu0.5) saucy; urgency=low + + * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546) + - xf86-fixup-detection.patch + + -- Maarten Lankhorst Thu, 13 Jun 2013 13:03:17 +0200 + +xorg-server (2:1.14.1-0ubuntu0.4) raring; urgency=low + + * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035) + - xf86-detach-scanout.patch + * Add patch to fix build error on saucy. + - include-selection-h.patch + + -- Maarten Lankhorst Tue, 28 May 2013 16:13:24 +0200 + +xorg-server (2:1.14.1-0ubuntu0.3) raring; urgency=low + + * Add patch to fixup optimus again. + - xf86-dont-enable-gpuscreens.patch + + -- Maarten Lankhorst Wed, 01 May 2013 09:38:59 +0200 + +xorg-server (2:1.14.1-0ubuntu0.2) raring; urgency=low + + * Add patch to run on outputless hybrid systems again. + - xf86setdesired-hybrid.patch + + -- Maarten Lankhorst Mon, 29 Apr 2013 11:29:10 +0200 + +xorg-server (2:1.14.1-0ubuntu0.1) raring; urgency=low + + [ Timo Aaltonen ] + * Merge from unreleased debian git. + * 500_pointer_barrier_thresholds.diff: Dropped, implemented upstream. + * Dropped upstreamed patches: + 165_man_xorg_conf_no_device_ident.patch + 233-xf86events-valgrind.patch + 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch + * Dropped drm_device_keep_trying.patch, not needed anymore. + + [ Bryce Harrington ] + * 157_check_null_modes.patch: Dropped, patch included upstream. + * 162_null_crtc_in_rotation.patch: Dropped, no longer relevant + (see LP: 139990) + * 167_nullptr_xisbread.patch: Dropped, fixed differently upstream. + + [ Maarten Lankhorst ] + * Update to 1.14.0 release. + + -- Maarten Lankhorst Wed, 06 Mar 2013 14:49:21 +0100 + +xorg-server (2:1.13.3-0ubuntu13) saucy; urgency=low + + * Re-enable xf86-fixup-detection.patch. + * Add patch to fix nvidia regression. + - xf86-inactive-gpuscreen.patch + + -- Maarten Lankhorst Mon, 17 Jun 2013 14:16:05 +0200 + +xorg-server (2:1.13.3-0ubuntu12) saucy; urgency=low + + * Disable xf86-fixup-detection.patch for now as it breaks PRIME + with nvidia. + + -- Alberto Milone Fri, 14 Jun 2013 17:21:16 +0200 + +xorg-server (2:1.13.3-0ubuntu11) saucy; urgency=low + + * Add patch to fix device enumeration with nvidia drivers. (LP: #1190546) + - xf86-fixup-detection.patch + + -- Maarten Lankhorst Thu, 13 Jun 2013 13:00:58 +0200 + +xorg-server (2:1.13.3-0ubuntu10) saucy; urgency=low + + * Add patch to fix DPMS. (LP: #1184999) + - include-GPU-screens-in-DPMS-code.patch + * Add patch to fix crash on hybrid systems during shutdown. (LP: #1185035) + - xf86-detach-scanout.patch + + -- Maarten Lankhorst Tue, 28 May 2013 16:12:12 +0200 + +xorg-server (2:1.13.3-0ubuntu9) saucy; urgency=low + + * Cherry-pick patch from 1.14 to fix DRI1 regression. (LP: #1083032) + - dri1-fix-dri1-startup-since-459c6da0f907ba33d733c7e6.patch + + -- Tormod Volden Sun, 12 May 2013 11:30:46 +0200 + +xorg-server (2:1.13.3-0ubuntu8) saucy; urgency=low + + * Fixup build error on saucy. + + -- Maarten Lankhorst Wed, 08 May 2013 14:02:12 +0200 + +xorg-server (2:1.13.3-0ubuntu7) saucy; urgency=low + + * Add patch to fixup optimus again. + - xf86-dont-enable-gpuscreens.patch + + -- Maarten Lankhorst Wed, 01 May 2013 10:35:55 +0200 + +xorg-server (2:1.13.3-0ubuntu6) raring; urgency=low + + * SECURITY UPDATE: input event leak via inactive VT + - debian/patches/CVE-2013-1940.patch: fix flush input to work with + Linux evdev devices in hw/xfree86/os-support/shared/posix_tty.c. + - CVE-2013-1940 + + -- Jamie Strandboge Wed, 17 Apr 2013 09:41:17 -0500 + +xorg-server (2:1.13.3-0ubuntu5) raring; urgency=low + + [ Bryce Harrington ] + * Add no-nv.patch: Don't autoprobe -nv on linux. + * Refresh drm_device_keep_trying.patch (LP: #1161981) + - Set empty busid for usb devices + - Parse pci path more strictly. + - Make platform devices work correctly, try to obtain busid from + path if possible. + - Fallback if not possible (tegra). + + -- Maarten Lankhorst Mon, 08 Apr 2013 11:40:26 +0200 + +xorg-server (2:1.13.3-0ubuntu4) raring; urgency=low + + * Do not bother registering xv/xvmc on gpu screens. + - xfree86-no-xv-for-gpuscreens.patch + * Re-enable GLX on Xephyr. (LP: #1079096) + - xephyr-glx-register.patch + + -- Maarten Lankhorst Tue, 26 Mar 2013 16:16:14 +0100 + +xorg-server (2:1.13.3-0ubuntu3) raring; urgency=low + + * Refresh autoconfig-fixup-tell-changed-so-randr-clients-can-t.patch + - Unbind offload sink and render slave simultaneously. + This prevents a use-after-free bug. + * Add config-add-no-removal.patch (LP: #1157614) + - Do not call device_remove when a device is hotplugged. + * Refresh drm_device_keep_trying.patch + - There is no need for drm master here. This might + reopen LP #982889, but I do not think spinning here + :is the correct answer. + + -- Maarten Lankhorst Thu, 21 Mar 2013 15:40:42 +0100 + +xorg-server (2:1.13.3-0ubuntu2) raring; urgency=low + + * Add patch to improve backtraces in the Xorg log. + - os-use-libunwind-to-generate-backtraces.patch + + -- Maarten Lankhorst Thu, 14 Mar 2013 16:12:16 +0100 + +xorg-server (2:1.13.3-0ubuntu1) raring; urgency=low + + * New upstream release. + * Drop patches applied upstream. + - 237_dix_save_touchpoint_last_coords_before_transform.patch + - randr-cleanup-provider-properly.patch + * Rework drm_device_keep_trying.patch (LP: #982889) + + -- Maarten Lankhorst Thu, 14 Mar 2013 08:41:51 +0100 + +xorg-server (2:1.13.2-0ubuntu3) raring; urgency=low + + * Add drm_device_keep_trying.patch: When kernel reports drm device is + not available, don't give up immediately, but keep retrying for a + little bit. Fixes boot failures due to a race condition with plymouth + or the kernel. Typical symptom is xserver error exit, "Cannot run in + framebuffer mode" and Xorg.0.log messages about "setversion 1.4 + failed". + (LP: #982889) + + -- Bryce Harrington Tue, 19 Feb 2013 07:58:24 -0800 + +xorg-server (2:1.13.2-0ubuntu2) raring; urgency=low + + * Restore selinux support now that audit has been promoted to main. + + -- Adam Conrad Sat, 09 Feb 2013 00:03:45 -0700 + +xorg-server (2:1.13.2-0ubuntu1) raring; urgency=low + + * New upstream release. + * control: Mark xvfb M-A: foreign. + * Refresh autobind patch from fedora, and cherry-pick some fixes from them for + reverse-optimus and hotplugging. + + -- Timo Aaltonen Tue, 29 Jan 2013 17:23:44 +0200 + +xorg-server (2:1.13.1.901-0ubuntu2) raring; urgency=low + + * Add 237_dix_save_touchpoint_last_coords_before_transform.patch: + Fix sensitive touch settings on Nexus 7 when input is transformed. + (LP: #1075415, #1076567, #1076627) + + -- Bryce Harrington Tue, 22 Jan 2013 13:51:16 -0800 + +xorg-server (2:1.13.1.901-0ubuntu1) raring; urgency=low + + * Merge from unreleased debian git. + + -- Timo Aaltonen Tue, 08 Jan 2013 16:40:30 +0200 + +xorg-server (2:1.13.0.902-0ubuntu1) raring; urgency=low + + [ Timo Aaltonen ] + * Merge from unreleased debian git. + * Dropped upstream patches: + - 229_udev-fix.diff + - 231-scan-pci-after-probing-devices.patch + - 235-composite-tracking.patch + - 237-dix-set-the-device-transformation-matrix.patch + + [ Maarten Lankhorst ] + * Dropped upstream patches: + - 230-fix-compat-output-selection.patch + * Merge 1.13.1.rc2 from unreleased debian git. + * Bump ABI_VIDEODRV_VERSION to 13.1 + - xf86UpdateDesktopDimensions is newly exported for nvidia blob + + -- Maarten Lankhorst Fri, 07 Dec 2012 09:14:37 +0100 + +xorg-server (2:1.13.0-0ubuntu8) raring; urgency=low + + * Revert the change to 500_pointer_barrier_thresholds.diff, causes + issues with unity launcher. + + -- Timo Aaltonen Mon, 19 Nov 2012 12:15:49 +0200 + +xorg-server (2:1.13.0-0ubuntu7) raring; urgency=low + + [ Maarten Lankhorst ] + * Add 233-xf86events-valgrind.patch to fix a xserver corruption + when acpid is stopped before Xorg is. + (LP: #1070481) + * Add 235-composite-tracking.patch to fix exa corruption. + (LP: #1010794) + + [ Bryce Harrington ] + * Add 236-use-fbdev-for-poulsbo-oaktrail-medfield.patch: Never use Intel + driver on Poulsbo/Oaktrail/Medfield. Thanks to Matthias Klumpp. + (LP: #1069031) + * Add 237-dix-set-the-device-transformation-matrix.patch: Fix pointer + jumping with absolute pointing device. Initializes device + transformation matrix to an identity matrix. Thanks to a7x. + (LP: #1041063) + + [ Tim Lunn ] + * 500_pointer_barrier_thresholds.diff: Update to fix gaps above + barriers at edge of screen + (LP: #1073724) + + -- Bryce Harrington Fri, 16 Nov 2012 11:37:26 -0800 + +xorg-server (2:1.13.0-0ubuntu6) quantal; urgency=low + + [ Timo Aaltonen ] + * patches/series: Reorganize our patches in categories in order to + make reviewing and rebasing easier. + + [ Maarten Lankhorst ] + * add 232-xf86compatoutput-valgrind.patch to silence a valgrind error + + -- Timo Aaltonen Mon, 08 Oct 2012 17:58:54 +0300 + +xorg-server (2:1.13.0-0ubuntu5) quantal; urgency=low + + * Update 228_autobind_gpu.patch to not crash when the device has no + randr provider. (LP: #1054051) + + -- Timo Aaltonen Tue, 25 Sep 2012 09:46:44 +0300 + +xorg-server (2:1.13.0-0ubuntu4) quantal; urgency=low + + * Add patches to fix issues with hybrid graphics: + - 230-fix-compat-output-selection.patch + Fix compat output selection when the GPU has no outputs + (LP: #1043458) + - 231-scan-pci-after-probing-devices.patch + Fix a race condition when dynamically powering off secondary GPU's + + -- Timo Aaltonen Thu, 20 Sep 2012 14:34:45 +0300 + +xorg-server (2:1.13.0-0ubuntu3) quantal; urgency=low + + * Try again with the right hotplug patch. + + -- Timo Aaltonen Mon, 17 Sep 2012 16:24:29 +0300 + +xorg-server (2:1.13.0-0ubuntu2) quantal; urgency=low + + [ Maarten Lankhorst ] + * Add patch to autobind gpu's + + [ Timo Aaltonen ] + * Add a patch to fix drm device hotplugging. + + -- Timo Aaltonen Mon, 17 Sep 2012 15:58:32 +0300 + +xorg-server (2:1.13.0-0ubuntu1) quantal; urgency=low + + * Merge from unreleased debian git. + + -- Timo Aaltonen Thu, 06 Sep 2012 12:25:51 +0300 + +xorg-server (2:1.12.99.905-0ubuntu3) quantal; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Now that the modesetting is part of xserver-xorg-video-all, enable the + arm specific drivers before modesetting is included, otherwise it'll + always be the default, even if we have arm-compatible drivers available + at the system (LP: #1041686) + + -- Ricardo Salveti de Araujo Sat, 25 Aug 2012 19:19:16 -0300 + +xorg-server (2:1.12.99.905-0ubuntu2) quantal; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Adding support for omapdrm based devices (using the omap xorg driver), + and make xorg to use the recently added platform probe functions, by + trying to probe the driver in case there's only one platform device + available and without a valid busID (case of Omap3 and Omap4 based + devices) (LP: #1040405) + + -- Ricardo Salveti de Araujo Thu, 23 Aug 2012 01:20:03 -0300 + +xorg-server (2:1.12.99.905-0ubuntu1) quantal; urgency=low + + [ Robert Hooker ] + * New upstream release snapshot (1.13-rc5) + + -- Timo Aaltonen Wed, 22 Aug 2012 18:29:26 +0300 + +xorg-server (2:1.12.99.904-0ubuntu2) quantal; urgency=low + + [ Maarten Lankhorst ] + * Remove disabled and unwanted patches + - 13_debian_add_xkbpath_env_variable.diff + - 200_randr-null.patch + - 217_revert_bgnonevisitwindow.patch + - 219_fedora-pointer-barriers.diff + + [ Christopher James Halse Rogers ] + * Bump build-dep on libdrm to 2.4.38-0ubuntu2 and rebuild to pick up correct + libdrm2-udeb dependencies on xserver-xorg-core-udeb + + -- Christopher James Halse Rogers Tue, 21 Aug 2012 16:07:00 +1000 + +xorg-server (2:1.12.99.904-0ubuntu1) quantal-proposed; urgency=low + + [ Maarten Lankhorst ] + * New upstream release snapshot (on the way to 1.13). + * Remove 172_cwgetbackingpicture_nullptr_check.patch: + - Code is removed now that XAA is gone. + + -- Timo Aaltonen Wed, 08 Aug 2012 14:35:03 +0300 + +xorg-server (2:1.12.99.904-1) UNRELEASED; urgency=low + + * New upstream release snapshot (on the way to 1.13). + * Bump minimum required abi, randr, dri2 and gl protos. + + -- Maarten Lankhorst Thu, 12 Jul 2012 13:54:50 +0200 + +xorg-server (2:1.12.99.902-0ubuntu1) quantal-proposed; urgency=low + + [ Maarten Lankhorst ] + * New upstream release snapshot (on the way to 1.13). + - Fixes QT5 app segfaults (LP: #1015292) + * Bump minimum required abi, randr, dri2 and gl protos. + * Refreshed patches to apply on x1.13 + * Remove patches merged upstream: + - 508_device_off_release_buttons.patch + - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch + - 511-dix-move-freeing-the-sprite-into-a-function.patch + - 512-dix-free-the-sprite-when-disabling-the-device.patch + - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch + - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch + - 515-dix-disable-all-devices-before-shutdown.patch + + [ Christopher James Halse Rogers ] + * debian/patches/100_rethrow_signals.patch: + - Drop, in favour of getting LightDM to pass -core to the server. This + upstream mechanism is significantly more reliable at dumping core in + my testing. We may later wish to improve this with some processing in + the apport hook. + + -- Julien Cristau Sat, 27 Jul 2013 13:18:28 +0200 + + +xorg-server (2:1.12.4-6.1) unstable; urgency=low + + * Non-maintainer upload. + * 10_Include-missing-selection-h.diff: Fix FTBFS with GCC 4.8. Include + selection.h in dix/window.c for the missing DeleteWindowFromAnySelections + function prototype. Patch by Gerardo Malazdrewicz (closes: #701372) + + -- Michael Biebl Thu, 25 Jul 2013 19:45:29 +0200 + +xorg-server (2:1.12.4-6) unstable; urgency=low + + * Touch: Fix duplicate TouchBegin selection with virtual devices + (closes: #696272) + * Xi: Don't check for TOUCH_END, it's never set + * Xi: Update the device after delivering the emulated pointer event + (closes: #702662) + * xf86: fix flush input to work with Linux evdev devices. Addresses + CVE-2013-1940. + + -- Julien Cristau Wed, 17 Apr 2013 12:12:30 +0200 + +xorg-server (2:1.12.4-5) unstable; urgency=low + + * dmx: don't include dmx-config.h from xdmxconfig (closes: #495816) + * xfree86: bail on misformed acpi strings (closes: #696110) + * dix: don't allow overriding a grab with a different type of grab + * dix: Set focus field on XI2 crossing events (closes: #699907) + * Link against -lbsd on kfreebsd. This gives us access to getpeereid(), and + makes MIT-SHM work with non-world-accessible segments (closes: #701469). + + -- Julien Cristau Sat, 23 Feb 2013 15:37:44 +0100 + +xorg-server (2:1.12.4-4) unstable; urgency=low + + * Fix memory leak in libnettle sha1 patch. Thanks, Yaakov Selkowitz! + * Cherry-pick from upstream: + - dix: set the device transformation matrix. Avoids cursor jumps in + virtualbox (closes: #694598) + + -- Julien Cristau Thu, 29 Nov 2012 19:27:31 +0100 + +xorg-server (2:1.12.4-3) unstable; urgency=low + + * Replace EXA patch from previous upload with the one actually applied + upstream (closes: #666468). + + -- Julien Cristau Mon, 05 Nov 2012 10:44:58 +0100 + +xorg-server (2:1.12.4-2) unstable; urgency=low + + * Fix Xephyr command line option parsing (closes: #689246). Thanks, Andrzej + Pietrasiewicz! + * Restore {in,out}{b,w,l} on ia64 (closes: #685750). Thanks, Stephan + Schreiber! + * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: + #666468). Patch by Michel Dänzer stolen from upstream bugzilla. + + -- Julien Cristau Wed, 24 Oct 2012 16:46:48 +0200 + +xorg-server (2:1.12.4-1) unstable; urgency=low + + * New upstream stable release. + * int10: fix pci_device_read_rom usage (closes: #686153). Thanks, Stephan + Schreiber! + * Revert 'Unload submodules' (closes: #686152). Seems to introduce a + regression, let's try that again later. Thanks, Stephan Schreiber! + * Revert "fb: reorder Bresenham error correction to avoid overshoot". Fixes + regression introduced in 1.12.3.902 (fdo#54168, closes: #688908) + * Add conflicts against obsolete evtouch input driver (hopefully closes: + #687268) + + -- Julien Cristau Sun, 30 Sep 2012 12:47:00 +0200 + +xorg-server (2:1.12.3.902-1) unstable; urgency=low + + * New upstream release candidate + + glx: Free DRI2 drawable reference to destroyed GLX drawable + (closes: #681265, #674668) + + dix: make sure the mask is set for emulated scroll events + (closes: #684051) + * 03_fix-panning.diff: disable cursor confinement when panning is enabled + (closes: #643693) + * Video ABI bumped to 12.1, serverminver to 2:1.12.3.901. + + -- Julien Cristau Tue, 21 Aug 2012 21:35:25 +0200 + +xorg-server (2:1.12.3-1) unstable; urgency=low + + * New upstream release. + * Install /var/lib/xkb/README.compiled in xserver-common. + + -- Julien Cristau Wed, 18 Jul 2012 08:36:57 +0200 + +xorg-server (2:1.12.1.902-1ubuntu1) quantal-proposed; urgency=medium + + [ Maarten Lankhorst ] + * Refresh patches to apply on x-server 1.12 + - patch-x-indent.sh from xorg-pkg-tools was used to redo coding style + * Deleted following patches because they have been committed upstream + - 224_return_BadWindow_not_BadMatch.diff + - 225_non-root_config_paths.patch + - 505_query_pointer_touchscreen.patch + - 506_touchscreen_pointer_emulation_checks.patch + - 507_touchscreen_fixes.patch + * Non-trivial refresh of 500_pointer_barrier_thresholds.diff, based on + xorg-edgers + * Rest was refreshed with patch-x-indent.sh to survive coding style changes + * Add upstream patches for proper device disabling: + - 510-dix-return-early-from-DisableDevice-if-the-device-is.patch + - 511-dix-move-freeing-the-sprite-into-a-function.patch + - 512-dix-free-the-sprite-when-disabling-the-device.patch + - 513-dix-disable-non-sprite-owners-first-when-disabling-p.patch + - 514-Xi-drop-forced-unpairing-when-changing-the-hierarchy.patch + - 515-dix-disable-all-devices-before-shutdown.patch + + [ Bryce Harrington ] + * Drop 209_add_legacy_bgnone_option.patch: lightdm and other *dm's have + switched to the new standard -background option. No need to continue + providing the legacy -nr synonym. + * Drop 201_report-real-dpi.patch: Commented out in series. + * Drop 198_nohwaccess.patch: Rootless-X no longer a development focus + for us; the patch would need reworked anyway to provide proper + support. + * Drop 166_nullptr_xinerama_keyrepeat.patch: Fixed differently upstream + in commit 24e682d0, as verified by original reporter. + + -- Bryce Harrington Mon, 04 Jun 2012 19:12:23 -0700 + +xorg-server (2:1.12.1.902-1) unstable; urgency=medium + + [ Julien Cristau ] + * xvfb-run: kill Xvfb when the script dies. + * xvfb-run: instead of waiting 3 seconds and hoping that's enough for Xvfb + to come up (and waiting 2.9 seconds too many in the general case), tell it + to send us SIGUSR1 when it's ready to accept connections. This reduces + "xvfb-run -- xterm -e true" from ~3.2s to ~0.4s on a quick test. + * xvfb-run: fix xauth handling; setting XAUTHORITY when starting an X server + isn't actually useful, we need to use the -auth command-line parameter + instead. Somehow this seems to have been broken all these years and + nobody noticed... + + [ Cyril Brulebois ] + * New upstream release candidate for the 1.12 stable branch: + - Bring the usual lot of stability fixes. + - Fix segfault on server shutdown (Closes: #671812). + - Refactor logging, fixing a format string vulnerability which could lead + to a denial of service (“only”, thanks to the fortified sources). This + is CVE-2012-2118 (Closes: #673148). + * Bump severity to “medium” for those two important fixes. + + -- Cyril Brulebois Sun, 20 May 2012 10:52:52 +0200 + +xorg-server (2:1.12.1-2) unstable; urgency=low + + * Merge from server-1.12-branch up to 22a1953c4a to get: + - many XI 2.2 fixes. + - “os: make timers signal-safe”; fixing infinite loops with the + synaptics tap handling code. + + -- Cyril Brulebois Mon, 07 May 2012 01:46:16 +0200 + +xorg-server (2:1.12.1-1) unstable; urgency=low + + * New upstream release. + * Upload to unstable. + + -- Cyril Brulebois Tue, 01 May 2012 01:56:32 +0200 + +xorg-server (2:1.12.0.902-1) experimental; urgency=low + + * New upstream release candidate (1.12.1 RC2). + * Refresh patches, yay for automated re-indenting… + + -- Cyril Brulebois Wed, 11 Apr 2012 19:31:09 +0000 + +xorg-server (2:1.12.0-1) experimental; urgency=low + + * New upstream release. + * Bump x11proto-input-dev in Build-Depends and Depends. + + -- Cyril Brulebois Mon, 05 Mar 2012 11:18:41 +0100 + +xorg-server (2:1.11.99.902-1) experimental; urgency=low + + * New upstream release candidate (1.12 RC2): + - Fix FTBFS on ia64 and mips*. + * Bump x11proto-input-dev build-dep. + + -- Cyril Brulebois Thu, 02 Feb 2012 03:15:00 +0100 + +xorg-server (2:1.11.99.901-1) experimental; urgency=low + + * New upstream release candidate (1.12 RC1). + * Bump input ABI and serverminver again. + * Bump x11proto-input-dev build-dep/dep. + + -- Cyril Brulebois Fri, 30 Dec 2011 00:01:35 +0100 + +xorg-server (2:1.11.99.2-1) experimental; urgency=low + + * New upstream snapshot. + * Bump input ABI and serverminver again. + + -- Cyril Brulebois Tue, 20 Dec 2011 11:39:51 +0100 + +xorg-server (2:1.11.99.1-1) experimental; urgency=low + + * New upstream release snapshot (on the way to 1.12). + * Bump libpciaccess-dev, x11proto-input-dev build-deps. + * Update xserver-xorg-dev's dependencies: + - Add libpixman-1-dev. + - Bump x11proto-input-dev. + * Update serverminver with new server and ABI versions. + * Drop patches (merged upstream): + - 07-xfree86-fix-build-with-xv-disabled.diff + - 15-nouveau.diff + + -- Cyril Brulebois Thu, 15 Dec 2011 18:49:10 +0100 + +xorg-server (2:1.11.4-0ubuntu11) quantal; urgency=low + + * Release buttons when device is disabled on suspend (LP: #968845) + - Add temporary patch 508_device_off_release_buttons.patch from upstream + + -- Chase Douglas Sat, 05 May 2012 13:17:34 -0700 + +xorg-server (2:1.11.4-0ubuntu10.1) precise-proposed; urgency=low + + [ Bryce Harrington ] + * Enable 227_null_ptr_midispcur.patch to apply + + [ Chase Douglas ] + * Update to xserver 1.12.1 for the input stack + * Drop patches merged upstream in 1.12.1: + - 501_touch_accept_end.patch + - 502_indirect_touch_window_set.patch + - 503_fix_mouse_warp.patch + - 504_implement_passive_touch_ungrab.patch + * Fix patch 506_touchscreen_pointer_emulation_checks.patch after upstream + review + * Fix various touchscreen issues (LP: #974887) + - Add temporary patch 506_touchscreen_fixes.patch, which is a combination of + multiple upstream patches + + -- Chase Douglas Thu, 19 Apr 2012 12:34:54 -0700 + +xorg-server (2:1.11.4-0ubuntu10) precise; urgency=low + + * Fix touchscreen pointer emulation (LP: #949791) + - Add temporary patch 506_touchscreen_pointer_emulation_checks.patch + + -- Chase Douglas Wed, 04 Apr 2012 16:53:33 -0700 + +xorg-server (2:1.11.4-0ubuntu9) precise; urgency=low + + * Report button press when touchscreen touch is active (LP: #972985) + - Add temporary patch 505_query_pointer_touchscreen.patch + - Fixes some compiz/unity touchscreen issues + + -- Chase Douglas Tue, 03 Apr 2012 19:04:01 -0700 + +xorg-server (2:1.11.4-0ubuntu8) precise; urgency=low + + [ Chase Douglas ] + * Fix crash at startup due to input option abi break (LP: #931397) + - Revert two commits from upstream 1.12 input stack + + [ Bryce Harrington ] + * debian/patches/227_null_ptr_midispcur.patch: + - Check for NULL pointer before dereferencing pointer from + miGetDCDevice. Fixes crash after connecting a bluetooth keyboard. + (LP: #930936) + + [ Chase Douglas ] + * Fix mouse warping and clipping (LP: #948938) + - Add temporary patch 503_fix_mouse_warp.patch + * Implement passive touch ungrab (LP: #968726) + - Add temporary patch 503_implement_passive_touch_ungrab.patch + * Bump lintian standards to 3.9.3 + + -- Chase Douglas Thu, 29 Mar 2012 18:09:19 -0700 + +xorg-server (2:1.11.4-0ubuntu7) precise; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Avoid loading the driver to test if it's available. Xorg will later load + and validate the module, and if it's already loaded it'll trigger an + error and invalidate the driver (LP: #959928) + + -- Ricardo Salveti de Araujo Tue, 20 Mar 2012 02:09:18 -0300 + +xorg-server (2:1.11.4-0ubuntu6) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Don't try to send events from the context of the SIGIO handler. That + leads to the dark side, or at least to server freezes when trying to + reveal the launcher in Unity (LP: #946954). May also fix other seemingly + random X server crashes. + - Add build-time tests to make check for barrier behaviour. These are + disabled, pending gtest, xorg-gtest, and xserver-xorg-video-dummy MIRs. + + -- Christopher James Halse Rogers Fri, 09 Mar 2012 19:16:02 +1100 + +xorg-server (2:1.11.4-0ubuntu5) precise; urgency=low + * Update to 1.12 input stack + * Drop input patches that have been merged upstream: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch + - 611-Fix-touch-punt-crash.patch + - 612-Fix-vcp-touches-corruption.patch + - 613-Keep-vcp-touch-class.patch + * Fix indirect touch grab handling (LP: #929408) + - Add temporary patch 501_touch_accept_end.patch + - Add temporary patch 502_indirect_touch_window_set.patch + + -- Chase Douglas Wed, 07 Mar 2012 15:36:20 -0800 + +xorg-server (2:1.11.4-0ubuntu4) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Make the velocity calculation more robust on screen edges. Fixes reveal + behaviour on nVidia 295.20 driver, which now clamps the pointer to the + visible screen area. (LP: #937792) + + -- Christopher James Halse Rogers Tue, 21 Feb 2012 17:04:41 +1100 + +xorg-server (2:1.11.4-0ubuntu3) precise; urgency=low + + * Fix touch class memory corruption + - Add 612-Fix-vcp-touches-corruption.patch + - Add 613-Keep-vcp-touch-class.patch + + -- Chase Douglas Mon, 13 Feb 2012 15:54:04 -0800 + +xorg-server (2:1.11.4-0ubuntu2) precise; urgency=low + + * Fix crash when punting a touch to a non-existent owner + - Add 611-Fix-touch-punt-crash.patch + + -- Chase Douglas Mon, 13 Feb 2012 12:10:02 -0800 + +xorg-server (2:1.11.4-0ubuntu1) precise; urgency=low + + [ Chase Douglas ] + * Allow for non-root config paths so xorg-gtest can be run without root + - Add 225_non-root_config_paths.patch backported from upstream + + [ Alberto Milone] + * debian/patches/226_fall_back_to_autoconfiguration.patch: + - Fall back to autoconfiguration for graphics drivers in some cases + instead of letting X fail when configuration files are available. + + [ Chase Douglas ] + * Update to 1.11.99.902 input stack + * Update to 1.11.4 for everything else + * Drop input patches that have been merged upstream: + - 220_dont_scale_indirect.patch + - 221_pointer_motion_update_fix.patch + - 222_touch_valuators_absolute.patch + - 223_indirect_touch_x_y_valuators.patch + * Add reviewed input patches that have not been merged upstream yet: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch (LP: #925785) + * Bump deps on x11proto-input-dev to 2.1.99.6 + + -- Chase Douglas Fri, 10 Feb 2012 16:27:25 -0800 + +xorg-server (2:1.11.3-0ubuntu10) precise; urgency=low + + * Drop 214_glx_dri_searchdirs.patch, drisearchdirs is no longer + exported in mesa's dri.pc because of multiarch and the only consumer + (dri-alternates) is no longer used. + + -- Robert Hooker Thu, 02 Feb 2012 12:08:55 -0500 + +xorg-server (2:1.11.3-0ubuntu9) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Implement proposed XFIXES 6.0 protocol. This protocol is subject to + change, use at own risk! + * debian/control: + - Bump build-dep on x11proto-fixes to pick up new protocol definition + + -- Christopher James Halse Rogers Fri, 27 Jan 2012 20:05:42 +1100 + +xorg-server (2:1.11.3-0ubuntu8) precise; urgency=low + + * debian/patches/224_return_BadWindow_not_BadMatch.diff: + - Fix the error values of a whole slew of window-related calls. + Fixes some gnome-settings-daemon aborts in XLib (LP: #903973) + + -- Christopher James Halse Rogers Mon, 23 Jan 2012 16:09:29 +1100 + +xorg-server (2:1.11.3-0ubuntu7) precise; urgency=low + + * Fixes for relative devices + - Add 220_dont_scale_indirect.patch + - Add 221_pointer_motion_update_fix.patch + - Add 222_touch_valuators_absolute.patch + - Add 223_indirect_touch_x_y_valuators.patch + + -- Chase Douglas Thu, 19 Jan 2012 16:23:28 -0800 + +xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low + + * Bump Build-Depends on x11proto-input-dev to 2.1.99.5 + + -- Chase Douglas Tue, 17 Jan 2012 22:22:57 +0100 + +xorg-server (2:1.11.3-0ubuntu5) precise; urgency=low + + * Add Breaks clause for XInput changes + - qt4-x11 < 4:4.8.0-1ubuntu2 (crashes due to XI ABI change) + - utouch-geis < 2.2.3 (infinite loop if utouch XCB backend is unavailable) + - utouch-frame < 2.1.0 (crashes due to XI ABI change) + - unity < 5.0.0 (crashes if utouch stack is unavailable) + + -- Chase Douglas Tue, 17 Jan 2012 22:03:35 +0100 + +xorg-server (2:1.11.3-0ubuntu4) precise; urgency=low + + * Merge in input changes from upstream master through commit 954bb99 + * Remove temporary patch 220_grab_event_time.patch + + -- Chase Douglas Tue, 17 Jan 2012 19:52:04 +0100 + +xorg-server (2:1.11.3-0ubuntu3) precise; urgency=low + + * Add temporary patch for fixing grab time bug + - Add 220_grab_event_time.patch + + -- Chase Douglas Wed, 11 Jan 2012 07:41:04 -0800 + +xorg-server (2:1.11.3-0ubuntu2) precise; urgency=low + + * Merge in input changes from upstream master through commit 8722ad6 + * Remove temporary patch 220_test-loop.patch, merged upstream + + -- Chase Douglas Tue, 10 Jan 2012 10:48:31 +0100 + +xorg-server (2:1.11.3-0ubuntu1) precise; urgency=low + + * New upstream bugfix release + * Merge in input changes from upstream master through commit e7df42a + * Bump input ABI + * Bump x11proto-input-dev build dependency version + * Add temporary patch for fixing a test case loop + - Add 220_test-loop.patch + + -- Chase Douglas Thu, 22 Dec 2011 12:11:39 -0800 + +xorg-server (2:1.11.2.902-1ubuntu1) precise; urgency=low + + * Drop prototype XI multitouch patches + * Merge in input changes from upstream master through commit 7da7aa9 + * Bump input ABI + * Refresh patches + - Drop 210_pixman_null_ptr_check.patch, merged upstream + + -- Chase Douglas Wed, 14 Dec 2011 16:06:37 -0800 + +xorg-server (2:1.11.2.902-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release candidate (1.11.3 RC2) + + -- Cyril Brulebois Sat, 10 Dec 2011 22:36:42 +0100 + +xorg-server (2:1.11.2.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.3 RC1): + - As usual: Fixes for various crashes and correctness issues. + - In particular: Fix for crash when starting a game (in wine) twice + (Closes: #637448). + - Also: Fix crashes with server regeneration (Closes: #649420). + * Add some lintian overrides: + - xserver-xorg-core: breaks-without-version against virtual packages + is perfectly OK. + * Don't forget to ship xorg.conf.d(5) in xserver-xorg-core. + + -- Cyril Brulebois Tue, 29 Nov 2011 17:04:09 +0100 + +xorg-server (2:1.11.1.902-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC2): + - Fixes for various crashes and correctness issues. + + -- Cyril Brulebois Wed, 02 Nov 2011 11:10:03 +0100 + +xorg-server (2:1.11.1.901-2) unstable; urgency=high + + * Merge from upstream to get CVEs fixed: + - Fix CVE-2011-4028: File disclosure vulnerability. + - Fix CVE-2011-4029: File permission change vulnerability. + * Set urgency to “high” accordingly. + + -- Cyril Brulebois Thu, 20 Oct 2011 15:04:53 +0200 + +xorg-server (2:1.11.1.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC1) + + Disable check of double-aligned in test/input.c on Renesas SH + (closes: #636673) + * Use dpkg-buildflags to enable hardening with recent dpkg. + * Enable PIE with DEB_BUILD_MAINT_OPTIONS, but add -Bsymbolic to LDFLAGS to + reduce performance loss from PIE. + * Pass --disable-silent-rules to configure. + * Drop dh_testroot from clean target. + * Add dummy build-{arch,indep} targets depending on build. + + -- Julien Cristau Sat, 15 Oct 2011 19:05:41 +0200 + +xorg-server (2:1.11.1-1) unstable; urgency=high + + [ Cyril Brulebois ] + * Bump glproto dependency for xserver-xorg-dev (Closes: #639651). + * Set urgency to “high” since there were no issues other than the libwfb + one (see below) in the last 4 weeks. + + [ Julien Cristau ] + * New upstream bugfix release + - belatedly bump extension ABI major + - add missing fbFoo → wfbFoo renames for libwfb.so, fixing issues with the + nvidia driver (closes: #641344) + + -- Cyril Brulebois Sat, 24 Sep 2011 11:23:17 +0200 + +xorg-server (2:1.11.0-1ubuntu1~prep1) oneiric; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes + - Fill in later + * Drop all XI2.1 multitouch patches, pending Chase's rework. + * 217_revert_bgnonevisitwindow.patch: + * 219_fedora-pointer-barriers.diff: + - Drop; included in the new upstream release. + + -- Christopher James Halse Rogers Sat, 10 Sep 2011 21:26:49 -0700 + +xorg-server (2:1.11.0-1) unstable; urgency=low + + [ Julien Cristau ] + * Make xvfb, xnest, xserver-xephyr and xserver-xfbdev provide the xserver + virtual package again. + + [ Cyril Brulebois ] + * New upstream release: + - Fix assertion failure when calling dixSetPrivate (Closes: #632549). + Thanks, Mohammed Sameer! + - Fix memcpy abuse in the fb layer (Closes: #626682). + + -- Cyril Brulebois Sun, 28 Aug 2011 12:53:06 +0200 + +xorg-server (2:1.10.99.901+git20110731-1) experimental; urgency=low + + [ Cyril Brulebois ] + * New upstream release candidate. + * Bump serverminver, as well as input and video ABI. + * Adapt 15-nouveau.diff to cope with the glxdricommon-ification of + GLX probing. Nouveau users might still see an error (EE) mentioning + the fallback to software rendering. + * Bump pixman build-dep/dep to 0.21.8. + * Bump xutils-dev build-dep for new macros. + * Drop libglib2.0-dev build-dep, no longer needed for unit tests. + * Bump x11proto-fixes-dev build-dep for pointer barriers support. + + [ Julien Cristau ] + * Update to git HEAD. + + DIX: Set backgroundState correctly for root window (Closes: #632134) + * Bump xproto, dri2proto and glproto build-dependencies. + * Merge packaging changes from the 1.10.x branch: + + Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + + And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + Bump Standards-Version to 3.9.2 (no changes). + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + * Drop obsolete 20-workaround-36986.diff. + * Fix patch stamp dependency. + + -- Julien Cristau Sun, 31 Jul 2011 22:15:07 +0200 + +xorg-server (2:1.10.4-1ubuntu1) oneiric; urgency=low + + [ Christopher James Halse Rogers ] + * Drop i8xx-disablement patch. 2.6.39 and later kernels contain a patch + which alledgedly fixes the cache-incoherency problems. (LP: #817814) + + [ Ricardo Salveti de Araujo ] + * debian/patches/112_armel-pvr-drv.patch: + - Include support for the pvr driver available on OMAP 4 (LP: #828494) + + [ Timo Aaltonen ] + * Merge from Debian unstable. + - Fixes Xephyr assert failure in dixGetPrivateAddr (LP: #821090) + * debian/rules: Modify the patch stampdir creation. + * Update patch 500_xi2.1.patch to apply. + * Refresh patches. + * debian/rules: Add PATH for the xvfb-run check, otherwise Xvfb is not found. + * debian/rules: Shift the xvfb-run test to be run later, to ensure that the + binaries are installed. + + [ Bryce Harrington ] + * debian/rules: Add check target invoking xvfb-run to test that it works + * debian/control: Add build dependency on xauth, required by xvfb-run + + [ Chase Douglas ] + * Add fixes for touch grab handling, courtesy of Carlos Garnacho + - 505_Xi_ensure_replayed_touch_events_have_devices.patch + - 506_Xi_ensure_touch_events_update_currentTime.patch + - 507_dix_Ensure_touch_events_are_delivered_to_next_client.patch + + -- Timo Aaltonen Fri, 09 Sep 2011 14:13:07 +0300 + +xorg-server (2:1.10.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + -- Cyril Brulebois Wed, 24 Aug 2011 10:44:42 +0200 + +xorg-server (2:1.10.3-1) unstable; urgency=medium + + [ Cyril Brulebois ] + * New upstream release (with just a version bump). + * Remove the Replaces: xdmx from xdmx-tools, that was before lenny. + * Add a Breaks: libgl1-mesa-dri-no-multiarch, to handle upgrades from + squeeze-backports (without multiarch) to wheezy (with multiarch). + * Set urgency to “medium” to speed things up. Migration to testing is + a prerequisite for squeeze backports. + + [ Julien Cristau ] + * Merge packaging changes lost from the 1.7 (squeeze) branch: + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + + Set default xkb rules to evdev on linux, to work around a wrong default in + configure.ac and an Xorg issue where it reverts to the default on reset. + Thanks to Bastian Blank for the report. + + -- Cyril Brulebois Sun, 07 Aug 2011 19:35:07 +0200 + +xorg-server (2:1.10.2.902-1ubuntu3) oneiric; urgency=low + + * debian/patches/220_xi21_always_deliver_raw_events.diff: + - Backport patch from the mailing list to deliver raw events regardless of + grab state. Bon appétit, DX! + + -- Christopher James Halse Rogers Mon, 11 Jul 2011 10:03:26 +1000 + +xorg-server (2:1.10.2.902-1ubuntu2) oneiric; urgency=low + + [ Bryce Harrington ] + * rules: patch needs to depend on stampdir, else it doesn't get created, + and 'debian/rules patch' malfunctions. + + [ Chase Douglas ] + * Fix event handling when neither X nor Y coordinates are set (LP: #806256) + - Added 504_fix_no_coords.patch + + [ Christopher James Halse Rogers ] + * rules: Add both /usr/lib/xorg/extra-modules and + /usr/lib/$MULTIARCH/xorg/extra-modules for extra modules. + Fixes GLX for the proprietary drivers after a mesa upgrade (LP: #807209) + + -- Christopher James Halse Rogers Fri, 08 Jul 2011 13:16:59 +1000 + +xorg-server (2:1.10.2.902-1ubuntu1) oneiric; urgency=low + + * Merge from Debian unstable. (LP: #441653) + - Update 500_xi2.1.patch to apply. + - Drop patch 218_randr-check-rotated-virtual-size-limits-correctly.diff, + fixed upstream. + * Update the crtc confinement patch with one that should work, with + further fixes from upstream. (LP: #389519) + * Dropped a bunch of old Breaks from xserver-xorg-core. + + -- Timo Aaltonen Tue, 05 Jul 2011 16:22:23 +0300 + +xorg-server (2:1.10.2.902-1) unstable; urgency=low + + * New upstream release (1.10.3 rc2): + - DIX: Set backgroundState correctly for root window (Closes: #632134). + * Drop 20-workaround-36986.diff, fixed upstream. + * Bump Standards-Version to 3.9.2 (no changes). + + -- Cyril Brulebois Sat, 02 Jul 2011 11:58:58 +0200 + +xorg-server (2:1.10.2-2) unstable; urgency=low + + * Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + * And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + -- Cyril Brulebois Fri, 17 Jun 2011 18:09:36 +0200 + +xorg-server (2:1.10.2-1ubuntu1) oneiric; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable, remaining changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + + Enable multitouch gestures. + - control: + + Xvfb depends on xauth, x11-xkb-utils, recommends libgl1-mesa-dri. + (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternative module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 217_revert_bgnonevisitwindow.patch: + Revert a commit that causes brief graphical corruption. (LP: 726807) + + 218_randr-check-rotated-virtual-size-limits-correctly.diff: + Fix rotation with nvidia driver. (LP: 740933) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + + 503_fix_masked_transformed_valuators.patch: + Fix masked transformed valuator handling (LP #774938) + * Drop patch 215_glx_drawable_refcounting.diff, similar fix included + upstream. + * Drop patch 121_only_switch_vt_when_active.diff, doesn't seem to + work anymore. + * videoabiver, inputabiver, xserver-xorg-dev.install: + Drop changes that are obsolete post-natty. + * Add 219_fedora-pointer-barrier.diff: + Pointer barrier and cursor confinement patch backported to 1.10. + + [ Christopher James Halse Rogers ] + * debian/control: + Bump mesa-common-dev build-dep to pick up multiarch DRI paths. + + -- Christopher James Halse Rogers Wed, 15 Jun 2011 10:51:18 +1000 + +xorg-server (2:1.10.2-1) unstable; urgency=low + + * New upstream release. + * Add 20-workaround-36986.diff to avoid test failures on *i386. + * On GNU/kFreeBSD, enable HAL support for the main build, but disable it + for the udeb build, thanks to Robert Millan (Closes: #596586). + + -- Cyril Brulebois Mon, 30 May 2011 11:37:37 +0200 + +xorg-server (2:1.10.1.901-1) experimental; urgency=low + + * New upstream release (1.10.2 rc1): + - Comes with some Xi fixes. + - Comes with many GLX fixes. + + -- Cyril Brulebois Sat, 07 May 2011 13:27:28 +0200 + +xorg-server (2:1.10.1-2) unstable; urgency=low + + * Build xserver-xorg-core-udeb on hurd-i386. Thanks, Samuel Thibault! + * Upload to unstable. + + -- Julien Cristau Thu, 28 Apr 2011 13:28:58 +0200 + +xorg-server (2:1.10.1-1ubuntu3) oneiric; urgency=low + + * Add 218_randr-check-rotated-virtual-size-limits-correctly.diff + - Fix rotation with nvidia driver. (LP: #740933) + + -- Timo Aaltonen Fri, 20 May 2011 00:07:11 +0300 + +xorg-server (2:1.10.1-1ubuntu2) oneiric; urgency=low + + * Fix masked transformed valuator handling (LP: #774938) + - Added debian/patches/503_fix_masked_transformed_valuators.patch + + -- Bryce Harrington Tue, 17 May 2011 14:44:58 -0700 + +xorg-server (2:1.10.1-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental (LP: #757972) + + -- Timo Aaltonen Tue, 19 Apr 2011 16:12:14 +0300 + +xorg-server (2:1.10.1-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Tue, 19 Apr 2011 03:08:08 +0200 + +xorg-server (2:1.10.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. + - dropped patches, included upstream: + 213_xichangehierarchy-check-oom.patch + 216_fix_sdksyms_build.diff, included upstream. + 218_getValuatorEvents_cleanup.patch + 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Timo Aaltonen Mon, 11 Apr 2011 09:51:56 +0300 + +xorg-server (2:1.10.0.902-1) experimental; urgency=low + + * New upstream release (1.10.1 rc2). + + -- Cyril Brulebois Sat, 09 Apr 2011 04:18:28 +0200 + +xorg-server (2:1.10.0.901-1) experimental; urgency=low + + * New upstream release (1.10.1 rc1). + * Relax build-dep and dep on x11proto-randr-dev since the XRandR 1.4 + bits were finally reverted upstream. + * Remove patch: 16-construct-paths-in-doxygen.conf.diff (merged + upstream). + * Pass --enable-xcsecurity to the main build to restore the XC-SECURITY + extension, thanks to Stefan Fritsch's report (Closes: #599657). + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + +xorg-server (2:1.10.0-0ubuntu3) natty; urgency=low + + [ Bryce Harrington ] + * patches/111_armel-drv-fallbacks.patch: Always fallback to -fbdev, + not just when no other X driver matches. (Thanks jcristau) + + [ Chase Douglas ] + * Fix jumpy cursor in XI 1.x applications. + (LP: #736500) + - Added 218_getValuatorEvents_cleanup.patch + - Added 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Bryce Harrington Thu, 31 Mar 2011 23:58:07 -0700 + +xorg-server (2:1.10.0-0ubuntu2) natty; urgency=low + + [ Chase Douglas ] + * patches/500_xi2.1.patch: Process ownership properly when activating an + async passive grab. + (LP: #733483) + + [ Bryce Harrington ] + * 217_revert_bgnonevisitwindow.patch: Cherrypick from upstream. Drops + recent change that inhibits drawing backfill for non-bg-None windows. + This causes a regression on -ati (at least) where menus and other + windows display graphical corruption briefly. + (LP: #726807) + + -- Bryce Harrington Thu, 24 Mar 2011 15:27:40 -0700 + +xorg-server (2:1.10.0-0ubuntu1) natty; urgency=low + + * Update to new upstream final release. + + Drop 16-construct-paths-in-doxygen.conf.diff; included in new upstream. + * debian/patches/216_fix_sdksyms_build.diff: + + Cherry-pick from 1.10 branch, fixing the stale sdksyms.c file picked up + in the udeb build, causing the udeb build to fail with missing symbols. + * Merge from unreleased Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + + Bump build-depends on mesa-common-dev to pick up dri.pc DRI search + paths change for 214_glx_dri_searchdirs.patch + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 215_glx_drawable_refcounting.diff: + Prevents segfault on logout and server regenerate, and possibly other + times. (LP #711422) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + * debian/serverminver: + - Bump to 1.10.0-0ubuntu1~ for Xi 2.1 ABI + * New upstream release fixes crash in Record, trigerred by x11vnc + (LP: #525066) + * Refresh 500_xi2.1.patch for new upstream version + * debian/videoabiver: + - Bump to 10 for XRandR 1.4 revert. + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + + +xorg-server (2:1.9.99.903-1) experimental; urgency=low + + * New upstream release candidate (1.10 rc3). + * Remove patch: 17-fix-ftbfs-on-sparc.diff (merged upstream). + * Remove patch: 20-update-gpu-pitch.diff (merged upstream). + * Refresh patch: 07-xfree86-fix-build-with-xv-disabled.diff + * Replace patch fixing out-of-tree-build: + - 16-oot-build.diff (dirty local hack). + + 16-construct-paths-in-doxygen.conf.diff (from upstream, + without the gitignore hunk to get patching working). + * Bump video ABI version, and serverminver accordingly. + + -- Cyril Brulebois Fri, 25 Feb 2011 15:22:39 +0100 + +xorg-server (2:1.9.99.902-3) experimental; urgency=low + + * Merge from master up to 93a7399370. + * New patch: 17-fix-ftbfs-on-sparc.diff; let's try it for real before + asking for its being merged upstream. + * Refresh all patches. + + -- Cyril Brulebois Wed, 23 Feb 2011 13:36:13 +0100 + +xorg-server (2:1.9.99.902-2ubuntu2) natty; urgency=low + + [ Timo Aaltonen ] + * Remove 169_mipointer_nullptr_checks.patch, fixed in another way + upstream since 1.6.1.901. + + [ Chase Douglas ] + * Cancel touch clients if emulated button press is delivered. + (LP: #725191) + * Check slave device touch selection mask during implicit grab. + (LP: #725241) + * Cancel slave touch selections when attached to master device. + (LP: #723904) + * Check for touch selections only when there are active clients. + (LP: #723900) + * Prevent pointer motion when more than one touch on touchpad. + (LP: #730881) + + [ Bryce Harrington ] + * Drop specification for linux-any. Breaks pbuilder test builds. + + -- Chase Douglas Mon, 07 Mar 2011 14:28:02 -0500 + +xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + * 211_glx_fix_bindtextimageext_length_check.patch: + * 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Drop; these cherry-picks are included in 1.10RC2 + * 214_glx_dri_searchdirs.patch: + - Fix dlclose/free snafu. (LP: #722563) + - Fix nouveau check to downgrade missing DRI error messages to info. + We don't support nouveau's 3D, so let's not complain too strenuously + when it's not installed. + * 215_glx_drawable_refcounting.diff: + - Refcount GLXDrawables to avoid use-after-free crashes. Patch from + xorg-devel mailing list. Prevents segfault on logout and server + regenerate, and possibly other times. (LP: #711422) + * debian/inputabiver, + debian/videoabiver, + debian/xserver-xorg-dev.install + - Temporarily re-add these to xserver-xorg-dev so we don't need to merge + all the driver changes from Debian en masse. These should be dropped + once all drivers have been merged from Debian, and certainly in Natty+1. + * debian/serverminver: + - Include 2ubuntu1 string; Xi 2.1 bumps the minor input ABI, so drivers + built against it need the Xi 2.1 patched server. + + [ Timo Aaltonen ] + * debian/patches/216_dix-valuator-count-of-0-is-valid.diff: + - For all but motion and proximity events, having no valuators is ok. + Regression from 1.9, keyboard events are not converted to protocol + events. (LP: #714696) + + [ Chase Douglas ] + * Add in preliminary xi2.1 support + - Added 500_xi2.1.patch + - Moved 202_xf86CoordinationsToWindows.patch to + 501_xf86CoordinatesToWindow.patch + - Moved 203_gestures-extension.patch to 502_gestures-extension.patch + - Bump dependency on x11proto-input for xi 2.1 + + -- Christopher James Halse Rogers Wed, 23 Feb 2011 09:40:07 +1100 + +xorg-server (2:1.9.99.902-2) experimental; urgency=low + + * Bump dependency on x11proto-randr-dev, needed since xorg-server.pc + pulls a newer randrproto version. + * Merge from debian-unstable (picking packaging updates from 2:1.9.4-3). + * Mention some basic checks to perform when updating to a new upstream + release, in README.source: ABI bumps and SDK_REQUIRED_MODULES updates. + * Accordingly: + - Bump the x11proto-xext-dev dependency. + - Don't bump the x11proto-kb-dev dependency (even etch had a + sufficient version). + + -- Cyril Brulebois Sun, 20 Feb 2011 07:02:20 +0100 + +xorg-server (2:1.9.99.902-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.10 rc1) + * Drop 16-xaa-fbcomposite-fix-negative-size.diff, the mod macro that this + patch fixes is no longer used. + * debian/control: + - Bump x11proto-randr-dev and x11proto-xext-dev build-deps to 1.3.99 and + 7.1.99 for new XRandR and XSync extension protocols. + + [ Julien Cristau ] + * Bump serverminver and ABI versions. + + [ Cyril Brulebois ] + * New upstream release (1.10 rc2). + * bug script: Report libGL-related diversions. + * Bump serverminver again, since ABI_XINPUT_VERSION was bumped from 12.0 + to 12.2. + * Update debian/copyright from upstream COPYING. + * Add patch to work around out-of-tree issues: 16-oot-build.diff + + -- Cyril Brulebois Sat, 19 Feb 2011 15:29:54 +0100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu6) natty; urgency=low + + * debian/patches/214_glx_dri_searchdirs.patch: + - Search for DRI drivers for AIGLX in the same set of directories as mesa. + Allows us to fall back to the classic radeon drivers when KMS is not + available. + * debian/rules: + - --disable-builddocs → --disable-devel-docs to match upstream rename. + Makes local builds faster and less prone to doxygen errors. + * debian/control: + - Bump build-depends on mesa to pick up new drisearchdirs variable in + dri.pc + + -- Christopher James Halse Rogers Fri, 18 Feb 2011 17:03:46 +1100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu5) natty; urgency=low + + * Add 213_xichangehierarchy-check-oom.patch: Another NULL pointer check + for out-of-memory conditions, this time leading to a segfault in an + unchecked calloc in XISendDeviceHierarchyEvent(). + (LP: #720445) + + -- Bryce Harrington Wed, 16 Feb 2011 16:46:35 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu4) natty; urgency=low + + * Add 211_glx_fix_bindtextimageext_length_check.patch, + 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Correct wrong request size match for xGLXCreateGLXPbufferSGIXReq. + This can result in some invalid BadLength errors. + (LP: #714280) + + -- Bryce Harrington Mon, 14 Feb 2011 12:07:45 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu3) natty; urgency=low + + * Restore 208_switch_on_release.diff - the patch does not appear to be + upstream actually. Users confirm the fix regressed without it. + (LP: #711842) + * Add 210_pixman_null_ptr_check.patch: pixman_image_create_bits() can + return NULL under a variety of circumstances, thus needs checked + before dereferencing it in the pixman_image_set_has_client_clip() + call. + (LP: #705078, deb: 596155, fdo: 28882) + + -- Bryce Harrington Thu, 03 Feb 2011 22:42:52 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu1) natty; urgency=low + + * Merge from (unreleased) debian-experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Refresh 121_only_switch_vt_when_active.diff for new upstream. + * Drop 187_edid_quirk_hp_nc8430.patch; upstream. + * Drop 189_xserver_1.5.0_bg_none_root.patch; functionality now upstream. + * Refresh 190_cache-xkbcomp_output_for_fast_start_up.patch for new upstream. + * Drop 197_xvfb-randr.patch: + - miRandR, which this used, has been removed from the server. + * Drop 204_fix-neg-sync-transition.patch; upstream. + * Drop 207_dga_master_device.patch; upstream. + * Drop 208_switch_on_release.diff; upstream. + * debian/patches/209_add_legacy_bgnone_option.patch: + - Add "-nr" as a synonym for "-background none" to ease the transition from + the old 189_xserver_1.5.0_bg_none_root.patch patch. Can be dropped once + all the ?DM have been updated to use the new option. + * debian/control: + - Add Breaks: to xserver-xorg-video-8 and current fglrx. These proprietary + drivers don't yet have appropriate dependency information, so manually + handle them here to prevent broken upgrades. + + -- Christopher James Halse Rogers Mon, 31 Jan 2011 19:45:19 +1100 + +xorg-server (2:1.9.4-3) unstable; urgency=low + + * Maintainer script clean-up: + - xserver-xorg-core.preinst.in: Remove, 1.5 is long gone. + - xserver-xorg-core.postinst.in: Remove, 1.5 is long gone, and 1.7.4 + was between lenny and squeeze. + - xserver-xorg-core.postrm.in: Rename as xserver-xorg-core.postrm, + handling upgrades from 1.5 is no longer needed, only keep the logs + removal and the #DEBHELPER# placeholder. + * Move remaining xsfbs bits to debian/rules: + - Create/clean stampdir/. + - Use quilt.make, $(QUILT_STAMPFN), unpatch. + - Define SOURCE_NAME and SOURCE_VERSION. + * Remove debian/xsfbs accordingly. + * Remove reference to xsfbs in README.source accordingly. + * Add patch: 20-update-gpu-pitch.diff (from upstream bug 33929), fixing + issues with the radeon driver (Closes: #613957). + + -- Cyril Brulebois Sun, 20 Feb 2011 05:35:50 +0100 + +xorg-server (2:1.9.4-2) unstable; urgency=low + + * Put an end to the dependency hell! Now that we have proper + dependencies between drivers and the server, remove xserver-xorg from + xserver-xorg-core's Depends (Closes: #362313). In a nutshell, one may + want to choose between installing: + - xserver-xorg-core: the server itself, with no strings attached. + - xserver-xorg: pulls the server and drivers, contains the X wrapper + and some documentation. + - xorg: pulls xserver-xorg as well as various X11 clients and fonts. + * bug script: Report KMS configuration files and their contents. + * bug script: Keep only one lspci call (with proper filtering), which + makes PCI IDs come back. + * bug script: Report libGL-related diversions. + * Stop providing xorg-input-abi-11.0 and xorg-video-abi-8.0 now that + drivers have reached unstable. + * Merge server-1.9-branch up to 0a4b0de9af. + + -- Cyril Brulebois Wed, 16 Feb 2011 23:17:07 +0100 + +xorg-server (2:1.9.4-1) unstable; urgency=low + + * The “squeeze is released, target sid!” upload. + * New upstream release. + * Unfuzzy all patches. + * Get rid of long obsolete NEWS file. + * Replace “--remaining-packages” with “-Nfoo -Nbar” in the “dh_strip -s” + call, to avoid non-stripped binaries if the build is resumed. + * Use “dh_prep” instead of deprecated “dh_clean -k”. + * Bump debhelper build-dep accordingly. + * Introduce dh_xsf_substvars, to be used in driver packages to set + appropriate substitution variables for Depends and Provides, before + calling dh_gencontrol. Ship it in xserver-xorg-dev. + * Also ship a debhelper sequence: xsf.pm, to insert dh_xsf_substvars + before dh_gencontrol. Usage: “dh $@ --with xsf” when using dh. + * Get rid of inputabiver and videoabiver files, they've been deprecated + for a while, and drivers should all have switched by now. + * rules: Only read the first line of debian/serverminver to set the + serverminver variable, used to prepare xinputdep and videodrvdep + files. + * rules: Keep only the major ABI version from pkg-config's output to + build xorg-{input,video}-abi-$ABI. To handle minor ABI versions, we + have the serverminver mechanism. + * To avoid having to binNMU all drivers to update their Depends from + xorg-*-abi-$MAJOR-$MINOR to xorg-*-abi-$MAJOR, add xorg-video-abi-8.0 + and xorg-input-abi-11.0 to the server's Provides temporarily (until + the next ABI bump). + * Add ${videoabi}, ${inputabi} to the udeb's Provides. There's no reason + for udebs to have loose dependencies. + * Accordingly, copy server's substvars as udeb's substvars once the + videoabi/inputabi variables are computed. + * Add an abibumpcheck target which checks for xinput and videodrv ABI + updates, based on the versions stored in debian/serverminver; make + clean depend on it to make sure such an update is noticed at the very + beginning of the build. + * Add current versions to debian/serverminver accordingly. + * Remove “xserver” from Provides, it's deprecated. + * Use architecture wildcards for build-deps. + * Make xserver-xfbdev linux-any; add armhf and powerpcspe to the udeb + (Closes: #585697, #605764). + * Cherry-pick, thanks to Samuel Thibault (Closes: #590715): + - xserver: enable TLS even if AIGLX is not enabled + * Update Uploaders list. Thanks, David & Steve & Brice! + * Bump Standards-Version to 3.9.1 (no changes needed). + + -- Cyril Brulebois Sat, 05 Feb 2011 10:40:55 +0100 + +xorg-server (2:1.9.3.902-1) experimental; urgency=low + + * New upstream release (1.9.4 rc2). + * Improve bug script: + - Stop reporting about roster and checksum for config file and server + symlink, they are no longer used. + - Replace printf with echo everywhere, it's slightly more readable and + all lines are newline-terminated anyway. + - Also use a “pecho” (pretty echo) function to underline some strings, + making the output slightly more readable. + - Fix listing xorg.conf.d's contents. Previously, that was only done + if xorg.conf existed. + - Check for local libraries by running ldd on the server. + - Check for obsolete libraries in the same way (/usr/X11R6/lib might + still exist in some cases, and be referenced in /etc/ld.so.conf, so + using ldd is sufficient to find out, see #546836 for an example). + + -- Cyril Brulebois Mon, 31 Jan 2011 14:00:41 +0100 + +xorg-server (2:1.9.3.901-1) experimental; urgency=low + + * New upstream release (1.9.4 rc1). + + -- Cyril Brulebois Sun, 09 Jan 2011 03:10:13 +0100 + +xorg-server (2:1.9.2.902-1) experimental; urgency=low + + * New upstream release (1.9.3 rc2). + * Drop 06_dont_trap_access_to_timer_and_keyboard.diff, merged upstream. + + -- Cyril Brulebois Sun, 05 Dec 2010 02:16:14 +0100 + +xorg-server (2:1.9.2-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Wed, 10 Nov 2010 00:10:19 +0100 + +xorg-server (2:1.9.0.902-1ubuntu4) natty; urgency=low + + * Add 208_switch_on_release.diff: Perform keyboard layout switches on + key-release rather than key-press events. This solves a very + long-standing issue where e.g. ++ fails when + ctrl+shift is configured for layout switching. + (LP: #36812) + + -- Bryce Harrington Thu, 06 Jan 2011 14:35:59 -0800 + +xorg-server (2:1.9.0.902-1ubuntu3) natty; urgency=low + + * Add 207_dga_master_device.patch: Cherrypick from upstream xserver git + to fix crash with a bluetooth keyboard when using XBMC full screen. + (LP: #597895) + + -- Bryce Harrington Thu, 06 Jan 2011 12:17:16 -0800 + +xorg-server (2:1.9.0.902-1ubuntu2) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Cherry-pick 3effb61e from server-1.9 branch. Fixes a typo in Xinerama + support which caused Qt apps to crash X when using Xinerama multi-head + (LP: #650539) + + [ Robert Hooker ] + * Add 105_nvidia_fglrx_autodetect.patch, enables fglrx and nvidia to work + without an xorg.conf. + * debian/local/64-xorg-xkb.rules, control: Use keyboard-configuration + information for keymaps (/etc/default/keyboard) + + -- Robert Hooker Wed, 05 Jan 2011 11:29:17 -0500 + +xorg-server (2:1.9.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP: #516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: #616678) + + 204_fix-neg-sync-transition.patch: + Fixes gnome screensaver fade being uninterruptable. (LP: #595555) + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Drop 205_udev-product-ids.patch, merged upstream. + + -- Robert Hooker Mon, 18 Oct 2010 11:19:33 -0400 + +xorg-server (2:1.9.0.902-1) experimental; urgency=low + + * New upstream release (1.9.1 rc2). + * Drop 20-Revert-for-bug-30267.diff, merged upstream. + + -- Cyril Brulebois Sat, 16 Oct 2010 15:24:48 +0200 + +xorg-server (2:1.9.0.901-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.9.0): + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + + [ Cyril Brulebois ] + * New upstream release (1.9.1 rc1). + * Add patch: 20-Revert-for-bug-30267.diff, to fix FTBFS due to test + failures, see https://bugs.freedesktop.org/show_bug.cgi?id=30267 for + reference. + * Bump xutils-dev build-dep for new macros. + * Remove --disable-multibuffer from configure flags, that extension is + gone for real now. + + -- Cyril Brulebois Tue, 12 Oct 2010 22:13:20 +0200 + +xorg-server (2:1.9.0-0ubuntu6) maverick; urgency=low + + [ Chase Douglas ] + * Fix udev USB product ID parsing (LP: #628214) + - debian/patches: + + 205_udev-product-ids.patch + + [ Christopher James Halse Rogers ] + * debian/patches/206_intel_8xx_default_to_fbdev.patch: + - Don't autoload the intel driver on i830, i845g and i855. These are + still too unstable with KMS/GEM. X will autoload the fbdev driver + (if using KMS) or the vesa driver instead. (LP: #633593) + + -- Christopher James Halse Rogers Mon, 13 Sep 2010 18:48:54 +1000 + +xorg-server (2:1.9.0-0ubuntu5) maverick; urgency=low + + * debian/control: + - fix duplicated breaks for xserver-xorg-video-v4l + + -- Michael Vogt Wed, 08 Sep 2010 10:57:49 +0200 + +xorg-server (2:1.9.0-0ubuntu4) maverick; urgency=low + + * debian/control: + - add more "breaks" for leftover drivers that have no + xserver 1.9 abi version, thanks to Jean-Baptiste Lallement + (LP: #614993) + + -- Michael Vogt Tue, 31 Aug 2010 10:52:29 +0200 + +xorg-server (2:1.9.0-0ubuntu3) maverick; urgency=low + + * debian/control: + - add additional breaks for video drivers that have no ABI for + xserver 1.9 (LP: #614993) + - merge the "breaks" list from the debian git tree + + -- Michael Vogt Tue, 31 Aug 2010 10:04:01 +0200 + +xorg-server (2:1.9.0-0ubuntu2) maverick; urgency=low + + * debian/control: + - add explict breaks from xserver-xorg-core against + xserver-xorg-video-v4l (<< 1:0.2.0-4ubuntu1) to ensure that + upgrades with universe disabled work (LP: #614993) + + -- Michael Vogt Mon, 30 Aug 2010 15:40:07 +0200 + +xorg-server (2:1.9.0-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: 616678) + + debian/serverminver: + Bump for gesture support + * New upstream release: + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + * debian/patches/204_fix-neg-sync-transition.patch: + - Fix edge case in SYNC extension resulting in GNOME screensaver's + fade-to-screensaver being uninteruptible. (LP: #595555) + + -- Christopher James Halse Rogers Tue, 24 Aug 2010 15:44:10 +1000 + +xorg-server (2:1.8.99.905-1ubuntu3) maverick; urgency=low + + * Bump debian/serverminver for gesture support + + -- Chase Douglas Fri, 20 Aug 2010 16:35:22 -0400 + +xorg-server (2:1.8.99.905-1ubuntu2) maverick; urgency=low + + * Add in gesture support (LP: #616678) + - add debian/patches/203_gestures-extension.patch + and debian/patches/202_xf86CoordinationsToWindows.patch + - debian/rules: + - add configure option to enable gesture + + -- Chase Douglas Mon, 09 Aug 2010 14:33:40 +0000 + +xorg-server (2:1.8.99.905-1ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for 1.8.1.902-1 which became 1.8.99.904-1 + * Drop 196_xvfbscreeninit-handling.patch: it's semantically empty, and now + doesn't apply. Merge remaining #include change into 197_xvfb-randr.patch + * New upstream version will start correctly when no outputs are connected, + as long as the video driver can dynamically resize the framebuffer + (true for all KMS drivers) (LP: #337889) + * New upstream version fixes crash on non-admin logout with KDE (LP: #569879) + * Refresh 111_armel-drv-fallbacks.patch to fix the build on armel + + -- Christopher James Halse Rogers Thu, 05 Aug 2010 11:25:14 +1000 + +xorg-server (2:1.8.99.905-1) experimental; urgency=low + + * Drop recommends on xbase-clients. + * Add xauth to xserver-common recommends. + * Bump Standards-Version to 3.9.0. + * Don't install serverminver, drivers shouldn't use this anymore. + * New upstream release candidate. + + -- Julien Cristau Sat, 17 Jul 2010 11:13:32 +0100 + +xorg-server (2:1.8.99.904-1) experimental; urgency=low + + [ Julien Cristau ] + * Install the upstream changelog in xserver-common, instead of duplicating + its 1MB in all other packages. + * Stop repacking the tarball: the non-modifiable README.DRI was removed + upstream. + * Bump build-deps on x11proto-core-dev, x11proto-dri2-dev, libxfont-dev. + * Bump xserver-xorg-dev dependency on x11proto-core-dev and + x11proto-dri2-dev, add dependency on x11proto-xinerama-dev. + * Bump serverminver, videoabiver, inputabiver. + + [ Christopher James Halse Rogers ] + * New upstream RC + - A number of DRI2 fixes. + - Fix for hanging OpenGL clients with multiple heads. + * 17-fix-DRI2-segfault-when-clientGone.diff: + - Pick up fix from https://bugs.freedesktop.org/show_bug.cgi?id=27497 to + fix server crash in DRI2SwapEvent handling (LP: #595182). + + -- Julien Cristau Fri, 09 Jul 2010 12:45:09 +0100 + +xorg-server (2:1.8.1.902-0ubuntu2) maverick; urgency=low + + * debian/rules: + - Drop the upstream changelog harder. We're scrabbling for CD space + and this is an easy 1MB saving. + + -- Christopher James Halse Rogers Wed, 30 Jun 2010 09:50:33 +1000 + +xorg-server (2:1.8.1.902-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for previously unreleased Debian 1.8.1.901-1 + + -- Christopher James Halse Rogers Wed, 23 Jun 2010 11:19:49 +1000 + +xorg-server (2:1.8.1.901-1ubuntu1) maverick; urgency=low + + [ Timo Aaltonen ] + * Merged from Debian experimental, remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils, recommends + libgl1-mesa-dri. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Dropped patches: + - 106_nouveau_autodetect.patch: obsoleted by 15-nouveau.diff + - 112_xaa-fbcomposite-fix-negative-size.patch: adopted by Debian + - 113_quell_nouveau_aiglx.patch: obsoleted by 15-nouveau.diff + - 115_xext_fix_cursor_ref_counting.patch: merged upstream + - 116_fix_typos_in_swap_functions.patch: merged upstream + - 118_xkb_fix_garbage_init.patch: merged upstream + - 123_exa_sys_ptr_nullpointer_check.patch: merged upstream + - 199_xfvb-help-typo.patch: merged upstream + * debian/xserver-xorg-core.preinst.in: Drop the removal of the wrong + alternative, obsolete by now. + * debian/control: Build the udeb and bump the relaxed build-deps. + * debian/local/xvfb-run: Don't disable composite, seems to run fine + with it nowadays. + + [ Robert Hooker ] + * Fix 190_cache-xkbcomp_output_for_fast_start_up.patch so it works. + * Drop 164_trap-aspect-ratios.patch: obsolete. + * debian/rules: Adjust confflag targets so xcsecurity isn't enabled for udeb + with disabled xace. + * Drop 184_virtual_devices_autodetect.patch: It's a noop with todays autoconfig. + + [ Bryce Harrington ] + * debian/rules: Don't reference the package uploader for support; instead point + users to the standard Ubuntu support page. + (LP: #589811) + + [ Christopher James Halse Rogers ] + * Add debian/gbp.conf pointing at ubuntu branch. + * Drop 109_fix-swcursor-crash.patch; merged upstream in 3a3edb2c. + * 122_xext_fix_card32_overflow_in_xauth.patch: Update to most recent patch + on patchwork. This patch actually works! (tested with + “xauth generate :0 . trusted timeout 99999999) (LP: #519049) + + -- Bryce Harrington Mon, 07 Jun 2010 14:50:49 -0700 + +xorg-server (2:1.8.1.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release + * Merge changes from 2:1.7.7-2. + + [ Christopher James Halse Rogers ] + * 16-xaa-fbcomposite-fix-negative-size.diff: + - mi hunk merged upstream. Update to keep just the fbpict.c hunk. + + -- Julien Cristau Mon, 07 Jun 2010 23:22:48 +0200 + +xorg-server (2:1.8.1-1) experimental; urgency=low + + * New upstream release + - 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff: partly merged + upstream, rest renamed to 02_Add-libnettle-as-option-for-sha1.diff and + ported to new version + - 05_only_call_gamma_set_if_nonnull.diff: merged upstream + - 07-xfree86-fix-build-with-xv-disabled.diff: rediffed + - 08-config-xorg-conf-d.diff: merged upstream + - 09-inputclass-sans-abi9.diff: likewise + - 10-config-libudev-backend.diff: likewise + - 11-xfree86-fix-video-fallback.diff: likewise + - 12-xfree86-dont-complain-about-missing-coredevices.diff: likewise + - 13-unbreak-input-abi.diff: obsolete + - 14-tone-down-nidr-errors.diff: merged upstream + - 15-nouveau.diff: rediffed + - 17-xfree86-saner-conf-search-paths.diff: merged upstream + - 18-Add-10-evdev.conf.diff: likewise + * Bump xutils-dev build-dep for new macros. + * Add build-dep on xfonts-utils for fontutil.pc. + * Bump build-deps on mesa, glproto and dri2proto. + * Drop obsolete configure options --disable-xsdl and + --disable-null-root-cursor. + * --enable-werror has been replaced by --enable-strict-compilation, adjust + rules. + * xdmx-tools.install: xdmx was renamed to dmxinfo. + * Bump debian/serverminver and ABI versions. + + -- Julien Cristau Wed, 12 May 2010 18:01:39 +0200 + +xorg-server (2:1.7.7-2) unstable; urgency=low + + * autoconfig: load the nouveau driver for nvidia hw. Stolen from F13. + * Try to catch non-event devices when running udevadm info in the bug + script. + * Pull from upstream server-1.7-nominations branch + - dix: make DeviceEvent coordinates signed for Xinerama (closes: #581763) + - xfree86: dga needs to use the master keyboard state (closes: #576393) + - Fix null pointer dereference in xf86_reload_cursors (closes: #507916) + + -- Julien Cristau Thu, 03 Jun 2010 17:00:18 +0200 + +xorg-server (2:1.7.7-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Update patch 17; Add missing __datadir__ to cpprules.in. + + [ Cyril Brulebois ] + * Add listing files under /etc/X11/xorg.conf.d in bug script. + * Fix typo in 10-mouse.conf: s/Mouse/Pointer/ (Closes: #579130). + + [ Julien Cristau ] + * Drop the GLX 1.4 patches to fix server crashes with DRI2 (closes: + #567677). + * Change driver ABI Conflicts to Breaks. Drop old Conflicts/Replaces on + pre-modular xserver packages. + * Unset PRERELEASE to avoid the prerelease warning in the log. + * New upstream release: + - fixes Xvfb crash with XI2 (closes: #575905) + - EXA: Check sys_ptr isn't NULL before passing it to the UploadToScreen + hook (closes: #576656) + * 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff is now upstream, + remove it. + * Drop mention of input_id from debian/copyright since we stopped shipping + it a while back. + + -- Julien Cristau Tue, 04 May 2010 15:17:59 +0200 + +xorg-server (2:1.7.6.901-3) unstable; urgency=low + + [ Julien Cristau ] + * On !linux, install mouse and kbd catchall snippets in the xorg.conf.d + directory. Fixes FTBFS on those archs. + + [ Cyril Brulebois ] + * Cherry-pick “exa: handle pixmap create/destroy in lower layers” which + fixes server crashes when pixmaps are created in the course of + software fallbacks (Closes: #576816). Many thanks to Arthur Marsh for + the tests! + + -- Cyril Brulebois Mon, 19 Apr 2010 15:26:15 +0200 + +xorg-server (2:1.7.6.901-2) unstable; urgency=low + + * Fix dependency generation: Replace PKG_CONFIG_DIR with PKG_CONFIG_PATH + (/usr/share/xserver-xorg/{videodrv,xinput}dep may lack a version + otherwise). + + -- Cyril Brulebois Sat, 17 Apr 2010 18:38:17 +0200 + +xorg-server (2:1.7.6.901-1) unstable; urgency=low + + * New upstream release candidate. + - Fix crash when all glyphs of a given depth are freed, but not all + glyphsets (closes: #568533) + + [ Cyril Brulebois ] + * Steal patch 112_xaa-fbcomposite-fix-negative-size.patch from ubuntu, + and rename it 16-xaa-fbcomposite-fix-negative-size.diff as it's now + applied in Debian as well. It fixes arithmetic bugs in mod(); thanks to + Bryce Harrington. + * Merge 'xsfbs/debian-unstable' to fix target dependencies, which fixes + useless rebuilds. + * Add support for “noudeb” in DEB_BUILD_OPTIONS to disable building the + udeb flavour (even on architectures where udebs are supposed to be + built) to speed up debug builds. When this is used, the udeb is still + built, but rather empty… + * Modify bug script to include kernel version (from /proc/version) since + the uname in Xorg.*.log might not give enough details (like the Debian + revision). + + [ Julien Cristau ] + * Remove from debian/rules an obsolete reference to + /usr/share/debhelper/dh_make/debianm/rules. + * Make xserver-xorg-core provide ABI-versioned virtual packages for drivers + to depend on. This is a first step in making our ABI handling saner (see + #573371). + * xvfb-run: don't rely on /tmp/X$i-lock to bump $SERVERNUM in auto-servernum + mode (closes: #577195). Thanks, Jozef Kutej! + * Bump serverminver for new handling of input config. + * Add Breaks on input drivers installing files in /usr/lib/X11/xorg.conf.d + since we're changing the path. + * Stop looking for x11_driver property in udev, since we're migrating the + drivers over to xorg.conf.d anyway. + * Install 10-evdev.conf in /usr/share/X11/xorg.conf.d (from upstream, patch + 18-Add-10-evdev.conf.diff). + + [ Timo Aaltonen ] + * Add 17-xfree86-saner-conf-search-paths.diff. Allows using another + xorg.conf.d directory for local changes. + + -- Cyril Brulebois Sat, 17 Apr 2010 16:55:39 +0200 + +xorg-server (2:1.7.6-2ubuntu8) lucid-updates; urgency=low + + [Bryce Harrington] + * Add 123_exa_sys_ptr_nullpointer_check.patch: Patch from upstream to + verify a pointer is not NULL before dereferencing it. Fixes X + segfault in miCopyRegion which occurs while using firefox (e.g. typing + into fields in AOL). Issue found by Jerry Lamos. + (LP: #539772) + * Add 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff: Patch + from Debian to fix X segfault on mouse click in xfig, when pixmaps + are created in the course of software fallbacks. + (LP: #553647) + + [Martin Pitt] + * debian/local/64-xorg-xkb.rules: Ignore XKBMODEL=="SKIP" and + XKBVARIANT=="U.S. English", which happen to get into + /etc/default/console-setup in some cases like the VMWare automatic + installer. + (LP: #548891) + + -- Bryce Harrington Wed, 28 Apr 2010 13:10:44 -0700 + +xorg-server (2:1.7.6-2ubuntu7) lucid; urgency=low + + * Drop 117_fix_crash_with_createglyphset.patch + - Dupe of patch 110 + * Drop 03_fedora_glx_versioning.diff, 04_fedora_glx14-swrast.diff + - These patches were brought in by Debian to provide glx 1.4 support + which Fedora backported from xserver 1.8, however testing in + Ubuntu showed they caused a crash when closing Clutter apps (#550218), + and graphics corruption when opening windows. Dropping these patches + returns us to GLX 1.2, which has been found to be stable; Debian has + also dropped these two patches. + (Fixes #565903). + * Drop 114_dri2_make_sure_x_drawable_exists.patch + - This was an early attempt by upstream which fixed the aforementioned + Clutter crash, but which introduced a memory leak. + (Fixes #565981) + + -- Bryce Harrington Thu, 22 Apr 2010 17:24:38 -0700 + +xorg-server (2:1.7.6-2ubuntu6) lucid; urgency=low + + * Add 122_xext_fix_card32_overflow_in_xauth.patch: Prevent overflow + of a CARD32 variable millis by doing bounds checking. This is a + patch currently in discussion at fdo #27134, so this patch can be + dropped in favor of whatever upstream decides to include. + (LP: #519049) + + -- Bryce Harrington Thu, 15 Apr 2010 14:10:53 -0700 + +xorg-server (2:1.7.6-2ubuntu5) lucid; urgency=low + + * Update patches in previous upload to fix FTBS issue. + + -- Bryce Harrington Thu, 15 Apr 2010 11:03:01 -0700 + +xorg-server (2:1.7.6-2ubuntu4) lucid; urgency=low + + * Add several cherrypicks of fixes from upstream git tree which fix various + issues and that look safe with low or no risk of regression. + + 115_xext_fix_cursor_ref_counting.patch: Xext: Fix cursor reference + counting hazard. + + 116_fix_typos_in_swap_functions.patch: Fixes typos in several of the + glxcmdsswap routines. + + 117_fix_crash_with_createglyphset.patch: Fixes crash introduced in + FindGlyphsByHash() if one client disconnects while a second is in + the middle of doing certain Glyph operations. + + 118_xkb_fix_garbage_init.patch: Fixes typo that can cause garbage + bits to get appended on the xkbControlsNotify changedControls mask + because it was uninitialized on the stack. + + -- Bryce Harrington Wed, 14 Apr 2010 18:49:56 -0700 + +xorg-server (2:1.7.6-2ubuntu3) lucid; urgency=low + + * add support for omapfb to 111_armel-drv-fallbacks.patch + + -- Alexander Sack Mon, 12 Apr 2010 14:43:42 +0200 + +xorg-server (2:1.7.6-2ubuntu2) lucid; urgency=low + + [Bryce Harrington] + * Add 113_quell_nouveau_aiglx.patch: Don't emit error message about + AIGLX on nouveau. 3D is not supported yet on -nouveau so this error + message serves only to confuse bug reporters. + (LP: #529590) + + [Robert Sarvatt] + * Add 114_dri2_make_sure_x_drawable_exists.patch: Makes sure + a corresponding X drawable exists before trying to use it, fixing + xserver segfaults under DRI2 when closing down GLX apps. + (LP: #550218) + + -- Bryce Harrington Wed, 31 Mar 2010 16:37:45 -0700 + +xorg-server (2:1.7.6-2ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #546933) + + [ Michael Casadevall ] + * Updated 111_armel-drv-fallbacks.patch to also add support for finding + dovefb devices in addition to imx51 ones. (LP: #550701) + + -- Timo Aaltonen Tue, 30 Mar 2010 22:01:12 +0300 + +xorg-server (2:1.7.6-2) unstable; urgency=low + + [ Timo Aaltonen ] + * Add 08-config-xorg-conf-d.diff, 09-inputclass-sans-abi9.diff, + 10-config-libudev-backend.diff. Backport xorg.conf.d, inputclass + and libudev support from xserver 1.8. Replaces the patches we had + before. This allows us to migrate from a temporary udev based + input device configuration straight to the long term solution + introduced in 1.8. + * Add 11-xfree86-fix-video-fallback.diff from SUSE. Allows the video + fallback method to work when there's an xorg.conf around. + * Add 12-xfree86-dont-complain-about-missing-coredevices.diff. + No reason to complain about these, unless AEI is off. + * Add 13-unbreak-input-abi.diff. Keep the old NewInputDeviceRequest(), + rename the new as NIDR18() and call it from NIDR(). This way we + don't break the input ABI. + * Add 14-tone-down-nidr-errors.diff. Use X_INFO instead of X_ERROR. + + [ Julien Cristau ] + * 15-keep-udev-x11-driver.diff: keep looking for the x11_driver udev + property as a transitional measure. This should allow the new server to + work while drivers aren't transitioned to xorg.conf.d yet. + + -- Timo Aaltonen Tue, 30 Mar 2010 21:32:52 +0300 + +xorg-server (2:1.7.6-1ubuntu3) lucid; urgency=low + + * Extend 112_xaa-fbcomposite-fix-negative-size.patch to also correct a + mod() definition in the mi code which suffers the same flaw. + + -- Bryce Harrington Mon, 29 Mar 2010 14:15:07 -0700 + +xorg-server (2:1.7.6-1ubuntu2) lucid; urgency=low + + * Add 112_xaa-fbcomposite-fix-negative-size.patch: Prevent 3rd-party + controllable Xorg crash/exploit when XAA and compositing is in use. + Be more careful in sign-changes with mod(). + (LP: #551193) + + -- Bryce Harrington Mon, 29 Mar 2010 13:37:06 -0700 + +xorg-server (2:1.7.6-1ubuntu1) lucid; urgency=low + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 107, included in Debian. + * Drop patch 108, included upstream. + * control: Drop the udeb, we don't need it for lucid. + * control: Relax/drop some build-deps caused by the udeb. + + [Bryce Harrington] + * Add 110_findglyphbyhash-fix.patch from upstream to fix a sporadic + crash in FindGlyphByHash. + (LP: #401045) + * Renumber patch 201_armel-drv-fallbacks.patch to 111 + + -- Bryce Harrington Wed, 24 Mar 2010 12:04:20 -0700 + +xorg-server (2:1.7.6-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Timo Aaltonen ] + * New upstream release, closes: #574354. + + [ Julien Cristau ] + * Don't build xserver-xorg-core-udeb on sparc. The linker fails because + relocations have to be truncated when building statically against + libnettle. + + -- Cyril Brulebois Tue, 23 Mar 2010 16:59:08 +0100 + +xorg-server (2:1.7.5.902-1) unstable; urgency=low + + [ Julien Cristau ] + * config/udev: fix adding unnamed devices. + * Build two flavours, one for the main package and one for the udeb. + * Add patch to fix Xorg build with XV disabled. + + [ Timo Aaltonen ] + * Add 16-config-dont-filter-input-subsys.diff so for instance serial + wacom devices are initialized by the udev backend (LP: #522318, + closes: #568236). + + [ Brice Goglin ] + * New upstream release. + + Allow for missing or disabled compat_output, closes: #572268, #554450. + + Reenable RECORD extension, closes: #570680. + + dix: try to ring the bell even if the current device doesn't have one, + closes: #564200. + * Refresh patches. + * Fix typo in xvfb-run.1, thanks Joey Hess, closes: #527490. + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Cyril Brulebois ] + * Add udeb needed for the graphical installer: xserver-xorg-core-udeb. + * Version/Bump some B-D to make sure xserver-xorg-core-udeb gets its + dependencies on the (recently-added) udebs rather than on the + libraries: + - libpciaccess-dev + - libudev-dev + - libxau-dev + - libxfont-dev + * Replace 02_Add-libgcrypt-as-an-option-for-sha1.diff with + 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff so that it's + also possible to link against libnettle. Link (unconditionally) + statically against libnettle.a to avoid an extra udeb for a few bytes. + * Add nettle-dev to Build-Depends; and pass --with-sha1=libnettle for + the udeb build (and --with-sha1=libgcrypt for the main build). + * Add myself to Uploaders. + * Tweak builderstring to use the name of the person responsible for the + upload instead of an host-specific one (Closes: #574017). + + -- Cyril Brulebois Mon, 15 Mar 2010 22:19:01 +0100 + +xorg-server (2:1.7.5-1ubuntu4) lucid; urgency=low + + * 201_armel-drv-fallbacks.patch: use imx driver if available on + armel imx51 systems; the current test checks for mxc_gpu + devices listed in /sys/devices/platform and ensures that the + imx_drv module can be loaded; if both succeed, imx driver is + used instead of fbdev; note: the mxc_gpu device test should be + replaced with parsing output of /proc/fb once the mxc driver + provides reasonable content there. + + -- Alexander Sack Wed, 24 Mar 2010 13:03:41 +0100 + +xorg-server (2:1.7.5-1ubuntu3) lucid; urgency=low + + * Add 109_fix-swcursor-crash.patch: Avoid dereferencing null pointer + while reloading cursors during resume. + (LP: #371405) + + -- Bryce Harrington Thu, 11 Mar 2010 17:16:12 -0800 + +xorg-server (2:1.7.5-1ubuntu2) lucid; urgency=low + + [ Bryce Harrington ] + [Timo Aaltonen] + * Add 107_dont_filter_input_subsys.diff so for instance serial wacom + devices are initialized by the udev backend (LP: #522318) + + [Bryce Harrington] + * Add 108_reenable_record_ext.patch: Upstream patch to make the + record callback work with the new internal core/Xi events mechanism + instead of xEvents. With this fix, the record extension can be + re-enabled. + (LP: #315456) + + -- Timo Aaltonen Tue, 02 Mar 2010 17:09:33 +0200 + +xorg-server (2:1.7.5-1ubuntu1) lucid; urgency=low + + [ Bryce Harrington ] + [Robert Hooker] + * Add 106_nouveau_autodetect.patch: makes nouveau the default driver + for supported cards when not explicitly named in xorg.conf. + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 101, included in Debian. + + [Robert Collins] + * Add 199_xfvb-help-typo.patch to fix typo in help for xvfb (fdo #32990) + * Add 200_randr-null.patch to clarify a pointer initialization (fdo #26389) + + -- Timo Aaltonen Fri, 19 Feb 2010 13:24:15 +0200 + +xorg-server (2:1.7.5-1) unstable; urgency=low + + [ Julien Cristau ] + * Remove myself from Uploaders + + [ Brice Goglin ] + * New upstream release. + + Restore lastDeviceEventTime update in dixSaveScreens, + closes: #563816. + + Don't double-swap the RandR PropertyNotify event, + closes: #569036. + + Xi: reset the sli pointers after copying device classes, + closes: #566147. + * Bump Standards-Version to 3.8.4. + + -- Brice Goglin Tue, 16 Feb 2010 08:00:27 +0100 + +xorg-server (2:1.7.4-2) unstable; urgency=low + + [ Julien Cristau ] + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + + [ Brice Goglin ] + * Add 05_only_call_gamma_set_if_nonnull.diff to unbreak the nv driver, + closes: #564203. + + -- Brice Goglin Wed, 20 Jan 2010 23:51:26 +0100 + +xorg-server (2:1.7.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). + + -- Julien Cristau Tue, 12 Jan 2010 10:49:22 +0000 + +xorg-server (2:1.7.3.902-1ubuntu12) lucid; urgency=low + + * Add 198_nohwaccess.patch: Needed for rootless X. Adds a -nohwaccess + argument to make X not access the hardware ports directly. + + -- Bryce Harrington Fri, 05 Feb 2010 22:17:20 -0800 + +xorg-server (2:1.7.3.902-1ubuntu11) lucid; urgency=low + + * Add 196_xvfb-fbscreeninit-handling.patch and 197_xvfb-randr.patch: + Adds xrandr support to xvfb. Thanks lifeless! + (LP: #516123) + + -- Bryce Harrington Thu, 04 Feb 2010 10:56:12 -0800 + +xorg-server (2:1.7.3.902-1ubuntu10) lucid; urgency=low + + * 100_rethrow_signals.patch: Fix SigAbortServer to cleanly exit(1) on a + non-signal crash, as the original upstream code does. Not exiting leads to + continuing back into the code which threw the error, which eventually + leads to writing into the already closed log file and other operations + which cause segfaults. + * Re-enable 100_rethrow_signals.patch. Hello apport. + + -- Martin Pitt Wed, 03 Feb 2010 17:29:53 -0800 + +xorg-server (2:1.7.3.902-1ubuntu9) lucid; urgency=low + + * Fully disable 100_rethrow_signals.patch as it seems to still cause + crashes. Goodbye apport. + (LP: #506510) + + -- Bryce Harrington Mon, 18 Jan 2010 23:31:08 -0800 + +xorg-server (2:1.7.3.902-1ubuntu8) lucid; urgency=low + + * Drop 160_log_timestamping.patch. The bootup time objectives have been + met so this patch is no longer required. + + -- Bryce Harrington Sat, 16 Jan 2010 02:28:30 -0800 + +xorg-server (2:1.7.3.902-1ubuntu7) lucid; urgency=low + + * Update 100_rethrow_signals.patch: Don't log more error messages after + the log has been closed, else it causes a SIGSEGV (signal 11) crash + under several different conditions, including on even ordinary error + exits. + (LP: #506510, #507345, #506977, #504497, #507083) + + -- Bryce Harrington Fri, 15 Jan 2010 15:22:34 -0800 + +xorg-server (2:1.7.3.902-1ubuntu6) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Correct the name of the alternative that we need to remove. + Thanks to Steve Langasek for spotting the error. + + -- Alberto Milone Thu, 14 Jan 2010 12:50:19 +0100 + +xorg-server (2:1.7.3.902-1ubuntu5) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Make sure that the alternative which was previously provided by + xserver-xorg-core is removed. + + -- Alberto Milone Tue, 12 Jan 2010 11:37:49 +0100 + +xorg-server (2:1.7.3.902-1ubuntu4) lucid; urgency=low + + * debian/patches/191-Xorg-add-an-extra-module-path.patch: + - Patch from Mandriva to allow the use of an extra-modules-dir so that + the modules installed in this dir will override the ones in the + default directory. + * debian/rules: + - Remove alternatives stuff introduced in a previous upload. + - Configure with --with-extra-module-dir="/usr/lib/xorg/extra-modules". + - Do not install libglx.so and libdri.so in a different place any more. + - Do not install ld.so.conf file any more. Mesa will deal with this. + * debian/xserver-xorg-core.links: + - Do not create link to /usr/lib/xvmcconfig-standard/XvMCConfig. + - Remove links file. + * debian/xserver-xorg-core.postinst.in: + - Do not install an alternative any more. Mesa will deal with this. + * debian/xserver-xorg-core.prerm.in: + - Remove file. + + -- Alberto Milone Mon, 11 Jan 2010 14:48:35 +0100 + +xorg-server (2:1.7.3.902-1ubuntu3) lucid; urgency=low + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). (LP: #504254) + + -- Timo Aaltonen Sat, 09 Jan 2010 19:34:30 +0200 + +xorg-server (2:1.7.3.902-1ubuntu2) lucid; urgency=low + + * debian/rules: + - Make sure that /usr/lib/standard-x11/ld.so.conf points to + the libraries provided by mesa. + + -- Alberto Milone Fri, 08 Jan 2010 18:55:52 +0100 + +xorg-server (2:1.7.3.902-1ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. + + [ Michael Vogt ] + * Add 101_nv-crash-fix.diff: Do not crash if gamma_set is NULL. + (LP: #494627) + + [ Alberto Milone ] + * Install libglx.so and libdri.so in /usr/lib/standard-x11 as X + seems to prefer the file in /usr/lib/xorg/modules/extensions/standard/ + over links in /usr/lib/xorg/modules/extensions/. + + -- Timo Aaltonen Fri, 08 Jan 2010 14:21:15 +0200 + +xorg-server (2:1.7.3.902-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Run udevadm trigger on postinst, and depend on udev [linux-any]. + + [ Julien Cristau ] + * Add xserver-common dependency on x11-xkb-utils for xkbcomp. + * Remove our copy of input_id, add Depends on new enough udev instead. + * New upstream release. + * Make xserver-common recommend xfonts-base, some clients don't work without + those. + * Upload to unstable. + + -- Julien Cristau Wed, 06 Jan 2010 17:44:59 +0000 + +xorg-server (2:1.7.3.901-1ubuntu5) lucid; urgency=low + + * Use alternatives to make it easier to switch between X11 and 3rd + party modules. + * Add link to /usr/lib/xvmcconfig-standard/XvMCConfig and use it + for alternatives. + + -- Alberto Milone Mon, 04 Jan 2010 12:08:17 +0100 + +xorg-server (2:1.7.3.901-1ubuntu4) lucid; urgency=low + + * xvfb: Depend again on xauth. Depend on x11-xkb-utils. LP: #500102. + + -- Matthias Klose Thu, 24 Dec 2009 12:20:02 +0100 + +xorg-server (2:1.7.3.901-1ubuntu3) lucid; urgency=low + + * Update 100_rethrow_signals.patch to work with xserver 1.7 + + -- Bryce Harrington Fri, 18 Dec 2009 18:55:56 -0800 + +xorg-server (2:1.7.3.901-1ubuntu2) lucid; urgency=low + + [ Alberto Milone ] + * debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch: + Make the patch build again with xserver 1.7. + + [ Timo Aaltonen ] + * Enable patch 190 now that it works. + + -- Timo Aaltonen Tue, 15 Dec 2009 14:49:39 +0200 + +xorg-server (2:1.7.3.901-1ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. + + -- Timo Aaltonen Mon, 14 Dec 2009 11:34:33 +0200 + +xorg-server (2:1.7.3.901-1) experimental; urgency=low + + [ Julien Cristau ] + * Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12). + * xserver-xorg-dev: add Depends on x11proto-kb-dev and libxkbfile-dev for + xkbsrv.h (closes: #559676). Thanks, Ron! + * Update input_id to the version in udev 149. + * Update xserver-xorg-core bug script to run udevadm info instead of lshal. + + [ Brice Goglin ] + * New upstream release. + + Refresh patches. + + -- Brice Goglin Sat, 12 Dec 2009 17:46:45 +0100 + +xorg-server (2:1.7.2-2ubuntu2) lucid; urgency=low + + * local/64-xorg-xkb.rules: Use "program" instead of "file" when + grepping the XKB settings from console-setup. + + -- Timo Aaltonen Tue, 08 Dec 2009 13:17:04 +0200 + +xorg-server (2:1.7.2-2ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - debian/rules, debian/control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - debian/rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - local/xvfb-run: Use "-extension Composite" to fix xvfb-run crashing. + - debian/patches: + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + * debian/control: Drop obsolete Conflicts/Breaks against -psb, + -synaptics and -evdev. + * debian/local/xserver-xephyr.1: Delete, upstream has Xephyr.1 now. + * Dropped patches: + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Upstream dropped it. + - 102_ubuntu_sharevts_load_cpu.patch: Upstream. + - 103_psb_auto.patch: Fallback to vesa done differently upstream. + - 110_fedora_no_move_damage.patch: Upstream dropped it. + - 140_quell_acpi_errmsgs.patch: Superseded. + - 153_make_dmx_compile.patch: Xdmx is fixed upstream. + - 156_exevents_copykeyclass_nullptrcheck.patch: No longer needed. + Appropriate checks are done on the pointers prior to CopyKeyClass + being called now. + - 158_raise_maxclients.patch: Breaks binary drivers. We've had this + reverted for some time now, may as well just get rid of it entirely. + - 174_set_bg_pixmap_of_cow_to_none.patch: Upstream + - 177_animated_cursor_change_master.patch: Different fix upstream. + - 180_fedora_no_synaptics_mouse_synthesis.patch: Superseded. + - 181_fedora_log_proc_cmdline.patch: Upstream. + - 185_dix_badwindow.patch: Upstream. + - 186_autoconfig_geode.patch: Upstream. + * 189_xserver_1.5.0_bg_none_root.patch: Fetched a new version. + * 135_rethrow_signals.patch, 168_glibc_trace_to_stderr.patch: + Disabled until fixed to work with the current version. + * 160_log_timestamping.patch: Updated and re-enabled for boot speed + testing in Lucid. This patch should be disabled by beta2. + * 169_mipointer_nullptr_checks.patch: Updated. MIPOINTER() still + can return NULL under some circumstances, and its return values + are still being dereferenced without checking for NULL. + * 188_default_primary_to_first_busid.patch: Updated. Still looks to be + relevant for certain multi-card systems. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Updated. + * control, local/64-xorg-xkb.rules: Don't depend on keyboard-configuration + until we have it. + * rules, local/64-xorg-xkb.rules: Use input_id from udev. + + -- Timo Aaltonen Mon, 07 Dec 2009 15:30:18 +0200 + +xorg-server (2:1.7.2-2) experimental; urgency=low + + [ Julien Cristau ] + * debian/rules: upstream build system got fixed, no need to remove + configure-generated files. + * Steal input_id helper from udev, install it in /lib/xorg. Thanks, Martin + Pitt! + + [ Brice Goglin ] + * Cherry pick upstream commit to fix the ABI. + + -- Brice Goglin Mon, 30 Nov 2009 20:10:27 +0100 + +xorg-server (2:1.7.2-1) experimental; urgency=low + + * New upstream release + + Xorg sets umask to 022 (closes: #555308) + * Delete 09_debian_xserver_rtff.diff. Was disabled since 1.3.99, and is not + necessary since the fall back to builtin fonts was added. + * Change the server's dependency on xserver-common to >= ${source:Version}, + to allow installation of different versions of the various servers. + * Add build-dep on libglib2.0-dev, xkb-data and x11-xkb-utils for unit + tests, and run the tests unless nocheck is in DEB_BUILD_OPTIONS. + * Cherry-pick upstream commit to turn ModeDebug on during server startup, + replacing our Turn-on-ModeDebug-by-default.patch. + * Number our patches to make it easier to keep track of things. Requested + by the Ubuntu folks. + * xvfb-run: retry a few times if Xvfb can't be started when using + --auto-servernum, to make concurrent invocations work (closes: #521075). + Thanks, Kees Cook! + * Use libudev instead of libhal for input hotplug on linux. + * Add udev rule to get keymap from /etc/default/keyboard. + + -- Julien Cristau Sat, 28 Nov 2009 16:48:43 +0100 + +xorg-server (2:1.7.0-1) experimental; urgency=low + + * Add missing Conflicts on xserver-xorg-video-5 and xserver-xorg-input-4. + * Add xkb-data to xserver-common's Depends. XKB is mandatory in 1.7. + * Make all servers depend on xserver-common (= ${source:Version}). + * New upstream release + + fixes Xvfb crashes (closes: #529927) + + fixes DGA init crash (closes: #548716) + + -- Julien Cristau Sun, 04 Oct 2009 15:57:01 +0200 + +xorg-server (2:1.6.99.903-1) experimental; urgency=low + + * New upstream snapshot. + + doesn't fill log file with errors when acpid isn't running + (closes: #487904, #500583) + + adds autoconfig for geode variants (closes: #544988) + + fixes idle time computation (closes: #542064) + + Xnest uses the host's mouse acceleration and speed (closes: #325181) + + Xephyr now has a manpage (closes: #427121) + + Xdmx works again (closes: #541254) + * Update build deps + * Update patch stack: + - 20_hurd-i386.diff applied upstream + - fedora-bad-fbdev-thats-mine.patch applied upstream + - fedora-pci-primary.diff superseded upstream + - fedora-vboxvideo.diff applied upstream + - kfreebsd-ftbfs.diff applied upstream + - Add-libgcrypt-as-an-option-for-sha1.diff refreshed + - Turn-on-ModeDebug-by-default.patch refreshed + * Cleanup some libtool cruft in debian/rules clean. + * Bump serverminver, videoabiver and inputabiver. + * Bump debhelper compat level to 5: + - handle dh_strip behaviour change + - fix xserver-xorg-core.install + * Bump Standards-Version to 3.8.3. + + -- Julien Cristau Tue, 29 Sep 2009 17:51:05 +0200 + +xorg-server (2:1.6.4-2ubuntu6) lucid; urgency=low + + * 189_xserver_1.5.0_bg_none_root.patch: Moblin patch to allow X to + create a root window with no background by passing the -nr + argument. This will make X no longer clear the framebuffer when it + starts, thus eliminating a flicker between bootsplash and gdm. -nr + is ignored if this feature is not supported by the driver. This patch + is not upstream yet. + TESTERS: Watch for screen corruption issues during X or app start. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Causes the X + Keyboard Compiler (xkbcomp) to create a cache file of the keyboard + settings. This will make the 2nd and later boots slightly faster. + TESTERS: Watch for issues relating to keyboard customizations not + taking effect properly following boot. + + -- Bryce Harrington Mon, 23 Nov 2009 13:59:44 -0800 + +xorg-server (2:1.6.4-2ubuntu5) lucid; urgency=low + + * Rework xvfb-run patch to wait for server to come up before checking + status (LP: #481591, Debian bug 521075). + + -- Kees Cook Fri, 13 Nov 2009 16:15:36 -0800 + +xorg-server (2:1.6.4-2ubuntu4) karmic; urgency=low + + * Add 188_default_primary_to_first_busid.patch: X can abort if multiple + video devices are present, and none are marked as primary. This makes + X just pick the first one it sees and carry on. + (LP: #459512) + + -- Bryce Harrington Mon, 26 Oct 2009 10:05:44 -0700 + +xorg-server (2:1.6.4-2ubuntu3) karmic; urgency=low + + * local/xvfb-run: Fix race condition in xvfb-run that can cause + concurrent invocations to fail. + (LP: #348052) + + -- Bryce Harrington Wed, 14 Oct 2009 15:21:51 -0700 + +xorg-server (2:1.6.4-2ubuntu2) karmic; urgency=low + + * Add 187_edid_quirk_hp_nc8430.patch: Quirk for another LPL monitor, to + fix huge font sizes due to invalid EDID from the hardware. + (LP: #380009) + + -- Bryce Harrington Tue, 13 Oct 2009 02:25:46 -0700 + +xorg-server (2:1.6.4-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. (LP: #447010) + Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Specify correct paths to fonts + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 103_psb_auto.patch: + Autodetect poulsbo devices (but use -vesa since -psb is broken) + + 110_fedora_no_move_damage.patch: + further aiglx support + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 140_quell_acpi_errmsgs.patch: + Avoid generating extraneous warnings when acpi is missing + + 153_make_dmx_compile.patch: + Change xcalloc -> calloc, so that dmx compiles. + + 156_exevents_copykeyclass_nullptrcheck.patch, + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 174_set_bg_pixmap_of_cow_to_none.patch: + Set background pixmap of composite overlay window to no background + + 177_animated_cursor_change_master.patch: + Don't create animated cursors for slave devices + + 180_fedora_no_synaptics_mouse_synthesis.patch: + Don't synthesize a mouse section if a synaptics device is found + + 181_fedora_log_proc_cmdline.patch: + Dump /proc/cmdline in the log file too + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 185_dix_badwindow.patch: + Don't return BadMatch from GetProperty if window isn't actually a window + + 186_autoconfig_geode.patch + Perform autodetection correctly for various geode devices + * Update 184_virtual_devices_autodetect.patch to only include inserting + cirrus, since vbox is covered by the new fedora patch. + * Drop patches already included upstream: + - 187_lastdeviceeventtime-no-reset.patch + - 178_glx_flush_cache.patch + - 179_glx_cleanup_drawables.patch + - 183_dont_reset_event_time.patch + - 182_negative_sync_transitions.patch + * Ubuntu bugs fixed as of this release: + - Generate key up event only when key is released. (Fixed previously) + (LP: #403339) + - Fix XDPMS change event idle handling + (LP: #114336, #152999) + - Don't shutdown the libhal ctx if it failed to initialize. Fixes + crash if HAL or dbus is not running or is interrupted. + (LP: #114336) + - Fix crash if SendCoreEvents is off. Don't send events through + master in this case. + (LP: #368135) + - Fix SWCursor check in xf86CursorSetCursor to prevent cursor image + showing up on every screen with Xinerama. + (LP: #357901) + + -- Bryce Harrington Fri, 09 Oct 2009 12:01:52 -0700 + +xorg-server (2:1.6.4-2) unstable; urgency=low + + * Add fix-dga-removal.patch, closes: #548724. + + -- Brice Goglin Wed, 30 Sep 2009 22:40:29 +0200 + +xorg-server (2:1.6.4-1) unstable; urgency=low + + * New upstream release. + * Update 20_hurd-i386.diff, thanks Samuel Thibault, closes: #548606. + * Drop render-return-the-supported-version.patch, applied upstream. + + -- Brice Goglin Mon, 28 Sep 2009 07:23:07 +0200 + +xorg-server (2:1.6.3.901-1) unstable; urgency=low + + [ Julien Cristau ] + * Add patch stolen from Fedora to add the vboxvideo driver to the + autodetection routine (closes: #540884). + * Add built-ins to the default font path so that non-Xorg servers can use + them (closes: #542707). Thanks, Josselin Mouette! + * Add avr32 to the libselinux-dev/libaudit-dev build-deps (closes: #543540). + Thanks, Bradley Smith! + * Add patch to return the actually supported version in RenderQueryVersion + rather than whatever renderproto version the server built against. + * New upstream release. + + idle counter computation fixes (closes: #542064) + * Cherry-pick three more patches nominated on + http://www.x.org/wiki/Server16Branch: + - Don't reset the lastDeviceEventTime when doing DPMS actions + - dri2: Don't crash if pPriv is NULL + - EXA: Only take special code path for 1x1 fill for pixmaps + + [ David Nusinow ] + * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a + + -- Julien Cristau Mon, 14 Sep 2009 15:33:46 +0200 + +xorg-server (2:1.6.3-1ubuntu7) karmic; urgency=low + + * Add 187_lastdeviceeventtime-no-reset.patch: Avoids resetting IDLETIME on + DPMS events. Cherrypick from upstream. + (LP: #397839) + + -- Loïc Minier Mon, 28 Sep 2009 10:54:08 +0200 + +xorg-server (2:1.6.3-1ubuntu6) karmic; urgency=low + + * Add 186_autoconfig_geode.patch: Add autoconfiguration support for + older geode cards. Cherrypick from upstream. + (LP: #423866) + + -- Bryce Harrington Tue, 08 Sep 2009 15:43:28 -0700 + +xorg-server (2:1.6.3-1ubuntu5) karmic; urgency=low + + * Add 185_dix_badwindow.patch: dixLookupWindow may return BadMatch if + the window in question isn't actually a window. In this case, + GetProperty needs to return BadWindow - not BadMatch. Fixes unexpected + crash in some GNOME applications not expecting to get BadMatch returned + from this function call. + (LP: #321041) + + -- Bryce Harrington Thu, 03 Sep 2009 18:27:04 -0700 + +xorg-server (2:1.6.3-1ubuntu4) karmic; urgency=low + + * Add 184_virtual_devices_autodetect.patch: Automatic driver detection + for vbox and kvm for non-cirrus devices. + (LP: #338219, #348497) + + -- Bryce Harrington Mon, 24 Aug 2009 14:58:22 -0700 + +xorg-server (2:1.6.3-1ubuntu3) karmic; urgency=low + + * Add 183_dont_reset_event_time.patch: Upstream cherrypick. + Fix another random display blanking issue. When we turn off DPMS with + DPMSModeOff and do dixSaveScreens, don't reset the event time else + session clients using IDLETIME will be reset. + See http://blogs.gnome.org/hughsie/2009/08/17/ + + -- Bryce Harrington Wed, 19 Aug 2009 10:21:45 -0700 + +xorg-server (2:1.6.3-1ubuntu2) karmic; urgency=low + + * Add 182_negative_sync_transitions.patch: Upstream cherrypick. + Fix random blanking display when system is not idle, caused by + mishandling of negative transition triggers in XSync. + (LP: #397839) + + -- Bryce Harrington Fri, 14 Aug 2009 11:21:09 -0700 + +xorg-server (2:1.6.3-1ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * control: Drop libaudit-dev from build-deps, since SELinux-support + is still disabled anyway. + * Drop 182_fedora_quirk_pea.patch, included in 1.6.3. + + -- Timo Aaltonen Wed, 05 Aug 2009 14:11:01 +0300 + +xorg-server (2:1.6.3-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Sat, 01 Aug 2009 08:55:40 +0200 + +xorg-server (2:1.6.2.901-1ubuntu3) karmic; urgency=low + + * Add 182_fedora_quirk_pea.patch: Quirk for Peacock Ergovision 19 + to use first detailed mode. + * Add 181_fedora_log_proc_cmdline.patch: Log the /proc/cmdline into + Xorg.0.log + * Add 180_fedora_no_synaptics_mouse_synthesis.patch: Don't synthesise a + mouse section if synaptics devices are found. + (LP: #406291, #405281, #396908) + * Actually enable patches 178 and 179 + + -- Bryce Harrington Tue, 04 Aug 2009 02:37:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu2) karmic; urgency=low + + * Add 178_glx_flush_cache.patch and 179_glx_cleanup_drawables.patch: + - Cleanup destroyed windows and drawables, to prevent crash during + compiz startup. + (LP: #408293) + + -- Bryce Harrington Mon, 03 Aug 2009 07:55:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu1) karmic; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #403316) + * Drop 170_primary_pci_video_device.patch, included in Debian + + -- Timo Aaltonen Tue, 28 Jul 2009 15:34:16 +0300 + +xorg-server (2:1.6.2.901-1) unstable; urgency=low + + * New upstream release candidate. + * Bump mesa Build-Depends to >= 7.5 to fix DRI2 madness again, + closes: #538637. + + -- Brice Goglin Mon, 27 Jul 2009 00:17:42 +0200 + +xorg-server (2:1.6.2-1) unstable; urgency=low + + [ Brice Goglin ] + * New upstream release. + + Fixes dri2 madness introduced in previous upload + (closes: #534522, #536019, #534766, #534771, #534890). + + Fixes xkb bogus length in write keyboard desc, closes: #529625. + + Fixes SWCursor being multiply rendered, closes: #526260. + + Drop Change-default-for-ExaOptimizeMigration-to-false.diff, + applied upstream. + + Pull upstream server-1.6-branch up to commit 606f6dba. + * Bump serverminver to 2:1.6.2 for the dri2 upstream changes in the + previous upload. + + [ Julien Cristau ] + * Bump xserver-xorg-dev's dependency on dri2proto to >= 2.1 for the same + reason. + * Don't set PCI_TXT_IDS_DIR, we don't use that anymore. + * xserver-xorg-core.bug.script: add a newline between X log and lshal + output. + + -- Brice Goglin Mon, 13 Jul 2009 23:35:13 +0200 + +xorg-server (2:1.6.1.901-3) unstable; urgency=low + + [ Julien Cristau ] + * xvfb-run: don't pass the magic cookie to xauth on the command line + (CVE-2009-1573; closes: #526678). Thanks, Loïc Minier! + * xvfb-run: use mktemp to create the temporary directory. + * Change default for ExaOptimizeMigration to false. This option still + causes visual corruption in some cases. Thanks, Michel Dänzer! + * Only include hal info for keyboards, mice, touchpads and tablets in the + bug script. + * In the bug script, grep dmesg for agp in addition to drm. + * Add patch stolen from Fedora to disable the fbdev driver when it's loaded + together with a PCI or SBUS driver, instead of calling FatalError (closes: + #508476). + * Add patch stolen from Fedora to try and detect the primary PCI device by + mapping the legacy VGA bios and comparing the vendor and device ids. + Previously if there was more than one VGA device and the config didn't + specify BusIDs, the server would just fail to start, so this hack should + improve things. + * Update configure options: + + use --enable-xvfb instead of --enable-vfb + + drop --disable-builtin-fonts, --enable-xtrap, --disable-kdrive-vesa, + --disable-lbx, --disable-xprint, --disable-xorgconfig, --disable-xorgcfg + which don't exist anymore + + use --disable-config-hal and --disable-dri on hurd-i386 + + reorder options to match configure.ac, and use explicit + --enable/--disable instead of using the defaults / autodetection + * Don't recommend xfonts-base. libXfont provides builtin versions of the + fixed and cursor fonts, which are the only required ones. Keep xfonts-* + packages in Suggests for xserver-xorg-core. + * Bump Standards-Version to 3.8.2 now that we have README.source. + * Drop Build-Conflicts on xlibs-static-dev; it's only in oldstable at this + point. + * Pull from upstream server-1.6-branch as of June 23rd (commit dbac41b). + * Bump build-dep on dri2proto to 2.1 for new protocol. + * Bump build-dep on libselinux1-dev to 2.0.80 for avc_netlink_acquire_fd. + + [ David Nusinow ] + * Add README.source + + -- Julien Cristau Tue, 23 Jun 2009 19:52:10 +0200 + +xorg-server (2:1.6.1.901-2ubuntu2) karmic; urgency=low + + * Add xserver-1.5.0-bad-fbdev-thats-mine.patch - If no xorg.conf is + specified, framebuffer device can erroneously grab the PCI. Make + it fail instead in this case. + (LP: #383407) + + -- Bryce Harrington Wed, 24 Jun 2009 15:24:44 -0700 + +xorg-server (2:1.6.1.901-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * Dropped patches: + - obsolete: + 100_xserver_exa_force_greedy.patch + 107_fedora_dont_backfill_bg_none.patch + - upstream: + 163_thinko_in_xf86targetpreferred.patch + 171_xkb_geometry_copying.patch + 173_edid_quirk_philips_lcd.patch + 175_set_pointer_screen_in_xtestfakeinput.patch + 176_quell_warning_exacopydirty.patch + - included by Debian: 999_default_modedebug_on.patch + * Disable 143_default_to_vesa.patch for now, breaks autoconfiguration + when the pci-ids directory exists but has no match. (LP: #379504) + * Disable SELinux support for now, because libaudit-dev needs to be + moved to main first. + + -- Timo Aaltonen Sun, 24 May 2009 00:32:37 +0300 + +xorg-server (2:1.6.1.901-2) unstable; urgency=low + + * Merge from upstream server-1.6-branch (commit a9f85dce). + * Fix FTBFS on kfreebsd (closes: #525475). Thanks, Petr Salinger! + + -- Julien Cristau Thu, 14 May 2009 17:37:40 +0200 + +xorg-server (2:1.6.1.901-1) experimental; urgency=low + + * New upstream development release + + fixes crash in CheckMotion with xinerama (closes: #524853) + + Refresh 20_hurd-i386.diff + + [ Brice Goglin ] + * Add 20_hurd-i386.diff to fix FTBFS on hurd-i386, + thanks Samuel Thibault! (closes: #523970) + + [ David Nusinow ] + * Have the reportbug script append lshal and drm info. + The drm info comes from grepping dmesg output. + + [ Julien Cristau ] + * Properly initialize libgcrypt in the libgcrypt patch (closes: #524822). + Thanks, Sven Joachim! + + -- David Nusinow Mon, 11 May 2009 21:50:37 -0400 + +xorg-server (2:1.6.1-1) unstable; urgency=low + + [ Julien Cristau ] + * Disable dri2 on hurd-i386. Thanks, Samuel Thibault! + + [ Brice Goglin ] + * New upstream release. + + -- Brice Goglin Wed, 15 Apr 2009 13:30:51 +0200 + +xorg-server (2:1.6.0-1) unstable; urgency=low + + [ David Nusinow ] + * Add 0001-xorg.conf-5-refer-to-mousedrv-4-.-Debian-394058.patch to + refer to correct (semi-obsolete) mouse driver manpage. + closes: #394058 + + [ Julien Cristau ] + * New upstream release. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: remove, + included upstream. + * Turn on ModeDebug by default. + * Use libgcrypt for SHA1 instead of OpenSSL's libcrypto. + * Build the xselinux extension on Linux architectures. + * Remove build-dependencies on x11proto-evie-dev, x11proto-trap-dev, + x11proto-xf86misc-dev; the corresponding extensions are removed. + * Remove build-dependencies on x11proto-print-dev, libfreetype6-dev and + xfonts-utils since we don't build Xprt anymore. + * Fix lintian warnings about xserver-xorg-core.NEWS formatting. + * Move -dbg package to new section debug, add ${misc:Depends} where missing. + * Remove unused 06_use_proc_instead_of_sysfs_for_pci_domains.diff, obsoleted + by pci-rework. + * Merge changelog entries 2:1.4.2-9 to 2:1.4.2-11. + * Upload to unstable. + + -- Julien Cristau Thu, 09 Apr 2009 00:36:40 +0100 + +xorg-server (2:1.6.0-0ubuntu15) karmic; urgency=low + + * Re-enable 999_default_modedebug_on.patch to provide debug info in + Xorg.0.log for development series. + + -- Bryce Harrington Sun, 10 May 2009 22:35:02 -0700 + +xorg-server (2:1.6.0-0ubuntu14) jaunty; urgency=low + + * Add 177_animated_cursor_change_master.patch: Fixes crash when using + animated cursors. + (LP: #358009) + + -- Bryce Harrington Wed, 08 Apr 2009 18:52:56 -0700 + +xorg-server (2:1.6.0-0ubuntu13) jaunty; urgency=low + + * Add 176_quell_warning_exacopydirty.patch: Quells innocuous but scary + sounding "exaCopyDirty: Pending damage region empty!" warning, as it + can lead to false-positives with bug reporters. + + -- Bryce Harrington Wed, 08 Apr 2009 14:49:36 -0700 + +xorg-server (2:1.6.0-0ubuntu12) jaunty; urgency=low + + * local/xvfb-run: Revert change from 2:1.6.0-0ubuntu9; prevents running + multiple times. + (LP: #357338. Reopen 348052 rejecting patch) + + -- Bryce Harrington Tue, 07 Apr 2009 15:21:32 -0700 + +xorg-server (2:1.6.0-0ubuntu11) jaunty; urgency=low + + * Add 175_set_pointer_screen_in_xtestfakeinput.patch: Fixes issue when + using Vino, mouse cursor can get stuck in the upper left corner of the + screen. The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid + out-of-range events when the lastSlave was an SD with an explicit axis range. + Device events sent through XTest don't need this flag, they are expected to be + in the valuator range of the device anyway. + (LP: #337926) + + -- Bryce Harrington Mon, 06 Apr 2009 17:22:35 -0700 + +xorg-server (2:1.6.0-0ubuntu10) jaunty; urgency=low + + * debian/patches/174_set_bg_pixmap_of_cow_to_none.patch: + - Set bg pixmap of composite overlay window to None. + Thanks to Havoc Pennington for the patch. + (LP: #356254). + + -- Alberto Milone Mon, 06 Apr 2009 15:06:14 +0200 + +xorg-server (2:1.6.0-0ubuntu9) jaunty; urgency=low + + * local/xvfb-run: Fixes race condition with concurrent invocations + (LP: #348052) + * local/xvfb-run, xvfb-run.1: Add correct docs about error codes + (LP: #328205) + * local/xserver-xephyr.1, rules, xserver-xephyr.install: Add man page + for xephyr + (LP: #134906) + + -- Bryce Harrington Wed, 01 Apr 2009 20:37:22 -0700 + +xorg-server (2:1.6.0-0ubuntu8) jaunty; urgency=low + + * Add 173_edid_quirk_philips_lcd.patch : + Quirk for wrongly reported screen dimensions. + Fixes "huge fonts" issues. + (LP: #353074) + + -- Tormod Volden Wed, 01 Apr 2009 19:47:13 +0200 + +xorg-server (2:1.6.0-0ubuntu7) jaunty; urgency=low + + * Add 172_cwgetbackingpicture_nullptr_check.patch: + - cwGetBackingPicture can segfault when minimizing/maximizing firefox with + a flash video playing. This appears to be a race condition in which the + backing picture's data is not always fully defined. + (LP: #319402) + + -- Bryce Harrington Mon, 30 Mar 2009 22:20:17 -0700 + +xorg-server (2:1.6.0-0ubuntu6) jaunty; urgency=low + + * Add 171_xkb_geometry_copying.patch: + - Fixes crash when plugging/unplugging USB devices due to incorrect + copying of XKB geometry base_color and label_color. Patch + cherrypicked from upstream. + (LP: #333222, #321946) + + -- Bryce Harrington Fri, 27 Mar 2009 19:58:33 -0700 + +xorg-server (2:1.6.0-0ubuntu5) jaunty; urgency=low + + [Tormod Volden] + * Disable 160_log_timestamping.patch before the beta, this was only used + for testing, and the patch also has a serious stack corruption bug. + (LP: #328035) + + [Bryce Harrington] + * Disable 999_default_modedebug_on.patch before the beta, this was used + only for testing. + * Add 169_mipointer_nullptr_checks.patch: + - MIPOINTER() can return NULL in some circumstances, so always check + its return value before dereferencing. + - Fixes crash with keyrepeat on non-primary screen on -nvidia when + using Xinerama (and probably other serious mipointer-related crashes) + (LP: #324465) + * Add 170_primary_pci_video_device.patch: + - Patch from redhat + - Fixes failure when multiple video cards are present. Xserver currently + exits with an error "(EE) No device detected" in such cases. + (LP: #267241) + + -- Bryce Harrington Tue, 24 Mar 2009 09:57:17 -0700 + +xorg-server (2:1.6.0-0ubuntu4) jaunty; urgency=low + + * Add 168_glibc_trace_to_stderr.patch: + - Catch glibc internal abort traces on stderr instead of to the + controlling terminal (LP: #345748). + + -- Kees Cook Thu, 19 Mar 2009 22:39:33 -0700 + +xorg-server (2:1.6.0-0ubuntu3) jaunty; urgency=low + + * Add 165_man_xorg_conf_no_device_ident.patch: + - Device identifier no longer necessary in Screen section of + xorg.conf. Update man page accordingly. + (LP: #261577) + * Add 166_nullptr_xinerama_keyrepeat.patch: + - Avoids null pointer dereference when holding down keys on + non-primary screen when using TwinView / Xinerama on -nvidia. + (LP: #324465) + * Add 167_nullptr_xisbread.patch: + - Avoids null pointer dereference in XisbRead to prevent a (difficult + to reproduce) crash during or after a resume from RAM. + (LP: #324368) + + -- Bryce Harrington Thu, 19 Mar 2009 00:17:40 -0700 + +xorg-server (2:1.6.0-0ubuntu2) jaunty; urgency=low + + * Add 163_thinko_in_xf86targetpreferred.patch: + - For monitors that do not define a "preferred" mode, if the monitor + is not connected to the first output, X wouldn't pick up the mode + correctly, resulting in a "No modes" error in Xorg.0.log and dropping + user to failsafe-X mode. + (LP: #335214) + * Add 164_trap-aspect-ratios.patch: + - Some monitors fib in the EDID they provide, giving their physical + dimensions in the global block, and their aspect ratio(!) in + the detailed timings. This totally messes up DPI calculations + resulting in huge fonts. + (LP: #320930) + + -- Bryce Harrington Wed, 18 Mar 2009 20:47:12 -0700 + +xorg-server (2:1.6.0-0ubuntu1) jaunty; urgency=low + + [ Bryce Harrington ] + * New upstream release + - Fixes segfault during X startup for drivers with RANDR < 1.2 + (LP: #319210) + - Fixes EDID for monitors that incorrectly report aspect ratio instead + of resolution (LP: #311485) + - Fixes issue where X stops responding to mouse clicks after some time + if using Xinerama. (LP: #296167) + * Add 162_null_crtc_in_rotation.patch: Fixes crash when two displays on + separate cards are attached. X doesn't work with multiple cards yet, + but crashing is not an appropriate way to handle such a situation. + (LP: #139990) + + [ Timo Aaltonen ] + * 159_xinerama_focus.patch, + 161_force_paired_kbd_device.patch: + - Dropped, applied upstream + + -- Bryce Harrington Fri, 06 Mar 2009 14:44:31 -0800 + +xorg-server (2:1.5.99.902-1) experimental; urgency=low + + * New upstream release candidate. + * xserver-xorg-core.install: there are no more font modules. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: new patch, + fixes a crash with some multimedia keyboards (closes: #513384). + + -- Julien Cristau Sat, 31 Jan 2009 19:32:31 +0100 + +xorg-server (2:1.5.99.902-0ubuntu7) jaunty; urgency=low + + * Add 161_force_paired_kbd_device.patch: Fixes issue where a multimedia + keyboard (or keyboard-like device) sends its multimedia key events + through the mouse device file. In this case, pair the device with the + master before processing the events. Patch cherrypicked from upstream. + (LP: #318261) + + -- Bryce Harrington Tue, 17 Feb 2009 17:20:51 -0800 + +xorg-server (2:1.5.99.902-0ubuntu6) jaunty; urgency=low + + * Add 999_default_modedebug_on.patch. Defaults ModeDebug to on. + Upstream requests that users include this option when forwarding bugs + upstream, thus it should be carried at least during development and + reverted by -beta. Performance won't be impacted, and boot time will + be slowed only a negligible amount, as it merely adds a few additional + prints. + + -- Bryce Harrington Tue, 10 Feb 2009 14:06:38 -0800 + +xorg-server (2:1.5.99.902-0ubuntu5) jaunty; urgency=low + + * Revert 158_raise_maxclients.patch. Breaks -nvidia. Binary drivers FTL. + (LP: #326344) + + -- Bryce Harrington Mon, 09 Feb 2009 13:51:04 -0800 + +xorg-server (2:1.5.99.902-0ubuntu4) jaunty; urgency=low + + * 160_log_timestamping.patch: Only add timestamp on tagged messages + (LP: #285787) + + -- Tormod Volden Fri, 06 Feb 2009 23:33:11 +0100 + +xorg-server (2:1.5.99.902-0ubuntu3) jaunty; urgency=low + + * Add 160_log_timestamping.patch: Show timestamps in Xorg.*.log + files. + (LP: #285787) + + -- Bryce Harrington Fri, 06 Feb 2009 06:28:48 -0800 + +xorg-server (2:1.5.99.902-0ubuntu2) jaunty; urgency=low + + [Bryce Harrington] + * Add 157_check_null_modes.patch: Catch null pointer dereference in + video mode selection, which can cause xserver crash when using SDL + applications with qemu/kvm. + (LP: #300310) + * Add 158_raise_maxclients.patch to raise max number of clients from 256 + to 512. Trade-off is that this reduces client resources available to + 1,048,576 total resources (which should still be ample). + (LP: #260138) + + [Steven Harms] + * 159_xinerama_focus.patch: Resolves xinerama focus issues + with multiple screens + (LP: #41301) + + -- Bryce Harrington Wed, 04 Feb 2009 22:33:28 -0800 + +xorg-server (2:1.5.99.902-0ubuntu1) jaunty; urgency=low + + * New upstream release candidate. + + -- Timo Aaltonen Sat, 31 Jan 2009 11:03:52 +0200 + +xorg-server (2:1.5.99.901-2) experimental; urgency=low + + [ Julien Cristau ] + * Bump libdrm-dev build-dep to help out sbuild. + + [ Timo Aaltonen ] + * debian/rules: Disable builtin fonts (LP: #308649, closes: #512706) + + -- Julien Cristau Fri, 23 Jan 2009 21:16:14 +0100 + +xorg-server (2:1.5.99.901-1ubuntu1) jaunty; urgency=low + + * Merge with Debian experimental. + * debian/rules: Include xorg-server.conf for dbus support. + + -- Timo Aaltonen Fri, 23 Jan 2009 13:53:33 +0200 + +xorg-server (2:1.5.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + adds autodetection of sbus devices (closes: #483942). + Thanks, Bernhard R. Link! + + RandR version 1.3 adds panning (closes: #509699). + + fixes a crash with XAA and fb24_32ReformatTile (closes: #443480). + + correctly sets RAW mode on the console when xorg.conf is absent + (closes: #505746). + + [ Timo Aaltonen ] + * debian/control: + - Add x11proto-dri2-dev to build-depends. + - Bump the x11proto-randr-dev build-dep version to 1.2.99.3. + - Bump the libpixman-1-dev build-dep version to 0.13.2. + - Bump the xtrans-dev build-dep version to 1.2.2. + - Bump the x11proto-xext-dev build-dep version to 7.0.3. + - Bump the x11proto-input-dev build-dep version to 1.5. + - Bump the libgl1-mesa-dev and mesa-common-dev build-dep to + 7.2+git20081209.a0d5c3cf. + - Bump the x11proto-core build-dep to 7.0.13. + - Add a build-dep on libxinerama-dev. + - Conflict xserver-xorg-video-4, xserver-xorg-input-2.1. + * debian/rules: + - Enable dri2 again. + * debian/patches: + 02_Disable-DRI-in-Xephyr.patch + 03_glx-init-infinite-loop.diff + - Dropped, implemented upstream. + 13_debian_add_xkbpath_env_variable.diff + - Disabled for now, needs to be reimplemented or dropped. + * debian/{input,video}abiver: Bump the input (4) and videoabiver (5). + * debian/serverminver: Bump to 2:1.5.99.901. + + [ Julien Cristau ] + * Ditch the GLX Public License and the CID Font Code Public License from + debian/copyright. The CID code has been removed a while ago, and all code + under the GLXPL has been relicensed to the SGI Free Software License B 2.0. + This finally closes: #211765. + + [ Yves-Alexis Perez ] + * debian/control: update deps for xserver-xorg-dev: + - libpixman-1-dev (>= 0.13.2-1) + - x11proto-core-dev (>= 7.0.14) + - x11proto-input-dev (>= 1.5.0) + - x11proto-xext-dev (>= 7.0.4) + - x11proto-randr-dev (>= 1.2.99.3) + - add x11proto-dri2-dev + + -- Julien Cristau Wed, 21 Jan 2009 20:59:34 +0100 + +xorg-server (2:1.5.99.901-0ubuntu1) jaunty; urgency=low + + [ Timo Aaltonen ] + * debian/rules: Enable dbus-support. + * Merge current server-1.6-branch. + * Disable patch 107 for now, to see what kind of a performance hit + it'll be. The problem it causes is random garbage on windows + while apps are being loaded. + (LP: #254468) + * Remove patches 150, 151, 152, 154, applied upstream. + + [ Bryce Harrington ] + * 156_exevents_copykeyclass_nullptrcheck.patch: Add several NULL pointer + checks in CopyKeyClass to prevent SEGFAULT seen when pressing button + on an ATI USB remote control. + (LP: #311254) + + -- Timo Aaltonen Sat, 17 Jan 2009 16:17:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu3) jaunty; urgency=low + + [Timo Aaltonen] + * debian/rules: Disable builtin fonts (LP: #308649) + + [Bryce Harrington] + * 135_rethrow_signals.patch: Update for 1.6 and re-enable. + (LP: #226668) + + -- Bryce Harrington Tue, 16 Dec 2008 19:04:14 -0800 + +xorg-server (2:1.5.99.3-0ubuntu2) jaunty; urgency=low + + * Merge server-1.6-branch (LP: #308225). + + -- Timo Aaltonen Tue, 16 Dec 2008 10:00:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu1) jaunty; urgency=low + + * Merge from debian experimental git branch. + * Dropped patches: + - 103_inputproto_1.4.3_is_fine.patch: obsolete + - 137_add_device_property_support.patch: upstream + - 138_look_at_all_bytes_of_dev_enabled.diff: upstream + - 141_improved_driver_selection.patch: upstream + - 150_no_visibility_notify_on_unredirect.patch: upstream + * 110_fedora_no_move_damage.patch modified to use new function names. + * Renumbered 142_psb_auto.patch to 103. + * Add a couple of patches from the proposed queue: + - 150_dont-update-vcp-valuators.patch + The VCP doesn't need to update the valuators anyway since it cannot + send XI events. Just skip that bit. + - 151_allow-null-as-rulesfile.patch + If no rules file is given, simply re-use the previous one. If no + RF is given the first time this function is called, use the + built-in default. + - 152_let-the-ddx-decide-on-the-xkbrulesdefaults.patch + Rather than assuming rules in the CoreKeyboardProc, init the default + rules in InitCoreDevices, then re-use them later. + * Add 153_make_dmx_compile.patch + - Change xcalloc -> calloc, so that dmx compiles. Not tested if it + also works. + * Drop patch 136, since SwitchCoreKeyboard is gone, and patches 151/152 + basically reimplement the functionality. + * Add 154_force-copykeyclass-for-key-events.patch, to fix fdo + bug 19048. Without this the server default layout would always be + used. + + [ Bryce Harrington ] + * Patch 135 updated so that apport actually works now, but leave it + disabled until the code is updated for 1.6. + + -- Timo Aaltonen Mon, 15 Dec 2008 11:34:53 +0200 + + +xorg-server (2:1.5.3-1ubuntu1) jaunty; urgency=low + + * Merge from debian-experimental, remaining changes: + + debian/control: + - x11proto-input-dev, libxi-dev build-deps bumped because of + input properties. + - Conflict with xserver-xorg-video-psb << 0.15.0-0ubuntu1~804um5 + as these versions didn't have an ABI provide. + - Breaks old synaptics, evdev which didn't have properties. + + debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 103_inputproto_1.4.3_is_fine.patch: + Don't require inputproto 1.4.4 in configure.ac. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 135_rethrow_signals.patch + Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + - 136_fedora_force_switchcorekeyboard_for_evdev.patch + Allow clients to set the layout. + - 137_add_device_property_support.patch + Add support for input-device properties (XI 1.5). + - 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + - 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. + - 141_improved_driver_selection.patch + Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + - 142_psb_auto.patch + Autoload vesa for the psb hardware, psb being broken currently. + - 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + - 150_no_visibility_notify_on_unredirect.patch + Do not sent VisibilityNotify events when MapUnmapEvents + are disabled + + debian/local/xvfb-run: disable the Composite-extension for xvfb. + + debian/serverminver: Bump the serverminver because of the newer + properties API. + + debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default as part of the SELinux merge. However, we need + the security module for xauth on Kubuntu, else ubiquity fails. + (LP 247537) + * Changes done: + - debian/control: xfvb doesn't need to Depend on xauth, xfonts-base + anymore, Recommends are pulled in by default now. + + -- Timo Aaltonen Wed, 26 Nov 2008 13:42:11 +0200 + +xorg-server (2:1.5.3-1) experimental; urgency=low + + [ Loic Minier ] + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + [ Julien Cristau ] + * New upstream release. + * Fix infinite loop on server reset when swrast_dri.so is missing. Only + push swrast on the glx provider stack on first generation, so we don't + turn the stack into a circular list (closes: #500287). + * Enable the record extension (closes: #504303). + * Merge changes from 2:1.4.2-8. + + -- Julien Cristau Tue, 11 Nov 2008 23:17:14 +0100 + +xorg-server (2:1.5.2-2ubuntu3) intrepid; urgency=low + + * 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + (LP: #281610) + + -- Bryce Harrington Thu, 23 Oct 2008 07:31:47 -0700 + +xorg-server (2:1.5.2-2ubuntu2) intrepid; urgency=low + + * 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + (LP: #261977) + + -- Bryce Harrington Thu, 23 Oct 2008 06:21:18 -0700 + +xorg-server (2:1.5.2-2ubuntu1) intrepid; urgency=low + + * debian/patches/150_no_visibility_notify_on_unredirect.patch + - do not sent VisibilityNotify events when MapUnmapEvents + are disabled (LP: #278112) + + -- Michael Vogt Sat, 18 Oct 2008 00:05:30 +0200 + +xorg-server (2:1.5.2-1ubuntu4) intrepid; urgency=low + + * Update patch 142_psb_auto to only try vesa, not even psb, as this requires + the psb driver to be loadable, and it's not available anymore (and broken + anyway). + + -- Loic Minier Wed, 15 Oct 2008 18:14:28 +0200 + +xorg-server (2:1.5.2-1ubuntu3) intrepid; urgency=low + + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + -- Loic Minier Wed, 15 Oct 2008 17:57:13 +0200 + +xorg-server (2:1.5.2-1ubuntu2) intrepid; urgency=low + + * Update patch 142_psb_auto to also try psb and vesa for 0x8109. + * Apply and drop patch 123_no_composite_for_xvfb_run which was changing + files below debian/ (xvfb-run, to disable the Composite extension by + default). + + -- Loic Minier Wed, 15 Oct 2008 15:27:23 +0200 + +xorg-server (2:1.5.2-1ubuntu1) intrepid; urgency=low + + * Merge from debian-experimental. + * Update patch 142_psb_auto to try vesa if psb fails; thanks Oliver Grawert. + * Refresh patch 100_xserver_exa_force_greedy to apply cleanly. + * Let xserver-xorg-core conflict with xserver-xorg-video-psb + << 0.15.0-0ubuntu1~804um5 as these versions didn't have an ABI provide. + + -- Loic Minier Tue, 14 Oct 2008 23:03:06 +0200 + +xorg-server (2:1.5.2-1) experimental; urgency=low + + * New upstream bugfix release. + * debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching using + plain text files provided by drivers. + * Don't pass --with-serverconfig-path to configure, we only used to override + it for Xprint. + * Re-introduce the xserver-common package, containing + /usr/lib/xorg/protocol.txt and the Xserver(1) manpage for now. + * debian/rules: Use filter instead of findstring for noopt in + DEB_BUILD_OPTIONS. + * Remove obsolete conffile /etc/X11/xserver/SecurityPolicy on upgrades. + * Merge changes from 2:1.4.2-7. + + -- Julien Cristau Sat, 11 Oct 2008 20:20:28 +0200 + +xorg-server (2:1.5.1-1ubuntu3) intrepid; urgency=low + + * Pull upstream changes from server-1.5-branch including b595b65e: + - Fix GKVE with key_code > 255 (LP: #274203) + - DGA: Fix ProcXF86DGASetViewPort for missing support in driver. + Fixes a segfault when trying to activate a DGA mode without + checking whether DGA modesetting is at all possible. + - Check nextEnabledOutput()'s return in bestModeForAspect() + In case no enabled outputs, we will reference wrong index of + output array. + - int10: Fix a nasty memory leak. + - int10: Don't warn when scanning for devices we don't have. + Some BIOSes (hi XGI!) will attempt to enumerate the PCI bus by + asking for the config space of every possible device number. + This despite perfectly functional BIOS methods to enumerate the + bus exactly. + - int10: Remove useless check. + If you have more than one PCI device with the same d/b/d/f, you're + already in trouble. + - http://bugs.freedesktop.org/show_bug.cgi?id=14373 + xkb: squash canonical types into explicit ones on core reconstruction. + xkb: fix core keyboard map generation. + - xkb: fix use of uninitialized variable. + - Remove usage of mfbChangeWindowAttributes missed in e4d11e58c... + - Only build dri2 when DRI2 is enabled. + * Merge patches 138 and 139 into 137, and update the properties API to + match the current version in master (final API for XI 1.5). + (LP: #274728) + * Bump the build-dep on x11proto-input-dev and libxi-dev. + * Bump the serverminver because of newer properties API. + * Add Breaks against current synaptics and evdev, since they use the old + API and need to be updated with the server. + + -- Timo Aaltonen Fri, 10 Oct 2008 11:16:56 +0300 + +xorg-server (2:1.5.1-1ubuntu2) intrepid; urgency=low + + * Merge with Debian experimental: + - debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching + using plain text files provided by drivers. (LP: #261977) + + -- Timo Aaltonen Fri, 26 Sep 2008 12:05:12 +0300 + +xorg-server (2:1.5.1-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. (LP: #269388) + + -- Timo Aaltonen Wed, 24 Sep 2008 19:33:34 +0300 + +xorg-server (2:1.5.1-1) experimental; urgency=low + + * New upstream bugfix release. + * 02_Disable-DRI-in-Xephyr.patch: don't use DRI in Xephyr, as it doesn't + work correctly. + * Merge changelog from 2:1.4.2-6 (all changes are upstream now). + + -- Julien Cristau Wed, 24 Sep 2008 17:49:18 +0200 + +xorg-server (2:1.5.0-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * 141_improved_driver_selection.patch + - Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + * 142_psb_auto.patch + - Renamed, refreshed. + + -- Timo Aaltonen Tue, 09 Sep 2008 11:44:13 +0300 + +xorg-server (2:1.5.0-1) experimental; urgency=low + + * New upstream release. + * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch, + 1.2 requests are properly swapped now. + * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION. Yes, that means + rebuilding video drivers; sorry about that. + + -- Julien Cristau Thu, 04 Sep 2008 02:05:47 +0200 + +xorg-server (2:1.4.99.906-2ubuntu5) intrepid; urgency=low + + * Bump the serverminver because of input properties. + + -- Timo Aaltonen Wed, 03 Sep 2008 16:03:28 +0300 + +xorg-server (2:1.4.99.906-2ubuntu4) intrepid; urgency=low + + [ Bryce Harrington ] + * 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. (LP: #247195) + + -- Timo Aaltonen Wed, 03 Sep 2008 10:48:24 +0300 + +xorg-server (2:1.4.99.906-2ubuntu3) intrepid; urgency=low + + [ Bryce Harrington ] + * 135_rethrow_signals.patch: Update to make it catch and throw a + wider variety of signals, and do a clean shutdown of the X server + (code borrowed from FatalError()). + + -- Bryce Harrington Mon, 01 Sep 2008 13:19:46 -0700 + +xorg-server (2:1.4.99.906-2ubuntu2) intrepid; urgency=low + + * 103_inputproto_1.4.3_is_fine.patch: + - Don't require inputproto 1.4.4 in configure.ac.. + + -- Timo Aaltonen Thu, 28 Aug 2008 13:24:05 +0300 + +xorg-server (2:1.4.99.906-2ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * Dropped patches, upstream: + 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 131_remove_open-coded_strcasestr.patch + 132_add_parsing_for_xkb.options.patch + 133_support_strlist_for_xkboptions.patch + 134_protect_against_out_of_bounds.patch + * control: Fix build-dep on inputproto to >= 1.4.3-2ubuntu2 for + DeviceControlChanged. + + -- Timo Aaltonen Thu, 28 Aug 2008 12:39:33 +0300 + +xorg-server (2:1.4.99.906-2) experimental; urgency=low + + * Pull from server-1.5-branch as of Aug 27th + + input devices from xorg.conf aren't ignored if there is no ServerLayout + option (closes: #492140) + * Bump build-dep on inputproto to >= 1.4.4 for DeviceControlChanged. + * Merge in changes from 2:1.4.2-3 to 2:1.4.2-5. + + -- Julien Cristau Thu, 28 Aug 2008 00:33:02 +0200 + +xorg-server (2:1.4.99.906-1ubuntu4) intrepid; urgency=low + + * 137_add_device_property_support.patch, + 138_xi_expose_enable_disabledevice.patch, + 139_xi_protect_against_null_handlers.patch: + - Add support for input-device properties. + * debian/control: Bump the build-depends on x11proto-input-dev + and libxi-dev. + + -- Timo Aaltonen Fri, 22 Aug 2008 09:00:14 +0300 + +xorg-server (2:1.4.99.906-1ubuntu3) intrepid; urgency=low + + * 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 136_fedora_force_switchcorekeyboard_for_evdev.patch + - Allow clients to set the layout. + * Drop 130_fedora_call_switchcorekeyboard.patch, obsoleted. + + -- Timo Aaltonen Wed, 06 Aug 2008 13:30:28 +0300 + +xorg-server (2:1.4.99.906-1ubuntu2) intrepid; urgency=low + + * Add 135_rethrow_signals.patch + - Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + + -- Bryce Harrington Tue, 05 Aug 2008 16:20:46 -0700 + +xorg-server (2:1.4.99.906-1ubuntu1) intrepid; urgency=low + + * Merge with debian experimental, 1.5RC6 (LP: #247120, #253021) + * Drop 120_fedora_xserver-xaa-evict-pixmaps.patch, because offscreen + pixmaps are already disabled by default. + * Drop 124_fix_randr_no_crtc.patch, fixed upstream. + * Add 130_fedora_call_switchcorekeyboard.patch, a hack to fix fd.o bug + #16364. Breaks if the first hotplugged keyboard is not the wanted + keyboard. + * Patches from upstream master: + 131_remove_open-coded_strcasestr.patch + - pre-requisite for the rest + 132_add_parsing_for_xkb.options.patch + - parsing xkb.options didn't work (fd.o #16874) + 133_support_strlist_for_xkboptions.patch + - allow using a list for xkb.options like before. + 134_protect_against_out_of_bounds.patch + - protect against potential out-of-bounds indexing. + + -- Timo Aaltonen Tue, 05 Aug 2008 01:49:42 +0300 + +xorg-server (2:1.4.99.906-1) experimental; urgency=low + + * debian/rules: drop useless handling of nostrip in DEB_BUILD_OPTIONS (this + is taken care of by dh_strip); make the rules files and xsfbs.mk + parallel-safe, and enable parallel=n using example code from Debian + Policy. + * debian/rules: put the source package name and version in builderstring + instead of osvendor, add builder email as well; don't explicitly set + osname, configure sets it to $(uname -srm) by default. + * New upstream release candidate. + - fixes 64-bit Xephyr (closes: #491569) + - work around the DIX losing physical monitor dimensions for randr 1.1 + drivers, in particular nvidia (closes: #488987) + - make sure RANDR reports refresh as 0 if pixel clock is 0 (closes: + #490258) + - doesn't try to load dri2 when it's not built (closes: #491651) + * Switch to running autoreconf at build time, and build-depend on automake, + libtool and xutils-dev. + * Reformat the SGI Free Software License B, to shut up over 1000 lintian + warnings. + + -- Julien Cristau Sun, 27 Jul 2008 18:30:45 +0200 + +xorg-server (2:1.4.99.905-0ubuntu5) intrepid; urgency=low + + * debian/rules: + Added --enable-record. By default, xorg-server does not build the + RECORD extension. Added the record module (for Xnee and other purposes). + + -- Chris Nasho Thu, 31 Jul 2008 17:26:00 -0400 + +xorg-server (2:1.4.99.905-0ubuntu4) intrepid; urgency=low + + * debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default in commit 86b2e59bfb79bd042a13c35fbb4ccecec576f629, + as part of the SELinux merge. However, we need the security module + for xauth on Kubuntu, else ubiquity fails. (Ref. LP 247537) + + -- Bryce Harrington Wed, 16 Jul 2008 06:01:45 -0700 + +xorg-server (2:1.4.99.905-0ubuntu3) intrepid; urgency=low + + * patches/124_fix_randr_no_crtc.patch: + + In certain circumstances, xrandr multiscreen initialization fails + to associate crtcs with monitors, resulting in startup failures + in some GDK-based applications when using -vesa. This occurs + because mode-Clock, mode->HTotal, and mode->VTotal are all 0. + (LP: #246585) + + -- Bryce Harrington Tue, 15 Jul 2008 07:01:13 -0700 + +xorg-server (2:1.4.99.905-0ubuntu2) intrepid; urgency=low + + * Merge with debian git, new changes: + - Build with --enable-glx-tls, we build mesa with TLS support + (otherwise swrast_dri.so might fail to load due to unresolved + symbols). + - Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without + this package, the GLX extension fails to initialise (and takes the + server down) due to missing swrast_dri.so. + + -- Timo Aaltonen Mon, 07 Jul 2008 11:44:39 +0300 + +xorg-server (2:1.4.99.905-0ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental, remaining changes: + * debian/control: + - Change maintainer address. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 104_psb_auto.patch + Add automatic detection of Poulsbo hardware when running without a + Device definition. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch + A hack to evict XAA pixmaps and disable the pixmap cache when the first + texture is bound. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + * Cleaned up patches: + - upstream, either directly or otherwise implemented: + 103_fedora_openchrome.patch, 105_reduce_wakeups_from_smart_scheduler.diff + 108_fedora_honor_displaysize.patch, 109_glx_fail_if_no_texture_bound.diff + 144_fedora_xserver-1.3.0-xnest-exposures.patch, + 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch, + 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch, + 148_dix_touchscreen_fixes.diff, + 149_add_quirks_for_physical_screen_size_issues.patch, + 150_edid_quirk_lp154w01.patch, 151_x86emu_handle_cpuid.patch, + 153_exa_skip_empty_glyphs.diff, 154_fix_rotation_for_multimon.diff, + 155_exa_fix_off-by-one.diff, 156_resize_composite_overlay.diff, + 157_fix_exa_pixmap_width.diff, 158_xkb_wrapping.diff, + 159_xkb_default_to_null.diff, 160_default_to_intel.diff, + 161_fix_big_endian_cursor.diff, 162_cve-2007-6429.diff, + 163_fix_untrusted_access.diff, 164_fix_context_sharing.diff, + 165_fedora_xserver-1.5.0-xaa-option-inversion.patch, + 166_fix_lpl_monitors.diff, 167_xf86AutoConfig_geode_addition.diff, + 168_closedir.patch, + 170_xorg-xserver-1.4-cve-2008-1377.diff, + 171_xorg-xserver-1.4-cve-2008-1379.diff, + 172_xorg-xserver-1.4-cve-2008-2360.diff, + 173_xorg-xserver-1.4-cve-2008-2361.diff, + 174_xorg-xserver-1.4-cve-2008-2362.diff + - obsolete: + 101_fedora-apm-typedefs.patch + 104_fedora_init_origins_fix.patch + 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - unnecessary: + 106_ubuntu_fpic_libxf86config.patch (the lib is not shipped) + + -- Timo Aaltonen Fri, 04 Jul 2008 13:39:34 +0300 + +xorg-server (2:1.4.99.905-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + - fixes FTBFS on alpha (closes: #472205); won't work, though, because + of #485528 + - fixes FTBFS on GNU/kFreeBSD (closes: #482550) + * 001_ubuntu_add_extra_modelines_from_xorg.patch: remove, replace with + 001_fedora_extramodes.patch stolen from fedora 9 cvs, rev 1.8. + * xvfb: recommend xauth instead of xbase-clients. + * xserver-xfbdev: recommend xfonts-base. + * debian/rules: drop our special handling for stripping modules, which I + think dates back to the days of the custom module loader. + * debian/rules: drop some remaining xprintisms. + * bump serverminver to 2:1.4.99.905. + * Stop build-depending on mesa-swx11-source (mesa 7.1 will build the + software driver itself), and don't pass --with-mesa-source to configure. + * Build with --enable-glx-tls, we build mesa with TLS support (otherwise + swrast_dri.so might fail to load due to unresolved symbols). + * Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without this + package, the GLX extension fails to initialise (and takes the server down) + due to missing swrast_dri.so. + + [ Timo Aaltonen ] + * Re-enable dri & glx. + * Add a build-dep on mesa-common-dev (>= 7.1~rc1) and bump the desired + version of libgl1-mesa-dev respectively. + * Bump the libdrm-dev build-dep version to 2.3.1. + + -- Julien Cristau Sun, 13 Jul 2008 23:33:05 +0200 + +xorg-server (2:1.4.99.902-1) experimental; urgency=low + + * Add postrm script for xserver-xorg-core, to remove + /var/log/Xorg.*.log{,.old} on purge (closes: #343384). + * Use dh_* -s instead of -a in binary-arch, to fix FTBFS on s390 (which + doesn't build xserver-xfbdev). + * New upstream release candidate. + + refresh 13_debian_add_xkbpath_env_variable.diff + + doesn't crash when there is no pci device (closes: #472823) + + includes a quirk for LPL monitors with broken EDID (closes: #473260) + + XKB is now enabled in Xnest (closes: #164379) + * Stop building Xprt, and drop related patches; it will be provided as a + separate package. + + -- Julien Cristau Fri, 23 May 2008 00:58:45 +0200 + +xorg-server (2:1.4.99.901-2) experimental; urgency=low + + * xserver-xorg-dev needs to depend on libpciaccess-dev. + * Pull from upstream server-1.5-branch as of March 21st (commit 98249dfa). + + fixes build on ia64 (closes: #471663) + * Add missing conflicts on xserver-xorg-input-2. + + -- Julien Cristau Fri, 21 Mar 2008 22:40:36 +0100 + +xorg-server (2:1.4.99.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + * Update patches: + + 001_ubuntu_add_extra_modelines_from_xorg.patch: remove useless + whitespace changes + + 02_libvgahw_gcc4_volatile_fix.diff: delete, the gcc bug this was working + around is fixed for a long time + + 03_auto_load_driver.diff, 04_auto_load_driver_no_conf.diff, + 05_kill_type1.diff, 07_autoconfig_screen_with_device_section.diff, + 08_better_dpms_logging.diff, 10_dont_look_in_home_for_config.diff, + 11_dont_crash_on_bad_dri_mode.diff, 14_default_screen_section.diff, + 21_glx_align_fixes.patch, 40_default_dpi_96.patch, + 41_vbe_filter_less.diff, + 42_dont_break_grab_and_focus_for_window_when_redirecting.diff, + 43_allow_override_BIOS_EDID_preferred_mode.diff, + 44_preferredmode_infinite_loop.diff, + 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff, + 46_reduce_wakeups_from_smart_scheduler.patch, + 47_fbdevhw_magic_numbers.diff, 51_xkb-and-loathing.diff, + 93_xprint_fonts_fix: remove, applied upstream + + 06_use_proc_instead_of_sysfs_for_pci_domains.diff: disable for now, + shouldn't be needed with pciaccess + + 13_debian_add_xkbpath_env_variable.diff: refresh + + 94_xprint_XSERVER_LIBS: disable, should be fixed upstream + * Disable glx, dri and dri2 for now. + * Re-enable dmx, build the xdmx and xdmx-tools packages. + * Add build-deps on libpciaccess-dev and libssl-dev for Xorg, bump build-dep + on libpixman-1-dev to >= 0.9.5. + * Add build-dep on libxv-dev for Xephyr. + * Drop XS- prefix from Vcs-* debian/control fields. + * Bump videoabiver to 2.9, inputabiver to 2.1, serverminver to 2:1.4.99.901. + * Drop obsolete --with-rgb-path configure option. + * /etc/X11/xserver/SecurityPolicy is gone, don't install it. + * Don't build-dep on "foo (>= bar-1)", to fix lintian warnings. + + [ Drew Parsons ] + * Remove 94_xprint_XSERVER_LIBS (not needed in xserver 1.5). + + [ Brice Goglin ] + * Build the Xfbdev server for real now, in new package xserver-xfbdev, + closes: #439764. + + -- Julien Cristau Fri, 14 Mar 2008 13:46:48 +0100 + +xorg-server (2:1.4.2-11) unstable; urgency=low + + * Bump x11proto-input-dev build-dep to >= 1.5.0 to fix keyboard layout + breakage with new libxi built against the same. Closes: #515976 + + -- David Nusinow Thu, 19 Feb 2009 21:52:24 -0500 + +xorg-server (2:1.4.2-10) unstable; urgency=medium + + * Cherry-pick from upstream: GLcore: make googleearth not crash the server + on sw-rendering (closes: #495483). + + -- Julien Cristau Fri, 09 Jan 2009 02:26:06 +0100 + +xorg-server (2:1.4.2-9) unstable; urgency=low + + * Cherry-pick patches from upstream to make xf86ScaleAxis() work correctly. + * Steal patch from Fedora: more sanity checks to stop vmmouse from + segfaulting the server (closes: #503459). + + -- Julien Cristau Thu, 13 Nov 2008 23:32:47 +0100 + +xorg-server (2:1.4.2-8) unstable; urgency=low + + * Add patch from Petr Salinger to fix PCI domain support on kfreebsd + (closes: #499501). + * xfree86: xf86SetDepthBpp needs to respect the driver's depth24flags. + Instead of forcing a 32bpp framebuffer, we pick a value that the driver + actually supports (closes: #504819, #486925); cherry-picked from upstream + git. + + -- Julien Cristau Tue, 11 Nov 2008 20:46:52 +0100 + +xorg-server (2:1.4.2-7) unstable; urgency=low + + * Update debian/copyright to the SGI Free Software License B, version 2.0. + It now mirrors the free X11 license used by X.Org. + http://www.sgi.com/company_info/newsroom/press_releases/2008/september/opengl.html + * Not closing bug#211765 for now, because GL/glx/glxext.c and + hw/dmx/glxProxy/glxext.c are covered by the GLX Public License, which is + still not free. SGI has since released their code under FreeB, but that + doesn't necessarily apply to contributions from other people. Hopefully + this can be cleared up soon, though. + * xvfb-run: append to $ERRORFILE instead of truncating it, so the error + output from Xvfb is not deleted when we run 'xauth remove'. + + -- Julien Cristau Tue, 30 Sep 2008 00:39:58 +0200 + +xorg-server (2:1.4.2-6) unstable; urgency=low + + * Xevie: always set rep.length to 0 (closes: #497337). Thanks, Thorvald + Natvig! + * Xevie: swap replies if necessary, to not confuse clients with a different + endianness. + * Cherry-picked from upstream git: + XF86VidMode: Correct a NULL pointer dereference (closes: #498289) + + -- Julien Cristau Mon, 15 Sep 2008 01:21:13 +0200 + +xorg-server (2:1.4.2-5) unstable; urgency=low + + * Don't pretend we support randr 1.2 when queried by swapped clients. The + dispatch code for RandR 1.2 requests would return BadImplementation anyway + (closes: #495833). + * Cherry-picked from upstream: + + exa: fix assert logic thinko. + + -- Julien Cristau Tue, 26 Aug 2008 19:27:34 +0200 + +xorg-server (2:1.4.2-4) unstable; urgency=low + + * Re-enable patch 47_fbdevhw_magic_numbers.diff, fixes xen framebuffer + (closes: #493901). Thanks, Olivier Tétard! If someone knows why I + disabled it a year ago, I'd love to know. + + -- Julien Cristau Fri, 15 Aug 2008 19:15:54 +0200 + +xorg-server (2:1.4.2-3) unstable; urgency=low + + * Add Romanian debconf translation (closes: #489069). Thanks, Eddy + Petrișor! + * Update Dutch debconf translation (closes: #491663). Thanks, Thijs + Kinkhorst! + * Pull from server-1.4-branch: + - Xi: ChangeDeviceControl presence events should set the appropriate + devchange + - Fix potential crasher in xf86CrtcRotate() + * Cherry-picked from 1.5: + - Work around the DIX losing mmWidth/mmHeight for RandR 1.1 DDXen + (closes: #491526). + + -- Julien Cristau Sat, 02 Aug 2008 23:22:32 +0200 + +xorg-server (2:1.4.2-2) unstable; urgency=low + + [ Julien Cristau ] + * GLX: zero the buffer used in __glXDisp_GetVisualConfigs (backport from + upstream). + + [ Brice Goglin ] + * Cherry-pick various patches from upstream: + - Fix incorrect test regarding keyboard map. + - xfree86: append, not prepend, new input devices to xf86InputDevs. + + -- Julien Cristau Fri, 18 Jul 2008 10:53:26 +0200 + +xorg-server (2:1.4.2-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release. + * Security fixes from the previous upload are included upstream. + * Cherry-pick patches from upstream git to make the LeftOf and Above options + in xorg.conf actually work (closes: #466526). + * 48_xaa_nooffscreenpixmaps.diff: disable XAA offscreen pixmaps by default; + they can be enabled with Option "XaaOffscreenPixmaps" (closes: #478277, + #433331). + * Cherry-pick various patches from upstream for Xorg's modes code: + - add quirks for monitors with broken EDID (closes: #473260) + - fix max clock computation + - inherit the preferred mode from the global configuration (so if you have + Modes "800x600" in the Display subsection the server will honor it + instead of ignoring it) + * Backport patch from upstream git to fix emulation of int1A PCI BIOS + services (closes: #404885). Thanks, Robert de Bath! + + [ Brice Goglin ] + * Update patches to not require -p0, closes: #485185. + + -- Julien Cristau Thu, 26 Jun 2008 01:57:18 +0200 + +xorg-server (2:1.4.1~git20080517-2) unstable; urgency=high + + * High urgency upload for security fixes. + * New patch from upstream to fix multiple security issues reported by + iDefense: + CVE-2008-2360 - RENDER Extension heap buffer overflow + CVE-2008-2361 - RENDER Extension crash + CVE-2008-2362 - RENDER Extension memory corruption + CVE-2008-1379 - MIT-SHM arbitrary memory read + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Julien Cristau Mon, 09 Jun 2008 14:59:04 +0200 + +xorg-server (2:1.4.1~git20080517-1) unstable; urgency=low + + [ Julien Cristau ] + * Pass -DPRE_RELEASE=0 in CPPFLAGS, so we don't print the pre-release + warning in the Xorg log. + * Pull from upstream server-1.4-branch + + drop patch 40_default_dpi_96.patch applied upstream + + refresh patches 03_auto_load_driver.diff and + 04_auto_load_driver_no_conf.diff + * Don't build-depend on packages with a -1 debian revision. + * Drop the XS- prefix from Vcs-* control fields. + * Add x11-common to the Depends field of xnest, xvfb and xserver-xephyr (its + init script sets up the /tmp/.X11-unix directory). + * Re-enable the dmx DDX, and build the xdmx and xdmx-tools packages (the + build is now fixed upstream); closes: #449254. + + [ Drew Parsons ] + * Patch 95_xprint_disable_dbus disables dbus in Xprint by providing + dummy config functions. Taken from upstream commit + 2a3d1421e0cc18822ae8f478fcc272e16a9e9340, with removal of + CONFIG_LIB from configure.ac shifted to 94_xprint_XSERVER_LIBS. + Closes: #472180. + * Enable the xprint DDX, and build the xprint and xprint-common packages. + + -- Julien Cristau Sun, 18 May 2008 13:36:11 +0200 + +xorg-server (2:1.4.1~git20080507-1) unstable; urgency=low + + * Pull from upstream server-1.4-branch, highlights: + - the server should now scale input events correctly + - xkb keymap failures now give an explanation instead of just a 'failed to + load' message + * Drop patch 51_xkb-and-loathing.diff, applied upstream + * Refresh patches 13_debian_add_xkbpath_env_variable.diff, + 21_glx_align_fixes.patch, 46_reduce_wakeups_from_smart_scheduler.patch and + 94_xprint_XSERVER_LIBS. + * chmod +x configure in debian/rules clean so we can build a git snapshot + where configure is not in the tarball. + * Cherry-pick fix from upstream's master branch to re-arm the DPMS timer + when re-enabling DPMS (closes: #397197). + + -- Julien Cristau Thu, 08 May 2008 15:34:38 +0200 + +xorg-server (2:1.4.1~git20080131-4) unstable; urgency=low + + * fix AlwaysCore handling: enabling AlwaysCore in xorg.conf 1) is the + default, and 2) shouldn't prevent the device from sending core events + (closes: #461760). + + -- Julien Cristau Tue, 29 Apr 2008 20:14:22 +0200 + +xorg-server (2:1.4.1~git20080131-3) unstable; urgency=low + + * XKB: Fix processInputProc wrapping (cherry-picked from upstream). + Thanks to Thomas Jaeger. This should fix the bug with some keys getting + stuck (closes: #473165). + * xkb: when copying the keymap, make sure the structs default to 0/NULL + (cherry-picked from upstream). Fixes a crash and closes: #461783. + * __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target + (cherry-picked from upstream). + * EXA: Fix off-by-one in polyline drawing (cherry-picked from upstream). + * EXA: Skip empty glyphs (cherry-picked from upstream). + * Fix overly-restrictive integer overflow check in EXA pixmap creation + (cherry-picked from upstream). Fixes BadAlloc errors returned by + XCreatePixmap for pixmaps of width 8192 or greater (closes: #471782). + + Following patches by Bart Trojanowski, stolen from the ubuntu package: + * 15_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + * 16_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + * Add 17_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (closes: #451089). + + -- Julien Cristau Wed, 02 Apr 2008 00:20:15 +0200 + +xorg-server (2:1.4.1~git20080131-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 46_reduce_wakeups_from_smart_scheduler.patch to reduce + power consumption, closes: #462700. + + [ Drew Parsons ] + * Restore Xprint, cherry-picking commits + f7f79724fdea0cc6fda0e90e56431df937d49335 and + d67e210f3458b62d7d4a6032aabfda0004d661c1 from master (xserver 1.5). + Include patch 94_xprint_XSERVER_LIBS to give new meaning of + XSERVER_LIBS as expected in configure.ac from master (see commit + a02db0d500cac20d0f0f107d27c064a175018421). Delete + 94_xprint_XSERVER_LIBS when we upgrade to xserver 1.5. + + [ Julien Cristau ] + * Re-enable patch 51_xkb-and-loathing.diff: ignore SIGALRM around calls to + Popen()/Pclose() to fix a hang when opening menus in OpenOffice.org + (once again closes: #433131) + * Refresh all patches to make patch-audit happy. + * Pull from upstream server-1.4-branch as of March 14th. + * 42_dont_break_grab_and_focus_for_window_when_redirecting.diff removed, + applied upstream. + * Don't build xprint just yet, because it needs NEW processing. + + [ David Nusinow ] + * Add 11_dont_crash_on_bad_dri_mode. See bugzilla #13860 + + -- Julien Cristau Fri, 14 Mar 2008 15:18:16 +0100 + +xorg-server (2:1.4.1~git20080131-1ubuntu12) intrepid; urgency=low + + * Fix multiple security issues: + + CVE-2008-2360 - RENDER Extension heap buffer overflow + + CVE-2008-2361 - RENDER Extension crash + + CVE-2008-2362 - RENDER Extension memory corruption + + CVE-2008-1379 - MIT-SHM arbitrary memory read + + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Bryce Harrington Wed, 11 Jun 2008 10:54:15 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu11) intrepid; urgency=low + + * 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - Choose the default driver for the platform instead of the generic + default (vesa) if there is no PCI info. Without this, on platforms + like PS3 where fbdev should be used rather than vesa, the system + will fail to start up. (LP: #219424) + + -- Bryce Harrington Tue, 13 May 2008 13:09:17 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu10) intrepid; urgency=low + + [Timo Aaltonen] + * 166_fix_lpl_monitors.diff: + - fix LPL monitors properly (LP: #204065) + + [Martin-Eric Racine] + * 167_xf86AutoConfig_geode_addition.diff: + - Autodetect geode video devices (LP: #219630) + + [Bryce Harrington] + * 166_fix_lpl_monitors.diff: + - Modified to apply to Ubuntu + * 168_closedir.patch: + - Fix crash on PS3 due to closing a dir that wasn't successfully opened + (LP: #217647) + + -- Bryce Harrington Tue, 13 May 2008 00:03:40 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu9) hardy; urgency=low + + * debian/patches/series, + debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn on patch included in previous commit - obviously accidentially + forgotten. + - Now that its really enabled, make it apply to 1.4.1 code base + accordingly. (LP: #182038) + + -- Alexander Sack Tue, 15 Apr 2008 18:23:51 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu8) hardy; urgency=low + + * debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn XAA Offscreen Pixmaps off by default, and use + XaaOffscreenPixmaps "true" to turn them on. This setting was an + early pre-EXA HW optimization attempt that didn't pan out; upstream is + deprecating XAA in favor of EXA generally, and for situations where + XAA is still in use recommends NOT using this optimization hack, since + they found it often just made performance worse, and sometimes created + visualization bugs. People wishing to gain added performance should be + experimenting with EXA anyway, not this setting. (closes LP: #182038) + + -- Bryce Harrington Mon, 21 Apr 2008 12:30:53 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu7) hardy; urgency=low + + * 159_xkb_default_to_null.diff: + When copying the keymap, make sure the structs default to 0/NULL. + (LP: #184651) + * 160_default_to_intel.diff: + Default to using intel instead of i810. (LP: #158709) + * 161_fix_big_endian_cursor.diff: + Fix RandR 1.2 driver interface conversion of two colour cursors to + ARGB. (LP: #141118) + * Fixes from the upstream 1.4-branch: + - 162_cve-2007-6429.diff: + CVE-2007-6429: Always test for size+offset wrapping. + - 163_fix_untrusted_access.diff: + Security: Fix for fdo bug #14480: untrusted access broken in 7.3. + - 164_fix_context_sharing.diff: + Fix context sharing between direct/indirect contexts + + -- Timo Aaltonen Wed, 09 Apr 2008 11:06:04 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu6) hardy; urgency=low + + * 157_fix_exa_pixmap_width.diff: + A patch from upstream to allow wider pixmaps with EXA (LP: #205599) + * 158_xkb_wrapping.diff: + A patch reviewed by upstream that prevents keys from getting stuck under + certain situations. (LP: #194214) + * 51_xkb-and-loathing.diff: + Re-enable. Ignore SIGALRM around calls to Popen()/Pclose() to fix a hang + when opening menus in OpenOffice.org. (LP: #204137) + + -- Timo Aaltonen Sun, 30 Mar 2008 19:18:32 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu5) hardy; urgency=low + + * Add some patches from upstream 1.4-branch or proposed set: + - 109_glx_fail_if_no_texture_bound.diff + + __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture + target. + - 153_exa_skip_empty_glyphs.diff + + Fix a crasher when EXA and RenderAccel is in use. + - 154_fix_rotation_for_multimon.diff + + Fix rotation for multi-monitor situation. + - 155_exa_fix_off-by-one.diff + + Fix off-by-one in polyline drawing. + - 156_resize_composite_overlay.diff + + Resize composite overlay window when the root window changes. + (LP: #199700) + + -- Timo Aaltonen Thu, 13 Mar 2008 18:21:41 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu4) hardy; urgency=low + + * Add 152_xserver_exa_force_greedy.patch to provide a mechanism for + drivers to force greedy mode on. (LP: #177492, others) + + -- Bryce Harrington Tue, 19 Feb 2008 13:38:16 -0800 + +xorg-server (2:1.4.1~git20080131-1ubuntu3) hardy; urgency=low + + [ Bryce Harrington ] + * Add 150_edid_quirk_lp154w01.patch to fix font size on LGPhilipsLCD + LP154W01-TLAE (LP: #127827) + * Add 149_add_quirks_for_physical_screen_size_issues.patch to help + address various common EDID issues (like monitors that report in + centimeters instead of millimeters, etc.) (LP: #151311) + + [ Timo Aaltonen ] + * Add 151_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (LP: #180742) + + -- Timo Aaltonen Tue, 19 Feb 2008 17:48:05 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu2) hardy; urgency=low + + * Add patch 148_dix_touchscreen_fixes.diff from Matthew Garrett to fix + touchscreen issues with DIX. + http://lists.freedesktop.org/archives/xorg-commit/2008-February/014648.html + + -- Steve Kowalik Fri, 08 Feb 2008 10:30:04 +1100 + +xorg-server (2:1.4.1~git20080131-1ubuntu1) hardy; urgency=low + + [ Timo Aaltonen ] + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * 108_fedora_honor_displaysize.patch: + - Patch from upstream/Fedora to honor the DisplaySize-setting. + (LP: #135738, b.fd.o #9758) + * Drop patch 100_avoid_acpi_insanity.diff, superseded by patch 45. + + [ Bart Trojanowski, Martin-Eric Racine ] + * 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + (LP: #140051) + * 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + (LP: #140051) + + -- Timo Aaltonen Tue, 05 Feb 2008 18:57:14 +0200 + +xorg-server (2:1.4.1~git20080131-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff + to prevent XF86_APM_CAPABILITY_CHANGED from being issued for all ACPI + events, thanks Sjoerd Simons, closes: #461463. + + [ David Nusinow ] + * Update Japanese translation from Hideki Yamane. closes: #462761 + * New upstream pull + + Fixes crashes due to absent LED's being referenced + + -- David Nusinow Thu, 31 Jan 2008 21:43:12 -0500 + +xorg-server (2:1.4.1~git20080118-1ubuntu2) hardy; urgency=low + + * Remove the DPI patch for real this time, conflicts with the upstream + commit that was pulled. + * 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + + -- Timo Aaltonen Sat, 19 Jan 2008 20:26:41 +0200 + +xorg-server (2:1.4.1~git20080118-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 19 Jan 2008 02:40:00 +0200 + +xorg-server (2:1.4.1~git20080118-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_dont_break_grab_and_focus_for_window_when_redirecting.diff + to prevent password authentication bypass, closes: #449108. + + [ Julien Cristau ] + * New upstream snapshot + + includes the security fixes from the previous version + + fixes regression introduced by the fix for CVE-2007-6429 in the MIT-SHM + extension (closes: #461410) + + -- Brice Goglin Fri, 18 Jan 2008 22:20:32 +0100 + +xorg-server (2:1.4.1~git20080105-2) unstable; urgency=low + + [ David Nusinow ] + * Improve dpms logging patch to correctly label message type + + [ Brice Goglin ] + * Grab upstream commit db9ae863536fff80b5463d99e71dc47ae587980d + to set DEFAULT_DPI to 96 instead of 75. + + [ Julien Cristau ] + * Fix multiple security issues + + CVE-2007-6427: XInput Extension Memory Corruption + + CVE-2007-6428: TOG-CUP Extension Memory Corruption + + CVE-2007-6429: EVI Extension Integer Overflow, + MIT-SHM Extension Integer Overflow + + CVE-2007-5760: XFree86-Misc Extension Invalid Array Index + + CVE-2007-5958: file existence disclosure + + CVE-2008-0006: PCF font parser buffer overflow + * Bump Standards-Version to 3.7.3 (no changes). + + -- Julien Cristau Thu, 17 Jan 2008 15:10:03 +0100 + +xorg-server (2:1.4.1~git20080105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * debian/patches/103_fedora_openchrome.patch: + - Patch from Fedora to use openchrome instead of via. + + -- Timo Aaltonen Tue, 08 Jan 2008 18:05:21 +0200 + +xorg-server (2:1.4.1~git20080105-1) unstable; urgency=low + + * Don't reference non-existent bug-reporting.txt file in xvfb-run.1 + * New upstream git pull, again from the server-1.4-branch + + Drop 08_xkb_infinite_loop.diff, it's upstream now + * Improve logging when DPMS is enabled implicitly + + Adds 08_better_dpms_logging.diff + + -- David Nusinow Sun, 06 Jan 2008 16:56:38 -0500 + +xorg-server (2:1.4.1~git20071212-1ubuntu2) hardy; urgency=low + + * debian/patches/101_fedora-apm-typedefs.patch: + - Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + + -- Timo Aaltonen Mon, 17 Dec 2007 11:54:46 +0200 + +xorg-server (2:1.4.1~git20071212-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Thu, 13 Dec 2007 13:43:35 +0200 + +xorg-server (2:1.4.1~git20071212-2) unstable; urgency=low + + * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over + an infinite loop in event processing (closes: #451989). + + -- Julien Cristau Sat, 22 Dec 2007 00:02:01 +0100 + +xorg-server (2:1.4.1~git20071212-1) unstable; urgency=low + + [ Julien Cristau ] + * debian/rules: Use lsb_release -i -s to get the vendor name, instead of + hardcoding "Debian". + * debian/control: build-dep on lsb-release. + * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor. + * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an + infinite loop when PreferredMode is used in xorg.conf. + + [ David Nusinow ] + * New upstream version. This is based on the server-1.4-branch, and includes + all the changes in the 1.4.0.90 (pre-)release as well as additional fixes. + This is primarily a bugfix release + + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream + + -- David Nusinow Wed, 12 Dec 2007 20:19:11 -0500 + +xorg-server (2:1.4.1~git20071119-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * Bring back old changelog entries. + * debian/patches/120_fedora_xserver-xaa-evict-pixmaps.patch: + - New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + + -- Timo Aaltonen Tue, 20 Nov 2007 15:35:59 +0200 + +xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low + + * Ship a .orig.tar.gz that's been autoreconf'ed. Closes: #451891 + * Re-enable validation of the screen section of xorg.conf + Modify 14_default_screen_section.diff. This also fixes a problem where the + server can't find the device section when it is specified in the screen + section. Closes: #451950 + + -- David Nusinow Mon, 19 Nov 2007 20:38:04 -0500 + +xorg-server (2:1.4.1~git20071117-1) unstable; urgency=low + + [ Julien Cristau ] + * Add conflict on xserver-xorg-input-wacom (<< 0.7.8) to xserver-xorg-core. + That driver is built against the old ABI, but doesn't provide + xserver-xorg-input. + + [ David Nusinow ] + * Add 14_default_screen_section.diff. This allows you to not have a screen + section in your xorg.conf. A basic default one with a simple identifier + will be created for you in this case using all default values + + [ Christian Perrier ] + * Debconf translations: + * Galician. Closes: #444764 + * German. Closes: #444917 + * Brazilian Portuguese. Closes: #445266 + * Russian. Closes: #443859 + * Portuguese. Closes: #445051 + * Slovak. Closes: #446418, #448220 + + [ Brice Goglin ] + * Bump x11proto-core-dev build-dependency to >= 7.0.9, + thanks Max Kellermann, closes: #446869. + + [ David Nusinow ] + * New upstream stable snapshot + + fixes a bunch of input-related bugs, notably keyboard leds + (closes: #440743 and its pile of duplicates) + * Remove patches merged in this snapshot + + 08_exa_fix_exaFillRegionTiled_fallback.diff + + 11_exa_no_negative_tile_offsets.diff + + 42_fix_RemoveGeneralSocket_crash_from_dbus.diff + + 44_XKB_mapping_changes_for_all_core-sending_devices.diff + + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff + * Make xephyr recommend xfonts-base. Closes: #451542 + + -- David Nusinow Sat, 17 Nov 2007 18:54:02 -0500 + +xorg-server (2:1.4.1~git20071105-1ubuntu2) hardy; urgency=low + + * Brown paper bag release: include all the patches. + + -- Timo Aaltonen Sat, 10 Nov 2007 15:24:28 +0200 + +xorg-server (2:1.4.1~git20071105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just disable + it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 10 Nov 2007 13:07:55 +0200 + +xorg-server (2:1.4-3) unstable; urgency=low + + [ David Nusinow ] + * Minor cleanups of 03_autoload_drivers.diff. Thanks to Julien for + spotting all these ugly bits + + Newline after #else when picking the driver (this is the failsafe + choice) + + Change by hacked "ids" file name suffix check to use strncmp and check + for ".ids" + + Use strncpy instead of strncat unnecessarily + * Add support for a partially configured device section + Implemented in 03_autoload_driver.diff. Now if you have a device section + but lack a driver, it'll use the settings. This will allow you to just + have a device section and enable EXA but not have to specify the driver or + anything else. + * Add 07_autoconfig_screen_with_device_section.diff + This patch allows the Screen section to not specify a device section. If + this happens, the server will automatically use the first device section + listed in the xorg.conf instead + + [ Brice Goglin ] + * Allow building the Xfbdev server in new package xserver-xfbdev, but leave + it disabled for now (see #439764). + * Add upstream commit 27ad5d74c20f01516a1bff73be283f8982fcf0fe as patch + 44_XKB_mapping_changes_for_all_core-sending_devices.diff to fix broken + xmodmap invocation in .xsession, closes: #443044. + * Add upstream commit 0e800ca4651a947ccef239e6fe7bf64aab92257c as patch + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff to fix crash + in GetKeyboardValuatorEvents, closes: #443697. + + [ Christian Perrier ] + * Debconf templates and debian/control reviewed by the debian-l10n- + english team as part of the Smith review project. Closes: #442210 + * Debconf translation updates: + - Swedish. Closes: #443047 + - Czech. Closes: #443100 + - French + - Vietnamese. Closes: #443174 + - Italian. Closes: #422414 + * New debconf translations + - Hungarian. Closes: #442956 + - Thai. Closes: #442962 + - Tamil. Closes: #443027 + - Basque. Closes: #443156 + - Hebrew. Closes: #443204 + - Bulgarian. Closes: #443226 + - Finnish. Closes: #443611 + + [ Julien Cristau ] + * Add patch backported from upstream commit + 13949f997289068354e83bc83e50d97b8232efb1 to remove the type1 module: patch + 05_kill_type1.diff replaces 48_disable_type1.diff, and is now enabled in + debian/patches/series. + * Don't build kdrive-based servers we're not shipping. + * Use ${binary:Version} instead of ${Source-Version}. + * Add 08_exa_fix_exaFillRegionTiled_fallback.diff by Michel Dänzer to punt + on fallback case not handled correctly in exaFillRegionTiled (backported + from master's c7d6d1f5); closes: #444203. + * Add 11_exa_no_negative_tile_offsets.diff by Michel Dänzer to make sure + tile offsets passed to drivers are never negative (backported from + master's 006f6525). + * Add 12_bgPixel_fix_64bit_issue.diff by Hong Liu: bgPixel (unsigned long) + is 64-bit on x86_64, so -1 != 0xffffffff (master's 9adea807). + + -- Julien Cristau Sat, 29 Sep 2007 16:14:35 +0200 + +xorg-server (2:1.4-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_fix_RemoveGeneralSocket_crash_from_dbus.diff to fix a crash + when leaving, closes: #440547. + * Add 43_allow_override_BIOS_EDID_preferred_mode.diff to allow overriding + BIOD/EDID preferred mode with Option PreferredMode in the config file. + + [ David Nusinow ] + * Upload to unstable + + -- David Nusinow Sun, 16 Sep 2007 14:24:18 -0400 + +xorg-server (2:1.4-1) experimental; urgency=low + + * New upstream release (X.Org 7.3) + + RandR doesn't mark Xinerama as active when no crtcs are enabled + (closes: #431746) + * Add proper depends to xserver-xorg-dev: + x11proto-core-dev, x11proto-input-dev (>= 1.4), x11proto-xext-dev, + x11proto-video-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev (>= + 2:0.9.3), x11proto-fonts-dev + * Bump serverminver to 2:1.4, videoabiver to 2, inputabiver to 2. + + -- Julien Cristau Mon, 10 Sep 2007 14:35:38 +0200 + +xorg-server (2:1.3.99.2-1) experimental; urgency=low + + [ David Nusinow ] + * Refactor auto_load_driver patch to allow the same method to be used when + there is no xorg.conf present + * Add 04_auto_load_driver_no_config.diff to use my auto_load_driver method + when there's no xorg.conf present + + [ Brice Goglin ] + * Simplify output redirections in the reportbug script, + thanks Justin Pryzby, closes: #358390. + * Add missing URL in long descriptions, update links to the upstream + module, fix some capitalization, thanks Christian Perrier. + + [ Julien Cristau ] + * New upstream release candidate. + + bump build dep on renderproto to >= 0.9.3, and on pixman to >= 0.9.4-2. + + bump video abi version and serverminver. + * Drop the Conflict on fglrx-driver, which is taken care of by the abi + version. + + -- Julien Cristau Tue, 04 Sep 2007 17:32:19 +0200 + +xorg-server (2:1.3.99.0-2) experimental; urgency=low + + * Improve 03_auto_load_driver.diff + + Move memory cleanup and directory closing to after the end label to + prevent leaks. Thanks Julien. + + Allow a driver to claim everything from a specific vendor. It does so by + only specifying a vendor ID and leaving the latter four digits empty. + + -- David Nusinow Sun, 19 Aug 2007 16:06:54 -0400 + +xorg-server (2:1.3.99.0-1) experimental; urgency=low + + [ Julien Cristau, David Nusinow ] + * New upstream release candidate. + + X is now more tolerant of devices without a CtrlProc (closes: #269860). + + cvt(1) and gtf(1) typos fixed (closes: #432065). + + Make sure DRIScreenPrivIndex is -1 when no DRI screen private is + allocated. (closes: #413697). + + __glXDRIscreenProbe: Use drmOpen/CloseOnce (closes: #419614). + + segfault in swrast_Triangle fixed in mesa (closes: #407502). + + the Xvfb manpage doesn't refer to /usr/tmp anymore (closes: #270257). + + typos in Xserver(1) fixed (closes: #306688). + + * Remove patches that were pushed upstream + + 03_xnest_manpage_overhaul.diff + + 04_read_rom_in_chunks.diff + + 05_module_defaults.diff + + 07_stolen_from_HEAD_xorgconf_manpage.diff + + 08_s390_servermd.diff + + 12_security_policy_in_etc.diff + + 16_s390_fix.diff + + 18_execinfo_configured.patch + + 23_kfreebsd_support.diff + + 24_hurd_ioperm_fix.diff + + 32_disable_sparc_pci_bridge.diff + + 39_alpha_build_flags.patch + + 40_consolidate_portPriv_pDraw_assignments.diff + + 42_only_run_special_key_behaviours_on_non-XKB.diff + + 44_fedora-xephyr-keysym-madness.diff (different fix applied upstream) + + 45_CVE-2007-2437.diff + + 46_export-ramdac-symbols.diff + + 49_map_keyboard_driver_to_kbd.diff + + 50_alpha_no_include_asm_pci.h.diff + + 94_use_default_font_path.diff + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff and + 127_mesa-6.5.3-compat.diff (obsolete) + + * Update other patches: + + 09_debian_xserver_rtff.diff disabled (doesn't apply, and isn't even + used AFAICS; + + 11_define_XFree86Server.diff dropped, to be fixed in drivers instead; + + 13_debian_add_xkbpath_env_variable.diff refreshed; + + 21_glx_align_fixes.patch updated; + + 43_xephyr_crash_at_exit.diff dropped (doesn't apply); + + 47_fbdevhw_magic_numbers.diff disabled for now; + + 48_disable_type1.diff disabled for now; + + 51_xkb-and-loathing.diff disabled for now. + + [ Julien Cristau ] + * Add build-dep on x11proto-input-dev (>= 1.4.2), libpixman-1-dev + (>= 0.9.0), libdbus-1-dev, libhal-dev (except on hurd-i386 for the last + two). + * Bump build-dep on mesa-swx11-source to >> 7.0.1~rc2-1. + * Bump serverminver to this version, videoabiver to 1.9, inputabiver to + 0.9 (so this doesn't clash with a release and drivers have to be + rebuilt). + * Bump build-dep on compositeproto to >= 0.4. + * Install the upstream changelog. + * Disable the xprint and dmx DDX for now, they fail to build. + * xserver-xorg-dev needs a dependency on libpixman-1-dev. + * Add explanations about our tarball and upstream URL to debian/copyright. + + [ Drew Parsons ] + * Update Xprint build to include pixman. + + [ David Nusinow ] + * Add 03_auto_load_driver.diff. This patch allows the server to select a + driver and automatically create a Devices section when none is specified + in your xorg.conf. It chooses the driver based on a set of PCI ID's that + the driver itself provides in /usr/share/xserver-xorg/pci. If no driver + claims the PCI ID of your primary video card, then it will choose a + fallback based on your system. + + -- Julien Cristau Sat, 18 Aug 2007 18:28:49 +0200 + +xorg-server (2:1.3.0.0.dfsg-13) UNRELEASED; urgency=low + + [ Debconf templates translations ] + * Italian added. Closes: #422414 + * Slovak added. Closes: #438578 + + -- Christian Perrier Sun, 26 Aug 2007 12:09:52 +0200 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu8) gutsy; urgency=low + + * Add 145_glx_visuals_bound_check.patch to fix issue where mesa + incorrectly counts its visuals and can free too many of them during + video mode changes (VT switch, restart, hibernate, etc.) such as + when running Compiz. (closes LP: #127101) + + -- Bryce Harrington Fri, 28 Sep 2007 15:48:08 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu7) gutsy; urgency=low + + * Drop 143_fedora_xserver-1.3.0-randr12-config-hack.patch + as it causes failure to detect proper resolution on some intel + hardware. (closes LP: #144956) + + -- Bryce Harrington Tue, 25 Sep 2007 14:42:59 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu6) gutsy; urgency=low + + * Drop 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch + as it is causing black bars to appear on screen for i810 users. + (closes LP: #137604 + several dupes) + + -- Bryce Harrington Thu, 20 Sep 2007 14:35:54 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu5) gutsy; urgency=low + + [ Kees Cook ] + * debian/patches/132_composite-no-clipping.diff: Adjusted WindowRec + structure order and RedirectDraw logic to avoid nvidia crashes + (fixes LP: #130325). + * debian/patches/100_security_fdo-bug-7447.diff: Composite used for + pixmap population on redirect. [CVE-2007-4730] + + -- Bryce Harrington Tue, 18 Sep 2007 17:20:14 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu4) gutsy; urgency=low + + * debian/patches/133_psb_auto.patch: Add automatic detection of + Poulsbo hardware when running without a Device definition. + * Added some cherry-picked patches from fedora: + - 134_fedorda_xorg-x11-server-1.1.1-vt-activate-is-a-terrible-api.patch: + Fixes race condition where someone does a VT_ACTIVATE + between another ACTIVATE/WAITACTIVE by adding a fail. + (Potentially might address Ubuntu bugs 134478 and/or 134982) + - 135_fedora_xorg-x11-server-1.1.1-xkb-in-xnest.patch: Fixes issue when + starting a session in an xnest nest environment as a different user, + where keyboard map does not get preserved. Removes + NO_HW_ONLY_EXTS check to address this issue. (RedHat bug 193431; + Potentially may address Ubuntu bug 44846) + - 136_fedora_xserver-1.2.0-honor-displaysize.patch: Fixes issue if monitor + width and height have been specified, xserver would override them + with the hsize/vsize detected from DDC. + - 137_fedora_xserver-1.2.0-vfprintf.patch: Fixes typo 'vfprinf' + - 138_fedora_xserver-1.3.0-default-dpi.patch: Changes default dpi to 100. + (Addresses Ubuntu bugs 118745, 107320, many others...) + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch: Fixes + document fontpaths shown in the man page. + - 140_fedora_xserver-1.3.0-domain-obiwan.patch: Fixes longstanding bug in + domain support. + - 141_fedora_xserver-1.3.0-edid-quirk-backports.patch: Adds quirk for + Samsung SyncMaster 225BW. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch: Composite on + 8bpp pseudocolor root windows appears to fail, so just disable it + on anything pseudocolor for safety. + - 143_fedora_xserver-1.3.0-randr12-config-hack.patch: Adds check to use + the screen's xrandr modes if a preferred mode was not specified. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: Only collect xnest + exposures for xexposes with non-zero height and width. + + -- Bryce Harrington Fri, 7 Sep 2007 14:23:23 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu3) gutsy; urgency=low + + * Added some cherry-picked patches from xserver 1.3.99: + - 202_Add_quirk_for_Acer_AL1706_monitor_to_force_60hz_refresh.patch: + The Acer AL1706 monitor reports support for 75hz via EDID, but + does not sync when this range is given, so force it to 60hz. + - 205_Bug_10770-_Inputdevs_isnt_a_valid_config_file_keyword.patch: + Fixes typo in config file parser. + - 208_Bug_6620-_Fixed_a_missing_else_in_ATIPseudoDMAInit.patch: + Fixes issue where registers were written twice on R200, sometimes + also putting bad values in atis->cce_pri_size. + - 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch: + Fixes situation where when a specific mode is requested by monitor + or user, xorg would tweak it to something incorrect. + - 216_Bug_9041-_Check_the_return_code_in_xf86MapDomainMemory.patch: + Fixes issue where mmap return value was being ignored and failing + to issue fatal error as it should. + - 221_ExaOffscreenMarkUsed-_Dont_crash_when_theres_no_offscreen_memory.patch: + Fixes crash when there is no offscreen memory for EXA. + - 222_Fix_a_crash_when_rotating_the_screen.patch: + Fixes crash when rotating screen with xrandr. + - 223_Fix_bug_8871-scrolling_corruption_with_a_compositing_manager.patch: + Fixes scrolling corruption with composite due to incorrectly + generated GraphicsExposes. + - 224_Fix_calculations_in_x86_emulator_for_the_long_long_case_Andreas_Schwab.patch: + Fixes long long multiplication when in x86 emulator. + - 227_Fix_sync_polarity_on_Samsung_SyncMaster_205BW_monitor.patch: + Adds quirk for Samsung SyncMaster 205BW + - 230_In___glXCreateARGBConfig_insert_the_new_GL_mode_at_the__end__of_the_linked_list.patch: + Fixes insertion order of linked list that can cause GLX clients to + fail when attempting to use the last GLX mode/visual. + - 231_In_dmxBackendMouGetInfo_initialize_the_info-minval_maxval_arrays_to_the_size_of_the_backend_display.patch: + Fixes potential issue in X input where axis clipping code in + GetPointerEvents() constrains the pointer's coordinate range to a + max of 0, causing the mouse to not move. + - 234_Reapply_patch_to_fix_AMD_CPU_detection.patch: + Fixes AMD Geode CPU detection. + - 236_Syncmaster_226_monitor_needs_60Hz_refresh_10545.patch: + Adds quirk for Samsung SyncMaster 226BW. + - 238_Update_pci.ids_to_2007-07-16_snapshot.patch: + Updates our pci ids to support more current hardware. + Remove nvidia ids in extrapci.ids that are now in pci.ids. + Add nvidia ids to extrapci.ids that are in xf86-video-nv but not pci.ids + - 241_XFree86-_Treat_evdev_and_vmmouse_as_mouse_drivers_bug_10512_10559.patch: + Fix issue where a default mouse device gets automatically added + when an evdev or vmmouse section has already been specified. + - 243_exaDriverInit-_Fail_if_pScreenInfo_or_a_member_of_it_is_invalid.patch: + Fix crash in EXA when pScreenInfo or a member of it is invalid. + - 244_fix_an_occasional_crash_in_GetWindowName_bug-_9798.patch: + Fixes crash by adding check of XmbTextPropertyToTextList()'s + return code. + - 245_regenerated_to_fix_bug_10371.patch: + Fixes issue where if DRI is disabled, GL_MAX_TEXTURE_COORDS_ARB + value is not returned correctly from glGetIntegerv(). + + -- Bryce Harrington Fri, 31 Aug 2007 18:36:22 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu2) gutsy; urgency=low + + * Don't send a configuration change event just because somebody's pressed + a brightness key + + -- Matthew Garrett Sun, 26 Aug 2007 16:17:15 +0100 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu1) gutsy; urgency=low + + * Merge from debian unstable, remaining changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch, + 120_fedora_disable_offscreen_pixmaps.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Patches needed to build against newer Mesa. + + 132_composite-no-clipping.diff: + Change the semantics of manual-redirect Composite windows so that + they do not clip sibling or parent drawing. Needed by hildon-desktop + to prevent home applets from clipping. + - debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + + -- Timo Aaltonen Tue, 21 Aug 2007 22:01:38 +0300 + +xorg-server (2:1.3.0.0.dfsg-12) unstable; urgency=low + + [ Brice Goglin ] + * Add 51_xkb-and-loathing.diff to fix a hang in OpenOffice.org + when opening menus, closes: #433131. + * Install the exa(4) and fbdevhw(4) manpages. + + [ Julien Cristau ] + * Update the xorg.conf(5) manpage to get documentation for RandR 1.2 + options: + + 07_stolen_from_HEAD_xorgconf_manpage.diff: new patch; + + 07_xorgconf_manpage_overhaul.diff dropped; + + 34_xorg.conf_man_typos.patch dropped; + + 05_module_defaults.diff, 94_use_default_font_path.diff: dropped hunks + applying to hw/xfree86/doc/man/xorg.conf.man.pre. + * Add patch 11_define_XFree86Server.diff: XFree86Server needs to be defined + in xorg-server.h and exported to drivers. + * Add patches 125_glx_remove-stray__GLinterface.diff + 126_glxproxy_remove-stray__GLinterface.diff and 127_mesa-6.5.3-compat.diff + to build with mesa >= 6.5.3, and bump build-dependency on + mesa-swx11-source. + * Include the Debian package version in OSVENDOR to make it appear in the + X log. + + -- Julien Cristau Thu, 09 Aug 2007 16:32:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-11) unstable; urgency=low + + * Yet another alpha build fix: also remove the asm/pci.h include from + os-support/linux/lnx_axp.c. Include "lnx.h" and instead. + + -- Julien Cristau Sat, 14 Jul 2007 20:09:35 +0200 + +xorg-server (2:1.3.0.0.dfsg-10) unstable; urgency=medium + + * hw/xfree86/common/compiler.h and declare incompatible + prototypes for outb and friends, so change the patch from -9 to not + #include and rely on declarations in lnx.h itself for the + IOBASE_* macros. + + -- Julien Cristau Sat, 14 Jul 2007 18:06:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-9) unstable; urgency=medium + + * Include instead of in + hw/xfree86/os-support/linux/lnx.h, as the latter isn't exported to + userspace anymore; fixes FTBFS on alpha. Thanks, Steve Langasek! + + -- Julien Cristau Sat, 14 Jul 2007 12:17:10 +0200 + +xorg-server (2:1.3.0.0.dfsg-8) unstable; urgency=medium + + * Medium-urgency upload to get the fix for #428794 in testing faster, + hopefully. + + [ Brice Goglin ] + * Add 47_fbdevhw_magic_numbers.diff: patch by Adam Jackson to keep the + fbdev2xfree_timing() function from changing the pixel clock value if the + fbdev driver claims that it is 0. + + [ Julien Cristau ] + * Don't build the type1 font module. + * Add patch by Alan Coopersmith to map (case-insensitively) the old + "keyboard" input driver to "kbd" (addresses: #428794). I'm not + reassigning the bug to xserver-xorg-core for now so as not to break + testing by letting xserver-xorg-input-keyboard transition before the fixed + xorg-server. + + -- Julien Cristau Sat, 14 Jul 2007 01:48:20 +0200 + +xorg-server (2:1.3.0.0.dfsg-7) unstable; urgency=low + + [ Brice Goglin ] + * Add 40_consolidate_portPriv_pDraw_assignments.diff to avoid a crash + in xf86XVReputVideo (closes: #424899, #431655). + * Add 41_vbe_filter_less.diff to not reject VESA modes early since + xf86ValidateModes should handle them just fine (closes: #424684). + * Add 42_only_run_special_key_behaviours_on_non-XKB.diff to fix special + keys in Xephyr (closes: #415025). + * Add 43_xephyr_crash_at_exit.diff to avoid crashing Xephyr when first + client disconnect (closes: #420421). + + -- Julien Cristau Wed, 04 Jul 2007 23:42:40 +0200 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu3) gutsy; urgency=low + + * debian/patches/series: + - Re-enable 132_composite-no-clipping.diff with fix from upstream + + -- Bryce Harrington Wed, 25 Jul 2007 16:39:29 -0700 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu2) gutsy; urgency=low + + * debian/patches/series: + - don't apply 132_composite-no-clipping.diff for now, it doesn't work + correctly when using compiz + + -- Sebastien Bacher Fri, 13 Jul 2007 17:03:42 +0100 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + - 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Mesa 6.5.3 build support + * debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + * debian/patches/132_composite-no-clipping.diff: Change the + semantics of manual-redirect Composite windows so that they do not + clip sibling or parent drawing. Needed by hildon-desktop to prevent + home applets from clipping. + + -- Bryce Harrington Mon, 2 Jul 2007 12:47:44 -0700 + +xorg-server (2:1.3.0.0.dfsg-6) unstable; urgency=low + + * Change fglrx conflict to << 8.37.6 (closes: #424975). + + -- Julien Cristau Fri, 01 Jun 2007 14:58:39 +0200 + +xorg-server (2:1.3.0.0.dfsg-5) unstable; urgency=low + + [ Brice Goglin ] + * Add 24_hurd_ioperm_fix.diff to fix xf86Enable/DisableIO on Hurd with + recent GNU Mach. Thanks Samuel Thibault! + * Add 06_use_proc_instead_of_sysfs_for_pci_domains.diff since sysfs-based + PCI management code is broken at least on sparc and powerpc. + Closes: #422077, #422095. Thanks to Jim Watson for testing! + * Install the Xephyr README, closes: #395888. + * Update 07_xorgconf_manpage_overhaul.diff to drop the reference to the + xorg.conf example which we do not install since Xserver 1.3 does automatic + configuration, the manpage is very well documented, and we generate a + config file during installation. Closes: #222932. + * Fix warning in /etc/init.d/xprint when /usr/lib/X11/fonts does not exist. + Closes: #422352. Thanks Cristian Ionescu-Idbohrn! + * Pull upstream commit 9c80eda826448822328bb678a7d284cc43fffb17 to disable + RandR's fake xinerama geometry when there's more than one protocol screen + (closes: #420679). + + [ Julien Cristau ] + * Add patch to make sure that the ramdac symbols are present in the server + and drivers can use them (closes: #423129). + * xserver-xorg-core Conflicts with fglrx-driver, which broke with 1.3. + We'll need to make this versioned (or drop it) when fglrx is fixed. + + -- Julien Cristau Wed, 16 May 2007 15:17:55 +0200 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu2) gutsy; urgency=low + + * Build-Depend on mesa 6.5.3 + * Apply Mandriva patches to build against mesa 6.5.3 + - 125_glx_remove-stray__GLinterface.diff + - 126_glxproxy_remove-stray__GLinterface.diff + - 127_mesa-6.5.3-compat.diff + + -- Kyle McMartin Sat, 26 May 2007 18:12:35 +0000 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + * Drop 124_fix-pdripriv_null_deref.patch. Already fixed in GLX code. + See upstream FDO bug #8537 + + -- Bryce Harrington Mon, 14 May 2007 16:40:03 -0700 + +xorg-server (2:1.3.0.0.dfsg-4) unstable; urgency=low + + * Cherry-pick patch from upstream git to fix security issue in the Xrender + extension: malicious clients can cause a division by zero in the server + (closes: #422936). Reference: CVE-2007-2437. Thanks, Micah Anderson! + + -- Julien Cristau Wed, 09 May 2007 02:11:08 +0200 + +xorg-server (2:1.3.0.0.dfsg-3) unstable; urgency=low + + * Include 94_use_default_font_path.diff. This patch is like Eugene's patch + to always look in the default font path from the past, but now we provide + an option to disable looking in the default font path at runtime. This + will allow people to specify additional font paths in their xorg.conf + without losing their current paths. This will also help avoid people + having ye olde "fixed font" problem. + * Fix compilation warnings for 05_module_defaults.diff. Previously the patch + used a generic pointer for the options record, but now we use the actual + XF86OptionsPtr type. + + -- David Nusinow Thu, 26 Apr 2007 22:39:52 -0400 + +xorg-server (2:1.3.0.0.dfsg-2) unstable; urgency=low + + * Add Brice Goglin's fix for 05_module_defaults.diff, so that it also works + when there is no module section at all. Thanks to Michel Dänzer for + helping also. + + -- David Nusinow Sat, 21 Apr 2007 09:34:12 -0400 + +xorg-server (2:1.3.0.0.dfsg-1) unstable; urgency=low + + * Upload to unstable. + * Add XS-Vcs-* to debian/control. + * Remove non-free file hw/xfree86/doc/README.DRI from the upstream tarball. + * Bump serverminver to 2:1.3.0.0. + + -- Julien Cristau Fri, 20 Apr 2007 07:54:14 +0200 + +xorg-server (2:1.3.0.0-1) experimental; urgency=low + + * New upstream release + + -- David Nusinow Thu, 19 Apr 2007 22:27:05 -0400 + +xorg-server (2:1.2.99.905-3) experimental; urgency=low + + [ Julien Cristau ] + * xvfb now Recommends: xfonts-base (closes: #314598). + + [ David Nusinow ] + * Add 05_module_defaults.diff. This provides default modules loading + capabilities for the server that may be overrided easily. Previously the + server would load a set of default modules, but only if none were + specified in the xorg.conf, or if you didn't have a xorg.conf at all. This + patch provides a default set and you can add only the "Load" instructions + to xorg.conf that you want without losing the defaults. Similarly, if you + don't want to load a module that's loaded by default, you can add + "Disable modulename" to your xorg.conf (see man xorg.conf in this release + for details). See upstream bug #10541 for more. + + -- David Nusinow Sun, 15 Apr 2007 11:17:45 -0400 + +xorg-server (2:1.2.99.905-2) experimental; urgency=low + + * Install the cvt and gtf utilities and their manpages (closes: #414792). + * Build the xserver-xorg-core-dbg package, which contains debugging symbols + for Xorg and /usr/lib/xorg/modules/**/*.so + + -- Julien Cristau Mon, 09 Apr 2007 20:38:22 +0200 + +xorg-server (2:1.2.99.905-1) experimental; urgency=low + + * New upstream release candidate. + + includes fix for CVE-2007-1003: XC-MISC Extension ProcXCMiscGetXIDList() + Memory Corruption. + + -- Julien Cristau Fri, 06 Apr 2007 12:05:40 +0200 + +xorg-server (2:1.2.99.903-1) experimental; urgency=low + + [ Drew Parsons ] + * Add exclude entries to dh_install in debian/rules. + + [ Julien Cristau ] + * Prepare packaging to ship debugging symbols for xserver-xorg-core in + xserver-xorg-core-dbg, but leave it commented out so we can get rc3 in the + archive first. + * New upstream release candidate. + + bump serverminver to 2:1.2.99.903. + + -- Julien Cristau Tue, 27 Mar 2007 07:33:29 +0200 + +xorg-server (2:1.2.99.902-1) experimental; urgency=low + + [ Drew Parsons ] + * Bring xprint back into the xorg fold. + - include existing patches: + - 91_ttf2pt1 allows Xprint to use ttf2pt1 for Type1 font handling + (but extract and apply manually the patch to + hw/xprint/ps/Makefile.am so it may be applied by autoconf) + - 91_ttf2pt1_updates brings ttf2pt1 into the modern X11R7.1 world + - 92_xprint-security-holes-fix.patch places PS/PDF file output + into the user's home directory (~/Xprintjobs), more secure than + a shared /tmp/Xprintjobs + - 93_spooltodir_check_file_exists ensures output filenames are + less than 256 characters in length + - 93_xprint_fonts_fix released references to font names after use. + - enable freetype support for Xprint. + - add descriptions to debian/control and Build-Dependency on + x11proto-print-dev + * Run autoreconf to update changes to hw/xprint/ps/Makefile.am. + + [ Brice Goglin ] + * Apply patch from adrian@smop.co.uk to our xvfb-run wrapper + to check whether Xvfb started ok and fix its cleanup + (closes: #351042). + + [ Julien Cristau ] + * New upstream release candidate. + * Bump serverminver to 2:1.2.99.902. + * Drop patch 42_build_int10_submodules.diff, and use x86emu on all + architectures instead (closes: #410879). + * Refresh patches: + + 12_security_policy_in_etc.diff + + 21_glx_align_fixes.patch + + 23_kfreebsd_support.diff + * Delete a few files generated by configure on clean, since they seem to + have been included in the tarball. + + -- Julien Cristau Thu, 15 Mar 2007 04:28:00 +0100 + +xorg-server (2:1.2.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + Remove patches 24 (hurd support), 35 (randr byteswap) and 43 (set damage + version), applied upstream. + + Bump build-dep on x11proto-randr-dev to >= 1.2, and on + x11proto-damage-dev to >= 1.1. + + -- Julien Cristau Wed, 7 Mar 2007 19:58:53 +0100 + +xorg-server (2:1.2.0-6) experimental; urgency=low + + * Set videoabiver to 1.0, same as in xorg-server 1.1. + + -- Julien Cristau Fri, 2 Mar 2007 16:38:12 +0100 + +xorg-server (2:1.2.0-5) experimental; urgency=low + + * Add input ABI versioning metadata. Rename serverabiver file to + videoabiver, and add inputabiver. Bump serverminver to 2:1.2.0-5 to deal + with this change. + + -- David Nusinow Thu, 1 Mar 2007 22:09:45 -0500 + +xorg-server (2:1.2.0-4) experimental; urgency=low + + [ Julien Cristau ] + * Don't strip modules when DEB_BUILD_OPTIONS contains nostrip. Thanks, + Cyril Brulebois! + + [ David Nusinow ] + * Move serverabiver file to serverminver. Use serverabiver to store the + actual video ABI version number (1.1 right now). This will allow drivers + to automatically generate their Provides: xserver-xorg-video-* line when + built against a particular server version. The rename of the files + is to better denote what they actually are. + * Bump the serverminver to 2:1.2.0-4 because of this change + + -- David Nusinow Wed, 21 Feb 2007 21:53:51 -0500 + +xorg-server (2:1.2.0-3ubuntu8) feisty; urgency=low + + * SECURITY UPDATE: arbitrary code execution with root privs via integer + overflows in MISC-XC. + * Add debian/patches/131_misc_xc_overflows.patch: upstream fixes. + * References + CVE-2007-1003 + + -- Kees Cook Thu, 29 Mar 2007 17:46:44 -0700 + +xorg-server (2:1.2.0-3ubuntu7) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.patch + - update to the latest version from Fedora (rev. 1.6, was 1.1) + + -- Timo Aaltonen Fri, 30 Mar 2007 10:39:01 +0300 + +xorg-server (2:1.2.0-3ubuntu6) feisty; urgency=low + + * debian/{rules,xsfbs/xsfbs.mk,serverminver,inputabiver} + - Import changes from current debian package, needed for the new intel + driver. + - Rename serverabiver to videoabiver, value 1.0. + - Set serverminver as this version. + * debian/patches: + 129_remove_extra_i2c_bittimeout.patch + 130_slow_down_ddc_i2c.patch + - Patches from server-1.3 branch, which make probing the monitor more + robust. + + -- Timo Aaltonen Thu, 29 Mar 2007 00:56:17 +0300 + +xorg-server (2:1.2.0-3ubuntu5) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.diff + - Re-enable. Despite being a hack, it works and is needed for compositing + managers to work properly. (LP: #89189) + + -- Timo Aaltonen Tue, 27 Mar 2007 02:33:31 +0300 + +xorg-server (2:1.2.0-3ubuntu4) feisty; urgency=low + + * debian/patches/107_fedora_dont_backfill_bg_none.patch: + - Re-enable to see if it helps with performance regressions. + * debian/patches/127_check_for_clientgone.patch: + - A fix from upstream. (LP: #60288) + * debian/patches/128_fix_client_privates_leak.patch + - Plug a memory leak. (LP: #92882) + * debian/rules + - Fix a typo in --with-default-font-path. + + -- Timo Aaltonen Sat, 17 Mar 2007 00:38:09 +0200 + +xorg-server (2:1.2.0-3ubuntu3) feisty; urgency=low + + * debian/patches: + - Rename 019_ubuntu_enable_composite.diff to 119_* so that it is in line + with the rest of our patches + - Re-add 126_debian_always_use_default_font_path.diff. This was dropped + by Debian but needed by us since we still have legacy fontpaths in + old configurations, so new paths need to be appended to the list. + + -- Timo Aaltonen Wed, 28 Feb 2007 11:54:18 +0200 + +xorg-server (2:1.2.0-3ubuntu2) feisty; urgency=low + + * debian/control: + - xvfb Depends on xauth, xfonts-base + + -- Sebastien Bacher Tue, 27 Feb 2007 23:31:06 +0100 + +xorg-server (2:1.2.0-3ubuntu1) feisty; urgency=low + + * Don't drop 42_build_int10_submodules.diff, it's useful + * 019_ubuntu_enable_composite.diff: + - enable composite + * debian/control: + - fixed Maintainer email + * debian/xserver-xorg-core.install: + - list ioport, gtf, pcitweak and scanpci + and manpages for scanpci, gtf, pcitweak + + [ Timo Aaltonen ] + * Merge with Debian, remaining changes: + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/control: + + don't Conflict with xserver-xorg-video + - refreshed and renamed patches + 102_ubuntu_sharevts_load_cpu.patch + 104_fedora_init_origins_fix.patch + 106_ubuntu_fpic_libxf86config.patch + 114_fedora_no_composite_in_xnest.patch + 121_only_switch_vt_when_active.diff + 124_fix-pdripriv_null_deref.patch + - dropped for now: + 42_build_int10_submodules.diff - causes "some regression" + * dropped patches (comments from Michel Daenzer): + - 107_fedora_dont_backfill_bg_none.patch + "Breaks X semantics and thus can't go in upstream. Apps/toolkits + need to be fixed not to use background none windows." + - 108_fedora_gl_include_inferiors.patch + "Breaks GLX semantics and should no longer be necessary now that + the GLX compositing managers default to using the Composite + Overlay Window." + - 120_fedora_disable_offscreen_pixmaps.diff + "Last time I looked at this, it was a gross hack to work around XAA + deficiencies in offscreen pixmap handling, which makes the server + die immediately when trying to use GLX_EXT_texture_from_pixmap + with EXA, due to calling XAA functions without checking it's + active or even loaded." + * debian/control: + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + * debian/patches/125_randr-version-supported.diff: + - The server supports protocol 1.1, make sure we use it. + + -- Sebastien Bacher Mon, 26 Feb 2007 09:36:38 +0100 + +xorg-server (2:1.2.0-3) experimental; urgency=low + + [ Julien Cristau ] + * Pass --with-os-name and --with-os-vendor to configure. + * Bump serverabiver to 2:1.2.0-1. + * Add patch from upstream git to set the supported damage version from the + server, instead of from the damage headers. xserver 1.2.0 supports damage + 1.0, not 1.1. + + -- Julien Cristau Sat, 17 Feb 2007 12:03:03 +0100 + +xorg-server (2:1.2.0-2) experimental; urgency=low + + * Delete useless debian/substvars. + * Change my email address in debian/control. + * Fix patch 42_build_int10_submodules.diff. The definition of + xf86InitInt10() was moved to int10/helper_exec.c between 1.1.1 and 1.2.0, + so we move it to int10/helper_mem.c, which we build in the main int10 + module, not the vm86 and x86emu submodules. Thanks to Cédric Augonnet and + Brice Goglin for the report and testing. + + -- Julien Cristau Sat, 10 Feb 2007 20:57:57 +0100 + +xorg-server (2:1.2.0-1) experimental; urgency=low + + * New upstream release. + + 40_xorg-xserver-1.1.0-dbe-render.diff dropped. + + 38_GetDrawableAttributes.patch dropped. + + 37_build-mesa-mipmap.patch dropped. + + 33_Xserver_man_typos.patch dropped. + + 24_hurd_support.diff massively reduced. + + 13_debian_add_xkbpath_env_variable.diff refreshed. + + 07_xorgconf_manpage_overhaul.diff updated. + + 42_build_int10_submodules.diff updated. + * Bump build-dep on mesa-swx11-source to >= 6.5.2. + * Version build-dependencies on x11proto-composite-dev and x11proto-kb-dev + to match configure.ac. + * Add build-dep on libxfixes-dev (needed for Xdmx). + + -- Julien Cristau Fri, 9 Feb 2007 20:54:27 +0100 + +xorg-server (2:1.1.99.903-1) experimental; urgency=low + + * New upstream release candidate. + * Forward-port patches: + * 07_xorgconf_manpage_overhaul.diff: refresh + * 12_security_policy_in_etc.diff: refresh + * 21_glx_align_fixes.patch: refresh + * 23_kfreebsd_support.diff: refresh + * 24_hurd_support.diff: refresh + * 34_xorg.conf_man_typos.patch: refresh + * 36_fix_ffs.patch: remove, applied upstream + * Bump build-dependency on libdrm-dev to (>= 2.3.0) because that is the X + server's minimum requirement. + + -- Thierry Reding Sat, 2 Dec 2006 12:44:59 +0100 + +xorg-server (2:1.1.99.902-1) experimental; urgency=low + + * Update to latest upstream release candidate. + * Forward-port patches: + * 02_libvgahw_gcc4_volatile_fix.diff: update + * 04_read_rom_in_chunks.diff: update + * 05_arm_cache_flush.diff: remove, applied upstream + * 06_arm_is_not_x86_and_has_no_vga.diff: remove, applied upstream + * 07_xorgconf_manpage_overhaul.diff: update + * 08_s390_servermd.diff: update + * 09_debian_xserver_rtff.diff: update + * 12_security_policy_in_etc.diff: update + * 13_debian_add_xkbpath_env_variable.diff: update + * 15_symlink_mesa.diff: remove, fixed upstream + * 16_s390_fix.diff: update + * 17_ignoreabi.diff: remove, applied upstream + * 18_execinfo_only_for_backtrace.patch: remove, applied upstream + * 18_execinfo_configured.patch: remove, applied upstream + * 19_configurable_misc_utils.patch: remove, applied upstream + * 20_mesa_6.5.1.diff: remove, applied upstream + * 21_glx_align_fixes.patch: update + * 22_xkb_cycle_3layouts.diff: remove, applied upstream + * 23_kfreebsd_support.diff: update, partially applied upstream + * 24_hurd_support.diff: update, partially applied upstream + * 25_tfp_damage.diff: remove, applied upstream + * 26_aiglx_happy_vt_switch.diff: remove, applied upstream + * 27_aiglx_locking.diff: remove, applied upstream + * 28_mesa_copy_sub_buffer.diff: remove, applied upstream + * 29_mesa_reseed_makefile.diff: remove, fixed upstream + * 30_fix_vmode_switch.diff: remove, fixed upstream + * 31_blocksigio.diff: remove, fixed upstream + * 32_disable_sparc_pci_bridge.diff: update + * 34_xorg.conf_man_typos.patch: update + * 35_randr_byteswap.patch: update + * 36_fix_ffs.patch: update + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + remove, applied upstream + * Upstream no longer ships a changelog, so don't try to install it. + * Add 37_build-mesa-mipmap.patch that adds the missing mipmap.c to libmain's + sources. + * Add 38_GetDrawableAttributes.patch which readds support for the + GetDrawableAttributes extension that's needed for compiz to work properly. + + -- Thierry Reding Fri, 1 Dec 2006 20:32:34 +0100 + +xorg-server (2:1.1.1-21) unstable; urgency=emergency + + * Security update. + * Fix integer overflow in the ProcXCMiscGetXIDList() function in the XC-MISC + extension. Reference: CVE-2007-1003. + + -- Julien Cristau Wed, 04 Apr 2007 00:34:51 +0200 + +xorg-server (2:1.1.1-20) unstable; urgency=low + + * xephyr: Add patch from upstream git to fix memory leak in + ephyrScreenFini(). Thanks, Guillem Jover! + + -- Julien Cristau Tue, 6 Mar 2007 22:20:14 +0100 + +xorg-server (2:1.1.1-19) unstable; urgency=high + + [ Drew Parsons ] + * Removed spurious space in default font line + (/usr/X11R6/lib/X11/fonts/Type1 not "/usr/X11R6/lib/ X11/fonts/Type1") + + [ David Nusinow ] + * Conflict with and replace xserver-common, because that package used to + provide the SecurityPolicy file. This is an RC bugfix because it breaks + upgrades, so it gets a high urgency. Thanks Christian Tsotras and Lionel + Elie Mamane for reporting and it. Closes: #402658 + + -- David Nusinow Wed, 28 Feb 2007 21:48:19 -0500 + +xorg-server (2:1.1.1-18) unstable; urgency=medium + + * Add patch from Fedora to make xephyr work on 64bit architectures + (closes: #405928). + + -- Julien Cristau Fri, 16 Feb 2007 22:20:08 +0100 + +xorg-server (2:1.1.1-17) unstable; urgency=medium + + * Make the int10 module usable on i386 with a 64bit kernel (closes: #409730). + + New patch 42_build_int10_submodules.diff, which allows us to build vm86 + and x86emu as two separate submodules, and make the int10 module itself + fall back to loading x86emu if vm86 calls fail. + + Add workaround for https://bugs.freedesktop.org/show_bug.cgi?id=7299 to + the above patch: move definition of Int10Current from int10/xf86int10.c + to int10/helper_mem.c. + + Drop the part of 39_alpha_build_flags.patch applying to + hw/xfree86/os-support/linux/Makefile.in, and run autoreconf with all + patches applied. + + -- Julien Cristau Wed, 7 Feb 2007 20:37:19 +0100 + +xorg-server (2:1.1.1-16) unstable; urgency=medium + + * New patch 41_xfree86_linux_acpi_fix_tokenizing.diff from upstream git to + fix a crash on acpi events (closes: #409443). + + -- Julien Cristau Sat, 3 Feb 2007 22:56:04 +0100 + +xorg-server (2:1.1.1-15) unstable; urgency=high + + * High-urgency upload for security bugfix. + * New patch 40_xorg-xserver-1.1.0-dbe-render.diff to fix multiple integer + overflows in the dbe and render extensions. + CVE IDs: CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + * Add myself to Uploaders, and remove Fabio and Branden, with their + permission. They're of course welcome back when they have more time! + + -- Julien Cristau Tue, 9 Jan 2007 15:45:46 +0100 + +xorg-server (2:1.1.1-14) unstable; urgency=high + + * The "let's drop 20 years of build logic and replace it with autoconf in a + single release, trust me, what could go wrong? " release + * High-urgency upload for RC bugfix + * New patch 39_alpha_build_flags.patch: no really, when they said + lnx_ev56.c should be built with -mcpu=ev56, they really meant it. + Closes: #392500. + + -- Steve Langasek Sun, 7 Jan 2007 15:19:08 -0800 + +xorg-server (2:1.1.1-13) unstable; urgency=medium + + [ Julien Cristau ] + * xserver-xorg-core recommends xfonts-base and suggests xfonts-100dpi | + xfonts-75dpi and xfonts-scalable. Also add explanation about fonts to the + long description, stolen from the old xserver-common package (closes: + #400654). + + [ David Nusinow ] + * This is important for upgrades to etch, and has no notable risk, so bump + priority to medium. + + -- David Nusinow Fri, 29 Dec 2006 19:57:51 -0500 + +xorg-server (2:1.1.1-12) unstable; urgency=low + + [ Julien Cristau ] + * Delete hw/xfree86/common/xf86Build.h in debian/rules clean, since it's + wrongly included in the upstream tarball. + + [ David Nusinow ] + * Pull fix for the ignore_abi.diff patch. This one's a major brown bag on my + part. Thanks Michel Dänzer. + * Add 38_wait_for_something_force_timer_reset.diff which forces the server + to reset timers when they've overrun in some cases rather than wait + forever. Patch by Daniel Stone. Thanks Michel Dänzer for pointing the + changes out. Closes: #374026 + + -- David Nusinow Tue, 12 Dec 2006 21:13:20 -0500 + +xorg-server (2:1.1.1-11) unstable; urgency=low + + [ Drew Parsons ] + * Patches 33_Xserver_man_typos.patch and 34_xorg.conf_man_typos.patch + fix minor typos in Xserver and xorg.conf man pages. + Closes: #364556, #308899. + * Add patch 35_randr_byteswap.patch from upstream. Fixes a client/server + byteswapping problem. Closes: #291100. + + [ Julien Cristau ] + * Don't build-depend on libdrm-dev on hurd-i386 (closes: #358015). Thanks, + Samuel Thibault. + * Update hurd support patch (closes: #356300). Thanks, Samuel Thibault. + * Add reportbug script stolen from the monolith, to add the user's config + and log file in every bug report. + * Delete hw/xfree86/common/xf86Build.h from our source tree, so that the + build date is correctly calculated at build time, and not hardcoded to + 07 July 2006. Thanks to Jurij Smakov for noticing. + * Add patch 36_fix_ffs.patch by Jurij Smakov to fix infinite loop in ffs() + if called with an argument of 0 (closes: #395564). + * Add patch 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms + from upstream git to fix color issue on big endian platforms + (closes: #392453). Thanks to Michel Dänzer for the patch! + * Fix typo in xvfb-run (closes: #337703). + * Install xdmxconfig and its manpage in xdmx-tools (closes: #393991). + * Add Replaces: xdmx (<= 2:1.1.1-10) to xdmx-tools because of the xmdxconfig + manpage move. + + -- David Nusinow Fri, 24 Nov 2006 15:44:52 -0500 + +xorg-server (2:1.1.1-10) unstable; urgency=low + + [ Denis Barbier ] + * Fix video mode switching. Closes: #391052 + * Fix FTBFS on kfreebsd-i386 and kfreebsd-amd64. Thanks Petr Salinger. + Closes: #363517 + + [ David Nusinow ] + * Add depends on xserver-xorg so that /etc/X11/X gets installed. Thanks + Frans Pop. Closes: #392295 + * Add 31_blocksigio.diff. This patch by Alan Hourihane, and it prevents a + race condition when a driver tries to set the cursor state when the server + is in the middle of switching resolution. Thanks to Frans Pop for + reporting the bug, Michel Dänzer for reading through the backtrace and + diagnosing the problem, and Alan for the final patch. Closes: #390646. + + [ Jurij Smakov ] + * Add 32_disable_sparc_pci_bridge.diff. Disable PCI bridge handling on + sparc, which is broken and causes filesystem corruption (by poking + the PCI bus in the wrong places) on some machines. Closes: #392312. + + [ Drew Parsons ] + * Use __appmansuffix__ not __mansuffix__ in + 03_xnest_manpage_overhaul.diff. Closes: #390599. + * Install upstream ChangeLog. Closes: #365274. + + -- David Nusinow Mon, 16 Oct 2006 21:59:51 -0400 + +xorg-server (2:1.1.1-9) unstable; urgency=low + + [ Jurij Smakov ] + * Add 21_glx_align_fixes.patch to reintroduce the setting of __GLX_ALIGN64 + variable, lost during the modular transition. This setting is essential + for architectures with strong alignment requirements. Patch affects + alpha, sparc, amd64, ia64 and s390, mimicking the behaviour of the + monolithic build. Closes: #388125. + + [ Denis Barbier ] + * Add 22_xkb_cycle_3layouts.diff to fix layout switching when 3 layouts + are present. Thanks Ivan Pascal for the patch. Closes: #345803 + + [ David Nusinow ] + * Add kFreeBSD support patch (23). Thanks to Robert Millan, Petr Salinger, + Daniel Stone, and Michael Banck for input and patch writing. + Closes: #363517 + * Add hurd support patch (24). Thanks Samuel Thibault, Daniel Stone, and + Michael Banck. Closes: #356300 + * Disable the explicit enabling of dri in the configure. The configure + script autodetects whether or not to use this anyway, and enabling it + explicitly breaks the build on hurd. Thanks Samuel Thibault and Michael + Banck. Closes: #358015 + * Add several patches written by Kristian Høgsberg for allowing compiz to + work with AIGLX. These patches were vetted by Theirry Reding with valuable + advice from Michel Dänzer, and feedback from Kristian himself. + - 25_tfp_damage.diff + - 26_aiglx_happy_vt_switch.diff + - 27_aiglx_locking.diff + - 28_mesa_copy_sub_buffer.diff + - 29_mesa_reseed_makefile.diff + - update of 20_mesa_6.5.1.diff + * Remove bizarre wholesale inclusion of another patch in the 23_kbsd patch + + [ Eugene Konev ] + * Use --with-default-font-path instead of --with-fontdir. + * Set RGBPath through --with-rgb-path. + * Drop 11_debian_always_use_default_font_path.diff. + * Drop 14_debian_always_look_in_our_module_path.diff. + * Ship SecurityPolicy in xserver-xorg-core. + + -- David Nusinow Thu, 28 Sep 2006 23:59:35 -0400 + +xorg-server (2:1.1.1-8) unstable; urgency=low + + * Update mesa symlink patch to the latest from HEAD + * Add 20_mesa_6.5.1.diff to allow the server to build with mesa 6.5.1 + * Bump build-dep versions on x11proto-gl to 1.4.8, and mesa to 6.5.1 + + -- David Nusinow Mon, 25 Sep 2006 22:21:37 -0400 + +xorg-server (2:1.1.1-7) unstable; urgency=low + + * Fix s390 build issue. Thanks Bastian Blank for the report and Eugene Konev + for the patch. Closes: #388628. + * Disable build of various utilities that we don't ship anyway. Patch thanks + to Eugene Konev. + + -- David Nusinow Thu, 21 Sep 2006 23:07:16 -0400 + +xorg-server (2:1.1.1-6) unstable; urgency=low + + * Upload 7.1 to unstable. + + [ Drew Parsons ] + * Added SGI FreeB licence to debian/copyright. Closes: #368563. + * Apply upstream patches 18_execinfo_only_for_backtrace.patch, to use + execinfo.h for and only for backtrace. Applied git patch + 5a3488ccac8e5dabd9fc98bc41ef178ead1b2faf directly into configure scripts, + activated with autoreconf. Closes: #363218. + * Only requires build-depends version of x11proto-gl-dev on 1.4.6. + + [ Steve Langasek ] + * Add versioned build-depends on x11proto-fixes-dev (>= 4.0), to + ensure the package is built against the right protocol version. + Closes: #383778. + + -- David Nusinow Mon, 18 Sep 2006 18:30:07 -0400 + +xorg-server (2:1.1.1-5) experimental; urgency=low + + * Fix error in 16_s390_fix.diff caused by my idiot copying. Thanks Yannick + Roehlly and Daniel Stone. + + -- David Nusinow Sun, 27 Aug 2006 23:25:21 +0000 + +xorg-server (2:1.1.1-4) experimental; urgency=low + + [ Drew Parsons ] + * Tighten dependencies between X11R7.1 server and video drivers. + xserver-xorg-core no longer Depends: xserver-xorg-video-all + | xserver-xorg-video but instead Conflicts: xserver-xorg-video. + (closes: #383873) + The dependency on xserver-xorg-video-all | xserver-xorg-video-1.0 is + managed by the xserver-xorg binary package (not included here in + order to avoid circular dependencies). (closes: #362313) + * Likewise remove Depends: xserver-xorg-input-all | xserver-xorg-input + (again, handled by xserver-xorg) to avoid circular dependency with drivers. + + [ David Nusinow ] + * Epoch bump + * Add 17_ignoreabi.diff to allow users to simply set a value in xorg.conf + rather than pass -ignoreABI to the server every time it starts + + -- David Nusinow Wed, 23 Aug 2006 22:03:06 +0000 + +xorg-server (1:1.1.1-3) unstable; urgency=low + + * Add 16_s390_fix.diff to fix FTBFS on s390. Thanks Bastian Blank. + (closes: #362641) + * Bump build-depends version of libgl1-mesa-dev to 6.5.x package we have in + experimental currently + * Bump build-depends version of x11proto-gl-dev to 1.4.7 or greater + + -- David Nusinow Tue, 22 Aug 2006 00:57:31 +0000 + +xorg-server (1:1.1.1-2) experimental; urgency=low + + [ Drew Parsons ] + * Updated mesa-swx11-source build-depends to (>> 6.5.0), required + for xserver 1.1.1. (closes: #383334) + + [ David Nusinow ] + * Enable and ship xephyr + * Hack off the 'x' manpage suffix + * Install Xnest manpage + * Bump policy version to 3.7.2.0. No changes necessary. + + -- David Nusinow Wed, 16 Aug 2006 21:14:44 +0000 + +xorg-server (1:1.1.1-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release + * Move patch target call so that we don't try and build twice + * Remove obsolete 15_security_allocate_local.diff and + 16_SECURITY_setuid.diff + * Add 15_symlink_mesa.diff + + -- David Nusinow Sun, 6 Aug 2006 16:12:25 +0000 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.1.1-0ubuntu14) feisty; urgency=low + + * Add 'debian/patches/38_Fix-pDRIPriv_NULL_deref.patch': NULL-init DRI + screen private data, thanks to Tormod Volden (LP: #60288). + + -- Kees Cook Sat, 10 Feb 2007 20:27:44 -0800 + +xorg-server (1:1.1.1-0ubuntu13) feisty; urgency=low + + * 19_revert_xkb_change_breaking_XkbGetKeyboard.patch: + - patch from fedora (with extra Makefile.in change), revert change that + broke XkbGetKeyboard() (Ubuntu: #58083) + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + - upstream patch copied from the Debian package, fix blue screen with + compiz on ppc (Ubuntu: #58373) + + -- Sebastien Bacher Fri, 12 Jan 2007 12:17:28 +0100 + +xorg-server (1:1.1.1-0ubuntu12.1) edgy-security; urgency=low + + * SECURITY UPDATE: Arbitrary code execution with root privileges via heap + overflows in DBE and Render extensions. + * Add 'debian/patches/021_ubuntu_dbe-render_overflows.diff' from + upstream + * References + CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + + -- Kees Cook Mon, 8 Jan 2007 12:45:41 -0800 + +xorg-server (1:1.1.1-0ubuntu12) edgy; urgency=low + + * debian/patches/17_no_composite_for_xvfb.patch: + - fix a crasher by not using composite for Xvfb when using -render + * debian/patches/18_no_composite_for_xvfb_run.patch: + - use "-extension Composite" to fix xvfb-run crashing + + -- Sebastien Bacher Fri, 13 Oct 2006 17:12:49 +0200 + +xorg-server (1:1.1.1-0ubuntu11) edgy; urgency=low + + * debian/patches/16_only_switch_vt_when_active.patch: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + -- Ryan Lortie Thu, 21 Sep 2006 01:26:35 -0400 + +xorg-server (1:1.1.1-0ubuntu10) edgy; urgency=low + + * Build xserver-xephyr from xorg-server package. Malone: #57077, #57084 + + -- Tollef Fog Heen Wed, 6 Sep 2006 12:57:32 +0200 + +xorg-server (1:1.1.1-0ubuntu9) edgy; urgency=low + + * Enable composite extension by default + * Add patch from fd.o bugzilla #7916 to avoid aiglx hangs on vt + switches + + -- Matthew Garrett Sat, 26 Aug 2006 03:20:31 +0100 + +xorg-server (1:1.1.1-0ubuntu8) edgy; urgency=low + + * Steal patch from Fedora to allow compiz to trigger the disabling of + XAA off-screen pixmaps + + -- Matthew Garrett Wed, 23 Aug 2006 21:26:08 +0100 + +xorg-server (1:1.1.1-0ubuntu7) edgy; urgency=low + + * (temporarily) Removed Breaks: section from xserver-xorg-core (necessary + until apt-get properly supports this feature) + * Tightened Build-Depends: mesa-swx11-source to >= + 6.5.0.git.20060810-0ubuntu1 + * Tightened Build-Depends of libgl1-mesa-dev to >= + 6.5.0.git.20060810-0ubuntu1 + + -- Rodrigo Parra Novo Tue, 15 Aug 2006 07:26:07 -0300 + +xorg-server (1:1.1.1-0ubuntu6) edgy; urgency=low + + * Tightened Build-Depends of mesa-swx11-source to version 6.5.0.git.20060809 + * Removed patch 003_fedora_root_window_black_pattern.patch (not necessary + for Ubuntu) + + -- Rodrigo Parra Novo Fri, 11 Aug 2006 11:41:29 -0300 + +xorg-server (1:1.1.1-0ubuntu5) edgy; urgency=low + + * Renamed 003_ubuntu_sharevts_load_cpu.patch to + 002_ubuntu_sharevts_load_cpu.patch + * Added 003_fedora_root_window_black_pattern.patch (black background + pattern instead of default X background pattern. Feel free to revert if + you feel strongly against this one) + * Added 005_fdo4320_composite_fastpath.patch and + 016_fdo7482_xdmx_render_fix.patch (upstream bug fixes, bug numbers + annotated on patch names) + * Added 004_fedora_init_origins_fix.patch (multihead initialization) + * Added 006_ubuntu_fpic_libxf86config.patch + * Added 007_fedora_dont_backfill_bg_none.patch + * Added 008_fedora_gl_include_inferiors.patch, + 009_fedora_mesa_copy_sub_buffer.patch, + 010_fedora_no_move_damage.patch, + 012_fedora_tfp_damage.patch and + 014_fedora_no_composite_in_xnest.patch (further aiglx support) + * 011_fedora_pci_scan_fixes.patch (pci scan fixes - testing is needed to + check if an extra upstream patch for pci domains is also necessary) + * Added 015_fedora_sane_default_mode.patch (tweak default mode - please feel + free to revert this patch if you feel strongly against it) + * Added 017_fedora_add_missing_headers_to_sdk.patch + * Added 018_ubuntu_linux_kernel_include_fixes.patch and + 013_ubuntu_symlink_mesa_source.patch (build fixes against current + linux-kernel-modules * mesa-swx11-source - these already existed before, + but were applied directly to the source tree, instead of being quilt + patches) + * Just for reference: debian patch #02 is candidate for removal on next + upload. I'll refrain from removing it now to diminish the chances of this + being a breaks-for-everyone release + * Moved SecurityPolicy example from /usr/share/doc/examples/ to + /usr/share/doc/xserver-xorg-core/ + + -- Rodrigo Parra Novo Mon, 7 Aug 2006 17:21:05 -0300 + +xorg-server (1:1.1.1-0ubuntu4) edgy; urgency=low + + * Added new Breaks: section to xorg-server-core: + xserver-xorg-driver-all, xserver-xorg-driver-apm, + xserver-xorg-driver-ark, xserver-xorg-driver-ati, + xserver-xorg-driver-chips, xserver-xorg-driver-cirrus, + xserver-xorg-driver-cyrix, xserver-xorg-driver-dummy, + xserver-xorg-driver-fbdev, xserver-xorg-driver-glint, + xserver-xorg-driver-i128, xserver-xorg-driver-i740, + xserver-xorg-driver-i810, xserver-xorg-driver-imstt, + xserver-xorg-driver-mga, xserver-xorg-driver-neomagic, + xserver-xorg-driver-newport, xserver-xorg-driver-nsc, + xserver-xorg-driver-nv, xserver-xorg-driver-rendition, + xserver-xorg-driver-s3, xserver-xorg-driver-s3virge, + xserver-xorg-driver-savage, xserver-xorg-driver-siliconmotion, + xserver-xorg-driver-sis, xserver-xorg-driver-sisusb, + xserver-xorg-driver-tdfx, xserver-xorg-driver-tga, + xserver-xorg-driver-trident, xserver-xorg-driver-tseng, + xserver-xorg-driver-v4l, xserver-xorg-driver-vesa, + xserver-xorg-driver-vga, xserver-xorg-driver-via, + xserver-xorg-driver-vmware, xserver-xorg-driver-voodoo, + xserver-xorg-video-all (<< 7.0.22ubuntu7), + xserver-xorg-video-apm (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-ark (<< 1:0.6.0-0ubuntu1), + xserver-xorg-video-ati (<< 1:6.6.1-0ubuntu1), + xserver-xorg-video-chips (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-cirrus (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-cyrix (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-dummy (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-fbdev (<< 1:0.3.0-0ubuntu1), + xserver-xorg-video-glint (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-i128 (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-i740 (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-i810 (<< 1:1.6.1-0ubuntu1), + xserver-xorg-video-imstt (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-mga (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-neomagic (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-newport (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-nsc (<< 1:2.8.1-0ubuntu1), + xserver-xorg-video-nv (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-rendition (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-s3 (<< 1:0.4.1-0ubuntu1), + xserver-xorg-video-s3virge (<< 1:1.9.1-0ubuntu1), + xserver-xorg-video-savage (<< 1:2.1.1-0ubuntu1), + xserver-xorg-video-siliconmotion (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-sis (<< 1:0.9.1-0ubuntu1), + xserver-xorg-video-sisusb (<< 1:0.8.1-0ubuntu1), + xserver-xorg-video-tdfx (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tga (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-trident (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tseng (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-v4l (<< 1:0.1.1-0ubuntu1), + xserver-xorg-video-vesa (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-vga (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-via (<< 1:0.2.1-0ubuntu1), + xserver-xorg-video-vmware (<< 1:10.13.0-0ubuntu1), + xserver-xorg-video-voodoo (<< 1:1.1.0-oubuntu1) + + -- Rodrigo Parra Novo Tue, 1 Aug 2006 22:59:55 -0300 + +xorg-server (1:1.1.1-0ubuntu3) edgy; urgency=low + + * Build with -fno-stack-protector (see LP#54650) + + -- Matt Zimmerman Mon, 31 Jul 2006 16:28:59 -0700 + +xorg-server (1:1.1.1-0ubuntu2) edgy; urgency=low + + * (sparc only) removed stale inclusion of asm/kbio.h on + hw/xfree86/os-support/linux/lnx_io.c and + hw/xfree86/os-support/linux/lnx_kbd.c + * Update debian/serverabiver to 1:1.1.1 + + -- Rodrigo Parra Novo Mon, 31 Jul 2006 12:53:22 -0300 + +xorg-server (1:1.1.1-0ubuntu1) edgy; urgency=low + + * New Upstream version + * Changed Build-Depends from mesa-swrast-source to mesa-swx11-source, + following Debian package nomenclature + * Re-did 12_security_policy_in_etc.diff for 1.1.1 + * Dropped 15_security_allocate_local.diff (applied upstream) + * Dropped 16_SECURITY_setuid.diff (applied upstream) + * Dropped 000_ubuntu_fix_read_kernel_mapping.patch (applied upstream) + * Dropped 002_ubuntu_fix_for_certain_intel_chipsets.patch (applied upstream) + * Updated versioned Build-Depends on mesa-swx11-source to version + 6.5.0.cvs.20060725-0ubuntu1 + * Added arrayobj.c, arrayobj.h, bitset.h & rbadaptors.h to + GL/symlink-mesa.sh (linked from mesa-swx11-source) + * Added arrayobj.c to default build target on GL/mesa/main + + -- Rodrigo Parra Novo Tue, 25 Jul 2006 20:06:28 -0300 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.0.2-9) UNRELEASED; urgency=high + + [ Denis Barbier ] + * Fix 13_debian_add_xkbpath_env_variable.diff, XKBPATH environment + variable was not always taken into account. + + [ David Nusinow ] + * Remove two Ubuntu packaging holdovers. Have xvfb recommend xbase-clients + rather than xauth, and have xserver-xorg-core recommend xkb-data rather + than xkeyboard-config. Thanks Sterling MacNay. + * Security update. Fix for setuid privledge escalation vulernabilities. + See http://lists.freedesktop.org/archives/xorg/2006-June/016146.html for + the full advisory. + + [ Jurij Smakov ] + * Stop including the non-existent asm/kbio.h header file in + hw/xfree86/os-support/linux/lnx_{io,kbd}.c to avoid the build failure + on sparc. + + -- David Nusinow Sat, 1 Jul 2006 17:20:45 -0400 + +xorg-server (1:1.0.2-8) unstable; urgency=low + + * Move xserverrc back to xbase-clients. Thanks Benjamin Mesing. + * Add 15_security_allocate_local.diff. This fixes Bug fd.o bug #6642. + Fix buffer overflow in Render. (CVE 2006-1526). Patch by Eric Anholt. + + -- David Nusinow Tue, 2 May 2006 21:47:17 -0400 + +xorg-server (1:1.0.2-7) unstable; urgency=low + + * Ship xserverrc again in /etc/X11/xinit. Thanks Bastian Kleineidam and + Vasilis Vasaitis. (closes: #357713) + + -- David Nusinow Wed, 26 Apr 2006 00:01:16 -0400 + +xorg-server (1:1.0.2-6) unstable; urgency=low + + [ David Nusinow ] + * Use -DNO_INLINE on s390. Thanks Bastian Blank and Julien Cristau. + (closes: #362641) + * Re-add xvfb-run and manpage to xvfb package. Thanks Josselin Mouette and + Jamie Wilkinson. (closes: #363494) + * Add 014_debian_always_look_in_our_module_path.diff. This will cause the + server to always look in the default module path even if they've specified + an alternate path in their xorg.conf file via the ModulePath option. A + note to users: you should remove this part of your xorg.conf unless you + need it, as the server will look in the right place for modules if you + don't specify a location. + * Run dh_install with --list-missing + * Add missing manpages all around. Thanks Roland Mas and Jan Hudec. + (closes: #362489, #364199) + * Actually install apps to xdmx-tools. Thanks Xavier Bestel. + (closes: #356813) + + [ Denis Barbier ] + * Add 13_debian_add_xkbpath_env_variable.diff so that the server takes + the XKBPATH environment variable into account. (closes: #363229) + + -- David Nusinow Sat, 22 Apr 2006 17:06:23 -0400 + +xorg-server (1:1.0.2-5) unstable; urgency=low + + * Add 11_debian_always_use_default_font_path.diff from Eugene Konev. This + patch causes the server to add the default font path to whatever the user + has specified. Right now, that's /usr/share/fonts/X11, as defined on + configure in debian/rules. Thanks Eugene, this will definitely go a long + way. + * Document how to get rid of error loading glcore (and other modules) in + NEWS.Debian. Thanks Matej Vela and others. + * Provide the virtual 'xserver' package. Thanks Steve Langasek and Daniel + Stone. (closes: #362750) + * Add 12_security_policy_in_etc.diff from Eugene Konev. This will allow us + to tell the server on configure to look in /etc/X11/xserver for the + SecurityPolicy file. Thanks Joey Hess and Eugene. (closes: #362246) + + -- David Nusinow Mon, 17 Apr 2006 00:34:08 -0400 + +xorg-server (1:1.0.2-4) unstable; urgency=low + + * Document the need to update paths in xserver-xorg-core's NEWS file. + (closes: #362077, #362244, #362431) + * Make xserver-xorg-core Architecture: any. (closes: #362150) + * Build with --with-fontdir=/usr/share/fonts/X11. Remove + --with-default-font-path option to make this work. Thanks Eugene Konev. + + -- David Nusinow Thu, 13 Apr 2006 23:54:06 -0400 + +xorg-server (1:1.0.2-3) unstable; urgency=low + + * Add build-conflicts on xlibs-static-dev. Thanks Zephaniah E. Hull. + + -- David Nusinow Tue, 11 Apr 2006 18:44:51 -0400 + +xorg-server (1:1.0.2-2) unstable; urgency=low + + * Upload to unstable + * Add versioned build-dep on libdmx-dev. Thanks Frank Lichtenheld. + (closes: #361752) + + -- David Nusinow Mon, 10 Apr 2006 19:34:04 -0400 + +xorg-server (1:1.0.2-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release. Fixes CVE-2006-0745 + + [ Denis Barbier ] + * Set XKB base path to /usr/share/X11/xkb. + + -- David Nusinow Mon, 20 Mar 2006 21:41:04 -0500 + +xorg-server (1:1.0.2-0ubuntu10) dapper; urgency=low + + * Backport a fix for Intel bridge handling: + debian/patches/002_fix_for_certain_intel_chipsets.patch + (Closes Ubuntu: #29880) + + -- Paul Sladen Sun, 14 May 2006 19:01:32 +0100 + +xorg-server (1:1.0.2-0ubuntu9) dapper; urgency=low + + * Add 1680x1050 60 and 85Hz Modelines. Thanks to Bart Verwilst for the data. + (Closes Ubuntu: #6096) + + -- Fabio M. Di Nitto Fri, 05 May 2006 12:38:22 +0200 + +xorg-server (1:1.0.2-0ubuntu8) dapper; urgency=low + + * Fix "XCB rendertest crashes server": + - Add patch 001-CVE-2006-1526.patch.dpatch. + (CVE-2006-1526) + + -- Fabio M. Di Nitto Wed, 03 May 2006 09:01:09 +0200 + +xorg-server (1:1.0.2-0ubuntu7) dapper; urgency=low + + * Ship again xorg.conf(5) + (Closes Ubuntu: #33703) + + -- Fabio M. Di Nitto Mon, 01 May 2006 13:37:40 +0200 + +xorg-server (1:1.0.2-0ubuntu6) dapper; urgency=low + + * Fix severe internal memory corruption: + - Add patch: 000-fix-read-kernel-mapping.patch.dpatch. + (freedesktop bugzilla: #6472) + + -- Fabio M. Di Nitto Fri, 21 Apr 2006 08:07:33 +0200 + +xorg-server (1:1.0.2-0ubuntu5) dapper; urgency=low + + * Fix CPU load when using -sharevts: + - Add patch: 991_sharevts-load-cpu.patch + (Thanks for the initial patch to Michael Witrant) + (Closes Ubuntu: #33611) + + -- Fabio M. Di Nitto Mon, 10 Apr 2006 13:30:26 +0200 + +xorg-server (1:1.0.2-0ubuntu4) dapper; urgency=low + + * Fix SecurityPolicy path to /etc/X11/xserver/SecurityPolicy + and ship an example. NOTE: this file is NOT installed by default, + the WARNING you see in Xorg.0.log is an harmless WARNING. + Add patch: 990_ubuntu_fix_security_policy_path.patch. + (Close Ubuntu: #31608) + + * Readd manpages to the different packages. + + * Ship again ioport, gtf, pcitweak and scanpci. + (Closes Ubuntu: #37720) + + -- Fabio M. Di Nitto Tue, 04 Apr 2006 16:33:00 +0200 + +xorg-server (1:1.0.2-0ubuntu3) dapper; urgency=low + + * What about shipping xorg-server.m4 to make developer life easier? + + -- Fabio M. Di Nitto Thu, 23 Mar 2006 10:32:55 +0100 + +xorg-server (1:1.0.2-0ubuntu2) dapper; urgency=low + + * xserver-xorg-dev Depends: x11proto-randr-dev. + (Closes Ubuntu: #35594) + + -- Fabio M. Di Nitto Wed, 22 Mar 2006 08:09:46 +0100 + +xorg-server (1:1.0.2-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Drop patches: + + CVE-2006-0745 + + add-missing-sparc-include + + fix-backtrace + + fix-crash-on-null-addr + + * UVF execption granted by mdz. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:39:01 +0100 + +xorg-server (1:1.0.1-2) experimental; urgency=low + + [ David Nusinow ] + * Add versioned dependency on x11-common + * Remove old cruft in our patches directory + * Port patches from trunk + + 030_libvgahw_gcc4_volatile_fix.diff + + general/026_xc_programs_manpage_overhaul.diff + + arm/303_arm_cache_flush.diff + + arm/315_arm_is_not_x86_and_has_no_vga.diff + + general/099e_xorgconf_manpage_overhaul.diff + + s390/500_s390_support.diff + + debian/910_debian_Xserver_RTFF.diff + * add 04_read_rom_in_chunks.diff. This reads PCI ROM in large chunks rather + than one byte at a time. This patch by Alex Williamson and forwarded to us + by Dann Frazier. Thanks to both of them. (closes: #353168) + * Don't build xserver-xorg-core on s390. This means putting all the other + arches as being explicitly listed. Damn !s390. + * Version the conflict with xserver-xfree86 to allow for the transition + package to be installed + * Remove README.DRI, as it is non-free. Add it to prune list. + * Add 10_dont_look_in_home_for_config.diff to prevent looking in a user's + home directory for xorg.conf. Thanks Daniel Stone for the patch. + + -- David Nusinow Sun, 12 Mar 2006 16:18:13 -0500 + +xorg-server (1:1.0.1-1) experimental; urgency=low + + * First upload to Debian + * Add bison and flex to the build-depends + * Define INSTALL in debian/rules + * Add xserver-xorg-core dependency xserver-xorg-video-all | + xserver-xorg-video. The former is a metapackage that depends on all the + video drivers we ship and the latter is a virtual package that each video + driver provides. This scheme will install the metapackage by default but + will permit any single video driver to satsify the dependency. Do the same + thing for the input drivers. + * switch dpatch build-dependency to quilt + * Deal with mesa packaging rename: build-dep on mesa-swrast-source -> + mesa-swx11-source + * Change xserver-core depends to be on x11-common rather than xorg-common + * Have xserver-xorg-dev install the files in /usr/share/aclocal so we get + xorg-server.m4 + * Manually set permissions on serverabiver installation + * Set the default font path to /usr/share/fonts/X11 instead of + /usr/share/X11/fonts. Thanks Eugene Konev. + + -- David Nusinow Mon, 20 Feb 2006 00:18:45 -0500 + +xorg-server (1:1.0.1-0ubuntu8) dapper; urgency=low + + * [SECURITY] Fix CVE-2006-0745. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:33:50 +0100 + +xorg-server (1:1.0.1-0ubuntu7) dapper; urgency=low + + * debian/control: + - xvfb Depends on xfonts-base too, fix pointed by fabbione + + -- Sebastien Bacher Fri, 3 Mar 2006 22:21:56 +0100 + +xorg-server (1:1.0.1-0ubuntu5) dapper; urgency=low + + * Add missing include on sparc. Fix FTBFS. + + -- Fabio M. Di Nitto Wed, 01 Feb 2006 13:45:41 +0100 + +xorg-server (1:1.0.1-0ubuntu4) dapper; urgency=low + + * Backport from upstream HEAD at Daniel's request: + - Add forgotten HAVE_BACKTRACE define, so that we actually get + backtraces when Xorg segfaults. + + -- Colin Watson Fri, 27 Jan 2006 13:47:56 +0000 + +xorg-server (1:1.0.1-0ubuntu3) dapper; urgency=low + + * Depend on x11-common rather than xorg-common and xserver-common + + -- Tollef Fog Heen Wed, 18 Jan 2006 17:13:12 +0100 + +xorg-server (1:1.0.1-0ubuntu2) dapper; urgency=low + + * Add flex to build-deps, fixing FTBFS. + + -- Tollef Fog Heen Wed, 18 Jan 2006 12:34:03 +0100 + +xorg-server (1:1.0.1-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Fri, 6 Jan 2006 08:00:52 +1100 + +xorg-server (1:1.0.0-0ubuntu1) dapper; urgency=low + + * New upstream release. + + fbCompositeGeneral is now around 97.3% less stuffed (closes: + Ubuntu#20286). + + 'Fix' mouse issues in the DIX by adding XFree86Server defines (sigh; + closes: Ubuntu#20200). + + Fix Emulate3Buttons mouse posting (closes: Ubuntu#11308). + * Bump Build-Depends on libxt-dev (appdefaultdir), libdrm-dev (libdrm2), and + mesa-swrast-source (new files). + * Add --with-fontdir and scotch --with-default-font-path to fix font paths + for non-Xorg servers (closes: Ubuntu#20157). + * Fix path to SecurityPolicy and RGB_DB. + * Move update-linux-hardened-support call to xserver-xorg-core postinst + (from xserver-xorg postinst). + * Add patch to os/access.c so we don't crash on a null-addressed interface + (closes: Ubuntu#20414). + + -- Daniel Stone Tue, 13 Dec 2005 07:27:13 +1100 + +xorg-server (1:0.99.3-0ubuntu6) dapper; urgency=low + + * Fix xserver-xorg-dev Depends field to only depend on the headers this + this package actually uses. + * Re-add xvfb-run to xfvb (closes: Ubuntu#20157). + + -- Daniel Stone Mon, 5 Dec 2005 15:04:14 +1100 + +xorg-server (1:0.99.3-0ubuntu5) dapper; urgency=low + + * Add -ffunction-sections where needed + * Depend: xserver-common: needed for dexconf and /usr/X11R6/bin/X + + -- LaMont Jones Sat, 26 Nov 2005 05:15:36 +0000 + +xorg-server (1:0.99.3-0ubuntu4) dapper; urgency=low + + * Add two more dependencies to build the other half of the video drivers: + - x11proto-xext-dev, x11proto-video-dev + + -- Adam Conrad Fri, 25 Nov 2005 02:36:44 +1100 + +xorg-server (1:0.99.3-0ubuntu3) dapper; urgency=low + + * Add a few dependencies to xorg-server-dev as the path of least resistance + to get all the various input and video drivers to build again: + - For the video drivers: x11proto-randr-dev, x11proto-render-dev, + x11proto-fonts-dev, x11proto-xf86dri-dev, libdrm-dev + - For the input drivers: x11proto-core-dev, x11proto-input-dev, + x11proto-randr-dev (why do input drivers want randr?) + + -- Adam Conrad Thu, 24 Nov 2005 18:51:25 +1100 + +xorg-server (1:0.99.3-0ubuntu2) dapper; urgency=low + + * Add missing libfreetype6-dev build-depends. + + -- Daniel Stone Thu, 24 Nov 2005 10:26:44 +1100 + +xorg-server (1:0.99.3-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Mon, 21 Nov 2005 14:13:41 +1100 + +xorg-server (1:0.99.2+cvs.20051025-3) dapper; urgency=low + + * Version mesa-swrast-source Build-Dep to 6.4.0 or higher, so GLcore is a + little less crash-happy (e.g. when moving your glxgears window). + * Export /usr/share/xserver-xorg/serverabiver to xserver-xorg-dev, which + describes the relationship needed from a driver on xserver-xorg-core. + + -- Daniel Stone Fri, 28 Oct 2005 13:00:26 +1000 + +xorg-server (1:0.99.2+cvs.20051025-2) dapper; urgency=low + + * Add Build-Deps on libxaw7-dev, libxmu-dev, libxt-dev, libxpm-dev, + libx11-dev, libxtst-dev, and libxres-dev for DMX utils. + + -- Daniel Stone Wed, 26 Oct 2005 14:34:40 +1000 + +xorg-server (1:0.99.2+cvs.20051025-1) dapper; urgency=low + + * Update to new upstream version. + * All applicable patches have been committed upstream, bar #989 and #990. + + -- Daniel Stone Thu, 20 Oct 2005 10:26:33 +1000 + +xorg-server (1:0.99.0+cvs.20050901-1) breezy; urgency=low + + * First xorg-server release. + + -- Daniel Stone Wed, 6 Jul 2005 15:48:17 +1000 --- xorg-server-1.19.6.orig/debian/compat +++ xorg-server-1.19.6/debian/compat @@ -0,0 +1 @@ +9 --- xorg-server-1.19.6.orig/debian/control +++ xorg-server-1.19.6/debian/control @@ -0,0 +1,400 @@ +Source: xorg-server +Section: x11 +Priority: optional +Maintainer: Ubuntu X-SWAT +XSBC-Original-Maintainer: Debian X Strike Force +Build-Depends: + debhelper (>= 9), + dh-autoreconf, + po-debconf, + dpkg-dev (>= 1.16.1), + quilt, + lsb-release, + pkg-config, + bison, + flex, + 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.31), + x11proto-damage-dev (>= 1.1), + x11proto-fixes-dev (>= 1:5.0), + x11proto-fonts-dev (>= 2.1.3), + x11proto-kb-dev (>= 1.0.3), + x11proto-xinerama-dev, + x11proto-randr-dev (>= 1.5.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.5), + 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:2.0.1), + 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.46) [!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.6.99.1), + 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:3.0.0), + libxv-dev, + libxinerama-dev, + libxshmfence-dev (>= 1.1) [!hurd-i386], +# glamor + libepoxy-dev [linux-any kfreebsd-any], + libegl1-mesa-dev [linux-any kfreebsd-any], + libgbm-dev (>= 10.2) [linux-any kfreebsd-any], +# XCB bits for Xephyr + libxcb1-dev, + libxcb-xkb-dev, + libxcb-shape0-dev, + libxcb-render0-dev, + libxcb-render-util0-dev, + libxcb-util0-dev, + libxcb-image0-dev, + libxcb-icccm4-dev, + libxcb-shm0-dev, + libxcb-keysyms1-dev, + libxcb-randr0-dev, + libxcb-xv0-dev, + libxcb-glx0-dev, + libxcb-xf86dri0-dev (>= 1.6), +# unit tests + xkb-data, + x11-xkb-utils, +# arc4random_buf(), getpeereid() + libbsd-dev, +# xwayland + libwayland-dev [linux-any], + wayland-protocols (>= 1.9) [linux-any], +#logind + libdbus-1-dev (>= 1.0) [linux-any], +# systemd-daemon + libsystemd-dev [linux-any], +# XMir + libmirclient-dev (>= 0.13.1) [!powerpc !ppc64el !s390x], + mir-client-platform-mesa-dev, +Standards-Version: 3.9.8 +Vcs-Git: https://anonscm.debian.org/git/pkg-xorg/xserver/xorg-server.git +Vcs-Browser: https://anonscm.debian.org/cgit/pkg-xorg/xserver/xorg-server.git +Homepage: https://www.x.org/ + +Package: xserver-xorg-core +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + keyboard-configuration [linux-any kfreebsd-any], + udev (>= 149) [linux-any], + devd [kfreebsd-any], +# for glamor; not a shlibdep because we use epoxy + libegl1-mesa [linux-any kfreebsd-any] | libegl1 [linux-any kfreebsd-any], + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: + libgl1-mesa-dri (>= 7.10.2-4), + libpam-systemd, +Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable +Breaks: + xserver-xorg (<< 1:7.7+10~), + systemd (<< 226-4~), +Replaces: + xserver-xorg-video-modesetting, + xserver-xorg (<< 1:7.7+10~), +Conflicts: + xserver-xorg-input-evtouch, + xserver-xorg-video-modesetting, +Provides: + ${videoabi}, + ${inputabi}, + xserver-xorg-video-modesetting, +Description: Xorg X server - core server + The Xorg X server is an X server for several architectures and operating + systems, which is derived from the XFree86 4.x series of X servers. + . + The Xorg server supports most modern graphics hardware from most vendors, + and supersedes all XFree86 X servers. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xorg-core-udeb +XC-Package-Type: udeb +Section: debian-installer +# exclude sparc because of linker errors +Architecture: any +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.31), + x11proto-input-dev (>= 2.3), + x11proto-xext-dev (>= 7.2.99.901), + x11proto-video-dev, + x11proto-randr-dev (>= 1.5.0), + x11proto-render-dev (>= 2:0.11), + x11proto-dri2-dev (>= 2.8), + x11proto-gl-dev (>= 1.4.17), + x11proto-fonts-dev (>= 2.1.3), + 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, + libxfont-dev, + libxkbfile-dev, + libpciaccess-dev, + mesa-common-dev, + libmirclient-dev [!powerpc !ppc64el], + mir-client-platform-mesa-dev, + ${misc:Depends}, +Description: Xorg X server - development files + This package provides development files for the X.Org ('Xorg') X server. + This is not quite the same as the DDK (Driver Development Kit) from the + XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides + headers and a pkg-config file for drivers using autotools to build + against. + . + Unless you are developing or building a driver, you probably want + xserver-xorg and/or xserver-xorg-core instead. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Description: distributed multihead X server + Xdmx is a proxy X server that uses one or more other X servers as its + display device(s). It provides multi-head X functionality for displays that + might be located on different machines. Xdmx functions as a front-end X server + that acts as a proxy to a set of back-end X servers. All of the visible + rendering is passed to the back-end X servers. Clients connect to the Xdmx + front-end, and everything appears as it would in a regular multi-head + configuration. If Xinerama is enabled (e.g., with +xinerama on the command + line), the clients see a single large screen. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx-tools +Architecture: any +Depends: + xdmx, + ${shlibs:Depends}, + ${misc:Depends}, +Description: Distributed Multihead X tools + This package provides a collection of tools used for administration of + the Xdmx server; see the xdmx package for more information. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xnest +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: Nested X server + Xnest is a nested X server that simply relays all its requests to another + X server, where it runs as a client. This means that it appears as another + window in your current X session. Xnest relies upon its parent X server + for font services. + . + Use of the Xephyr X server instead of Xnest is recommended. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xvfb +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, + xauth, + x11-xkb-utils +Recommends: + libgl1-mesa-dri +Provides: xserver +Multi-Arch: foreign +Description: Virtual Framebuffer 'fake' X server + Xvfb provides an X server that can run on machines with no display hardware + and no physical input devices. It emulates a dumb framebuffer using virtual + memory. The primary use of this server was intended to be server testing, + but other novel uses for it have been found, including testing clients + against unusual depths and screen configurations, doing batch processing with + Xvfb as a background rendering engine, load testing, as an aid to porting the + X server to a new platform, and providing an unobtrusive way to run + applications that don't really need an X server but insist on having one + anyway. + . + This package also contains a convenience script called xvfb-run which + simplifies the automated execution of X clients in a virtual server + environment. This convenience script requires the use of the xauth + program. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xephyr +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: nested X server + Xephyr is an X server that can be run inside another X server, + much like Xnest. It is based on the kdrive X server, and as a + result it supports newer extensions than Xnest, including render and + composite. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-common +Architecture: all +Multi-Arch: foreign +Depends: + x11-common, + xkb-data, + x11-xkb-utils, + ${misc:Depends}, +Recommends: + xfonts-base, + xauth, +Replaces: 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: xmir +Architecture: amd64 arm64 armhf i386 +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Description: Xmir X server + This package provides an X server running on top of Mir, using Mir + input devices for input and forwarding either the root window or individual + top-level windows as wayland surfaces. + +Package: xserver-xorg-xmir +Architecture: all +Depends: ${shlibs:Depends}, + ${misc:Depends}, + xmir, +Description: Xmir X server (transitional package) + This is a transitional package to ease upgrades to xmir. + It can be safely removed. + +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. + +Package: xwayland +Architecture: linux-any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Description: Xwayland X server + This package provides an X server running on top of wayland, using wayland + input devices for input and forwarding either the root window or individual + top-level windows as wayland surfaces. + +Package: xserver-xorg-legacy +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Breaks: + x11-common (<< 1:7.7+10~), + xserver-xorg-core (<< 2:1.17.2-3~), +Replaces: + x11-common (<< 1:7.7+10~), + xserver-xorg-core (<< 2:1.17.2-3~), +Description: setuid root Xorg server wrapper + This package provides a wrapper for the Xorg X server, which is + necessary for legacy drivers and non-Linux kernels. --- xorg-server-1.19.6.orig/debian/copyright +++ xorg-server-1.19.6/debian/copyright @@ -0,0 +1,1847 @@ +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 © 2011 Dave Airlie +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 © 2003-2008, 2013 Geert Uytterhoeven +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 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + +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 TUNGSTEN GRAPHICS 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. + + +Copyright © 1999-2000 SuSE, Inc. +Copyright © 2007 Red Hat, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts. +Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts. +Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, +Copyright 1994 Quarterdeck Office Systems. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Digital and +Quarterdeck not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997 Digital Equipment Corporation. +All rights reserved. + +This software is furnished under license and may be used and copied only in +accordance with the following terms and conditions. Subject to these +conditions, you may download, copy, install, use, modify and distribute +this software in source and/or binary form. No title or ownership is +transferred hereby. + +1) Any source code used, modified or distributed must reproduce and retain + this copyright notice and list of conditions as they appear in the + source file. + +2) No right is granted to use any trade name, trademark, or logo of Digital + Equipment Corporation. Neither the "Digital Equipment Corporation" + name nor any trademark or logo of Digital Equipment Corporation may be + used to endorse or promote products derived from this software without + the prior written permission of Digital Equipment Corporation. + +3) This software is provided "AS-IS" and any express or implied warranties, + including but not limited to, any implied warranties of merchantability, + fitness for a particular purpose, or non-infringement are disclaimed. + In no event shall DIGITAL be liable for any damages whatsoever, and in + particular, DIGITAL shall not be liable for special, indirect, + consequential, or incidental damages or damages for lost profits, loss + of revenue or loss of use, whether such damages arise in contract, + negligence, tort, under statute, in equity, at law or otherwise, even + if advised of the possibility of such damage. + + +Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + + +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice including the dates of first publication and +either this permission notice or a reference to +http://oss.sgi.com/projects/FreeB/ +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 1994, 1995 Hewlett-Packard Company + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the Hewlett-Packard +Company shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the Hewlett-Packard Company. + + +Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Hewlett-Packard not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 2001-2004 Red Hat Inc., Durham, North Carolina. +Copyright (c) 2003 by the XFree86 Project, Inc. +Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright © 2008 Red Hat, Inc. +Partly based on code Copyright © 2000 SuSE, Inc. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without +fee, provided that the above copyright notice appear in all copies +and that both that copyright notice and this permission notice +appear in supporting documentation, and that the name of Red Hat +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. Red +Hat makes no representations about the suitability of this software +for any purpose. It is provided "as is" without express or implied +warranty. + +Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN +NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2006 Red Hat, Inc. +(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sub license, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright (c) 1995 X Consortium +Copyright 2004 Red Hat Inc., Durham, North Carolina. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation on the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM, +AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written +authorization from the X Consortium. + + +Copyright 1998-2000 Precision Insight, Inc., Cedar Park, Texas. +Copyright 2000 VA Linux Systems, Inc. +Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. +Copyright (c) 2003-2004 Torrey T. Lyons. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +(C) Copyright IBM Corporation 2003 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +on the rights to use, copy, modify, merge, publish, distribute, sub +license, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + + +(C) Copyright IBM Corporation 2004-2005 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sub license, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +IBM, +AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Copyright (c) 1997 Metro Link Incorporated + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of the Metro Link shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from Metro Link. + + +Copyright 1995-1998 by Metro Link, Inc. +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Metro Link, Inc. not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Metro Link, Inc. makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Metro Link Incorporated + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Metro Link +Incorporated not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Metro Link Incorporated makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +CONECTIVA LINUX BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of Conectiva Linux shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +Conectiva Linux. + + +Copyright (c) 2001, Andy Ritger aritger@nvidia.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. +o Neither the name of NVIDIA nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +Copyright 1992 Vrije Universiteit, The Netherlands + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the Vrije Universiteit not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The Vrije Universiteit makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL The Vrije Universiteit BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Concurrent Computer Corporation + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Concurrent Computer +Corporation not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Concurrent Computer Corporation makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2004 Nokia + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Nokia not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Nokia makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL NOKIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +(c)Copyright 1988,1991 Adobe Systems Incorporated. +All rights reserved. + +Permission to use, copy, modify, distribute, and sublicense this software and its +documentation for any purpose and without fee is hereby granted, provided that +the above copyright notices appear in all copies and that both those copyright +notices and this permission notice appear in supporting documentation and that +the name of Adobe Systems Incorporated not be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission. No trademark license to use the Adobe trademarks is hereby +granted. If the Adobe trademark "Display PostScript"(tm) is used to describe +this software, its functionality or for any other purpose, such use shall be +limited to a statement that this software works in conjunction with the Display +PostScript system. Proper trademark attribution to reflect Adobe's ownership +of the trademark shall be given whenever any such reference to the Display +PostScript system is made. + +ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY +PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ADOBE +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON- +INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE TO YOU +OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT +LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER +SUPPORT FOR THE SOFTWARE. + +Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems +Incorporated which may be registered in certain jurisdictions. + + +Copyright 1989 Network Computing Devices, Inc., Mountain View, California. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of N.C.D. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. N.C.D. makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + + +Copyright (c) 1987 by the Regents of the University of California + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies. The University of California +makes no representations about the suitability of this +software for any purpose. It is provided "as is" without +express or implied warranty. + + +Copyright 1992, 1993 Data General Corporation; +Copyright 1992, 1993 OMRON Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and that +neither the name OMRON or DATA GENERAL be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission of the party whose name is to be used. Neither OMRON or +DATA GENERAL make any representation about the suitability of this software +for any purpose. It is provided "as is" without express or implied warranty. + +OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL OMRON OR DATA GENERAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright © 1998-2004, 2006 Keith Packard +Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc. +Copyright (c) 2002 Apple Computer, Inc. +Copyright (c) 2003 Torrey T. Lyons. +All Rights Reserved. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 1999 Keith Packard +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 MontaVista Software Inc. +Copyright © 2005 OpenedHand Ltd. +Copyright © 2006 Nokia Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the authors and/or copyright holders +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The authors and/or +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1993 by Davor Matic + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. Davor Matic makes no representations about +the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Harold L Hunt II +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Harold L Hunt II. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Thomas Roell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Thomas Roell makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Thomas Roell and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Thomas Roell and +David Wexelblat makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91,92,93 by Thomas Roell, Germany. +Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Thomas Roell nor +SGCS be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Thomas Roell nor SGCS makes no representations about the suitability +of this software for any purpose. It is provided "as is" without +express or implied warranty. + +THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Alan Hourihane, Wigan, England. +Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Alan Hourihane not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Alan Hourihane makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995 Kaleb S. KEITHLEY + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Kaleb S. KEITHLEY +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Kaleb S. KEITHLEY + + +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Matthieu Herrb not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Matthieu Herrb makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL MATTHIEU HERRB BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2004, Egbert Eich + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Egbert Eich shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from Egbert Eich. + + +Copyright 1993 by David Wexelblat +Copyright 2005 by Kean Johnston +Copyright 1993 by David McCullough + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of David Wexelblat not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. David Wexelblat makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995-1999 by Frederic Lepied, France. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Frederic Lepied not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Frederic Lepied makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Anders Carlsson + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Anders Carlsson not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Anders Carlsson makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ANDERS CARLSSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2003 Anders Carlsson +Copyright © 2003-2004 Eric Anholt +Copyright © 2004 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Eric Anholt not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Eric Anholt makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Philip Blundell + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Philip Blundell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Philip Blundell makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL PHILIP BLUNDELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + + +Copyright (c) 1994-2003 by The XFree86 Project, Inc. +Copyright 1997 by Metro Link, Inc. +Copyright 2003 by David H. Dawes. +Copyright 2003 by X-Oz Technologies. +Copyright (c) 2004, X.Org Foundation + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the copyright holder(s) +and author(s) shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Software without prior written +authorization from the copyright holder(s) and author(s). + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat +Copyright 1999 by David Holland +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 Hewlett-Packard Company +Copyright © 2004, 2005 Red Hat, Inc. +Copyright © 2004 Nicholas Miell +Copyright © 2005 Trolltech AS +Copyright © 2006 Intel Corporation +Copyright © 2006-2007 Keith Packard +Copyright © 2008 Red Hat, Inc +Copyright © 2008 George Sapountzis + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of the copyright holders not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. The copyright holders make no representations +about the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + 2005 Lars Knoll & Zack Rusin, Trolltech + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987, 1998 The Open Group +Copyright © 1998-1999, 2001 The XFree86 Project, Inc. +Copyright © 2000 VA Linux Systems, Inc. +Copyright (c) 2000, 2001 Nokia Home Communications +Copyright © 2007, 2008 Red Hat, Inc. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + + +Copyright 1996 by Thomas E. Dickey + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the above listed +copyright holder(s) not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright (c) 2001 Andreas Monitzer. +Copyright (c) 2001-2004 Greg Parker. +Copyright (c) 2001-2004 Torrey T. Lyons +Copyright (c) 2002-2003 Apple Computer, Inc. +Copyright (c) 2004-2005 Alexander Gottwald +Copyright (c) 2002-2009 Apple Inc. +Copyright (c) 2007 Jeremy Huddleston +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name(s) of the above copyright +holders shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written authorization. + + +Copyright (C) 1999,2000 by Eric Sunshine +Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the author shall not be used in +advertising or otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the author. + + +Copyright © 2002 David Dawes + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of the author(s) shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +the author(s). + + +Copyright (C) 1996-1999 SciTech Software, Inc. +Copyright (C) David Mosberger-Tang +Copyright (C) 1999 Egbert Eich +Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the authors not be used +in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. The authors makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2005-2006 Luc Verhaegen. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Copyright 1995 by Robin Cutshaw +Copyright 2000 by Egbert Eich +Copyright 2002 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holder(s) +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holder(s) make(s) no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of Marc Aurele La France not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. Marc Aurele La France makes no representations +about the suitability of this software for any purpose. It is provided +"as-is" without express or implied warranty. + +MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany +Copyright 1992 by David Dawes +Copyright 1992 by Jim Tsillas +Copyright 1992 by Rich Murphey +Copyright 1992 by Robert Baron +Copyright 1992 by Orest Zborowski +Copyright 1993 by Vrije Universiteit, The Netherlands +Copyright 1993 by David Wexelblat +Copyright 1994, 1996 by Holger Veit +Copyright 1997 by Takis Psarogiannakopoulos +Copyright 1994-2003 by The XFree86 Project, Inc + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holders +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2001-2005 by J. Kean Johnston + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name J. Kean Johnston not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. J. Kean Johnston makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright 1997,1998 by UCHIYAMA Yasushi + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of UCHIYAMA Yasushi not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. UCHIYAMA Yasushi makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Keith Packard + 2004 Eric Anholt + 2005 Zack Rusin + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of copyright holders not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Copyright holders make no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +(C) Copyright IBM Corporation 2002-2007 +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +on the rights to use, copy, modify, merge, publish, distribute, sub +license, and/or sell copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +this permission notice appear in supporting documentation. This permission +notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Copyright © 2007 OpenedHand Ltd + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of OpenedHand Ltd not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. OpenedHand Ltd makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1987, 1990, 1993 + 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. --- xorg-server-1.19.6.orig/debian/gbp.conf +++ xorg-server-1.19.6/debian/gbp.conf @@ -0,0 +1,7 @@ +[DEFAULT] +# the default branch for upstream sources: +upstream-branch = upstream-experimental +# the default branch for the debian patch: +debian-branch = ubuntu +# use pristine-tar: +pristine-tar = True --- xorg-server-1.19.6.orig/debian/local/10-kbd.conf +++ xorg-server-1.19.6/debian/local/10-kbd.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "kbd catchall" + MatchIsKeyboard "on" + Driver "kbd" +EndSection --- xorg-server-1.19.6.orig/debian/local/10-mouse.conf +++ xorg-server-1.19.6/debian/local/10-mouse.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "mouse catchall" + MatchIsPointer "on" + Driver "mouse" +EndSection --- xorg-server-1.19.6.orig/debian/local/64-xorg-xkb.rules +++ xorg-server-1.19.6/debian/local/64-xorg-xkb.rules @@ -0,0 +1,8 @@ +ACTION!="add|change", GOTO="xorg_xkb_end" +SUBSYSTEM!="input", GOTO="xorg_xkb_end" +KERNEL!="event*", GOTO="xorg_xkb_end" + +# import keyboard layout from /etc/default/keyboard +ENV{ID_INPUT_KEY}=="?*", IMPORT{file}="/etc/default/keyboard" + +LABEL="xorg_xkb_end" --- xorg-server-1.19.6.orig/debian/local/dh_xsf_substvars +++ xorg-server-1.19.6/debian/local/dh_xsf_substvars @@ -0,0 +1,53 @@ +#!/bin/sh +# © 2011 Cyril Brulebois +# +# Usage: +# Call this script from debian/rules, before dh_gencontrol is run, +# to get all needed variables computed in debian/$p.substvars for +# each package $p found through dh_listpackages. +# . +# This script has support for udebs. +set -e + +# Sanity check. All drivers build-depend on debhelper: +if ! which dh_listpackages >/dev/null 2>&1; then + echo "E: dh_listpackages not found, debhelper package missing?" + exit 1 +fi + +# Read the dependencies once: +INPUTDEP=$(cat /usr/share/xserver-xorg/xinputdep 2>/dev/null) +VIDEODEP=$(cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null) + +# Iterate on the packages: +for package in $(dh_listpackages); do + case $package in + *-udeb) + # udebs depend on udebs, tweak the dependency on the server: + inputdep=$(echo "$INPUTDEP"|sed 's/xserver-xorg-core/&-udeb/') + videodep=$(echo "$VIDEODEP"|sed 's/xserver-xorg-core/&-udeb/') + ;; + *) + # just copy the dependencies read previously: + inputdep="$INPUTDEP" + videodep="$VIDEODEP" + esac + + # To avoid having "unused substitution variable" warnings from + # dpkg-gencontrol, only set variables which make sense: + case $package in + *-dbg|*-dev|*-all) + # debug, devel, or meta package, no need for Depends/Provides. + : + ;; + xserver-xorg-input-*) + # input driver: + echo "xinpdriver:Depends=$inputdep" >> debian/$package.substvars + echo "xinpdriver:Provides=xorg-driver-input" >> debian/$package.substvars + ;; + xserver-xorg-video-*) + # video driver: + echo "xviddriver:Depends=$videodep" >> debian/$package.substvars + echo "xviddriver:Provides=xorg-driver-video" >> debian/$package.substvars + esac +done --- xorg-server-1.19.6.orig/debian/local/xsf.pm +++ xorg-server-1.19.6/debian/local/xsf.pm @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Debian::Debhelper::Dh_Lib; + +insert_before("dh_gencontrol", "dh_xsf_substvars"); + +1; --- xorg-server-1.19.6.orig/debian/local/xvfb-run +++ xorg-server-1.19.6/debian/local/xvfb-run @@ -0,0 +1,191 @@ +#!/bin/sh + +# This script starts an instance of Xvfb, the "fake" X server, runs a command +# with that server available, and kills the X server when done. The return +# value of the command becomes the return value of this script, except in cases +# where this script encounters an error. +# +# If anyone is using this to build a Debian package, make sure the package +# Build-Depends on xvfb and xauth. + +set -e + +PROGNAME=xvfb-run +SERVERNUM=99 +AUTHFILE= +ERRORFILE=/dev/null +XVFBARGS="-screen 0 640x480x16" +LISTENTCP="-nolisten tcp" +XAUTHPROTO=. + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the event +# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the +# script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +# Display a message, wrapping lines at the terminal width. +message () { + echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} +} + +# Display an error message. +error () { + message "error: $*" >&2 +} + +# Display a usage message. +usage () { + if [ -n "$*" ]; then + message "usage error: $*" + fi + cat <>"$ERRORFILE" 2>&1 + fi + if [ -n "$XVFB_RUN_TMPDIR" ]; then + if ! rm -r "$XVFB_RUN_TMPDIR"; then + error "problem while cleaning up temporary directory" + exit 5 + fi + fi + if [ -n "$XVFBPID" ]; then + kill "$XVFBPID" >>"$ERRORFILE" 2>&1 + fi +} + +# Parse the command line. +ARGS=$(getopt --options +ae:f:hn:lp:s:w: \ + --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \ + --name "$PROGNAME" -- "$@") +GETOPT_STATUS=$? + +if [ $GETOPT_STATUS -ne 0 ]; then + error "internal error; getopt exited with status $GETOPT_STATUS" + exit 6 +fi + +eval set -- "$ARGS" + +while :; do + case "$1" in + -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;; + -e|--error-file) ERRORFILE="$2"; shift ;; + -f|--auth-file) AUTHFILE="$2"; shift ;; + -h|--help) SHOWHELP="yes" ;; + -n|--server-num) SERVERNUM="$2"; shift ;; + -l|--listen-tcp) LISTENTCP="" ;; + -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;; + -s|--server-args) XVFBARGS="$2"; shift ;; + -w|--wait) shift ;; + --) shift; break ;; + *) error "internal error; getopt permitted \"$1\" unexpectedly" + exit 6 + ;; + esac + shift +done + +if [ "$SHOWHELP" ]; then + usage + exit 0 +fi + +if [ -z "$*" ]; then + usage "need a command to run" >&2 + exit 2 +fi + +if ! which xauth >/dev/null; then + error "xauth command not found" + exit 3 +fi + +# tidy up after ourselves +trap clean_up EXIT + +# If the user did not specify an X authorization file to use, set up a temporary +# directory to house one. +if [ -z "$AUTHFILE" ]; then + XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)" + # Create empty file to avoid xauth warning + AUTHFILE=$(tempfile -n "$XVFB_RUN_TMPDIR/Xauthority") +fi + +# Start Xvfb. +MCOOKIE=$(mcookie) +tries=10 +while [ $tries -gt 0 ]; do + tries=$(( $tries - 1 )) + XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1 +add :$SERVERNUM $XAUTHPROTO $MCOOKIE +EOF + # handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept + # connections + trap : USR1 + (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) & + XVFBPID=$! + + wait || : + if kill -0 $XVFBPID 2>/dev/null; then + break + elif [ -n "$AUTONUM" ]; then + # The display is in use so try another one (if '-a' was specified). + SERVERNUM=$((SERVERNUM + 1)) + SERVERNUM=$(find_free_servernum) + continue + fi + error "Xvfb failed to start" >&2 + XVFBPID= + exit 1 +done + +# Start the command and save its exit status. +set +e +DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1 +RETVAL=$? +set -e + +# Return the executed command's exit status. +exit $RETVAL + +# vim:set ai et sts=4 sw=4 tw=80: --- xorg-server-1.19.6.orig/debian/local/xvfb-run.1 +++ xorg-server-1.19.6/debian/local/xvfb-run.1 @@ -0,0 +1,281 @@ +.\" Copyright 1998-2004 Branden Robinson . +.\" +.\" This is free software; you may redistribute it and/or modify +.\" it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2, +.\" or (at your option) any later version. +.\" +.\" This is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" the Debian operating system, in /usr/share/common-licenses/GPL; if +.\" not, write to the Free Software Foundation, Inc., 59 Temple Place, +.\" Suite 330, Boston, MA 02111-1307 USA +.\" +.\" We need the URL macro from groff's www macro package, but also want +.\" things to work all right for people who don't have it. So we define +.\" our own URL macro and let the www macro package override it if it's +.\" available. +.de URL +\\$2 \(laURL: \\$1 \(ra\\$3 +.. +.if \n[.g] .mso www.tmac +.TH xvfb\-run 1 "2004\-11\-12" "Debian Project" +.SH NAME +xvfb\-run \- run specified X client or command in a virtual X server environment +.SH SYNOPSIS +.B xvfb\-run +[ +.I options +] +.I command +.SH DESCRIPTION +.B xvfb\-run +is a wrapper for the +.BR Xvfb (1x) +command which simplifies the task of running commands (typically an X +client, or a script containing a list of clients to be run) within a virtual +X server environment. +.PP +.B xvfb\-run +sets up an X authority file (or uses an existing user\-specified one), +writes a cookie to it (see +.BR xauth (1x)) +and then starts the +.B Xvfb +X server as a background process. +The process ID of +.B Xvfb +is stored for later use. +The specified +.I command +is then run using the X display corresponding to the +.B Xvfb +server +just started and the X authority file created earlier. +.PP +When the +.I command +exits, its status is saved, the +.B Xvfb +server is killed (using the process ID stored earlier), the X authority +cookie removed, and the authority file deleted (if the user did not specify +one to use). +.B xvfb\-run +then exits with the exit status of +.IR command , +except in error conditions (see +.SM +.B EXIT STATUS +below). +.PP +.B xvfb\-run +requires the +.B xauth +command to function. +.SH OPTIONS +.TP +.B \-a\fR,\fB \-\-auto\-servernum +Try to get a free server number, starting at 99, or the argument to +.BR \-\-server\-num . +.TP +.BI \-e\ file \fR,\fB\ \-\-error\-file= file +Store output from +.B xauth +and +.B Xvfb +in +.IR file . +The default is +.IR /dev/null . +.TP +.BI \-f\ file \fR,\fB\ \-\-auth\-file= file +Store X authentication data in +.IR file . +By default, a temporary directory called +.IR xvfb\-run. PID +(where PID is the process ID of +.B xvfb\-run +itself) is created in the directory specified by the environment variable +.B TMPDIR +(or +.I /tmp +if that variable is null or unset), and the +.BR tempfile (1) +command is used to create a file in that temporary directory called +.IR Xauthority . +.TP +.B \-h\fR,\fB \-\-help +Display a usage message and exit. +.TP +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +Use +.I servernumber +as the server number (but see the +.B \-a\fR,\fB \-\-auto\-servernum +option above). +The default is 99. +.TP +.B \-l\fR,\fB \-\-listen\-tcp +Enable TCP port listening in the X server. +For security reasons (to avoid denial\-of\-service attacks or exploits), +TCP port listening is disabled by default. +.TP +.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname +Use +.I protocolname +as the X authority protocol to use. +The default is \(oq.\(cq, which +.B xauth +interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1. +.TP +.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments +Pass +.I arguments +to the +.B Xvfb +server. +Be careful to quote any whitespace characters that may occur within +.I arguments +to prevent them from regarded as separators for +.BR xvfb\-run 's +own arguments. +Also, note that specification of \(oq\-nolisten tcp\(cq in +.I arguments +may override the function of +.BR xvfb\-run 's +own +.B \-l\fR,\fB \-\-listen\-tcp +option, and that specification of the server number (e.g., \(oq:1\(cq) may +be ignored because of the way the X server parses its argument list. +Use the +.B xvfb\-run +option +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +to achieve the latter function. +The default is \(oq\-screen 0 640x480x8\(cq. +.TP +.BI \-w\ delay \fR,\fB\ \-\-wait= delay +Ignored for compatibility with earlier versions. +.SH ENVIRONMENT +.TP +.B COLUMNS +indicates the width of the terminal device in character cells. +This value is used for formatting diagnostic messages. +If not set, the terminal is queried using +.BR stty (1) +to determine its width. +If that fails, a value of \(oq80\(cq is assumed. +.TP +.B TMPDIR +specifies the directory in which to place +.BR xvfb\-run 's +temporary directory for storage of the X authority file; only used if the +.B \-f +or +.B \-\-auth\-file +options are not specified. +.SH "OUTPUT FILES" +.PP +Unless the +.B \-f +or +.B \-\-auth\-file +options are specified, a temporary +directory and file within it are created (and deleted) to store the X +authority cookies used by the +.B Xvfb +server and client(s) run under it. +See +.BR tempfile (1). +If \-f or \-\-auth\-file are used, then the specified X authority file is +only written to, not created or deleted (though +.B xauth +creates an authority file itself if told to use use that does not already +exist). +.PP +An error file with a user\-specified name is also created if the +.B \-e +or +.B \-\-error\-file +options are specifed; see above. +.SH "EXIT STATUS" +.B xvfb\-run +uses its exit status as well as output to standard error to communicate +diagnostics. +.TP +0 +.B xvfb\-run +only uses this exit status if the +.B \-h\fR,\fB \-\-help +option is given. +In all other situations, this may be interpreted as success of the specified +command. +.TP +1 +.B Xvfb +did not start correctly. +.TP +2 +No command to run was specified. +.TP +3 +The +.B xauth +command is not available. +.TP +4 +The temporary directory that was going to be used already exists; since +.B xvfb\-run +produces a uniquely named directory, this may indicate an attempt by another +process on the system to exploit a temporary file race condition. +.TP +5 +A problem was encountered while cleaning up the temporary directory. +.TP +6 +A problem was encountered while using +.BR getopt (1) +to parse the command\-line arguments. +.SH EXAMPLES +.TP +.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo +runs the +.BR xlogo (1x) +demonstration client inside the +.B Xvfb +X server on the first available server number greater than or equal to 1. +.TP +.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces +runs the +.BR ico (1x) +demonstration client (and passes it the +.B \-faces +argument) inside the +.B Xvfb +X server, configured with a root window of 1024 by 768 pixels and a color +depth of 24 bits. +.PP +Note that the demo X clients used in the above examples will not exit on +their own, so they will have to be killed before +.B xvfb\-run +will exit. +.SH BUGS +See +.URL "https://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: --- xorg-server-1.19.6.orig/debian/patches/001_fedora_extramodes.patch +++ xorg-server-1.19.6/debian/patches/001_fedora_extramodes.patch @@ -0,0 +1,83 @@ +From: Adam Jackson +Date: Sun, 28 Oct 2007 09:37:52 +0100 +Subject: [PATCH] Fedora extra modes list + +--- +--- a/hw/xfree86/common/extramodes ++++ b/hw/xfree86/common/extramodes +@@ -3,16 +3,75 @@ + // + // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ + // ++// NOTE: Please keep all video modes sorted in order of X res, then Y res for ++// ease of maintenance and readability. + + # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz + ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + ++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync ++ ++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz ++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync ++ ++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz ++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync ++ ++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync ++ ++# 1152x864 @ 85Hz (Red Hat custom modeline) ++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync ++ ++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync ++ ++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz ++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync ++ ++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz ++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync ++ + # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz + ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + ++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz ++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync ++ + # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz + ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + ++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync ++ ++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz ++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync ++ ++# 1600x1024 for SGI 1600 SW ++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync ++ ++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz ++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync ++ ++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz ++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync ++ ++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz ++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync ++ ++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz ++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ + # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz + Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + --- xorg-server-1.19.6.orig/debian/patches/02_kbsd-input-devd.diff +++ xorg-server-1.19.6/debian/patches/02_kbsd-input-devd.diff @@ -0,0 +1,536 @@ +>From d96e2bd2a2b48ede527ad7071d3e0eeda9861b73 Mon Sep 17 00:00:00 2001 +From: Robert Millan +Date: Mon, 24 Feb 2014 23:22:57 +0100 +Subject: [PATCH] Add devd config backend for FreeBSD (and GNU/kFreeBSD) + +Based on original code by Baptiste Daroussin, with some fixes made +by Koop Mast and myself. + +Signed-off-by: Robert Millan + +v2 - Emilio Pozuelo Monfort + + - Ported to NotifyFd API. +--- + 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 + +--- a/config/Makefile.am ++++ b/config/Makefile.am +@@ -34,6 +34,10 @@ + libconfig_la_SOURCES += wscons.c + endif # CONFIG_WSCONS + ++if CONFIG_DEVD ++libconfig_la_SOURCES += devd.c ++endif ++ + endif # !CONFIG_HAL + + endif # !CONFIG_UDEV +--- a/config/config-backends.h ++++ b/config/config-backends.h +@@ -44,3 +44,8 @@ + 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 +--- a/config/config.c ++++ b/config/config.c +@@ -55,6 +55,9 @@ + #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 + } + +@@ -67,6 +70,8 @@ + config_hal_fini(); + #elif defined(CONFIG_WSCONS) + config_wscons_fini(); ++#elif defined(CONFIG_DEVD) ++ config_devd_fini(); + #endif + } + +--- /dev/null ++++ b/config/devd.c +@@ -0,0 +1,375 @@ ++/* ++ * Copyright © 2012 Baptiste Daroussin ++ * Copyright © 2014 Robert Millan ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Author: Baptiste Daroussin ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "input.h" ++#include "inputstr.h" ++#include "hotplug.h" ++#include "config-backends.h" ++#include "os.h" ++ ++#define DEVD_SOCK_PATH "/var/run/devd.pipe" ++ ++#define DEVD_EVENT_ADD '+' ++#define DEVD_EVENT_REMOVE '-' ++ ++static int sock_devd = -1; ++ ++struct hw_type { ++ const char *driver; ++ int flag; ++ const char *xdriver; ++}; ++ ++static struct hw_type hw_types[] = { ++ {"ukbd", ATTR_KEYBOARD, "kbd"}, ++ {"atkbd", ATTR_KEYBOARD, "kbd"}, ++ {"ums", ATTR_POINTER, "mouse"}, ++ {"psm", ATTR_POINTER, "mouse"}, ++ {"uhid", ATTR_POINTER, "mouse"}, ++ {"joy", ATTR_JOYSTICK, NULL}, ++ {"atp", ATTR_TOUCHPAD, NULL}, ++ {"uep", ATTR_TOUCHSCREEN, NULL}, ++ {NULL, -1, NULL}, ++}; ++ ++static bool ++sysctl_exists(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ size_t len; ++ int ret; ++ ++ if (format == NULL) ++ return false; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ ret = sysctlbyname(name, NULL, &len, NULL, 0); ++ ++ if (ret == -1) ++ len = 0; ++ ++ free(name); ++ return (len > 0); ++} ++ ++static char * ++sysctl_get_str(const char *format, ...) ++{ ++ va_list args; ++ char *name = NULL; ++ char *dest = NULL; ++ size_t len; ++ ++ if (format == NULL) ++ return NULL; ++ ++ va_start(args, format); ++ vasprintf(&name, format, args); ++ va_end(args); ++ ++ if (sysctlbyname(name, NULL, &len, NULL, 0) == 0) { ++ dest = malloc(len + 1); ++ if (!dest) ++ goto unwind; ++ if (sysctlbyname(name, dest, &len, NULL, 0) == 0) ++ dest[len] = '\0'; ++ else { ++ free(dest); ++ dest = NULL; ++ } ++ } ++ ++ unwind: ++ free(name); ++ return dest; ++} ++ ++static void ++device_added(char *devname) ++{ ++ char path[PATH_MAX]; ++ char *vendor; ++ char *product = NULL; ++ char *config_info = NULL; ++ char *walk; ++ InputOption *options = NULL; ++ InputAttributes attrs = { }; ++ DeviceIntPtr dev = NULL; ++ int i, rc; ++ int fd; ++ ++ for (i = 0; hw_types[i].driver != NULL; i++) { ++ if (strncmp(devname, hw_types[i].driver, ++ strlen(hw_types[i].driver)) == 0 && ++ isdigit(*(devname + strlen(hw_types[i].driver)))) { ++ attrs.flags |= hw_types[i].flag; ++ break; ++ } ++ } ++ if (hw_types[i].driver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", ++ devname); ++ return; ++ } ++ if (hw_types[i].xdriver == NULL) { ++ LogMessageVerb(X_INFO, 10, "config/devd: ignoring device %s\n", ++ devname); ++ return; ++ } ++ snprintf(path, sizeof(path), "/dev/%s", devname); ++ ++ options = input_option_new(NULL, "_source", "server/devd"); ++ if (!options) ++ return; ++ ++ vendor = ++ sysctl_get_str("dev.%s.%s.%%desc", hw_types[i].driver, ++ devname + strlen(hw_types[i].driver)); ++ if (vendor == NULL) { ++ attrs.vendor = strdup("(unnamed)"); ++ attrs.product = strdup("(unnamed)"); ++ } ++ else { ++ if ((walk = strchr(vendor, ' ')) != NULL) { ++ walk[0] = '\0'; ++ walk++; ++ product = walk; ++ if ((walk = strchr(product, ',')) != NULL) ++ walk[0] = '\0'; ++ } ++ ++ attrs.vendor = strdup(vendor); ++ if (product) ++ attrs.product = strdup(product); ++ else ++ attrs.product = strdup("(unnamed)"); ++ ++ options = input_option_new(options, "name", xstrdup(attrs.product)); ++ ++ free(vendor); ++ } ++ attrs.usb_id = NULL; ++ attrs.device = strdup(path); ++ options = input_option_new(options, "driver", hw_types[i].xdriver); ++ if (attrs.flags & ATTR_KEYBOARD) { ++ /* ++ * Don't pass device option if keyboard is attached to console (open fails), ++ * thus activating special logic in xf86-input-keyboard. ++ */ ++ fd = open(path, O_RDONLY | O_NONBLOCK | O_EXCL); ++ if (fd > 0) { ++ close(fd); ++ options = input_option_new(options, "device", xstrdup(path)); ++ } ++ } ++ else { ++ options = input_option_new(options, "device", xstrdup(path)); ++ } ++ ++ if (asprintf(&config_info, "devd:%s", devname) == -1) { ++ config_info = NULL; ++ goto unwind; ++ } ++ ++ if (device_is_duplicate(config_info)) { ++ LogMessage(X_WARNING, "config/devd: device %s already added. " ++ "Ignoring.\n", attrs.product); ++ goto unwind; ++ } ++ ++ options = input_option_new(options, "config_info", config_info); ++ LogMessage(X_INFO, "config/devd: adding input device %s (%s)\n", ++ attrs.product, path); ++ ++ rc = NewInputDeviceRequest(options, &attrs, &dev); ++ ++ if (rc != Success) ++ goto unwind; ++ ++ unwind: ++ free(config_info); ++ input_option_free_list(&options); ++ ++ free(attrs.usb_id); ++ free(attrs.product); ++ free(attrs.device); ++ free(attrs.vendor); ++} ++ ++static void ++device_removed(char *devname) ++{ ++ char *value; ++ ++ if (asprintf(&value, "devd:%s", devname) == -1) ++ return; ++ ++ remove_devices("devd", value); ++ ++ free(value); ++} ++ ++static ssize_t ++socket_getline(int fd, char **out) ++{ ++ char *buf, *newbuf; ++ ssize_t ret, cap, sz = 0; ++ char c; ++ ++ cap = 1024; ++ buf = malloc(cap * sizeof(char)); ++ if (!buf) ++ return -1; ++ ++ for (;;) { ++ ret = read(sock_devd, &c, 1); ++ if (ret < 1) { ++ if (errno == EINTR) ++ continue; ++ free(buf); ++ return -1; ++ } ++ ++ if (c == '\n') ++ break; ++ ++ if (sz + 1 >= cap) { ++ cap *= 2; ++ newbuf = realloc(buf, cap * sizeof(char)); ++ if (!newbuf) { ++ free(buf); ++ return -1; ++ } ++ buf = newbuf; ++ } ++ buf[sz] = c; ++ sz++; ++ } ++ ++ buf[sz] = '\0'; ++ if (sz >= 0) ++ *out = buf; ++ else ++ free(buf); ++ ++ return sz; /* number of bytes in the line, not counting the line break */ ++} ++ ++static void ++socket_handler(int fd, int ready, void *data) ++{ ++ char *line = NULL; ++ char *walk; ++ ++ 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); ++} ++ ++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; ++ } ++ ++ SetNotifyFd(sock_devd, socket_handler, X_NOTIFY_READ, NULL); ++ ++ return 1; ++} ++ ++void ++config_devd_fini(void) ++{ ++ if (sock_devd < 0) ++ return; ++ ++ RemoveNotifyFd(sock_devd); ++ close(sock_devd); ++} +--- a/configure.ac ++++ b/configure.ac +@@ -627,6 +627,7 @@ + AC_ARG_ENABLE(config-udev, AS_HELP_STRING([--enable-config-udev], [Build udev support (default: auto)]), [CONFIG_UDEV=$enableval], [CONFIG_UDEV=auto]) + 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-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]) +@@ -1017,6 +1018,21 @@ + 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 ++ + + AC_MSG_CHECKING([for glibc...]) + AC_PREPROC_IFELSE([AC_LANG_SOURCE([ +@@ -2566,7 +2582,7 @@ + + AC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep]) + +-if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then ++if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno && test "x$CONFIG_DEVD" = xno; then + AC_MSG_WARN([ + *********************************************** + Neither HAL nor udev backend will be enabled. +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -1375,15 +1375,18 @@ + } + + 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, " +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -122,7 +122,8 @@ + .pmFlag = TRUE, + .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, +--- a/include/dix-config.h.in ++++ b/include/dix-config.h.in +@@ -445,6 +445,9 @@ + /* Enable systemd-logind integration */ + #undef SYSTEMD_LOGIND 1 + ++/* Support devd for hotplug */ ++#undef CONFIG_DEVD ++ + /* Have a monotonic clock from clock_gettime() */ + #undef MONOTONIC_CLOCK + --- xorg-server-1.19.6.orig/debian/patches/03_static-nettle.diff +++ xorg-server-1.19.6/debian/patches/03_static-nettle.diff @@ -0,0 +1,15 @@ +Link against static libnettle + +There's no libnettle udeb. + +--- a/configure.ac ++++ b/configure.ac +@@ -1725,7 +1725,7 @@ fi + 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 --- xorg-server-1.19.6.orig/debian/patches/05_Revert-Unload-submodules.diff +++ xorg-server-1.19.6/debian/patches/05_Revert-Unload-submodules.diff @@ -0,0 +1,28 @@ +From 272537ae14a04911fcf2fec51492fa0f91c4a676 Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Wed, 29 Aug 2012 20:16:40 +0200 +Subject: [PATCH] Revert "Unload submodules." + +This reverts commit 0d4bb5442ceb8e8e4a8de6cfc4203cae469eee72. + +This doesn't seem to work quite well. See Debian bug#686152. +--- + hw/xfree86/common/xf86Helper.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/hw/xfree86/common/xf86Helper.c ++++ b/hw/xfree86/common/xf86Helper.c +@@ -1625,7 +1625,13 @@ xf86LoadOneModule(const char *name, void + void + xf86UnloadSubModule(void *mod) + { ++ /* ++ * This is disabled for now. The loader isn't smart enough yet to undo ++ * relocations. ++ */ ++#if 0 + UnloadSubModule(mod); ++#endif + } + + Bool --- xorg-server-1.19.6.orig/debian/patches/06_use-intel-only-on-pre-gen4.diff +++ xorg-server-1.19.6/debian/patches/06_use-intel-only-on-pre-gen4.diff @@ -0,0 +1,30 @@ +Description: Use intel ddx only on pre-gen4 hw, newer ones will fall back to modesetting +Author: Timo Aaltonen + +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1173,7 +1173,23 @@ xf86VideoPtrToDriverList(struct pci_devi + case 0x0bef: + /* Use fbdev/vesa driver on Oaktrail, Medfield, CDV */ + break; +- default: ++ /* Default to intel only on pre-gen4 chips */ ++ case 0x3577: ++ case 0x2562: ++ case 0x3582: ++ case 0x358e: ++ case 0x2572: ++ case 0x2582: ++ case 0x258a: ++ case 0x2592: ++ case 0x2772: ++ case 0x27a2: ++ case 0x27ae: ++ case 0x29b2: ++ case 0x29c2: ++ case 0x29d2: ++ case 0xa001: ++ case 0xa011: + driverList[0] = "intel"; + break; + } --- xorg-server-1.19.6.orig/debian/patches/07-glx-do-not-pick-srgb-config-for-32bit-rgba-visual.diff +++ xorg-server-1.19.6/debian/patches/07-glx-do-not-pick-srgb-config-for-32bit-rgba-visual.diff @@ -0,0 +1,32 @@ +commit a13271f2feb6e480b2e698d4efa3b94150a6808b +Author: Tapani Pälli +Date: Tue Nov 28 09:23:29 2017 +0200 + + glx: do not pick sRGB config for 32-bit RGBA visual + + This fixes blending issues seen with kwin and gnome-shell when + 32bit visual has sRGB capability set. + + Reviewed-by: Adam Jackson + Signed-off-by: Tapani Pälli + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103699 + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103646 + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103655 + (cherry picked from commit c2954b16c8730c7ed8441fd8dba25900f3aed265) + +diff --git a/glx/glxscreens.c b/glx/glxscreens.c +index 29bacd9..62d66bc 100644 +--- a/glx/glxscreens.c ++++ b/glx/glxscreens.c +@@ -275,6 +275,11 @@ pickFBConfig(__GLXscreen * pGlxScreen, VisualPtr visual) + /* If it's the 32-bit RGBA visual, demand a 32-bit fbconfig. */ + if (visual->nplanes == 32 && config->rgbBits != 32) + continue; ++ /* If it's the 32-bit RGBA visual, do not pick sRGB capable config. ++ * This can cause issues with compositors that are not sRGB aware. ++ */ ++ if (visual->nplanes == 32 && config->sRGBCapable == GL_TRUE) ++ continue; + /* Can't use the same FBconfig for multiple X visuals. I think. */ + if (config->visualID != 0) + continue; --- xorg-server-1.19.6.orig/debian/patches/168_glibc_trace_to_stderr.patch +++ xorg-server-1.19.6/debian/patches/168_glibc_trace_to_stderr.patch @@ -0,0 +1,16 @@ +Description: Report abort traces to stderr instead of terminal +Author: Kees Cook +Bug-Ubuntu: https://launchpad.net/bugs/345748 + +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -937,6 +937,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(); + } + --- xorg-server-1.19.6.orig/debian/patches/226_fall_back_to_autoconfiguration.patch +++ xorg-server-1.19.6/debian/patches/226_fall_back_to_autoconfiguration.patch @@ -0,0 +1,81 @@ +Description: Fall back to autoconfiguration for graphics drivers in some cases instead of letting X fail when configuration files are available. +Author: Alberto Milone + +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -161,6 +161,7 @@ InputDriverPtr *xf86InputDriverList = NU + 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 +@@ -469,20 +469,34 @@ InitOutput(ScreenInfo * pScreenInfo, int + 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. */ +@@ -545,8 +559,15 @@ InitOutput(ScreenInfo * pScreenInfo, int + if (want_hw_access) + xorgHWAccess = xf86EnableIO(); + +- 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 int xf86NumDrivers; + extern _X_EXPORT Bool xf86Resetting; + extern 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 */ --- xorg-server-1.19.6.orig/debian/patches/228_autobind_gpu.patch +++ xorg-server-1.19.6/debian/patches/228_autobind_gpu.patch @@ -0,0 +1,302 @@ +From 4471df41ea6e94834a2b10643ca7fcd69682d276 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Fri, 17 Aug 2012 09:49:24 +1000 +Subject: [PATCH xserver v3] autobind GPUs to the screen + +This is a modified version of a patch we've been carry-ing in Fedora and +RHEL for years now. This patch automatically adds secondary GPUs to the +master as output sink / offload source making e.g. the use of +slave-outputs just work, with requiring the user to manually run +"xrandr --setprovideroutputsource" before he can hookup an external +monitor to his hybrid graphics laptop. + +There is one problem with this patch, which is why it was not upstreamed +before. What to do when a secondary GPU gets detected really is a policy +decission (e.g. one may want to autobind PCI GPUs but not USB ones) and +as such should be under control of the Desktop Environment. + +Unconditionally adding autobinding support to the xserver will result +in races between the DE dealing with the hotplug of a secondary GPU +and the server itself dealing with it. + +However we've waited for years for any Desktop Environments to actually +start doing some sort of autoconfiguration of secondary GPUs and there +is still not a single DE dealing with this, so I believe that it is +time to upstream this now. + +To avoid potential future problems if any DEs get support for doing +secondary GPU configuration themselves, the new autobind functionality +is made optional. Since no DEs currently support doing this themselves it +is enabled by default. When DEs grow support for doing this themselves +they can disable the servers autobinding through the servers cmdline or a +xorg.conf snippet. + +Signed-off-by: Dave Airlie +[hdegoede@redhat.com: Make configurable, fix with nvidia, submit upstream] +Signed-off-by: Hans de Goede +--- +Changes in v2: +-Make the default enabled instead of installing a xorg.conf + snippet which enables it unconditionally +Changes in v3: +-Handle GPUScreen autoconfig in randr/rrprovider.c, looking at + rrScrPriv->provider, rather then in hw/xfree86/modes/xf86Crtc.c + looking at xf86CrtcConfig->provider. This fixes the autoconfig not + working with the nvidia binary driver +--- + hw/xfree86/common/xf86Config.c | 19 +++++++++++++++++++ + hw/xfree86/common/xf86Globals.c | 2 ++ + hw/xfree86/common/xf86Init.c | 20 ++++++++++++++++++++ + hw/xfree86/common/xf86Priv.h | 1 + + hw/xfree86/common/xf86Privstr.h | 1 + + hw/xfree86/common/xf86platformBus.c | 4 ++++ + hw/xfree86/man/Xorg.man | 7 +++++++ + hw/xfree86/man/xorg.conf.man | 6 ++++++ + randr/randrstr.h | 3 +++ + randr/rrprovider.c | 22 ++++++++++++++++++++++ + 10 files changed, 85 insertions(+) + +diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c +index 21daf1a..df3ca50 100644 +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -719,6 +719,7 @@ typedef enum { + FLAG_DRI2, + FLAG_USE_SIGIO, + FLAG_AUTO_ADD_GPU, ++ FLAG_AUTO_BIND_GPU, + FLAG_MAX_CLIENTS, + FLAG_IGLX, + } FlagValues; +@@ -778,6 +779,8 @@ static OptionInfoRec FlagOptions[] = { + {0}, FALSE}, + {FLAG_AUTO_ADD_GPU, "AutoAddGPU", OPTV_BOOLEAN, + {0}, FALSE}, ++ {FLAG_AUTO_BIND_GPU, "AutoBindGPU", OPTV_BOOLEAN, ++ {0}, FALSE}, + {FLAG_MAX_CLIENTS, "MaxClients", OPTV_INTEGER, + {0}, FALSE }, + {FLAG_IGLX, "IndirectGLX", OPTV_BOOLEAN, +@@ -857,6 +860,22 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) + } + xf86Msg(from, "%sutomatically adding GPU devices\n", + xf86Info.autoAddGPU ? "A" : "Not a"); ++ ++ if (xf86AutoBindGPUDisabled) { ++ xf86Info.autoBindGPU = FALSE; ++ from = X_CMDLINE; ++ } ++ else if (xf86IsOptionSet(FlagOptions, FLAG_AUTO_BIND_GPU)) { ++ xf86GetOptValBool(FlagOptions, FLAG_AUTO_BIND_GPU, ++ &xf86Info.autoBindGPU); ++ from = X_CONFIG; ++ } ++ else { ++ from = X_DEFAULT; ++ } ++ xf86Msg(from, "%sutomatically binding GPU devices\n", ++ xf86Info.autoBindGPU ? "A" : "Not a"); ++ + /* + * Set things up based on the config file information. Some of these + * settings may be overridden later when the command line options are +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index e962b75..0d1e31b 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -136,6 +136,7 @@ xf86InfoRec xf86Info = { + #else + .autoAddGPU = FALSE, + #endif ++ .autoBindGPU = TRUE, + }; + + const char *xf86ConfigFile = NULL; +@@ -197,6 +198,7 @@ Bool xf86FlipPixels = FALSE; + Gamma xf86Gamma = { 0.0, 0.0, 0.0 }; + + Bool xf86AllowMouseOpenFail = FALSE; ++Bool xf86AutoBindGPUDisabled = FALSE; + + #ifdef XF86VIDMODE + Bool xf86VidModeDisabled = FALSE; +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index a544b65..b0cba3d 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -76,6 +76,7 @@ + #include "xf86DDC.h" + #include "xf86Xinput.h" + #include "xf86InPriv.h" ++#include "xf86Crtc.h" + #include "picturestr.h" + + #include "xf86Bus.h" +@@ -298,6 +299,19 @@ xf86PrivsElevated(void) + } + + static void ++xf86AutoConfigOutputDevices(void) ++{ ++ int i; ++ ++ if (!xf86Info.autoBindGPU) ++ return; ++ ++ for (i = 0; i < xf86NumGPUScreens; i++) ++ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]), ++ xf86ScrnToScreen(xf86Screens[0])); ++} ++ ++static void + InstallSignalHandlers(void) + { + /* +@@ -871,6 +885,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) + input_unlock(); +@@ -1389,6 +1405,10 @@ ddxProcessArgument(int argc, char **argv, int i) + xf86Info.iglxFrom = X_CMDLINE; + return 0; + } ++ if (!strcmp(argv[i], "-noautoBindGPU")) { ++ xf86AutoBindGPUDisabled = TRUE; ++ return 1; ++ } + + /* OS-specific processing */ + return xf86ProcessArgument(argc, argv, i); +diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h +index c1f8a18..9a3d0df 100644 +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -46,6 +46,7 @@ + extern _X_EXPORT const char *xf86ConfigFile; + extern _X_EXPORT const char *xf86ConfigDir; + extern _X_EXPORT Bool xf86AllowMouseOpenFail; ++extern _X_EXPORT Bool xf86AutoBindGPUDisabled; + + #ifdef XF86VIDMODE + extern _X_EXPORT Bool xf86VidModeDisabled; +diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h +index c29b3cc..4c5f54b 100644 +--- a/hw/xfree86/common/xf86Privstr.h ++++ b/hw/xfree86/common/xf86Privstr.h +@@ -102,6 +102,7 @@ typedef struct { + MessageType dri2From; + + Bool autoAddGPU; ++ Bool autoBindGPU; + } xf86InfoRec, *xf86InfoPtr; + + #ifdef DPMSExtension +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 063e81c..42789ca 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -48,6 +48,7 @@ + #include "Pci.h" + #include "xf86platformBus.h" + #include "xf86Config.h" ++#include "xf86Crtc.h" + + #include "randrstr.h" + int platformSlotClaimed; +@@ -579,6 +580,9 @@ xf86platformAddDevice(int index) + } + /* attach unbound to 0 protocol screen */ + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); ++ if (xf86Info.autoBindGPU) ++ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]), ++ xf86ScrnToScreen(xf86Screens[0])); + + RRResourcesChanged(xf86Screens[0]->pScreen); + RRTellChanged(xf86Screens[0]->pScreen); +diff --git a/hw/xfree86/man/Xorg.man b/hw/xfree86/man/Xorg.man +index def9bfc..8df6b7d 100644 +--- a/hw/xfree86/man/Xorg.man ++++ b/hw/xfree86/man/Xorg.man +@@ -283,6 +283,13 @@ is a comma separated list of directories to search for + server modules. This option is only available when the server is run + as root (i.e, with real-uid 0). + .TP 8 ++.B \-noautoBindGPU ++Disable automatically setting secondary GPUs up as output sinks and offload ++sources. This is equivalent to setting the ++.B AutoBindGPU ++xorg.conf(__filemansuffix__) file option. To ++.B false. ++.TP 8 + .B \-nosilk + Disable Silken Mouse support. + .TP 8 +diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man +index 7d0c524..3e596e4 100644 +--- a/hw/xfree86/man/xorg.conf.man ++++ b/hw/xfree86/man/xorg.conf.man +@@ -673,6 +673,12 @@ Enabled by default. + If this option is disabled, then no GPU devices will be added from the udev + backend. Enabled by default. (May need to be disabled to setup Xinerama). + .TP 7 ++.BI "Option \*qAutoBindGPU\*q \*q" boolean \*q ++If enabled then secondary GPUs will be automatically set up as output-sinks and ++offload-sources. Making e.g. laptop outputs connected only to the secondary ++GPU directly available for use without needing to run ++"xrandr --setprovideroutputsource". Enabled by default. ++.TP 7 + .BI "Option \*qLog\*q \*q" string \*q + This option controls whether the log is flushed and/or synced to disk after + each message. +diff --git a/randr/randrstr.h b/randr/randrstr.h +index 706e9a7..66999d5 100644 +--- a/randr/randrstr.h ++++ b/randr/randrstr.h +@@ -976,6 +976,9 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p); + extern _X_EXPORT void + RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider); + ++extern _X_EXPORT void ++RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen); ++ + /* rrproviderproperty.c */ + + extern _X_EXPORT void +diff --git a/randr/rrprovider.c b/randr/rrprovider.c +index f9df67e..abc5685 100644 +--- a/randr/rrprovider.c ++++ b/randr/rrprovider.c +@@ -482,3 +482,25 @@ RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider) + + WriteEventsToClient(client, 1, (xEvent *) &pe); + } ++ ++void ++RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen) ++{ ++ rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen); ++ rrScrPrivPtr masterPriv = rrGetScrPriv(masterScreen); ++ RRProviderPtr provider = pScrPriv->provider; ++ RRProviderPtr master_provider = masterPriv->provider; ++ ++ if (!provider || !master_provider) ++ return; ++ ++ if ((provider->capabilities & RR_Capability_SinkOutput) && ++ (master_provider->capabilities & RR_Capability_SourceOutput)) { ++ pScrPriv->rrProviderSetOutputSource(pScreen, provider, master_provider); ++ RRInitPrimeSyncProps(pScreen); ++ } ++ ++ if ((provider->capabilities & RR_Capability_SourceOffload) && ++ (master_provider->capabilities & RR_Capability_SinkOffload)) ++ pScrPriv->rrProviderSetOffloadSink(pScreen, provider, master_provider); ++} +-- +2.9.3 + --- xorg-server-1.19.6.orig/debian/patches/CVE-2018-14665.patch +++ xorg-server-1.19.6/debian/patches/CVE-2018-14665.patch @@ -0,0 +1,47 @@ +From 50c0cf885a6e91c0ea71fb49fa8f1b7c86fe330e Mon Sep 17 00:00:00 2001 +From: Matthieu Herrb +Date: Tue, 23 Oct 2018 21:29:08 +0200 +Subject: [PATCH] Disable -logfile and -modulepath when running with elevated + privileges + +Could cause privilege elevation and/or arbitrary files overwrite, when +the X server is running with elevated privileges (ie when Xorg is +installed with the setuid bit set and started by a non-root user). + +CVE-2018-14665 + +Issue reported by Narendra Shinde and Red Hat. + +Signed-off-by: Matthieu Herrb +Reviewed-by: Alan Coopersmith +Reviewed-by: Peter Hutterer +Reviewed-by: Adam Jackson +--- + hw/xfree86/common/xf86Init.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c +=================================================================== +--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c 2018-10-25 11:18:22.997007586 -0400 ++++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c 2018-10-25 11:18:22.997007586 -0400 +@@ -1175,14 +1175,18 @@ ddxProcessArgument(int argc, char **argv + /* First the options that are not allowed with elevated privileges */ + if (!strcmp(argv[i], "-modulepath")) { + CHECK_FOR_REQUIRED_ARGUMENT(); +- xf86CheckPrivs(argv[i], argv[i + 1]); ++ if (xf86PrivsElevated()) ++ FatalError("\nInvalid argument -modulepath " ++ "with elevated privileges\n"); + xf86ModulePath = argv[i + 1]; + xf86ModPathFrom = X_CMDLINE; + return 2; + } + if (!strcmp(argv[i], "-logfile")) { + CHECK_FOR_REQUIRED_ARGUMENT(); +- xf86CheckPrivs(argv[i], argv[i + 1]); ++ if (xf86PrivsElevated()) ++ FatalError("\nInvalid argument -logfile " ++ "with elevated privileges\n"); + xf86LogFile = argv[i + 1]; + xf86LogFileFrom = X_CMDLINE; + return 2; --- xorg-server-1.19.6.orig/debian/patches/dri2-Sync-i965_pci_ids.h-from-Mesa.patch +++ xorg-server-1.19.6/debian/patches/dri2-Sync-i965_pci_ids.h-from-Mesa.patch @@ -0,0 +1,72 @@ +From 90e0cdd42dfda2accfadffa5c550712696902e14 Mon Sep 17 00:00:00 2001 +From: Rodrigo Vivi +Date: Wed, 7 Mar 2018 07:46:20 -0800 +Subject: [PATCH] dri2: Sync i965_pci_ids.h from Mesa. + +Copied from Mesa with no modifications. + +Gives us Geminilake and Kaby Lake platform names updates and +sync on Coffee Lake PCI IDs. + +Cc: Timo Aaltonen +Signed-off-by: Rodrigo Vivi +Reviewed-by: Adam Jackson +--- + hw/xfree86/dri2/pci_ids/i965_pci_ids.h | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +diff --git a/hw/xfree86/dri2/pci_ids/i965_pci_ids.h b/hw/xfree86/dri2/pci_ids/i965_pci_ids.h +index 57e70b7ae..feb9c582b 100644 +--- a/hw/xfree86/dri2/pci_ids/i965_pci_ids.h ++++ b/hw/xfree86/dri2/pci_ids/i965_pci_ids.h +@@ -151,7 +151,7 @@ CHIPSET(0x590B, kbl_gt1, "Intel(R) Kabylake GT1") + CHIPSET(0x590E, kbl_gt1, "Intel(R) Kabylake GT1") + CHIPSET(0x5913, kbl_gt1_5, "Intel(R) Kabylake GT1.5") + CHIPSET(0x5915, kbl_gt1_5, "Intel(R) Kabylake GT1.5") +-CHIPSET(0x5917, kbl_gt1_5, "Intel(R) Kabylake GT1.5") ++CHIPSET(0x5917, kbl_gt2, "Intel(R) UHD Graphics 620 (Kabylake GT2)") + CHIPSET(0x5912, kbl_gt2, "Intel(R) HD Graphics 630 (Kaby Lake GT2)") + CHIPSET(0x5916, kbl_gt2, "Intel(R) HD Graphics 620 (Kaby Lake GT2)") + CHIPSET(0x591A, kbl_gt2, "Intel(R) HD Graphics P630 (Kaby Lake GT2)") +@@ -160,22 +160,30 @@ CHIPSET(0x591D, kbl_gt2, "Intel(R) HD Graphics P630 (Kaby Lake GT2)") + CHIPSET(0x591E, kbl_gt2, "Intel(R) HD Graphics 615 (Kaby Lake GT2)") + CHIPSET(0x5921, kbl_gt2, "Intel(R) Kabylake GT2F") + CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabylake GT3") +-CHIPSET(0x5926, kbl_gt3, "Intel(R) Iris Plus Graphics 640 (Kaby Lake GT3)") +-CHIPSET(0x5927, kbl_gt3, "Intel(R) Iris Plus Graphics 650 (Kaby Lake GT3)") ++CHIPSET(0x5926, kbl_gt3, "Intel(R) Iris Plus Graphics 640 (Kaby Lake GT3e)") ++CHIPSET(0x5927, kbl_gt3, "Intel(R) Iris Plus Graphics 650 (Kaby Lake GT3e)") + CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4") +-CHIPSET(0x3184, glk, "Intel(R) HD Graphics (Geminilake)") +-CHIPSET(0x3185, glk_2x6, "Intel(R) HD Graphics (Geminilake 2x6)") ++CHIPSET(0x3184, glk, "Intel(R) UHD Graphics 605 (Geminilake)") ++CHIPSET(0x3185, glk_2x6, "Intel(R) UHD Graphics 600 (Geminilake 2x6)") + CHIPSET(0x3E90, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") + CHIPSET(0x3E93, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") +-CHIPSET(0x3E91, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") +-CHIPSET(0x3E92, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3E99, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") ++CHIPSET(0x3EA1, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") ++CHIPSET(0x3EA4, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") ++CHIPSET(0x3E91, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") ++CHIPSET(0x3E92, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") + CHIPSET(0x3E96, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") +-CHIPSET(0x3E9B, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3E9A, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3E9B, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") + CHIPSET(0x3E94, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3EA0, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3EA3, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3EA9, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3EA2, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") ++CHIPSET(0x3EA5, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x3EA6, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x3EA7, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x3EA8, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") +-CHIPSET(0x3EA5, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x5A49, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") + CHIPSET(0x5A4A, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") + CHIPSET(0x5A41, cnl_3x8, "Intel(R) HD Graphics (Cannonlake 3x8 GT1)") +-- +2.15.1 + --- xorg-server-1.19.6.orig/debian/patches/fix-default-permissions.patch +++ xorg-server-1.19.6/debian/patches/fix-default-permissions.patch @@ -0,0 +1,21 @@ +Description: fix default permissions when creating the log directory. +Author: Marc Deslauriers +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/session-migration/+bug/1735929 + +Index: xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c +=================================================================== +--- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Helper.c 2018-04-13 11:30:50.090528041 -0400 ++++ xorg-server-1.19.6/hw/xfree86/common/xf86Helper.c 2018-04-13 11:31:30.246621218 -0400 +@@ -1221,10 +1221,10 @@ static void xf86_mkdir_p(char *path) + + while ((sep = strchr(sep + 1, '/'))) { + *sep = 0; +- (void)mkdir(path, 0777); ++ (void)mkdir(path, 0700); + *sep = '/'; + } +- (void)mkdir(path, 0777); ++ (void)mkdir(path, 0700); + } + + void --- xorg-server-1.19.6.orig/debian/patches/improve-outputclass.diff +++ xorg-server-1.19.6/debian/patches/improve-outputclass.diff @@ -0,0 +1,486 @@ +diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h +index e54c811..f724688 100644 +--- a/hw/xfree86/common/xf86.h ++++ b/hw/xfree86/common/xf86.h +@@ -55,6 +55,7 @@ + extern _X_EXPORT int xf86DoConfigure; + extern _X_EXPORT int xf86DoShowOptions; + extern _X_EXPORT Bool xf86DoConfigurePass1; ++extern _X_EXPORT Bool xf86ProbeIgnorePrimary; + extern _X_EXPORT Bool xorgHWAccess; + + extern _X_EXPORT DevPrivateKeyRec xf86ScreenKeyRec; +diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c +index 5b93940..9836803 100644 +--- a/hw/xfree86/common/xf86Bus.c ++++ b/hw/xfree86/common/xf86Bus.c +@@ -82,8 +82,6 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only) + if (!xf86DoConfigure && drv->platformProbe != NULL) { + foundScreen = xf86platformProbeDev(drv); + } +- if (ServerIsNotSeat0() && foundScreen) +- return foundScreen; + #endif + + #ifdef XSERVER_LIBPCIACCESS +@@ -119,14 +117,38 @@ xf86BusConfig(void) + int i, j; + + /* +- * Now call each of the Probe functions. Each successful probe will +- * result in an extra entry added to the xf86Screens[] list for each +- * instance of the hardware found. ++ * 3 step probe to (hopefully) ensure that we always find at least 1 ++ * (non GPU) screen: ++ * ++ * 1. Call each drivers probe function normally, ++ * Each successful probe will result in an extra entry added to the ++ * xf86Screens[] list for each instance of the hardware found. + */ + for (i = 0; i < xf86NumDrivers; i++) { + xf86CallDriverProbe(xf86DriverList[i], FALSE); + } + ++ /* ++ * 2. If no Screens were found, call each drivers probe function with ++ * ignorePrimary = TRUE, to ensure that we do actually get a ++ * Screen if there is atleast one supported video card. ++ */ ++ if (xf86NumScreens == 0) { ++ xf86ProbeIgnorePrimary = TRUE; ++ for (i = 0; i < xf86NumDrivers && xf86NumScreens == 0; i++) { ++ xf86CallDriverProbe(xf86DriverList[i], FALSE); ++ } ++ xf86ProbeIgnorePrimary = FALSE; ++ } ++ ++ /* ++ * 3. Call xf86platformAddGPUDevices() to add any additional video cards as ++ * GPUScreens (GPUScreens are only supported by platformBus drivers). ++ */ ++ for (i = 0; i < xf86NumDrivers; i++) { ++ xf86platformAddGPUDevices(xf86DriverList[i]); ++ } ++ + /* If nothing was detected, return now */ + if (xf86NumScreens == 0) { + xf86Msg(X_ERROR, "No devices detected.\n"); +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index 07cfabf..e962b75 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -152,6 +152,7 @@ XF86ConfigPtr xf86configptr = NULL; + Bool xf86Resetting = FALSE; + Bool xf86Initialising = FALSE; + Bool xf86DoConfigure = FALSE; ++Bool xf86ProbeIgnorePrimary = FALSE; + Bool xf86DoShowOptions = FALSE; + DriverPtr *xf86DriverList = NULL; + int xf86NumDrivers = 0; +diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c +index e9393fa..06973bc 100644 +--- a/hw/xfree86/common/xf86Option.c ++++ b/hw/xfree86/common/xf86Option.c +@@ -44,6 +44,7 @@ + #include "xf86Xinput.h" + #include "xf86Optrec.h" + #include "xf86Parser.h" ++#include "xf86platformBus.h" /* For OutputClass functions */ + #include "optionstr.h" + + static Bool ParseOptionValue(int scrnIndex, XF86OptionPtr options, +@@ -64,7 +65,7 @@ static Bool ParseOptionValue(int scrnIndex, XF86OptionPtr options, + * + * The order of precedence for options is: + * +- * extraOpts, display, confScreen, monitor, device ++ * extraOpts, display, confScreen, monitor, device, outputClassOptions + */ + + void +@@ -79,6 +80,8 @@ xf86CollectOptions(ScrnInfoPtr pScrn, XF86OptionPtr extraOpts) + pScrn->options = NULL; + + for (i = pScrn->numEntities - 1; i >= 0; i--) { ++ xf86MergeOutputClassOptions(pScrn->entityList[i], &pScrn->options); ++ + device = xf86GetDevFromEntity(pScrn->entityList[i], + pScrn->entityInstanceList[i]); + if (device && device->options) { +diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c +index e61ae0c..b0c78e7 100644 +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -352,6 +352,10 @@ xf86ComparePciBusString(const char *busID, int bus, int device, int func) + Bool + xf86IsPrimaryPci(struct pci_device *pPci) + { ++ /* Add max. 1 screen for the IgnorePrimary fallback path */ ++ if (xf86ProbeIgnorePrimary && xf86NumScreens == 0) ++ return TRUE; ++ + if (primaryBus.type == BUS_PCI) + return pPci == primaryBus.id.pci; + #ifdef XSERVER_PLATFORM_BUS +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 39fb1dd..0b5795f 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -40,6 +40,7 @@ + #include "hotplug.h" + #include "systemd-logind.h" + ++#include "loaderProcs.h" + #include "xf86.h" + #include "xf86_OSproc.h" + #include "xf86Priv.h" +@@ -114,6 +115,10 @@ xf86_find_platform_device_by_devnum(int major, int minor) + static Bool + xf86IsPrimaryPlatform(struct xf86_platform_device *plat) + { ++ /* Add max. 1 screen for the IgnorePrimary fallback path */ ++ if (xf86ProbeIgnorePrimary && xf86NumScreens == 0) ++ return TRUE; ++ + if (primaryBus.type == BUS_PLATFORM) + return plat == primaryBus.id.plat; + #ifdef XSERVER_LIBPCIACCESS +@@ -141,16 +146,9 @@ platform_find_pci_info(struct xf86_platform_device *pd, char *busid) + + iter = pci_slot_match_iterator_create(&devmatch); + info = pci_device_next(iter); +- if (info) { ++ if (info) + pd->pdev = info; +- pci_device_probe(info); +- if (pci_device_is_boot_vga(info)) { +- primaryBus.type = BUS_PLATFORM; +- primaryBus.id.plat = pd; +- } +- } + pci_iterator_destroy(iter); +- + } + + static Bool +@@ -210,9 +208,10 @@ MatchToken(const char *value, struct xorg_list *patterns, + } + + static Bool +-OutputClassMatches(const XF86ConfOutputClassPtr oclass, int index) ++OutputClassMatches(const XF86ConfOutputClassPtr oclass, ++ struct xf86_platform_device *dev) + { +- char *driver = xf86_platform_odev_attributes(index)->driver; ++ char *driver = dev->attribs->driver; + + if (!MatchToken(driver, &oclass->match_driver, strcmp)) + return FALSE; +@@ -230,7 +229,7 @@ xf86OutputClassDriverList(int index, char *matches[], int nmatches) + return 0; + + for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) { +- if (OutputClassMatches(cl, index)) { ++ if (OutputClassMatches(cl, &xf86_platform_devices[index])) { + char *path = xf86_platform_odev_attributes(index)->path; + + xf86Msg(X_INFO, "Applying OutputClass \"%s\" to %s\n", +@@ -288,6 +287,8 @@ xf86platformProbe(void) + { + int i; + Bool pci = TRUE; ++ XF86ConfOutputClassPtr cl; ++ char *old_path, *path = NULL; + + config_odev_probe(xf86PlatformDeviceProbe); + +@@ -301,10 +302,105 @@ xf86platformProbe(void) + if (pci && (strncmp(busid, "pci:", 4) == 0)) { + platform_find_pci_info(&xf86_platform_devices[i], busid); + } ++ ++ /* ++ * Deal with OutputClass ModulePath directives, these must be ++ * processed before we do any module loading. ++ */ ++ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) { ++ if (!OutputClassMatches(cl, &xf86_platform_devices[i])) ++ continue; ++ ++ if (cl->modulepath && xf86ModPathFrom != X_CMDLINE) { ++ old_path = path; ++ XNFasprintf(&path, "%s,%s", cl->modulepath, ++ path ? path : xf86ModulePath); ++ free(old_path); ++ xf86Msg(X_CONFIG, "OutputClass \"%s\" ModulePath extended to \"%s\"\n", ++ cl->identifier, path); ++ LoaderSetPath(path); ++ } ++ } + } ++ ++ free(path); ++ ++ /* First see if there is an OutputClass match marking a device as primary */ ++ for (i = 0; i < xf86_num_platform_devices; i++) { ++ struct xf86_platform_device *dev = &xf86_platform_devices[i]; ++ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) { ++ if (!OutputClassMatches(cl, dev)) ++ continue; ++ ++ if (xf86CheckBoolOption(cl->option_lst, "PrimaryGPU", FALSE)) { ++ xf86Msg(X_CONFIG, "OutputClass \"%s\" setting %s as PrimaryGPU\n", ++ cl->identifier, dev->attribs->path); ++ primaryBus.type = BUS_PLATFORM; ++ primaryBus.id.plat = dev; ++ return 0; ++ } ++ } ++ } ++ ++ /* Then check for pci_device_is_boot_vga() */ ++ for (i = 0; i < xf86_num_platform_devices; i++) { ++ struct xf86_platform_device *dev = &xf86_platform_devices[i]; ++ ++ if (!dev->pdev) ++ continue; ++ ++ pci_device_probe(dev->pdev); ++ if (pci_device_is_boot_vga(dev->pdev)) { ++ primaryBus.type = BUS_PLATFORM; ++ primaryBus.id.plat = dev; ++ } ++ } ++ + return 0; + } + ++void ++xf86MergeOutputClassOptions(int entityIndex, void **options) ++{ ++ const EntityPtr entity = xf86Entities[entityIndex]; ++ struct xf86_platform_device *dev = NULL; ++ XF86ConfOutputClassPtr cl; ++ XF86OptionPtr classopts; ++ int i = 0; ++ ++ switch (entity->bus.type) { ++ case BUS_PLATFORM: ++ dev = entity->bus.id.plat; ++ break; ++ case BUS_PCI: ++ for (i = 0; i < xf86_num_platform_devices; i++) { ++ if (MATCH_PCI_DEVICES(xf86_platform_devices[i].pdev, ++ entity->bus.id.pci)) { ++ dev = &xf86_platform_devices[i]; ++ break; ++ } ++ } ++ break; ++ default: ++ xf86Msg(X_DEBUG, "xf86MergeOutputClassOptions unsupported bus type %d\n", ++ entity->bus.type); ++ } ++ ++ if (!dev) ++ return; ++ ++ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) { ++ if (!OutputClassMatches(cl, dev) || !cl->option_lst) ++ continue; ++ ++ xf86Msg(X_INFO, "Applying OutputClass \"%s\" options to %s\n", ++ cl->identifier, dev->attribs->path); ++ ++ classopts = xf86optionListDup(cl->option_lst); ++ *options = xf86optionListMerge(*options, classopts); ++ } ++} ++ + static int + xf86ClaimPlatformSlot(struct xf86_platform_device * d, DriverPtr drvp, + int chipset, GDevPtr dev, Bool active) +@@ -475,6 +571,23 @@ xf86platformProbeDev(DriverPtr drvp) + isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0); + } + ++ free(devList); ++ ++ return foundScreen; ++} ++ ++int ++xf86platformAddGPUDevices(DriverPtr drvp) ++{ ++ Bool foundScreen = FALSE; ++ GDevPtr *devList; ++ int j; ++ ++ if (!drvp->platformProbe) ++ return FALSE; ++ ++ xf86MatchDevice(drvp->driverName, &devList); ++ + /* if autoaddgpu devices is enabled then go find any unclaimed platform + * devices and add them as GPU screens */ + if (xf86Info.autoAddGPU) { +@@ -486,6 +599,8 @@ xf86platformProbeDev(DriverPtr drvp) + } + } + ++ free(devList); ++ + return foundScreen; + } + +diff --git a/hw/xfree86/common/xf86platformBus.h b/hw/xfree86/common/xf86platformBus.h +index a7335b9..70d9ec8 100644 +--- a/hw/xfree86/common/xf86platformBus.h ++++ b/hw/xfree86/common/xf86platformBus.h +@@ -41,6 +41,8 @@ struct xf86_platform_device { + #ifdef XSERVER_PLATFORM_BUS + int xf86platformProbe(void); + int xf86platformProbeDev(DriverPtr drvp); ++int xf86platformAddGPUDevices(DriverPtr drvp); ++void xf86MergeOutputClassOptions(int entityIndex, void **options); + + extern int xf86_num_platform_devices; + extern struct xf86_platform_device *xf86_platform_devices; +@@ -156,6 +158,12 @@ xf86PlatformMatchDriver(char *matches[], int nmatches); + + extern void xf86platformVTProbe(void); + extern void xf86platformPrimary(void); ++ ++#else ++ ++static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; } ++static inline void xf86MergeOutputClassOptions(int index, void **options) {} ++ + #endif + + #endif +diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c +index 8bf6836..940f5fc 100644 +--- a/hw/xfree86/loader/loadmod.c ++++ b/hw/xfree86/loader/loadmod.c +@@ -184,6 +184,7 @@ LoaderSetPath(const char *path) + if (!path) + return; + ++ FreeStringList(defaultPathList); + defaultPathList = InitPathList(path); + } + +diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man +index 7d0c524..00ebf56 100644 +--- a/hw/xfree86/man/xorg.conf.man ++++ b/hw/xfree86/man/xorg.conf.man +@@ -1280,6 +1280,42 @@ For example: + Check the case-sensitive string + .RI \*q matchdriver \*q + against the kernel driver of the device. ++.PP ++When an output device has been matched to the ++.B OutputClass ++section, any ++.B Option ++entries are applied to the device. One ++.B OutputClass ++specific ++.B Option ++is recognized. See the ++.B Device ++section below for a description of the remaining ++.B Option ++entries. ++.TP 7 ++.BI "Option \*qPrimaryGPU\*q \*q" boolean \*q ++This option specifies that the matched device should be treated as the ++primary GPU, replacing the selection of the GPU used as output by the ++firmware. If multiple output devices match an OutputClass section with ++the PrimaryGPU option set, the first one enumerated becomes the primary GPU. ++.PP ++A ++.B OutputClass ++Section may contain ++.B ModulePath ++entries. When an output device matches an ++.B OutputClass ++section, any ++.B ModulePath ++entries in that ++.B OutputClass ++are pre-pended to the search path for loadable Xorg server modules. See ++.B ModulePath ++in the ++.B Files ++section for more info. + .SH "DEVICE SECTION" + The config file may have multiple + .B Device +diff --git a/hw/xfree86/parser/OutputClass.c b/hw/xfree86/parser/OutputClass.c +index 8064e0c..01b348f 100644 +--- a/hw/xfree86/parser/OutputClass.c ++++ b/hw/xfree86/parser/OutputClass.c +@@ -36,6 +36,8 @@ static const xf86ConfigSymTabRec OutputClassTab[] = { + {ENDSECTION, "endsection"}, + {IDENTIFIER, "identifier"}, + {DRIVER, "driver"}, ++ {MODULEPATH, "modulepath"}, ++ {OPTION, "option"}, + {MATCH_DRIVER, "matchdriver"}, + {-1, ""}, + }; +@@ -52,6 +54,7 @@ xf86freeOutputClassList(XF86ConfOutputClassPtr ptr) + TestFree(ptr->identifier); + TestFree(ptr->comment); + TestFree(ptr->driver); ++ TestFree(ptr->modulepath); + + xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { + xorg_list_del(&group->entry); +@@ -60,6 +63,8 @@ xf86freeOutputClassList(XF86ConfOutputClassPtr ptr) + free(group); + } + ++ xf86optionListFree(ptr->option_lst); ++ + prev = ptr; + ptr = ptr->list.next; + free(prev); +@@ -112,6 +117,22 @@ xf86parseOutputClassSection(void) + else + ptr->driver = xf86_lex_val.str; + break; ++ case MODULEPATH: ++ if (xf86getSubToken(&(ptr->comment)) != STRING) ++ Error(QUOTE_MSG, "ModulePath"); ++ if (ptr->modulepath) { ++ char *path; ++ XNFasprintf(&path, "%s,%s", ptr->modulepath, xf86_lex_val.str); ++ free(xf86_lex_val.str); ++ free(ptr->modulepath); ++ ptr->modulepath = path; ++ } else { ++ ptr->modulepath = xf86_lex_val.str; ++ } ++ break; ++ case OPTION: ++ ptr->option_lst = xf86parseOption(ptr->option_lst); ++ break; + case MATCH_DRIVER: + if (xf86getSubToken(&(ptr->comment)) != STRING) + Error(QUOTE_MSG, "MatchDriver"); +diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h +index 9c4b403..990af98 100644 +--- a/hw/xfree86/parser/xf86Parser.h ++++ b/hw/xfree86/parser/xf86Parser.h +@@ -339,6 +339,8 @@ typedef struct { + char *driver; + struct xorg_list match_driver; + char *comment; ++ XF86OptionPtr option_lst; ++ char *modulepath; + } XF86ConfOutputClassRec, *XF86ConfOutputClassPtr; + + /* Values for adj_where */ --- xorg-server-1.19.6.orig/debian/patches/no-nv.patch +++ xorg-server-1.19.6/debian/patches/no-nv.patch @@ -0,0 +1,22 @@ +commit b770266fa9c3fab5374bdf109676e0b129ac4546 +Author: Bryce Harrington +Date: Wed Apr 3 13:36:20 2013 -0700 + + Don't bother probing -nv on linux. + + For linux this driver is long obsolete now. It may have some relevance + on non-linux systems. + +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1208,8 +1208,9 @@ xf86VideoPtrToDriverList(struct pci_devi + driverList[idx++] = "nvidia"; + #ifdef __linux__ + driverList[idx++] = "nouveau"; +-#endif ++#else + driverList[idx++] = "nv"; ++#endif + break; + } + case 0x1106: --- xorg-server-1.19.6.orig/debian/patches/prime-sync-refactor.diff +++ xorg-server-1.19.6/debian/patches/prime-sync-refactor.diff @@ -0,0 +1,110 @@ +commit f79e5368512b72bb463925983d265b070261b7aa +Author: Jim Qu +Date: Mon Aug 27 13:37:38 2018 +0800 + + modesetting: code refactor for PRIME sync + + The X will be crashed on the system with other DDX driver, + such as amdgpu. + + show the log like: + + randr: falling back to unsynchronized pixmap sharing + (EE) + (EE) Backtrace: + (EE) 0: /usr/lib/xorg/Xorg (xorg_backtrace+0x4e) + (EE) 1: /usr/lib/xorg/Xorg (0x55cb0151a000+0x1b5ce9) + (EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7f1587a1d000+0x11390) + (EE) + (EE) Segmentation fault at address 0x0 + (EE) + + The issue is that modesetting as the master, and amdgpu as the slave. + Thus, when the master attempts to access pSlavePixPriv in ms_dirty_update(), + problems result due to the fact that it's accessing AMD's 'ppriv' using the + modesetting structure definition. + + Apart from fixing crash issue, the patch fix other issue in master interface + in which driver should refer to master pixmap. + + Signed-off-by: Jim Qu + Reviewed-by: Alex Goins + +--- a/hw/xfree86/drivers/modesetting/driver.c ++++ b/hw/xfree86/drivers/modesetting/driver.c +@@ -627,19 +627,21 @@ ms_dirty_update(ScreenPtr screen, int *t + xorg_list_for_each_entry(ent, &screen->pixmap_dirty_list, ent) { + region = DamageRegion(ent->damage); + if (RegionNotEmpty(region)) { +- msPixmapPrivPtr ppriv = +- msGetPixmapPriv(&ms->drmmode, ent->slave_dst); ++ if (!screen->isGPU) { ++ msPixmapPrivPtr ppriv = ++ msGetPixmapPriv(&ms->drmmode, ent->slave_dst->master_pixmap); + +- if (ppriv->notify_on_damage) { +- ppriv->notify_on_damage = FALSE; ++ if (ppriv->notify_on_damage) { ++ ppriv->notify_on_damage = FALSE; + +- ent->slave_dst->drawable.pScreen-> +- SharedPixmapNotifyDamage(ent->slave_dst); +- } ++ ent->slave_dst->drawable.pScreen-> ++ SharedPixmapNotifyDamage(ent->slave_dst); ++ } + +- /* Requested manual updating */ +- if (ppriv->defer_dirty_update) +- continue; ++ /* Requested manual updating */ ++ if (ppriv->defer_dirty_update) ++ continue; ++ } + + redisplay_dirty(screen, ent, timeout); + DamageEmpty(ent->damage); +@@ -1235,8 +1237,8 @@ msStartFlippingPixmapTracking(RRCrtcPtr + ScreenPtr pScreen = src->drawable.pScreen; + modesettingPtr ms = modesettingPTR(xf86ScreenToScrn(pScreen)); + +- msPixmapPrivPtr ppriv1 = msGetPixmapPriv(&ms->drmmode, slave_dst1), +- ppriv2 = msGetPixmapPriv(&ms->drmmode, slave_dst2); ++ msPixmapPrivPtr ppriv1 = msGetPixmapPriv(&ms->drmmode, slave_dst1->master_pixmap), ++ ppriv2 = msGetPixmapPriv(&ms->drmmode, slave_dst2->master_pixmap); + + if (!PixmapStartDirtyTracking(src, slave_dst1, x, y, + dst_x, dst_y, rotation)) { +@@ -1264,10 +1266,10 @@ msStartFlippingPixmapTracking(RRCrtcPtr + static Bool + msPresentSharedPixmap(PixmapPtr slave_dst) + { +- ScreenPtr pScreen = slave_dst->drawable.pScreen; ++ ScreenPtr pScreen = slave_dst->master_pixmap->drawable.pScreen; + modesettingPtr ms = modesettingPTR(xf86ScreenToScrn(pScreen)); + +- msPixmapPrivPtr ppriv = msGetPixmapPriv(&ms->drmmode, slave_dst); ++ msPixmapPrivPtr ppriv = msGetPixmapPriv(&ms->drmmode, slave_dst->master_pixmap); + + RegionPtr region = DamageRegion(ppriv->dirty->damage); + +@@ -1288,8 +1290,8 @@ msStopFlippingPixmapTracking(PixmapPtr s + ScreenPtr pScreen = src->drawable.pScreen; + modesettingPtr ms = modesettingPTR(xf86ScreenToScrn(pScreen)); + +- msPixmapPrivPtr ppriv1 = msGetPixmapPriv(&ms->drmmode, slave_dst1), +- ppriv2 = msGetPixmapPriv(&ms->drmmode, slave_dst2); ++ msPixmapPrivPtr ppriv1 = msGetPixmapPriv(&ms->drmmode, slave_dst1->master_pixmap), ++ ppriv2 = msGetPixmapPriv(&ms->drmmode, slave_dst2->master_pixmap); + + Bool ret = TRUE; + +@@ -1455,7 +1457,7 @@ msRequestSharedPixmapNotifyDamage(Pixmap + ScrnInfoPtr scrn = xf86ScreenToScrn(screen); + modesettingPtr ms = modesettingPTR(scrn); + +- msPixmapPrivPtr ppriv = msGetPixmapPriv(&ms->drmmode, ppix); ++ msPixmapPrivPtr ppriv = msGetPixmapPriv(&ms->drmmode, ppix->master_pixmap); + + ppriv->notify_on_damage = TRUE; + --- xorg-server-1.19.6.orig/debian/patches/series +++ xorg-server-1.19.6/debian/patches/series @@ -0,0 +1,34 @@ +## 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_use-intel-only-on-pre-gen4.diff +07-glx-do-not-pick-srgb-config-for-32bit-rgba-visual.diff + + +## Ubuntu patches, not upstreamable +168_glibc_trace_to_stderr.patch +226_fall_back_to_autoconfiguration.patch + +## send upstream +xfree86-no-xv-for-gpuscreens.patch +no-nv.patch + +## upstream patches + +# hybrid graphics fixes +228_autobind_gpu.patch +xf86-ignore-conflicting-rr-caps.patch + +xmir.patch +xi2-resize-touch.patch +xwayland-tablet.diff +improve-outputclass.diff +dri2-Sync-i965_pci_ids.h-from-Mesa.patch +server-1.19.diff +fix-default-permissions.patch +prime-sync-refactor.diff +sync-i965-pciids.diff +CVE-2018-14665.patch --- xorg-server-1.19.6.orig/debian/patches/server-1.19.diff +++ xorg-server-1.19.6/debian/patches/server-1.19.diff @@ -0,0 +1,987 @@ +git diff xorg-server-1.19.6..56547b196660e24 + +diff --git a/composite/compalloc.c b/composite/compalloc.c +index 05ffc7e..433dc82 100644 +--- a/composite/compalloc.c ++++ b/composite/compalloc.c +@@ -67,6 +67,18 @@ compBlockHandler(ScreenPtr pScreen, void *pTimeout) + cs->BlockHandler = NULL; + } + ++void ++compMarkAncestors(WindowPtr pWin) ++{ ++ pWin = pWin->parent; ++ while (pWin) { ++ if (pWin->damagedDescendants) ++ return; ++ pWin->damagedDescendants = TRUE; ++ pWin = pWin->parent; ++ } ++} ++ + static void + compReportDamage(DamagePtr pDamage, RegionPtr pRegion, void *closure) + { +@@ -81,14 +93,7 @@ compReportDamage(DamagePtr pDamage, RegionPtr pRegion, void *closure) + } + cw->damaged = TRUE; + +- /* Mark the ancestors */ +- pWin = pWin->parent; +- while (pWin) { +- if (pWin->damagedDescendants) +- break; +- pWin->damagedDescendants = TRUE; +- pWin = pWin->parent; +- } ++ compMarkAncestors(pWin); + } + + static void +diff --git a/composite/compint.h b/composite/compint.h +index f05c2d8..89f6507 100644 +--- a/composite/compint.h ++++ b/composite/compint.h +@@ -236,6 +236,8 @@ Bool + compReallocPixmap(WindowPtr pWin, int x, int y, + unsigned int w, unsigned int h, int bw); + ++void compMarkAncestors(WindowPtr pWin); ++ + /* + * compinit.c + */ +diff --git a/composite/compwindow.c b/composite/compwindow.c +index f882381..e74ce66 100644 +--- a/composite/compwindow.c ++++ b/composite/compwindow.c +@@ -432,6 +432,7 @@ compReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) + { + ScreenPtr pScreen = pWin->drawable.pScreen; + CompScreenPtr cs = GetCompScreen(pScreen); ++ CompWindowPtr cw = GetCompWindow(pWin); + + pScreen->ReparentWindow = cs->ReparentWindow; + /* +@@ -469,6 +470,10 @@ compReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) + (*pScreen->ReparentWindow) (pWin, pPriorParent); + cs->ReparentWindow = pScreen->ReparentWindow; + pScreen->ReparentWindow = compReparentWindow; ++ ++ if (pWin->damagedDescendants || (cw && cw->damaged)) ++ compMarkAncestors(pWin); ++ + compCheckTree(pWin->drawable.pScreen); + } + +diff --git a/config/udev.c b/config/udev.c +index e198e86..3a73189 100644 +--- a/config/udev.c ++++ b/config/udev.c +@@ -135,7 +135,7 @@ device_added(struct udev_device *udev_device) + #endif + + value = udev_device_get_property_value(udev_device, "ID_INPUT"); +- if (value && !strcmp(value, "0")) { ++ if (!value || !strcmp(value, "0")) { + LogMessageVerb(X_INFO, 10, + "config/udev: ignoring device %s without " + "property ID_INPUT set\n", path); +diff --git a/configure.ac b/configure.ac +index 2bfafb1..a9e311b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1066,6 +1066,10 @@ int main(int argc, char *argv[[]]) { + ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no], + [MONOTONIC_CLOCK="cross compiling"]) + ++ if test "$MONOTONIC_CLOCK" = "cross compiling"; then ++ AC_CHECK_DECL([CLOCK_MONOTONIC],[MONOTONIC_CLOCK="guessing yes"],[MONOTONIC_CLOCK=no],[#include ]) ++ fi ++ + LIBS="$LIBS_SAVE" + CPPFLAGS="$CPPFLAGS_SAVE" + else +@@ -1073,6 +1077,9 @@ else + fi + + AC_MSG_RESULT([$MONOTONIC_CLOCK]) ++if test "$MONOTONIC_CLOCK" = "guessing yes"; then ++ MONOTONIC_CLOCK=yes ++fi + + if test "x$MONOTONIC_CLOCK" = xyes; then + AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()]) +diff --git a/glamor/glamor_gradient.c b/glamor/glamor_gradient.c +index 0c97ce7..f0b7d12 100644 +--- a/glamor/glamor_gradient.c ++++ b/glamor/glamor_gradient.c +@@ -54,27 +54,33 @@ _glamor_create_getcolor_fs_source(ScreenPtr screen, int stops_count, + "vec4 get_color(float stop_len)\n"\ + "{\n"\ + " int i = 0;\n"\ +- " float new_alpha; \n"\ ++ " vec4 stop_color_before;\n"\ + " vec4 gradient_color;\n"\ ++ " float stop_delta;\n"\ + " float percentage; \n"\ +- " for(i = 0; i < n_stop - 1; i++) {\n"\ ++ " \n"\ ++ " if(stop_len < stops[0])\n"\ ++ " return vec4(0.0, 0.0, 0.0, 0.0); \n"\ ++ " for(i = 1; i < n_stop; i++) {\n"\ + " if(stop_len < stops[i])\n"\ + " break; \n"\ + " }\n"\ ++ " if(i == n_stop)\n"\ ++ " return vec4(0.0, 0.0, 0.0, 0.0); \n"\ + " \n"\ +- " if(stops[i] - stops[i-1] > 2.0)\n"\ ++ " stop_color_before = stop_colors[i-1];\n"\ ++ " stop_delta = stops[i] - stops[i-1];\n"\ ++ " if(stop_delta > 2.0)\n"\ + " percentage = 0.0;\n" /*For comply with pixman, walker->stepper overflow.*/\ +- " else if(stops[i] - stops[i-1] < 0.000001)\n"\ ++ " else if(stop_delta < 0.000001)\n"\ + " percentage = 0.0;\n"\ + " else \n"\ +- " percentage = (stop_len - stops[i-1])/(stops[i] - stops[i-1]);\n"\ +- " new_alpha = percentage * stop_colors[i].a + \n"\ +- " (1.0-percentage) * stop_colors[i-1].a; \n"\ +- " gradient_color = vec4((percentage * stop_colors[i].rgb \n"\ +- " + (1.0-percentage) * stop_colors[i-1].rgb)*new_alpha, \n"\ +- " new_alpha);\n"\ ++ " percentage = (stop_len - stops[i-1])/stop_delta;\n"\ + " \n"\ +- " return gradient_color;\n"\ ++ " gradient_color = stop_color_before;\n"\ ++ " if(percentage != 0.0)\n"\ ++ " gradient_color += (stop_colors[i] - gradient_color)*percentage;\n"\ ++ " return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a);\n"\ + "}\n" + + /* Because the array access for shader is very slow, the performance is very low +@@ -101,73 +107,66 @@ _glamor_create_getcolor_fs_source(ScreenPtr screen, int stops_count, + "\n" + "vec4 get_color(float stop_len)\n" + "{\n" +- " float stop_after;\n" +- " float stop_before;\n" + " vec4 stop_color_before;\n" + " vec4 stop_color_after;\n" +- " float new_alpha; \n" + " vec4 gradient_color;\n" ++ " float stop_before;\n" ++ " float stop_delta;\n" + " float percentage; \n" + " \n" + " if((stop_len < stop0) && (n_stop >= 1)) {\n" +- " stop_color_before = stop_color0;\n" +- " stop_color_after = stop_color0;\n" +- " stop_after = stop0;\n" +- " stop_before = stop0;\n" ++ " stop_color_before = vec4(0.0, 0.0, 0.0, 0.0);\n" ++ " stop_delta = 0.0;\n" + " } else if((stop_len < stop1) && (n_stop >= 2)) {\n" + " stop_color_before = stop_color0;\n" + " stop_color_after = stop_color1;\n" +- " stop_after = stop1;\n" + " stop_before = stop0;\n" ++ " stop_delta = stop1 - stop0;\n" + " } else if((stop_len < stop2) && (n_stop >= 3)) {\n" + " stop_color_before = stop_color1;\n" + " stop_color_after = stop_color2;\n" +- " stop_after = stop2;\n" + " stop_before = stop1;\n" ++ " stop_delta = stop2 - stop1;\n" + " } else if((stop_len < stop3) && (n_stop >= 4)){\n" + " stop_color_before = stop_color2;\n" + " stop_color_after = stop_color3;\n" +- " stop_after = stop3;\n" + " stop_before = stop2;\n" ++ " stop_delta = stop3 - stop2;\n" + " } else if((stop_len < stop4) && (n_stop >= 5)){\n" + " stop_color_before = stop_color3;\n" + " stop_color_after = stop_color4;\n" +- " stop_after = stop4;\n" + " stop_before = stop3;\n" ++ " stop_delta = stop4 - stop3;\n" + " } else if((stop_len < stop5) && (n_stop >= 6)){\n" + " stop_color_before = stop_color4;\n" + " stop_color_after = stop_color5;\n" +- " stop_after = stop5;\n" + " stop_before = stop4;\n" ++ " stop_delta = stop5 - stop4;\n" + " } else if((stop_len < stop6) && (n_stop >= 7)){\n" + " stop_color_before = stop_color5;\n" + " stop_color_after = stop_color6;\n" +- " stop_after = stop6;\n" + " stop_before = stop5;\n" ++ " stop_delta = stop6 - stop5;\n" + " } else if((stop_len < stop7) && (n_stop >= 8)){\n" + " stop_color_before = stop_color6;\n" + " stop_color_after = stop_color7;\n" +- " stop_after = stop7;\n" + " stop_before = stop6;\n" ++ " stop_delta = stop7 - stop6;\n" + " } else {\n" +- " stop_color_before = stop_color7;\n" +- " stop_color_after = stop_color7;\n" +- " stop_after = stop7;\n" +- " stop_before = stop7;\n" ++ " stop_color_before = vec4(0.0, 0.0, 0.0, 0.0);\n" ++ " stop_delta = 0.0;\n" + " }\n" +- " if(stop_after - stop_before > 2.0)\n" ++ " if(stop_delta > 2.0)\n" + " percentage = 0.0;\n" //For comply with pixman, walker->stepper overflow. +- " else if(stop_after - stop_before < 0.000001)\n" ++ " else if(stop_delta < 0.000001)\n" + " percentage = 0.0;\n" +- " else \n" +- " percentage = (stop_len - stop_before)/(stop_after - stop_before);\n" +- " new_alpha = percentage * stop_color_after.a + \n" +- " (1.0-percentage) * stop_color_before.a; \n" +- " gradient_color = vec4((percentage * stop_color_after.rgb \n" +- " + (1.0-percentage) * stop_color_before.rgb)*new_alpha, \n" +- " new_alpha);\n" ++ " else\n" ++ " percentage = (stop_len - stop_before)/stop_delta;\n" + " \n" +- " return gradient_color;\n" ++ " gradient_color = stop_color_before;\n" ++ " if(percentage != 0.0)\n" ++ " gradient_color += (stop_color_after - gradient_color)*percentage;\n" ++ " return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a);\n" + "}\n"; + + if (use_array) { +@@ -458,18 +457,10 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, + "float get_stop_len()\n"\ + "{\n"\ + " vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0);\n"\ +- " float len_percentage;\n"\ + " float distance;\n"\ + " float _p1_distance;\n"\ + " float _pt_distance;\n"\ + " float y_dist;\n"\ +- " float stop_after;\n"\ +- " float stop_before;\n"\ +- " vec4 stop_color_before;\n"\ +- " vec4 stop_color_after;\n"\ +- " float new_alpha; \n"\ +- " vec4 gradient_color;\n"\ +- " float percentage; \n"\ + " vec3 source_texture_trans = transform_mat * tmp;\n"\ + " \n"\ + " if(hor_ver == 0) { \n" /*Normal case.*/\ +@@ -484,19 +475,17 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, + " _pt_distance = pt_distance * source_texture_trans.z;\n"\ + " } \n"\ + " \n"\ +- " distance = distance - _p1_distance; \n"\ ++ " distance = (distance - _p1_distance) / _pt_distance;\n"\ + " \n"\ + " if(repeat_type == %d){\n" /* repeat normal*/\ +- " distance = mod(distance, _pt_distance);\n"\ ++ " distance = fract(distance);\n"\ + " }\n"\ + " \n"\ + " if(repeat_type == %d) {\n" /* repeat reflect*/\ +- " distance = abs(mod(distance + _pt_distance, 2.0 * _pt_distance) - _pt_distance);\n"\ ++ " distance = abs(fract(distance * 0.5 + 0.5) * 2.0 - 1.0);\n"\ + " }\n"\ + " \n"\ +- " len_percentage = distance/(_pt_distance);\n"\ +- " \n"\ +- " return len_percentage;\n"\ ++ " return distance;\n"\ + "}\n"\ + "\n"\ + "void main()\n"\ +@@ -761,13 +750,13 @@ _glamor_gradient_set_stops(PicturePtr src_picture, PictGradient *pgradient, + stop_colors[1] = 0.0; //G + stop_colors[2] = 0.0; //B + stop_colors[3] = 0.0; //Alpha +- n_stops[0] = -(float) INT_MAX; //should be small enough. ++ n_stops[0] = n_stops[1]; + + stop_colors[0 + (count - 1) * 4] = 0.0; //R + stop_colors[1 + (count - 1) * 4] = 0.0; //G + stop_colors[2 + (count - 1) * 4] = 0.0; //B + stop_colors[3 + (count - 1) * 4] = 0.0; //Alpha +- n_stops[count - 1] = (float) INT_MAX; //should be large enough. ++ n_stops[count - 1] = n_stops[count - 2]; + break; + case PIXMAN_REPEAT_NORMAL: + REPEAT_FILL_STOPS(0, count - 2); +diff --git a/glamor/glamor_xv.c b/glamor/glamor_xv.c +index 31320d1..e0375d7 100644 +--- a/glamor/glamor_xv.c ++++ b/glamor/glamor_xv.c +@@ -62,6 +62,8 @@ typedef struct tagREF_TRANSFORM { + static const glamor_facet glamor_facet_xv_planar = { + .name = "xv_planar", + ++ .version = 120, ++ + .source_name = "v_texcoord0", + .vs_vars = ("attribute vec2 position;\n" + "attribute vec2 v_texcoord0;\n" +diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c +index d3136e8..dbf199c 100644 +--- a/glx/glxdricommon.c ++++ b/glx/glxdricommon.c +@@ -218,6 +218,9 @@ createModeFromConfig(const __DRIcoreExtension * core, + if (duplicateForComp && + (render_type_is_pbuffer_only(renderType) || + config->config.rgbBits != 32 || ++ config->config.redBits != 8 || ++ config->config.greenBits != 8 || ++ config->config.blueBits != 8 || + config->config.visualRating != GLX_NONE || + config->config.sampleBuffers != 0)) { + free(config); +diff --git a/glx/glxscreens.c b/glx/glxscreens.c +index 29bacd9..62d66bc 100644 +--- a/glx/glxscreens.c ++++ b/glx/glxscreens.c +@@ -275,6 +275,11 @@ pickFBConfig(__GLXscreen * pGlxScreen, VisualPtr visual) + /* If it's the 32-bit RGBA visual, demand a 32-bit fbconfig. */ + if (visual->nplanes == 32 && config->rgbBits != 32) + continue; ++ /* If it's the 32-bit RGBA visual, do not pick sRGB capable config. ++ * This can cause issues with compositors that are not sRGB aware. ++ */ ++ if (visual->nplanes == 32 && config->sRGBCapable == GL_TRUE) ++ continue; + /* Can't use the same FBconfig for multiple X visuals. I think. */ + if (config->visualID != 0) + continue; +diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am +index b876b79..4587200 100644 +--- a/hw/xfree86/Makefile.am ++++ b/hw/xfree86/Makefile.am +@@ -84,8 +84,8 @@ Xorg_DEPENDENCIES = $(LOCAL_LIBS) + Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) + + if SUID_WRAPPER +-wrapdir = $(SUID_WRAPPER_DIR) +-wrap_PROGRAMS = Xorg.wrap ++wrapexecdir = $(SUID_WRAPPER_DIR) ++wrapexec_PROGRAMS = Xorg.wrap + Xorg_wrap_SOURCES = xorg-wrapper.c + endif + +diff --git a/hw/xfree86/common/extramodes b/hw/xfree86/common/extramodes +index 4505026..006b5cb 100644 +--- a/hw/xfree86/common/extramodes ++++ b/hw/xfree86/common/extramodes +@@ -25,3 +25,144 @@ Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vs + # 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz + Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync + ++### 16:9 modelines generated by cvt ++ ++# 640x360 59.32 Hz (CVT 0.23M9-R) hsync: 22.19 kHz; pclk: 17.75 MHz ++Modeline "640x360R" 17.75 640 688 720 800 360 363 368 374 +hsync -vsync ++ ++# 640x360 59.84 Hz (CVT 0.23M9) hsync: 22.50 kHz; pclk: 18.00 MHz ++Modeline "640x360" 18.00 640 664 720 800 360 363 368 376 -hsync +vsync ++ ++# 720x405 58.99 Hz (CVT 0.29M9-R) hsync: 24.72 kHz; pclk: 21.75 MHz ++Modeline "720x405R" 21.75 720 768 800 880 405 408 413 419 +hsync -vsync ++ ++# 720x405 59.51 Hz (CVT 0.29M9) hsync: 25.11 kHz; pclk: 22.50 MHz ++Modeline "720x405" 22.50 720 744 808 896 405 408 413 422 -hsync +vsync ++ ++# 864x486 59.57 Hz (CVT 0.42M9-R) hsync: 29.79 kHz; pclk: 30.50 MHz ++Modeline "864x486R" 30.50 864 912 944 1024 486 489 494 500 +hsync -vsync ++ ++# 864x486 59.92 Hz (CVT 0.42M9) hsync: 30.32 kHz; pclk: 32.50 MHz ++Modeline "864x486" 32.50 864 888 968 1072 486 489 494 506 -hsync +vsync ++ ++# 960x540 59.82 Hz (CVT 0.52M9-R) hsync: 33.26 kHz; pclk: 37.25 MHz ++Modeline "960x540R" 37.25 960 1008 1040 1120 540 543 548 556 +hsync -vsync ++ ++# 960x540 59.63 Hz (CVT 0.52M9) hsync: 33.51 kHz; pclk: 40.75 MHz ++Modeline "960x540" 40.75 960 992 1088 1216 540 543 548 562 -hsync +vsync ++ ++# 1024x576 59.82 Hz (CVT 0.59M9-R) hsync: 35.47 kHz; pclk: 42.00 MHz ++Modeline "1024x576R" 42.00 1024 1072 1104 1184 576 579 584 593 +hsync -vsync ++ ++# 1024x576 59.90 Hz (CVT 0.59M9) hsync: 35.88 kHz; pclk: 46.50 MHz ++Modeline "1024x576" 46.50 1024 1064 1160 1296 576 579 584 599 -hsync +vsync ++ ++# 1280x720 59.74 Hz (CVT 0.92M9-R) hsync: 44.27 kHz; pclk: 63.75 MHz ++Modeline "1280x720R" 63.75 1280 1328 1360 1440 720 723 728 741 +hsync -vsync ++ ++# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz ++Modeline "1280x720" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync ++ ++# 1368x768 59.85 Hz (CVT) hsync: 47.28 kHz; pclk: 72.25 MHz ++Modeline "1368x768R" 72.25 1368 1416 1448 1528 768 771 781 790 +hsync -vsync ++ ++# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz ++Modeline "1368x768" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync ++ ++# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz ++Modeline "1600x900R" 97.50 1600 1648 1680 1760 900 903 908 926 +hsync -vsync ++ ++# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz ++Modeline "1600x900" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080R" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz ++Modeline "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync ++ ++# 2048x1152 59.91 Hz (CVT 2.36M9-R) hsync: 70.99 kHz; pclk: 156.75 MHz ++Modeline "2048x1152R" 156.75 2048 2096 2128 2208 1152 1155 1160 1185 +hsync -vsync ++ ++# 2048x1152 59.90 Hz (CVT 2.36M9) hsync: 71.58 kHz; pclk: 197.00 MHz ++Modeline "2048x1152" 197.00 2048 2184 2400 2752 1152 1155 1160 1195 -hsync +vsync ++ ++# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz ++Modeline "2560x1440R" 241.50 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync ++ ++# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz ++Modeline "2560x1440" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync ++ ++# 2880x1620 59.97 Hz (CVT 4.67M9-R) hsync: 99.92 kHz; pclk: 303.75 MHz ++Modeline "2880x1620R" 303.75 2880 2928 2960 3040 1620 1623 1628 1666 +hsync -vsync ++ ++# 2880x1620 59.96 Hz (CVT 4.67M9) hsync: 100.67 kHz; pclk: 396.25 MHz ++Modeline "2880x1620" 396.25 2880 3096 3408 3936 1620 1623 1628 1679 -hsync +vsync ++ ++# 3200x1800 59.94 Hz (CVT 5.76M9-R) hsync: 111.01 kHz; pclk: 373.00 MHz ++Modeline "3200x1800R" 373.00 3200 3248 3280 3360 1800 1803 1808 1852 +hsync -vsync ++ ++# 3200x1800 59.96 Hz (CVT 5.76M9) hsync: 111.82 kHz; pclk: 492.00 MHz ++Modeline "3200x1800" 492.00 3200 3456 3800 4400 1800 1803 1808 1865 -hsync +vsync ++ ++# 3840x2160 59.97 Hz (CVT 8.29M9-R) hsync: 133.25 kHz; pclk: 533.00 MHz ++Modeline "3840x2160R" 533.00 3840 3888 3920 4000 2160 2163 2168 2222 +hsync -vsync ++ ++# 3840x2160 59.98 Hz (CVT 8.29M9) hsync: 134.18 kHz; pclk: 712.75 MHz ++Modeline "3840x2160" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync ++ ++# 4096x2304 59.98 Hz (CVT 9.44M9-R) hsync: 142.15 kHz; pclk: 605.00 MHz ++Modeline "4096x2304R" 605.00 4096 4144 4176 4256 2304 2307 2312 2370 +hsync -vsync ++ ++# 4096x2304 59.99 Hz (CVT 9.44M9) hsync: 143.13 kHz; pclk: 813.00 MHz ++Modeline "4096x2304" 813.00 4096 4440 4888 5680 2304 2307 2312 2386 -hsync +vsync ++ ++# 5120x2880 59.99 Hz (CVT 14.75M9-R) hsync: 177.70 kHz; pclk: 938.25 MHz ++Modeline "5120x2880R" 938.25 5120 5168 5200 5280 2880 2883 2888 2962 +hsync -vsync ++ ++# 5120x2880 59.99 Hz (CVT 14.75M9) hsync: 178.88 kHz; pclk: 1276.50 MHz ++Modeline "5120x2880" 1276.50 5120 5560 6128 7136 2880 2883 2888 2982 -hsync +vsync ++ ++# 7680x4320 59.99 Hz (CVT 33.18M9-R) hsync: 266.55 kHz; pclk: 2089.75 MHz ++Modeline "7680x4320R" 2089.75 7680 7728 7760 7840 4320 4323 4328 4443 +hsync -vsync ++ ++# 7680x4320 59.99 Hz (CVT 33.18M9) hsync: 268.22 kHz; pclk: 2892.50 MHz ++Modeline "7680x4320" 2892.50 7680 8376 9232 10784 4320 4323 4328 4471 -hsync +vsync ++ ++# 15360x8640 59.99 Hz (CVT 132.71M9-R) hsync: 533.10 kHz; pclk: 8273.75 MHz ++Modeline "15360x8640R" 8273.75 15360 15408 15440 15520 8640 8643 8648 8886 +hsync -vsync ++ ++# 15360x8640 60.00 Hz (CVT 132.71M9) hsync: 536.27 kHz; pclk: 11669.25 MHz ++Modeline "15360x8640" 11669.25 15360 16824 18560 21760 8640 8643 8648 8938 -hsync +vsync ++ ++## 16:10 modelines generated by cvt ++ ++# 1280x800 59.91 Hz (CVT 1.02MA-R) hsync: 49.31 kHz; pclk: 71.00 MHz ++Modeline "1280x800R" 71.00 1280 1328 1360 1440 800 803 809 823 +hsync -vsync ++ ++# 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz ++Modeline "1280x800" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync ++ ++# 1400x900 59.88 Hz (CVT) hsync: 55.45 kHz; pclk: 86.50 MHz ++Modeline "1400x900R" 86.50 1400 1448 1480 1560 900 903 913 926 +hsync -vsync ++ ++# 1400x900 59.96 Hz (CVT) hsync: 56.01 kHz; pclk: 103.50 MHz ++Modeline "1400x900" 103.50 1400 1480 1624 1848 900 903 913 934 -hsync +vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050R" 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 ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200R" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ ++# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz ++Modeline "1920x1200" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync ++ ++# 2560x1600 59.97 Hz (CVT 4.10MA-R) hsync: 98.71 kHz; pclk: 268.50 MHz ++Modeline "2560x1600R" 268.50 2560 2608 2640 2720 1600 1603 1609 1646 +hsync -vsync ++ ++# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz ++Modeline "2560x1600" 348.50 2560 2760 3032 3504 1600 1603 1609 1658 -hsync +vsync +diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c +index a0a94c7..c67418b 100644 +--- a/hw/xfree86/common/xf86xvmc.c ++++ b/hw/xfree86/common/xf86xvmc.c +@@ -187,6 +187,7 @@ xf86XvMCScreenInit(ScreenPtr pScreen, + } + if (!pAdapt[i].xv_adaptor) { + /* no adaptor by that name */ ++ pScreenPriv->dixinfo = FALSE; + free(pAdapt); + return FALSE; + } +diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c +index f2564d5..d96e6f2 100644 +--- a/hw/xwayland/xwayland-input.c ++++ b/hw/xwayland/xwayland-input.c +@@ -639,7 +639,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, + XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb); + + master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD); +- if (master && master->lastSlave == xwl_seat->keyboard) ++ if (master) + XkbDeviceApplyKeymap(master, xkb); + + XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE); +diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c +index 939f339..d0bdf36 100644 +--- a/hw/xwayland/xwayland.c ++++ b/hw/xwayland/xwayland.c +@@ -159,6 +159,9 @@ xwl_window_from_window(WindowPtr window) + static struct xwl_seat * + xwl_screen_get_default_seat(struct xwl_screen *xwl_screen) + { ++ if (xorg_list_is_empty(&xwl_screen->seat_list)) ++ return NULL; ++ + return container_of(xwl_screen->seat_list.prev, + struct xwl_seat, + link); +@@ -218,6 +221,10 @@ xwl_cursor_confined_to(DeviceIntPtr device, + if (!xwl_seat) + xwl_seat = xwl_screen_get_default_seat(xwl_screen); + ++ /* xwl_seat hasn't been setup yet, don't do anything just yet */ ++ if (!xwl_seat) ++ return; ++ + if (window == screen->root) { + xwl_seat_unconfine_pointer(xwl_seat); + return; +@@ -454,8 +461,7 @@ xwl_unrealize_window(WindowPtr window) + return ret; + + wl_surface_destroy(xwl_window->surface); +- if (RegionNotEmpty(DamageRegion(xwl_window->damage))) +- xorg_list_del(&xwl_window->link_damage); ++ xorg_list_del(&xwl_window->link_damage); + DamageUnregister(xwl_window->damage); + DamageDestroy(xwl_window->damage); + if (xwl_window->frame_callback) +diff --git a/os/inputthread.c b/os/inputthread.c +index 721e863..dc4eb9f 100644 +--- a/os/inputthread.c ++++ b/os/inputthread.c +@@ -497,6 +497,7 @@ InputThreadFini(void) + + /* Close the pipe to get the input thread to shut down */ + close(hotplugPipeWrite); ++ input_force_unlock(); + pthread_join(inputThreadInfo->thread, NULL); + + xorg_list_for_each_entry_safe(dev, next, &inputThreadInfo->devs, node) { +diff --git a/os/xdmcp.c b/os/xdmcp.c +index 7aeb393..d8c81fb 100644 +--- a/os/xdmcp.c ++++ b/os/xdmcp.c +@@ -486,7 +486,7 @@ XdmcpRegisterConnection(int type, const char *address, int addrlen) + IN6_IS_ADDR_V4MAPPED((const struct in6_addr *) address)) { + fromAddr = &((struct sockaddr_in *) &FromAddress)->sin_addr; + regAddr = +- &((struct sockaddr_in6 *) &address)->sin6_addr.s6_addr[12]; ++ &((struct sockaddr_in6 *) address)->sin6_addr.s6_addr[12]; + regAddrlen = sizeof(struct in_addr); + } + } +diff --git a/present/present.c b/present/present.c +index 86743c5..7d428fc 100644 +--- a/present/present.c ++++ b/present/present.c +@@ -222,13 +222,13 @@ present_vblank_notify(present_vblank_ptr vblank, CARD8 kind, CARD8 mode, uint64_ + int n; + + if (vblank->window) +- present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset, vblank->client); ++ present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset); + for (n = 0; n < vblank->num_notifies; n++) { + WindowPtr window = vblank->notifies[n].window; + CARD32 serial = vblank->notifies[n].serial; + + if (window) +- present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset, vblank->client); ++ present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset); + } + } + +@@ -788,7 +788,6 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) + int + present_pixmap(WindowPtr window, + PixmapPtr pixmap, +- ClientPtr client, + CARD32 serial, + RegionPtr valid, + RegionPtr update, +@@ -899,7 +898,6 @@ present_pixmap(WindowPtr window, + xorg_list_append(&vblank->window_list, &window_priv->vblank); + xorg_list_init(&vblank->event_queue); + +- vblank->client = client; + vblank->screen = screen; + vblank->window = window; + vblank->pixmap = pixmap; +@@ -1019,7 +1017,6 @@ present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64 + + int + present_notify_msc(WindowPtr window, +- ClientPtr client, + CARD32 serial, + uint64_t target_msc, + uint64_t divisor, +@@ -1027,7 +1024,6 @@ present_notify_msc(WindowPtr window, + { + return present_pixmap(window, + NULL, +- client, + serial, + NULL, NULL, + 0, 0, +diff --git a/present/present_event.c b/present/present_event.c +index ac6f255..c222dd5 100644 +--- a/present/present_event.c ++++ b/present/present_event.c +@@ -146,7 +146,7 @@ present_register_complete_notify(present_complete_notify_proc proc) + } + + void +-present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc, ClientPtr client) ++present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc) + { + present_window_priv_ptr window_priv = present_window_priv(window); + +@@ -167,8 +167,7 @@ present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 se + present_event_ptr event; + + for (event = window_priv->events; event; event = event->next) { +- if (event->mask & PresentCompleteNotifyMask && +- client == event->client) { ++ if (event->mask & PresentCompleteNotifyMask) { + cn.eid = event->id; + WriteEventsToClient(event->client, 1, (xEvent *) &cn); + } +diff --git a/present/present_priv.h b/present/present_priv.h +index 41c37af..dfb4bde 100644 +--- a/present/present_priv.h ++++ b/present/present_priv.h +@@ -52,7 +52,6 @@ struct present_notify { + struct present_vblank { + struct xorg_list window_list; + struct xorg_list event_queue; +- ClientPtr client; + ScreenPtr screen; + WindowPtr window; + PixmapPtr pixmap; +@@ -156,7 +155,6 @@ present_get_window_priv(WindowPtr window, Bool create); + int + present_pixmap(WindowPtr window, + PixmapPtr pixmap, +- ClientPtr client, + CARD32 serial, + RegionPtr valid, + RegionPtr update, +@@ -174,7 +172,6 @@ present_pixmap(WindowPtr window, + + int + present_notify_msc(WindowPtr window, +- ClientPtr client, + CARD32 serial, + uint64_t target_msc, + uint64_t divisor, +@@ -218,7 +215,7 @@ void + present_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling); + + void +-present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc, ClientPtr client); ++present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc); + + void + present_send_idle_notify(WindowPtr window, CARD32 serial, PixmapPtr pixmap, present_fence_ptr idle_fence); +diff --git a/present/present_request.c b/present/present_request.c +index 6997aa8..c7663fc 100644 +--- a/present/present_request.c ++++ b/present/present_request.c +@@ -135,7 +135,7 @@ proc_present_pixmap(ClientPtr client) + return ret; + } + +- ret = present_pixmap(window, pixmap, client, stuff->serial, valid, update, ++ ret = present_pixmap(window, pixmap, stuff->serial, valid, update, + stuff->x_off, stuff->y_off, target_crtc, + wait_fence, idle_fence, stuff->options, + stuff->target_msc, stuff->divisor, stuff->remainder, notifies, nnotifies); +@@ -171,7 +171,7 @@ proc_present_notify_msc(ClientPtr client) + } + } + +- return present_notify_msc(window, client, stuff->serial, ++ return present_notify_msc(window, stuff->serial, + stuff->target_msc, stuff->divisor, stuff->remainder); + } + +diff --git a/randr/rrscreen.c b/randr/rrscreen.c +index 0c70b28..d059ce7 100644 +--- a/randr/rrscreen.c ++++ b/randr/rrscreen.c +@@ -272,7 +272,7 @@ ProcRRSetScreenSize(ClientPtr client) + int source_height = mode->mode.height; + Rotation rotation = crtc->rotation; + +- if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270) { ++ if (rotation & (RR_Rotate_90 | RR_Rotate_270)) { + source_width = mode->mode.height; + source_height = mode->mode.width; + } +diff --git a/render/animcur.c b/render/animcur.c +index 52e6b8b..e585a8f 100644 +--- a/render/animcur.c ++++ b/render/animcur.c +@@ -55,6 +55,7 @@ typedef struct _AnimCurElt { + typedef struct _AnimCur { + int nelt; /* number of elements in the elts array */ + AnimCurElt *elts; /* actually allocated right after the structure */ ++ OsTimerPtr timer; + } AnimCurRec, *AnimCurPtr; + + typedef struct _AnimScrPriv { +@@ -65,8 +66,6 @@ typedef struct _AnimScrPriv { + RealizeCursorProcPtr RealizeCursor; + UnrealizeCursorProcPtr UnrealizeCursor; + RecolorCursorProcPtr RecolorCursor; +- OsTimerPtr timer; +- Bool timer_set; + } AnimCurScreenRec, *AnimCurScreenPtr; + + static unsigned char empty[4]; +@@ -77,12 +76,9 @@ static CursorBits animCursorBits = { + + static DevPrivateKeyRec AnimCurScreenPrivateKeyRec; + +-#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec) +- + #define IsAnimCur(c) ((c) && ((c)->bits == &animCursorBits)) + #define GetAnimCur(c) ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE)))) +-#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey)) +-#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p) ++#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec)) + + #define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func) + #define Unwrap(as,s,elt) ((s)->elt = (as)->elt) +@@ -101,9 +97,7 @@ AnimCurCloseScreen(ScreenPtr pScreen) + Unwrap(as, pScreen, RealizeCursor); + Unwrap(as, pScreen, UnrealizeCursor); + Unwrap(as, pScreen, RecolorCursor); +- SetAnimCurScreen(pScreen, 0); + ret = (*pScreen->CloseScreen) (pScreen); +- free(as); + return ret; + } + +@@ -135,57 +129,43 @@ AnimCurCursorLimits(DeviceIntPtr pDev, + static CARD32 + AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg) + { +- ScreenPtr pScreen = arg; ++ DeviceIntPtr dev = arg; ++ ScreenPtr pScreen = dev->spriteInfo->anim.pScreen; + AnimCurScreenPtr as = GetAnimCurScreen(pScreen); +- DeviceIntPtr dev; +- Bool activeDevice = FALSE; +- CARD32 soonest = ~0; /* earliest time to wakeup again */ +- +- for (dev = inputInfo.devices; dev; dev = dev->next) { +- if (IsPointerDevice(dev) && pScreen == dev->spriteInfo->anim.pScreen) { +- if (!activeDevice) +- activeDevice = TRUE; +- +- if ((INT32) (now - dev->spriteInfo->anim.time) >= 0) { +- AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor); +- int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt; +- DisplayCursorProcPtr DisplayCursor; +- +- /* +- * Not a simple Unwrap/Wrap as this +- * isn't called along the DisplayCursor +- * wrapper chain. +- */ +- DisplayCursor = pScreen->DisplayCursor; +- pScreen->DisplayCursor = as->DisplayCursor; +- (void) (*pScreen->DisplayCursor) (dev, +- pScreen, +- ac->elts[elt].pCursor); +- as->DisplayCursor = pScreen->DisplayCursor; +- pScreen->DisplayCursor = DisplayCursor; +- +- dev->spriteInfo->anim.elt = elt; +- dev->spriteInfo->anim.time = now + ac->elts[elt].delay; +- } + +- if (soonest > dev->spriteInfo->anim.time) +- soonest = dev->spriteInfo->anim.time; +- } +- } ++ AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor); ++ int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt; ++ DisplayCursorProcPtr DisplayCursor = pScreen->DisplayCursor; + +- if (activeDevice) +- TimerSet(as->timer, TimerAbsolute, soonest, AnimCurTimerNotify, pScreen); +- else +- as->timer_set = FALSE; ++ /* ++ * Not a simple Unwrap/Wrap as this isn't called along the DisplayCursor ++ * wrapper chain. ++ */ ++ pScreen->DisplayCursor = as->DisplayCursor; ++ (void) (*pScreen->DisplayCursor) (dev, pScreen, ac->elts[elt].pCursor); ++ as->DisplayCursor = pScreen->DisplayCursor; ++ pScreen->DisplayCursor = DisplayCursor; ++ ++ dev->spriteInfo->anim.elt = elt; ++ dev->spriteInfo->anim.time = now + ac->elts[elt].delay; + +- return 0; ++ return ac->elts[elt].delay; ++} ++ ++static void ++AnimCurCancelTimer(DeviceIntPtr pDev) ++{ ++ CursorPtr cur = pDev->spriteInfo->anim.pCursor; ++ ++ if (IsAnimCur(cur)) ++ TimerCancel(GetAnimCur(cur)->timer); + } + + static Bool + AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + { + AnimCurScreenPtr as = GetAnimCurScreen(pScreen); +- Bool ret; ++ Bool ret = TRUE; + + if (IsFloating(pDev)) + return FALSE; +@@ -195,8 +175,10 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + if (pCursor != pDev->spriteInfo->anim.pCursor) { + AnimCurPtr ac = GetAnimCur(pCursor); + +- ret = (*pScreen->DisplayCursor) +- (pDev, pScreen, ac->elts[0].pCursor); ++ AnimCurCancelTimer(pDev); ++ ret = (*pScreen->DisplayCursor) (pDev, pScreen, ++ ac->elts[0].pCursor); ++ + if (ret) { + pDev->spriteInfo->anim.elt = 0; + pDev->spriteInfo->anim.time = +@@ -204,17 +186,13 @@ AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor) + pDev->spriteInfo->anim.pCursor = pCursor; + pDev->spriteInfo->anim.pScreen = pScreen; + +- if (!as->timer_set) { +- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time, +- AnimCurTimerNotify, pScreen); +- as->timer_set = TRUE; +- } ++ ac->timer = TimerSet(ac->timer, 0, ac->elts[0].delay, ++ AnimCurTimerNotify, pDev); + } + } +- else +- ret = TRUE; + } + else { ++ AnimCurCancelTimer(pDev); + pDev->spriteInfo->anim.pCursor = 0; + pDev->spriteInfo->anim.pScreen = 0; + ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor); +@@ -233,12 +211,6 @@ AnimCurSetCursorPosition(DeviceIntPtr pDev, + Unwrap(as, pScreen, SetCursorPosition); + if (pDev->spriteInfo->anim.pCursor) { + pDev->spriteInfo->anim.pScreen = pScreen; +- +- if (!as->timer_set) { +- TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time, +- AnimCurTimerNotify, pScreen); +- as->timer_set = TRUE; +- } + } + ret = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent); + Wrap(as, pScreen, SetCursorPosition, AnimCurSetCursorPosition); +@@ -308,18 +280,11 @@ AnimCurInit(ScreenPtr pScreen) + { + AnimCurScreenPtr as; + +- if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0)) ++ if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, ++ sizeof(AnimCurScreenRec))) + return FALSE; + +- as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec)); +- if (!as) +- return FALSE; +- as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen); +- if (!as->timer) { +- free(as); +- return FALSE; +- } +- as->timer_set = FALSE; ++ as = GetAnimCurScreen(pScreen); + + Wrap(as, pScreen, CloseScreen, AnimCurCloseScreen); + +@@ -329,7 +294,6 @@ AnimCurInit(ScreenPtr pScreen) + Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor); + Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor); + Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor); +- SetAnimCurScreen(pScreen, as); + return TRUE; + } + +@@ -368,10 +332,14 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor, + + pCursor->id = cid; + ++ ac = GetAnimCur(pCursor); ++ ac->timer = TimerSet(NULL, 0, 0, AnimCurTimerNotify, NULL); ++ + /* security creation/labeling check */ + rc = XaceHook(XACE_RESOURCE_ACCESS, client, cid, RT_CURSOR, pCursor, + RT_NONE, NULL, DixCreateAccess); + if (rc != Success) { ++ TimerFree(ac->timer); + dixFiniPrivates(pCursor, PRIVATE_CURSOR); + free(pCursor); + return rc; +@@ -381,7 +349,6 @@ AnimCursorCreate(CursorPtr *cursors, CARD32 *deltas, int ncursor, + * Fill in the AnimCurRec + */ + animCursorBits.refcnt++; +- ac = GetAnimCur(pCursor); + ac->nelt = ncursor; + ac->elts = (AnimCurElt *) (ac + 1); + --- xorg-server-1.19.6.orig/debian/patches/sync-i965-pciids.diff +++ xorg-server-1.19.6/debian/patches/sync-i965-pciids.diff @@ -0,0 +1,44 @@ +--- a/hw/xfree86/dri2/pci_ids/i965_pci_ids.h ++++ b/hw/xfree86/dri2/pci_ids/i965_pci_ids.h +@@ -163,6 +163,8 @@ CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabyl + CHIPSET(0x5926, kbl_gt3, "Intel(R) Iris Plus Graphics 640 (Kaby Lake GT3e)") + CHIPSET(0x5927, kbl_gt3, "Intel(R) Iris Plus Graphics 650 (Kaby Lake GT3e)") + CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4") ++CHIPSET(0x591C, kbl_gt2, "Intel(R) Amber Lake GT2") ++CHIPSET(0x87C0, kbl_gt2, "Intel(R) Amber Lake GT2") + CHIPSET(0x3184, glk, "Intel(R) UHD Graphics 605 (Geminilake)") + CHIPSET(0x3185, glk_2x6, "Intel(R) UHD Graphics 600 (Geminilake 2x6)") + CHIPSET(0x3E90, cfl_gt1, "Intel(R) HD Graphics (Coffeelake 2x6 GT1)") +@@ -173,6 +175,7 @@ CHIPSET(0x3EA4, cfl_gt1, "Intel(R) HD Gr + CHIPSET(0x3E91, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") + CHIPSET(0x3E92, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") + CHIPSET(0x3E96, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") ++CHIPSET(0x3E98, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") + CHIPSET(0x3E9A, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") + CHIPSET(0x3E9B, cfl_gt2, "Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)") + CHIPSET(0x3E94, cfl_gt2, "Intel(R) HD Graphics (Coffeelake 3x8 GT2)") +@@ -184,6 +187,24 @@ CHIPSET(0x3EA5, cfl_gt3, "Intel(R) HD Gr + CHIPSET(0x3EA6, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x3EA7, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") + CHIPSET(0x3EA8, cfl_gt3, "Intel(R) HD Graphics (Coffeelake 3x8 GT3)") ++CHIPSET(0x9B21, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BA0, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BA2, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BA4, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BA5, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BA8, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BAA, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BAB, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9BAC, cfl_gt1, "Intel(R) HD Graphics (Comet Lake 2x6 GT1)") ++CHIPSET(0x9B41, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BC0, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BC2, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BC4, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BC5, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BC8, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BCA, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BCB, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") ++CHIPSET(0x9BCC, cfl_gt2, "Intel(R) HD Graphics (Comet Lake 3x8 GT2)") + CHIPSET(0x5A49, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") + CHIPSET(0x5A4A, cnl_2x8, "Intel(R) HD Graphics (Cannonlake 2x8 GT0.5)") + CHIPSET(0x5A41, cnl_3x8, "Intel(R) HD Graphics (Cannonlake 3x8 GT1)") --- xorg-server-1.19.6.orig/debian/patches/xf86-ignore-conflicting-rr-caps.patch +++ xorg-server-1.19.6/debian/patches/xf86-ignore-conflicting-rr-caps.patch @@ -0,0 +1,24 @@ +Description: Only set RR caps that are appropriate to main/gpu screen. +Author: Maarten Lankhorst +Bug-Ubuntu: https://launchpad.net/bugs/1277014 + +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -1671,10 +1671,16 @@ xf86RandR12CreateObjects12(ScreenPtr pSc + } + + 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; --- xorg-server-1.19.6.orig/debian/patches/xfree86-no-xv-for-gpuscreens.patch +++ xorg-server-1.19.6/debian/patches/xfree86-no-xv-for-gpuscreens.patch @@ -0,0 +1,35 @@ +Description: Do not bother registering xv/xvmc on gpu screens. +Author: Maarten Lankhorst + +--- a/hw/xfree86/common/xf86xv.c ++++ b/hw/xfree86/common/xf86xv.c +@@ -230,7 +230,7 @@ xf86XVScreenInit(ScreenPtr pScreen, XF86 + ScrnInfoPtr pScrn; + XF86XVScreenPtr ScreenPriv; + +- if (num <= 0 || noXvExtension) ++ if (num <= 0 || noXvExtension || pScreen->isGPU) + return FALSE; + + if (Success != XvScreenInit(pScreen)) +--- 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 = xallocarray(num_adaptors, sizeof(XvMCAdaptorRec)))) --- xorg-server-1.19.6.orig/debian/patches/xi2-resize-touch.patch +++ xorg-server-1.19.6/debian/patches/xi2-resize-touch.patch @@ -0,0 +1,33 @@ +Description: Resize touch event history if the array is filled up. +Author: Maarten Lankhorst + +--- a/dix/touch.c ++++ b/dix/touch.c +@@ -430,11 +430,25 @@ TouchEventHistoryPush(TouchPointInfoPtr + 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 %zu overflowing for touch %u\n", ++ ErrorF("source device %d: history size %zu overflowing for touch %u\n", + ti->sourceid, ti->history_size, ti->client_id); + } + } --- xorg-server-1.19.6.orig/debian/patches/xmir.patch +++ xorg-server-1.19.6/debian/patches/xmir.patch @@ -0,0 +1,8285 @@ +From 4d62680bb8961651be15732cc815bf8cff2535ef Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Fri, 29 Apr 2016 14:57:53 +0200 +Subject: [PATCH xserver 1/3] XMir DDX + +Contributions from: + Maarten Lankhorst + Christopher James Halse Rogers + Robert Ancell + Andreas Pokorny + Daniel van Vugt + Chris Townsend +--- + configure.ac | 25 + hw/Makefile.am | 9 + hw/xmir/.gitignore | 1 + hw/xmir/Makefile.am | 59 + + hw/xmir/dri2/Makefile.am | 14 + hw/xmir/dri2/dri2.c | 1398 +++++++++++++++++++++++++++++++++ + hw/xmir/dri2/dri2.h | 364 ++++++++ + hw/xmir/dri2/dri2ext.c | 683 ++++++++++++++++ + hw/xmir/dri2/dri2int.h | 26 + hw/xmir/xmir-cursor.c | 225 +++++ + hw/xmir/xmir-cvt.c | 304 +++++++ + hw/xmir/xmir-dri2.c | 564 +++++++++++++ + hw/xmir/xmir-glamor.c | 1180 ++++++++++++++++++++++++++++ + hw/xmir/xmir-input.c | 650 +++++++++++++++ + hw/xmir/xmir-output.c | 501 ++++++++++++ + hw/xmir/xmir-thread-proxy.c | 110 ++ + hw/xmir/xmir.c | 1818 ++++++++++++++++++++++++++++++++++++++++++++ + hw/xmir/xmir.h | 234 +++++ + 18 files changed, 8163 insertions(+), 2 deletions(-) + create mode 100644 hw/xmir/.gitignore + create mode 100644 hw/xmir/Makefile.am + create mode 100644 hw/xmir/dri2/Makefile.am + create mode 100644 hw/xmir/dri2/dri2.c + create mode 100644 hw/xmir/dri2/dri2.h + create mode 100644 hw/xmir/dri2/dri2ext.c + create mode 100644 hw/xmir/dri2/dri2int.h + create mode 100644 hw/xmir/xmir-cursor.c + create mode 100644 hw/xmir/xmir-cvt.c + create mode 100644 hw/xmir/xmir-dri2.c + create mode 100644 hw/xmir/xmir-glamor.c + create mode 100644 hw/xmir/xmir-input.c + create mode 100644 hw/xmir/xmir-output.c + create mode 100644 hw/xmir/xmir-thread-proxy.c + create mode 100644 hw/xmir/xmir.c + create mode 100644 hw/xmir/xmir.h + +--- a/configure.ac ++++ b/configure.ac +@@ -658,6 +658,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_ST + AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) + AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) + AC_ARG_ENABLE(xwayland, AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto]) ++AC_ARG_ENABLE(xmir, AS_HELP_STRING([--enable-xmir], [Build Xmir server (default: auto)]), [XMIR=$enableval], [XMIR=auto]) + AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) + AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) + AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: auto)]), [GLAMOR=$enableval], [GLAMOR=auto]) +@@ -776,6 +777,7 @@ case $host_os in + XVFB=no + XNEST=no + XWAYLAND=no ++ XMIR=no + + COMPOSITE=no + DGA=no +@@ -2557,6 +2559,27 @@ if test "x$XWAYLAND" = xyes; then + AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`) + fi + ++dnl Xmir DDX ++ ++PKG_CHECK_MODULES(XMIRMODULES, [mirclient >= 0.13.1 mir-client-platform-mesa libdrm epoxy], [have_xmir=yes], [have_xmir=no]) ++AC_MSG_CHECKING([whether to build Xmir DDX]) ++if test "x$XMIR" = xauto; then ++ XMIR="$have_xmir" ++fi ++AC_MSG_RESULT([$XMIR]) ++AM_CONDITIONAL(XMIR, [test "x$XMIR" = xyes]) ++ ++if test "x$XMIR" = xyes; then ++ if test "x$have_xmir" = xno; then ++ AC_MSG_ERROR([Xmir build explicitly requested, but required modules not found.]) ++ fi ++ ++ XMIR_LIBS="$FB_LIB $FIXES_LIB $MI_LIB $XEXT_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB $DIX_LIB $OS_LIB" ++ XMIR_SYS_LIBS="$XMIRMODULES_LIBS $GLX_SYS_LIBS" ++ AC_SUBST([XMIR_LIBS]) ++ AC_SUBST([XMIR_SYS_LIBS]) ++fi ++ + + dnl and the rest of these are generic, so they're in config.h + dnl +@@ -2706,6 +2729,8 @@ hw/kdrive/fbdev/Makefile + hw/kdrive/linux/Makefile + hw/kdrive/src/Makefile + hw/xwayland/Makefile ++hw/xmir/Makefile ++hw/xmir/dri2/Makefile + test/Makefile + test/xi1/Makefile + test/xi2/Makefile +--- a/hw/Makefile.am ++++ b/hw/Makefile.am +@@ -30,6 +30,10 @@ if XWAYLAND + XWAYLAND_SUBDIRS = xwayland + endif + ++if XMIR ++XMIR_SUBDIRS = xmir ++endif ++ + SUBDIRS = \ + $(XORG_SUBDIRS) \ + $(XWIN_SUBDIRS) \ +@@ -38,9 +42,10 @@ SUBDIRS = \ + $(DMX_SUBDIRS) \ + $(KDRIVE_SUBDIRS) \ + $(XQUARTZ_SUBDIRS) \ +- $(XWAYLAND_SUBDIRS) ++ $(XWAYLAND_SUBDIRS) \ ++ $(XMIR_SUBDIRS) + +-DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland ++DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland xmir + + relink: + $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done +--- /dev/null ++++ b/hw/xmir/.gitignore +@@ -0,0 +1 @@ ++Xmir +--- /dev/null ++++ b/hw/xmir/Makefile.am +@@ -0,0 +1,59 @@ ++bin_PROGRAMS = Xmir ++ ++if DRI2 ++SUBDIRS = dri2 ++endif ++ ++Xmir_CFLAGS = \ ++ -I$(top_srcdir)/glamor \ ++ -I$(srcdir)/dri2 \ ++ -I$(top_srcdir)/glx \ ++ -I$(top_srcdir)/hw/xfree86/common \ ++ -DHAVE_DIX_CONFIG_H \ ++ $(XMIRMODULES_CFLAGS) \ ++ $(DIX_CFLAGS) \ ++ $(GLAMOR_CFLAGS) \ ++ $(GBM_CFLAGS) ++ ++Xmir_SOURCES = \ ++ xmir.c \ ++ xmir-cursor.c \ ++ xmir-input.c \ ++ xmir-output.c \ ++ xmir-cvt.c \ ++ xmir-thread-proxy.c \ ++ xmir.h \ ++ $(top_srcdir)/Xi/stubs.c \ ++ $(top_srcdir)/mi/miinitext.c ++ ++Xmir_LDADD = \ ++ $(glamor_lib) \ ++ $(glxdri_lib) \ ++ $(XMIR_LIBS) \ ++ $(XMIR_SYS_LIBS) \ ++ $(XSERVER_SYS_LIBS) ++Xmir_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG) ++ ++if GLAMOR_EGL ++Xmir_SOURCES += xmir-glamor.c ++ ++glamor_lib = $(top_builddir)/glamor/libglamor.la ++ ++if DRI2 ++Xmir_SOURCES += xmir-dri2.c ++endif ++ ++Xmir_LDADD += $(GLAMOR_LIBS) $(GBM_LIBS) -lEGL -lGL ++endif ++ ++if DRI2 ++Xmir_LDADD += dri2/libdri2.la ++endif ++ ++glxdri_lib = $(top_builddir)/glx/libglxdri.la ++if NO_UNDEFINED ++glxdri_lib += $(LIBDRM_LIBS) $(PIXMAN_LIBS) ++endif ++ ++relink: ++ $(AM_V_at)rm -f Xmir$(EXEEXT) && $(MAKE) Xmir$(EXEEXT) +--- /dev/null ++++ b/hw/xmir/dri2/Makefile.am +@@ -0,0 +1,14 @@ ++noinst_LTLIBRARIES = libdri2.la ++ ++AM_CFLAGS = \ ++ -DHAVE_DIX_CONFIG_H \ ++ -I$(top_srcdir)/hw/xmir \ ++ $(DIX_CFLAGS) \ ++ $(XMIRMODULES_CFLAGS) ++ ++libdri2_la_SOURCES = \ ++ dri2.c \ ++ dri2.h \ ++ dri2ext.c \ ++ dri2int.h ++ +--- /dev/null ++++ b/hw/xmir/dri2/dri2.c +@@ -0,0 +1,1398 @@ ++/* ++ * Copyright © 2007, 2008 Red Hat, 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: ++ * Kristian Høgsberg (krh@redhat.com) ++ */ ++ ++#include ++ ++#include ++#include "list.h" ++#include "scrnintstr.h" ++#include "windowstr.h" ++#include "dixstruct.h" ++#include "dri2.h" ++#include "dri2int.h" ++#include "damage.h" ++ ++CARD8 dri2_major; /* version of DRI2 supported by DDX */ ++CARD8 dri2_minor; ++ ++static DevPrivateKeyRec dri2ScreenPrivateKeyRec; ++ ++#define dri2ScreenPrivateKey (&dri2ScreenPrivateKeyRec) ++ ++static DevPrivateKeyRec dri2WindowPrivateKeyRec; ++ ++#define dri2WindowPrivateKey (&dri2WindowPrivateKeyRec) ++ ++static DevPrivateKeyRec dri2PixmapPrivateKeyRec; ++ ++#define dri2PixmapPrivateKey (&dri2PixmapPrivateKeyRec) ++ ++static RESTYPE dri2DrawableRes; ++ ++typedef struct _DRI2Screen *DRI2ScreenPtr; ++ ++typedef struct _DRI2Drawable { ++ DRI2ScreenPtr dri2_screen; ++ DrawablePtr drawable; ++ struct xorg_list reference_list; ++ int width; ++ int height; ++ DRI2BufferPtr *buffers; ++ int bufferCount; ++ unsigned int swapsPending; ++ ClientPtr blockedClient; ++ Bool blockedOnMsc; ++ int swap_interval; ++ CARD64 swap_count; ++ int64_t target_sbc; /* -1 means no SBC wait outstanding */ ++ CARD64 last_swap_target; /* most recently queued swap target */ ++ CARD64 last_swap_msc; /* msc at completion of most recent swap */ ++ CARD64 last_swap_ust; /* ust at completion of most recent swap */ ++ int swap_limit; /* for N-buffering */ ++ Bool needInvalidate; ++} DRI2DrawableRec, *DRI2DrawablePtr; ++ ++typedef struct _DRI2Screen { ++ ScreenPtr screen; ++ int refcnt; ++ unsigned int numDrivers; ++ const char **driverNames; ++ const char *deviceName; ++ int fd; ++ unsigned int lastSequence; ++ ++ DRI2CreateBufferProcPtr CreateBuffer; ++ DRI2DestroyBufferProcPtr DestroyBuffer; ++ DRI2CopyRegionProcPtr CopyRegion; ++ DRI2ScheduleSwapProcPtr ScheduleSwap; ++ DRI2GetMSCProcPtr GetMSC; ++ DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC; ++ DRI2AuthMagic2ProcPtr AuthMagic; ++ DRI2AuthMagicProcPtr LegacyAuthMagic; ++ DRI2ReuseBufferNotifyProcPtr ReuseBufferNotify; ++ DRI2SwapLimitValidateProcPtr SwapLimitValidate; ++ DRI2GetParamProcPtr GetParam; ++ ++ ConfigNotifyProcPtr ConfigNotify; ++ SetWindowPixmapProcPtr SetWindowPixmap; ++ DRI2CreateBuffer2ProcPtr CreateBuffer2; ++ DRI2DestroyBuffer2ProcPtr DestroyBuffer2; ++ DRI2CopyRegion2ProcPtr CopyRegion2; ++} DRI2ScreenRec; ++ ++static void ++destroy_buffer(DrawablePtr pDraw, DRI2BufferPtr buffer); ++ ++static DRI2ScreenPtr ++DRI2GetScreen(ScreenPtr pScreen) ++{ ++ return dixLookupPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey); ++} ++ ++static DRI2DrawablePtr ++DRI2GetDrawable(DrawablePtr pDraw) ++{ ++ WindowPtr pWin; ++ PixmapPtr pPixmap; ++ ++ switch (pDraw->type) { ++ case DRAWABLE_WINDOW: ++ pWin = (WindowPtr) pDraw; ++ return dixLookupPrivate(&pWin->devPrivates, dri2WindowPrivateKey); ++ case DRAWABLE_PIXMAP: ++ pPixmap = (PixmapPtr) pDraw; ++ return dixLookupPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey); ++ default: ++ return NULL; ++ } ++} ++ ++static DRI2DrawablePtr ++DRI2AllocateDrawable(DrawablePtr pDraw) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); ++ DRI2DrawablePtr pPriv; ++ CARD64 ust; ++ WindowPtr pWin; ++ PixmapPtr pPixmap; ++ ++ pPriv = malloc(sizeof *pPriv); ++ if (pPriv == NULL) ++ return NULL; ++ ++ pPriv->dri2_screen = ds; ++ pPriv->drawable = pDraw; ++ pPriv->width = pDraw->width; ++ pPriv->height = pDraw->height; ++ pPriv->buffers = NULL; ++ pPriv->bufferCount = 0; ++ pPriv->swapsPending = 0; ++ pPriv->blockedClient = NULL; ++ pPriv->blockedOnMsc = FALSE; ++ pPriv->swap_count = 0; ++ pPriv->target_sbc = -1; ++ pPriv->swap_interval = 1; ++ /* Initialize last swap target from DDX if possible */ ++ if (!ds->GetMSC || !(*ds->GetMSC) (pDraw, &ust, &pPriv->last_swap_target)) ++ pPriv->last_swap_target = 0; ++ ++ pPriv->swap_limit = 1; /* default to double buffering */ ++ pPriv->last_swap_msc = 0; ++ pPriv->last_swap_ust = 0; ++ xorg_list_init(&pPriv->reference_list); ++ pPriv->needInvalidate = FALSE; ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ pWin = (WindowPtr) pDraw; ++ dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, pPriv); ++ } ++ else { ++ pPixmap = (PixmapPtr) pDraw; ++ dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, pPriv); ++ } ++ ++ return pPriv; ++} ++ ++Bool ++DRI2SwapLimit(DrawablePtr pDraw, int swap_limit) ++{ ++ DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); ++ DRI2ScreenPtr ds; ++ ++ if (!pPriv) ++ return FALSE; ++ ++ ds = pPriv->dri2_screen; ++ ++ if (!ds->SwapLimitValidate || !ds->SwapLimitValidate(pDraw, swap_limit)) ++ return FALSE; ++ ++ pPriv->swap_limit = swap_limit; ++ ++ /* Check throttling */ ++ if (pPriv->swapsPending >= pPriv->swap_limit) ++ return TRUE; ++ ++ if (pPriv->target_sbc == -1 && !pPriv->blockedOnMsc) { ++ if (pPriv->blockedClient) { ++ AttendClient(pPriv->blockedClient); ++ pPriv->blockedClient = NULL; ++ } ++ } ++ ++ return TRUE; ++} ++ ++typedef struct DRI2DrawableRefRec { ++ XID id; ++ XID dri2_id; ++ DRI2InvalidateProcPtr invalidate; ++ void *priv; ++ struct xorg_list link; ++} DRI2DrawableRefRec, *DRI2DrawableRefPtr; ++ ++static DRI2DrawableRefPtr ++DRI2LookupDrawableRef(DRI2DrawablePtr pPriv, XID id) ++{ ++ DRI2DrawableRefPtr ref; ++ ++ xorg_list_for_each_entry(ref, &pPriv->reference_list, link) { ++ if (ref->id == id) ++ return ref; ++ } ++ ++ return NULL; ++} ++ ++static int ++DRI2AddDrawableRef(DRI2DrawablePtr pPriv, XID id, XID dri2_id, ++ DRI2InvalidateProcPtr invalidate, void *priv) ++{ ++ DRI2DrawableRefPtr ref; ++ ++ ref = malloc(sizeof *ref); ++ if (ref == NULL) ++ return BadAlloc; ++ ++ if (!AddResource(dri2_id, dri2DrawableRes, pPriv)) { ++ free(ref); ++ return BadAlloc; ++ } ++ if (!DRI2LookupDrawableRef(pPriv, id)) ++ if (!AddResource(id, dri2DrawableRes, pPriv)) { ++ FreeResourceByType(dri2_id, dri2DrawableRes, TRUE); ++ free(ref); ++ return BadAlloc; ++ } ++ ++ ref->id = id; ++ ref->dri2_id = dri2_id; ++ ref->invalidate = invalidate; ++ ref->priv = priv; ++ xorg_list_add(&ref->link, &pPriv->reference_list); ++ ++ return Success; ++} ++ ++int ++DRI2CreateDrawable2(ClientPtr client, DrawablePtr pDraw, XID id, ++ DRI2InvalidateProcPtr invalidate, void *priv, ++ XID *dri2_id_out) ++{ ++ DRI2DrawablePtr pPriv; ++ XID dri2_id; ++ int rc; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ pPriv = DRI2AllocateDrawable(pDraw); ++ if (pPriv == NULL) ++ return BadAlloc; ++ ++ dri2_id = FakeClientID(client->index); ++ rc = DRI2AddDrawableRef(pPriv, id, dri2_id, invalidate, priv); ++ if (rc != Success) ++ return rc; ++ ++ if (dri2_id_out) ++ *dri2_id_out = dri2_id; ++ ++ return Success; ++} ++ ++int ++DRI2CreateDrawable(ClientPtr client, DrawablePtr pDraw, XID id, ++ DRI2InvalidateProcPtr invalidate, void *priv) ++{ ++ return DRI2CreateDrawable2(client, pDraw, id, invalidate, priv, NULL); ++} ++ ++static int ++DRI2DrawableGone(void *p, XID id) ++{ ++ DRI2DrawablePtr pPriv = p; ++ DRI2DrawableRefPtr ref, next; ++ WindowPtr pWin; ++ PixmapPtr pPixmap; ++ DrawablePtr pDraw; ++ int i; ++ ++ xorg_list_for_each_entry_safe(ref, next, &pPriv->reference_list, link) { ++ if (ref->dri2_id == id) { ++ xorg_list_del(&ref->link); ++ /* If this was the last ref under this X drawable XID, ++ * unregister the X drawable resource. */ ++ if (!DRI2LookupDrawableRef(pPriv, ref->id)) ++ FreeResourceByType(ref->id, dri2DrawableRes, TRUE); ++ free(ref); ++ break; ++ } ++ ++ if (ref->id == id) { ++ xorg_list_del(&ref->link); ++ FreeResourceByType(ref->dri2_id, dri2DrawableRes, TRUE); ++ free(ref); ++ } ++ } ++ ++ if (!xorg_list_is_empty(&pPriv->reference_list)) ++ return Success; ++ ++ pDraw = pPriv->drawable; ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ pWin = (WindowPtr) pDraw; ++ dixSetPrivate(&pWin->devPrivates, dri2WindowPrivateKey, NULL); ++ } ++ else { ++ pPixmap = (PixmapPtr) pDraw; ++ dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL); ++ } ++ ++ if (pPriv->buffers != NULL) { ++ for (i = 0; i < pPriv->bufferCount; i++) ++ destroy_buffer(pDraw, pPriv->buffers[i]); ++ ++ free(pPriv->buffers); ++ } ++ ++ free(pPriv); ++ ++ return Success; ++} ++ ++static DRI2BufferPtr ++create_buffer(DRI2ScreenPtr ds, DrawablePtr pDraw, ++ unsigned int attachment, unsigned int format) ++{ ++ DRI2BufferPtr buffer; ++ if (ds->CreateBuffer2) ++ buffer = (*ds->CreateBuffer2)(pDraw->pScreen, pDraw, attachment, format); ++ else ++ buffer = (*ds->CreateBuffer)(pDraw, attachment, format); ++ return buffer; ++} ++ ++static void ++destroy_buffer(DrawablePtr pDraw, DRI2BufferPtr buffer) ++{ ++ ScreenPtr pScreen = pDraw->pScreen; ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ if (ds->DestroyBuffer2) ++ (*ds->DestroyBuffer2)(pScreen, pDraw, buffer); ++ else ++ (*ds->DestroyBuffer)(pDraw, buffer); ++} ++ ++static int ++find_attachment(DRI2DrawablePtr pPriv, unsigned attachment) ++{ ++ int i; ++ ++ if (pPriv->buffers == NULL) { ++ return -1; ++ } ++ ++ for (i = 0; i < pPriv->bufferCount; i++) { ++ if ((pPriv->buffers[i] != NULL) ++ && (pPriv->buffers[i]->attachment == attachment)) { ++ return i; ++ } ++ } ++ ++ return -1; ++} ++ ++static Bool ++allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds, ++ DRI2DrawablePtr pPriv, ++ unsigned int attachment, unsigned int format, ++ int dimensions_match, DRI2BufferPtr * buffer) ++{ ++ int old_buf = find_attachment(pPriv, attachment); ++ ++ if ((old_buf < 0) ++ || attachment == DRI2BufferFrontLeft ++ || !dimensions_match || (pPriv->buffers[old_buf]->format != format)) { ++ *buffer = create_buffer(ds, pDraw, attachment, format); ++ return TRUE; ++ ++ } ++ else { ++ *buffer = pPriv->buffers[old_buf]; ++ ++ if (ds->ReuseBufferNotify) ++ (*ds->ReuseBufferNotify) (pDraw, *buffer); ++ ++ pPriv->buffers[old_buf] = NULL; ++ return FALSE; ++ } ++} ++ ++static void ++update_dri2_drawable_buffers(DRI2DrawablePtr pPriv, DrawablePtr pDraw, ++ DRI2BufferPtr * buffers, int out_count, int *width, ++ int *height) ++{ ++ int i; ++ ++ if (pPriv->buffers != NULL) { ++ for (i = 0; i < pPriv->bufferCount; i++) { ++ if (pPriv->buffers[i] != NULL) { ++ destroy_buffer(pDraw, pPriv->buffers[i]); ++ } ++ } ++ ++ free(pPriv->buffers); ++ } ++ ++ pPriv->buffers = buffers; ++ pPriv->bufferCount = out_count; ++ pPriv->width = pDraw->width; ++ pPriv->height = pDraw->height; ++ *width = pPriv->width; ++ *height = pPriv->height; ++} ++ ++static DRI2BufferPtr * ++do_get_buffers(DrawablePtr pDraw, int *width, int *height, ++ unsigned int *attachments, int count, int *out_count, ++ int has_format) ++{ ++ DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); ++ DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); ++ DRI2BufferPtr *buffers; ++ int need_real_front = 0; ++ int need_fake_front = 0; ++ int have_fake_front = 0; ++ int front_format = 0; ++ int dimensions_match; ++ int buffers_changed = 0; ++ int i; ++ ++ if (!pPriv) { ++ *width = pDraw->width; ++ *height = pDraw->height; ++ *out_count = 0; ++ return NULL; ++ } ++ ++ dimensions_match = (pDraw->width == pPriv->width) ++ && (pDraw->height == pPriv->height); ++ ++ buffers = calloc((count + 1), sizeof(buffers[0])); ++ if (!buffers) ++ goto err_out; ++ ++ for (i = 0; i < count; i++) { ++ const unsigned attachment = *(attachments++); ++ const unsigned format = (has_format) ? *(attachments++) : 0; ++ ++ if (allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment, ++ format, dimensions_match, &buffers[i])) ++ buffers_changed = 1; ++ ++ if (buffers[i] == NULL) ++ goto err_out; ++ ++ /* If the drawable is a window and the front-buffer is requested, ++ * silently add the fake front-buffer to the list of requested ++ * attachments. The counting logic in the loop accounts for the case ++ * where the client requests both the fake and real front-buffer. ++ */ ++ if (attachment == DRI2BufferBackLeft) { ++ need_real_front++; ++ front_format = format; ++ } ++ ++ if (attachment == DRI2BufferFrontLeft) { ++ need_real_front--; ++ front_format = format; ++ ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ need_fake_front++; ++ } ++ } ++ ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ if (attachment == DRI2BufferFakeFrontLeft) { ++ need_fake_front--; ++ have_fake_front = 1; ++ } ++ } ++ } ++ ++ if (need_real_front > 0) { ++ if (allocate_or_reuse_buffer(pDraw, ds, pPriv, DRI2BufferFrontLeft, ++ front_format, dimensions_match, ++ &buffers[i])) ++ buffers_changed = 1; ++ ++ if (buffers[i] == NULL) ++ goto err_out; ++ i++; ++ } ++ ++ if (need_fake_front > 0) { ++ if (allocate_or_reuse_buffer(pDraw, ds, pPriv, DRI2BufferFakeFrontLeft, ++ front_format, dimensions_match, ++ &buffers[i])) ++ buffers_changed = 1; ++ ++ if (buffers[i] == NULL) ++ goto err_out; ++ ++ i++; ++ have_fake_front = 1; ++ } ++ ++ *out_count = i; ++ ++ update_dri2_drawable_buffers(pPriv, pDraw, buffers, *out_count, width, ++ height); ++ ++ /* If the client is getting a fake front-buffer, pre-fill it with the ++ * contents of the real front-buffer. This ensures correct operation of ++ * applications that call glXWaitX before calling glDrawBuffer. ++ */ ++ if (have_fake_front && buffers_changed) { ++ BoxRec box; ++ RegionRec region; ++ ++ box.x1 = 0; ++ box.y1 = 0; ++ box.x2 = pPriv->width; ++ box.y2 = pPriv->height; ++ RegionInit(®ion, &box, 0); ++ ++ DRI2CopyRegion(pDraw, ®ion, DRI2BufferFakeFrontLeft, ++ DRI2BufferFrontLeft); ++ } ++ ++ pPriv->needInvalidate = TRUE; ++ ++ return pPriv->buffers; ++ ++ err_out: ++ ++ *out_count = 0; ++ ++ if (buffers) { ++ for (i = 0; i < count; i++) { ++ if (buffers[i] != NULL) ++ destroy_buffer(pDraw, buffers[i]); ++ } ++ ++ free(buffers); ++ buffers = NULL; ++ } ++ ++ update_dri2_drawable_buffers(pPriv, pDraw, buffers, *out_count, width, ++ height); ++ ++ return buffers; ++} ++ ++DRI2BufferPtr * ++DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height, ++ unsigned int *attachments, int count, int *out_count) ++{ ++ return do_get_buffers(pDraw, width, height, attachments, count, ++ out_count, FALSE); ++} ++ ++DRI2BufferPtr * ++DRI2GetBuffersWithFormat(DrawablePtr pDraw, int *width, int *height, ++ unsigned int *attachments, int count, int *out_count) ++{ ++ return do_get_buffers(pDraw, width, height, attachments, count, ++ out_count, TRUE); ++} ++ ++static void ++DRI2InvalidateDrawable(DrawablePtr pDraw) ++{ ++ DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw); ++ DRI2DrawableRefPtr ref; ++ ++ if (!pPriv || !pPriv->needInvalidate) ++ return; ++ ++ pPriv->needInvalidate = FALSE; ++ ++ xorg_list_for_each_entry(ref, &pPriv->reference_list, link) ++ ref->invalidate(pDraw, ref->priv, ref->id); ++} ++ ++/* ++ * In the direct rendered case, we throttle the clients that have more ++ * than their share of outstanding swaps (and thus busy buffers) when a ++ * new GetBuffers request is received. In the AIGLX case, we allow the ++ * client to get the new buffers, but throttle when the next GLX request ++ * comes in (see __glXDRIcontextWait()). ++ */ ++Bool ++DRI2ThrottleClient(ClientPtr client, DrawablePtr pDraw) ++{ ++ DRI2DrawablePtr pPriv; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return FALSE; ++ ++ /* Throttle to swap limit */ ++ if ((pPriv->swapsPending >= pPriv->swap_limit) && !pPriv->blockedClient) { ++ ResetCurrentRequest(client); ++ client->sequence--; ++ IgnoreClient(client); ++ pPriv->blockedClient = client; ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ ++static void ++__DRI2BlockClient(ClientPtr client, DRI2DrawablePtr pPriv) ++{ ++ if (pPriv->blockedClient == NULL) { ++ IgnoreClient(client); ++ pPriv->blockedClient = client; ++ } ++} ++ ++void ++DRI2BlockClient(ClientPtr client, DrawablePtr pDraw) ++{ ++ DRI2DrawablePtr pPriv; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return; ++ ++ __DRI2BlockClient(client, pPriv); ++ pPriv->blockedOnMsc = TRUE; ++} ++ ++static inline PixmapPtr GetDrawablePixmap(DrawablePtr drawable) ++{ ++ if (drawable->type == DRAWABLE_PIXMAP) ++ return (PixmapPtr)drawable; ++ else { ++ struct _Window *pWin = (struct _Window *)drawable; ++ return drawable->pScreen->GetWindowPixmap(pWin); ++ } ++} ++ ++/* ++ * A TraverseTree callback to invalidate all windows using the same ++ * pixmap ++ */ ++static int ++DRI2InvalidateWalk(WindowPtr pWin, void *data) ++{ ++ if (pWin->drawable.pScreen->GetWindowPixmap(pWin) != data) ++ return WT_DONTWALKCHILDREN; ++ DRI2InvalidateDrawable(&pWin->drawable); ++ return WT_WALKCHILDREN; ++} ++ ++static void ++DRI2InvalidateDrawableAll(DrawablePtr pDraw) ++{ ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ WindowPtr pWin = (WindowPtr) pDraw; ++ PixmapPtr pPixmap = pDraw->pScreen->GetWindowPixmap(pWin); ++ ++ /* ++ * Find the top-most window using this pixmap ++ */ ++ while (pWin->parent && ++ pDraw->pScreen->GetWindowPixmap(pWin->parent) == pPixmap) ++ pWin = pWin->parent; ++ ++ /* ++ * Walk the sub-tree to invalidate all of the ++ * windows using the same pixmap ++ */ ++ TraverseTree(pWin, DRI2InvalidateWalk, pPixmap); ++ DRI2InvalidateDrawable(&pPixmap->drawable); ++ } ++ else ++ DRI2InvalidateDrawable(pDraw); ++} ++ ++static void dri2_copy_region(DrawablePtr pDraw, RegionPtr pRegion, ++ DRI2BufferPtr pDest, DRI2BufferPtr pSrc) ++{ ++ ScreenPtr pScreen = pDraw->pScreen; ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ ++ if (ds->CopyRegion2) ++ (*ds->CopyRegion2)(pScreen, pDraw, pRegion, pDest, pSrc); ++ else ++ (*ds->CopyRegion) (pDraw, pRegion, pDest, pSrc); ++} ++ ++int ++DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion, ++ unsigned int dest, unsigned int src) ++{ ++ DRI2DrawablePtr pPriv; ++ DRI2BufferPtr pDestBuffer, pSrcBuffer; ++ int i; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return BadDrawable; ++ ++ pDestBuffer = NULL; ++ pSrcBuffer = NULL; ++ for (i = 0; i < pPriv->bufferCount; i++) { ++ if (pPriv->buffers[i]->attachment == dest) ++ pDestBuffer = (DRI2BufferPtr) pPriv->buffers[i]; ++ if (pPriv->buffers[i]->attachment == src) ++ pSrcBuffer = (DRI2BufferPtr) pPriv->buffers[i]; ++ } ++ if (pSrcBuffer == NULL || pDestBuffer == NULL) ++ return BadValue; ++ ++ dri2_copy_region(pDraw, pRegion, pDestBuffer, pSrcBuffer); ++ ++ return Success; ++} ++ ++/* Can this drawable be page flipped? */ ++Bool ++DRI2CanFlip(DrawablePtr pDraw) ++{ ++ ScreenPtr pScreen = pDraw->pScreen; ++ WindowPtr pWin, pRoot; ++ PixmapPtr pWinPixmap, pRootPixmap; ++ ++ if (pDraw->type == DRAWABLE_PIXMAP) ++ return TRUE; ++ ++ pRoot = pScreen->root; ++ pRootPixmap = pScreen->GetWindowPixmap(pRoot); ++ ++ pWin = (WindowPtr) pDraw; ++ pWinPixmap = pScreen->GetWindowPixmap(pWin); ++ if (pRootPixmap != pWinPixmap) ++ return FALSE; ++ if (!RegionEqual(&pWin->clipList, &pRoot->winSize)) ++ return FALSE; ++ ++ /* Does the window match the pixmap exactly? */ ++ if (pDraw->x != 0 || pDraw->y != 0 || ++#ifdef COMPOSITE ++ pDraw->x != pWinPixmap->screen_x || pDraw->y != pWinPixmap->screen_y || ++#endif ++ pDraw->width != pWinPixmap->drawable.width || ++ pDraw->height != pWinPixmap->drawable.height) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* Can we do a pixmap exchange instead of a blit? */ ++Bool ++DRI2CanExchange(DrawablePtr pDraw) ++{ ++ return FALSE; ++} ++ ++void ++DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, int frame, ++ unsigned int tv_sec, unsigned int tv_usec) ++{ ++ DRI2DrawablePtr pPriv; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return; ++ ++ ProcDRI2WaitMSCReply(client, ((CARD64) tv_sec * 1000000) + tv_usec, ++ frame, pPriv->swap_count); ++ ++ if (pPriv->blockedClient) ++ AttendClient(pPriv->blockedClient); ++ ++ pPriv->blockedClient = NULL; ++ pPriv->blockedOnMsc = FALSE; ++} ++ ++static void ++DRI2WakeClient(ClientPtr client, DrawablePtr pDraw, int frame, ++ unsigned int tv_sec, unsigned int tv_usec) ++{ ++ DRI2DrawablePtr pPriv; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) { ++ ErrorF("[DRI2] %s: bad drawable\n", __func__); ++ return; ++ } ++ ++ /* ++ * Swap completed. ++ * Wake the client iff: ++ * - it was waiting on SBC ++ * - was blocked due to GLX make current ++ * - was blocked due to swap throttling ++ * - is not blocked due to an MSC wait ++ */ ++ if (pPriv->target_sbc != -1 && pPriv->target_sbc <= pPriv->swap_count) { ++ ProcDRI2WaitMSCReply(client, ((CARD64) tv_sec * 1000000) + tv_usec, ++ frame, pPriv->swap_count); ++ pPriv->target_sbc = -1; ++ ++ AttendClient(pPriv->blockedClient); ++ pPriv->blockedClient = NULL; ++ } ++ else if (pPriv->target_sbc == -1 && !pPriv->blockedOnMsc) { ++ if (pPriv->blockedClient) { ++ AttendClient(pPriv->blockedClient); ++ pPriv->blockedClient = NULL; ++ } ++ } ++} ++ ++void ++DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame, ++ unsigned int tv_sec, unsigned int tv_usec, int type, ++ DRI2SwapEventPtr swap_complete, void *swap_data) ++{ ++ DRI2DrawablePtr pPriv; ++ CARD64 ust = 0; ++ BoxRec box; ++ RegionRec region; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) { ++ ErrorF("[DRI2] %s: bad drawable\n", __func__); ++ return; ++ } ++ ++ pPriv->swapsPending--; ++ pPriv->swap_count++; ++ ++ box.x1 = 0; ++ box.y1 = 0; ++ box.x2 = pDraw->width; ++ box.y2 = pDraw->height; ++ RegionInit(®ion, &box, 0); ++ DRI2CopyRegion(pDraw, ®ion, DRI2BufferFakeFrontLeft, ++ DRI2BufferFrontLeft); ++ ++ ust = ((CARD64) tv_sec * 1000000) + tv_usec; ++ if (swap_complete) ++ swap_complete(client, swap_data, type, ust, frame, pPriv->swap_count); ++ ++ pPriv->last_swap_msc = frame; ++ pPriv->last_swap_ust = ust; ++ ++ DRI2WakeClient(client, pDraw, frame, tv_sec, tv_usec); ++} ++ ++Bool ++DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable) ++{ ++ DRI2DrawablePtr pPriv = DRI2GetDrawable(pDrawable); ++ ++ /* If we're currently waiting for a swap on this drawable, reset ++ * the request and suspend the client. We only support one ++ * blocked client per drawable. */ ++ if (pPriv && pPriv->swapsPending && pPriv->blockedClient == NULL) { ++ ResetCurrentRequest(client); ++ client->sequence--; ++ __DRI2BlockClient(client, pPriv); ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ ++ ++ ++int ++DRI2SwapBuffers(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, ++ CARD64 divisor, CARD64 remainder, CARD64 * swap_target, ++ DRI2SwapEventPtr func, void *data) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); ++ DRI2DrawablePtr pPriv; ++ DRI2BufferPtr pDestBuffer = NULL, pSrcBuffer = NULL; ++ int ret, i; ++ CARD64 ust, current_msc; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) { ++ ErrorF("[DRI2] %s: bad drawable\n", __func__); ++ return BadDrawable; ++ } ++ ++ /* According to spec, return expected swapbuffers count SBC after this swap ++ * will complete. This is ignored unless we return Success, but it must be ++ * initialized on every path where we return Success or the caller will send ++ * an uninitialized value off the stack to the client. So let's initialize ++ * it as early as possible, just to be sure. ++ */ ++ *swap_target = pPriv->swap_count + pPriv->swapsPending + 1; ++ ++ for (i = 0; i < pPriv->bufferCount; i++) { ++ if (pPriv->buffers[i]->attachment == DRI2BufferFrontLeft) ++ pDestBuffer = (DRI2BufferPtr) pPriv->buffers[i]; ++ if (pPriv->buffers[i]->attachment == DRI2BufferBackLeft) ++ pSrcBuffer = (DRI2BufferPtr) pPriv->buffers[i]; ++ } ++ if (pSrcBuffer == NULL || pDestBuffer == NULL) { ++ ErrorF("[DRI2] %s: drawable has no back or front?\n", __func__); ++ return BadDrawable; ++ } ++ ++ /* Old DDX or no swap interval, just blit */ ++ if (!ds->ScheduleSwap || !pPriv->swap_interval) { ++ BoxRec box; ++ RegionRec region; ++ ++ box.x1 = 0; ++ box.y1 = 0; ++ box.x2 = pDraw->width; ++ box.y2 = pDraw->height; ++ RegionInit(®ion, &box, 0); ++ ++ pPriv->swapsPending++; ++ ++ dri2_copy_region(pDraw, ®ion, pDestBuffer, pSrcBuffer); ++ DRI2SwapComplete(client, pDraw, target_msc, 0, 0, DRI2_BLIT_COMPLETE, ++ func, data); ++ return Success; ++ } ++ ++ /* ++ * In the simple glXSwapBuffers case, all params will be 0, and we just ++ * need to schedule a swap for the last swap target + the swap interval. ++ */ ++ if (target_msc == 0 && divisor == 0 && remainder == 0) { ++ /* If the current vblank count of the drawable's crtc is lower ++ * than the count stored in last_swap_target from a previous swap ++ * then reinitialize last_swap_target to the current crtc's msc, ++ * otherwise the swap will hang. This will happen if the drawable ++ * is moved to a crtc with a lower refresh rate, or a crtc that just ++ * got enabled. ++ */ ++ if (ds->GetMSC) { ++ if (!(*ds->GetMSC) (pDraw, &ust, ¤t_msc)) ++ pPriv->last_swap_target = 0; ++ ++ if (current_msc < pPriv->last_swap_target) ++ pPriv->last_swap_target = current_msc; ++ ++ } ++ ++ /* ++ * Swap target for this swap is last swap target + swap interval since ++ * we have to account for the current swap count, interval, and the ++ * number of pending swaps. ++ */ ++ target_msc = pPriv->last_swap_target + pPriv->swap_interval; ++ ++ } ++ ++ pPriv->swapsPending++; ++ ret = (*ds->ScheduleSwap) (client, pDraw, pDestBuffer, pSrcBuffer, ++ &target_msc, divisor, remainder, func, data); ++ if (!ret) { ++ pPriv->swapsPending--; /* didn't schedule */ ++ ErrorF("[DRI2] %s: driver failed to schedule swap\n", __func__); ++ return BadDrawable; ++ } ++ ++ pPriv->last_swap_target = target_msc; ++ ++ DRI2InvalidateDrawableAll(pDraw); ++ ++ return Success; ++} ++ ++void ++DRI2SwapInterval(DrawablePtr pDrawable, int interval) ++{ ++ DRI2DrawablePtr pPriv = DRI2GetDrawable(pDrawable); ++ ++ if (pPriv == NULL) { ++ ErrorF("[DRI2] %s: bad drawable\n", __func__); ++ return; ++ } ++ ++ /* fixme: check against arbitrary max? */ ++ pPriv->swap_interval = interval; ++} ++ ++int ++DRI2GetMSC(DrawablePtr pDraw, CARD64 * ust, CARD64 * msc, CARD64 * sbc) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); ++ DRI2DrawablePtr pPriv; ++ Bool ret; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) { ++ ErrorF("[DRI2] %s: bad drawable\n", __func__); ++ return BadDrawable; ++ } ++ ++ if (!ds->GetMSC) { ++ *ust = 0; ++ *msc = 0; ++ *sbc = pPriv->swap_count; ++ return Success; ++ } ++ ++ /* ++ * Spec needs to be updated to include unmapped or redirected ++ * drawables ++ */ ++ ++ ret = (*ds->GetMSC) (pDraw, ust, msc); ++ if (!ret) ++ return BadDrawable; ++ ++ *sbc = pPriv->swap_count; ++ ++ return Success; ++} ++ ++int ++DRI2WaitMSC(ClientPtr client, DrawablePtr pDraw, CARD64 target_msc, ++ CARD64 divisor, CARD64 remainder) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen); ++ DRI2DrawablePtr pPriv; ++ Bool ret; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return BadDrawable; ++ ++ /* Old DDX just completes immediately */ ++ if (!ds->ScheduleWaitMSC) { ++ DRI2WaitMSCComplete(client, pDraw, target_msc, 0, 0); ++ ++ return Success; ++ } ++ ++ ret = ++ (*ds->ScheduleWaitMSC) (client, pDraw, target_msc, divisor, remainder); ++ if (!ret) ++ return BadDrawable; ++ ++ return Success; ++} ++ ++int ++DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, CARD64 target_sbc) ++{ ++ DRI2DrawablePtr pPriv; ++ ++ pPriv = DRI2GetDrawable(pDraw); ++ if (pPriv == NULL) ++ return BadDrawable; ++ ++ /* target_sbc == 0 means to block until all pending swaps are ++ * finished. Recalculate target_sbc to get that behaviour. ++ */ ++ if (target_sbc == 0) ++ target_sbc = pPriv->swap_count + pPriv->swapsPending; ++ ++ /* If current swap count already >= target_sbc, reply and ++ * return immediately with (ust, msc, sbc) triplet of ++ * most recent completed swap. ++ */ ++ if (pPriv->swap_count >= target_sbc) { ++ ProcDRI2WaitMSCReply(client, pPriv->last_swap_ust, ++ pPriv->last_swap_msc, pPriv->swap_count); ++ return Success; ++ } ++ ++ pPriv->target_sbc = target_sbc; ++ __DRI2BlockClient(client, pPriv); ++ ++ return Success; ++} ++ ++Bool ++DRI2HasSwapControl(ScreenPtr pScreen) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ ++ return ds->ScheduleSwap && ds->GetMSC; ++} ++ ++Bool ++DRI2Connect(ClientPtr client, ScreenPtr pScreen, ++ unsigned int driverType, int *fd, ++ const char **driverName, const char **deviceName) ++{ ++ DRI2ScreenPtr ds; ++ uint32_t driver_id = driverType & 0xffff; ++ ++ if (!dixPrivateKeyRegistered(dri2ScreenPrivateKey) || ++ !(ds = DRI2GetScreen(pScreen))) ++ return FALSE; ++ ++ if (driver_id) ++ ErrorF("Add support for driver id when requested!\n"); ++ ++ if (driver_id >= ds->numDrivers || ++ !ds->driverNames[driver_id]) ++ return FALSE; ++ ++ *driverName = ds->driverNames[driver_id]; ++ *deviceName = ds->deviceName; ++ *fd = ds->fd; ++ ++ return TRUE; ++} ++ ++static int ++DRI2AuthMagic (ScreenPtr pScreen, uint32_t magic) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ if (ds == NULL) ++ return -EINVAL; ++ ++ return (*ds->LegacyAuthMagic) (ds->fd, magic); ++} ++ ++Bool ++DRI2Authenticate(ClientPtr client, ScreenPtr pScreen, uint32_t magic) ++{ ++ DRI2ScreenPtr ds; ++ ++ ds = DRI2GetScreen(pScreen); ++ if (ds == NULL) ++ return FALSE; ++ ++ if ((*ds->AuthMagic)(pScreen, magic)) ++ return FALSE; ++ return TRUE; ++} ++ ++static int ++DRI2ConfigNotify(WindowPtr pWin, int x, int y, int w, int h, int bw, ++ WindowPtr pSib) ++{ ++ DrawablePtr pDraw = (DrawablePtr) pWin; ++ ScreenPtr pScreen = pDraw->pScreen; ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ DRI2DrawablePtr dd = DRI2GetDrawable(pDraw); ++ int ret; ++ ++ if (ds->ConfigNotify) { ++ pScreen->ConfigNotify = ds->ConfigNotify; ++ ++ ret = (*pScreen->ConfigNotify) (pWin, x, y, w, h, bw, pSib); ++ ++ ds->ConfigNotify = pScreen->ConfigNotify; ++ pScreen->ConfigNotify = DRI2ConfigNotify; ++ if (ret) ++ return ret; ++ } ++ ++ if (!dd || (dd->width == w && dd->height == h)) ++ return Success; ++ ++ DRI2InvalidateDrawable(pDraw); ++ return Success; ++} ++ ++static void ++DRI2SetWindowPixmap(WindowPtr pWin, PixmapPtr pPix) ++{ ++ DrawablePtr pDraw = (DrawablePtr) pWin; ++ ScreenPtr pScreen = pDraw->pScreen; ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ ++ pScreen->SetWindowPixmap = ds->SetWindowPixmap; ++ (*pScreen->SetWindowPixmap) (pWin, pPix); ++ ds->SetWindowPixmap = pScreen->SetWindowPixmap; ++ pScreen->SetWindowPixmap = DRI2SetWindowPixmap; ++ ++ DRI2InvalidateDrawableAll(pDraw); ++} ++ ++Bool ++DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) ++{ ++ DRI2ScreenPtr ds; ++ ++ const char *driverTypeNames[] = { ++ "DRI", /* DRI2DriverDRI */ ++ "VDPAU", /* DRI2DriverVDPAU */ ++ }; ++ unsigned int i; ++ CARD8 cur_minor; ++ ++ if (info->version < 3) ++ return FALSE; ++ ++ if (!dixRegisterPrivateKey(&dri2ScreenPrivateKeyRec, PRIVATE_SCREEN, 0)) ++ return FALSE; ++ ++ if (!dixRegisterPrivateKey(&dri2WindowPrivateKeyRec, PRIVATE_WINDOW, 0)) ++ return FALSE; ++ ++ if (!dixRegisterPrivateKey(&dri2PixmapPrivateKeyRec, PRIVATE_PIXMAP, 0)) ++ return FALSE; ++ ++ ds = calloc(1, sizeof *ds); ++ if (!ds) ++ return FALSE; ++ ++ ds->screen = pScreen; ++ ds->fd = info->fd; ++ ds->deviceName = info->deviceName; ++ dri2_major = 1; ++ ++ ds->CreateBuffer = info->CreateBuffer; ++ ds->DestroyBuffer = info->DestroyBuffer; ++ ds->CopyRegion = info->CopyRegion; ++ ++ if (info->version >= 4) { ++ ds->ScheduleSwap = info->ScheduleSwap; ++ ds->ScheduleWaitMSC = info->ScheduleWaitMSC; ++ ds->GetMSC = info->GetMSC; ++ cur_minor = 3; ++ } ++ else { ++ cur_minor = 1; ++ } ++ ++ if (info->version >= 8) { ++ ds->AuthMagic = info->AuthMagic2; ++ } ++ if (info->version >= 5) { ++ ds->LegacyAuthMagic = info->AuthMagic; ++ } ++ ++ if (info->version >= 6) { ++ ds->ReuseBufferNotify = info->ReuseBufferNotify; ++ ds->SwapLimitValidate = info->SwapLimitValidate; ++ } ++ ++ if (info->version >= 7) { ++ ds->GetParam = info->GetParam; ++ cur_minor = 4; ++ } ++ ++ if (info->version >= 9) { ++ ds->CreateBuffer2 = info->CreateBuffer2; ++ ds->DestroyBuffer2 = info->DestroyBuffer2; ++ ds->CopyRegion2 = info->CopyRegion2; ++ } ++ ++ /* ++ * if the driver doesn't provide an AuthMagic function or the info struct ++ * version is too low, call through LegacyAuthMagic ++ */ ++ if (!ds->AuthMagic) { ++ ds->AuthMagic = DRI2AuthMagic; ++ } ++ ++ /* Initialize minor if needed and set to minimum provied by DDX */ ++ if (!dri2_minor || dri2_minor > cur_minor) ++ dri2_minor = cur_minor; ++ ++ if (info->version == 3 || info->numDrivers == 0) { ++ /* Driver too old: use the old-style driverName field */ ++ ds->numDrivers = 1; ++ ds->driverNames = malloc(sizeof(*ds->driverNames)); ++ if (!ds->driverNames) ++ goto err_out; ++ ds->driverNames[0] = info->driverName; ++ } ++ else { ++ ds->numDrivers = info->numDrivers; ++ ds->driverNames = malloc(info->numDrivers * sizeof(*ds->driverNames)); ++ if (!ds->driverNames) ++ goto err_out; ++ memcpy(ds->driverNames, info->driverNames, ++ info->numDrivers * sizeof(*ds->driverNames)); ++ } ++ ++ dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, ds); ++ ++ ds->ConfigNotify = pScreen->ConfigNotify; ++ pScreen->ConfigNotify = DRI2ConfigNotify; ++ ++ ds->SetWindowPixmap = pScreen->SetWindowPixmap; ++ pScreen->SetWindowPixmap = DRI2SetWindowPixmap; ++ ++ ErrorF("[DRI2] Setup complete\n"); ++ for (i = 0; i < sizeof(driverTypeNames) / sizeof(driverTypeNames[0]); i++) { ++ if (i < ds->numDrivers && ds->driverNames[i]) { ++ ErrorF("[DRI2] %s driver: %s\n", driverTypeNames[i], ds->driverNames[i]); ++ } ++ } ++ ++ return TRUE; ++ ++ err_out: ++ ErrorF("[DRI2] Initialization failed for info version %d.\n", info->version); ++ free(ds); ++ return FALSE; ++} ++ ++void ++DRI2CloseScreen(ScreenPtr pScreen) ++{ ++ DRI2ScreenPtr ds = DRI2GetScreen(pScreen); ++ ++ pScreen->ConfigNotify = ds->ConfigNotify; ++ pScreen->SetWindowPixmap = ds->SetWindowPixmap; ++ ++ free(ds->driverNames); ++ free(ds); ++ dixSetPrivate(&pScreen->devPrivates, dri2ScreenPrivateKey, NULL); ++} ++ ++/* Called by InitExtensions() */ ++Bool ++DRI2ModuleSetup(void) ++{ ++ dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone, "DRI2Drawable"); ++ if (!dri2DrawableRes) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++void ++DRI2Version(int *major, int *minor) ++{ ++ if (major != NULL) ++ *major = 1; ++ ++ if (minor != NULL) ++ *minor = 2; ++} ++ ++int ++DRI2GetParam(ClientPtr client, ++ DrawablePtr drawable, ++ CARD64 param, ++ BOOL *is_param_recognized, ++ CARD64 *value) ++{ ++ char high_byte = (param >> 24); ++ ++ switch (high_byte) { ++ case 0: ++ /* Parameter names whose high_byte is 0 are reserved for the X ++ * server. The server currently recognizes no parameters. ++ */ ++ goto not_recognized; ++ case 1: ++ /* Parameter names whose high byte is 1 are reserved for the DDX. */ ++ goto not_recognized; ++ default: ++ /* Other parameter names are reserved for future use. They are never ++ * recognized. ++ */ ++ goto not_recognized; ++ } ++ ++not_recognized: ++ *is_param_recognized = FALSE; ++ return Success; ++} +--- /dev/null ++++ b/hw/xmir/dri2/dri2.h +@@ -0,0 +1,364 @@ ++/* ++ * Copyright © 2007 Red Hat, 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: ++ * Kristian Høgsberg (krh@redhat.com) ++ */ ++ ++#ifndef _DRI2_H_ ++#define _DRI2_H_ ++ ++#include ++ ++/* Version 2 structure (with format at the end) */ ++typedef struct { ++ unsigned int attachment; ++ unsigned int name; ++ unsigned int pitch; ++ unsigned int cpp; ++ unsigned int flags; ++ unsigned int format; ++ void *driverPrivate; ++} DRI2BufferRec, *DRI2BufferPtr; ++ ++extern CARD8 dri2_major; /* version of DRI2 supported by DDX */ ++extern CARD8 dri2_minor; ++ ++typedef DRI2BufferRec DRI2Buffer2Rec, *DRI2Buffer2Ptr; ++typedef void (*DRI2SwapEventPtr) (ClientPtr client, void *data, int type, ++ CARD64 ust, CARD64 msc, CARD32 sbc); ++ ++typedef DRI2BufferPtr(*DRI2CreateBuffersProcPtr) (DrawablePtr pDraw, ++ unsigned int *attachments, ++ int count); ++typedef void (*DRI2DestroyBuffersProcPtr) (DrawablePtr pDraw, ++ DRI2BufferPtr buffers, int count); ++typedef void (*DRI2CopyRegionProcPtr) (DrawablePtr pDraw, ++ RegionPtr pRegion, ++ DRI2BufferPtr pDestBuffer, ++ DRI2BufferPtr pSrcBuffer); ++typedef void (*DRI2WaitProcPtr) (WindowPtr pWin, unsigned int sequence); ++typedef int (*DRI2AuthMagicProcPtr) (int fd, uint32_t magic); ++typedef int (*DRI2AuthMagic2ProcPtr) (ScreenPtr pScreen, uint32_t magic); ++ ++/** ++ * Schedule a buffer swap ++ * ++ * This callback is used to support glXSwapBuffers and the OML_sync_control ++ * extension (see it for a description of the params). ++ * ++ * Drivers should queue an event for the frame count that satisfies the ++ * parameters passed in. If the event is in the future (i.e. the conditions ++ * aren't currently satisfied), the server may block the client at the next ++ * GLX request using DRI2WaitSwap. When the event arrives, drivers should call ++ * \c DRI2SwapComplete, which will handle waking the client and returning ++ * the appropriate data. ++ * ++ * The DDX is responsible for doing a flip, exchange, or blit of the swap ++ * when the corresponding event arrives. The \c DRI2CanFlip and ++ * \c DRI2CanExchange functions can be used as helpers for this purpose. ++ * ++ * \param client client pointer (used for block/unblock) ++ * \param pDraw drawable whose count we want ++ * \param pDestBuffer current front buffer ++ * \param pSrcBuffer current back buffer ++ * \param target_msc frame count to wait for ++ * \param divisor divisor for condition equation ++ * \param remainder remainder for division equation ++ * \param func function to call when the swap completes ++ * \param data data for the callback \p func. ++ */ ++typedef int (*DRI2ScheduleSwapProcPtr) (ClientPtr client, ++ DrawablePtr pDraw, ++ DRI2BufferPtr pDestBuffer, ++ DRI2BufferPtr pSrcBuffer, ++ CARD64 * target_msc, ++ CARD64 divisor, ++ CARD64 remainder, ++ DRI2SwapEventPtr func, void *data); ++typedef DRI2BufferPtr(*DRI2CreateBufferProcPtr) (DrawablePtr pDraw, ++ unsigned int attachment, ++ unsigned int format); ++typedef void (*DRI2DestroyBufferProcPtr) (DrawablePtr pDraw, ++ DRI2BufferPtr buffer); ++/** ++ * Notifies driver when DRI2GetBuffers reuses a dri2 buffer. ++ * ++ * Driver may rename the dri2 buffer in this notify if it is required. ++ * ++ * \param pDraw drawable whose count we want ++ * \param buffer buffer that will be returned to client ++ */ ++typedef void (*DRI2ReuseBufferNotifyProcPtr) (DrawablePtr pDraw, ++ DRI2BufferPtr buffer); ++/** ++ * Get current media stamp counter values ++ * ++ * This callback is used to support the SGI_video_sync and OML_sync_control ++ * extensions. ++ * ++ * Drivers should return the current frame counter and the timestamp from ++ * when the returned frame count was last incremented. ++ * ++ * The count should correspond to the screen where the drawable is currently ++ * visible. If the drawable isn't visible (e.g. redirected), the server ++ * should return BadDrawable to the client, pending GLX spec updates to ++ * define this behavior. ++ * ++ * \param pDraw drawable whose count we want ++ * \param ust timestamp from when the count was last incremented. ++ * \param mst current frame count ++ */ ++typedef int (*DRI2GetMSCProcPtr) (DrawablePtr pDraw, CARD64 * ust, ++ CARD64 * msc); ++/** ++ * Schedule a frame count related wait ++ * ++ * This callback is used to support the SGI_video_sync and OML_sync_control ++ * extensions. See those specifications for details on how to handle ++ * the divisor and remainder parameters. ++ * ++ * Drivers should queue an event for the frame count that satisfies the ++ * parameters passed in. If the event is in the future (i.e. the conditions ++ * aren't currently satisfied), the driver should block the client using ++ * \c DRI2BlockClient. When the event arrives, drivers should call ++ * \c DRI2WaitMSCComplete, which will handle waking the client and returning ++ * the appropriate data. ++ * ++ * \param client client pointer (used for block/unblock) ++ * \param pDraw drawable whose count we want ++ * \param target_msc frame count to wait for ++ * \param divisor divisor for condition equation ++ * \param remainder remainder for division equation ++ */ ++typedef int (*DRI2ScheduleWaitMSCProcPtr) (ClientPtr client, ++ DrawablePtr pDraw, ++ CARD64 target_msc, ++ CARD64 divisor, CARD64 remainder); ++ ++typedef void (*DRI2InvalidateProcPtr) (DrawablePtr pDraw, void *data, XID id); ++ ++/** ++ * DRI2 calls this hook when ever swap_limit is going to be changed. Default ++ * implementation for the hook only accepts one as swap_limit. If driver can ++ * support other swap_limits it has to implement supported limits with this ++ * callback. ++ * ++ * \param pDraw drawable whos swap_limit is going to be changed ++ * \param swap_limit new swap_limit that going to be set ++ * \return TRUE if limit is support, FALSE if not. ++ */ ++typedef Bool (*DRI2SwapLimitValidateProcPtr) (DrawablePtr pDraw, ++ int swap_limit); ++ ++typedef DRI2BufferPtr(*DRI2CreateBuffer2ProcPtr) (ScreenPtr pScreen, ++ DrawablePtr pDraw, ++ unsigned int attachment, ++ unsigned int format); ++typedef void (*DRI2DestroyBuffer2ProcPtr) (ScreenPtr pScreen, DrawablePtr pDraw, ++ DRI2BufferPtr buffer); ++ ++typedef void (*DRI2CopyRegion2ProcPtr) (ScreenPtr pScreen, DrawablePtr pDraw, ++ RegionPtr pRegion, ++ DRI2BufferPtr pDestBuffer, ++ DRI2BufferPtr pSrcBuffer); ++ ++/** ++ * \brief Get the value of a parameter. ++ * ++ * The parameter's \a value is looked up on the screen associated with ++ * \a pDrawable. ++ * ++ * \return \c Success or error code. ++ */ ++typedef int (*DRI2GetParamProcPtr) (ClientPtr client, ++ DrawablePtr pDrawable, ++ CARD64 param, ++ BOOL *is_param_recognized, ++ CARD64 *value); ++ ++/** ++ * Version of the DRI2InfoRec structure defined in this header ++ */ ++#define DRI2INFOREC_VERSION 9 ++ ++typedef struct { ++ unsigned int version; /**< Version of this struct */ ++ int fd; ++ const char *driverName; ++ const char *deviceName; ++ ++ DRI2CreateBufferProcPtr CreateBuffer; ++ DRI2DestroyBufferProcPtr DestroyBuffer; ++ DRI2CopyRegionProcPtr CopyRegion; ++ DRI2WaitProcPtr Wait; ++ ++ /* added in version 4 */ ++ ++ DRI2ScheduleSwapProcPtr ScheduleSwap; ++ DRI2GetMSCProcPtr GetMSC; ++ DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC; ++ ++ /* number of drivers in the driverNames array */ ++ unsigned int numDrivers; ++ /* array of driver names, indexed by DRI2Driver* driver types */ ++ /* a name of NULL means that driver is not supported */ ++ const char *const *driverNames; ++ ++ /* added in version 5 */ ++ ++ DRI2AuthMagicProcPtr AuthMagic; ++ ++ /* added in version 6 */ ++ ++ DRI2ReuseBufferNotifyProcPtr ReuseBufferNotify; ++ DRI2SwapLimitValidateProcPtr SwapLimitValidate; ++ ++ /* added in version 7 */ ++ DRI2GetParamProcPtr GetParam; ++ ++ /* added in version 8 */ ++ /* AuthMagic callback which passes extra context */ ++ /* If this is NULL the AuthMagic callback is used */ ++ /* If this is non-NULL the AuthMagic callback is ignored */ ++ DRI2AuthMagic2ProcPtr AuthMagic2; ++ ++ /* added in version 9 */ ++ DRI2CreateBuffer2ProcPtr CreateBuffer2; ++ DRI2DestroyBuffer2ProcPtr DestroyBuffer2; ++ DRI2CopyRegion2ProcPtr CopyRegion2; ++} DRI2InfoRec, *DRI2InfoPtr; ++ ++Bool DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info); ++ ++void DRI2CloseScreen(ScreenPtr pScreen); ++ ++Bool DRI2HasSwapControl(ScreenPtr pScreen); ++ ++Bool DRI2Connect(ClientPtr client, ScreenPtr pScreen, ++ unsigned int driverType, ++ int *fd, ++ const char **driverName, ++ const char **deviceName); ++ ++Bool DRI2Authenticate(ClientPtr client, ScreenPtr pScreen, uint32_t magic); ++ ++int DRI2CreateDrawable(ClientPtr client, ++ DrawablePtr pDraw, ++ XID id, ++ DRI2InvalidateProcPtr invalidate, ++ void *priv); ++ ++int DRI2CreateDrawable2(ClientPtr client, ++ DrawablePtr pDraw, ++ XID id, ++ DRI2InvalidateProcPtr invalidate, ++ void *priv, ++ XID *dri2_id_out); ++ ++DRI2BufferPtr *DRI2GetBuffers(DrawablePtr pDraw, ++ int *width, ++ int *height, ++ unsigned int *attachments, ++ int count, int *out_count); ++ ++int DRI2CopyRegion(DrawablePtr pDraw, ++ RegionPtr pRegion, ++ unsigned int dest, unsigned int src); ++ ++/** ++ * Determine the major and minor version of the DRI2 extension. ++ * ++ * Provides a mechanism to other modules (e.g., 2D drivers) to determine the ++ * version of the DRI2 extension. While it is possible to peek directly at ++ * the \c XF86ModuleData from a layered module, such a module will fail to ++ * load (due to an unresolved symbol) if the DRI2 extension is not loaded. ++ * ++ * \param major Location to store the major verion of the DRI2 extension ++ * \param minor Location to store the minor verion of the DRI2 extension ++ * ++ * \note ++ * This interface was added some time after the initial release of the DRI2 ++ * module. Layered modules that wish to use this interface must first test ++ * its existance by calling \c xf86LoaderCheckSymbol. ++ */ ++void DRI2Version(int *major, int *minor); ++ ++DRI2BufferPtr *DRI2GetBuffersWithFormat(DrawablePtr pDraw, ++ int *width, ++ int *height, ++ unsigned int ++ *attachments, ++ int count, ++ int *out_count); ++ ++void DRI2SwapInterval(DrawablePtr pDrawable, int interval); ++Bool DRI2SwapLimit(DrawablePtr pDraw, int swap_limit); ++int DRI2SwapBuffers(ClientPtr client, DrawablePtr pDrawable, ++ CARD64 target_msc, CARD64 divisor, ++ CARD64 remainder, CARD64 * swap_target, ++ DRI2SwapEventPtr func, void *data); ++Bool DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable); ++ ++int DRI2GetMSC(DrawablePtr pDrawable, CARD64 * ust, ++ CARD64 * msc, CARD64 * sbc); ++int DRI2WaitMSC(ClientPtr client, DrawablePtr pDrawable, ++ CARD64 target_msc, CARD64 divisor, ++ CARD64 remainder); ++int ProcDRI2WaitMSCReply(ClientPtr client, CARD64 ust, ++ CARD64 msc, CARD64 sbc); ++int DRI2WaitSBC(ClientPtr client, DrawablePtr pDraw, ++ CARD64 target_sbc); ++Bool DRI2ThrottleClient(ClientPtr client, DrawablePtr pDraw); ++ ++Bool DRI2CanFlip(DrawablePtr pDraw); ++ ++Bool DRI2CanExchange(DrawablePtr pDraw); ++ ++/* Note: use *only* for MSC related waits */ ++void DRI2BlockClient(ClientPtr client, DrawablePtr pDraw); ++ ++void DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, ++ int frame, unsigned int tv_sec, ++ unsigned int tv_usec, int type, ++ DRI2SwapEventPtr swap_complete, ++ void *swap_data); ++void DRI2WaitMSCComplete(ClientPtr client, DrawablePtr pDraw, ++ int frame, unsigned int tv_sec, ++ unsigned int tv_usec); ++ ++int DRI2GetParam(ClientPtr client, ++ DrawablePtr pDrawable, ++ CARD64 param, ++ BOOL *is_param_recognized, ++ CARD64 *value); ++ ++void DRI2ExtensionInit(void); ++extern Bool noDRI2Extension; ++ ++#endif +--- /dev/null ++++ b/hw/xmir/dri2/dri2ext.c +@@ -0,0 +1,683 @@ ++/* ++ * Copyright © 2008 Red Hat, 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: ++ * Kristian Høgsberg (krh@redhat.com) ++ */ ++ ++#include ++ ++#include ++#include ++#include ++#include ++#include "dixstruct.h" ++#include "scrnintstr.h" ++#include "pixmapstr.h" ++#include "extnsionst.h" ++#include "xfixes.h" ++#include "dri2.h" ++#include "dri2int.h" ++#include "protocol-versions.h" ++ ++static int DRI2EventBase; ++ ++ ++static Bool ++validDrawable(ClientPtr client, XID drawable, Mask access_mode, ++ DrawablePtr *pDrawable, int *status) ++{ ++ *status = dixLookupDrawable(pDrawable, drawable, client, ++ M_DRAWABLE_WINDOW | M_DRAWABLE_PIXMAP, ++ access_mode); ++ if (*status != Success) { ++ client->errorValue = drawable; ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static int ++ProcDRI2QueryVersion(ClientPtr client) ++{ ++ REQUEST(xDRI2QueryVersionReq); ++ xDRI2QueryVersionReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0, ++ .majorVersion = dri2_major, ++ .minorVersion = dri2_minor ++ }; ++ ++ if (client->swapped) ++ swaps(&stuff->length); ++ ++ REQUEST_SIZE_MATCH(xDRI2QueryVersionReq); ++ ++ if (client->swapped) { ++ swaps(&rep.sequenceNumber); ++ swapl(&rep.length); ++ swapl(&rep.majorVersion); ++ swapl(&rep.minorVersion); ++ } ++ ++ WriteToClient(client, sizeof(xDRI2QueryVersionReply), &rep); ++ ++ return Success; ++} ++ ++static int ++ProcDRI2Connect(ClientPtr client) ++{ ++ REQUEST(xDRI2ConnectReq); ++ xDRI2ConnectReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0, ++ .driverNameLength = 0, ++ .deviceNameLength = 0 ++ }; ++ DrawablePtr pDraw; ++ int fd, status; ++ const char *driverName; ++ const char *deviceName; ++ ++ REQUEST_SIZE_MATCH(xDRI2ConnectReq); ++ if (!validDrawable(client, stuff->window, DixGetAttrAccess, ++ &pDraw, &status)) ++ return status; ++ ++ if (!DRI2Connect(client, pDraw->pScreen, ++ stuff->driverType, &fd, &driverName, &deviceName)) ++ goto fail; ++ ++ rep.driverNameLength = strlen(driverName); ++ rep.deviceNameLength = strlen(deviceName); ++ rep.length = (rep.driverNameLength + 3) / 4 + ++ (rep.deviceNameLength + 3) / 4; ++ ++ fail: ++ WriteToClient(client, sizeof(xDRI2ConnectReply), &rep); ++ WriteToClient(client, rep.driverNameLength, driverName); ++ WriteToClient(client, rep.deviceNameLength, deviceName); ++ ++ return Success; ++} ++ ++static int ++ProcDRI2Authenticate(ClientPtr client) ++{ ++ REQUEST(xDRI2AuthenticateReq); ++ xDRI2AuthenticateReply rep; ++ DrawablePtr pDraw; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2AuthenticateReq); ++ if (!validDrawable(client, stuff->window, DixGetAttrAccess, ++ &pDraw, &status)) ++ return status; ++ ++ rep = (xDRI2AuthenticateReply) { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0, ++ .authenticated = DRI2Authenticate(client, pDraw->pScreen, stuff->magic) ++ }; ++ WriteToClient(client, sizeof(xDRI2AuthenticateReply), &rep); ++ ++ return Success; ++} ++ ++static void ++DRI2InvalidateBuffersEvent(DrawablePtr pDraw, void *priv, XID id) ++{ ++ ClientPtr client = priv; ++ xDRI2InvalidateBuffers event = { ++ .type = DRI2EventBase + DRI2_InvalidateBuffers, ++ .drawable = id ++ }; ++ ++ WriteEventsToClient(client, 1, (xEvent *) &event); ++} ++ ++static int ++ProcDRI2CreateDrawable(ClientPtr client) ++{ ++ REQUEST(xDRI2CreateDrawableReq); ++ DrawablePtr pDrawable; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2CreateDrawableReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixAddAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ status = DRI2CreateDrawable(client, pDrawable, stuff->drawable, ++ DRI2InvalidateBuffersEvent, client); ++ if (status != Success) ++ return status; ++ ++ return Success; ++} ++ ++static int ++ProcDRI2DestroyDrawable(ClientPtr client) ++{ ++ REQUEST(xDRI2DestroyDrawableReq); ++ DrawablePtr pDrawable; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2DestroyDrawableReq); ++ if (!validDrawable(client, stuff->drawable, DixRemoveAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ return Success; ++} ++ ++static int ++send_buffers_reply(ClientPtr client, DrawablePtr pDrawable, ++ DRI2BufferPtr * buffers, int count, int width, int height) ++{ ++ xDRI2GetBuffersReply rep; ++ int skip = 0; ++ int i; ++ ++ if (buffers == NULL) ++ return BadAlloc; ++ ++ if (pDrawable->type == DRAWABLE_WINDOW) { ++ for (i = 0; i < count; i++) { ++ /* Do not send the real front buffer of a window to the client. ++ */ ++ if (buffers[i]->attachment == DRI2BufferFrontLeft) { ++ skip++; ++ continue; ++ } ++ } ++ } ++ ++ rep = (xDRI2GetBuffersReply) { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = (count - skip) * sizeof(xDRI2Buffer) / 4, ++ .width = width, ++ .height = height, ++ .count = count - skip ++ }; ++ WriteToClient(client, sizeof(xDRI2GetBuffersReply), &rep); ++ ++ for (i = 0; i < count; i++) { ++ xDRI2Buffer buffer; ++ ++ /* Do not send the real front buffer of a window to the client. ++ */ ++ if ((pDrawable->type == DRAWABLE_WINDOW) ++ && (buffers[i]->attachment == DRI2BufferFrontLeft)) { ++ continue; ++ } ++ ++ buffer.attachment = buffers[i]->attachment; ++ buffer.name = buffers[i]->name; ++ buffer.pitch = buffers[i]->pitch; ++ buffer.cpp = buffers[i]->cpp; ++ buffer.flags = buffers[i]->flags; ++ WriteToClient(client, sizeof(xDRI2Buffer), &buffer); ++ } ++ return Success; ++} ++ ++static int ++ProcDRI2GetBuffers(ClientPtr client) ++{ ++ REQUEST(xDRI2GetBuffersReq); ++ DrawablePtr pDrawable; ++ DRI2BufferPtr *buffers; ++ int status, width, height, count; ++ unsigned int *attachments; ++ ++ REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4); ++ if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ if (DRI2ThrottleClient(client, pDrawable)) ++ return Success; ++ ++ attachments = (unsigned int *) &stuff[1]; ++ buffers = DRI2GetBuffers(pDrawable, &width, &height, ++ attachments, stuff->count, &count); ++ ++ return send_buffers_reply(client, pDrawable, buffers, count, width, height); ++ ++} ++ ++static int ++ProcDRI2GetBuffersWithFormat(ClientPtr client) ++{ ++ REQUEST(xDRI2GetBuffersReq); ++ DrawablePtr pDrawable; ++ DRI2BufferPtr *buffers; ++ int status, width, height, count; ++ unsigned int *attachments; ++ ++ REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * (2 * 4)); ++ if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ if (DRI2ThrottleClient(client, pDrawable)) ++ return Success; ++ ++ attachments = (unsigned int *) &stuff[1]; ++ buffers = DRI2GetBuffersWithFormat(pDrawable, &width, &height, ++ attachments, stuff->count, &count); ++ ++ return send_buffers_reply(client, pDrawable, buffers, count, width, height); ++} ++ ++static int ++ProcDRI2CopyRegion(ClientPtr client) ++{ ++ REQUEST(xDRI2CopyRegionReq); ++ xDRI2CopyRegionReply rep; ++ DrawablePtr pDrawable; ++ int status; ++ RegionPtr pRegion; ++ ++ REQUEST_SIZE_MATCH(xDRI2CopyRegionReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixWriteAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ VERIFY_REGION(pRegion, stuff->region, client, DixReadAccess); ++ ++ status = DRI2CopyRegion(pDrawable, pRegion, stuff->dest, stuff->src); ++ if (status != Success) ++ return status; ++ ++ /* CopyRegion needs to be a round trip to make sure the X server ++ * queues the swap buffer rendering commands before the DRI client ++ * continues rendering. The reply has a bitmask to signal the ++ * presense of optional return values as well, but we're not using ++ * that yet. ++ */ ++ ++ rep = (xDRI2CopyRegionReply) { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0 ++ }; ++ ++ WriteToClient(client, sizeof(xDRI2CopyRegionReply), &rep); ++ ++ return Success; ++} ++ ++static void ++load_swap_reply(xDRI2SwapBuffersReply * rep, CARD64 sbc) ++{ ++ rep->swap_hi = sbc >> 32; ++ rep->swap_lo = sbc & 0xffffffff; ++} ++ ++static CARD64 ++vals_to_card64(CARD32 lo, CARD32 hi) ++{ ++ return (CARD64) hi << 32 | lo; ++} ++ ++static void ++DRI2SwapEvent(ClientPtr client, void *data, int type, CARD64 ust, CARD64 msc, ++ CARD32 sbc) ++{ ++ DrawablePtr pDrawable = data; ++ xDRI2BufferSwapComplete2 event = { ++ .type = DRI2EventBase + DRI2_BufferSwapComplete, ++ .event_type = type, ++ .drawable = pDrawable->id, ++ .ust_hi = (CARD64) ust >> 32, ++ .ust_lo = ust & 0xffffffff, ++ .msc_hi = (CARD64) msc >> 32, ++ .msc_lo = msc & 0xffffffff, ++ .sbc = sbc ++ }; ++ ++ WriteEventsToClient(client, 1, (xEvent *) &event); ++} ++ ++static int ++ProcDRI2SwapBuffers(ClientPtr client) ++{ ++ REQUEST(xDRI2SwapBuffersReq); ++ xDRI2SwapBuffersReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0 ++ }; ++ DrawablePtr pDrawable; ++ CARD64 target_msc, divisor, remainder, swap_target; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2SwapBuffersReq); ++ ++ if (!validDrawable(client, stuff->drawable, ++ DixReadAccess | DixWriteAccess, &pDrawable, &status)) ++ return status; ++ ++ /* ++ * Ensures an out of control client can't exhaust our swap queue, and ++ * also orders swaps. ++ */ ++ if (DRI2ThrottleClient(client, pDrawable)) ++ return Success; ++ ++ target_msc = vals_to_card64(stuff->target_msc_lo, stuff->target_msc_hi); ++ divisor = vals_to_card64(stuff->divisor_lo, stuff->divisor_hi); ++ remainder = vals_to_card64(stuff->remainder_lo, stuff->remainder_hi); ++ ++ status = DRI2SwapBuffers(client, pDrawable, target_msc, divisor, remainder, ++ &swap_target, DRI2SwapEvent, pDrawable); ++ if (status != Success) ++ return BadDrawable; ++ ++ load_swap_reply(&rep, swap_target); ++ ++ WriteToClient(client, sizeof(xDRI2SwapBuffersReply), &rep); ++ ++ return Success; ++} ++ ++static void ++load_msc_reply(xDRI2MSCReply * rep, CARD64 ust, CARD64 msc, CARD64 sbc) ++{ ++ rep->ust_hi = ust >> 32; ++ rep->ust_lo = ust & 0xffffffff; ++ rep->msc_hi = msc >> 32; ++ rep->msc_lo = msc & 0xffffffff; ++ rep->sbc_hi = sbc >> 32; ++ rep->sbc_lo = sbc & 0xffffffff; ++} ++ ++static int ++ProcDRI2GetMSC(ClientPtr client) ++{ ++ REQUEST(xDRI2GetMSCReq); ++ xDRI2MSCReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0 ++ }; ++ DrawablePtr pDrawable; ++ CARD64 ust, msc, sbc; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2GetMSCReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixReadAccess, &pDrawable, ++ &status)) ++ return status; ++ ++ status = DRI2GetMSC(pDrawable, &ust, &msc, &sbc); ++ if (status != Success) ++ return status; ++ ++ load_msc_reply(&rep, ust, msc, sbc); ++ ++ WriteToClient(client, sizeof(xDRI2MSCReply), &rep); ++ ++ return Success; ++} ++ ++static int ++ProcDRI2WaitMSC(ClientPtr client) ++{ ++ REQUEST(xDRI2WaitMSCReq); ++ DrawablePtr pDrawable; ++ CARD64 target, divisor, remainder; ++ int status; ++ ++ /* FIXME: in restart case, client may be gone at this point */ ++ ++ REQUEST_SIZE_MATCH(xDRI2WaitMSCReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixReadAccess, &pDrawable, ++ &status)) ++ return status; ++ ++ target = vals_to_card64(stuff->target_msc_lo, stuff->target_msc_hi); ++ divisor = vals_to_card64(stuff->divisor_lo, stuff->divisor_hi); ++ remainder = vals_to_card64(stuff->remainder_lo, stuff->remainder_hi); ++ ++ status = DRI2WaitMSC(client, pDrawable, target, divisor, remainder); ++ if (status != Success) ++ return status; ++ ++ return Success; ++} ++ ++int ++ProcDRI2WaitMSCReply(ClientPtr client, CARD64 ust, CARD64 msc, CARD64 sbc) ++{ ++ xDRI2MSCReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0 ++ }; ++ ++ load_msc_reply(&rep, ust, msc, sbc); ++ ++ WriteToClient(client, sizeof(xDRI2MSCReply), &rep); ++ ++ return Success; ++} ++ ++static int ++ProcDRI2SwapInterval(ClientPtr client) ++{ ++ REQUEST(xDRI2SwapIntervalReq); ++ DrawablePtr pDrawable; ++ int status; ++ ++ /* FIXME: in restart case, client may be gone at this point */ ++ ++ REQUEST_SIZE_MATCH(xDRI2SwapIntervalReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ DRI2SwapInterval(pDrawable, stuff->interval); ++ ++ return Success; ++} ++ ++static int ++ProcDRI2WaitSBC(ClientPtr client) ++{ ++ REQUEST(xDRI2WaitSBCReq); ++ DrawablePtr pDrawable; ++ CARD64 target; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2WaitSBCReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixReadAccess, &pDrawable, ++ &status)) ++ return status; ++ ++ target = vals_to_card64(stuff->target_sbc_lo, stuff->target_sbc_hi); ++ status = DRI2WaitSBC(client, pDrawable, target); ++ ++ return status; ++} ++ ++static int ++ProcDRI2GetParam(ClientPtr client) ++{ ++ REQUEST(xDRI2GetParamReq); ++ xDRI2GetParamReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0 ++ }; ++ DrawablePtr pDrawable; ++ CARD64 value; ++ int status; ++ ++ REQUEST_SIZE_MATCH(xDRI2GetParamReq); ++ ++ if (!validDrawable(client, stuff->drawable, DixReadAccess, ++ &pDrawable, &status)) ++ return status; ++ ++ status = DRI2GetParam(client, pDrawable, stuff->param, ++ &rep.is_param_recognized, &value); ++ rep.value_hi = value >> 32; ++ rep.value_lo = value & 0xffffffff; ++ ++ if (status != Success) ++ return status; ++ ++ WriteToClient(client, sizeof(xDRI2GetParamReply), &rep); ++ ++ return status; ++} ++ ++static int ++ProcDRI2Dispatch(ClientPtr client) ++{ ++ REQUEST(xReq); ++ ++ switch (stuff->data) { ++ case X_DRI2QueryVersion: ++ return ProcDRI2QueryVersion(client); ++ } ++ ++ if (!client->local) ++ return BadRequest; ++ ++ switch (stuff->data) { ++ case X_DRI2Connect: ++ return ProcDRI2Connect(client); ++ case X_DRI2Authenticate: ++ return ProcDRI2Authenticate(client); ++ case X_DRI2CreateDrawable: ++ return ProcDRI2CreateDrawable(client); ++ case X_DRI2DestroyDrawable: ++ return ProcDRI2DestroyDrawable(client); ++ case X_DRI2GetBuffers: ++ return ProcDRI2GetBuffers(client); ++ case X_DRI2CopyRegion: ++ return ProcDRI2CopyRegion(client); ++ case X_DRI2GetBuffersWithFormat: ++ return ProcDRI2GetBuffersWithFormat(client); ++ case X_DRI2SwapBuffers: ++ return ProcDRI2SwapBuffers(client); ++ case X_DRI2GetMSC: ++ return ProcDRI2GetMSC(client); ++ case X_DRI2WaitMSC: ++ return ProcDRI2WaitMSC(client); ++ case X_DRI2WaitSBC: ++ return ProcDRI2WaitSBC(client); ++ case X_DRI2SwapInterval: ++ return ProcDRI2SwapInterval(client); ++ case X_DRI2GetParam: ++ return ProcDRI2GetParam(client); ++ default: ++ return BadRequest; ++ } ++} ++ ++static int ++SProcDRI2Connect(ClientPtr client) ++{ ++ REQUEST(xDRI2ConnectReq); ++ xDRI2ConnectReply rep = { ++ .type = X_Reply, ++ .sequenceNumber = client->sequence, ++ .length = 0, ++ .driverNameLength = 0, ++ .deviceNameLength = 0 ++ }; ++ ++ /* If the client is swapped, it's not local. Talk to the hand. */ ++ ++ swaps(&stuff->length); ++ if (sizeof(*stuff) / 4 != client->req_len) ++ return BadLength; ++ ++ swaps(&rep.sequenceNumber); ++ ++ WriteToClient(client, sizeof(xDRI2ConnectReply), &rep); ++ ++ return Success; ++} ++ ++static int ++SProcDRI2Dispatch(ClientPtr client) ++{ ++ REQUEST(xReq); ++ ++ /* ++ * Only local clients are allowed DRI access, but remote clients ++ * still need these requests to find out cleanly. ++ */ ++ switch (stuff->data) { ++ case X_DRI2QueryVersion: ++ return ProcDRI2QueryVersion(client); ++ case X_DRI2Connect: ++ return SProcDRI2Connect(client); ++ default: ++ return BadRequest; ++ } ++} ++ ++void ++DRI2ExtensionInit(void) ++{ ++ ExtensionEntry *dri2Extension; ++ ++#ifdef PANORAMIX ++ if (!noPanoramiXExtension) ++ return; ++#endif ++ ++ dri2Extension = AddExtension(DRI2_NAME, ++ DRI2NumberEvents, ++ DRI2NumberErrors, ++ ProcDRI2Dispatch, ++ SProcDRI2Dispatch, NULL, StandardMinorOpcode); ++ ++ DRI2EventBase = dri2Extension->eventBase; ++ ++ DRI2ModuleSetup(); ++} +--- /dev/null ++++ b/hw/xmir/dri2/dri2int.h +@@ -0,0 +1,26 @@ ++/* ++ * Copyright © 2011 Daniel Stone ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Author: Daniel Stone ++ */ ++ ++extern Bool DRI2ModuleSetup(void); +--- /dev/null ++++ b/hw/xmir/xmir-cursor.c +@@ -0,0 +1,225 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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. ++ */ ++ ++#include "xmir.h" ++ ++#include ++ ++static DevPrivateKeyRec xmir_cursor_private_key; ++ ++static void ++expand_source_and_mask(CursorPtr cursor, void *data) ++{ ++ CARD32 *p, d, fg, bg; ++ CursorBitsPtr bits = cursor->bits; ++ int x, y, stride, i, bit; ++ ++ p = data; ++ fg = ((cursor->foreRed & 0xff00) << 8) | ++ (cursor->foreGreen & 0xff00) | (cursor->foreGreen >> 8); ++ bg = ((cursor->backRed & 0xff00) << 8) | ++ (cursor->backGreen & 0xff00) | (cursor->backGreen >> 8); ++ stride = (bits->width / 8 + 3) & ~3; ++ for (y = 0; y < bits->height; y++) ++ for (x = 0; x < bits->width; x++) { ++ i = y * stride + x / 8; ++ bit = 1 << (x & 7); ++ if (bits->source[i] & bit) ++ d = fg; ++ else ++ d = bg; ++ if (bits->mask[i] & bit) ++ d |= 0xff000000; ++ else ++ d = 0x00000000; ++ ++ *p++ = d; ++ } ++} ++ ++static Bool ++xmir_realize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) ++{ ++ return TRUE; ++} ++ ++static void xmir_input_set_cursor(struct xmir_input *xmir_input, ++ CursorPtr cursor); ++ ++static Bool ++xmir_unrealize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) ++{ ++ struct xmir_input *xmir_input = device ? device->public.devicePrivate : NULL; ++ MirBufferStream *stream; ++ ++ stream = dixGetPrivate(&cursor->devPrivates, &xmir_cursor_private_key); ++ dixSetPrivate(&cursor->devPrivates, &xmir_cursor_private_key, NULL); ++ ++ if (xmir_input) ++ xmir_input_set_cursor(xmir_input, rootCursor); ++ ++ if (stream) ++ mir_buffer_stream_release_sync(stream); ++ ++ return TRUE; ++} ++ ++static void ++xmir_input_set_cursor(struct xmir_input *xmir_input, CursorPtr cursor) ++{ ++ MirGraphicsRegion region; ++ MirCursorConfiguration *config; ++ MirBufferStream *stream; ++ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ if (!cursor) { ++ config = mir_cursor_configuration_from_name(mir_disabled_cursor_name); ++ goto apply; ++ } ++ else if (cursor == rootCursor) { ++ /* Avoid using the old style X default black cross cursor */ ++ config = mir_cursor_configuration_from_name(mir_arrow_cursor_name); ++ goto apply; ++ } ++#pragma GCC diagnostic pop ++ ++ stream = dixGetPrivate(&cursor->devPrivates, &xmir_cursor_private_key); ++ if (stream) { ++ mir_buffer_stream_get_graphics_region(stream, ®ion); ++ if (region.width != cursor->bits->width || ++ region.height != cursor->bits->height) { ++ mir_buffer_stream_release_sync(stream); ++ stream = NULL; ++ } ++ } ++ ++ if (!stream) { ++ stream = mir_connection_create_buffer_stream_sync(xmir_input->xmir_screen->conn, ++ cursor->bits->width, ++ cursor->bits->height, ++ mir_pixel_format_argb_8888, ++ mir_buffer_usage_software); ++ dixSetPrivate(&cursor->devPrivates, &xmir_cursor_private_key, stream); ++ mir_buffer_stream_get_graphics_region(stream, ®ion); ++ } ++ ++ if (cursor->bits->argb) { ++ int y, stride; ++ ++ stride = cursor->bits->width * 4; ++ for (y = 0; y < cursor->bits->height; y++) ++ memcpy(region.vaddr + y * region.stride, ++ (char*)cursor->bits->argb + y * stride, stride); ++ } ++ else ++ expand_source_and_mask(cursor, region.vaddr); ++ ++ mir_buffer_stream_swap_buffers(stream, NULL, NULL); ++ config = mir_cursor_configuration_from_buffer_stream(stream, ++ cursor->bits->xhot, ++ cursor->bits->yhot); ++ ++apply: ++ if (!xmir_input->xmir_screen->rootless) { ++ struct xmir_window *w = xmir_window_get(xmir_input->xmir_screen->screen->root); ++ mir_window_configure_cursor(w->surface, config); ++ } ++ else if (xmir_input->focus_window) ++ mir_window_configure_cursor(xmir_input->focus_window->surface, config); ++ mir_cursor_configuration_destroy(config); ++} ++ ++static void ++xmir_set_cursor(DeviceIntPtr device, ++ ScreenPtr screen, CursorPtr cursor, int x, int y) ++{ ++ struct xmir_input *xmir_input; ++ ++ xmir_input = device->public.devicePrivate; ++ if (xmir_input == NULL) ++ return; ++ ++ xmir_input_set_cursor(xmir_input, cursor); ++} ++ ++static void ++xmir_move_cursor(DeviceIntPtr device, ScreenPtr screen, int x, int y) ++{ ++} ++ ++static Bool ++xmir_device_cursor_initialize(DeviceIntPtr device, ScreenPtr screen) ++{ ++ return TRUE; ++} ++ ++static void ++xmir_device_cursor_cleanup(DeviceIntPtr device, ScreenPtr screen) ++{ ++} ++ ++static miPointerSpriteFuncRec xmir_pointer_sprite_funcs = { ++ xmir_realize_cursor, ++ xmir_unrealize_cursor, ++ xmir_set_cursor, ++ xmir_move_cursor, ++ xmir_device_cursor_initialize, ++ xmir_device_cursor_cleanup ++}; ++ ++static Bool ++xmir_cursor_off_screen(ScreenPtr *ppScreen, int *x, int *y) ++{ ++ return FALSE; ++} ++ ++static void ++xmir_cross_screen(ScreenPtr pScreen, Bool entering) ++{ ++} ++ ++static void ++xmir_pointer_warp_cursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) ++{ ++} ++ ++static miPointerScreenFuncRec xmir_pointer_screen_funcs = { ++ xmir_cursor_off_screen, ++ xmir_cross_screen, ++ xmir_pointer_warp_cursor ++}; ++ ++Bool ++xmir_screen_init_cursor(struct xmir_screen *xmir_screen) ++{ ++ if (!dixRegisterPrivateKey(&xmir_cursor_private_key, ++ PRIVATE_CURSOR_BITS, 0)) ++ return FALSE; ++ ++ return miPointerInitialize(xmir_screen->screen, ++ &xmir_pointer_sprite_funcs, ++ &xmir_pointer_screen_funcs, TRUE); ++} +--- /dev/null ++++ b/hw/xmir/xmir-cvt.c +@@ -0,0 +1,304 @@ ++/* Copied from hw/xfree86/modes/xf86cvt.c into xmir DDX and ++ * changed to generate an RRMode */ ++ ++/* ++ * 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. ++ */ ++ ++/* ++ * The reason for having this function in a file of its own is ++ * so that ../utils/cvt/cvt can link to it, and that xf86CVTMode ++ * code is shared directly. ++ */ ++ ++#ifdef HAVE_DIX_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include "xmir.h" ++ ++/* ++ * Generate a CVT standard mode from HDisplay, VDisplay and VRefresh. ++ * ++ * These calculations are stolen from the CVT calculation spreadsheet written ++ * by Graham Loveridge. He seems to be claiming no copyright and there seems to ++ * be no license attached to this. He apparently just wants to see his name ++ * mentioned. ++ * ++ * This file can be found at http://www.vesa.org/Public/CVT/CVTd6r1.xls ++ * ++ * Comments and structure corresponds to the comments and structure of the xls. ++ * This should ease importing of future changes to the standard (not very ++ * likely though). ++ * ++ * About margins; i'm sure that they are to be the bit between HDisplay and ++ * HBlankStart, HBlankEnd and HTotal, VDisplay and VBlankStart, VBlankEnd and ++ * VTotal, where the overscan colour is shown. FB seems to call _all_ blanking ++ * outside sync "margin" for some reason. Since we prefer seeing proper ++ * blanking instead of the overscan colour, and since the Crtc* values will ++ * probably get altered after us, we will disable margins altogether. With ++ * these calculations, Margins will plainly expand H/VDisplay, and we don't ++ * want that. -- libv ++ * ++ */ ++RRModePtr ++xmir_cvt(int HDisplay, int VDisplay, float VRefresh, Bool Reduced, ++ Bool Interlaced) ++{ ++ /* 1) top/bottom margin size (% of height) - default: 1.8 */ ++#define CVT_MARGIN_PERCENTAGE 1.8 ++ ++ /* 2) character cell horizontal granularity (pixels) - default 8 */ ++#define CVT_H_GRANULARITY 8 ++ ++ /* 4) Minimum vertical porch (lines) - default 3 */ ++#define CVT_MIN_V_PORCH 3 ++ ++ /* 4) Minimum number of vertical back porch lines - default 6 */ ++#define CVT_MIN_V_BPORCH 6 ++ ++ /* Pixel Clock step (kHz) */ ++#define CVT_CLOCK_STEP 250 ++ ++ Bool Margins = FALSE; ++ float VFieldRate, HPeriod; ++ int HDisplayRnd, HMargin; ++ int VDisplayRnd, VMargin, VSync; ++ float Interlace; /* Please rename this */ ++ char name[128]; ++ xRRModeInfo modeinfo; ++ ++ memset(&modeinfo, 0, sizeof modeinfo); ++ ++ /* CVT default is 60.0Hz */ ++ if (!VRefresh) ++ VRefresh = 60.0; ++ ++ /* 1. Required field rate */ ++ if (Interlaced) ++ VFieldRate = VRefresh * 2; ++ else ++ VFieldRate = VRefresh; ++ ++ /* 2. Horizontal pixels */ ++ HDisplayRnd = HDisplay - (HDisplay % CVT_H_GRANULARITY); ++ ++ /* 3. Determine left and right borders */ ++ if (Margins) { ++ /* right margin is actually exactly the same as left */ ++ HMargin = (((float) HDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0); ++ HMargin -= HMargin % CVT_H_GRANULARITY; ++ } ++ else ++ HMargin = 0; ++ ++ /* 4. Find total active pixels */ ++ modeinfo.width = HDisplayRnd + 2 * HMargin; ++ ++ /* 5. Find number of lines per field */ ++ if (Interlaced) ++ VDisplayRnd = VDisplay / 2; ++ else ++ VDisplayRnd = VDisplay; ++ ++ /* 6. Find top and bottom margins */ ++ /* nope. */ ++ if (Margins) ++ /* top and bottom margins are equal again. */ ++ VMargin = (((float) VDisplayRnd) * CVT_MARGIN_PERCENTAGE / 100.0); ++ else ++ VMargin = 0; ++ ++ modeinfo.height = VDisplay + 2 * VMargin; ++ ++ /* 7. Interlace */ ++ if (Interlaced) ++ Interlace = 0.5; ++ else ++ Interlace = 0.0; ++ ++ /* Determine VSync Width from aspect ratio */ ++ if (!(VDisplay % 3) && ((VDisplay * 4 / 3) == HDisplay)) ++ VSync = 4; ++ else if (!(VDisplay % 9) && ((VDisplay * 16 / 9) == HDisplay)) ++ VSync = 5; ++ else if (!(VDisplay % 10) && ((VDisplay * 16 / 10) == HDisplay)) ++ VSync = 6; ++ else if (!(VDisplay % 4) && ((VDisplay * 5 / 4) == HDisplay)) ++ VSync = 7; ++ else if (!(VDisplay % 9) && ((VDisplay * 15 / 9) == HDisplay)) ++ VSync = 7; ++ else /* Custom */ ++ VSync = 10; ++ ++ if (!Reduced) { /* simplified GTF calculation */ ++ ++ /* 4) Minimum time of vertical sync + back porch interval (µs) ++ * default 550.0 */ ++#define CVT_MIN_VSYNC_BP 550.0 ++ ++ /* 3) Nominal HSync width (% of line period) - default 8 */ ++#define CVT_HSYNC_PERCENTAGE 8 ++ ++ float HBlankPercentage; ++ int VSyncAndBackPorch, VBackPorch; ++ int HBlank; ++ ++ /* 8. Estimated Horizontal period */ ++ HPeriod = ((float) (1000000.0 / VFieldRate - CVT_MIN_VSYNC_BP)) / ++ (VDisplayRnd + 2 * VMargin + CVT_MIN_V_PORCH + Interlace); ++ ++ /* 9. Find number of lines in sync + backporch */ ++ if (((int) (CVT_MIN_VSYNC_BP / HPeriod) + 1) < ++ (VSync + CVT_MIN_V_PORCH)) ++ VSyncAndBackPorch = VSync + CVT_MIN_V_PORCH; ++ else ++ VSyncAndBackPorch = (int) (CVT_MIN_VSYNC_BP / HPeriod) + 1; ++ ++ /* 10. Find number of lines in back porch */ ++ VBackPorch = VSyncAndBackPorch - VSync; ++ (void) VBackPorch; ++ ++ /* 11. Find total number of lines in vertical field */ ++ modeinfo.vTotal = ++ VDisplayRnd + 2 * VMargin + VSyncAndBackPorch + Interlace + ++ CVT_MIN_V_PORCH; ++ ++ /* 5) Definition of Horizontal blanking time limitation */ ++ /* Gradient (%/kHz) - default 600 */ ++#define CVT_M_FACTOR 600 ++ ++ /* Offset (%) - default 40 */ ++#define CVT_C_FACTOR 40 ++ ++ /* Blanking time scaling factor - default 128 */ ++#define CVT_K_FACTOR 128 ++ ++ /* Scaling factor weighting - default 20 */ ++#define CVT_J_FACTOR 20 ++ ++#define CVT_M_PRIME CVT_M_FACTOR * CVT_K_FACTOR / 256 ++#define CVT_C_PRIME (CVT_C_FACTOR - CVT_J_FACTOR) * CVT_K_FACTOR / 256 + \ ++ CVT_J_FACTOR ++ ++ /* 12. Find ideal blanking duty cycle from formula */ ++ HBlankPercentage = CVT_C_PRIME - CVT_M_PRIME * HPeriod / 1000.0; ++ ++ /* 13. Blanking time */ ++ if (HBlankPercentage < 20) ++ HBlankPercentage = 20; ++ ++ HBlank = modeinfo.width * HBlankPercentage / (100.0 - HBlankPercentage); ++ HBlank -= HBlank % (2 * CVT_H_GRANULARITY); ++ ++ /* 14. Find total number of pixels in a line. */ ++ modeinfo.hTotal = modeinfo.width + HBlank; ++ ++ /* Fill in HSync values */ ++ modeinfo.hSyncEnd = modeinfo.width + HBlank / 2; ++ ++ modeinfo.hSyncStart = modeinfo.hSyncEnd - ++ (modeinfo.hTotal * CVT_HSYNC_PERCENTAGE) / 100; ++ modeinfo.hSyncStart += CVT_H_GRANULARITY - ++ modeinfo.hSyncStart % CVT_H_GRANULARITY; ++ ++ /* Fill in VSync values */ ++ modeinfo.vSyncStart = modeinfo.height + CVT_MIN_V_PORCH; ++ modeinfo.vSyncEnd = modeinfo.vSyncStart + VSync; ++ ++ } ++ else { /* Reduced blanking */ ++ /* Minimum vertical blanking interval time (µs) - default 460 */ ++#define CVT_RB_MIN_VBLANK 460.0 ++ ++ /* Fixed number of clocks for horizontal sync */ ++#define CVT_RB_H_SYNC 32.0 ++ ++ /* Fixed number of clocks for horizontal blanking */ ++#define CVT_RB_H_BLANK 160.0 ++ ++ /* Fixed number of lines for vertical front porch - default 3 */ ++#define CVT_RB_VFPORCH 3 ++ ++ int VBILines; ++ ++ /* 8. Estimate Horizontal period. */ ++ HPeriod = ((float) (1000000.0 / VFieldRate - CVT_RB_MIN_VBLANK)) / ++ (VDisplayRnd + 2 * VMargin); ++ ++ /* 9. Find number of lines in vertical blanking */ ++ VBILines = ((float) CVT_RB_MIN_VBLANK) / HPeriod + 1; ++ ++ /* 10. Check if vertical blanking is sufficient */ ++ if (VBILines < (CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH)) ++ VBILines = CVT_RB_VFPORCH + VSync + CVT_MIN_V_BPORCH; ++ ++ /* 11. Find total number of lines in vertical field */ ++ modeinfo.vTotal = VDisplayRnd + 2 * VMargin + Interlace + VBILines; ++ ++ /* 12. Find total number of pixels in a line */ ++ modeinfo.hTotal = modeinfo.width + CVT_RB_H_BLANK; ++ ++ /* Fill in HSync values */ ++ modeinfo.hSyncEnd = modeinfo.width + CVT_RB_H_BLANK / 2; ++ modeinfo.hSyncStart = modeinfo.hSyncEnd - CVT_RB_H_SYNC; ++ ++ /* Fill in VSync values */ ++ modeinfo.vSyncStart = modeinfo.height + CVT_RB_VFPORCH; ++ modeinfo.vSyncEnd = modeinfo.vSyncStart + VSync; ++ } ++ ++ /* 15/13. Find pixel clock frequency (kHz for xf86) */ ++ modeinfo.dotClock = modeinfo.hTotal * 1000.0 / HPeriod; ++ modeinfo.dotClock -= modeinfo.dotClock % CVT_CLOCK_STEP; ++ modeinfo.dotClock *= 1000.0; ++#if 0 ++ /* 16/14. Find actual Horizontal Frequency (kHz) */ ++ modeinfo.hSync = ((float) modeinfo.dotClock) / ((float) modeinfo.hTotal); ++#endif ++ ++#if 0 ++ /* 17/15. Find actual Field rate */ ++ modeinfo.vRefresh = (1000.0 * ((float) modeinfo.dotClock)) / ++ ((float) (modeinfo.hTotal * modeinfo.vTotal)); ++#endif ++ ++ /* 18/16. Find actual vertical frame frequency */ ++ /* ignore - just set the mode flag for interlaced */ ++ if (Interlaced) ++ modeinfo.vTotal *= 2; ++ ++ if (Reduced) ++ modeinfo.modeFlags |= RR_HSyncPositive | RR_VSyncNegative; ++ else ++ modeinfo.modeFlags |= RR_HSyncNegative | RR_VSyncPositive; ++ ++ if (Interlaced) ++ modeinfo.modeFlags |= RR_Interlace; ++ ++ snprintf(name, sizeof name, "%dx%d@%.1fHz", ++ modeinfo.width, modeinfo.height, VRefresh); ++ modeinfo.nameLength = strlen(name); ++ ++ return RRModeGet(&modeinfo, name); ++} +--- /dev/null ++++ b/hw/xmir/xmir-dri2.c +@@ -0,0 +1,564 @@ ++/* ++ * Copyright © 2015 Canonical 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 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. ++ */ ++ ++#include "glamor_priv.h" ++#include "glamor_transform.h" ++#include "xmir.h" ++ ++#include ++#include ++#include ++#include ++ ++#define MESA_EGL_NO_X11_HEADERS ++#include ++#include ++#include ++#include ++/* FIXME: This should not be mandatory, especially on Android (LP: #1502794) */ ++#include ++ ++/* XMir dri2 support: ++ * ++ * Pixmaps: ++ * DRI2BufferFrontLeft: glamor pixmap ++ * DRI2BufferFakeFrontLeft: last page flipped bo ++ * DRI2BufferBackLeft: MirNativeBuffer ++ * ++ * Swap support: ++ * Page will get flipped from BackLeft to FrontLeft, ++ * but what happens is that we call mir_surface_swap_buffers ++ * ++ * There is no guarantee X and DRI2 is serialized, unless the ++ * glXWaitGL and glXWaitX calls are used. These calls are implemented ++ * by copying FakeFront to Front for glXWaitGL, and ++ * Front to FakeFront for glXwaitX ++ * ++ * TODO: ++ * - Make xmir_dri2_copy_region do something. ++ */ ++ ++static char ++is_fd_render_node(int fd) ++{ ++ struct stat render; ++ ++ if (fstat(fd, &render)) ++ return 0; ++ if (!S_ISCHR(render.st_mode)) ++ return 0; ++ if (render.st_rdev & 0x80) ++ return 1; ++ ++ return 0; ++} ++ ++static Bool ++xmir_dri2_flink(int drm_fd, unsigned int handle, unsigned int *name) ++{ ++ struct drm_gem_flink flink; ++ ++ flink.handle = handle; ++ if (ioctl(drm_fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) ++ return 0; ++ *name = flink.name; ++ return 1; ++} ++ ++static struct xmir_window * ++xmir_window_swappable_parent(WindowPtr win) ++{ ++ ScreenPtr screen = win->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ PixmapPtr root, pixmap; ++ ++ if (xmir_screen->rootless) ++ return NULL; ++ ++ root = screen->GetScreenPixmap(screen); ++ pixmap = screen->GetWindowPixmap(win); ++ ++ if (root == pixmap && ++ win->drawable.depth == pixmap->drawable.depth && ++ win->drawable.height == pixmap->drawable.height && ++ win->drawable.width == pixmap->drawable.width) ++ return xmir_window_get(screen->root); ++ ++ return NULL; ++} ++ ++static void ++xmir_dri2_reusebuffer_notify(DrawablePtr draw, DRI2BufferPtr buf) ++{ ++ struct xmir_window *xmir_window; ++ struct xmir_screen *xmir_screen; ++ struct xmir_pixmap *xmir_pixmap; ++ struct gbm_bo *bo; ++ ++ if (buf->attachment != DRI2BufferBackLeft || draw->type != DRAWABLE_WINDOW) ++ return; ++ ++ xmir_window = xmir_window_get((WindowPtr)draw); ++ if (!xmir_window) ++ return; ++ ++ xmir_screen = xmir_screen_get(draw->pScreen); ++ if (xmir_window->back_pixmap) ++ FatalError("Returned before swapping?\n"); ++ ++ if (xmir_window->surface) { ++ buf->driverPrivate = xmir_glamor_win_get_back(xmir_screen, xmir_window, &xmir_window->window->drawable); ++ xmir_pixmap = xmir_pixmap_get(buf->driverPrivate); ++ } ++ else { ++ struct xmir_window *xmir_window_parent = xmir_window_swappable_parent((WindowPtr)draw); ++ ++ if (xmir_window_parent && xmir_window_parent->back_pixmap) ++ FatalError("Returned before swapping?!\n"); ++ ++ if (buf->driverPrivate) { ++ xmir_pixmap = xmir_pixmap_get(buf->driverPrivate); ++ ++ if (xmir_pixmap->fake_back && !xmir_window_parent) ++ return; ++ ++ draw->pScreen->DestroyPixmap(buf->driverPrivate); ++ } ++ ++ buf->driverPrivate = xmir_glamor_win_get_back(xmir_screen, xmir_window_parent ?: xmir_window, &xmir_window->window->drawable); ++ xmir_pixmap = xmir_pixmap_get(buf->driverPrivate); ++ } ++ bo = xmir_pixmap->bo; ++ if (!bo) ++ FatalError("Uh oh!\n"); ++ ++ buf->pitch = gbm_bo_get_stride(bo); ++ xmir_dri2_flink(xmir_screen->drm_fd, gbm_bo_get_handle(bo).u32, &buf->name); ++} ++ ++static void ++xmir_dri2_auth_magic_reply(MirConnection* con, MirPlatformMessage* reply, Bool* ret) ++{ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ struct MirMesaAuthMagicResponse const* response; ++ unsigned int opcode = mir_platform_message_get_opcode(reply); ++ MirPlatformMessageData data = mir_platform_message_get_data(reply); ++ ++ *ret = 0; ++ response = data.data; ++ ++ if (auth_magic != opcode || ++ data.size != sizeof response || ++ response == NULL) ++ { ++ mir_platform_message_release(reply); ++ return; ++ } ++ ++ /* status == 0 indciates success */ ++ if (response->status == 0) ++ *ret = 1; ++ mir_platform_message_release(reply); ++#pragma GCC diagnostic pop ++} ++ ++static Bool ++xmir_dri2_auth_magic(ScreenPtr screen, uint32_t magic) ++{ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ Bool ret = 0; ++ MirPlatformMessage *msg = NULL; ++ ++ if (!is_fd_render_node(xmir_screen->drm_fd)) { ++ struct MirMesaAuthMagicRequest req = { ++ .magic = magic ++ }; ++ msg = mir_platform_message_create(auth_magic); ++ ++ if (msg == NULL) ++ return ret; ++ ++ mir_platform_message_set_data(msg, &req, sizeof req); ++/* FIXME: This should not be mandatory, especially on Android (LP: #1502794) */ ++ mir_wait_for(mir_connection_platform_operation( ++ xmir_screen->conn, ++ msg, ++ (mir_platform_operation_callback)&xmir_dri2_auth_magic_reply, ++ &ret)); ++ mir_platform_message_release(msg); ++ } ++ ++ return ret; ++#pragma GCC diagnostic pop ++} ++ ++static DRI2BufferPtr ++xmir_dri2_create_buffer(ScreenPtr screen, DrawablePtr pDraw, ++ unsigned int attachment, unsigned int format) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_pixmap *xmir_pixmap; ++ struct xmir_window *xmir_window = NULL; ++ PixmapPtr pixmap; ++ DRI2BufferPtr ret = malloc(sizeof(*ret)); ++ struct gbm_bo *bo = NULL; ++ unsigned int bpp = max(format, pDraw->bitsPerPixel); ++ ++ if (format && format < pDraw->bitsPerPixel && format < 24) { ++ ErrorF("Format %u must match bpp %u for window\n", format, pDraw->bitsPerPixel); ++ return NULL; ++ } ++ ++ if (pDraw->type == DRAWABLE_WINDOW) { ++ struct xmir_window *xmir_window_parent; ++ ++ xmir_window = xmir_window_get((WindowPtr)pDraw); ++ xmir_window_parent = xmir_window_swappable_parent((WindowPtr)pDraw); ++ ++ if (xmir_window_parent) ++ xmir_window = xmir_window_parent; ++ ++ pixmap = screen->GetWindowPixmap((WindowPtr)pDraw); ++ } ++ else ++ pixmap = (PixmapPtr)pDraw; ++ ++ ret->attachment = attachment; ++ ret->format = format; ++ ret->driverPrivate = NULL; ++ ret->flags = 0; ++ ret->cpp = bpp / 8; ++ ++ ret->name = 0; ++ ret->pitch = 0; ++ ++ switch (attachment) { ++ case DRI2BufferFakeFrontLeft: ++ if (xmir_window && xmir_window->front_pixmap) { ++ xmir_pixmap = xmir_pixmap_get(xmir_window->front_pixmap); ++ bo = xmir_pixmap->bo; ++ break; ++ } ++ /* Fall-through */ ++ case DRI2BufferFrontLeft: ++ xmir_pixmap = xmir_pixmap_get(pixmap); ++ ++ if (!xmir_pixmap) { ++ CARD16 pitch; ++ CARD32 size; ++ ++ ret->name = glamor_name_from_pixmap(pixmap, &pitch, &size); ++ ret->pitch = pitch; ++ return ret; ++ } ++ bo = xmir_pixmap->bo; ++ ++ if (!bo) { ++ ErrorF("Window doesn't have a mir backing?\n"); ++ break; ++ } ++ break; ++ case DRI2BufferBackLeft: { ++ ret->driverPrivate = pixmap = xmir_glamor_win_get_back(xmir_screen, xmir_window, pDraw); ++ bo = xmir_pixmap_get(pixmap)->bo; ++ break; ++ } ++ default: ++ ErrorF("Unsupported attachment %i\n", attachment); ++ return NULL; ++ } ++ ++ if (!bo) { ++ ErrorF("Cannot create a %u attachment for a %u\n", attachment, pDraw->type); ++ free(ret); ++ return NULL; ++ } ++ DebugF("Allocated a %u attachment for %p/%u\n", attachment, pDraw, pDraw->type); ++ ret->pitch = gbm_bo_get_stride(bo); ++ xmir_dri2_flink(xmir_screen->drm_fd, gbm_bo_get_handle(bo).u32, &ret->name); ++ return ret; ++} ++ ++static void ++xmir_dri2_destroy_buffer(ScreenPtr screen, DrawablePtr pDraw, DRI2BufferPtr buf) ++{ ++ DebugF("DestroyBuffer %p/%u\n", buf, buf->attachment); ++ ++ if (buf->driverPrivate) ++ screen->DestroyPixmap(buf->driverPrivate); ++ free(buf); ++} ++ ++static void ++xmir_dri2_copy_region(ScreenPtr pScreen, DrawablePtr draw, RegionPtr region, ++ DRI2BufferPtr dest, DRI2BufferPtr src) ++{ ++ struct xmir_window *xmir_window = NULL; ++ ScreenPtr screen = draw->pScreen; ++ ++ if (draw->type != DRAWABLE_WINDOW) ++ FatalError("Can't copy :-(\n"); ++ ++ if (src->attachment == DRI2BufferFakeFrontLeft && dest->attachment == DRI2BufferFrontLeft) ++ ErrorF("glXWaitGL\n"); ++ else if (src->attachment == DRI2BufferFrontLeft && dest->attachment == DRI2BufferFakeFrontLeft) ++ ErrorF("glXWaitX\n"); ++ else { ++ /* No swap interval, copy to front */ ++ int dx, dy; ++ PixmapPtr dsrc = src->driverPrivate; ++ PixmapPtr pixmap; ++ ++ if (draw->type == DRAWABLE_WINDOW) { ++ pixmap = screen->GetWindowPixmap((WindowPtr)draw); ++ xmir_window = xmir_window_get((WindowPtr)draw); ++ } ++ else ++ pixmap = (PixmapPtr)draw; ++ ++ dx = draw->x - pixmap->screen_x; ++ dy = draw->y - pixmap->screen_y; ++ ++ DebugF("Copying region! from %p/%u to %p/%u on %p/%u\n", ++ src, src->attachment, dest, dest->attachment, draw, draw->type); ++ ++ glamor_set_destination_pixmap(pixmap); ++ xmir_glamor_copy_egl_common(&dsrc->drawable, dsrc, glamor_get_pixmap_private(dsrc), ++ RegionExtents(region), dsrc->drawable.width, dsrc->drawable.height, ++ dx, dy, xmir_window ? xmir_window->orientation : 0); ++ ++ RegionTranslate(region, draw->x, draw->y); ++ DamageDamageRegion(draw, region); ++ } ++} ++ ++static int ++xmir_dri2_schedule_swap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr dest, DRI2BufferPtr src, ++ CARD64 *target_msc, CARD64 divisor, CARD64 remainder, ++ DRI2SwapEventPtr func, void *data) ++{ ++ ScreenPtr screen = draw->pScreen; ++ struct xmir_pixmap *xmir_pixmap; ++ struct xmir_window *xmir_window = NULL; ++ PixmapPtr pixmap; ++ int type; ++ RegionRec region; ++ int ret = 1; ++ ++ /* Noop on a glxpixmap */ ++ if (draw->type == DRAWABLE_WINDOW) { ++ xmir_window = xmir_window_get((WindowPtr)draw); ++ pixmap = screen->GetWindowPixmap((WindowPtr)draw); ++ ++ /* Make sure DRI2GetBuffers blocks, there is no updated buffer until the next flip */ ++ DRI2SwapLimit(draw, 1); ++ } ++ else { ++ pixmap = (PixmapPtr)draw; ++ memset(target_msc, 0, sizeof(*target_msc)); ++ } ++ ++ xmir_pixmap = xmir_pixmap_get(pixmap); ++ if ((!xmir_pixmap || xmir_pixmap->fake_back) && (!xmir_window || !xmir_window->surface)) { ++ PixmapRegionInit(®ion, src->driverPrivate); ++ ++ if (draw->width == pixmap->drawable.width && draw->height == pixmap->drawable.height) { ++ glamor_pixmap_fbo *glamor_front, *glamor_back; ++ struct xmir_pixmap swap_pix; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ ++ /* Exchange pixmap data with the front glamor pixmap, and update src name/pitch */ ++ DebugF("%s: Exchanging glamor pixmap from %ux%u to %ux%u\n", ++ GetClientCmdName(client), draw->width, draw->height, ++ pixmap->drawable.width, pixmap->drawable.height); ++ type = DRI2_EXCHANGE_COMPLETE; ++ ++ src->pitch = gbm_bo_get_stride(xmir_pixmap->bo); ++ xmir_dri2_flink(xmir_screen->drm_fd, gbm_bo_get_handle(xmir_pixmap->bo).u32, &src->name); ++ ++ glamor_front = glamor_pixmap_detach_fbo(glamor_get_pixmap_private(pixmap)); ++ glamor_back = glamor_pixmap_detach_fbo(glamor_get_pixmap_private(src->driverPrivate)); ++ ++ glamor_pixmap_attach_fbo(pixmap, glamor_back); ++ glamor_pixmap_attach_fbo(src->driverPrivate, glamor_front); ++ ++ swap_pix = *xmir_pixmap; ++ *xmir_pixmap = *xmir_pixmap_get(src->driverPrivate); ++ *xmir_pixmap_get(src->driverPrivate) = swap_pix; ++ } ++ else { ++ PixmapPtr dsrc = src->driverPrivate; ++ int dx = draw->x - pixmap->screen_x, dy = draw->y - pixmap->screen_y; ++ ++ type = DRI2_BLIT_COMPLETE; ++ glamor_set_destination_pixmap(pixmap); ++ ++ DebugF("%s: Blitting into glamor pixmap from src %u,%u %ux%u@%u draw %u,%u %ux%u@%u to %u,%u %ux%u@%u\n", ++ GetClientCmdName(client), dsrc->drawable.x, dsrc->drawable.y, ++ dsrc->drawable.width, dsrc->drawable.height, dsrc->drawable.depth, ++ draw->x, draw->y, draw->width, draw->height, draw->depth, ++ pixmap->drawable.x, pixmap->drawable.y, ++ pixmap->drawable.width, pixmap->drawable.height, pixmap->drawable.depth); ++ ++ xmir_glamor_copy_egl_common(&dsrc->drawable, dsrc, glamor_get_pixmap_private(dsrc), ++ RegionExtents(®ion), dsrc->drawable.width, dsrc->drawable.height, ++ dx, dy, xmir_window ? xmir_window->orientation : 0); ++ } ++ RegionTranslate(®ion, draw->x, draw->y); ++ } ++ else { ++ if (!xmir_window->surface) ++ xmir_window = xmir_window_get(screen->root); ++ ++ if (xmir_window->back_pixmap) ++ FatalError("Swapping twice?\n"); ++ ++ /* Fastest case, no pixels need to be copied! */ ++ type = DRI2_FLIP_COMPLETE; ++ ++ xmir_window->back_pixmap = src->driverPrivate; ++ src->driverPrivate = NULL; ++ ++ DebugF("%s: Queuing flip on %p\n", GetClientCmdName(client), draw); ++ } ++ ++ if (!xmir_window) { ++ DebugF("%s: No window, completing immediately\n", GetClientCmdName(client)); ++ ++ DRI2SwapComplete(client, draw, 0, 0, 0, type, func, data); ++ goto err; ++ } ++ ++ xmir_window->flip = (typeof(xmir_window->flip)){ client, type, draw, func, data, xmir_window->flip.entry }; ++ ++ if (!xmir_window->surface) { ++ struct xorg_list *entry = &xmir_window->flip.entry; ++ ++ if (!xorg_list_is_empty(&xmir_window->flip.entry)) ++ FatalError("%s: Flipping child window repeatedly!\n", GetClientCmdName(client)); ++ ++ while (!xmir_window->surface) { ++ WindowPtr window = xmir_window->window->parent; ++ if (!window) { ++ ErrorF("%s: Could not find mir surface for swapping!\n", GetClientCmdName(client)); ++ ret = 0; ++ goto err; ++ } ++ ++ xmir_window = xmir_window_get(window); ++ } ++ xorg_list_add(entry, &xmir_window->flip.entry); ++ } ++ ++ /* Must report damage after adding flip entry, in case flip completes immediately */ ++ if (type != DRI2_FLIP_COMPLETE) { ++ DamageDamageRegion(draw, ®ion); ++ RegionUninit(®ion); ++ } ++ else ++ DamageReportDamage(xmir_window->damage, &xmir_window->region); ++ ++ return 1; ++ ++err: ++ RegionUninit(®ion); ++ DRI2SwapLimit(draw, 2); ++ return ret; ++} ++ ++static Bool ++xmir_dri2_swap_limit_validate(DrawablePtr draw, int swap_limit) ++{ ++ if ((swap_limit < 1) || (swap_limit > 2)) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++static int xmir_dri_get_msc(DrawablePtr draw, CARD64 *ust, CARD64 *msc) ++{ ++ /* TODO: Implement this properly after Mir implements it. */ ++ const uint64_t now_us = GetTimeInMicros(); ++ const uint64_t fake_frame_rate_hz = 60; ++ const uint64_t fake_frame_time_us = 1000000 / fake_frame_rate_hz; ++ const uint64_t fake_msc = now_us / fake_frame_time_us; ++ const uint64_t fake_ust = fake_msc * fake_frame_time_us; ++ if (ust) ++ *(uint64_t*)ust = fake_ust; ++ if (msc) ++ *(uint64_t*)msc = fake_msc; ++ return Success; ++} ++ ++Bool ++xmir_dri2_screen_init(struct xmir_screen *xmir_screen) ++{ ++ const char *driverNames[2]; ++ Bool ret; ++ drmVersion *vers = drmGetVersion(xmir_screen->drm_fd); ++ const char *driver; ++ ++ if (!vers) ++ return FALSE; ++ ++ xmir_screen->dri2.version = 9; ++ ++ /* Abuse the megablob ability to load all needed drivers */ ++ if (!strcmp(vers->name, "radeon")) ++ driver = "r600"; ++ else ++ driver = vers->name; ++ ++ driverNames[0] = driverNames[1] = xmir_screen->driver_name = strdup(driver); ++ drmFreeVersion(vers); ++ ++ /* As far as I can tell, only legacy AuthMagic has a use for the fd.. oh well */ ++ xmir_screen->dri2.fd = xmir_screen->drm_fd; ++ xmir_screen->dri2.driverName = driverNames[0]; ++ xmir_screen->dri2.deviceName = xmir_screen->device_name; ++ ++ xmir_screen->dri2.numDrivers = 2; ++ xmir_screen->dri2.driverNames = driverNames; ++ ++ /* 6 */ ++ xmir_screen->dri2.ReuseBufferNotify = xmir_dri2_reusebuffer_notify; ++ xmir_screen->dri2.SwapLimitValidate = xmir_dri2_swap_limit_validate; ++ xmir_screen->dri2.ScheduleSwap = xmir_dri2_schedule_swap; ++ xmir_screen->dri2.GetMSC = xmir_dri_get_msc; ++ ++ /* 8 */ ++ xmir_screen->dri2.AuthMagic2 = xmir_dri2_auth_magic; ++ ++ /* 9 */ ++ xmir_screen->dri2.CreateBuffer2 = xmir_dri2_create_buffer; ++ xmir_screen->dri2.DestroyBuffer2 = xmir_dri2_destroy_buffer; ++ xmir_screen->dri2.CopyRegion2 = xmir_dri2_copy_region; ++ ++ ret = DRI2ScreenInit(xmir_screen->screen, &xmir_screen->dri2); ++ return ret; ++} +--- /dev/null ++++ b/hw/xmir/xmir-glamor.c +@@ -0,0 +1,1156 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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. ++ */ ++ ++/* include glamor_priv instead of the public headers to get the prototype for glamor_copy_n_to_n */ ++#include "glamor_priv.h" ++#include "xmir.h" ++ ++#include ++ ++#include ++#include ++#include ++#include ++ ++#define MESA_EGL_NO_X11_HEADERS ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++static void ++xmir_glamor_egl_make_current(struct glamor_context *glamor_ctx) ++{ ++ if (!glamor_ctx->drawable) ++ eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, ++ EGL_NO_SURFACE, EGL_NO_CONTEXT); ++ ++ if (!eglMakeCurrent(glamor_ctx->display, ++ glamor_ctx->drawable, glamor_ctx->drawable, ++ glamor_ctx->ctx)) ++ FatalError("Failed to make EGL context current\n"); ++} ++ ++void ++glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ ++ glamor_ctx->ctx = xmir_screen->egl_context; ++ glamor_ctx->display = xmir_screen->egl_display; ++ ++ glamor_ctx->make_current = xmir_glamor_egl_make_current; ++ glamor_ctx->drawable = xmir_screen->egl_surface; ++ ++ xmir_screen->glamor_ctx = glamor_ctx; ++} ++ ++static PixmapPtr ++xmir_glamor_win_reuse_pixmap(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, DrawablePtr draw) ++{ ++ struct xmir_pixmap *xmir_pixmap; ++ PixmapPtr ret; ++ ++ if (!xmir_win->reuse_pixmap) ++ return NULL; ++ ++ ret = xmir_win->reuse_pixmap; ++ xmir_win->reuse_pixmap = NULL; ++ ++ xmir_pixmap = xmir_pixmap_get(ret); ++ eglDestroyImageKHR(xmir_screen->egl_display, xmir_pixmap->image); ++ gbm_bo_destroy(xmir_pixmap->bo); ++ memset(xmir_pixmap, 0, sizeof(*xmir_pixmap)); ++ return ret; ++} ++ ++PixmapPtr ++xmir_glamor_win_get_back(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, DrawablePtr draw) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ struct xmir_pixmap *xmir_pixmap; ++ PixmapPtr ret = NULL; ++ struct gbm_bo *bo; ++ unsigned int tex; ++ ++ if (xmir_win) { ++ if (xmir_win->back_pixmap) { ++ ErrorF("Uh oh!\n"); ++ return xmir_win->back_pixmap; ++ } ++ ++ ret = xmir_glamor_win_reuse_pixmap(xmir_screen, xmir_win, draw); ++ } ++ ++ if (!ret) ++ ret = screen->CreatePixmap(screen, ++ draw->width, draw->height, draw->depth, ++ XMIR_CREATE_PIXMAP_USAGE_FLIP); ++ ++ xmir_pixmap = xmir_pixmap_get(ret); ++ ++ if (xmir_win && xmir_win->surface) { ++ MirNativeBuffer *buffer; ++ struct gbm_import_fd_data gbm_data; ++ ++ mir_buffer_stream_get_current_buffer(mir_window_get_buffer_stream(xmir_win->surface), &buffer); ++ ++ gbm_data.fd = buffer->fd[0]; ++ gbm_data.width = buffer->width; ++ gbm_data.height = buffer->height; ++ gbm_data.stride = buffer->stride; ++ gbm_data.format = GBM_FORMAT_ARGB8888; /* TODO: detect this properly */ ++ ++ bo = gbm_bo_import(xmir_screen->gbm, GBM_BO_IMPORT_FD, &gbm_data, GBM_BO_USE_RENDERING); ++ xmir_pixmap->fake_back = false; ++ } ++ else { ++ bo = gbm_bo_create(xmir_screen->gbm, draw->width, draw->height, ++ GBM_FORMAT_ARGB8888, ++ GBM_BO_USE_RENDERING); ++ xmir_pixmap->fake_back = true; ++ } ++ if (!bo) ++ FatalError("Failed to allocate bo\n"); ++ ++ ret->devKind = gbm_bo_get_stride(bo); ++ xmir_pixmap->bo = bo; ++ xmir_pixmap->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_NATIVE_PIXMAP_KHR, bo, NULL); ++ ++ glGenTextures(1, &tex); ++ glBindTexture(GL_TEXTURE_2D, tex); ++ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, xmir_pixmap->image); ++ glBindTexture(GL_TEXTURE_2D, 0); ++ glamor_set_pixmap_texture(ret, tex); ++ ++ return ret; ++} ++ ++static void ++complete_flips(struct xmir_window *xmir_win) ++{ ++ if (xmir_win->flip.client) { ++ DebugF("Flipping on %p\n", xmir_win->window); ++ ++ DRI2SwapComplete(xmir_win->flip.client, xmir_win->flip.draw, 0, 0, 0, xmir_win->flip.type, xmir_win->flip.func, xmir_win->flip.data); ++ DRI2SwapLimit(xmir_win->flip.draw, 2); ++ xmir_win->flip.client = NULL; ++ } ++ ++ if (!xmir_win->surface) { ++ xorg_list_del(&xmir_win->flip.entry); ++ return; ++ } ++ ++ while (!xorg_list_is_empty(&xmir_win->flip.entry)) { ++ struct xmir_window *xwin = xorg_list_first_entry(&xmir_win->flip.entry, struct xmir_window, flip.entry); ++ struct xmir_flip *flip = &xwin->flip; ++ ++ DebugF("Flipping child %p\n", xwin->window); ++ ++ DRI2SwapComplete(flip->client, flip->draw, 0, 0, 0, flip->type, flip->func, flip->data); ++ DRI2SwapLimit(flip->draw, 2); ++ flip->client = NULL; ++ xorg_list_del(&flip->entry); ++ } ++} ++ ++static void ++xmir_glamor_copy_egl_tex(int fbo, DrawablePtr src, PixmapPtr src_pixmap, glamor_pixmap_private *src_pixmap_priv, BoxPtr box, EGLint width, EGLint height, int dstx, int dsty, int orientation) ++{ ++ glamor_screen_private *glamor_priv = glamor_get_screen_private(src->pScreen); ++ struct xmir_screen *xmir_screen = xmir_screen_get(src->pScreen); ++ float vertices[8], texcoords[8]; ++ GLfloat src_xscale, src_yscale, dst_xscale = 1.0 / width, dst_yscale = 1.0 / height; ++ int dx, dy; ++ ++ bool reflect_x = false; ++ bool reflect_y = false; ++ bool swap_xy = false; ++ BoxRec dbox; ++ ++ /* reflection test parameters */ ++ bool magic_x_invert = false, magic_y_invert = false; ++ ++ if (xmir_screen->doubled) { ++ dst_xscale /= (1. + xmir_screen->doubled); ++ dst_yscale /= (1. + xmir_screen->doubled); ++ } ++ ++ if (magic_x_invert) ++ reflect_x = !reflect_x; ++ ++ if (magic_y_invert) ++ reflect_y = !reflect_y; ++ ++ switch (orientation) { ++ case 90: ++ reflect_y = !reflect_y; reflect_x = !reflect_x; swap_xy = true; break; ++ case 180: ++ reflect_x = !reflect_x; reflect_y = !reflect_y; break; ++ case 270: ++ swap_xy = true; break; ++ } ++ ++ glamor_get_drawable_deltas(src, src_pixmap, &dx, &dy); ++ ++ pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); ++ ++ if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED) ++ FatalError("aeiou\n"); ++ ++ glViewport(dx, dy, width + dx, height + dy); ++ ++ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, ++ GL_FALSE, 2 * sizeof(float), vertices); ++ glEnableVertexAttribArray(GLAMOR_VERTEX_POS); ++ ++ if (!fbo) { ++ glActiveTexture(GL_TEXTURE0); ++ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex); ++ ++ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); ++ } ++ } ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); ++ ++ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE, ++ 2 * sizeof(float), texcoords); ++ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); ++ ++ if (!swap_xy) { ++ float _tx1, _tx2, _ty1, _ty2; ++ ++ if (reflect_x) { ++ dbox.x1 = box->x2 + dstx; ++ dbox.x2 = box->x1 + dstx; ++ } ++ else { ++ dbox.x1 = box->x1 + dstx; ++ dbox.x2 = box->x2 + dstx; ++ } ++ ++ if (reflect_y) { ++ dbox.y1 = box->y2 + dsty; ++ dbox.y2 = box->y1 + dsty; ++ } ++ else { ++ dbox.y1 = box->y1 + dsty; ++ dbox.y2 = box->y2 + dsty; ++ } ++ ++ _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); ++ _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); ++ ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); ++ ++ /* upper left */ ++ vertices[0] = _tx1; ++ vertices[1] = _ty1; ++ ++ /* upper right */ ++ vertices[2] = _tx2; ++ vertices[3] = _ty1; ++ ++ /* bottom right */ ++ vertices[4] = _tx2; ++ vertices[5] = _ty2; ++ ++ /* bottom left */ ++ vertices[6] = _tx1; ++ vertices[7] = _ty2; ++ } ++ else { ++ float _tx1, _tx2, _ty1, _ty2; ++ ++ if (reflect_x) { ++ dbox.y1 = box->x2 + dstx; ++ dbox.y2 = box->x1 + dstx; ++ } ++ else { ++ dbox.y1 = box->x1 + dstx; ++ dbox.y2 = box->x2 + dstx; ++ } ++ ++ if (reflect_y) { ++ dbox.x1 = box->y2 + dsty; ++ dbox.x2 = box->y1 + dsty; ++ } ++ else { ++ dbox.x1 = box->y1 + dsty; ++ dbox.x2 = box->y2 + dsty; ++ } ++ ++ _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); ++ _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); ++ ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); ++ ++ /* upper right */ ++ vertices[0] = _tx2; ++ vertices[1] = _ty1; ++ ++ /* bottom right */ ++ vertices[2] = _tx2; ++ vertices[3] = _ty2; ++ ++ /* bottom left */ ++ vertices[4] = _tx1; ++ vertices[5] = _ty2; ++ ++ /* upper left */ ++ vertices[6] = _tx1; ++ vertices[7] = _ty1; ++ } ++ ++ if (orientation) ++ DebugF("(%u,%u)(%u,%u) -> (%u,%u)(%u,%u) with %u orientation\n", ++ box->x1 + dx, box->y1 + dy, box->x2 + dx, box->y2 + dy, ++ dbox.x1, dbox.y1, dbox.x2, dbox.y2, orientation); ++ ++ glamor_set_normalize_tcoords_ext(src_pixmap_priv, ++ src_xscale, src_yscale, ++ box->x1 + dx, box->y1 + dy, ++ box->x2 + dx, box->y2 + dy, ++ texcoords, 2); ++ glDrawArrays(GL_TRIANGLE_FAN, 0, 4); ++ ++ glDisableVertexAttribArray(GLAMOR_VERTEX_POS); ++ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); ++} ++ ++void ++xmir_glamor_copy_egl_common(DrawablePtr src, PixmapPtr src_pixmap, ++ glamor_pixmap_private *src_pixmap_priv, ++ BoxPtr ext, int width, int height, int dx, int dy, ++ int orientation) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(src->pScreen); ++ DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2); ++ ++ if (xmir_screen->glamor_has_GL_EXT_framebuffer_blit && ++ !xmir_screen->doubled && !orientation) { ++ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb); ++ ++ glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1, ++ ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy, ++ GL_COLOR_BUFFER_BIT, GL_LINEAR); ++ } ++ else ++ xmir_glamor_copy_egl_tex(0, src, src_pixmap, src_pixmap_priv, ext, width, height, dx, dy, orientation); ++} ++ ++static void ++xmir_glamor_copy_gbm(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, RegionPtr dirty) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ WindowPtr window = xmir_win->window; ++ ++ if (lastGLContext != xmir_screen->egl_context) { ++ lastGLContext = xmir_screen->egl_context; ++ xmir_glamor_egl_make_current(xmir_screen->glamor_ctx); ++ } ++ ++ complete_flips(xmir_win); ++ ++ if (xmir_win->front_pixmap) { ++ if (xmir_win->reuse_pixmap) { ++ ErrorF("Got too many buffers!\n"); ++ screen->DestroyPixmap(xmir_win->reuse_pixmap); ++ } ++ ++ xmir_win->reuse_pixmap = xmir_win->front_pixmap; ++ } ++ ++ if (!xmir_win->back_pixmap) { ++ PixmapPtr back = xmir_glamor_win_get_back(xmir_screen, xmir_win, &window->drawable); ++ PixmapPtr from = screen->GetWindowPixmap(window); ++ glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back); ++ ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); ++ xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from), ++ RegionExtents(dirty), ++ back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation); ++ ++ xmir_win->front_pixmap = back; ++ glBindFramebuffer(GL_FRAMEBUFFER, 0); ++ } ++ else { ++ xmir_win->front_pixmap = xmir_win->back_pixmap; ++ xmir_win->back_pixmap = NULL; ++ } ++} ++ ++static GLint xmir_glamor_passthrough_prog(ScreenPtr screen) ++{ ++ const char *vs_source = ++ "attribute vec4 v_position;\n" ++ "attribute vec4 v_texcoord0;\n" ++ "varying vec2 source_texture;\n" ++ "void main()\n" ++ "{\n" ++ " gl_Position = v_position;\n" ++ " source_texture = v_texcoord0.xy;\n" ++ "}\n"; ++ ++ const char *fs_source = ++ GLAMOR_DEFAULT_PRECISION ++ "varying vec2 source_texture;\n" ++ "uniform sampler2D sampler;\n" ++ "void main()\n" ++ "{\n" ++ " gl_FragColor = texture2D(sampler, source_texture);\n" ++ "}\n"; ++ ++ ++ GLint fs_prog, vs_prog; ++ GLint sampler_uniform_location; ++ GLint passthrough_prog = glCreateProgram(); ++ ++ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, vs_source); ++ ++ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, fs_source); ++ ++ glAttachShader(passthrough_prog, vs_prog); ++ glAttachShader(passthrough_prog, fs_prog); ++ ++ glBindAttribLocation(passthrough_prog, ++ GLAMOR_VERTEX_POS, "v_position"); ++ glBindAttribLocation(passthrough_prog, ++ GLAMOR_VERTEX_SOURCE, "v_texcoord0"); ++ glamor_link_glsl_prog(screen, passthrough_prog, ++ "finish swap through blit"); ++ ++ sampler_uniform_location = ++ glGetUniformLocation(passthrough_prog, "sampler"); ++ glUseProgram(passthrough_prog); ++ glUniform1i(sampler_uniform_location, 0); ++ ++ return passthrough_prog; ++} ++ ++static void * ++xmir_glamor_flip(void *data) ++{ ++ struct xmir_screen *xmir_screen = data; ++ struct glamor_screen_private *glamor_priv = ++ glamor_get_screen_private(xmir_screen->screen); ++ int passthrough_prog; ++ GLuint tex; ++ ++ pthread_mutex_lock(&xmir_screen->mutex); ++ if (xmir_screen->alive < 0) ++ pthread_exit(NULL); ++ ++ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) ++ eglBindAPI(EGL_OPENGL_API); ++ ++ xmir_screen->alive = 1; ++ if (!eglMakeCurrent(xmir_screen->egl_display, xmir_screen->swap_surface, xmir_screen->swap_surface, xmir_screen->swap_context)) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ passthrough_prog = xmir_glamor_passthrough_prog(xmir_screen->screen); ++ ++ glGenTextures(1, &tex); ++ glBindTexture(GL_TEXTURE_2D, tex); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); ++ ++ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); ++ } ++ ++ while (xmir_screen->alive >= 0) { ++ if (xorg_list_is_empty(&xmir_screen->swap_list)) ++ pthread_cond_wait(&xmir_screen->cond, &xmir_screen->mutex); ++ ++ while (!xorg_list_is_empty(&xmir_screen->swap_list)) { ++ struct xmir_window *xmir_win; ++ Bool ret; ++ EGLint val, width, height; ++ PixmapPtr src_pixmap; ++ ++ xmir_win = xorg_list_first_entry(&xmir_screen->swap_list, struct xmir_window, flip.entry); ++ ++ DebugF("Handling %p\n", xmir_win); ++ if (xmir_win->flip.data) { ++ val = eglClientWaitSync(xmir_screen->egl_display, xmir_win->flip.data, 0, 1000000000); ++ if (val != EGL_CONDITION_SATISFIED_KHR) ++ ErrorF("eglClientWaitSync failed: %x/%x\n", val, eglGetError()); ++ eglDestroySync(xmir_screen->egl_display, xmir_win->flip.data); ++ } ++ ++ ret = eglMakeCurrent(xmir_screen->egl_display, xmir_win->egl_surface, xmir_win->egl_surface, xmir_screen->swap_context); ++ if (!ret) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ ++ glClearColor(0., 1., 0., 1.); ++ glClear(GL_COLOR_BUFFER_BIT); ++ ++ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, ++ (GLeglImageOES)xmir_win->image); ++ ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_HEIGHT, &height); ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_WIDTH, &width); ++ src_pixmap = xmir_screen->screen->GetWindowPixmap(xmir_win->window); ++ xmir_glamor_copy_egl_tex(1, &xmir_win->window->drawable, src_pixmap, glamor_get_pixmap_private(src_pixmap), RegionExtents(&xmir_win->region), width, height, 0, 0, xmir_win->orientation); ++ ++ ret = eglSwapBuffers(xmir_screen->egl_display, xmir_win->egl_surface); ++ if (!ret) ++ ErrorF("eglSwapBuffers failed: %x\n", eglGetError()); ++ ret = eglMakeCurrent(xmir_screen->egl_display, xmir_screen->swap_surface, xmir_screen->swap_surface, xmir_screen->swap_context); ++ if (!ret) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ ++ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); ++ xorg_list_del(&xmir_win->flip.entry); ++ xmir_post_to_eventloop(xmir_handle_buffer_available, xmir_screen, ++ xmir_win, 0); ++ } ++ } ++ glDeleteTextures(1, &tex); ++ glDeleteProgram(passthrough_prog); ++ if (!eglMakeCurrent(xmir_screen->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ pthread_mutex_unlock(&xmir_screen->mutex); ++ ++ return NULL; ++} ++ ++static void ++xmir_glamor_copy_egl_direct(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, RegionPtr dirty) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ WindowPtr window = xmir_win->window; ++ PixmapPtr src_pixmap = screen->GetWindowPixmap(window); ++ glamor_pixmap_private *src_pixmap_priv = glamor_get_pixmap_private(src_pixmap); ++ ++ BoxPtr ext = RegionExtents(dirty); ++ EGLint width, height; ++ ++ lastGLContext = xmir_screen->egl_context; ++ ++ if (!eglMakeCurrent(xmir_screen->egl_display, xmir_win->egl_surface, xmir_win->egl_surface, xmir_screen->egl_context)) ++ ErrorF("Failed to make current!\n"); ++ ++ if (epoxy_is_desktop_gl()) ++ glDrawBuffer(GL_BACK); ++ ++ glBindFramebuffer(GL_FRAMEBUFFER, 0); ++ ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_HEIGHT, &height); ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, EGL_WIDTH, &width); ++ xmir_glamor_copy_egl_common(&window->drawable, src_pixmap, src_pixmap_priv, ext, width, height, 0, 0, xmir_win->orientation); ++ eglSwapBuffers(xmir_screen->egl_display, xmir_win->egl_surface); ++} ++ ++static void ++xmir_glamor_copy_egl_queue(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, RegionPtr dirty) ++{ ++ void *sync_fd = NULL; ++ ScreenPtr screen = xmir_screen->screen; ++ WindowPtr window = xmir_win->window; ++ PixmapPtr src_pixmap = screen->GetWindowPixmap(window); ++ glamor_pixmap_private *src_pixmap_priv = glamor_get_pixmap_private(src_pixmap); ++ ++ if (lastGLContext != xmir_screen->egl_context) { ++ lastGLContext = xmir_screen->egl_context; ++ xmir_glamor_egl_make_current(xmir_screen->glamor_ctx); ++ } ++ ++ if (!xmir_win->image) { ++ EGLint attribs[] = { ++ EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, ++ EGL_GL_TEXTURE_LEVEL_KHR, 0, ++ EGL_NONE ++ }; ++ ++ /* Keep the image around until resizing is done, and mark image as ++ * external so it won't re-enter the FBO cache. This texture has to ++ * be deleted to allow followup eglCreateImageKHR's to succeed after ++ * rotating back and forth. ++ */ ++ glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM); ++ ++ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs); ++ if (!xmir_win->image) { ++ GLint error; ++ ErrorF("eglCreateImageKHR failed with %x\n", eglGetError()); ++ ++ while ((error = eglGetError()) != EGL_SUCCESS) ++ ErrorF("Error stack: %x\n", error); ++ ++ xmir_glamor_copy_egl_direct(xmir_screen, xmir_win, dirty); ++ return; ++ } ++ } ++ ++ if (epoxy_has_gl_extension("GL_OES_EGL_sync")) ++ sync_fd = eglCreateSyncKHR(xmir_screen->egl_display, EGL_SYNC_FENCE_KHR, NULL); ++ ++ /* Flush work, and the sync_fd if created */ ++ glFlush(); ++ ++ DebugF("Queueing on %p with %p\n", xmir_win, xmir_win->image); ++ ++ pthread_mutex_lock(&xmir_screen->mutex); ++ xmir_win->flip.data = sync_fd; ++ xorg_list_add(&xmir_win->flip.entry, &xmir_screen->swap_list); ++ pthread_mutex_unlock(&xmir_screen->mutex); ++ ++ pthread_cond_signal(&xmir_screen->cond); ++ ++ xmir_win->has_free_buffer = FALSE; ++} ++ ++void ++xmir_glamor_copy(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, RegionPtr dirty) ++{ ++ if (xmir_screen->gbm) ++ xmir_glamor_copy_gbm(xmir_screen, xmir_win, dirty); ++ else { ++ xorg_list_del(&xmir_win->link_damage); ++ ++ if (!xmir_screen->swap_context) ++ xmir_glamor_copy_egl_direct(xmir_screen, xmir_win, dirty); ++ else ++ xmir_glamor_copy_egl_queue(xmir_screen, xmir_win, dirty); ++ ++ RegionEmpty(dirty); ++ } ++} ++ ++static EGLConfig ++xmir_glamor_get_egl_config(struct xmir_screen *xmir_screen) ++{ ++ EGLConfig eglconfig; ++ EGLint neglconfigs; ++ ++ EGLint attribs[] = { ++ EGL_SURFACE_TYPE, EGL_WINDOW_BIT, ++ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, ++ EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER, ++ EGL_BUFFER_SIZE, 32, ++ EGL_NONE ++ }; ++ ++ if (!epoxy_has_egl_extension(xmir_screen->egl_display, "EGL_KHR_surfaceless_context")) ++ attribs[1] |= EGL_PBUFFER_BIT; ++ ++ if (!eglChooseConfig(xmir_screen->egl_display, attribs, &eglconfig, 1, &neglconfigs) || ++ !neglconfigs) ++ FatalError("Could not create a compatible config!\n"); ++ ++ return eglconfig; ++} ++ ++void ++xmir_glamor_realize_window(struct xmir_screen *xmir_screen, struct xmir_window *xmir_window, WindowPtr window) ++{ ++ EGLConfig eglconfig = xmir_glamor_get_egl_config(xmir_screen); ++ MirEGLNativeWindowType egl_win; ++ ++ if (xmir_screen->gbm) ++ return; ++ ++ egl_win = mir_buffer_stream_get_egl_native_window(mir_window_get_buffer_stream(xmir_window->surface)); ++ ++ xmir_window->egl_surface = eglCreateWindowSurface(xmir_screen->egl_display, eglconfig, (EGLNativeWindowType)egl_win, NULL); ++} ++ ++void ++xmir_glamor_unrealize_window(struct xmir_screen *xmir_screen, struct xmir_window *xmir_window, WindowPtr window) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ ++ if (xmir_window->egl_surface) { ++ lastGLContext = NULL; ++ if (!eglMakeCurrent(xmir_screen->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ ++ if (!xmir_window->has_free_buffer) { ++ Bool flush = TRUE; ++ ++ pthread_mutex_lock(&xmir_screen->mutex); ++ if (!xorg_list_is_empty(&xmir_window->flip.entry)) { ++ if (xmir_window->flip.data) ++ eglDestroySync(xmir_screen->egl_display, xmir_window->flip.data); ++ xorg_list_del(&xmir_window->flip.entry); ++ flush = FALSE; ++ } ++ pthread_mutex_unlock(&xmir_screen->mutex); ++ ++ if (flush) ++ xmir_process_from_eventloop(); ++ } ++ ++ if (xmir_window->image) ++ eglDestroyImageKHR(xmir_screen->egl_display, xmir_window->image); ++ ++ eglDestroySurface(xmir_screen->egl_display, xmir_window->egl_surface); ++ } ++ ++ complete_flips(xmir_window); ++ ++ if (xmir_window->reuse_pixmap) { ++ screen->DestroyPixmap(xmir_window->reuse_pixmap); ++ xmir_window->reuse_pixmap = NULL; ++ } ++ ++ if (xmir_window->front_pixmap) { ++ screen->DestroyPixmap(xmir_window->front_pixmap); ++ xmir_window->front_pixmap = NULL; ++ } ++ ++ if (xmir_window->back_pixmap) { ++ screen->DestroyPixmap(xmir_window->back_pixmap); ++ xmir_window->back_pixmap = NULL; ++ } ++} ++ ++static void ++xmir_drm_set_gbm_device_response(MirConnection *con, MirPlatformMessage* reply, void* context) ++{ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ mir_platform_message_release(reply); ++#pragma GCC diagnostic pop ++} ++ ++static Bool ++xmir_drm_init_egl(struct xmir_screen *xmir_screen) ++{ ++ EGLint major, minor; ++ const char *version; ++ EGLConfig egl_config; ++ ++ EGLint gles2_attribs[] = { ++ EGL_CONTEXT_CLIENT_VERSION, 2, ++ EGL_CONTEXT_FLAGS_KHR, 0, ++ EGL_NONE ++ }; ++ ++ EGLint pbuffer_attribs[] = { ++ EGL_HEIGHT, 1, ++ EGL_WIDTH, 1, ++ EGL_NONE ++ }; ++ ++ ++ if (xmir_screen->drm_fd > 0) { ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ struct MirMesaSetGBMDeviceRequest req = { ++ .device = gbm_create_device(xmir_screen->drm_fd) ++ }; ++ MirPlatformMessage* msg = mir_platform_message_create(set_gbm_device); ++ ++ xmir_screen->gbm = req.device; ++ if (xmir_screen->gbm == NULL) { ++ ErrorF("couldn't get display device\n"); ++ mir_platform_message_release(msg); ++ return FALSE; ++ } ++ ++ mir_platform_message_set_data(msg, &req, sizeof req); ++ ++ mir_wait_for(mir_connection_platform_operation( ++ xmir_screen->conn, ++ msg, ++ &xmir_drm_set_gbm_device_response, ++ NULL)); ++ mir_platform_message_release(msg); ++#pragma GCC diagnostic pop ++ /* In GBM mode no mir functions are used in any way. ++ * This means using the GBM device directly is safe.. */ ++ xmir_screen->egl_display = eglGetDisplay(xmir_screen->gbm); ++ } ++ else ++ xmir_screen->egl_display = eglGetDisplay(mir_connection_get_egl_native_display(xmir_screen->conn)); ++ ++ if (xmir_screen->egl_display == EGL_NO_DISPLAY) { ++ ErrorF("eglGetDisplay() failed\n"); ++ return FALSE; ++ } ++ ++ eglBindAPI(!xmir_screen->gbm ? EGL_OPENGL_ES_API : EGL_OPENGL_API); ++ ++ if (!eglInitialize(xmir_screen->egl_display, &major, &minor)) { ++ ErrorF("eglInitialize() failed\n"); ++ return FALSE; ++ } ++ ++ version = eglQueryString(xmir_screen->egl_display, EGL_VERSION); ++ ErrorF("glamor EGL version: %s\n", version); ++ ErrorF("glamor EGL extensions: %s\n", eglQueryString(xmir_screen->egl_display, EGL_EXTENSIONS)); ++ ++ egl_config = xmir_glamor_get_egl_config(xmir_screen); ++ ++ xmir_screen->egl_context = eglCreateContext(xmir_screen->egl_display, ++ egl_config, EGL_NO_CONTEXT, ++ !xmir_screen->gbm ? gles2_attribs : NULL); ++ if (xmir_screen->egl_context == EGL_NO_CONTEXT) { ++ ErrorF("Failed to create EGL context: %i/%x\n", eglGetError(), eglGetError()); ++ return FALSE; ++ } ++ ++ if (!epoxy_has_egl_extension(xmir_screen->egl_display, "EGL_KHR_surfaceless_context")) { ++ xmir_screen->egl_surface = eglCreatePbufferSurface(xmir_screen->egl_display, egl_config, pbuffer_attribs); ++ } ++ else ++ xmir_screen->egl_surface = EGL_NO_SURFACE; ++ ++ if (!eglMakeCurrent(xmir_screen->egl_display, ++ xmir_screen->egl_surface, xmir_screen->egl_surface, ++ xmir_screen->egl_context)) { ++ ErrorF("Failed to make EGL context current: %i/%x\n", eglGetError(), eglGetError()); ++ return FALSE; ++ } ++ lastGLContext = xmir_screen->egl_context; ++ ++ ErrorF("glamor GL version: %s\n", glGetString(GL_VERSION)); ++ ErrorF("glamor GL extensions: %s\n", glGetString(GL_EXTENSIONS)); ++ ErrorF("glamor GLSL version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); ++ ++ if (!epoxy_has_gl_extension("GL_OES_EGL_image")) { ++ ErrorF("GL_OES_EGL_image not available\n"); ++ return FALSE; ++ } ++ ++ xmir_screen->glamor_has_GL_EXT_framebuffer_blit = ++ epoxy_has_gl_extension("GL_EXT_framebuffer_blit"); ++ ++ if (!xmir_screen->gbm && xmir_screen->glamor != glamor_egl_sync) { ++ xmir_screen->swap_context = eglCreateContext(xmir_screen->egl_display, egl_config, EGL_NO_CONTEXT, gles2_attribs); ++ if (!xmir_screen->swap_context) { ++ ErrorF("Failed to create EGL context: %i/%x\n", eglGetError(), eglGetError()); ++ return FALSE; ++ } ++ ++ if (xmir_screen->egl_surface) ++ xmir_screen->swap_surface = eglCreatePbufferSurface(xmir_screen->egl_display, egl_config, pbuffer_attribs); ++ ++ xorg_list_init(&xmir_screen->swap_list); ++ } ++ ++ return TRUE; ++} ++ ++static Bool ++xmir_screen_init_glamor_drm(struct xmir_screen *xmir_screen) ++{ ++ xmir_screen->drm_fd = xmir_screen->platform.fd[0]; ++ ++ xmir_screen->device_name = drmGetDeviceNameFromFd(xmir_screen->drm_fd); ++ if (!xmir_screen->device_name) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++Bool ++xmir_screen_init_glamor(struct xmir_screen *xmir_screen) ++{ ++ if (xmir_screen->platform.fd_items >= 1 && ++ xmir_screen->doubled) ++ ErrorF("Disabling DRI2 support because of -2x\n"); ++ ++ if (xmir_screen->platform.fd_items >= 1 && ++ !xmir_screen->doubled && ++ xmir_screen->glamor == glamor_dri && ++ !xmir_screen_init_glamor_drm(xmir_screen)) ++ return FALSE; ++ ++ return xmir_drm_init_egl(xmir_screen); ++} ++ ++void ++xmir_glamor_fini(struct xmir_screen *xmir_screen) ++{ ++ if (xmir_screen->thread) { ++ xmir_screen->alive = -1; ++ ++ pthread_cond_signal(&xmir_screen->cond); ++ pthread_join(xmir_screen->thread, NULL); ++ pthread_cond_destroy(&xmir_screen->cond); ++ pthread_mutex_destroy(&xmir_screen->mutex); ++ } ++ ++ if (xmir_screen->swap_context) ++ eglDestroyContext(xmir_screen->egl_display, xmir_screen->swap_context); ++ ++ if (xmir_screen->swap_surface) ++ eglDestroySurface(xmir_screen->egl_display, xmir_screen->swap_surface); ++ ++ lastGLContext = NULL; ++ if (!eglMakeCurrent(xmir_screen->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT)) ++ ErrorF("eglMakeCurrent failed: %x\n", eglGetError()); ++ if (xmir_screen->egl_surface) ++ eglDestroySurface(xmir_screen->egl_display, xmir_screen->egl_surface); ++ eglDestroyContext(xmir_screen->egl_display, xmir_screen->egl_context); ++ eglTerminate(xmir_screen->egl_display); ++ ++ if (xmir_screen->gbm) ++ gbm_device_destroy(xmir_screen->gbm); ++ free(xmir_screen->device_name); ++} ++ ++static void ++xmir_glamor_get_name_from_bo(int drm_fd, struct gbm_bo *bo, int *name) ++{ ++ struct drm_gem_flink flink; ++ unsigned handle = gbm_bo_get_handle(bo).u32; ++ ++ flink.handle = handle; ++ if (ioctl(drm_fd, DRM_IOCTL_GEM_FLINK, &flink) < 0) ++ *name = -1; ++ else ++ *name = flink.name; ++} ++ ++static int ++xmir_glamor_get_fd_from_bo(int gbm_fd, struct gbm_bo *bo, int *fd) ++{ ++ union gbm_bo_handle handle; ++ struct drm_prime_handle args; ++ ++ handle = gbm_bo_get_handle(bo); ++ args.handle = handle.u32; ++ args.flags = DRM_CLOEXEC; ++ if (ioctl(gbm_fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &args)) ++ return FALSE; ++ *fd = args.fd; ++ return TRUE; ++} ++ ++int ++glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen, ++ PixmapPtr pixmap, ++ unsigned int tex, ++ Bool want_name, CARD16 *stride, CARD32 *size) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_pixmap *xmir_pixmap = xmir_pixmap_get(pixmap); ++ struct glamor_screen_private *glamor_priv = ++ glamor_get_screen_private(screen); ++ struct gbm_bo *bo; ++ int fd = -1; ++ ++ EGLint attribs[] = { ++ EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, ++ EGL_GL_TEXTURE_LEVEL_KHR, 0, ++ EGL_NONE ++ }; ++ ++ glamor_make_current(glamor_priv); ++ ++ if (!xmir_pixmap) { ++ void *image; ++ ++ xmir_pixmap = calloc(sizeof(*xmir_pixmap), 1); ++ xmir_pixmap_set(pixmap, xmir_pixmap); ++ ++ xmir_pixmap->fake_back = true; ++ ++ image = eglCreateImageKHR(xmir_screen->egl_display, ++ xmir_screen->egl_context, ++ EGL_GL_TEXTURE_2D_KHR, ++ (EGLClientBuffer) (uintptr_t) ++ tex, attribs); ++ if (image == EGL_NO_IMAGE_KHR) ++ goto failure; ++ xmir_pixmap->image = image; ++ ++ glamor_set_pixmap_type(pixmap, GLAMOR_TEXTURE_DRM); ++ xmir_pixmap->bo = gbm_bo_import(xmir_screen->gbm, GBM_BO_IMPORT_EGL_IMAGE, image, 0); ++ } ++ bo = xmir_pixmap->bo; ++ ++ if (!bo) ++ goto failure; ++ ++ pixmap->devKind = gbm_bo_get_stride(bo); ++ ++ if (want_name) ++ xmir_glamor_get_name_from_bo(xmir_screen->drm_fd, bo, &fd); ++ else ++ xmir_glamor_get_fd_from_bo(xmir_screen->drm_fd, bo, &fd); ++ ++ *stride = pixmap->devKind; ++ *size = pixmap->devKind * gbm_bo_get_height(bo); ++ ++ failure: ++ return fd; ++} ++ ++static PixmapPtr ++xmir_glamor_create_pixmap(ScreenPtr screen, ++ int width, int height, int depth, unsigned int hint) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ ++ if (width > 0 && height > 0 && depth >= 24 && ++ (hint == 0 || ++ hint == CREATE_PIXMAP_USAGE_BACKING_PIXMAP || ++ hint == CREATE_PIXMAP_USAGE_SHARED || ++ hint == XMIR_CREATE_PIXMAP_USAGE_FLIP)) { ++ struct xmir_pixmap *xmir_pixmap = malloc(sizeof(*xmir_pixmap)); ++ PixmapPtr pixmap = NULL; ++ struct gbm_bo *bo = NULL; ++ void *image = NULL; ++ unsigned int tex = 0; ++ ++ if (!xmir_pixmap) ++ goto free; ++ ++ pixmap = glamor_create_pixmap(screen, width, height, depth, GLAMOR_CREATE_PIXMAP_NO_TEXTURE); ++ if (!pixmap) ++ goto free; ++ ++ glamor_set_pixmap_type(pixmap, GLAMOR_TEXTURE_DRM); ++ ++ if (hint != XMIR_CREATE_PIXMAP_USAGE_FLIP) { ++ bo = gbm_bo_create(xmir_screen->gbm, width, height, ++ GBM_FORMAT_ARGB8888, ++ GBM_BO_USE_RENDERING); ++ ++ if (!bo) ++ goto free; ++ ++ image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_NATIVE_PIXMAP_KHR, bo, NULL); ++ if (!image) ++ goto free; ++ ++ glGenTextures(1, &tex); ++ glBindTexture(GL_TEXTURE_2D, tex); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); ++ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); ++ ++ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image); ++ glBindTexture(GL_TEXTURE_2D, 0); ++ glamor_set_pixmap_texture(pixmap, tex); ++ } ++ ++ xmir_pixmap->image = image; ++ xmir_pixmap->bo = bo; ++ xmir_pixmap_set(pixmap, xmir_pixmap); ++ xmir_pixmap->fake_back = true; ++ if (bo) ++ pixmap->devKind = gbm_bo_get_stride(bo); ++ ++ if (!glGetError()) ++ return pixmap; ++ ++ ErrorF("Failed to allocate pixmap - a opengl error occured!\n"); ++ ++free: ++ if (tex) ++ glDeleteTextures(1, &tex); ++ ++ if (image) ++ eglDestroyImageKHR(xmir_screen->egl_display, image); ++ ++ if (pixmap) ++ glamor_destroy_pixmap(pixmap); ++ ++ if (bo) ++ gbm_bo_destroy(bo); ++ ++ free(xmir_pixmap); ++ return NULL; ++ } ++ ++ return glamor_create_pixmap(screen, width, height, depth, hint); ++} ++ ++static Bool ++xmir_glamor_destroy_pixmap(PixmapPtr pixmap) ++{ ++ struct xmir_pixmap *xmir_pixmap; ++ ++ if (pixmap->refcnt == 1 && (xmir_pixmap = xmir_pixmap_get(pixmap))) { ++ ScreenPtr screen = pixmap->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ Bool ret; ++ ++ ret = glamor_destroy_pixmap(pixmap); ++ if (!ret) ++ return ret; ++ glamor_block_handler(screen); ++ ++ if (xmir_pixmap->image) ++ eglDestroyImageKHR(xmir_screen->egl_display, xmir_pixmap->image); ++ if (xmir_pixmap->bo) ++ gbm_bo_destroy(xmir_pixmap->bo); ++ free(xmir_pixmap); ++ return ret; ++ } ++ ++ return glamor_destroy_pixmap(pixmap); ++} ++ ++Bool ++xmir_glamor_init(struct xmir_screen *xmir_screen) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ ++ if (xmir_screen->egl_context == EGL_NO_CONTEXT) { ++ ErrorF("Disabling glamor and dri2, EGL setup failed\n"); ++ return FALSE; ++ } ++ ++ if (!glamor_init(screen, ++ GLAMOR_USE_EGL_SCREEN | ++ GLAMOR_NO_DRI3)) { ++ ErrorF("Failed to initialize glamor\n"); ++ return FALSE; ++ } ++ ++ if (xmir_screen->swap_context) { ++ pthread_mutex_init(&xmir_screen->mutex, NULL); ++ pthread_cond_init(&xmir_screen->cond, NULL); ++ pthread_create(&xmir_screen->thread, NULL, xmir_glamor_flip, xmir_screen); ++ } ++ ++ if (xmir_screen->gbm) { ++ screen->CreatePixmap = xmir_glamor_create_pixmap; ++ screen->DestroyPixmap = xmir_glamor_destroy_pixmap; ++ ++ /* Tell the core that we have the interfaces for import/export ++ * of pixmaps. ++ */ ++ glamor_enable_dri3(screen); ++ } ++ ++ return TRUE; ++} +--- /dev/null ++++ b/hw/xmir/xmir-input.c +@@ -0,0 +1,650 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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. ++ */ ++ ++#include "xmir.h" ++ ++#include ++ ++#include ++#include ++#include ++#include ++ ++static void ++xmir_pointer_control(DeviceIntPtr device, PtrCtrl *ctrl) ++{ ++ /* Nothing to do, dix handles all settings */ ++} ++ ++static int ++xmir_pointer_proc(DeviceIntPtr device, int what) ++{ ++#define NBUTTONS 10 ++#define NAXES 4 ++ BYTE map[NBUTTONS + 1]; ++ int i = 0; ++ Atom btn_labels[NBUTTONS] = { 0 }; ++ Atom axes_labels[NAXES] = { 0 }; ++ ++ switch (what) { ++ case DEVICE_INIT: ++ device->public.on = FALSE; ++ ++ for (i = 1; i <= NBUTTONS; i++) ++ map[i] = i; ++ ++ btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT); ++ btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE); ++ btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT); ++ btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP); ++ btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN); ++ btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT); ++ btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT); ++ /* Don't know about the rest */ ++ ++ axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X); ++ axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y); ++ axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_HWHEEL); ++ axes_labels[3] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_WHEEL); ++ ++ if (!InitValuatorClassDeviceStruct(device, NAXES, btn_labels, ++ GetMotionHistorySize(), Absolute)) ++ return BadValue; ++ ++ /* Valuators */ ++ InitValuatorAxisStruct(device, 0, axes_labels[0], ++ 0, 0xFFFF, 10000, 0, 10000, Absolute); ++ InitValuatorAxisStruct(device, 1, axes_labels[1], ++ 0, 0xFFFF, 10000, 0, 10000, Absolute); ++ InitValuatorAxisStruct(device, 2, axes_labels[2], ++ NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative); ++ InitValuatorAxisStruct(device, 3, axes_labels[3], ++ NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative); ++ ++ SetScrollValuator(device, 2, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE); ++ SetScrollValuator(device, 3, SCROLL_TYPE_VERTICAL, 1.0, SCROLL_FLAG_PREFERRED); ++ ++ if (!InitPtrFeedbackClassDeviceStruct(device, xmir_pointer_control)) ++ return BadValue; ++ ++ if (!InitButtonClassDeviceStruct(device, 3, btn_labels, map)) ++ return BadValue; ++ ++ return Success; ++ ++ case DEVICE_ON: ++ device->public.on = TRUE; ++ return Success; ++ ++ case DEVICE_OFF: ++ case DEVICE_CLOSE: ++ device->public.on = FALSE; ++ return Success; ++ } ++ ++ return BadMatch; ++ ++#undef NBUTTONS ++#undef NAXES ++} ++ ++static void ++xmir_keyboard_control(DeviceIntPtr device, KeybdCtrl *ctrl) ++{ ++} ++ ++static int ++xmir_keyboard_proc(DeviceIntPtr device, int what) ++{ ++ switch (what) { ++ case DEVICE_INIT: ++ device->public.on = FALSE; ++ if (!InitKeyboardDeviceStructFromString(device, ++ NULL /*xmir_input->keymap*/, 0, ++ NULL, xmir_keyboard_control)) ++ return BadValue; ++ ++ return Success; ++ case DEVICE_ON: ++ device->public.on = TRUE; ++ return Success; ++ ++ case DEVICE_OFF: ++ case DEVICE_CLOSE: ++ device->public.on = FALSE; ++ return Success; ++ } ++ ++ return BadMatch; ++} ++ ++static void ++pointer_convert_xy(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ int *x, int *y) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(xmir_window->window->drawable.pScreen); ++ bool reflect_x = false; ++ bool reflect_y = false; ++ bool swap_xy = false; ++ int dx = xmir_window->window->drawable.x; ++ int dy = xmir_window->window->drawable.y; ++ int sx = *x, sy = *y; ++ int scale = 1 + xmir_screen->doubled; ++ int w = xmir_window->window->drawable.width; ++ int h = xmir_window->window->drawable.height; ++ ++ /* reflection test parameters */ ++ bool magic_x_invert = false, magic_y_invert = false; ++ ++ DebugF("Raw input %i,%i in window (%i,%i)->(%i,%i) orientation %i and scale %i\n", ++ *x, *y, dx, dy, dx + w, dy + h, xmir_window->orientation, scale); ++ ++ if (magic_x_invert) ++ reflect_x = !reflect_x; ++ ++ if (magic_y_invert) ++ reflect_y = !reflect_y; ++ ++ switch (xmir_window->orientation) { ++ case 90: ++ reflect_x = !reflect_x; ++ swap_xy = true; ++ break; ++ case 180: ++ reflect_x = !reflect_x; ++ reflect_y = !reflect_y; ++ break; ++ case 270: ++ reflect_y = !reflect_y; ++ swap_xy = true; ++ break; ++ } ++ ++ if (!swap_xy) { ++ sx = *x; ++ sy = *y; ++ } ++ else { ++ sx = *y; ++ sy = *x; ++ } ++ ++ if (!reflect_x) ++ *x = (sx * scale) + dx; ++ else ++ *x = w + dx - (sx * scale); ++ ++ if (!reflect_y) ++ *y = (sy * scale) + dy; ++ else ++ *y = h + dy - (sy * scale); ++ ++ DebugF("Converted to %i, %i\n", *x, *y); ++} ++ ++static Bool ++pointer_ensure_focus(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ DeviceIntPtr dev, int sx, int sy) ++{ ++ ScreenPtr screen = xmir_window->window->drawable.pScreen; ++ ++ if (xmir_input->focus_window == xmir_window) ++ return FALSE; ++ ++ if (xmir_input->focus_window) { ++ xmir_input->focus_window = NULL; ++ CheckMotion(NULL, GetMaster(dev, MASTER_POINTER)); ++ } ++ ++ xmir_input->focus_window = xmir_window; ++ ++ pointer_convert_xy(xmir_input, xmir_window, &sx, &sy); ++ ++ (screen->SetCursorPosition) (dev, screen, sx, sy, TRUE); ++ CheckMotion(NULL, GetMaster(dev, MASTER_POINTER)); ++ ++ return TRUE; ++} ++ ++static void ++pointer_handle_motion(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ MirPointerEvent const *pev) ++{ ++ int sx = mir_pointer_event_axis_value(pev, mir_pointer_axis_x); ++ int sy = mir_pointer_event_axis_value(pev, mir_pointer_axis_y); ++ float vscroll, hscroll; ++ ValuatorMask mask; ++ ++ pointer_ensure_focus(xmir_input, xmir_window, xmir_input->pointer, sx, sy); ++ ++ pointer_convert_xy(xmir_input, xmir_window, &sx, &sy); ++ ++ valuator_mask_zero(&mask); ++ valuator_mask_set(&mask, 0, sx); ++ valuator_mask_set(&mask, 1, sy); ++ QueuePointerEvents(xmir_input->pointer, MotionNotify, 0, ++ POINTER_ABSOLUTE | POINTER_SCREEN, &mask); ++ ++ vscroll = mir_pointer_event_axis_value(pev, mir_pointer_axis_vscroll); ++ hscroll = mir_pointer_event_axis_value(pev, mir_pointer_axis_hscroll); ++ if (vscroll || hscroll) { ++ valuator_mask_zero(&mask); ++ valuator_mask_set_double(&mask, 3, -vscroll); ++ valuator_mask_set_double(&mask, 2, hscroll); ++ QueuePointerEvents(xmir_input->pointer, MotionNotify, 0, ++ POINTER_RELATIVE, &mask); ++ } ++} ++ ++static void ++pointer_handle_button(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ MirPointerEvent const *pev) ++{ ++ DeviceIntPtr dev = xmir_input->pointer; ++ struct { ++ MirPointerButton mir_button; ++ int x_button; ++ } map[3] = { ++ {mir_pointer_button_primary, 1}, /* Usually left button */ ++ {mir_pointer_button_secondary, 3}, /* Middle button */ ++ {mir_pointer_button_tertiary, 2}, /* Right button */ ++ }; ++ int i; ++ ValuatorMask mask; ++ ++ valuator_mask_zero(&mask); ++ for (i = 0; i < 3; ++i) { ++ MirPointerButton mir_button = map[i].mir_button; ++ int x_button = map[i].x_button; ++ int oldstate = BitIsOn(dev->button->down, x_button) ? ++ ButtonPress : ButtonRelease; ++ int newstate = mir_pointer_event_button_state(pev, mir_button) ? ++ ButtonPress : ButtonRelease; ++ ++ if (oldstate != newstate) ++ QueuePointerEvents(dev, newstate, x_button, 0, &mask); ++ } ++ ++ /* XXX: Map rest of input buttons too! */ ++} ++ ++static DeviceIntPtr ++add_device(struct xmir_input *xmir_input, ++ const char *driver, DeviceProc device_proc) ++{ ++ DeviceIntPtr dev = NULL; ++ static Atom type_atom; ++ char name[32]; ++ ++ dev = AddInputDevice(serverClient, device_proc, TRUE); ++ if (dev == NULL) ++ return NULL; ++ ++ if (type_atom == None) ++ type_atom = MakeAtom(driver, strlen(driver), TRUE); ++ snprintf(name, sizeof name, "%s:%d", driver, xmir_input->id); ++ AssignTypeAndName(dev, type_atom, name); ++ dev->public.devicePrivate = xmir_input; ++ dev->type = SLAVE; ++ dev->spriteInfo->spriteOwner = FALSE; ++ ++ return dev; ++} ++ ++static void ++xmir_input_destroy(struct xmir_input *xmir_input) ++{ ++ RemoveDevice(xmir_input->pointer, FALSE); ++ RemoveDevice(xmir_input->keyboard, FALSE); ++ free(xmir_input); ++} ++ ++Bool ++LegalModifier(unsigned int key, DeviceIntPtr pDev) ++{ ++ return TRUE; ++} ++ ++void ++ProcessInputEvents(void) ++{ ++ mieqProcessInputEvents(); ++} ++ ++void ++DDXRingBell(int volume, int pitch, int duration) ++{ ++} ++ ++static WindowPtr ++xmir_xy_to_window(ScreenPtr screen, SpritePtr sprite, int x, int y) ++{ ++ struct xmir_input *xmir_input = NULL; ++ DeviceIntPtr device; ++ ++ for (device = inputInfo.devices; device; device = device->next) { ++ if (device->deviceProc == xmir_pointer_proc && ++ device->spriteInfo->sprite == sprite) { ++ xmir_input = device->public.devicePrivate; ++ break; ++ } ++ } ++ ++ if (xmir_input == NULL) { ++ /* XTEST device */ ++ sprite->spriteTraceGood = 1; ++ return sprite->spriteTrace[0]; ++ } ++ ++ if (xmir_input->focus_window) { ++ sprite->spriteTraceGood = 2; ++ sprite->spriteTrace[1] = xmir_input->focus_window->window; ++ return miSpriteTrace(sprite, x, y); ++ } ++ else { ++ sprite->spriteTraceGood = 1; ++ return sprite->spriteTrace[0]; ++ } ++} ++ ++static void ++fake_touch_move(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ int sx, int sy) ++{ ++ ValuatorMask mask; ++ ++ pointer_convert_xy(xmir_input, xmir_window, &sx, &sy); ++ ++ valuator_mask_zero(&mask); ++ valuator_mask_set(&mask, 0, sx); ++ valuator_mask_set(&mask, 1, sy); ++ ++ QueuePointerEvents(xmir_input->touch, MotionNotify, 0, ++ POINTER_ABSOLUTE | POINTER_SCREEN, &mask); ++} ++ ++static void ++xmir_window_handle_input_event(struct xmir_input *xmir_input, ++ struct xmir_window *xmir_window, ++ MirInputEvent const* ev) ++{ ++ switch (mir_input_event_get_type(ev)) { ++ case mir_input_event_type_key: { ++ MirKeyboardEvent const *kev; ++ MirKeyboardAction action; ++ int code; ++ ++ kev = mir_input_event_get_keyboard_event(ev); ++ action = mir_keyboard_event_action(kev); ++ code = mir_keyboard_event_scan_code(kev) + 8; ++ ++ /* ++ * Note: mir_keyboard_action_repeat must KeyRelease then KeyPress ++ * because it is already preceded by mir_keyboard_action_down and will ++ * be followed by mir_keyboard_action_up. ++ */ ++ if (action == mir_keyboard_action_up || ++ action == mir_keyboard_action_repeat) { ++ QueueKeyboardEvents(xmir_input->keyboard, KeyRelease, code); ++ } ++ if (action == mir_keyboard_action_down || ++ action == mir_keyboard_action_repeat) { ++ QueueKeyboardEvents(xmir_input->keyboard, KeyPress, code); ++ } ++ break; ++ } ++ case mir_input_event_type_touch: { ++ MirTouchEvent const *tev; ++ int i = 0, count, sx, sy; ++ ValuatorMask mask; ++ ++ tev = mir_input_event_get_touch_event(ev); ++ count = mir_touch_event_point_count(tev); ++ ++ /* Do we really need this multifinger tracking at all?... */ ++ if (count < 1) { ++ xmir_input->touch_id = -1; ++ break; ++ } ++ ++ if (xmir_input->touch_id != -1) { ++ for (i = 0; i < count; ++i) ++ if (mir_touch_event_id(tev, i) == xmir_input->touch_id) ++ break; ++ } ++ if (i >= count) { ++ for (i = 0; i < count; ++i) ++ if (mir_touch_event_action(tev, i) == mir_touch_action_down) ++ break; ++ } ++ ++ if (i >= count) ++ break; ++ ++ sx = mir_touch_event_axis_value(tev, i, mir_touch_axis_x); ++ sy = mir_touch_event_axis_value(tev, i, mir_touch_axis_y); ++ valuator_mask_zero(&mask); ++ ++ switch (mir_touch_event_action(tev, i)) { ++ case mir_touch_action_up: ++ fake_touch_move(xmir_input, xmir_window, sx, sy); ++ QueuePointerEvents(xmir_input->touch, ButtonRelease, 1, 0, &mask); ++ xmir_input->touch_id = -1; ++ break; ++ case mir_touch_action_down: ++ xmir_input->touch_id = mir_touch_event_id(tev, i); ++ if (!pointer_ensure_focus(xmir_input, ++ xmir_window, ++ xmir_input->touch, ++ sx, sy)) ++ fake_touch_move(xmir_input, xmir_window, sx, sy); ++ QueuePointerEvents(xmir_input->touch, ButtonPress, 1, 0, &mask); ++ break; ++ case mir_touch_action_change: ++ fake_touch_move(xmir_input, xmir_window, sx, sy); ++ break; ++ default: ++ break; ++ } ++ break; ++ ++ ++ } ++ case mir_input_event_type_pointer: { ++ MirPointerEvent const *pev; ++ ++ pev = mir_input_event_get_pointer_event(ev); ++ switch (mir_pointer_event_action(pev)) { ++ case mir_pointer_action_button_up: ++ case mir_pointer_action_button_down: ++ pointer_handle_motion(xmir_input, xmir_window, pev); ++ pointer_handle_button(xmir_input, xmir_window, pev); ++ break; ++ case mir_pointer_action_motion: ++ pointer_handle_motion(xmir_input, xmir_window, pev); ++ break; ++ default: ++ ErrorF("Unknown action: %u\n", mir_pointer_event_action(pev)); ++ case mir_pointer_action_enter: ++ case mir_pointer_action_leave: ++ break; ++ } ++ break; ++ } ++ default: ErrorF("Unknown input type: %u\n", mir_input_event_get_type(ev)); ++ } ++} ++ ++static void ++xmir_handle_keymap_event(struct xmir_input *xmir_input, ++ MirKeymapEvent const* ev) ++{ ++ char * buffer = NULL; ++ size_t length = 0; ++ DeviceIntPtr master; ++ XkbDescPtr xkb; ++ XkbChangesRec changes = { 0 }; ++ ++ mir_keymap_event_get_keymap_buffer(ev, (char const **)&buffer, &length); ++ ++ xkb = XkbCompileKeymapFromString(xmir_input->keyboard, buffer, length); ++ ++ XkbUpdateDescActions(xkb, xkb->min_key_code, XkbNumKeys(xkb), &changes); ++ ++ XkbDeviceApplyKeymap(xmir_input->keyboard, xkb); ++ ++ master = GetMaster(xmir_input->keyboard, MASTER_KEYBOARD); ++ if (master && master->lastSlave == xmir_input->keyboard) ++ XkbDeviceApplyKeymap(master, xkb); ++ ++ XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE); ++} ++ ++static void ++xmir_handle_surface_event_in_main_thread(struct xmir_screen *xmir_screen, ++ struct xmir_window *xmir_window, ++ void *arg) ++{ ++ const MirEvent *ev = arg; ++ struct xmir_input *xmir_input; ++ ++ xmir_input = xorg_list_first_entry(&xmir_screen->input_list, ++ struct xmir_input, ++ link); ++ switch (mir_event_get_type(ev)) ++ { ++ case mir_event_type_input: ++ xmir_window_handle_input_event(xmir_input, ++ xmir_window, ++ mir_event_get_input_event(ev)); ++ break; ++ case mir_event_type_window: { ++ const MirWindowEvent *surface = mir_event_get_window_event(ev); ++ xmir_handle_surface_event(xmir_window, ++ mir_window_event_get_attribute(surface), ++ mir_window_event_get_attribute_value(surface)); ++ } ++ break; ++ case mir_event_type_resize: { ++ WindowPtr window = xmir_window->window; ++ const MirResizeEvent *resize = mir_event_get_resize_event(ev); ++ unsigned future_width = mir_resize_event_get_width(resize); ++ unsigned future_height = mir_resize_event_get_height(resize); ++ XMIR_DEBUG(("Mir surface for win %p resized to %ux%u (buffers arriving soon)\n", ++ window, future_width, future_height)); ++ xmir_window->surface_width = future_width; ++ xmir_window->surface_height = future_height; ++ if (xmir_window->damage) ++ DamageDamageRegion(&window->drawable, &xmir_window->region); ++ } ++ break; ++ case mir_event_type_prompt_session_state_change: ++ ErrorF("No idea about prompt_session_state_change\n"); ++ break; ++ case mir_event_type_orientation: { ++ const MirOrientationEvent *orientation = mir_event_get_orientation_event(ev); ++ xmir_output_handle_orientation(xmir_window, ++ mir_orientation_event_get_direction(orientation)); ++ } ++ break; ++ case mir_event_type_close_window: ++ xmir_close_surface(xmir_window); ++ break; ++ case mir_event_type_window_output: ++ break; ++ case mir_event_type_keymap: ++ xmir_handle_keymap_event(xmir_input, mir_event_get_keymap_event(ev)); ++ break; ++ case mir_event_type_input_device_state: ++ break; ++ default: ++ ErrorF("Received an unknown %u event\n", mir_event_get_type(ev)); ++ break; ++ } ++ mir_event_unref(ev); ++} ++ ++void ++xmir_surface_handle_event(MirWindow *surface, MirEvent const* ev, ++ void *context) ++{ ++ struct xmir_window *xmir_window = context; ++ struct xmir_screen *xmir_screen = xmir_window->xmir_screen; ++ ++ /* We are in a Mir event thread, so unsafe to do X things. Post the event ++ * to the X event loop thread... ++ */ ++ xmir_post_to_eventloop(&xmir_handle_surface_event_in_main_thread, ++ xmir_screen, xmir_window, (void*)mir_event_ref(ev)); ++} ++ ++void ++InitInput(int argc, char *argv[]) ++{ ++ ScreenPtr pScreen = screenInfo.screens[0]; ++ struct xmir_screen *xmir_screen = xmir_screen_get(pScreen); ++ struct xmir_input *xmir_input; ++ ++ if (xmir_screen->rootless) ++ pScreen->XYToWindow = xmir_xy_to_window; ++ ++ mieqInit(); ++ ++ xmir_input = calloc(1, sizeof(*xmir_input)); ++ if (!xmir_input) ++ FatalError("Failed to allocate input\n"); ++ ++ xmir_input->xmir_screen = xmir_screen; ++ xorg_list_add(&xmir_input->link, &xmir_screen->input_list); ++ xmir_input->touch_id = -1; ++ xmir_input->pointer = add_device(xmir_input, ++ "xmir-pointer", ++ xmir_pointer_proc); ++ xmir_input->touch = add_device(xmir_input, ++ "xmir-fake-touch-pointer", ++ xmir_pointer_proc); ++ xmir_input->keyboard = add_device(xmir_input, ++ "xmir-keyboard", ++ xmir_keyboard_proc); ++} ++ ++void ++CloseInput(void) ++{ ++ ScreenPtr pScreen = screenInfo.screens[0]; ++ struct xmir_screen *xmir_screen = xmir_screen_get(pScreen); ++ struct xmir_input *xmir_input, *next_xmir_input; ++ ++ xorg_list_for_each_entry_safe(xmir_input, next_xmir_input, ++ &xmir_screen->input_list, link) ++ xmir_input_destroy(xmir_input); ++ ++ mieqFini(); ++} +--- /dev/null ++++ b/hw/xmir/xmir-output.c +@@ -0,0 +1,501 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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_DIX_CONFIG_H ++#include ++#endif ++ ++#include "xmir.h" ++#include ++#include "glamor_priv.h" ++#include "mipointer.h" ++ ++static Rotation ++to_rr_rotation(MirOrientation orient) ++{ ++ switch (orient) { ++ default: return RR_Rotate_0; ++ case mir_orientation_left: return RR_Rotate_90; ++ case mir_orientation_inverted: return RR_Rotate_180; ++ case mir_orientation_right: return RR_Rotate_270; ++ } ++} ++ ++Bool ++xmir_output_dpms(struct xmir_screen *xmir_screen, int mode) ++{ ++ MirDisplayConfig *display_config = xmir_screen->display; ++ MirPowerMode mir_mode = mir_power_mode_on; ++ Bool unchanged = TRUE; ++ int num_outputs; ++ ++ if (xmir_screen->rootless || xmir_screen->windowed) ++ return FALSE; ++ ++ switch (mode) { ++ case DPMSModeOn: mir_mode = mir_power_mode_on; break; ++ case DPMSModeStandby: mir_mode = mir_power_mode_standby; break; ++ case DPMSModeSuspend: mir_mode = mir_power_mode_suspend; break; ++ case DPMSModeOff: mir_mode = mir_power_mode_off; break; ++ } ++ ++ DebugF("Setting DPMS mode to %d\n", mode); ++ ++ num_outputs = mir_display_config_get_num_outputs(display_config); ++ for (int i = 0; i < num_outputs; i++) { ++ MirOutput *output = mir_display_config_get_mutable_output(display_config, i); ++ MirPowerMode power_mode = mir_output_get_power_mode(output); ++ if (power_mode != mir_mode) { ++ mir_output_set_power_mode(output, mir_mode); ++ unchanged = FALSE; ++ } ++ } ++ ++ if (!unchanged) ++ mir_connection_apply_session_display_config(xmir_screen->conn, ++ xmir_screen->display); ++ ++ return TRUE; ++} ++ ++static void ++xmir_output_update(struct xmir_output *xmir_output, MirOutput const *mir_output) ++{ ++ MirOutputConnectionState connection_state; ++ bool output_is_connected; ++ ++ connection_state = mir_output_get_connection_state(mir_output); ++ output_is_connected = !(connection_state == mir_output_connection_state_disconnected); ++ ++ RROutputSetConnection(xmir_output->randr_output, ++ output_is_connected ? RR_Connected : RR_Disconnected); ++ RROutputSetSubpixelOrder(xmir_output->randr_output, SubPixelUnknown); ++ ++ if (output_is_connected) { ++ MirOutputMode const *mode = mir_output_get_current_mode(mir_output); ++ RRModePtr randr_mode; ++ double refresh_rate; ++ ++ xmir_output->width = mir_output_mode_get_width(mode); ++ xmir_output->height = mir_output_mode_get_height(mode); ++ xmir_output->x = mir_output_get_position_x(mir_output); ++ xmir_output->y = mir_output_get_position_y(mir_output); ++ ++ refresh_rate = mir_output_mode_get_refresh_rate(mode); ++ randr_mode = xmir_cvt(xmir_output->width, xmir_output->height, ++ refresh_rate, 0, 0); ++ /* Odd resolutions like 1366x768 don't show correctly otherwise */ ++ randr_mode->mode.width = mir_output_mode_get_width(mode); ++ randr_mode->mode.height = mir_output_mode_get_height(mode); ++ sprintf(randr_mode->name, "%dx%d", ++ randr_mode->mode.width, ++ randr_mode->mode.height); ++ ++ RROutputSetPhysicalSize(xmir_output->randr_output, ++ mir_output_get_physical_width_mm(mir_output), ++ mir_output_get_physical_height_mm(mir_output)); ++ RROutputSetModes(xmir_output->randr_output, &randr_mode, 1, 1); ++ ++ /* TODO: Hook up subpixel order when available (LP: #1393578) */ ++ RRCrtcNotify(xmir_output->randr_crtc, randr_mode, ++ xmir_output->x, xmir_output->y, ++ to_rr_rotation(mir_output_get_orientation(mir_output)), ++ NULL, 1, &xmir_output->randr_output); ++ } ++ else { ++ xmir_output->width = 0; ++ xmir_output->height = 0; ++ xmir_output->x = 0; ++ xmir_output->y = 0; ++ ++ RROutputSetPhysicalSize(xmir_output->randr_output, 0, 0); ++ RROutputSetModes(xmir_output->randr_output, NULL, 0, 0); ++ ++ RRCrtcNotify(xmir_output->randr_crtc, NULL, ++ 0, 0, RR_Rotate_0, NULL, 1, &xmir_output->randr_output); ++ } ++} ++ ++static void ++xmir_screen_update_windowed_output(struct xmir_screen *xmir_screen) ++{ ++ struct xmir_output *xmir_output = xmir_screen->windowed; ++ RRModePtr randr_mode; ++ ++ RROutputSetConnection(xmir_output->randr_output, RR_Connected); ++ RROutputSetSubpixelOrder(xmir_output->randr_output, SubPixelUnknown); ++ ++ xmir_output->width = xmir_screen->screen->width; ++ xmir_output->height = xmir_screen->screen->height; ++ xmir_output->x = 0; ++ xmir_output->y = 0; ++ ++ randr_mode = xmir_cvt(xmir_output->width, xmir_output->height, 60, 0, 0); ++ randr_mode->mode.width = xmir_output->width; ++ randr_mode->mode.height = xmir_output->height; ++ sprintf(randr_mode->name, "%dx%d", ++ randr_mode->mode.width, randr_mode->mode.height); ++ ++ RROutputSetPhysicalSize(xmir_output->randr_output, 0, 0); ++ RROutputSetModes(xmir_output->randr_output, &randr_mode, 1, 1); ++ RRCrtcNotify(xmir_output->randr_crtc, randr_mode, ++ xmir_output->x, xmir_output->y, ++ RR_Rotate_0, NULL, 1, &xmir_output->randr_output); ++} ++ ++static void ++xmir_output_screen_resized(struct xmir_screen *xmir_screen) ++{ ++ ScreenPtr screen = xmir_screen->screen; ++ struct xmir_output *xmir_output; ++ int width, height; ++ ++ width = 0; ++ height = 0; ++ xorg_list_for_each_entry(xmir_output, &xmir_screen->output_list, link) { ++ if (width < xmir_output->x + xmir_output->width) ++ width = xmir_output->x + xmir_output->width; ++ if (height < xmir_output->y + xmir_output->height) ++ height = xmir_output->y + xmir_output->height; ++ } ++ ++ screen->width = width; ++ screen->height = height; ++ if (ConnectionInfo) ++ RRScreenSizeNotify(xmir_screen->screen); ++ update_desktop_dimensions(); ++} ++ ++static struct xmir_output* ++xmir_output_create(struct xmir_screen *xmir_screen, const char *name) ++{ ++ struct xmir_output *xmir_output; ++ ++ xmir_output = calloc(sizeof *xmir_output, 1); ++ if (xmir_output == NULL) { ++ FatalError("No memory for creating output\n"); ++ return NULL; ++ } ++ ++ xmir_output->xmir_screen = xmir_screen; ++ xmir_output->randr_crtc = RRCrtcCreate(xmir_screen->screen, xmir_output); ++ xmir_output->randr_output = RROutputCreate(xmir_screen->screen, ++ name, strlen(name), ++ xmir_output); ++ ++ RRCrtcGammaSetSize(xmir_output->randr_crtc, 256); ++ RROutputSetCrtcs(xmir_output->randr_output, &xmir_output->randr_crtc, 1); ++ xorg_list_append(&xmir_output->link, &xmir_screen->output_list); ++ return xmir_output; ++} ++ ++void ++xmir_output_destroy(struct xmir_output *xmir_output) ++{ ++ xorg_list_del(&xmir_output->link); ++ free(xmir_output); ++} ++ ++static Bool ++xmir_randr_get_info(ScreenPtr pScreen, Rotation * rotations) ++{ ++ *rotations = 0; ++ ++ return TRUE; ++} ++ ++static Bool ++xmir_randr_set_config(ScreenPtr pScreen, ++ Rotation rotation, int rate, RRScreenSizePtr pSize) ++{ ++ return FALSE; ++} ++ ++static void ++xmir_update_config(struct xmir_screen *xmir_screen) ++{ ++ MirDisplayConfig *new_config; ++ struct xmir_output *xmir_output; ++ int old_num_outputs, new_num_outputs; ++ MirOutput const *mir_output; ++ int i; ++ ++ if (xmir_screen->windowed) ++ return; ++ ++ new_config = mir_connection_create_display_configuration(xmir_screen->conn); ++ new_num_outputs = mir_display_config_get_num_outputs(new_config); ++ old_num_outputs = mir_display_config_get_num_outputs(xmir_screen->display); ++ if (new_num_outputs != old_num_outputs) ++ FatalError("Number of outputs changed on update.\n"); ++ ++ mir_display_config_release(xmir_screen->display); ++ xmir_screen->display = new_config; ++ ++ i = 0; ++ xorg_list_for_each_entry(xmir_output, &xmir_screen->output_list, link) { ++ mir_output = mir_display_config_get_output(new_config, i); ++ xmir_output_update(xmir_output, mir_output); ++ ++i; ++ } ++ ++ xmir_output_screen_resized(xmir_screen); ++} ++ ++void ++xmir_output_handle_orientation(struct xmir_window *xmir_window, ++ MirOrientation dir) ++{ ++ XMIR_DEBUG(("Orientation: %i\n", dir)); ++ ++ xmir_output_handle_resize(xmir_window, -1, -1); ++} ++ ++void ++xmir_output_handle_resize(struct xmir_window *xmir_window, ++ int width, int height) ++{ ++ WindowPtr window = xmir_window->window; ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ PixmapPtr pixmap; ++ DrawablePtr oldroot = &screen->root->drawable; ++ BoxRec box; ++ BoxRec copy_box; ++ ++ int window_width, window_height; ++ DeviceIntPtr pDev; ++ ++ MirOrientation old = xmir_window->orientation; ++ xmir_window->orientation = mir_window_get_orientation(xmir_window->surface); ++ ++ if (width < 0 && height < 0) { ++ if (old % 180 == xmir_window->orientation % 180) { ++ window_width = window->drawable.width; ++ window_height = window->drawable.height; ++ } ++ else { ++ window_width = window->drawable.height; ++ window_height = window->drawable.width; ++ } ++ } ++ else if (xmir_window->orientation == 0 || xmir_window->orientation == 180) { ++ window_width = width * (1 + xmir_screen->doubled); ++ window_height = height * (1 + xmir_screen->doubled); ++ } ++ else { ++ window_width = height * (1 + xmir_screen->doubled); ++ window_height = width * (1 + xmir_screen->doubled); ++ } ++ ++ if (window_width == window->drawable.width && ++ window_height == window->drawable.height) { ++ /* Damage window if rotated */ ++ if (old != xmir_window->orientation) ++ DamageDamageRegion(&window->drawable, &xmir_window->region); ++ return; ++ } ++ ++ /* In case of async EGL, destroy the image after swap has finished */ ++ if (xmir_window->image) { ++ if (!xmir_window->has_free_buffer) { ++ while (1) { ++ xmir_process_from_eventloop(); ++ if (xmir_window->has_free_buffer) ++ break; ++ usleep(1000); ++ } ++ } ++ ++ eglDestroyImageKHR(xmir_screen->egl_display, xmir_window->image); ++ xmir_window->image = NULL; ++ } ++ ++ if (xmir_screen->rootless) ++ return; ++ ++ if (!xmir_screen->windowed) { ++ XMIR_DEBUG(("Root resized, removing all outputs and inserting fake output\n")); ++ ++ while (!xorg_list_is_empty(&xmir_screen->output_list)) { ++ struct xmir_output *xmir_output; ++ ++ xmir_output = xorg_list_first_entry(&xmir_screen->output_list, ++ typeof(*xmir_output), ++ link); ++ ++ RRCrtcDestroy(xmir_output->randr_crtc); ++ RROutputDestroy(xmir_output->randr_output); ++ xmir_output_destroy(xmir_output); ++ } ++ ++ xmir_screen->windowed = xmir_output_create(xmir_screen, "Windowed"); ++ xmir_disable_screensaver(xmir_screen); ++ } ++ ++ XMIR_DEBUG(("Output resized %ix%i with rotation %i\n", ++ width, height, xmir_window->orientation)); ++ ++ pixmap = screen->CreatePixmap(screen, ++ window_width, window_height, ++ screen->rootDepth, ++ CREATE_PIXMAP_USAGE_BACKING_PIXMAP); ++ ++ copy_box.x1 = copy_box.y1 = 0; ++ copy_box.x2 = min(window_width, oldroot->width); ++ copy_box.y2 = min(window_height, oldroot->height); ++ ++ if (xmir_screen->glamor) { ++ glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); ++ glClearColor(0., 0., 0., 1.); ++ glClear(GL_COLOR_BUFFER_BIT); ++ glamor_copy(&screen->root->drawable, &pixmap->drawable, ++ NULL, ©_box, 1, 0, 0, FALSE, FALSE, 0, NULL); ++ glBindFramebuffer(GL_FRAMEBUFFER, 0); ++ } ++ else { ++ PixmapPtr old_pixmap = screen->GetWindowPixmap(window); ++ int src_stride = old_pixmap->devKind; ++ int dst_stride = pixmap->devKind; ++ int bpp = oldroot->bitsPerPixel >> 3; ++ const char *src = (char*)old_pixmap->devPrivate.ptr + ++ src_stride * copy_box.y1 + ++ copy_box.x1 * bpp; ++ char *dst = (char*)pixmap->devPrivate.ptr + ++ dst_stride * copy_box.y1 + ++ copy_box.x1 * bpp; ++ int line_len = (copy_box.x2 - copy_box.x1) * bpp; ++ int y; ++ for (y = copy_box.y1; y < copy_box.y2; ++y) { ++ memcpy(dst, src, line_len); ++ memset(dst+line_len, 0, dst_stride-line_len); ++ src += src_stride; ++ dst += dst_stride; ++ } ++ if (y < window_height) ++ memset(dst, 0, (window_height - y) * dst_stride); ++ } ++ ++ screen->width = window_width; ++ screen->height = window_height; ++ screen->mmWidth = screen->width * 254 / (10 * xmir_screen->dpi); ++ screen->mmHeight = screen->height * 254 / (10 * xmir_screen->dpi); ++ ++ screen->SetScreenPixmap(pixmap); ++ ++ SetRootClip(screen, ROOT_CLIP_FULL); ++ ++ box.x1 = box.y1 = 0; ++ box.x2 = window_width; ++ box.y2 = window_height; ++ RegionReset(&xmir_window->region, &box); ++ DamageDamageRegion(&window->drawable, &xmir_window->region); ++ ++ /* Update cursor info too */ ++ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { ++ int x, y; ++ ++ if (!IsPointerDevice(pDev)) ++ continue; ++ ++ miPointerGetPosition(pDev, &x, &y); ++ UpdateSpriteForScreen(pDev, screen); ++ miPointerSetScreen(pDev, 0, x, y); ++ } ++ ++ xmir_screen_update_windowed_output(xmir_screen); ++ if (ConnectionInfo) ++ RRScreenSizeNotify(xmir_screen->screen); ++ update_desktop_dimensions(); ++} ++ ++static void ++xmir_handle_hotplug(struct xmir_screen *xmir_screen, ++ struct xmir_window *unused1, ++ void *unused2) ++{ ++ xmir_update_config(xmir_screen); ++ ++ /* Trigger RANDR refresh */ ++ RRGetInfo(screenInfo.screens[0], TRUE); ++} ++ ++static void ++xmir_display_config_callback(MirConnection *conn, void *ctx) ++{ ++ struct xmir_screen *xmir_screen = ctx; ++ xmir_post_to_eventloop(xmir_handle_hotplug, xmir_screen, 0, 0); ++} ++ ++Bool ++xmir_screen_init_output(struct xmir_screen *xmir_screen) ++{ ++ rrScrPrivPtr rp; ++ int i; ++ MirDisplayConfig *display_config = xmir_screen->display; ++ int num_outputs; ++ int output_type_count[mir_display_output_type_edp + 1] = {}; ++ ++ if (!RRScreenInit(xmir_screen->screen)) ++ return FALSE; ++ ++ mir_connection_set_display_config_change_callback(xmir_screen->conn, ++ &xmir_display_config_callback, ++ xmir_screen); ++ ++ num_outputs = mir_display_config_get_num_outputs(display_config); ++ for (i = 0; i < num_outputs; i++) { ++ char name[32]; ++ int type_count; ++ MirOutput const *mir_output; ++ MirOutputType output_type; ++ const char* output_type_str; ++ struct xmir_output *xmir_output; ++ ++ mir_output = mir_display_config_get_output(display_config, i); ++ output_type = mir_output_get_type(mir_output); ++ output_type_str = mir_output_type_name(output_type); ++ if (output_type_str) ++ type_count = output_type_count[output_type]++; ++ snprintf(name, sizeof name, "%s-%d", output_type_str, type_count); ++ ++ xmir_output = xmir_output_create(xmir_screen, name); ++ if (!xmir_output) ++ return FALSE; ++ xmir_output_update(xmir_output, mir_output); ++ } ++ ++ RRScreenSetSizeRange(xmir_screen->screen, 320, 200, INT16_MAX, INT16_MAX); ++ ++ xmir_output_screen_resized(xmir_screen); ++ ++ rp = rrGetScrPriv(xmir_screen->screen); ++ rp->rrGetInfo = xmir_randr_get_info; ++ rp->rrSetConfig = xmir_randr_set_config; ++ // TODO: rp->rrCrtcSet = xmir_randr_set_crtc; ++ ++ return TRUE; ++} +--- /dev/null ++++ b/hw/xmir/xmir-thread-proxy.c +@@ -0,0 +1,110 @@ ++/* ++ * Copyright © 2012-2017 Canonical Ltd ++ * ++ * 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) ++ * Later rewritten, simplified and optimized by: ++ * Daniel van Vugt ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "xmir.h" ++ ++struct message { ++ xmir_event_callback *callback; ++ struct xmir_screen *xmir_screen; ++ struct xmir_window *xmir_window; ++ void *arg; ++}; ++ ++static int pipefds[2]; ++ ++static void ++xmir_socket_ready(int fd, int ready, void *data) ++{ ++ 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); ++ ++ SetNotifyFd(pipefds[0], xmir_socket_ready, X_NOTIFY_READ, NULL); ++} ++ ++void ++xmir_fini_thread_to_eventloop(void) ++{ ++ RemoveNotifyFd(pipefds[0]); ++ close(pipefds[1]); ++ close(pipefds[0]); ++} ++ ++void ++xmir_post_to_eventloop(xmir_event_callback *cb, ++ struct xmir_screen *s, struct xmir_window *w, void *a) ++{ ++ struct message msg = {cb, s, w, a}; ++ ssize_t written = write(pipefds[1], &msg, sizeof msg); ++ if (written != sizeof(msg)) ++ ErrorF("[XMIR] Failed to proxy message to mainloop\n"); ++} ++ ++void ++xmir_process_from_eventloop_except(const struct xmir_window *w) ++{ ++ for (;;) { ++ struct message msg; ++ ssize_t got = read(pipefds[0], &msg, sizeof msg); ++ if (got < 0) ++ return; ++ if (got == sizeof(msg) && w != msg.xmir_window) ++ msg.callback(msg.xmir_screen, msg.xmir_window, msg.arg); ++ } ++} ++ ++void ++xmir_process_from_eventloop(void) ++{ ++ xmir_process_from_eventloop_except(NULL); ++} +--- /dev/null ++++ b/hw/xmir/xmir.c +@@ -0,0 +1,1818 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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. ++ */ ++#include "xf86.h" ++ ++#include "xmir.h" ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "compint.h" ++#include "dri2.h" ++#include "glxserver.h" ++#include "glamor_priv.h" ++#include "dpmsproc.h" ++ ++static struct { ++ Atom UTF8_STRING; ++ Atom _NET_WM_NAME; ++ Atom WM_PROTOCOLS; ++ Atom WM_DELETE_WINDOW; ++ Atom _NET_WM_WINDOW_TYPE; ++ Atom _NET_WM_WINDOW_TYPE_DESKTOP; ++ Atom _NET_WM_WINDOW_TYPE_DOCK; ++ Atom _NET_WM_WINDOW_TYPE_TOOLBAR; ++ Atom _NET_WM_WINDOW_TYPE_MENU; ++ Atom _NET_WM_WINDOW_TYPE_UTILITY; ++ Atom _NET_WM_WINDOW_TYPE_SPLASH; ++ Atom _NET_WM_WINDOW_TYPE_DIALOG; ++ Atom _NET_WM_WINDOW_TYPE_DROPDOWN_MENU; ++ Atom _NET_WM_WINDOW_TYPE_POPUP_MENU; ++ Atom _NET_WM_WINDOW_TYPE_TOOLTIP; ++ Atom _NET_WM_WINDOW_TYPE_NOTIFICATION; ++ Atom _NET_WM_WINDOW_TYPE_COMBO; ++ Atom _NET_WM_WINDOW_TYPE_DND; ++ Atom _NET_WM_WINDOW_TYPE_NORMAL; ++ Atom _MIR_WM_PERSISTENT_ID; ++} known_atom; ++ ++static Atom get_atom(const char *name, Atom *cache, Bool create) ++{ ++ if (!*cache) { ++ *cache = MakeAtom(name, strlen(name), create); ++ if (*cache) ++ XMIR_DEBUG(("Atom %s = %lu\n", name, (unsigned long)*cache)); ++ } ++ return *cache; ++} ++ ++#define GET_ATOM(_a) get_atom(#_a, &known_atom._a, FALSE) ++#define MAKE_ATOM(_a) get_atom(#_a, &known_atom._a, TRUE) ++ ++extern __GLXprovider __glXDRI2Provider; ++ ++Bool xmir_debug_logging = FALSE; ++ ++static const char get_title_from_top_window[] = "@"; ++ ++struct xmir_swap { ++ int server_generation; ++ struct xmir_screen *xmir_screen; ++ struct xmir_window *xmir_window; ++}; ++ ++static void xmir_handle_buffer_received(MirBufferStream *stream, void *ctx); ++ ++/* Required by GLX module */ ++ScreenPtr xf86ScrnToScreen(ScrnInfoPtr pScrn) ++{ ++ return NULL; ++} ++ ++/* Required by GLX module */ ++ScrnInfoPtr xf86ScreenToScrn(ScreenPtr pScreen) ++{ ++ static ScrnInfoRec rec; ++ return &rec; ++} ++ ++/* Required by GLX module */ ++void ++xf86ProcessOptions(int scrnIndex, XF86OptionPtr options, OptionInfoPtr optinfo) ++{ ++} ++ ++/* Required by GLX module */ ++const char * ++xf86GetOptValString(const OptionInfoRec *table, int token) ++{ ++ /* This may bite us in the bum since it sends up hardcoding "mesa" as the GL ++ * vendor, but... */ ++ return NULL; ++} ++ ++void ++ddxGiveUp(enum ExitCode error) ++{ ++} ++ ++void ++AbortDDX(enum ExitCode error) ++{ ++ ddxGiveUp(error); ++} ++ ++void ++OsVendorInit(void) ++{ ++} ++ ++void ++OsVendorFatalError(const char *f, va_list args) ++{ ++} ++ ++#if defined(DDXBEFORERESET) ++void ++ddxBeforeReset(void) ++{ ++ return; ++} ++#endif ++ ++void ++ddxUseMsg(void) ++{ ++ ErrorF("-rootless Run rootless\n"); ++ ErrorF(" -flatten Flatten rootless X windows into a single surface\n"); ++ ErrorF(" -neverclose Never close the flattened rootless window\n"); ++ ErrorF("-title Set window title (@ = automatic)\n"); ++ ErrorF("-sw disable glamor rendering\n"); ++ ErrorF("-egl force use of EGL calls, disables DRI2 pass-through\n"); ++ ErrorF("-egl_sync same as -egl, but with synchronous page flips.\n"); ++ ErrorF("-damage copy the entire frame on damage, always enabled in egl mode\n"); ++ ErrorF("-fd force client connection on only fd\n"); ++ ErrorF("-shared open default listening sockets even when -fd is passed\n"); ++ ErrorF("-mir set mir's application id.\n"); ++ ErrorF("-mirSocket use the specified socket for mir\n"); ++ ErrorF("-2x double the fun (2x resolution compared to onscreen)\n"); ++ ErrorF("-debug Log everything Xmir is doing\n"); ++} ++ ++int ++ddxProcessArgument(int argc, char *argv[], int i) ++{ ++ static int seen_shared; ++ ++ if (strcmp(argv[i], "-rootless") == 0 || ++ strcmp(argv[i], "-flatten") == 0 || ++ strcmp(argv[i], "-neverclose") == 0 || ++ strcmp(argv[i], "-sw") == 0 || ++ strcmp(argv[i], "-egl") == 0 || ++ strcmp(argv[i], "-egl_sync") == 0 || ++ strcmp(argv[i], "-2x") == 0 || ++ strcmp(argv[i], "-debug") == 0 || ++ strcmp(argv[i], "-damage") == 0) { ++ return 1; ++ } ++ else if (strcmp(argv[i], "-mirSocket") == 0 || ++ strcmp(argv[i], "-title") == 0 || ++ strcmp(argv[i], "-mir") == 0) { ++ return 2; ++ } ++ else if (!strcmp(argv[i], "-novtswitch") || ++ !strncmp(argv[i], "vt", 2)) { ++ return 1; ++ /* Bypass unity8 "security" */ ++ } ++ else if (!strncmp(argv[i], "--desktop_file_hint=", strlen("--desktop_file_hint="))) { ++ return 1; ++ } ++ else if (!strcmp(argv[i], "-fd")) { ++ if (!seen_shared) ++ NoListenAll = 1; ++ ++ return 2; ++ } ++ else if (!strcmp(argv[i], "-shared")) { ++ seen_shared = 1; ++ NoListenAll = 0; ++ return 1; ++ } ++ else if (!strcmp(argv[i], "-listen")) { ++ seen_shared = 1; ++ NoListenAll = 0; ++ return 0; ++ } ++ ++ return 0; ++} ++ ++static DevPrivateKeyRec xmir_window_private_key; ++static DevPrivateKeyRec xmir_screen_private_key; ++static DevPrivateKeyRec xmir_pixmap_private_key; ++ ++struct xmir_screen * ++xmir_screen_get(ScreenPtr screen) ++{ ++ return dixLookupPrivate(&screen->devPrivates, &xmir_screen_private_key); ++} ++ ++struct xmir_pixmap * ++xmir_pixmap_get(PixmapPtr pixmap) ++{ ++ return dixLookupPrivate(&pixmap->devPrivates, &xmir_pixmap_private_key); ++} ++ ++struct xmir_window * ++xmir_window_get(WindowPtr window) ++{ ++ return dixLookupPrivate(&window->devPrivates, &xmir_window_private_key); ++} ++ ++void ++xmir_pixmap_set(PixmapPtr pixmap, struct xmir_pixmap *xmir_pixmap) ++{ ++ return dixSetPrivate(&pixmap->devPrivates, ++ &xmir_pixmap_private_key, ++ xmir_pixmap); ++} ++ ++static Bool ++xmir_get_window_prop_string8(WindowPtr window, ATOM atom, ++ char *buf, size_t bufsize) ++{ ++ if (window->optional) { ++ PropertyPtr p = window->optional->userProps; ++ while (p) { ++ if (p->propertyName == atom) { ++ if (( p->type == XA_STRING ++ || p->type == GET_ATOM(UTF8_STRING) ++ ) && ++ p->format == 8 && p->data) { ++ size_t len = p->size >= bufsize ? bufsize - 1 : p->size; ++ memcpy(buf, p->data, len); ++ buf[len] = '\0'; ++ return TRUE; ++ } ++ else { ++ ErrorF("xmir_get_window_prop_string8: Atom %d is not " ++ "an 8-bit string as expected\n", atom); ++ break; ++ } ++ } ++ p = p->next; ++ } ++ } ++ ++ if (bufsize) ++ buf[0] = '\0'; ++ return FALSE; ++} ++ ++static Bool ++xmir_get_window_name(WindowPtr window, char *buf, size_t bufsize) ++{ ++ return xmir_get_window_prop_string8(window, GET_ATOM(_NET_WM_NAME), ++ buf, bufsize) ++ || xmir_get_window_prop_string8(window, XA_WM_NAME, buf, bufsize); ++} ++ ++static WindowPtr ++xmir_get_window_prop_window(WindowPtr window, ATOM atom) ++{ ++ if (window->optional) { ++ PropertyPtr p = window->optional->userProps; ++ while (p) { ++ if (p->propertyName == atom) { ++ if (p->type == XA_WINDOW) { ++ WindowPtr ptr; ++ XID id = *(XID*)p->data; ++ if (dixLookupWindow(&ptr, id, serverClient, ++ DixReadAccess) != Success) ++ ptr = NULL; ++ return ptr; ++ } ++ else { ++ ErrorF("xmir_get_window_prop_window: Atom %d is not " ++ "a Window as expected\n", atom); ++ return NULL; ++ } ++ } ++ p = p->next; ++ } ++ } ++ return NULL; ++} ++ ++static Atom ++xmir_get_window_prop_atom(WindowPtr window, ATOM name) ++{ ++ if (window->optional) { ++ PropertyPtr p = window->optional->userProps; ++ while (p) { ++ if (p->propertyName == name) { ++ if (p->type == XA_ATOM) { ++ return *(Atom*)p->data; ++ } ++ else { ++ ErrorF("xmir_get_window_prop_atom: Atom %d is not " ++ "an Atom as expected\n", name); ++ return 0; ++ } ++ } ++ p = p->next; ++ } ++ } ++ return 0; ++} ++ ++enum XWMHints_flag { ++ InputHint = 1 ++ /* There are more but not yet required */ ++}; ++ ++typedef struct { ++ long flags; /* marks which fields in this structure are defined */ ++ Bool input; /* does this application rely on the window manager to ++ get keyboard input? */ ++ int initial_state; /* see below */ ++ Pixmap icon_pixmap; /* pixmap to be used as icon */ ++ Window icon_window; /* window to be used as icon */ ++ int icon_x, icon_y; /* initial position of icon */ ++ Pixmap icon_mask; /* icon mask bitmap */ ++ XID window_group; /* id of related window group */ ++ /* this structure may be extended in the future */ ++} XWMHints; ++ ++static XWMHints* ++xmir_get_window_prop_hints(WindowPtr window) ++{ ++ if (window->optional) { ++ PropertyPtr p = window->optional->userProps; ++ while (p) { ++ if (p->propertyName == XA_WM_HINTS) ++ return (XWMHints*)p->data; ++ p = p->next; ++ } ++ } ++ return NULL; ++} ++ ++static void ++damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data) ++{ ++ struct xmir_window *xmir_window = data; ++ struct xmir_screen *xmir_screen = xmir_window->xmir_screen; ++ ++ xorg_list_add(&xmir_window->link_damage, &xmir_screen->damage_window_list); ++} ++ ++static void ++damage_destroy(DamagePtr pDamage, void *data) ++{ ++} ++ ++static void ++xmir_window_enable_damage_tracking(struct xmir_window *xmir_win) ++{ ++ WindowPtr win = xmir_win->window; ++ ++ if (xmir_win->damage != NULL) ++ return; ++ ++ xmir_win->damage = DamageCreate(damage_report, damage_destroy, ++ DamageReportNonEmpty, FALSE, ++ win->drawable.pScreen, xmir_win); ++ DamageRegister(&win->drawable, xmir_win->damage); ++ DamageSetReportAfterOp(xmir_win->damage, TRUE); ++} ++ ++static void ++xmir_window_disable_damage_tracking(struct xmir_window *xmir_win) ++{ ++ if (xmir_win->damage != NULL) { ++ DamageUnregister(xmir_win->damage); ++ DamageDestroy(xmir_win->damage); ++ xmir_win->damage = NULL; ++ } ++} ++ ++static void ++xmir_sw_copy(struct xmir_screen *xmir_screen, ++ struct xmir_window *xmir_win, ++ RegionPtr dirty) ++{ ++ PixmapPtr pix = xmir_screen->screen->GetWindowPixmap(xmir_win->window); ++ int x1 = dirty->extents.x1, y1 = dirty->extents.y1; ++ int x2 = dirty->extents.x2, y2 = dirty->extents.y2; ++ int y, line_len, src_stride = pix->devKind; ++ int bpp = pix->drawable.bitsPerPixel >> 3; ++ char *src, *dst; ++ MirGraphicsRegion region; ++ ++ mir_buffer_stream_get_graphics_region( ++ mir_window_get_buffer_stream(xmir_win->surface), ®ion); ++ ++ /* ++ * Our window region (and hence damage region) might be a little ahead of ++ * the current buffer in terms of size, during a resize. So we must accept ++ * that their dimensions might not match and take the safe intersection... ++ */ ++ if (x1 < 0) x1 = 0; ++ if (y1 < 0) y1 = 0; ++ if (x2 > region.width) x2 = region.width; ++ if (y2 > region.height) y2 = region.height; ++ if (x2 > pix->drawable.width) x2 = pix->drawable.width; ++ if (y2 > pix->drawable.height) y2 = pix->drawable.height; ++ if (x2 <= x1 || y2 <= y1) return; ++ ++ src = (char*)pix->devPrivate.ptr + src_stride*y1 + x1*bpp; ++ dst = region.vaddr + y1*region.stride + x1*bpp; ++ ++ line_len = (x2 - x1) * bpp; ++ for (y = y1; y < y2; ++y) { ++ memcpy(dst, src, line_len); ++ if (x2 < region.width) ++ memset(dst+x2*bpp, 0, (region.width - x2)*bpp); ++ src += src_stride; ++ dst += region.stride; ++ } ++ ++ if (y2 < region.height) ++ memset(dst, 0, (region.height - y2)*region.stride); ++} ++ ++static void ++xmir_get_current_buffer_dimensions( ++ struct xmir_screen *xmir_screen, struct xmir_window *xmir_win, ++ int *width, int *height) ++{ ++ MirBufferPackage *package; ++ MirGraphicsRegion reg; ++ MirBufferStream *stream = mir_window_get_buffer_stream(xmir_win->surface); ++ ++ switch (xmir_screen->glamor) { ++ case glamor_off: ++ mir_buffer_stream_get_graphics_region(stream, ®); ++ *width = reg.width; ++ *height = reg.height; ++ break; ++ case glamor_dri: ++ mir_buffer_stream_get_current_buffer(stream, &package); ++ *width = package->width; ++ *height = package->height; ++ break; ++ case glamor_egl: ++ case glamor_egl_sync: ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, ++ EGL_WIDTH, width); ++ eglQuerySurface(xmir_screen->egl_display, xmir_win->egl_surface, ++ EGL_HEIGHT, height); ++ break; ++ default: ++ break; ++ } ++} ++ ++static void ++xmir_swap(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win) ++{ ++ MirBufferStream *stream = mir_window_get_buffer_stream(xmir_win->surface); ++ struct xmir_swap *swap = calloc(sizeof(struct xmir_swap), 1); ++ swap->server_generation = serverGeneration; ++ swap->xmir_screen = xmir_screen; ++ swap->xmir_window = xmir_win; ++ mir_buffer_stream_swap_buffers(stream, xmir_handle_buffer_received, swap); ++} ++ ++void xmir_repaint(struct xmir_window *xmir_win) ++{ ++ struct xmir_screen *xmir_screen; ++ RegionPtr dirty = &xmir_win->region; ++ char wm_name[256]; ++ WindowPtr named = NULL; ++ ++ if (!xmir_win->has_free_buffer) ++ ErrorF("ERROR: xmir_repaint requested without a buffer to paint to\n"); ++ ++ xmir_screen = xmir_screen_get(xmir_win->window->drawable.pScreen); ++ if (strcmp(xmir_screen->title, get_title_from_top_window)) { ++ /* Fixed title mode. Never change it. */ ++ named = NULL; ++ } ++ else if (xmir_screen->rootless) { ++ named = xmir_win->window; ++ } ++ else { /* Try and guess from the most relevant app window */ ++ WindowPtr top = xmir_screen->screen->root->firstChild; ++ WindowPtr top_named = NULL; ++ WindowPtr top_normal = NULL; ++ ++ while (top) { ++ Atom wm_type; ++ WindowPtr app_window; ++ if (!top->viewable) { ++ top = top->nextSib; ++ continue; ++ } ++ app_window = xmir_get_window_prop_window(top, XA_WM_TRANSIENT_FOR); ++ if (app_window) { ++ named = app_window; ++ break; ++ } ++ wm_type = xmir_get_window_prop_atom(top, ++ GET_ATOM(_NET_WM_WINDOW_TYPE)); ++ if (wm_type && wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_NORMAL)) ++ top_normal = top; ++ if (xmir_get_window_name(top, wm_name, sizeof wm_name)) ++ top_named = top; ++ ++ top = top->firstChild; ++ } ++ if (!named) ++ named = top_normal ? top_normal : top_named; ++ } ++ ++ if (named && ++ xmir_get_window_name(named, wm_name, sizeof wm_name) && ++ strcmp(wm_name, xmir_win->wm_name)) { ++ MirWindowSpec *rename = ++ mir_create_window_spec(xmir_screen->conn); ++ mir_window_spec_set_name(rename, wm_name); ++ mir_window_apply_spec(xmir_win->surface, rename); ++ mir_window_spec_release(rename); ++ strncpy(xmir_win->wm_name, wm_name, sizeof(xmir_win->wm_name)); ++ } ++ ++ switch (xmir_screen->glamor) { ++ case glamor_off: ++ xmir_sw_copy(xmir_screen, xmir_win, dirty); ++ xmir_win->has_free_buffer = FALSE; ++ xmir_swap(xmir_screen, xmir_win); ++ break; ++ case glamor_dri: ++ xmir_glamor_copy(xmir_screen, xmir_win, dirty); ++ xmir_win->has_free_buffer = FALSE; ++ xmir_swap(xmir_screen, xmir_win); ++ break; ++ case glamor_egl: ++ case glamor_egl_sync: ++ xmir_glamor_copy(xmir_screen, xmir_win, dirty); ++ xmir_win->has_free_buffer = TRUE; ++ /* Will eglSwapBuffers (?) */ ++ break; ++ default: ++ break; ++ } ++ ++ DamageEmpty(xmir_win->damage); ++ xorg_list_del(&xmir_win->link_damage); ++} ++ ++void ++xmir_handle_buffer_available(struct xmir_screen *xmir_screen, ++ struct xmir_window *xmir_win, ++ void *unused) ++{ ++ int buf_width, buf_height; ++ Bool xserver_lagging, xclient_lagging; ++ ++ if (!xmir_win->damage || !mir_window_is_valid(xmir_win->surface)) { ++ if (xmir_win->damage) ++ ErrorF("Buffer-available recieved for invalid surface?\n"); ++ return; ++ } ++ ++ DebugF("Buffer-available on %p\n", xmir_win); ++ xmir_get_current_buffer_dimensions(xmir_screen, xmir_win, ++ &buf_width, &buf_height); ++ ++ xmir_win->has_free_buffer = TRUE; ++ xmir_win->buf_width = buf_width; ++ xmir_win->buf_height = buf_height; ++ ++ xserver_lagging = buf_width != xmir_win->surface_width || ++ buf_height != xmir_win->surface_height; ++ ++ xclient_lagging = buf_width != xmir_win->window->drawable.width || ++ buf_height != xmir_win->window->drawable.height; ++ ++ if (xserver_lagging || !xorg_list_is_empty(&xmir_win->link_damage)) ++ xmir_repaint(xmir_win); ++ ++ if (xclient_lagging) { ++ if (xmir_screen->rootless) { ++ XID vlist[2] = {buf_width, buf_height}; ++ ConfigureWindow(xmir_win->window, CWWidth|CWHeight, vlist, ++ serverClient); ++ } ++ else { ++ /* Output resizing takes time, so start it going and let it ++ * finish next frame or so... ++ */ ++ xmir_output_handle_resize(xmir_win, buf_width, buf_height); ++ } ++ } ++ ++ if (xserver_lagging) ++ DamageDamageRegion(&xmir_win->window->drawable, &xmir_win->region); ++} ++ ++static void ++xmir_handle_buffer_received(MirBufferStream *stream, void *ctx) ++{ ++ struct xmir_swap *swap = ctx; ++ struct xmir_screen *xmir_screen = swap->xmir_screen; ++ ++ if (swap->server_generation == serverGeneration && !xmir_screen->closing) { ++ xmir_post_to_eventloop(xmir_handle_buffer_available, xmir_screen, ++ swap->xmir_window, 0); ++ } ++ ++ free(swap); ++} ++ ++static Bool ++xmir_create_window(WindowPtr window) ++{ ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_window *xmir_window = calloc(sizeof(*xmir_window), 1); ++ Bool ret; ++ ++ if (!xmir_window) ++ return FALSE; ++ ++ xmir_window->xmir_screen = xmir_screen; ++ xmir_window->window = window; ++ xorg_list_init(&xmir_window->link_damage); ++ xorg_list_init(&xmir_window->flip.entry); ++ xorg_list_init(&xmir_window->link_flattened); ++ ++ screen->CreateWindow = xmir_screen->CreateWindow; ++ ret = (*screen->CreateWindow) (window); ++ xmir_screen->CreateWindow = screen->CreateWindow; ++ screen->CreateWindow = xmir_create_window; ++ ++ if (ret) ++ dixSetPrivate(&window->devPrivates, ++ &xmir_window_private_key, ++ xmir_window); ++ else ++ free(xmir_window); ++ ++ return ret; ++} ++ ++static void ++xmir_window_update_region(struct xmir_window *xmir_window) ++{ ++ WindowPtr window = xmir_window->window; ++ BoxRec box = {0, 0, window->drawable.width, window->drawable.height}; ++ RegionReset(&xmir_window->region, &box); ++} ++ ++static Bool ++xmir_realize_window(WindowPtr window) ++{ ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_window *xmir_window = xmir_window_get(window); ++ Bool ret; ++ MirPixelFormat pixel_format = mir_pixel_format_invalid; ++ Atom wm_type = 0; ++ int mir_width = window->drawable.width / (1 + xmir_screen->doubled); ++ int mir_height = window->drawable.height / (1 + xmir_screen->doubled); ++ MirWindowSpec* spec = NULL; ++ WindowPtr wm_transient_for = NULL, positioning_parent = NULL; ++ MirWindowId *persistent_id = NULL; ++ XWMHints *wm_hints = NULL; ++ char wm_name[1024]; ++ ++ screen->RealizeWindow = xmir_screen->RealizeWindow; ++ ret = (*screen->RealizeWindow) (window); ++ xmir_screen->RealizeWindow = screen->RealizeWindow; ++ screen->RealizeWindow = xmir_realize_window; ++ ++ if (xmir_screen->rootless && !window->parent) { ++ RegionNull(&window->clipList); ++ RegionNull(&window->borderClip); ++ RegionNull(&window->winSize); ++ } ++ xmir_window_update_region(xmir_window); ++ ++ xmir_get_window_name(window, wm_name, sizeof wm_name); ++ wm_type = xmir_get_window_prop_atom(window, GET_ATOM(_NET_WM_WINDOW_TYPE)); ++ wm_transient_for = xmir_get_window_prop_window(window, XA_WM_TRANSIENT_FOR); ++ ++ XMIR_DEBUG(("Realize %swindow %p id=0x%x \"%s\": %dx%d %+d%+d parent=%p\n" ++ "\tdepth=%d redir=%u type=%hu class=%u visibility=%u viewable=%u\n" ++ "\toverride=%d _NET_WM_WINDOW_TYPE=%lu(%s)\n" ++ "\tWM_TRANSIENT_FOR=%p\n", ++ window == screen->root ? "ROOT " : "", ++ window, (int)window->drawable.id, wm_name, mir_width, mir_height, ++ window->drawable.x, window->drawable.y, ++ window->parent, ++ window->drawable.depth, ++ window->redirectDraw, window->drawable.type, ++ window->drawable.class, window->visibility, window->viewable, ++ window->overrideRedirect, ++ (unsigned long)wm_type, NameForAtom(wm_type)?:"", ++ wm_transient_for)); ++ ++ wm_hints = xmir_get_window_prop_hints(window); ++ if (wm_hints) { ++ XMIR_DEBUG(("\tWM_HINTS={flags=0x%lx,input=%s}\n", ++ wm_hints->flags, wm_hints->input?"True":"False")); ++ } ++ else { ++ XMIR_DEBUG(("\tWM_HINTS=\n")); ++ } ++ ++ if (!window->viewable) { ++ return ret; ++ } ++ else if (xmir_screen->rootless) { ++ if (!window->parent || window->parent == screen->root) { ++ compRedirectWindow(serverClient, window, ++ CompositeRedirectManual); ++ compRedirectSubwindows(serverClient, window, ++ CompositeRedirectAutomatic); ++ } ++ if (window->redirectDraw != RedirectDrawManual) ++ return ret; ++ } ++ else if (window->parent) { ++ return ret; ++ } ++ ++ if (window->drawable.depth == 32) ++ pixel_format = xmir_screen->depth32_pixel_format; ++ else if (window->drawable.depth == 24) ++ pixel_format = xmir_screen->depth24_pixel_format; ++ else { ++ ErrorF("No pixel format available for depth %d\n", ++ (int)window->drawable.depth); ++ return FALSE; ++ } ++ ++ /* TODO: Replace pixel_format with the actual right answer from the ++ * graphics driver when using EGL: ++ * mir_connection_get_egl_pixel_format() ++ */ ++ ++ if (!wm_type) /* Avoid spurious matches with undetected types */ ++ wm_type = -1; ++ ++ positioning_parent = wm_transient_for; ++ if (!positioning_parent) { ++ /* The toolkit has not provided a definite positioning parent so the ++ * next best option is to guess. But we can only reasonably guess for ++ * window types that are typically subordinate to normal windows... ++ */ ++ Bool is_subordinate = wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_POPUP_MENU) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_MENU) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_COMBO) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_TOOLBAR) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_UTILITY) ++ || wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_TOOLTIP) ++ || (wm_type == -1 && window->overrideRedirect); ++ ++ if (is_subordinate) ++ positioning_parent = xmir_screen->last_focus; ++ } ++ ++ if (xmir_screen->flatten && xmir_screen->flatten_top) { ++ WindowPtr top = xmir_screen->flatten_top->window; ++ int dx = window->drawable.x - top->drawable.x; ++ int dy = window->drawable.y - top->drawable.y; ++ xorg_list_append(&xmir_window->link_flattened, ++ &xmir_screen->flattened_list); ++ ReparentWindow(window, top, dx, dy, serverClient); ++ XMIR_DEBUG(("Flattened window %p (reparented under %p %+d%+d)\n", ++ window, top, dx, dy)); ++ /* And thanks to the X Composite extension, window will now be ++ * automatically composited into the existing flatten_top surface ++ * so we retain only a single Mir surface, as Unity8 likes to see. ++ */ ++ return ret; ++ } ++ ++ if (xmir_screen->neverclosed) { ++ spec = mir_create_window_spec(xmir_screen->conn); ++ } ++ else if (positioning_parent) { ++ struct xmir_window *rel = xmir_window_get(positioning_parent); ++ if (rel && rel->surface) { ++ short dx = window->drawable.x - rel->window->drawable.x; ++ short dy = window->drawable.y - rel->window->drawable.y; ++ MirRectangle placement = {dx, dy, 0, 0}; ++ ++ if (wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_TOOLTIP)) { ++ /* Why doesn't the API version match the Mir version?! */ ++#if MIR_CLIENT_VERSION >= MIR_VERSION_NUMBER(3,4,0) ++ spec = mir_create_tip_window_spec( ++ xmir_screen->conn, mir_width, mir_height, ++ rel->surface, &placement, mir_edge_attachment_any); ++#else ++ spec = mir_connection_create_spec_for_tooltip( ++ xmir_screen->conn, mir_width, mir_height, pixel_format, ++ rel->surface, &placement); ++#endif ++ } ++ else if (wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_DIALOG)) { ++ spec = mir_create_modal_dialog_window_spec( ++ xmir_screen->conn, mir_width, mir_height, ++ rel->surface); ++ } ++ else { /* Probably a menu. If not, still close enough... */ ++ MirEdgeAttachment edge = mir_edge_attachment_any; ++ if (wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU)) ++ edge = mir_edge_attachment_vertical; ++ spec = mir_create_menu_window_spec( ++ xmir_screen->conn, ++ mir_width, mir_height, rel->surface, ++ &placement, edge); ++ } ++ } ++ } ++ ++ if (!spec) { ++ if (wm_type == GET_ATOM(_NET_WM_WINDOW_TYPE_DIALOG)) { ++ spec = mir_create_dialog_window_spec( ++ xmir_screen->conn, mir_width, mir_height); ++ } ++ else { ++ spec = mir_create_normal_window_spec( ++ xmir_screen->conn, mir_width, mir_height); ++ } ++ } ++ ++ if (strcmp(xmir_screen->title, get_title_from_top_window)) ++ mir_window_spec_set_name(spec, xmir_screen->title); ++ else if (xmir_screen->rootless) ++ mir_window_spec_set_name(spec, wm_name); ++ ++ xmir_window->surface_width = mir_width; ++ xmir_window->surface_height = mir_height; ++ xmir_window->buf_width = mir_width; ++ xmir_window->buf_height = mir_height; ++ ++ mir_window_spec_set_pixel_format(spec, pixel_format); ++ if (xmir_screen->neverclosed) { ++ mir_window_spec_set_width(spec, mir_width); ++ mir_window_spec_set_height(spec, mir_height); ++ ++ xmir_window->surface = xmir_screen->neverclosed; ++ mir_window_apply_spec(xmir_window->surface, spec); ++ } ++ else { ++ mir_window_spec_set_buffer_usage(spec, ++ xmir_screen->glamor ++ ? mir_buffer_usage_hardware ++ : mir_buffer_usage_software); ++ xmir_window->surface = mir_create_window_sync(spec); ++ } ++ mir_window_spec_release(spec); ++ ++ persistent_id = ++ mir_window_request_window_id_sync(xmir_window->surface); ++ if (mir_window_id_is_valid(persistent_id)) { ++ const char *str = mir_window_id_as_string(persistent_id); ++ dixChangeWindowProperty(serverClient, window, ++ MAKE_ATOM(_MIR_WM_PERSISTENT_ID), ++ XA_STRING, 8, PropModeReplace, ++ strlen(str), (void*)str, FALSE); ++ } ++ mir_window_id_release(persistent_id); ++ ++ xmir_window->has_free_buffer = TRUE; ++ if (!mir_window_is_valid(xmir_window->surface)) { ++ ErrorF("failed to create a surface: %s\n", ++ mir_window_get_error_message(xmir_window->surface)); ++ return FALSE; ++ } ++ if (!xmir_screen->flatten_top) ++ xmir_screen->flatten_top = xmir_window; ++ mir_window_set_event_handler(xmir_window->surface, ++ xmir_surface_handle_event, ++ xmir_window); ++ ++ xmir_window_enable_damage_tracking(xmir_window); ++ ++ if (xmir_screen->glamor) ++ xmir_glamor_realize_window(xmir_screen, xmir_window, window); ++ ++ return ret; ++} ++ ++static const char * ++xmir_surface_type_str(MirWindowType type) ++{ ++ return "unk"; ++} ++ ++static const char * ++xmir_surface_state_str(MirWindowState state) ++{ ++ switch (state) { ++ case mir_surface_state_unknown: return "unknown"; ++ case mir_surface_state_restored: return "restored"; ++ case mir_surface_state_minimized: return "minimized"; ++ case mir_surface_state_maximized: return "maximized"; ++ case mir_surface_state_vertmaximized: return "vert maximized"; ++ case mir_surface_state_fullscreen: return "fullscreen"; ++ default: return "???"; ++ } ++} ++ ++static const char * ++xmir_surface_focus_str(MirWindowFocusState focus) ++{ ++ switch (focus) { ++ case mir_surface_unfocused: return "unfocused"; ++ case mir_window_focus_state_focused: return "focused"; ++ default: return "???"; ++ } ++} ++ ++static const char * ++xmir_surface_vis_str(MirWindowVisibility vis) ++{ ++ switch (vis) { ++ case mir_surface_visibility_occluded: return "hidden"; ++ case mir_surface_visibility_exposed: return "visible"; ++ default: return "???"; ++ } ++} ++ ++static Window ++xmir_get_current_input_focus(DeviceIntPtr kbd) ++{ ++ Window id = None; ++ FocusClassPtr focus = kbd->focus; ++ if (focus->win == NoneWin) ++ id = None; ++ else if (focus->win == PointerRootWin) ++ id = PointerRoot; ++ else ++ id = focus->win->drawable.id; ++ return id; ++} ++ ++static void ++xmir_handle_focus_event(struct xmir_window *xmir_window, ++ MirWindowFocusState state) ++{ ++ struct xmir_screen *xmir_screen = xmir_window->xmir_screen; ++ DeviceIntPtr keyboard = inputInfo.keyboard; /*PickKeyboard(serverClient);*/ ++ ++ if (xmir_screen->destroying_root) ++ return; ++ ++ if (xmir_window->surface) { /* It's a real Mir window */ ++ xmir_screen->last_focus = (state == mir_window_focus_state_focused) ? ++ xmir_window->window : NULL; ++ } ++ ++ if (xmir_screen->rootless) { ++ WindowPtr window = xmir_window->window; ++ const XWMHints *hints = xmir_get_window_prop_hints(window); ++ Bool refuse_focus = window->overrideRedirect || ++ (hints && (hints->flags & InputHint) && !hints->input); ++ if (!refuse_focus) { ++ Window id = (state == mir_window_focus_state_focused) ? ++ window->drawable.id : None; ++ SetInputFocus(serverClient, keyboard, id, RevertToParent, ++ CurrentTime, FALSE); ++ } ++ } ++ else if (!strcmp(xmir_screen->title, get_title_from_top_window)) { ++ /* ++ * So as to not break default behaviour, we only hack focus within ++ * the root window when in Unity8 invasive mode (-title @). ++ */ ++ Window id = None; ++ if (state == mir_window_focus_state_focused) { ++ id = xmir_screen->saved_focus; ++ if (id == None) ++ id = PointerRoot; ++ } ++ else { ++ xmir_screen->saved_focus = xmir_get_current_input_focus(keyboard); ++ id = None; ++ } ++ SetInputFocus(serverClient, keyboard, id, RevertToNone, CurrentTime, ++ FALSE); ++ } ++ /* else normal root window mode -- Xmir does not interfere in focus */ ++} ++ ++void ++xmir_handle_surface_event(struct xmir_window *xmir_window, ++ MirWindowAttrib attr, ++ int val) ++{ ++ switch (attr) { ++ case mir_surface_attrib_type: ++ XMIR_DEBUG(("Type: %s\n", xmir_surface_type_str(val))); ++ break; ++ case mir_surface_attrib_state: ++ XMIR_DEBUG(("State: %s\n", xmir_surface_state_str(val))); ++ break; ++ case mir_surface_attrib_swapinterval: ++ XMIR_DEBUG(("Swap interval: %i\n", val)); ++ break; ++ case mir_surface_attrib_focus: ++ XMIR_DEBUG(("Focus: %s\n", xmir_surface_focus_str(val))); ++ xmir_handle_focus_event(xmir_window, (MirWindowFocusState)val); ++ break; ++ case mir_surface_attrib_dpi: ++ XMIR_DEBUG(("DPI: %i\n", val)); ++ break; ++ case mir_surface_attrib_visibility: ++ XMIR_DEBUG(("Visibility: %s\n", xmir_surface_vis_str(val))); ++ break; ++ default: ++ XMIR_DEBUG(("Unhandled attribute %i\n", attr)); ++ break; ++ } ++} ++ ++void ++xmir_close_surface(struct xmir_window *xmir_window) ++{ ++ WindowPtr window = xmir_window->window; ++ struct xmir_screen *xmir_screen = xmir_screen_get(window->drawable.pScreen); ++ ++ if (xmir_screen->rootless) { ++ xEvent event; ++ event.u.u.type = ClientMessage; ++ event.u.u.detail = 32; ++ event.u.clientMessage.window = window->drawable.id; ++ event.u.clientMessage.u.l.type = GET_ATOM(WM_PROTOCOLS); ++ event.u.clientMessage.u.l.longs0 = GET_ATOM(WM_DELETE_WINDOW); ++ event.u.clientMessage.u.l.longs1 = CurrentTime; ++ DeliverEvents(window, &event, 1, NullWindow); ++ } ++ else { ++ ErrorF("Root window closed, shutting down Xmir\n"); ++ GiveUp(0); ++ /*DeleteWindow(window, 1); ? */ ++ } ++} ++ ++static void ++xmir_unmap_input(struct xmir_screen *xmir_screen, WindowPtr window) ++{ ++ struct xmir_input *xmir_input; ++ ++ xorg_list_for_each_entry(xmir_input, &xmir_screen->input_list, link) { ++ if (xmir_input->focus_window && ++ xmir_input->focus_window->window == window) ++ xmir_input->focus_window = NULL; ++ } ++} ++ ++static void ++xmir_bequeath_surface(struct xmir_window *dying, struct xmir_window *benef) ++{ ++ struct xmir_screen *xmir_screen = benef->xmir_screen; ++ struct xmir_window *other; ++ ++ XMIR_DEBUG(("flatten bequeath: %p --> %p\n", ++ dying->window, benef->window)); ++ ++ assert(!benef->surface); ++ benef->surface = dying->surface; ++ dying->surface = NULL; ++ ++ ReparentWindow(benef->window, xmir_screen->screen->root, ++ 0, 0, serverClient); ++ compRedirectWindow(serverClient, benef->window, CompositeRedirectManual); ++ compRedirectSubwindows(serverClient, ++ benef->window, ++ CompositeRedirectAutomatic); ++ ++ xorg_list_for_each_entry(other, &xmir_screen->flattened_list, ++ link_flattened) { ++ ReparentWindow(other->window, benef->window, 0, 0, serverClient); ++ } ++ ++ mir_window_set_event_handler(benef->surface, xmir_surface_handle_event, ++ benef); ++ ++ xmir_window_enable_damage_tracking(benef); ++ ++ if (xmir_screen->glamor) ++ xmir_glamor_realize_window(xmir_screen, benef, benef->window); ++} ++ ++static void ++xmir_clear_to_black(MirWindow *surface) ++{ /* Admittedly, this will only work for software surfaces */ ++ MirBufferStream *stream = mir_window_get_buffer_stream(surface); ++ MirGraphicsRegion region; ++ ++ /* On error mir_buffer_stream_get_graphics_region leaves us uninitialized */ ++ region.pixel_format = mir_pixel_format_invalid; ++ mir_buffer_stream_get_graphics_region(stream, ®ion); ++ ++ switch (region.pixel_format) { ++ case mir_pixel_format_invalid: return; /* Probably hardware surface */ ++ case mir_pixel_format_abgr_8888: ++ case mir_pixel_format_xbgr_8888: ++ case mir_pixel_format_argb_8888: ++ case mir_pixel_format_xrgb_8888: { ++ int y; ++ uint32_t *dest = (uint32_t*)region.vaddr; ++ for (y = 0; y < region.height; ++y) { ++ int x; ++ for (x = 0; x < region.width; ++x) ++ dest[x] = 0xff000000; ++ dest = (uint32_t*)((char*)dest + region.stride); ++ } ++ break; ++ } ++ case mir_pixel_format_bgr_888: ++ case mir_pixel_format_rgb_888: { ++ int y; ++ char *dest = region.vaddr; ++ for (y = 0; y < region.height; ++y) { ++ memset(dest, 0, region.width*3); ++ dest += region.stride; ++ } ++ break; ++ } ++ case mir_pixel_format_rgb_565: ++ case mir_pixel_format_rgba_5551: ++ case mir_pixel_format_rgba_4444: { ++ uint16_t fill = 0; ++ int y; ++ uint16_t *dest = (uint16_t*)region.vaddr; ++ switch (region.pixel_format) { ++ case mir_pixel_format_rgb_565: fill = 0x0000; break; ++ case mir_pixel_format_rgba_5551: fill = 0x0001; break; ++ case mir_pixel_format_rgba_4444: fill = 0x000f; break; ++ default: fill = 0; ++ } ++ for (y = 0; y < region.height; ++y) { ++ int x; ++ for (x = 0; x < region.width; ++x) ++ dest[x] = fill; ++ dest = (uint16_t*)((char*)dest + region.stride); ++ } ++ break; ++ } ++ default: ++ return; ++ } ++ mir_buffer_stream_swap_buffers(stream, NULL, NULL); ++} ++ ++static void ++xmir_unmap_surface(struct xmir_screen *xmir_screen, ++ WindowPtr window, ++ BOOL destroyed) ++{ ++ struct xmir_window *xmir_window = ++ dixLookupPrivate(&window->devPrivates, &xmir_window_private_key); ++ ++ if (!xmir_window) ++ return; ++ ++ XMIR_DEBUG(("Unmap/unrealize window %p\n", window)); ++ ++ if (!destroyed) ++ xmir_window_disable_damage_tracking(xmir_window); ++ else ++ xmir_window->damage = NULL; ++ ++ xorg_list_del(&xmir_window->link_damage); ++ ++ if (xmir_screen->glamor) ++ xmir_glamor_unrealize_window(xmir_screen, xmir_window, window); ++ ++ xorg_list_del(&xmir_window->link_flattened); ++ ++ if (!xmir_window->surface) ++ return; ++ ++ mir_window_set_event_handler(xmir_window->surface, NULL, NULL); ++ ++ if (xmir_screen->flatten && xmir_screen->flatten_top == xmir_window) { ++ xmir_screen->flatten_top = NULL; ++ if (!xorg_list_is_empty(&xmir_screen->flattened_list)) { ++ xmir_screen->flatten_top = ++ xorg_list_first_entry(&xmir_screen->flattened_list, ++ struct xmir_window, ++ link_flattened); ++ xorg_list_del(&xmir_screen->flatten_top->link_flattened); ++ xmir_bequeath_surface(xmir_window, xmir_screen->flatten_top); ++ } ++ } ++ ++ if (xmir_window->surface) { ++ if (xmir_screen->neverclose) { ++ xmir_screen->neverclosed = xmir_window->surface; ++ xmir_clear_to_black(xmir_screen->neverclosed); ++ } ++ else { ++ mir_window_release_sync(xmir_window->surface); ++ } ++ ++ xmir_window->surface = NULL; ++ } ++ ++ xmir_process_from_eventloop_except(xmir_window); ++ ++ RegionUninit(&xmir_window->region); ++} ++ ++static Bool ++xmir_unrealize_window(WindowPtr window) ++{ ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ Bool ret; ++ ++ if (window == xmir_screen->last_focus) ++ xmir_screen->last_focus = NULL; ++ ++ xmir_unmap_input(xmir_screen, window); ++ ++ screen->UnrealizeWindow = xmir_screen->UnrealizeWindow; ++ ret = (*screen->UnrealizeWindow) (window); ++ xmir_screen->UnrealizeWindow = screen->UnrealizeWindow; ++ screen->UnrealizeWindow = xmir_unrealize_window; ++ ++ xmir_unmap_surface(xmir_screen, window, FALSE); ++ ++ return ret; ++} ++ ++static Bool ++xmir_destroy_window(WindowPtr window) ++{ ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ Bool ret; ++ ++ if (!window->parent) ++ xmir_screen->destroying_root = TRUE; ++ ++ xmir_unmap_input(xmir_screen, window); ++ xmir_unmap_surface(xmir_screen, window, TRUE); ++ ++ screen->DestroyWindow = xmir_screen->DestroyWindow; ++ ret = (*screen->DestroyWindow) (window); ++ xmir_screen->DestroyWindow = screen->DestroyWindow; ++ screen->DestroyWindow = xmir_destroy_window; ++ ++ return ret; ++} ++ ++static void ++xmir_resize_window(WindowPtr window, int x, int y, ++ unsigned int w, unsigned int h, WindowPtr sib) ++{ ++ ScreenPtr screen = window->drawable.pScreen; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_window *xmir_window = xmir_window_get(window); ++ ++ screen->ResizeWindow = xmir_screen->ResizeWindow; ++ (*screen->ResizeWindow) (window, x, y, w, h, sib); ++ xmir_screen->ResizeWindow = screen->ResizeWindow; ++ screen->ResizeWindow = xmir_resize_window; ++ ++ if (xmir_window->surface) { ++ /* This is correct in theory but most Mir shells don't do it yet */ ++ MirWindowSpec *changes = ++ mir_create_window_spec(xmir_screen->conn); ++ mir_window_spec_set_width(changes, w); ++ mir_window_spec_set_height(changes, h); ++ mir_window_apply_spec(xmir_window->surface, changes); ++ mir_window_spec_release(changes); ++ ++ XMIR_DEBUG(("X window %p resized to %ux%u %+d%+d with sibling %p\n", ++ window, w, h, x, y, sib)); ++ } ++ ++ xmir_window_update_region(xmir_window); ++} ++ ++static Bool ++xmir_close_screen(ScreenPtr screen) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_output *xmir_output, *next_xmir_output; ++ Bool ret; ++ ++ xmir_screen->closing = TRUE; ++ ++ if (xmir_screen->glamor && xmir_screen->gbm) ++ DRI2CloseScreen(screen); ++ ++ screen->CloseScreen = xmir_screen->CloseScreen; ++ ret = screen->CloseScreen(screen); ++ ++ xorg_list_for_each_entry_safe(xmir_output, next_xmir_output, ++ &xmir_screen->output_list, link) ++ xmir_output_destroy(xmir_output); ++ ++ if (xmir_screen->glamor) ++ xmir_glamor_fini(xmir_screen); ++ mir_display_config_release(xmir_screen->display); ++ mir_connection_release(xmir_screen->conn); ++ ++ xmir_fini_thread_to_eventloop(); ++ free(xmir_screen->driver_name); ++ free(xmir_screen); ++ ++ return ret; ++} ++ ++static Bool ++xmir_is_unblank(int mode) ++{ ++ switch (mode) { ++ case SCREEN_SAVER_OFF: ++ case SCREEN_SAVER_FORCER: ++ return TRUE; ++ case SCREEN_SAVER_ON: ++ case SCREEN_SAVER_CYCLE: ++ return FALSE; ++ default: ++ ErrorF("Unexpected save screen mode: %d\n", mode); ++ return TRUE; ++ } ++} ++ ++Bool ++DPMSSupported(void) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screenInfo.screens[0]); ++ return !xmir_screen->rootless && !xmir_screen->windowed; ++} ++ ++int ++DPMSSet(ClientPtr client, int level) ++{ ++ int rc = Success; ++ struct xmir_screen *xmir_screen = xmir_screen_get(screenInfo.screens[0]); ++ ++ DPMSPowerLevel = level; ++ ++ if (level != DPMSModeOn) { ++ if (xmir_is_unblank(screenIsSaved)) ++ rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, ScreenSaverActive); ++ } ++ else { ++ if (!xmir_is_unblank(screenIsSaved)) ++ rc = dixSaveScreens(client, SCREEN_SAVER_OFF, ScreenSaverReset); ++ } ++ ++ if (rc != Success) ++ return rc; ++ ++ xmir_output_dpms(xmir_screen, level); ++ ++ return Success; ++} ++ ++static Bool ++xmir_save_screen(ScreenPtr screen, int mode) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ ++ if (xmir_is_unblank(mode)) ++ return xmir_output_dpms(xmir_screen, DPMSModeOn); ++ else ++ return xmir_output_dpms(xmir_screen, DPMSModeOff); ++} ++ ++static void ++xmir_block_handler(ScreenPtr screen, void *ptv) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ struct xmir_window *xmir_window, *next; ++ ++ xorg_list_for_each_entry_safe(xmir_window, next, ++ &xmir_screen->damage_window_list, ++ link_damage) { ++ if (xmir_window->has_free_buffer) { ++ xmir_repaint(xmir_window); ++ } ++ } ++} ++ ++static Bool ++xmir_create_screen_resources(ScreenPtr screen) ++{ ++ struct xmir_screen *xmir_screen = xmir_screen_get(screen); ++ int ret; ++ ++ screen->CreateScreenResources = xmir_screen->CreateScreenResources; ++ ret = (*screen->CreateScreenResources) (screen); ++ xmir_screen->CreateScreenResources = screen->CreateScreenResources; ++ screen->CreateScreenResources = xmir_create_screen_resources; ++ ++ if (!ret) ++ return ret; ++ ++ if (!xmir_screen->rootless) ++ screen->devPrivate = screen->CreatePixmap(screen, ++ screen->width, ++ screen->height, ++ screen->rootDepth, ++ CREATE_PIXMAP_USAGE_BACKING_PIXMAP); ++ else ++ screen->devPrivate = fbCreatePixmap(screen, 0, 0, screen->rootDepth, 0); ++ ++ if (!screen->devPrivate) ++ return FALSE; ++ ++#ifdef GLAMOR_HAS_GBM ++ if (xmir_screen->glamor && !xmir_screen->rootless) { ++ glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate); ++ ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); ++ glClear(GL_COLOR_BUFFER_BIT); ++ glBindFramebuffer(GL_FRAMEBUFFER, 0); ++ ++ glamor_set_screen_pixmap(screen->devPrivate, NULL); ++ } ++#endif ++ ++ return TRUE; ++} ++ ++struct xmir_visit_set_pixmap_window { ++ PixmapPtr old, new; ++}; ++ ++static int ++xmir_visit_set_window_pixmap(WindowPtr window, void *data) ++{ ++ struct xmir_visit_set_pixmap_window *visit = data; ++ ++ if (fbGetWindowPixmap(window) == visit->old) { ++ window->drawable.pScreen->SetWindowPixmap(window, visit->new); ++ return WT_WALKCHILDREN; ++ } ++ ++ return WT_DONTWALKCHILDREN; ++} ++ ++static void ++xmir_set_screen_pixmap(PixmapPtr pixmap) ++{ ++ ScreenPtr screen = pixmap->drawable.pScreen; ++ PixmapPtr old_front = screen->devPrivate; ++ WindowPtr root; ++ ++ root = screen->root; ++ if (root) { ++ struct xmir_visit_set_pixmap_window visit = { old_front, pixmap }; ++ assert(fbGetWindowPixmap(root) == old_front); ++ TraverseTree(root, xmir_visit_set_window_pixmap, &visit); ++ assert(fbGetWindowPixmap(root) == pixmap); ++ } ++ ++ screen->devPrivate = pixmap; ++ ++ if (old_front) ++ screen->DestroyPixmap(old_front); ++} ++ ++void ++xmir_disable_screensaver(struct xmir_screen *xmir_screen) ++{ ++ ScreenSaverTime = 0; ++} ++ ++static Bool ++xmir_screen_init(ScreenPtr pScreen, int argc, char **argv) ++{ ++ struct xmir_screen *xmir_screen; ++ MirConnection *conn; ++ Pixel red_mask, blue_mask, green_mask; ++ int ret, bpc, i; ++ int client_fd = -1; ++ char *socket = NULL; ++ const char *appid = "XMIR"; ++ unsigned int formats, f; ++ MirPixelFormat format[1024]; ++ ++ if (!dixRegisterPrivateKey(&xmir_screen_private_key, PRIVATE_SCREEN, 0) || ++ !dixRegisterPrivateKey(&xmir_window_private_key, PRIVATE_WINDOW, 0) || ++ !dixRegisterPrivateKey(&xmir_pixmap_private_key, PRIVATE_PIXMAP, 0)) ++ return FALSE; ++ ++ memset(&known_atom, 0, sizeof known_atom); ++ ++ xmir_screen = calloc(sizeof *xmir_screen, 1); ++ if (!xmir_screen) ++ return FALSE; ++ ++ xmir_screen->conn = NULL; ++ ++ xmir_init_thread_to_eventloop(); ++ dixSetPrivate(&pScreen->devPrivates, &xmir_screen_private_key, xmir_screen); ++ xmir_screen->screen = pScreen; ++ xmir_screen->glamor = glamor_dri; ++ ++ for (i = 1; i < argc; i++) { ++ if (strcmp(argv[i], "-rootless") == 0) { ++ xmir_screen->rootless = 1; ++ xmir_disable_screensaver(xmir_screen); ++ } ++ else if (strcmp(argv[i], "-flatten") == 0) { ++ xmir_screen->flatten = TRUE; ++ } ++ else if (strcmp(argv[i], "-neverclose") == 0) { ++ xmir_screen->neverclose = TRUE; ++ } ++ else if (strcmp(argv[i], "-title") == 0) { ++ xmir_screen->title = argv[++i]; ++ } ++ else if (strcmp(argv[i], "-mir") == 0) { ++ appid = argv[++i]; ++ } ++ else if (strcmp(argv[i], "-mirSocket") == 0) { ++ socket = argv[++i]; ++ } ++ else if (strcmp(argv[i], "-sw") == 0) { ++ xmir_screen->glamor = glamor_off; ++ } ++ else if (strcmp(argv[i], "-egl") == 0) { ++ if (xmir_screen->glamor != glamor_egl_sync) ++ xmir_screen->glamor = glamor_egl; ++ } ++ else if (strcmp(argv[i], "-2x") == 0) { ++ xmir_screen->doubled = 1; ++ } ++ else if (strcmp(argv[i], "-debug") == 0) { ++ xmir_debug_logging = TRUE; ++ } ++ else if (strcmp(argv[i], "-damage") == 0) { ++ /* Ignored. Damage-all is now the default and only option. */ ++ } ++ else if (strcmp(argv[i], "-egl_sync") == 0) { ++ xmir_screen->glamor = glamor_egl_sync; ++ } ++ else if (strcmp(argv[i], "-fd") == 0) { ++ client_fd = (int)strtol(argv[++i], (char **)NULL, 0); ++ } ++ } ++ ++ if (xmir_screen->flatten && !xmir_screen->rootless) { ++ FatalError("-flatten is not valid without -rootless\n"); ++ return FALSE; ++ } ++ if (xmir_screen->neverclose && !xmir_screen->flatten) { ++ FatalError("-neverclose is not valid without -rootless -flatten\n"); ++ return FALSE; ++ } ++ ++ if (!xmir_screen->title) ++ xmir_screen->title = xmir_screen->rootless ? get_title_from_top_window ++ : "Xmir root window"; ++ ++#if defined(__arm__) || defined(__aarch64__) ++ if (xmir_screen->glamor == glamor_dri) { ++ XMIR_DEBUG(("ARM architecture: Defaulting to software mode because " ++ "glamor is not stable\n")); ++ /* Hide the ARM glamor bugs for now so we can have working phones */ ++ xmir_screen->glamor = glamor_off; ++ } ++#endif ++ ++ if (client_fd != -1) { ++ if (!AddClientOnOpenFD(client_fd)) { ++ FatalError("failed to connect to client fd %d\n", client_fd); ++ return FALSE; ++ } ++ } ++ ++ conn = mir_connect_sync(socket, appid); ++ if (!mir_connection_is_valid(conn)) { ++ FatalError("Failed to connect to Mir: %s\n", ++ mir_connection_get_error_message(conn)); ++ return FALSE; ++ } ++ xmir_screen->conn = conn; ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" ++ mir_connection_get_platform(xmir_screen->conn, &xmir_screen->platform); ++#pragma GCC diagnostic pop ++ ++ xorg_list_init(&xmir_screen->output_list); ++ xorg_list_init(&xmir_screen->input_list); ++ xorg_list_init(&xmir_screen->damage_window_list); ++ xorg_list_init(&xmir_screen->flattened_list); ++ xmir_screen->depth = 24; ++ ++ mir_connection_get_available_surface_formats(xmir_screen->conn, ++ format, sizeof(format)/sizeof(format[0]), &formats); ++ ++#if 0 /* Emulate the Mir Android graphics platform for LP: #1573470 */ ++ format[0] = mir_pixel_format_abgr_8888; ++ format[1] = mir_pixel_format_xbgr_8888; ++ formats = 2; ++#endif ++ ++ for (f = 0; f < formats; ++f) { ++ switch (format[f]) { ++ case mir_pixel_format_argb_8888: ++ case mir_pixel_format_abgr_8888: ++ xmir_screen->depth32_pixel_format = format[f]; ++ break; ++ case mir_pixel_format_xrgb_8888: ++ case mir_pixel_format_xbgr_8888: ++ case mir_pixel_format_bgr_888: ++ xmir_screen->depth24_pixel_format = format[f]; ++ break; ++ default: ++ /* Other/new pixel formats don't need mentioning. We only ++ care about Xorg-compatible formats */ ++ break; ++ } ++ } ++ ++ xmir_screen->display = mir_connection_create_display_configuration(conn); ++ if (xmir_screen->display == NULL) { ++ FatalError("could not create display config\n"); ++ return FALSE; ++ } ++ ++ /* ++ * Core DPI cannot report correct values (it's one value and we might have ++ * multiple displays). Use the value from the -dpi command line if set, or ++ * 96 otherwise. ++ * ++ * This matches the behaviour of all the desktop Xorg drivers. Clients ++ * which care can use the XRandR extension to get correct per-output DPI ++ * information. ++ */ ++ xmir_screen->dpi = monitorResolution > 0 ? monitorResolution : 96; ++ ++ if (!xmir_screen_init_output(xmir_screen)) ++ return FALSE; ++ ++ if (xmir_screen->glamor) ++ xmir_screen_init_glamor(xmir_screen); ++ ++ bpc = 8; ++ green_mask = 0x00ff00; ++ switch (xmir_screen->depth24_pixel_format) ++ { ++ case mir_pixel_format_xrgb_8888: ++ case mir_pixel_format_bgr_888: /* Little endian: Note the reversal */ ++ red_mask = 0xff0000; ++ blue_mask = 0x0000ff; ++ break; ++ case mir_pixel_format_xbgr_8888: ++ red_mask = 0x0000ff; ++ blue_mask = 0xff0000; ++ break; ++ default: ++ ErrorF("No Mir-compatible TrueColor formats\n"); ++ return FALSE; ++ } ++ ++ miSetVisualTypesAndMasks(xmir_screen->depth, ++ ((1 << TrueColor) | (1 << DirectColor)), ++ bpc, TrueColor, ++ red_mask, green_mask, blue_mask); ++ ++ miSetPixmapDepths(); ++ ++ ret = fbScreenInit(pScreen, NULL, ++ pScreen->width, pScreen->height, ++ xmir_screen->dpi, xmir_screen->dpi, 0, ++ BitsPerPixel(xmir_screen->depth)); ++ if (!ret) ++ return FALSE; ++ ++ fbPictureInit(pScreen, 0, 0); ++ ++ pScreen->blackPixel = 0; ++ pScreen->whitePixel = 1; ++ ++ ret = fbCreateDefColormap(pScreen); ++ ++ if (!xmir_screen_init_cursor(xmir_screen)) ++ return FALSE; ++ ++ pScreen->SaveScreen = xmir_save_screen; ++ pScreen->BlockHandler = xmir_block_handler; ++ pScreen->SetScreenPixmap = xmir_set_screen_pixmap; ++ ++ xmir_screen->CreateScreenResources = pScreen->CreateScreenResources; ++ pScreen->CreateScreenResources = xmir_create_screen_resources; ++ ++#ifdef GLAMOR_HAS_GBM ++ if (xmir_screen->glamor && !xmir_glamor_init(xmir_screen)) { ++ if (xmir_screen->glamor >= glamor_egl) ++ FatalError("EGL requested, but not available\n"); ++ xmir_screen->glamor = glamor_off; ++ } ++ ++ if (xmir_screen->glamor && xmir_screen->gbm && !xmir_dri2_screen_init(xmir_screen)) ++ ErrorF("Failed to initialize DRI2.\n"); ++#endif ++ ++ if (!xmir_screen->glamor && xmir_screen->doubled) ++ FatalError("-2x requires EGL support\n"); ++ ++ xmir_screen->CreateWindow = pScreen->CreateWindow; ++ pScreen->CreateWindow = xmir_create_window; ++ ++ xmir_screen->RealizeWindow = pScreen->RealizeWindow; ++ pScreen->RealizeWindow = xmir_realize_window; ++ ++ xmir_screen->DestroyWindow = pScreen->DestroyWindow; ++ pScreen->DestroyWindow = xmir_destroy_window; ++ ++ xmir_screen->ResizeWindow = pScreen->ResizeWindow; ++ pScreen->ResizeWindow = xmir_resize_window; ++ ++ xmir_screen->UnrealizeWindow = pScreen->UnrealizeWindow; ++ pScreen->UnrealizeWindow = xmir_unrealize_window; ++ ++ xmir_screen->CloseScreen = pScreen->CloseScreen; ++ pScreen->CloseScreen = xmir_close_screen; ++ ++ { ++ int v; ++ XMIR_DEBUG(("XMir initialized with %hd visuals:\n", ++ pScreen->numVisuals)); ++ for (v = 0; v < pScreen->numVisuals; ++v) { ++ VisualPtr visual = pScreen->visuals + v; ++ XMIR_DEBUG(("\tVisual id 0x%x: %lx %lx %lx, %hd planes\n", ++ (int)visual->vid, ++ (long)visual->redMask, ++ (long)visual->greenMask, ++ (long)visual->blueMask, ++ visual->nplanes)); ++ } ++ } ++ ++ return ret; ++} ++ ++static const ExtensionModule xmir_extensions[] = { ++#ifdef DRI2 ++ { DRI2ExtensionInit, "DRI2", &noDRI2Extension }, ++#endif ++#ifdef GLXEXT ++ { GlxExtensionInit, "GLX", &noGlxExtension }, ++#endif ++}; ++ ++void ++InitOutput(ScreenInfo *screen_info, int argc, char **argv) ++{ ++ int depths[] = { 1, 4, 8, 15, 16, 24, 32 }; ++ int bpp[] = { 1, 8, 8, 16, 16, 32, 32 }; ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(depths); i++) { ++ screen_info->formats[i].depth = depths[i]; ++ screen_info->formats[i].bitsPerPixel = bpp[i]; ++ screen_info->formats[i].scanlinePad = BITMAP_SCANLINE_PAD; ++ } ++ ++ screen_info->imageByteOrder = IMAGE_BYTE_ORDER; ++ screen_info->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT; ++ screen_info->bitmapScanlinePad = BITMAP_SCANLINE_PAD; ++ screen_info->bitmapBitOrder = BITMAP_BIT_ORDER; ++ screen_info->numPixmapFormats = ARRAY_SIZE(depths); ++ ++ if (serverGeneration == 1) { ++#ifdef GLXEXT ++ GlxPushProvider(&__glXDRI2Provider); ++#endif ++ LoadExtensionList(xmir_extensions, ++ ARRAY_SIZE(xmir_extensions), TRUE); ++ } ++ ++ if (AddScreen(xmir_screen_init, argc, argv) == -1) { ++ FatalError("Couldn't add screen\n"); ++ } ++} +--- /dev/null ++++ b/hw/xmir/xmir.h +@@ -0,0 +1,234 @@ ++/* ++ * Copyright © 2015-2017 Canonical 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 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. ++ */ ++ ++#ifndef XMIR_H ++#define XMIR_H ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++ ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define MESA_EGL_NO_X11_HEADERS ++#include ++#include ++ ++struct xmir_window; ++struct xmir_output; ++ ++struct xmir_screen { ++ ScreenPtr screen; ++ ++ int depth, rootless, doubled; ++ enum {glamor_off=0, glamor_dri, glamor_egl, glamor_egl_sync} glamor; ++ ++ CreateScreenResourcesProcPtr CreateScreenResources; ++ CloseScreenProcPtr CloseScreen; ++ CreateWindowProcPtr CreateWindow; ++ DestroyWindowProcPtr DestroyWindow; ++ RealizeWindowProcPtr RealizeWindow; ++ UnrealizeWindowProcPtr UnrealizeWindow; ++ ResizeWindowProcPtr ResizeWindow; ++ ++ struct xorg_list output_list; ++ struct xorg_list input_list; ++ struct xorg_list damage_window_list; ++ ++ MirConnection *conn; ++ MirDisplayConfig *display; ++ MirPlatformPackage platform; ++ ++ /* Bookkeeping for eglSwapBuffers */ ++ pthread_mutex_t mutex; ++ pthread_cond_t cond; ++ pthread_t thread; ++ int alive; ++ struct xorg_list swap_list; ++ void *swap_surface; ++ ++ char *device_name, *driver_name; ++ int drm_fd; ++ void *egl_display, *egl_context, *swap_context; ++ struct gbm_device *gbm; ++ struct glamor_context *glamor_ctx; ++ void *egl_surface; ++ ++ MirPixelFormat depth24_pixel_format, depth32_pixel_format; ++ Bool flatten; ++ Bool neverclose; ++ Bool destroying_root; ++ Bool closing; ++ const char *title; ++ MirWindow *neverclosed; ++ struct xorg_list flattened_list; ++ struct xmir_window *flatten_top; ++ WindowPtr last_focus; ++ Window saved_focus; ++ ++ int dpi; ++ ++ DRI2InfoRec dri2; ++ ++ struct xmir_output *windowed; ++ Bool glamor_has_GL_EXT_framebuffer_blit; ++}; ++ ++struct xmir_pixmap { ++ unsigned int fake_back; ++ struct gbm_bo *bo; ++ void *image; ++}; ++ ++struct xmir_window { ++ struct xmir_screen *xmir_screen; ++ MirWindow *surface; ++ WindowPtr window; ++ DamagePtr damage; ++ RegionRec region; ++ ++ int surface_width, surface_height; ++ int buf_width, buf_height; ++ ++ struct xorg_list link_damage; ++ int orientation; ++ unsigned int has_free_buffer:1; ++ ++ struct xorg_list link_flattened; ++ ++ void *egl_surface, *image; ++ PixmapPtr back_pixmap, front_pixmap, reuse_pixmap; ++ ++ struct xmir_flip { ++ ClientPtr client; ++ int type; ++ DrawablePtr draw; ++ DRI2SwapEventPtr func; ++ void *data; ++ struct xorg_list entry; ++ } flip; ++ ++ char wm_name[256]; ++}; ++ ++struct xmir_input { ++ DeviceIntPtr pointer; ++ DeviceIntPtr keyboard; ++ DeviceIntPtr touch; ++ struct xmir_screen *xmir_screen; ++ struct xmir_window *focus_window; ++ uint32_t id; ++ int touch_id; ++ struct xorg_list link; ++}; ++ ++struct xmir_output { ++ struct xorg_list link; ++ struct xmir_screen *xmir_screen; ++ RROutputPtr randr_output; ++ RRCrtcPtr randr_crtc; ++ int32_t x, y, width, height; ++}; ++ ++extern Bool xmir_debug_logging; ++#define XMIR_DEBUG(_args) {if (xmir_debug_logging) ErrorF _args;} ++ ++struct xmir_window *xmir_window_get(WindowPtr window); ++struct xmir_screen *xmir_screen_get(ScreenPtr screen); ++struct xmir_pixmap *xmir_pixmap_get(PixmapPtr pixmap); ++void xmir_pixmap_set(PixmapPtr pixmap, struct xmir_pixmap *xmir_pixmap); ++ ++void xmir_handle_surface_event(struct xmir_window *, MirWindowAttrib, int); ++void xmir_handle_buffer_available(struct xmir_screen *xmir_screen, ++ struct xmir_window *xmir_win, ++ void *unused); ++void xmir_close_surface(struct xmir_window *); ++ ++void xmir_repaint(struct xmir_window *); ++ ++void xmir_disable_screensaver(struct xmir_screen *xmir_screen); ++ ++/* xmir-input.c */ ++Bool xmir_screen_init_cursor(struct xmir_screen *xmir_screen); ++ ++/* xmir-output.c */ ++Bool xmir_screen_init_output(struct xmir_screen *xmir_screen); ++void xmir_output_destroy(struct xmir_output *xmir_output); ++Bool xmir_output_dpms(struct xmir_screen *xmir_screen, int dpms); ++void xmir_output_handle_resize(struct xmir_window *, int, int); ++void xmir_output_handle_orientation(struct xmir_window *, MirOrientation); ++ ++/* xmir-cvt.c */ ++RRModePtr xmir_cvt(int HDisplay, int VDisplay, float VRefresh, Bool Reduced, Bool Interlaced); ++ ++/* xmir-dri2.c */ ++Bool xmir_dri2_screen_init(struct xmir_screen *xmir_screen); ++ ++/* xmir-glamor.c */ ++Bool xmir_glamor_init(struct xmir_screen *xmir_screen); ++Bool xmir_screen_init_glamor(struct xmir_screen *xmir_screen); ++void xmir_glamor_fini(struct xmir_screen *xmir_screen); ++ ++PixmapPtr xmir_glamor_win_get_back(struct xmir_screen *, struct xmir_window *, DrawablePtr); ++void xmir_glamor_copy(struct xmir_screen *, struct xmir_window *, RegionPtr); ++void xmir_glamor_realize_window(struct xmir_screen *, struct xmir_window *, WindowPtr); ++void xmir_glamor_unrealize_window(struct xmir_screen *, struct xmir_window *, WindowPtr); ++ ++struct glamor_pixmap_private; ++void xmir_glamor_copy_egl_common(DrawablePtr, PixmapPtr src, struct glamor_pixmap_private *, ++ BoxPtr, int width, int height, int dx, int dy, int orientation); ++ ++/* xmir-thread-proxy.c */ ++void xmir_init_thread_to_eventloop(void); ++void xmir_fini_thread_to_eventloop(void); ++ ++typedef void (xmir_event_callback)(struct xmir_screen*, struct xmir_window*, ++ void *arg); ++void xmir_post_to_eventloop(xmir_event_callback *cb, ++ struct xmir_screen*, struct xmir_window*, void*); ++void xmir_process_from_eventloop(void); ++void xmir_process_from_eventloop_except(const struct xmir_window*); ++ ++/* xmir-input.c */ ++void xmir_surface_handle_event(MirWindow *surface, MirEvent const* ev, void *context); ++ ++#define XMIR_CREATE_PIXMAP_USAGE_FLIP 0x10000000 ++ ++#define XORG_VERSION_NUMERIC(major,minor,patch,snap,dummy) \ ++ (((major) * 10000000) + ((minor) * 100000) + ((patch) * 1000) + snap) ++ ++#endif --- xorg-server-1.19.6.orig/debian/patches/xwayland-tablet.diff +++ xorg-server-1.19.6/debian/patches/xwayland-tablet.diff @@ -0,0 +1,1568 @@ + +7c7a540f1e1d6b5 xwayland: Implement tablet_tool_wheel for scrolling +fbc9814975fe82b xwayland: Correct off-by-one error in tablet button numbering +a06bb73053d9df5 xwayland: Unconditionally initialize lists in init_tablet_manager_seat() +8475e6360ce3155 xwayland: add tablet pad support +f471b5b8eb451b4 xwayland: update cursor on tablet tools in proximity +6d1ad39fe6c1822 xwayland: Refactor cursor management into xwl_cursor +773b04748d0c839 xwayland: handle button events after motion events +8a1defcc634dadd xwayland: Handle tablet_tool events +5812d1c28f4fb7b xwayland: Handle wp_tablet events +47c4415912b5b16 xwayland: Listen for wp_tablet_seat events +7d48b758a601ce0 xwayland: Bind to wp_tablet_manager if available and get its seats +89c841915ac4fba xwayland: Depend on wayland-protocols to build tablet protocol headers + + +--- a/configure.ac ++++ b/configure.ac +@@ -2526,7 +2526,7 @@ AM_CONDITIONAL(XFAKESERVER, [test "x$KDR + + dnl Xwayland DDX + +-XWAYLANDMODULES="wayland-client >= 1.3.0 wayland-protocols >= 1.1 $LIBDRM epoxy" ++XWAYLANDMODULES="wayland-client >= 1.3.0 wayland-protocols >= 1.5 $LIBDRM epoxy" + if test "x$XF86VIDMODE" = xyes; then + XWAYLANDMODULES="$XWAYLANDMODULES $VIDMODEPROTO" + fi +--- a/hw/xwayland/Makefile.am ++++ b/hw/xwayland/Makefile.am +@@ -56,7 +56,9 @@ Xwayland_built_sources += \ + relative-pointer-unstable-v1-client-protocol.h \ + relative-pointer-unstable-v1-protocol.c \ + pointer-constraints-unstable-v1-client-protocol.h \ +- pointer-constraints-unstable-v1-protocol.c ++ pointer-constraints-unstable-v1-protocol.c \ ++ tablet-unstable-v2-client-protocol.h \ ++ tablet-unstable-v2-protocol.c + + nodist_Xwayland_SOURCES = $(Xwayland_built_sources) + CLEANFILES = $(Xwayland_built_sources) +@@ -79,6 +81,11 @@ pointer-constraints-unstable-v1-protocol + pointer-constraints-unstable-v1-client-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml + $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@ + ++tablet-unstable-v2-protocol.c: $(WAYLAND_PROTOCOLS_DATADIR)/unstable/tablet/tablet-unstable-v2.xml ++ $(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@ ++tablet-unstable-v2-client-protocol.h: $(WAYLAND_PROTOCOLS_DATADIR)/unstable/tablet/tablet-unstable-v2.xml ++ $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@ ++ + %-protocol.c : %.xml + $(AM_V_GEN)$(WAYLAND_SCANNER) code < $< > $@ + +--- a/hw/xwayland/xwayland-cursor.c ++++ b/hw/xwayland/xwayland-cursor.c +@@ -96,11 +96,11 @@ xwl_unrealize_cursor(DeviceIntPtr device + } + + static void +-clear_cursor_frame_callback(struct xwl_seat *xwl_seat) ++clear_cursor_frame_callback(struct xwl_cursor *xwl_cursor) + { +- if (xwl_seat->cursor_frame_cb) { +- wl_callback_destroy (xwl_seat->cursor_frame_cb); +- xwl_seat->cursor_frame_cb = NULL; ++ if (xwl_cursor->frame_cb) { ++ wl_callback_destroy (xwl_cursor->frame_cb); ++ xwl_cursor->frame_cb = NULL; + } + } + +@@ -109,12 +109,12 @@ frame_callback(void *data, + struct wl_callback *callback, + uint32_t time) + { +- struct xwl_seat *xwl_seat = data; ++ struct xwl_cursor *xwl_cursor = data; + +- clear_cursor_frame_callback(xwl_seat); +- if (xwl_seat->cursor_needs_update) { +- xwl_seat->cursor_needs_update = FALSE; +- xwl_seat_set_cursor(xwl_seat); ++ clear_cursor_frame_callback(xwl_cursor); ++ if (xwl_cursor->needs_update) { ++ xwl_cursor->needs_update = FALSE; ++ xwl_cursor->update_proc(xwl_cursor); + } + } + +@@ -125,6 +125,7 @@ static const struct wl_callback_listener + void + xwl_seat_set_cursor(struct xwl_seat *xwl_seat) + { ++ struct xwl_cursor *xwl_cursor = &xwl_seat->cursor; + PixmapPtr pixmap; + CursorPtr cursor; + int stride; +@@ -135,13 +136,13 @@ xwl_seat_set_cursor(struct xwl_seat *xwl + if (!xwl_seat->x_cursor) { + wl_pointer_set_cursor(xwl_seat->wl_pointer, + xwl_seat->pointer_enter_serial, NULL, 0, 0); +- clear_cursor_frame_callback(xwl_seat); +- xwl_seat->cursor_needs_update = FALSE; ++ clear_cursor_frame_callback(xwl_cursor); ++ xwl_cursor->needs_update = FALSE; + return; + } + +- if (xwl_seat->cursor_frame_cb) { +- xwl_seat->cursor_needs_update = TRUE; ++ if (xwl_cursor->frame_cb) { ++ xwl_cursor->needs_update = TRUE; + return; + } + +@@ -159,19 +160,69 @@ xwl_seat_set_cursor(struct xwl_seat *xwl + + wl_pointer_set_cursor(xwl_seat->wl_pointer, + xwl_seat->pointer_enter_serial, +- xwl_seat->cursor, ++ xwl_cursor->surface, + xwl_seat->x_cursor->bits->xhot, + xwl_seat->x_cursor->bits->yhot); +- wl_surface_attach(xwl_seat->cursor, ++ wl_surface_attach(xwl_cursor->surface, + xwl_shm_pixmap_get_wl_buffer(pixmap), 0, 0); +- wl_surface_damage(xwl_seat->cursor, 0, 0, ++ wl_surface_damage(xwl_cursor->surface, 0, 0, + xwl_seat->x_cursor->bits->width, + xwl_seat->x_cursor->bits->height); + +- xwl_seat->cursor_frame_cb = wl_surface_frame(xwl_seat->cursor); +- wl_callback_add_listener(xwl_seat->cursor_frame_cb, &frame_listener, xwl_seat); ++ xwl_cursor->frame_cb = wl_surface_frame(xwl_cursor->surface); ++ wl_callback_add_listener(xwl_cursor->frame_cb, &frame_listener, xwl_cursor); + +- wl_surface_commit(xwl_seat->cursor); ++ wl_surface_commit(xwl_cursor->surface); ++} ++ ++void ++xwl_tablet_tool_set_cursor(struct xwl_tablet_tool *xwl_tablet_tool) ++{ ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ struct xwl_cursor *xwl_cursor = &xwl_tablet_tool->cursor; ++ PixmapPtr pixmap; ++ CursorPtr cursor; ++ int stride; ++ ++ if (!xwl_seat->x_cursor) { ++ zwp_tablet_tool_v2_set_cursor(xwl_tablet_tool->tool, ++ xwl_tablet_tool->proximity_in_serial, ++ NULL, 0, 0); ++ return; ++ } ++ ++ if (xwl_cursor->frame_cb) { ++ xwl_cursor->needs_update = TRUE; ++ return; ++ } ++ ++ cursor = xwl_seat->x_cursor; ++ pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key); ++ if (!pixmap) ++ return; ++ ++ stride = cursor->bits->width * 4; ++ if (cursor->bits->argb) ++ memcpy(pixmap->devPrivate.ptr, ++ cursor->bits->argb, cursor->bits->height * stride); ++ else ++ expand_source_and_mask(cursor, pixmap->devPrivate.ptr); ++ ++ zwp_tablet_tool_v2_set_cursor(xwl_tablet_tool->tool, ++ xwl_tablet_tool->proximity_in_serial, ++ xwl_cursor->surface, ++ xwl_seat->x_cursor->bits->xhot, ++ xwl_seat->x_cursor->bits->yhot); ++ wl_surface_attach(xwl_cursor->surface, ++ xwl_shm_pixmap_get_wl_buffer(pixmap), 0, 0); ++ wl_surface_damage(xwl_cursor->surface, 0, 0, ++ xwl_seat->x_cursor->bits->width, ++ xwl_seat->x_cursor->bits->height); ++ ++ xwl_cursor->frame_cb = wl_surface_frame(xwl_cursor->surface); ++ wl_callback_add_listener(xwl_cursor->frame_cb, &frame_listener, xwl_cursor); ++ ++ wl_surface_commit(xwl_cursor->surface); + } + + static void +@@ -179,6 +230,7 @@ xwl_set_cursor(DeviceIntPtr device, + ScreenPtr screen, CursorPtr cursor, int x, int y) + { + struct xwl_seat *xwl_seat; ++ struct xwl_tablet_tool *xwl_tablet_tool; + Bool cursor_visibility_changed; + + xwl_seat = device->public.devicePrivate; +@@ -193,6 +245,11 @@ xwl_set_cursor(DeviceIntPtr device, + xwl_seat_cursor_visibility_changed(xwl_seat); + + xwl_seat_set_cursor(xwl_seat); ++ ++ xorg_list_for_each_entry(xwl_tablet_tool, &xwl_seat->tablet_tools, link) { ++ if (xwl_tablet_tool->proximity_in_serial != 0) ++ xwl_tablet_tool_set_cursor(xwl_tablet_tool); ++ } + } + + static void +--- a/hw/xwayland/xwayland-input.c ++++ b/hw/xwayland/xwayland-input.c +@@ -34,6 +34,8 @@ + #include + #include + #include ++#include ++#include "tablet-unstable-v2-client-protocol.h" + + /* Copied from mipointer.c */ + #define MIPOINTER(dev) \ +@@ -62,6 +64,12 @@ static void + xwl_seat_destroy_confined_pointer(struct xwl_seat *xwl_seat); + + static void ++init_tablet_manager_seat(struct xwl_screen *xwl_screen, ++ struct xwl_seat *xwl_seat); ++static void ++release_tablet_manager_seat(struct xwl_seat *xwl_seat); ++ ++static void + xwl_pointer_control(DeviceIntPtr device, PtrCtrl *ctrl) + { + /* Nothing to do, dix handles all settings */ +@@ -287,6 +295,75 @@ xwl_touch_proc(DeviceIntPtr device, int + #undef NTOUCHPOINTS + } + ++static int ++xwl_tablet_proc(DeviceIntPtr device, int what) ++{ ++#define NBUTTONS 9 ++#define NAXES 6 ++ Atom btn_labels[NBUTTONS] = { 0 }; ++ Atom axes_labels[NAXES] = { 0 }; ++ BYTE map[NBUTTONS + 1] = { 0 }; ++ int i; ++ ++ switch (what) { ++ case DEVICE_INIT: ++ device->public.on = FALSE; ++ ++ for (i = 1; i <= NBUTTONS; i++) ++ map[i] = i; ++ ++ axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X); ++ axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y); ++ axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_PRESSURE); ++ axes_labels[3] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_X); ++ axes_labels[4] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_TILT_Y); ++ axes_labels[5] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL); ++ ++ if (!InitValuatorClassDeviceStruct(device, NAXES, axes_labels, ++ GetMotionHistorySize(), Absolute)) ++ return BadValue; ++ ++ /* Valuators - match the xf86-input-wacom ranges */ ++ InitValuatorAxisStruct(device, 0, axes_labels[0], ++ 0, 262143, 10000, 0, 10000, Absolute); ++ InitValuatorAxisStruct(device, 1, axes_labels[1], ++ 0, 262143, 10000, 0, 10000, Absolute); ++ /* pressure */ ++ InitValuatorAxisStruct(device, 2, axes_labels[2], ++ 0, 65535, 1, 0, 1, Absolute); ++ /* tilt x */ ++ InitValuatorAxisStruct(device, 3, axes_labels[3], ++ -64, 63, 57, 0, 57, Absolute); ++ /* tilt y */ ++ InitValuatorAxisStruct(device, 4, axes_labels[4], ++ -64, 63, 57, 0, 57, Absolute); ++ /* abs wheel (airbrush) or rotation (artpen) */ ++ InitValuatorAxisStruct(device, 5, axes_labels[5], ++ -900, 899, 1, 0, 1, Absolute); ++ ++ if (!InitPtrFeedbackClassDeviceStruct(device, xwl_pointer_control)) ++ return BadValue; ++ ++ if (!InitButtonClassDeviceStruct(device, NBUTTONS, btn_labels, map)) ++ return BadValue; ++ ++ return Success; ++ ++ case DEVICE_ON: ++ device->public.on = TRUE; ++ return Success; ++ ++ case DEVICE_OFF: ++ case DEVICE_CLOSE: ++ device->public.on = FALSE; ++ return Success; ++ } ++ ++ return BadMatch; ++#undef NAXES ++#undef NBUTTONS ++} ++ + static void + pointer_handle_enter(void *data, struct wl_pointer *pointer, + uint32_t serial, struct wl_surface *surface, +@@ -347,9 +424,9 @@ pointer_handle_enter(void *data, struct + * of our surfaces might not have been shown. In that case we'll + * have a cursor surface frame callback pending which we need to + * clear so that we can continue submitting new cursor frames. */ +- if (xwl_seat->cursor_frame_cb) { +- wl_callback_destroy(xwl_seat->cursor_frame_cb); +- xwl_seat->cursor_frame_cb = NULL; ++ if (xwl_seat->cursor.frame_cb) { ++ wl_callback_destroy(xwl_seat->cursor.frame_cb); ++ xwl_seat->cursor.frame_cb = NULL; + xwl_seat_set_cursor(xwl_seat); + } + +@@ -1126,6 +1203,31 @@ static const struct wl_seat_listener sea + }; + + static void ++xwl_cursor_init(struct xwl_cursor *xwl_cursor, struct xwl_screen *xwl_screen, ++ void (* update_proc)(struct xwl_cursor *)) ++{ ++ xwl_cursor->surface = wl_compositor_create_surface(xwl_screen->compositor); ++ xwl_cursor->update_proc = update_proc; ++ xwl_cursor->frame_cb = NULL; ++ xwl_cursor->needs_update = FALSE; ++} ++ ++static void ++xwl_cursor_release(struct xwl_cursor *xwl_cursor) ++{ ++ wl_surface_destroy(xwl_cursor->surface); ++ if (xwl_cursor->frame_cb) ++ wl_callback_destroy(xwl_cursor->frame_cb); ++} ++ ++static void ++xwl_seat_update_cursor(struct xwl_cursor *xwl_cursor) ++{ ++ struct xwl_seat *xwl_seat = wl_container_of(xwl_cursor, xwl_seat, cursor); ++ xwl_seat_set_cursor(xwl_seat); ++} ++ ++static void + create_input_device(struct xwl_screen *xwl_screen, uint32_t id, uint32_t version) + { + struct xwl_seat *xwl_seat; +@@ -1144,8 +1246,12 @@ create_input_device(struct xwl_screen *x + &wl_seat_interface, min(version, 5)); + xwl_seat->id = id; + +- xwl_seat->cursor = wl_compositor_create_surface(xwl_screen->compositor); ++ xwl_cursor_init(&xwl_seat->cursor, xwl_seat->xwl_screen, ++ xwl_seat_update_cursor); + wl_seat_add_listener(xwl_seat->seat, &seat_listener, xwl_seat); ++ ++ init_tablet_manager_seat(xwl_screen, xwl_seat); ++ + wl_array_init(&xwl_seat->keys); + + xorg_list_init(&xwl_seat->touches); +@@ -1169,15 +1275,1028 @@ xwl_seat_destroy(struct xwl_seat *xwl_se + free (p); + } + ++ release_tablet_manager_seat(xwl_seat); ++ + wl_seat_destroy(xwl_seat->seat); +- wl_surface_destroy(xwl_seat->cursor); +- if (xwl_seat->cursor_frame_cb) +- wl_callback_destroy(xwl_seat->cursor_frame_cb); ++ xwl_cursor_release(&xwl_seat->cursor); + wl_array_release(&xwl_seat->keys); + free(xwl_seat); + } + + static void ++tablet_handle_name(void *data, struct zwp_tablet_v2 *tablet, const char *name) ++{ ++} ++ ++static void ++tablet_handle_id(void *data, struct zwp_tablet_v2 *tablet, uint32_t vid, ++ uint32_t pid) ++{ ++} ++ ++static void ++tablet_handle_path(void *data, struct zwp_tablet_v2 *tablet, const char *path) ++{ ++} ++ ++static void ++tablet_handle_done(void *data, struct zwp_tablet_v2 *tablet) ++{ ++ struct xwl_tablet *xwl_tablet = data; ++ struct xwl_seat *xwl_seat = xwl_tablet->seat; ++ ++ if (xwl_seat->stylus == NULL) { ++ xwl_seat->stylus = add_device(xwl_seat, "xwayland-stylus", xwl_tablet_proc); ++ ActivateDevice(xwl_seat->stylus, TRUE); ++ } ++ EnableDevice(xwl_seat->stylus, TRUE); ++ ++ if (xwl_seat->eraser == NULL) { ++ xwl_seat->eraser = add_device(xwl_seat, "xwayland-eraser", xwl_tablet_proc); ++ ActivateDevice(xwl_seat->eraser, TRUE); ++ } ++ EnableDevice(xwl_seat->eraser, TRUE); ++ ++ if (xwl_seat->puck == NULL) { ++ xwl_seat->puck = add_device(xwl_seat, "xwayland-cursor", xwl_tablet_proc); ++ ActivateDevice(xwl_seat->puck, TRUE); ++ } ++ EnableDevice(xwl_seat->puck, TRUE); ++} ++ ++static void ++tablet_handle_removed(void *data, struct zwp_tablet_v2 *tablet) ++{ ++ struct xwl_tablet *xwl_tablet = data; ++ struct xwl_seat *xwl_seat = xwl_tablet->seat; ++ ++ xorg_list_del(&xwl_tablet->link); ++ ++ /* The tablet is merely disabled, not removed. The next tablet ++ will re-use the same X devices */ ++ if (xorg_list_is_empty(&xwl_seat->tablets)) { ++ if (xwl_seat->stylus) ++ DisableDevice(xwl_seat->stylus, TRUE); ++ if (xwl_seat->eraser) ++ DisableDevice(xwl_seat->eraser, TRUE); ++ if (xwl_seat->puck) ++ DisableDevice(xwl_seat->puck, TRUE); ++ /* pads are removed separately */ ++ } ++ ++ zwp_tablet_v2_destroy(tablet); ++ free(xwl_tablet); ++} ++ ++static const struct zwp_tablet_v2_listener tablet_listener = { ++ tablet_handle_name, ++ tablet_handle_id, ++ tablet_handle_path, ++ tablet_handle_done, ++ tablet_handle_removed ++}; ++ ++static void ++tablet_tool_receive_type(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t type) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ switch (type) { ++ case ZWP_TABLET_TOOL_V2_TYPE_ERASER: ++ xwl_tablet_tool->xdevice = xwl_seat->eraser; ++ break; ++ case ZWP_TABLET_TOOL_V2_TYPE_MOUSE: ++ case ZWP_TABLET_TOOL_V2_TYPE_LENS: ++ xwl_tablet_tool->xdevice = xwl_seat->puck; ++ break; ++ default: ++ xwl_tablet_tool->xdevice = xwl_seat->stylus; ++ break; ++ } ++} ++ ++static void ++tablet_tool_receive_hardware_serial(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t hi, uint32_t low) ++{ ++} ++ ++static void ++tablet_tool_receive_hardware_id_wacom(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t hi, uint32_t low) ++{ ++} ++ ++static void ++tablet_tool_receive_capability(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t capability) ++{ ++} ++ ++static void ++tablet_tool_receive_done(void *data, struct zwp_tablet_tool_v2 *tool) ++{ ++} ++ ++static void ++tablet_tool_receive_removed(void *data, struct zwp_tablet_tool_v2 *tool) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ ++ xorg_list_del(&xwl_tablet_tool->link); ++ xwl_cursor_release(&xwl_tablet_tool->cursor); ++ zwp_tablet_tool_v2_destroy(tool); ++ free(xwl_tablet_tool); ++} ++ ++static void ++tablet_tool_proximity_in(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t serial, struct zwp_tablet_v2 *tablet, ++ struct wl_surface *wl_surface) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ /* There's a race here where if we create and then immediately ++ * destroy a surface, we might end up in a state where the Wayland ++ * compositor sends us an event for a surface that doesn't exist. ++ * ++ * Don't process enter events in this case. ++ * ++ * see pointer_handle_enter() ++ */ ++ if (wl_surface == NULL) ++ return; ++ ++ xwl_tablet_tool->proximity_in_serial = serial; ++ xwl_seat->focus_window = wl_surface_get_user_data(wl_surface); ++ ++ xwl_tablet_tool_set_cursor(xwl_tablet_tool); ++} ++ ++static void ++tablet_tool_proximity_out(void *data, struct zwp_tablet_tool_v2 *tool) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ xwl_tablet_tool->proximity_in_serial = 0; ++ xwl_seat->focus_window = NULL; ++ ++ xwl_tablet_tool->pressure = 0; ++ xwl_tablet_tool->tilt_x = 0; ++ xwl_tablet_tool->tilt_y = 0; ++ xwl_tablet_tool->rotation = 0; ++ xwl_tablet_tool->slider = 0; ++} ++ ++static void ++tablet_tool_down(void *data, struct zwp_tablet_tool_v2 *tool, uint32_t serial) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ValuatorMask mask; ++ ++ xwl_seat->xwl_screen->serial = serial; ++ ++ valuator_mask_zero(&mask); ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ButtonPress, 1, 0, &mask); ++} ++ ++static void ++tablet_tool_up(void *data, struct zwp_tablet_tool_v2 *tool) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ ValuatorMask mask; ++ ++ valuator_mask_zero(&mask); ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ButtonRelease, 1, 0, &mask); ++} ++ ++static void ++tablet_tool_motion(void *data, struct zwp_tablet_tool_v2 *tool, ++ wl_fixed_t x, wl_fixed_t y) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ int32_t dx, dy; ++ int sx = wl_fixed_to_int(x); ++ int sy = wl_fixed_to_int(y); ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ dx = xwl_seat->focus_window->window->drawable.x; ++ dy = xwl_seat->focus_window->window->drawable.y; ++ ++ xwl_tablet_tool->x = dx + sx; ++ xwl_tablet_tool->y = dy + sy; ++} ++ ++static void ++tablet_tool_pressure(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t pressure) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ /* normalized to 65535 already */ ++ xwl_tablet_tool->pressure = pressure; ++} ++ ++static void ++tablet_tool_distance(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t distance_raw) ++{ ++} ++ ++static void ++tablet_tool_tilt(void *data, struct zwp_tablet_tool_v2 *tool, ++ wl_fixed_t tilt_x, wl_fixed_t tilt_y) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ xwl_tablet_tool->tilt_x = wl_fixed_to_double(tilt_x); ++ xwl_tablet_tool->tilt_y = wl_fixed_to_double(tilt_y); ++} ++ ++static void ++tablet_tool_rotation(void *data, struct zwp_tablet_tool_v2 *tool, ++ wl_fixed_t angle) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ double rotation = wl_fixed_to_double(angle); ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ /* change origin (buttons facing right [libinput +90 degrees]) and ++ * scaling (5 points per degree) to match wacom driver behavior ++ */ ++ rotation = remainderf(rotation + 90.0f, 360.0f); ++ rotation *= 5.0f; ++ xwl_tablet_tool->rotation = rotation; ++} ++ ++static void ++tablet_tool_slider(void *data, struct zwp_tablet_tool_v2 *tool, ++ int32_t position_raw) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ float position = position_raw / 65535.0; ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ xwl_tablet_tool->slider = (position * 1799.0f) - 900.0f; ++} ++ ++static void ++tablet_tool_wheel(void *data, struct zwp_tablet_tool_v2 *tool, ++ wl_fixed_t degrees, int32_t clicks) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ ++ if (!xwl_seat->focus_window) ++ return; ++ ++ xwl_tablet_tool->wheel_clicks = clicks; ++} ++ ++static void ++tablet_tool_button_state(void *data, struct zwp_tablet_tool_v2 *tool, ++ uint32_t serial, uint32_t button, uint32_t state) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ struct xwl_seat *xwl_seat = xwl_tablet_tool->seat; ++ uint32_t *mask = &xwl_tablet_tool->buttons_now; ++ int xbtn = 0; ++ ++ /* BTN_0 .. BTN_9 */ ++ if (button >= 0x100 && button <= 0x109) { ++ xbtn = button - 0x100 + 1; ++ } ++ /* BTN_A .. BTN_Z */ ++ else if (button >= 0x130 && button <= 0x135) { ++ xbtn = button - 0x130 + 10; ++ } ++ /* BTN_BASE .. BTN_BASE6 */ ++ else if (button >= 0x126 && button <= 0x12b) { ++ xbtn = button - 0x126 + 16; ++ } ++ else { ++ switch (button) { ++ case 0x110: /* BTN_LEFT */ ++ case 0x14a: /* BTN_TOUCH */ ++ xbtn = 1; ++ break; ++ ++ case 0x112: /* BTN_MIDDLE */ ++ case 0x14b: /* BTN_STYLUS */ ++ xbtn = 2; ++ break; ++ ++ case 0x111: /* BTN_RIGHT */ ++ case 0x14c: /* BTN_STYLUS2 */ ++ xbtn = 3; ++ break; ++ ++ case 0x113: /* BTN_SIDE */ ++ case 0x116: /* BTN_BACK */ ++ xbtn = 8; ++ break; ++ ++ case 0x114: /* BTN_EXTRA */ ++ case 0x115: /* BTN_FORWARD */ ++ xbtn = 9; ++ break; ++ } ++ } ++ ++ if (!xbtn) { ++ ErrorF("unknown tablet button number %d\n", button); ++ return; ++ } ++ ++ BUG_RETURN(xbtn >= 8 * sizeof(*mask)); ++ ++ if (state) ++ SetBit(mask, xbtn - 1); ++ else ++ ClearBit(mask, xbtn - 1); ++ ++ xwl_seat->xwl_screen->serial = serial; ++} ++ ++static void ++tablet_tool_frame(void *data, struct zwp_tablet_tool_v2 *tool, uint32_t time) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = data; ++ ValuatorMask mask; ++ uint32_t released, pressed, diff; ++ int button; ++ ++ valuator_mask_zero(&mask); ++ valuator_mask_set(&mask, 0, xwl_tablet_tool->x); ++ valuator_mask_set(&mask, 1, xwl_tablet_tool->y); ++ valuator_mask_set(&mask, 2, xwl_tablet_tool->pressure); ++ valuator_mask_set(&mask, 3, xwl_tablet_tool->tilt_x); ++ valuator_mask_set(&mask, 4, xwl_tablet_tool->tilt_y); ++ valuator_mask_set(&mask, 5, xwl_tablet_tool->rotation + xwl_tablet_tool->slider); ++ ++ QueuePointerEvents(xwl_tablet_tool->xdevice, MotionNotify, 0, ++ POINTER_ABSOLUTE | POINTER_SCREEN, &mask); ++ ++ valuator_mask_zero(&mask); ++ ++ diff = xwl_tablet_tool->buttons_prev ^ xwl_tablet_tool->buttons_now; ++ released = diff & ~xwl_tablet_tool->buttons_now; ++ pressed = diff & xwl_tablet_tool->buttons_now; ++ ++ button = 1; ++ while (released) { ++ if (released & 0x1) ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ++ ButtonRelease, button, 0, &mask); ++ button++; ++ released >>= 1; ++ } ++ ++ button = 1; ++ while (pressed) { ++ if (pressed & 0x1) ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ++ ButtonPress, button, 0, &mask); ++ button++; ++ pressed >>= 1; ++ } ++ ++ xwl_tablet_tool->buttons_prev = xwl_tablet_tool->buttons_now; ++ ++ while (xwl_tablet_tool->wheel_clicks) { ++ if (xwl_tablet_tool->wheel_clicks < 0) { ++ button = 4; ++ xwl_tablet_tool->wheel_clicks++; ++ } ++ else { ++ button = 5; ++ xwl_tablet_tool->wheel_clicks--; ++ } ++ ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ++ ButtonPress, button, 0, &mask); ++ QueuePointerEvents(xwl_tablet_tool->xdevice, ++ ButtonRelease, button, 0, &mask); ++ ++ } ++} ++ ++static const struct zwp_tablet_tool_v2_listener tablet_tool_listener = { ++ tablet_tool_receive_type, ++ tablet_tool_receive_hardware_serial, ++ tablet_tool_receive_hardware_id_wacom, ++ tablet_tool_receive_capability, ++ tablet_tool_receive_done, ++ tablet_tool_receive_removed, ++ tablet_tool_proximity_in, ++ tablet_tool_proximity_out, ++ tablet_tool_down, ++ tablet_tool_up, ++ tablet_tool_motion, ++ tablet_tool_pressure, ++ tablet_tool_distance, ++ tablet_tool_tilt, ++ tablet_tool_rotation, ++ tablet_tool_slider, ++ tablet_tool_wheel, ++ tablet_tool_button_state, ++ tablet_tool_frame ++}; ++ ++static void ++tablet_pad_ring_destroy(struct xwl_tablet_pad_ring *ring) ++{ ++ zwp_tablet_pad_ring_v2_destroy(ring->ring); ++ xorg_list_del(&ring->link); ++ free(ring); ++} ++ ++static void ++tablet_pad_ring_source(void *data, ++ struct zwp_tablet_pad_ring_v2 *zwp_tablet_pad_ring_v2, ++ uint32_t source) ++{ ++} ++ ++static void ++tablet_pad_ring_angle(void *data, ++ struct zwp_tablet_pad_ring_v2 *zwp_tablet_pad_ring_v2, ++ wl_fixed_t degrees) ++{ ++ struct xwl_tablet_pad_ring *ring = data; ++ struct xwl_tablet_pad *pad = ring->group->pad; ++ double deg = wl_fixed_to_double(degrees); ++ ValuatorMask mask; ++ ++ valuator_mask_zero(&mask); ++ valuator_mask_set(&mask, 5 + ring->index, deg/360.0 * 71); ++ QueuePointerEvents(pad->xdevice, MotionNotify, 0, 0, &mask); ++} ++ ++static void ++tablet_pad_ring_stop(void *data, ++ struct zwp_tablet_pad_ring_v2 *zwp_tablet_pad_ring_v2) ++{ ++} ++ ++static void ++tablet_pad_ring_frame(void *data, ++ struct zwp_tablet_pad_ring_v2 *zwp_tablet_pad_ring_v2, ++ uint32_t time) ++{ ++} ++ ++static const struct zwp_tablet_pad_ring_v2_listener tablet_pad_ring_listener = { ++ tablet_pad_ring_source, ++ tablet_pad_ring_angle, ++ tablet_pad_ring_stop, ++ tablet_pad_ring_frame, ++}; ++ ++ ++static void ++tablet_pad_strip_destroy(struct xwl_tablet_pad_strip *strip) ++{ ++ zwp_tablet_pad_strip_v2_destroy(strip->strip); ++ xorg_list_del(&strip->link); ++ free(strip); ++} ++ ++static void ++tablet_pad_strip_source(void *data, ++ struct zwp_tablet_pad_strip_v2 *zwp_tablet_pad_strip_v2, ++ uint32_t source) ++{ ++} ++ ++static void ++tablet_pad_strip_position(void *data, ++ struct zwp_tablet_pad_strip_v2 *zwp_tablet_pad_strip_v2, ++ uint32_t position) ++{ ++ struct xwl_tablet_pad_strip *strip = data; ++ struct xwl_tablet_pad *pad = strip->group->pad; ++ ValuatorMask mask; ++ ++ valuator_mask_zero(&mask); ++ valuator_mask_set(&mask, 3 + strip->index, position/65535.0 * 2048); ++ QueuePointerEvents(pad->xdevice, MotionNotify, 0, 0, &mask); ++} ++ ++static void ++tablet_pad_strip_stop(void *data, ++ struct zwp_tablet_pad_strip_v2 *zwp_tablet_pad_strip_v2) ++{ ++} ++ ++static void ++tablet_pad_strip_frame(void *data, ++ struct zwp_tablet_pad_strip_v2 *zwp_tablet_pad_strip_v2, ++ uint32_t time) ++{ ++} ++ ++static const struct zwp_tablet_pad_strip_v2_listener tablet_pad_strip_listener = { ++ tablet_pad_strip_source, ++ tablet_pad_strip_position, ++ tablet_pad_strip_stop, ++ tablet_pad_strip_frame, ++}; ++ ++static void ++tablet_pad_group_destroy(struct xwl_tablet_pad_group *group) ++{ ++ struct xwl_tablet_pad_ring *r, *tr; ++ struct xwl_tablet_pad_strip *s, *ts; ++ ++ xorg_list_for_each_entry_safe(r, tr, ++ &group->pad_group_ring_list, ++ link) ++ tablet_pad_ring_destroy(r); ++ ++ xorg_list_for_each_entry_safe(s, ts, ++ &group->pad_group_strip_list, ++ link) ++ tablet_pad_strip_destroy(s); ++ ++ zwp_tablet_pad_group_v2_destroy(group->group); ++ xorg_list_del(&group->link); ++ free(group); ++} ++ ++static void ++tablet_pad_group_buttons(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2, ++ struct wl_array *buttons) ++{ ++ ++} ++ ++static void ++tablet_pad_group_ring(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2, ++ struct zwp_tablet_pad_ring_v2 *wp_ring) ++{ ++ static unsigned int ring_index = 0; ++ struct xwl_tablet_pad_group *group = data; ++ struct xwl_tablet_pad_ring *ring; ++ ++ ring = calloc(1, sizeof *ring); ++ if (ring == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ ring->index = ring_index++; ++ ring->group = group; ++ ring->ring = wp_ring; ++ ++ xorg_list_add(&ring->link, &group->pad_group_ring_list); ++ ++ zwp_tablet_pad_ring_v2_add_listener(wp_ring, &tablet_pad_ring_listener, ++ ring); ++} ++ ++static void ++tablet_pad_group_strip(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2, ++ struct zwp_tablet_pad_strip_v2 *wp_strip) ++{ ++ static unsigned int strip_index = 0; ++ struct xwl_tablet_pad_group *group = data; ++ struct xwl_tablet_pad_strip *strip; ++ ++ strip = calloc(1, sizeof *strip); ++ if (strip == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ strip->index = strip_index++; ++ strip->group = group; ++ strip->strip = wp_strip; ++ ++ xorg_list_add(&strip->link, &group->pad_group_strip_list); ++ ++ zwp_tablet_pad_strip_v2_add_listener(wp_strip, &tablet_pad_strip_listener, ++ strip); ++} ++ ++static void ++tablet_pad_group_modes(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2, ++ uint32_t modes) ++{ ++ ++} ++ ++static void ++tablet_pad_group_done(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2) ++{ ++ ++} ++ ++static void ++tablet_pad_group_mode_switch(void *data, ++ struct zwp_tablet_pad_group_v2 *zwp_tablet_pad_group_v2, ++ uint32_t time, ++ uint32_t serial, ++ uint32_t mode) ++{ ++ ++} ++ ++static struct zwp_tablet_pad_group_v2_listener tablet_pad_group_listener = { ++ tablet_pad_group_buttons, ++ tablet_pad_group_ring, ++ tablet_pad_group_strip, ++ tablet_pad_group_modes, ++ tablet_pad_group_done, ++ tablet_pad_group_mode_switch, ++}; ++ ++static int ++xwl_tablet_pad_proc(DeviceIntPtr device, int what) ++{ ++ struct xwl_tablet_pad *pad = device->public.devicePrivate; ++ /* Axis layout mirrors that of xf86-input-wacom to have better ++ compatibility with existing clients */ ++#define NAXES 7 ++ Atom axes_labels[NAXES] = { 0 }; ++ BYTE map[MAX_BUTTONS + 1]; ++ int i = 0; ++ Atom btn_labels[MAX_BUTTONS] = { 0 }; /* btn labels are meaningless */ ++ int nbuttons; ++ ++ switch (what) { ++ case DEVICE_INIT: ++ device->public.on = FALSE; ++ ++ axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X); ++ axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y); ++ /* The others have no good mapping */ ++ ++ if (!InitValuatorClassDeviceStruct(device, NAXES, axes_labels, ++ GetMotionHistorySize(), Absolute)) ++ return BadValue; ++ ++ for (i = 1; i <= MAX_BUTTONS; i++) ++ map[i] = i; ++ ++ /* We need at least 7 buttons to allow scrolling */ ++ nbuttons = min(max(pad->nbuttons + 4, 7), MAX_BUTTONS); ++ ++ if (!InitButtonClassDeviceStruct(device, nbuttons, ++ btn_labels, map)) ++ return BadValue; ++ ++ /* Valuators */ ++ InitValuatorAxisStruct(device, 0, axes_labels[0], ++ 0, 100, 1, 0, 1, Absolute); ++ InitValuatorAxisStruct(device, 1, axes_labels[1], ++ 0, 100, 1, 0, 1, Absolute); ++ /* Pressure - unused, for backwards compat only */ ++ InitValuatorAxisStruct(device, 2, axes_labels[2], ++ 0, 2048, 1, 0, 1, Absolute); ++ /* strip x */ ++ InitValuatorAxisStruct(device, 3, axes_labels[3], ++ 0, 2048, 1, 0, 1, Absolute); ++ /* strip y */ ++ InitValuatorAxisStruct(device, 4, axes_labels[4], ++ 0, 2048, 1, 0, 1, Absolute); ++ /* ring */ ++ InitValuatorAxisStruct(device, 5, axes_labels[5], ++ 0, 71, 1, 0, 1, Absolute); ++ /* ring2 */ ++ InitValuatorAxisStruct(device, 6, axes_labels[6], ++ 0, 71, 1, 0, 1, Absolute); ++ ++ if (!InitPtrFeedbackClassDeviceStruct(device, xwl_pointer_control)) ++ return BadValue; ++ ++ return Success; ++ ++ case DEVICE_ON: ++ device->public.on = TRUE; ++ return Success; ++ ++ case DEVICE_OFF: ++ case DEVICE_CLOSE: ++ device->public.on = FALSE; ++ return Success; ++ } ++ ++ return BadMatch; ++#undef NAXES ++} ++ ++static void ++tablet_pad_group(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ struct zwp_tablet_pad_group_v2 *pad_group) ++{ ++ struct xwl_tablet_pad *pad = data; ++ struct xwl_tablet_pad_group *group; ++ ++ group = calloc(1, sizeof *group); ++ if (pad == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ group->pad = pad; ++ group->group = pad_group; ++ xorg_list_init(&group->pad_group_ring_list); ++ xorg_list_init(&group->pad_group_strip_list); ++ ++ xorg_list_add(&group->link, &pad->pad_group_list); ++ ++ zwp_tablet_pad_group_v2_add_listener(pad_group, ++ &tablet_pad_group_listener, ++ group); ++} ++ ++static void ++tablet_pad_path(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ const char *path) ++{ ++ ++} ++ ++static void ++tablet_pad_buttons(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ uint32_t buttons) ++{ ++ struct xwl_tablet_pad *pad = data; ++ ++ pad->nbuttons = buttons; ++} ++ ++static void ++tablet_pad_done(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2) ++{ ++ struct xwl_tablet_pad *pad = data; ++ ++ pad->xdevice = add_device(pad->seat, "xwayland-pad", ++ xwl_tablet_pad_proc); ++ pad->xdevice->public.devicePrivate = pad; ++ ActivateDevice(pad->xdevice, TRUE); ++ EnableDevice(pad->xdevice, TRUE); ++} ++ ++static void ++tablet_pad_button(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ uint32_t time, ++ uint32_t button, ++ uint32_t state) ++{ ++ struct xwl_tablet_pad *pad = data; ++ ValuatorMask mask; ++ ++ button++; /* wayland index vs X's 1-offset */ ++ /* skip scroll wheel buttons 4-7 */ ++ button = button > 3 ? button + 4 : button; ++ ++ valuator_mask_zero(&mask); ++ QueuePointerEvents(pad->xdevice, ++ state ? ButtonPress : ButtonRelease, button, 0, &mask); ++} ++ ++static void ++tablet_pad_enter(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ uint32_t serial, ++ struct zwp_tablet_v2 *tablet, ++ struct wl_surface *surface) ++{ ++ /* pairs the pad with the tablet but also to set the focus. We ++ * don't care about the pairing and always use X's focus */ ++} ++ ++static void ++tablet_pad_leave(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2, ++ uint32_t serial, ++ struct wl_surface *surface) ++{ ++ /* pairs the pad with the tablet but also to set the focus. We ++ * don't care about the pairing and always use X's focus */ ++} ++ ++static void ++tablet_pad_removed(void *data, ++ struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2) ++{ ++ struct xwl_tablet_pad *pad = data; ++ struct xwl_tablet_pad_group *g, *tg; ++ ++ xorg_list_for_each_entry_safe(g, tg, &pad->pad_group_list, link) ++ tablet_pad_group_destroy(g); ++ ++ RemoveDevice(pad->xdevice, TRUE); ++ xorg_list_del(&pad->link); ++ zwp_tablet_pad_v2_destroy(pad->pad); ++ free(pad); ++} ++ ++static const struct zwp_tablet_pad_v2_listener tablet_pad_listener = { ++ tablet_pad_group, ++ tablet_pad_path, ++ tablet_pad_buttons, ++ tablet_pad_done, ++ tablet_pad_button, ++ tablet_pad_enter, ++ tablet_pad_leave, ++ tablet_pad_removed, ++}; ++ ++static void ++tablet_seat_handle_add_tablet(void *data, struct zwp_tablet_seat_v2 *tablet_seat, ++ struct zwp_tablet_v2 *tablet) ++{ ++ struct xwl_seat *xwl_seat = data; ++ struct xwl_tablet *xwl_tablet; ++ ++ xwl_tablet = calloc(sizeof *xwl_tablet, 1); ++ if (xwl_tablet == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ xwl_tablet->tablet = tablet; ++ xwl_tablet->seat = xwl_seat; ++ ++ xorg_list_add(&xwl_tablet->link, &xwl_seat->tablets); ++ ++ zwp_tablet_v2_add_listener(tablet, &tablet_listener, xwl_tablet); ++} ++ ++static void ++xwl_tablet_tool_update_cursor(struct xwl_cursor *xwl_cursor) ++{ ++ struct xwl_tablet_tool *xwl_tablet_tool = wl_container_of(xwl_cursor, ++ xwl_tablet_tool, ++ cursor); ++ xwl_tablet_tool_set_cursor(xwl_tablet_tool); ++} ++ ++static void ++tablet_seat_handle_add_tool(void *data, struct zwp_tablet_seat_v2 *tablet_seat, ++ struct zwp_tablet_tool_v2 *tool) ++{ ++ struct xwl_seat *xwl_seat = data; ++ struct xwl_screen *xwl_screen = xwl_seat->xwl_screen; ++ struct xwl_tablet_tool *xwl_tablet_tool; ++ ++ xwl_tablet_tool = calloc(sizeof *xwl_tablet_tool, 1); ++ if (xwl_tablet_tool == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ xwl_tablet_tool->tool = tool; ++ xwl_tablet_tool->seat = xwl_seat; ++ xwl_cursor_init(&xwl_tablet_tool->cursor, xwl_screen, ++ xwl_tablet_tool_update_cursor); ++ ++ xorg_list_add(&xwl_tablet_tool->link, &xwl_seat->tablet_tools); ++ ++ zwp_tablet_tool_v2_add_listener(tool, &tablet_tool_listener, xwl_tablet_tool); ++} ++ ++static void ++tablet_seat_handle_add_pad(void *data, struct zwp_tablet_seat_v2 *tablet_seat, ++ struct zwp_tablet_pad_v2 *pad) ++{ ++ struct xwl_seat *xwl_seat = data; ++ struct xwl_tablet_pad *xwl_tablet_pad; ++ ++ xwl_tablet_pad = calloc(sizeof *xwl_tablet_pad, 1); ++ if (xwl_tablet_pad == NULL) { ++ ErrorF("%s ENOMEM\n", __func__); ++ return; ++ } ++ ++ xwl_tablet_pad->pad = pad; ++ xwl_tablet_pad->seat = xwl_seat; ++ xorg_list_init(&xwl_tablet_pad->pad_group_list); ++ ++ xorg_list_add(&xwl_tablet_pad->link, &xwl_seat->tablet_pads); ++ ++ zwp_tablet_pad_v2_add_listener(pad, &tablet_pad_listener, ++ xwl_tablet_pad); ++} ++ ++static const struct zwp_tablet_seat_v2_listener tablet_seat_listener = { ++ tablet_seat_handle_add_tablet, ++ tablet_seat_handle_add_tool, ++ tablet_seat_handle_add_pad ++}; ++ ++static void ++init_tablet_manager_seat(struct xwl_screen *xwl_screen, ++ struct xwl_seat *xwl_seat) ++{ ++ xorg_list_init(&xwl_seat->tablets); ++ xorg_list_init(&xwl_seat->tablet_tools); ++ xorg_list_init(&xwl_seat->tablet_pads); ++ ++ if (!xwl_screen->tablet_manager) ++ return; ++ ++ xwl_seat->tablet_seat = ++ zwp_tablet_manager_v2_get_tablet_seat(xwl_screen->tablet_manager, ++ xwl_seat->seat); ++ ++ zwp_tablet_seat_v2_add_listener(xwl_seat->tablet_seat, &tablet_seat_listener, xwl_seat); ++} ++ ++static void ++release_tablet_manager_seat(struct xwl_seat *xwl_seat) ++{ ++ struct xwl_tablet *xwl_tablet, *next_xwl_tablet; ++ struct xwl_tablet_tool *xwl_tablet_tool, *next_xwl_tablet_tool; ++ struct xwl_tablet_pad *xwl_tablet_pad, *next_xwl_tablet_pad; ++ ++ xorg_list_for_each_entry_safe(xwl_tablet_pad, next_xwl_tablet_pad, ++ &xwl_seat->tablet_pads, link) { ++ xorg_list_del(&xwl_tablet_pad->link); ++ zwp_tablet_pad_v2_destroy(xwl_tablet_pad->pad); ++ free(xwl_tablet_pad); ++ } ++ ++ xorg_list_for_each_entry_safe(xwl_tablet_tool, next_xwl_tablet_tool, ++ &xwl_seat->tablet_tools, link) { ++ xorg_list_del(&xwl_tablet_tool->link); ++ zwp_tablet_tool_v2_destroy(xwl_tablet_tool->tool); ++ free(xwl_tablet_tool); ++ } ++ ++ xorg_list_for_each_entry_safe(xwl_tablet, next_xwl_tablet, ++ &xwl_seat->tablets, link) { ++ xorg_list_del(&xwl_tablet->link); ++ zwp_tablet_v2_destroy(xwl_tablet->tablet); ++ free(xwl_tablet); ++ } ++ ++ if (xwl_seat->tablet_seat) { ++ zwp_tablet_seat_v2_destroy(xwl_seat->tablet_seat); ++ xwl_seat->tablet_seat = NULL; ++ } ++} ++ ++static void ++init_tablet_manager(struct xwl_screen *xwl_screen, uint32_t id, uint32_t version) ++{ ++ struct xwl_seat *xwl_seat; ++ ++ xwl_screen->tablet_manager = wl_registry_bind(xwl_screen->registry, ++ id, ++ &zwp_tablet_manager_v2_interface, ++ min(version,1)); ++ ++ xorg_list_for_each_entry(xwl_seat, &xwl_screen->seat_list, link) { ++ init_tablet_manager_seat(xwl_screen, xwl_seat); ++ } ++} ++ ++void ++xwl_screen_release_tablet_manager(struct xwl_screen *xwl_screen) ++{ ++ if (xwl_screen->tablet_manager) { ++ zwp_tablet_manager_v2_destroy(xwl_screen->tablet_manager); ++ xwl_screen->tablet_manager = NULL; ++ } ++} ++ ++static void + init_relative_pointer_manager(struct xwl_screen *xwl_screen, + uint32_t id, uint32_t version) + { +@@ -1210,6 +2329,8 @@ input_handler(void *data, struct wl_regi + init_relative_pointer_manager(xwl_screen, id, version); + } else if (strcmp(interface, "zwp_pointer_constraints_v1") == 0) { + init_pointer_constraints(xwl_screen, id, version); ++ } else if (strcmp(interface, "zwp_tablet_manager_v2") == 0) { ++ init_tablet_manager(xwl_screen, id, version); + } + } + +--- a/hw/xwayland/xwayland.c ++++ b/hw/xwayland/xwayland.c +@@ -130,6 +130,8 @@ xwl_close_screen(ScreenPtr screen) + &xwl_screen->seat_list, link) + xwl_seat_destroy(xwl_seat); + ++ xwl_screen_release_tablet_manager(xwl_screen); ++ + RemoveNotifyFd(xwl_screen->wayland_fd); + + wl_display_disconnect(xwl_screen->display); +--- a/hw/xwayland/xwayland.h ++++ b/hw/xwayland/xwayland.h +@@ -44,6 +44,7 @@ + + #include "relative-pointer-unstable-v1-client-protocol.h" + #include "pointer-constraints-unstable-v1-client-protocol.h" ++#include "tablet-unstable-v2-client-protocol.h" + + struct xwl_screen { + int width; +@@ -76,6 +77,7 @@ struct xwl_screen { + struct wl_registry *registry; + struct wl_registry *input_registry; + struct wl_compositor *compositor; ++ struct zwp_tablet_manager_v2 *tablet_manager; + struct wl_shm *shm; + struct wl_shell *shell; + struct zwp_relative_pointer_manager_v1 *relative_pointer_manager; +@@ -126,26 +128,35 @@ struct xwl_pointer_warp_emulator { + struct zwp_locked_pointer_v1 *locked_pointer; + }; + ++struct xwl_cursor { ++ void (* update_proc) (struct xwl_cursor *); ++ struct wl_surface *surface; ++ struct wl_callback *frame_cb; ++ Bool needs_update; ++}; ++ + struct xwl_seat { + DeviceIntPtr pointer; + DeviceIntPtr relative_pointer; + DeviceIntPtr keyboard; + DeviceIntPtr touch; ++ DeviceIntPtr stylus; ++ DeviceIntPtr eraser; ++ DeviceIntPtr puck; + struct xwl_screen *xwl_screen; + struct wl_seat *seat; + struct wl_pointer *wl_pointer; + struct zwp_relative_pointer_v1 *wp_relative_pointer; + struct wl_keyboard *wl_keyboard; + struct wl_touch *wl_touch; ++ struct zwp_tablet_seat_v2 *tablet_seat; + struct wl_array keys; + struct xwl_window *focus_window; + uint32_t id; + uint32_t pointer_enter_serial; + struct xorg_list link; + CursorPtr x_cursor; +- struct wl_surface *cursor; +- struct wl_callback *cursor_frame_cb; +- Bool cursor_needs_update; ++ struct xwl_cursor cursor; + WindowPtr last_xwindow; + + struct xorg_list touches; +@@ -172,6 +183,73 @@ struct xwl_seat { + double dx_unaccel; + double dy_unaccel; + } pending_pointer_event; ++ ++ struct xorg_list tablets; ++ struct xorg_list tablet_tools; ++ struct xorg_list tablet_pads; ++}; ++ ++struct xwl_tablet { ++ struct xorg_list link; ++ struct zwp_tablet_v2 *tablet; ++ struct xwl_seat *seat; ++}; ++ ++struct xwl_tablet_tool { ++ struct xorg_list link; ++ struct zwp_tablet_tool_v2 *tool; ++ struct xwl_seat *seat; ++ ++ DeviceIntPtr xdevice; ++ uint32_t proximity_in_serial; ++ uint32_t x; ++ uint32_t y; ++ uint32_t pressure; ++ float tilt_x; ++ float tilt_y; ++ float rotation; ++ float slider; ++ ++ uint32_t buttons_now, ++ buttons_prev; ++ ++ int32_t wheel_clicks; ++ ++ struct xwl_cursor cursor; ++}; ++ ++struct xwl_tablet_pad_ring { ++ unsigned int index; ++ struct xorg_list link; ++ struct xwl_tablet_pad_group *group; ++ struct zwp_tablet_pad_ring_v2 *ring; ++}; ++ ++struct xwl_tablet_pad_strip { ++ unsigned int index; ++ struct xorg_list link; ++ struct xwl_tablet_pad_group *group; ++ struct zwp_tablet_pad_strip_v2 *strip; ++}; ++ ++struct xwl_tablet_pad_group { ++ struct xorg_list link; ++ struct xwl_tablet_pad *pad; ++ struct zwp_tablet_pad_group_v2 *group; ++ ++ struct xorg_list pad_group_ring_list; ++ struct xorg_list pad_group_strip_list; ++}; ++ ++struct xwl_tablet_pad { ++ struct xorg_list link; ++ struct zwp_tablet_pad_v2 *pad; ++ struct xwl_seat *seat; ++ ++ DeviceIntPtr xdevice; ++ ++ unsigned int nbuttons; ++ struct xorg_list pad_group_list; + }; + + struct xwl_output { +@@ -193,6 +271,7 @@ Bool xwl_screen_init_cursor(struct xwl_s + + struct xwl_screen *xwl_screen_get(ScreenPtr screen); + ++void xwl_tablet_tool_set_cursor(struct xwl_tablet_tool *tool); + void xwl_seat_set_cursor(struct xwl_seat *xwl_seat); + + void xwl_seat_destroy(struct xwl_seat *xwl_seat); +@@ -241,6 +320,8 @@ Bool xwl_screen_init_glamor(struct xwl_s + uint32_t id, uint32_t version); + struct wl_buffer *xwl_glamor_pixmap_get_wl_buffer(PixmapPtr pixmap); + ++void xwl_screen_release_tablet_manager(struct xwl_screen *xwl_screen); ++ + #ifdef XV + /* glamor Xv Adaptor */ + Bool xwl_glamor_xv_init(ScreenPtr pScreen); --- xorg-server-1.19.6.orig/debian/po/POTFILES.in +++ xorg-server-1.19.6/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] xserver-xorg-legacy.templates --- xorg-server-1.19.6.orig/debian/po/ar.po +++ xorg-server-1.19.6/debian/po/ar.po @@ -0,0 +1,62 @@ +# translation of ar.po to Arabic +# xserver-xorg translation +# Copyright (C) 2006 The Arabeyes Project +# This file is distributed under the same license as the xserver-xorg package. +# +# Ossama M. Khayat , 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: ar\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-12 03:41+0300\n" +"Last-Translator: Ossama M. Khayat \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=4; plural=n%100==1 || n==0 ? 0 : n%100==2 ? 2 : n" +"%100>=3 && n%100<=10 ? 2 : 3;\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "المستخدم root فقط" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "مستخدمي الطرفية فقط" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "أي أحد" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "المستخدمين المسموح لهم تشغيل خادم X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"لأن خادم X يعمل بصلاحية المستخدم الخارق، فقد لا يكون من الحكمة السماح لأي " +"مستخدم بتشغيله، لأسباب أمنية. من ناحية أخرى، فليس من الحكمة أيضاً تشغيل برامج " +"X العامة كمستخدم root، والذي قد يحدث إن كان المستخدم root هو الوحيد الذي " +"يمكنه تشغيل خادم X. لذا، فإن الحل الأمثل لهذه المعضلة هو السماح فقط لمستخدمي " +"النظام عبر أحد الطرفيات الوهمية." --- xorg-server-1.19.6.orig/debian/po/ast.po +++ xorg-server-1.19.6/debian/po/ast.po @@ -0,0 +1,64 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg_po\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2009-01-12 08:33+0100\n" +"Last-Translator: Marcos Alvarez Costales \n" +"Language-Team: Asturian \n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: Asturian\n" +"X-Poedit-Country: SPAIN\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Namái root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Namái usuarios de consola" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Cualesquiera" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Usuarios a los que se-yos permite arrancar el sirvidor de X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Darréu que'l servidor X execútase con privilexos de superusuariu, pue nun " +"ser enforma prudente dexar que cualesquier usuariu lu arranque, por sides de " +"seguridá. Per otru llau, ye entá más imprudente executar programes veceru de " +"X de forma xeneral como root, lo cual pue asoceder si namái se permite a " +"root aniciar el sirvidor X. Un compromisu ente dambos casos ye permitir " +"que'l sirvidor X lu anicien namái usuarios que tengan entrao per una de les " +"consoles virtuales." --- xorg-server-1.19.6.orig/debian/po/be.po +++ xorg-server-1.19.6/debian/po/be.po @@ -0,0 +1,58 @@ +# translation of xorg_be.po to Belarusian +# Pavel Piatruk , 2008. +# Version xorg 1:7.3+12 +msgid "" +msgstr "" +"Project-Id-Version: xorg_be\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 12:18+0300\n" +"Last-Translator: Pavel Piatruk \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Толькі Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Толькі карыстальнікі кансолі" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Усе" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Карыстальнікі, якім дазволена запускаць X-сервер:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X-сервер працуе з прывілеямі супер-карыстальніка, таму з прычын бяспекі лепш " +"не дазваляць запускаць яго любому карыстальніку. З іншага боку, яшчэ горш " +"сітуацыя, калі ўсе кліенцкія X-праграмы працуюць з прывілеямі супер-" +"карыстальніка - так будзе, калі толькі супер-карыстальніку будзе дазволена " +"стартаваць X-сервер. Найлепшае выйсце - дазволіць запуск X-сервера толькі " +"тым карыстальнікам, што зайшлі ў адну з віртуальных кансоляў." --- xorg-server-1.19.6.orig/debian/po/bg.po +++ xorg-server-1.19.6/debian/po/bg.po @@ -0,0 +1,80 @@ +# translation of bg.po to Bulgarian +# debconf templates for xorg-x11 package +# Bulgarian translation +# +# $Id$ +# +# Copyrights: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Damyan Ivanov , 2006, 2007. +# Damyan Ivanov , 2008. +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg_debian_po_bg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 09:47+0300\n" +"Last-Translator: Damyan Ivanov \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Само root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Само потребители на конзолата" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Всички потребители на системата" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Потребители, на които им е разрешено да стартират X-сървъра:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Понеже X-сървърът се изпълнява с администраторски привилегии, идеята всеки " +"потребител да може да го стартира не е много добра от гледна точка на " +"сигурността. От друга страна, вършенето на ежедневната работа като " +"администратор е още по-лоша идея. Добър компромис е да се разреши " +"стартирането на X-сървъра само на потребители, които работят на системната " +"конзола." --- xorg-server-1.19.6.orig/debian/po/bn.po +++ xorg-server-1.19.6/debian/po/bn.po @@ -0,0 +1,60 @@ +# Bengali translation of xorg. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Md. Rezwan Shahid , 2009. +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2009-04-15 12:27+0600\n" +"Last-Translator: Md. Rezwan Shahid \n" +"Language-Team: Bengali \n" +"Language: bn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: WordForge 0.5-beta1\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "শুধুমাত্র রুট" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "শুধুমাত্র কনসোল ব্যবহারকারী" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "যেকেউ" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "যেসকল ব্যবহারকারী X সার্ভার চালু করতে অনুমতিপ্রাপ্ত:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"যেহেতু X সার্ভার সুপারইউজার সুবিধাসহ রান করে, যেকোনো ব্যবহারকারীকে এটি চালু করতে " +"দেয়া বুদ্ধিমানের কাজ হবে না (নিরাপত্তার জন্য)। আবার, সাধারন কারনে X ক্লায়েন্ট " +"প্রোগ্রাম চালানোর জন্য রুট হিসেবে লগ-ইন করা ঠিক নয় (যদি শুধুমাত্র রুটের অনুমতি থাকে X " +"সার্ভার চালু করার তখন এটি ঘটে)। একটি ভালো সমাধান হতে পারে, X সার্ভার শুধুমাত্র সেই " +"ব্যবহারকারীদের দ্বারা চালু করা যাবে যারা যেকোনো একটি ভার্চুয়াল কনসোলে লগ-ইন করা " +"আছে।" --- xorg-server-1.19.6.orig/debian/po/bs.po +++ xorg-server-1.19.6/debian/po/bs.po @@ -0,0 +1,70 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2006-11-01 01:17+0100\n" +"Last-Translator: Safir Secerovic \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: 3\n" +"X-Poedit-Country: BOSNIA AND HERZEGOVINA\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Samo root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Samo konzolni korisnici" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Svako" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Korisnici kojima je dopušteno pokretanje X severa:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Zbog činjenice što X server radi s privilegijama administratorskog " +"korisnika, nije pametno dopustiti svakom korisniku da ga pokreće iz " +"sigurnosnih razloga. S druge strane, još manje je pametno pokretati X " +"klijentske programe opšte namjene kao root, a što se može dogoditi ako samo " +"root korisniku dopustite pokretanje X servera. Dobar kompromis je dozvoliti " +"pokretanje X servera samo korisnicima koji su ulogirani na jednu od " +"virtuelnih konzola." --- xorg-server-1.19.6.orig/debian/po/ca.po +++ xorg-server-1.19.6/debian/po/ca.po @@ -0,0 +1,79 @@ +# debconf templates for xorg-x11 package +# Catalan translation +# +# $Id: ca.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Ivan Vilata i Balaguer , 2002-2006 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg 1:7.3+12\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 09:35+0200\n" +"Last-Translator: Ivan Vilata i Balaguer \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Només root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Només usuaris de la consola" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Qualsevol" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Usuaris que poden iniciar el servidor X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Com que el servidor X corre amb privilegis de superusuari, podria no ser " +"assenyat que qualsevol usuari l’iniciara, per motius de seguretat. D’altra " +"banda, encara té menys seny emprar programes client X de propòsit general " +"com a root, cosa que ocorreria si només root puguera iniciar el servidor X. " +"Un bon compromís és deixar iniciar el servidor X només a aquells usuaris que " +"hagen entrat al sistema per una de les consoles virtuals." + --- xorg-server-1.19.6.orig/debian/po/cs.po +++ xorg-server-1.19.6/debian/po/cs.po @@ -0,0 +1,79 @@ +# debconf templates for xorg package +# Czech translation +# +# $Id: cs.po 490 2005-08-03 09:59:07Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Miroslav Kure , 2004-2008 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-14 14:41+0200\n" +"Last-Translator: Miroslav Kure \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Pouze root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Pouze konzoloví uživatelé" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Kdokoliv" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Uživatelé, kteří mohou spustit X server:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Protože X server běží se superuživatelskými právy, z bezpečnostního hlediska " +"není rozumné dát uživatelům možnost jej spouštět. Na druhou stranu, ještě " +"nebezpečnější je spouštět obecného X klienta jako root, což by se mohlo " +"stát, kdybyste start X serveru povolili pouze rootovi. Rozumným kompromisem " +"je povolit spouštění X serveru pouze uživatelům přihlášeným na virtuální " +"konzoli." + --- xorg-server-1.19.6.orig/debian/po/da.po +++ xorg-server-1.19.6/debian/po/da.po @@ -0,0 +1,98 @@ +# #-#-#-#-# xorg-da.po (xfree86_4.3.0-3_da) #-#-#-#-# +# Branden Robinson, 2000--2004. +# Dennis Haney, 2002. +# Morten Brix Pedersen , 2003. +# Claus Hindsgaul , 2004. +# Claus Hindsgaul , 2006. +# debconf templates for xfree86 package +# Danish translation +# $Id: da.po 1763M 2004-10-11 07:13:16Z (local) $# +# Copyrights:# +# This file is distributed under the same license as the xfree86 package. +# Please see debian/copyright.# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry'# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files.# +# #-#-#-#-# da.po (xfree86_4.3.0-3_da) #-#-#-#-# +# debconf templates for xfree86 package +# Danish translation# +# $Id: da.po 1763M 2004-10-11 07:13:16Z (local) $# +# Copyrights:# +# This file is distributed under the same license as the xfree86 package. +# Please see debian/copyright.# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry'# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files.# +msgid "" +msgstr "" +"Project-Id-Version: xfree86_4.3.0-3_da\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2006-07-04 13:46+0200\n" +"Last-Translator: Claus Hindsgaul \n" +"Language-Team: Danish\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"#-#-#-#-# xorg-da.po (xfree86_4.3.0-3_da) #-#-#-#-#\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"#-#-#-#-# da.po (xfree86_4.3.0-3_da) #-#-#-#-#\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Kun root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Kun konsolbrugere" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Alle" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Brugere, der m starte X-serveren:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Da X-serveren krer med superbruger-rettigheder kan det af sikkerhedsgrunde " +"vre en drlig id at tillade enhver at starte den. P den anden side er det " +"endnu drligere at kre normale X-programmer som root, hvilket netop er, " +"hvad der kan blive resultatet, hvis kun root m starte X-serveren. Et godt " +"kompromis er at kun tillade brugere der er logget ind p en virtuel konsol " +"at starte X-serveren." + --- xorg-server-1.19.6.orig/debian/po/de.po +++ xorg-server-1.19.6/debian/po/de.po @@ -0,0 +1,78 @@ +# debconf templates for xorg-x11 package +# German translation +# +# $Id: de.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Martin Schuster, 2001 +# Sebastian Rittau, 2001 +# Erich Schubert, 2001 +# Knut Suebert, 2001 +# Sebastian Feltel, 2001 +# Philipp Matthias Hahn, 2001 +# Veit Waltemath, 2002 +# Andreas Metzler, 2002 +# Alwin Meschede , 2004, 2005. +# Jens Seidel , 2006, 2007. +# Helge Kreutzmann , 2008. +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg 1:7.3+12\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 18:54+0200\n" +"Last-Translator: Helge Kreutzmann \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Nur Superuser" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Nur Konsolenbenutzer" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Jeder" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Benutzer, die den X-Server starten dürfen:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Weil der X-Server mit Superuser-Rechten läuft, kann es unter " +"Sicherheitsaspekten unklug sein, jedem Benutzer das Starten zu erlauben. " +"Andererseits ist es noch unklüger, allgemeine X-Programme als Superuser " +"auszuführen, was passieren könnte, wenn nur der Superuser den X-Server " +"starten darf. Ein guter Kompromiss kann sein, nur den Personen das Starten " +"des X-Servers zu erlauben, die auf einer der virtuellen Konsolen angemeldet " +"sind." + --- xorg-server-1.19.6.orig/debian/po/dz.po +++ xorg-server-1.19.6/debian/po/dz.po @@ -0,0 +1,73 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg.pot\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-30 09:48+0530\n" +"Last-Translator: Jurmey Rabgay(Bongop) (DIT,BHUTAN) \n" +"Language-Team: dzongkha \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2;plural=(n!=1)\n" +"X-Poedit-Country: bhutan\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Bookmarks: -1,-1,-1,95,-1,-1,-1,-1,-1,-1\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "རྩ་བ་རྐྱངམ་ཅིག་" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "མ་སྒྲོམ་ལག་ལེན་པ་ཚུ་རྐྱངམ་ཅིག" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "ག་འབད་རུང་།" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "ལག་ལེན་པ་ཚུ་ཨེགསི་སར་བར་འགོ་བཙུགས་ཆོག:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"ཨེགསི་སར་བར་འདི་ ལག་ལེན་པ་གཙོ་བོའི་ཁེ་དབང་ཚུ་གི་ཐོག་ལས་ གཡོག་བཀོལཝ་ཨིནམ་ལས་ སྲུང་སྐྱོབས་ཀྱི་རྒྱུ་མཚན་" +"ལུ་བརྟེན་ཏེ་ འགོ་བཙུགས་ནིའི་དོན་ལས་ ལག་ལེན་པ་གང་རུང་ཅིག་ལུ་གནང་བ་བྱིན་ནིའི་དོན་ལུ་ འདི་ལེགས་ཤོམ་མེན་" +"འོང་། གཅིག་ལས་འབད་བ་ཅིན་ འདི་ཡོངས་ཁྱབ་དགོས་དོན་ ཨེགསི་ཞབས་ཏོག་སྤྱོད་མིའི་ལས་རིམ་འདི་ རྩ་བ་སྦེ་གཡོག་" +"བཀོལ་ནིའི་དོན་ལུ་ ཧེང་བཀལ་རང་ལེགས་ཤོམ་མེེདཔ་ཨིན་ དེ་ཡང་ ཨེགསི་སར་བར་འགོ་བཙུགས་ནིའི་དོན་ལུ་ རྩ་བ་" +"རྐྱངམ་ཅིག་ལུ་གནང་བ་བྱིན་ཏེ་ཡོད་པ་ཅིན་ ག་ཅི་འབད་འོང་། ནང་འགྲིགས་ལེགས་ཤོམ་འདི་ཡང་ བར་ཅུ་ཡལ་མ་སྒྲོམ་" +"གཅིག་ལུ་ ནང་བསྐྱོད་འབད་ཡོད་པའི་ལག་ལེན་པ་གིས་རྐྱངམ་ཅིག་འགོ་བཙུགས་ནི་ལུ་ ཨེགསི་སར་བར་ལུ་གནང་བ་བྱིན་" +"ནི་འདི་ཨིན།" + --- xorg-server-1.19.6.orig/debian/po/el.po +++ xorg-server-1.19.6/debian/po/el.po @@ -0,0 +1,84 @@ +# translation of xorg_po_el.po to +# debconf templates for xorg-x11 package +# Greek translation +# +# $Id: el.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000-2004. +# Konstantinos Margaritis , 2004. +# QUAD-nrg.net , 2006. +msgid "" +msgstr "" +"Project-Id-Version: xorg_po_el\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-08-24 17:39+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Μόνο ο χρήστης root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Μόνο από την κονσόλα" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Οποιοσδήποτε" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Χρήστες που επιτρέπεται να ξεκινούν τον εξυπηρετητή Χ:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Λόγω του ότι ο εξυπηρετητής X τρέχει ως χρήστης root, με τα αντίστοιχα " +"δικαιώματα, για λόγους ασφαλείας δε συνιστάται η εκκίνησή του από άπλό " +"χρήστη. Ωστόσο, ακόμη πιο επικίνδυνο για την ασφάλεια είναι η εκτέλεση " +"απλών προγραμμάτων στα X ως χρήστης root, το οποίο μπορεί να συμβεί αν ο " +"χρήστης root επιτρέπεται να εκκινήσει τον εξυπηρετητή X. Μια μέση οδός " +"είναι να επιτρέπεται η εκκίνηση του εξυπηρετητή X μόνο από τους χρήστες που " +"έχουν συνδεθεί στο σύστημα σε μία από τις εικονικές κονσόλες." + --- xorg-server-1.19.6.orig/debian/po/eo.po +++ xorg-server-1.19.6/debian/po/eo.po @@ -0,0 +1,61 @@ +# debconf templates for the xorg package +# Esperanto translation. +# Copyright (C) 2008 FSF +# This file is distributed under the same license as the xorg package. +# Felipe Castro , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-10-19 20:00-0300\n" +"Last-Translator: Felipe Castro \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Nur 'Root'" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Nur Konzol-Uzantoj" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Iu ajn" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Uzantoj permesitaj ekigi la X-servilon:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Ĉar la X-servilo funkcias kun superaj privilegioj, eble estas malprudente " +"permesi ke iu ajn uzanto ekigu ĝin, pro sekurecaj kialoj. Tamen, estas eĉ " +"pli malprudente lanĉi ĝeneralajn klient-programojn per 'root', kio ĝuste " +"povas okazi kiam nur 'root' estas permesata ekigi la X-servilon. Bona " +"ekvilibro oni atingas permesante ke la X-servilo estu ekigebla nur por " +"uzantoj ensalutitaj en unu el la virtualaj konzoloj." + --- xorg-server-1.19.6.orig/debian/po/es.po +++ xorg-server-1.19.6/debian/po/es.po @@ -0,0 +1,88 @@ +# debconf templates for xorg-x11 package +# Spanish translation +# +# $Id: es.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson 2000-2004 +# Carlos Valdivia Yague, 2001 +# Javier Fernandez-Sanguino Pena, 2003, 2008 +# David Martinez Moreno, 2001, 2002, 2005, 2006 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg 7.0.24\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-09-10 02:11+0200\n" +"Last-Translator: Javier Fernandez-Sanguino \n" +"Language-Team: ES \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"X-POFile-SpellExtra: Bloq Mays nocaps macintoshold share dead symbols\n" +"X-POFile-SpellExtra: Window PCI metawin conf logo Type autodetectar AGP\n" +"X-POFile-SpellExtra: BusID xserver xkb keys Express multitarjeta Caps pc\n" +"X-POFile-SpellExtra: usr Xorg nodeadkeys lspci type nice bin fr ctrl XKB\n" +"X-POFile-SpellExtra: AT xorg not framebuffer sintase Lock swapcaps us\n" +"X-POFile-SpellExtra: PowerPC slamente altwin root macintosh\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Slo root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Slo usuarios de consola" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Cualquiera" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Usuarios a los que se permite arrancar el servidor de X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Debido a que el servidor X se ejecuta con privilegios de superusuario, puede " +"no ser muy prudente permitir que cualquier usuario lo arranque, por razones " +"de seguridad. Por otra parte, es an ms imprudente ejecutar programas " +"cliente de X de forma general como root, lo cual puede suceder si slamente " +"se permite a root iniciar el servidor X. Un compromiso entre ambos casos es " +"permitir que el servidor X lo inicien slo usuarios que hayan entrado por " +"una de las consolas virtuales." + --- xorg-server-1.19.6.orig/debian/po/eu.po +++ xorg-server-1.19.6/debian/po/eu.po @@ -0,0 +1,82 @@ +# translation of xorg-eu.po to Euskara +# debconf templates for xorg-x11 package +# Euskara translation +# +# $Id: eu.po 490 2005-08-03 09:59:07Z ender $ +# +# Copyright: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf is available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000-2004. +# Piarres Beobide , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg-eu\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-08 22:57+0200\n" +"Last-Translator: Piarres Beobide \n" +"Language-Team: Euskara \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Root bakarrik" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Kontsola erabiltzaileak bakarrik" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Edozein" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X zerbitzaria abiarazteko gaitasuna duten erabiltzaileak:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X zerbitzaria supererabiltzaile baimenez abiarazten denez, segurtasun " +"arrazoiak direla eta ez da zentzuzkoa edozeini abiarazteko baimena ematea. " +"Beste aldetik ez da zentzuzkoa ere X bezero programa arruntak root bezala " +"abiaraztea, root-ek bakarrik X zerbitzari abiarazteko baimena duenean " +"gertatzen dena. Gomendagarriena X zerbitzaria kontsola birtual batetan " +"saioa abiarazirik duen edozeini abiarazten uztea da." + --- xorg-server-1.19.6.orig/debian/po/fi.po +++ xorg-server-1.19.6/debian/po/fi.po @@ -0,0 +1,62 @@ +# Debian Installer xserver-xorg. +# Translation to Finnish. +# Copyright (C) 2006 Tapio Lehtonen +# This file is distributed under the same license as the xserver-xorg package. +# Tapio Lehtonen , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-07-18 18:15-0000\n" +"Last-Translator: Esko Arajärvi \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Country: FINLAND\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Vain pääkäyttäjä" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Vain konsolikäyttäjät" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Kaikki" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Käyttäjät, jotka saavat käynnistää X-palvelimen:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Tietoturvasyistä on huono ajatus antaa kaikille oikeudet X-palvelimen " +"käynnistämiseen, koska sitä ajetaan pääkäyttäjän oikeuksilla. Toisaalta on " +"vielä huonompi ajatus suorittaa yleiskäyttöisiä X:n asiakasohjelmia " +"pääkäyttäjänä, mikä on tilanne, jos vain pääkäyttäjä saa käynnistää X-" +"palvelimen. Hyvä ratkaisu on sallia X-palvelimen käynnistys ainoastaan " +"käyttäjille, jotka ovat kirjautuneet jollekin virtuaalikonsolille." + --- xorg-server-1.19.6.orig/debian/po/fr.po +++ xorg-server-1.19.6/debian/po/fr.po @@ -0,0 +1,87 @@ +# translation of fr.po to French +# debconf templates for xfree86 package +# French translation +# +# $Id: fr.po 1763M 2004-10-11 07:13:17Z (local) $ +# +# Copyrights: +# +# This file is distributed under the same license as the xfree86 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000--2004. +# Thomas Morin, 2001. +# Patrice Karatchentzeff, 2001. +# Jrme Schell, 2001. +# Jean-Christophe Dubacq, 2002. +# Christian Perrier , 2003, 2004, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-08 22:26+0200\n" +"Last-Translator: Christian Perrier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: Plural-Forms: nplurals=2; plural=n>1;\n" +"\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Superutilisateur seulement" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Depuis la console" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "N'importe qui" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Utilisateurs autoriss lancer un serveur X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Le serveur X tant lanc avec des droits privilgis, il n'est pas trs " +"prudent pour des raisons de scurit de permettre n'importe qui de le " +"lancer. D'un autre ct, il est encore moins prudent de lancer les logiciels " +"clients X en tant que superutilisateur, ce qui risque d'arriver si seul le " +"superutilisateur est autoris lancer un serveur X. Un bon compromis est " +"que seuls les utilisateurs connects sur une des consoles virtuelles " +"puissent lancer un serveur X." --- xorg-server-1.19.6.orig/debian/po/gl.po +++ xorg-server-1.19.6/debian/po/gl.po @@ -0,0 +1,68 @@ +# debconf templates for xorg-x11 package +# Galician translation +# +# $Id: gl.po 1080 2006-01-14 02:15:39Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Jacobo Tarrio, 2001, 2006, 2008 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-08 22:17+0100\n" +"Last-Translator: Jacobo Tarrio \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Só o administrador" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Só os usuarios da consola" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Todos" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Usuarios aos que se lles permite iniciar o servidor X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Como o servidor X se executa con privilexios de superusuario, pode non ser " +"unha boa idea permitir que calquera usuario o inicie, por motivos de " +"seguridade. Por outro lado, pode ser aínda unha peor idea executar programas " +"cliente X de propósito xeral coma administrador, que é o que podería ocorrer " +"se só root pode iniciar o servidor X. Un bo compromiso consiste en permitir " +"que o servidor X o inicien só os usuarios que traballen nunha consola " +"virtual." + --- xorg-server-1.19.6.orig/debian/po/gu.po +++ xorg-server-1.19.6/debian/po/gu.po @@ -0,0 +1,59 @@ +# Gujarati translation of xorg. +# Copyright (C) 2008 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Kartik Mistry , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg-gu\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-07-23 23:40+0530\n" +"Last-Translator: Kartik Mistry \n" +"Language-Team: Gujarati \n" +"Language: gu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "ફક્ત રૂટ" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "ફક્ત કોન્સોલ વપરાશકર્તાઓ" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "કોઇપણ" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X સર્વર શરૂ કરવા માટે માન્ય વપરાશકર્તાઓ:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X સર્વર સુપરયુઝર હક સાથે ચાલવાનાં કારણે, કોઇપણ વપરાશકર્તા તેને ચાલુ કરી શકે તે, સલામતીનાં " +"કારણોસર સલાહ ભર્યું નથી. બીજી બાજુ, સામાન્ય-વપરાશનાં X ક્લાયન્ટ કાર્યક્રમો રૂટ તરીકે " +"ચલાવવા એ પણ ડહ્યાપણભર્યું નથી, જે મોટાભાગે રૂટને X સર્વર શરૂ કરવાની પરવાનગી આપવામાં આવે " +"ત્યારે થાય છે. સારી સમજૂતી એ છે કે માત્ર પ્રવેશ કરેલ વપરાશકર્તાઓને તેમનાં વર્ચ્યુઅલ કોન્સોલ્સ " +"વડે X સર્વર શરૂ કરવાની પરવાનગી આપવામાં આવે." + --- xorg-server-1.19.6.orig/debian/po/he.po +++ xorg-server-1.19.6/debian/po/he.po @@ -0,0 +1,61 @@ +# translation of he.po to Hebrew +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Amit Dovev , 2007. +# Lior Kaplan , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: he\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 09:13+0300\n" +"Last-Translator: Lior Kaplan \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "משתמש-על בלבד" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "משתמשי מסוף בלבד" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "כל המשתמשים" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "משתמשים הרשאים לאתחל את שרת ה-X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"מכיוון ששרת ה-X רץ עם הרשאות משתמש-על, זה כנראה יהיה לא חכם להרשות לכל משתמש " +"לאתחל אותו, מסיבות אבטחה. מצד שני, יהיה זה לא חכם להריץ תוכניות לקוח X " +"כמשתמש-על, שזה מה שעלול לקרות אם רק משתמש-העל יהיה מורשה לאתחל את שרת ה-X. " +"פשרה טובה תהיה להרשות לשרת ה-X להיות מאותחל רק ע\"י משתמשים שמחוברים לאחד " +"מהמסופים הווירטואליים." + --- xorg-server-1.19.6.orig/debian/po/hr.po +++ xorg-server-1.19.6/debian/po/hr.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: Debian installer HR\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-09-06 19:15+0200\n" +"Last-Translator: Josip Rodin \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Samo root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Samo konzolni korisnici" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Bilo tko" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Korisnici koji smiju pokrenuti X server:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Zbog injenice to X server radi s privilegijama administratorskog " +"korisnika, vjerojatno nije pametno dopustiti svakom korisniku da ga pokree, " +"iz sigurnosnih razloga. S druge strane, jo manje je pametno pokretati X " +"klijentske programe ope namjene kao root, a to se moe dogoditi ako samo " +"root korisniku dopustite pokretanje X servera. Dobar kompromis je dozvoliti " +"pokretanje X servera samo korisnicima koji su ulogirani na jednu od " +"virtualnih konzola." + --- xorg-server-1.19.6.orig/debian/po/hu.po +++ xorg-server-1.19.6/debian/po/hu.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-14 08:43+0100\n" +"Last-Translator: SZERVÁC Attila \n" +"Language-Team: hu\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Country: HUNGARY\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Csak rendszergazda" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Csak konzol felhasználók" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Bárki" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Az X kiszolgáló indítására jogosult felhasználók:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Mivel az X kiszolgáló rendszergazda kiváltságokkal fut, nem biztonságos " +"bármilyen felhasználónak engedélyezni a futtatását, de szintén nem " +"biztonságos általános-célú X kliens programokat rendszergazdaként futtatni, " +"pedig ez történik, ha csak a rendszergazdának van joga az X kiszolgáló " +"indításához. Megfelelő középút az X kiszolgáló indítását csak konzolról " +"bejelentkezett felhasználóknak engedélyezni." + --- xorg-server-1.19.6.orig/debian/po/id.po +++ xorg-server-1.19.6/debian/po/id.po @@ -0,0 +1,74 @@ +# translation of xorg_po-id.po to Bahasa Indonesia +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Arief S Fitrianto , 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg_po-id\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-11 14:33+0700\n" +"Last-Translator: Arief S Fitrianto \n" +"Language-Team: Bahasa Indonesia \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplural=1, plural>1\n" +"X-Poedit-Language: Indonesian\n" +"X-Poedit-Country: INDONESIA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Hanya Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Hanya pengguna Konsol" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Siapa saja" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Pengguna yang boleh menjalankan server X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Oleh karena server X berjalan dengan kewenangan superuser, sangat riskan " +"bila membolehkan siapa saja menjalankannya. Di sisi lain, teramat sangat " +"riskan menjalankan program client X sebagai root, yang akan terjadi bila " +"hanya root yang boleh menjalankan server X. Kompromi yang baik adalah " +"menjalankan server X hanya oleh pengguna yang masuk ke salah satu konsol " +"virtual." + --- xorg-server-1.19.6.orig/debian/po/it.po +++ xorg-server-1.19.6/debian/po/it.po @@ -0,0 +1,85 @@ +# debconf templates for xorg-x11 package +# Italian translation +# +# $Id: it.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Matteo Dell'Amico, 2002 +# Emanuele Aina, 2002 +# Luca Monducci, 2004 +# Danilo Piazzalunga, 2004-2005 +# Stefano Canepa, 2006, 2007 +# Milo Casagrande, 2008 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg-x11 6.8.2.dfsg.1-10\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-17 22:22+0200\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: debian-l10n-italian \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Solo root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Solo gli utenti della console" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Chiunque" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Utenti con il permesso di avviare il server X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Dato che il server X viene eseguito con i privilegi di super utente, può " +"essere poco consigliabile, per ragioni di sicurezza, permettere a qualsiasi " +"utente di eseguirlo. D'altra parte, se solo a root fosse permesso di avviare " +"il server X, sarebbe necessario eseguire come root i programmi client X (e " +"ciò sarebbe ancora peggio). Un buon compromesso consiste nel permettere che " +"il server X possa essere avviato solo dagli utenti collegati a una delle " +"console virtuali." + --- xorg-server-1.19.6.orig/debian/po/ja.po +++ xorg-server-1.19.6/debian/po/ja.po @@ -0,0 +1,81 @@ +# debconf templates for xorg-x11 package +# Japanese translation +# +# $Id: ja.po 1763M 2004-10-11 07:13:17Z (local) $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# ISHIKAWA Mutsumi, 2001, 2005, 2006 +# Tomohiro KUBOTA, 2001, 2002 +# Kenshi Muto, 2001-2006 +# Takeo Nakano, 2001, 2003, 2005 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg 7.3\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-15 07:33+0900\n" +"Last-Translator: Kenshi Muto \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Root のみ" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "コンソールユーザのみ" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "だれでも" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X サーバの起動を許可するユーザ:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X サーバはスーパーユーザ権限で動作するため、任意のユーザからの実行を許可する" +"のはセキュリティ上好ましくないでしょう。一方 X サーバの起動許可を root に限る" +"と、一般的な用途の X クライアントプログラムを実行する場合でも root が必要とな" +"り、これも好ましくありません。よりよい妥協点は、 仮想コンソールのうちの 1 つ" +"にログインしたユーザにのみ X サーバの起動を許可することでしょう。" + --- xorg-server-1.19.6.orig/debian/po/kk.po +++ xorg-server-1.19.6/debian/po/kk.po @@ -0,0 +1,55 @@ +# Dauren Sarsenov , 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2009-03-24 14:50+0600\n" +"Last-Translator: Dauren Sarsenov \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Root қана" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Консольдік пайдаланушылар ғана" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Әркім" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X серверін бастай алатындар:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X Сервер суперпайдаланушы құқықтарымен жұмыс істейтіндіктен, жүйені әркім " +"жүктей алмауы керек. Сонымен қатар жалпы мақсаттардағы X клиент " +"бағдарламасын root атынан жүктеуге де болмайды. Сондықтан X серверін виртуал " +"консольдің біреуіне кірген пайдаланушылар ғана бастай алуы керек." + --- xorg-server-1.19.6.orig/debian/po/km.po +++ xorg-server-1.19.6/debian/po/km.po @@ -0,0 +1,70 @@ +# translation of km.po to +# translation of xserver-xorg_debian_po_km.po to +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Khoem Sokhem , 2006. +# auk piseth , 2006. +msgid "" +msgstr "" +"Project-Id-Version: km\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2006-10-03 08:13+0700\n" +"Last-Translator: Khoem Sokhem \n" +"Language-Team: KhmerOS \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "បាន​តែ Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "បាន​តែ​អ្នក​ប្រើ​កុងសូល​" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "ផ្សេងទៀត" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "អ្នក​ប្រើ​បាន​អនុញ្ញាត​ឲ្យ​ចាប់​ផ្តើម​ម៉ាស៊ីន​បម្រើ​ X ៖" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"ដោយសារ​ម៉ាស៊ីន​បម្រើ​ X រត់ជាមួយ​​សិទ្ធ​អ្នក​ប្រើ​ជាន់​ខ្ពស់​, ​ចំពោះ​មូលហេតុ​ដែលមាន​សុវត្ថិភាព វា​ប្រហែល​ជា​​មិន​" +"អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ណាមួយ​​ចាប់​ផ្តើម​វា​ទេ ​។ មួយ​វិញ​ទៀត​ គោលបំណង​ទូទៅ​នៃ​កម្មវិធី​ម៉ាស៊ីន​ភ្ញៀវ​ X មាន​សិទ្ធ​ជា " +"root ដែល​នឹង​មាន​អ្វីអាចនឹង​កើត​ឡើង​ ប្រសិនបើ មានតែ​ root ដែល​អាច​អនុញ្ញាត​ឲ្យ​ចាប់ផ្តើ​ម​ម៉ាស៊ីន​បម្រើ​ X " +"បាននោះ ។ ការព្រមព្រៀង​​ល្អ​បានអនុញ្ញាត​ឲ្យ​ម៉ាស៊ីន​បម្រើ X ត្រូវបាន​ចាប់​ផ្តើម​តាម​​អ្នក​ប្រើ​ដែល​បាន​ចូល​ក្នុង​" +"កុងសូល​និម្មិត​មួយ​ ។" + --- xorg-server-1.19.6.orig/debian/po/ko.po +++ xorg-server-1.19.6/debian/po/ko.po @@ -0,0 +1,58 @@ +# Sunjae Park , 2006. +# Changwoo Ryu , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-07-20 12:34+0900\n" +"Last-Translator: Changwoo Ryu \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "루트 사용자만" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "콘솔 사용자만" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "아무나" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X 서버를 띄울 권한이 있는 사용자:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X 서버는 수퍼유저 권한을 가진 채로 실행되기 때문에 보안상 아무 사용자나 X 서" +"버를 실행시킬 수 있도록 하는 것이 안 좋을 수 있습니다. 반면, 루트 사용자만 X " +"서버를 실행시킬 수 있을 경우 일반적인 X 클라이언트 프로그램도 루트 사용자로 " +"실행되기 때문에 더 안 좋을 수 있습니다. 버추얼 콘솔로 로그인된 사용자만 X 서" +"버를 실행시킬 수 있도록 하는 것이 적당할 수 있습니다." + --- xorg-server-1.19.6.orig/debian/po/ku.po +++ xorg-server-1.19.6/debian/po/ku.po @@ -0,0 +1,56 @@ +# translation of xorg-ku.po to Kurdish +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Erdal Ronahi , 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg-ku\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-04-23 15:49+0200\n" +"Last-Translator: Erdal Ronahi \n" +"Language-Team: Kurdish \n" +"Language: ku\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural= n != 1;\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Tenê Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Tenê Bikarhênerên Konsoleyê" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Her Kes" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Bikarhênerên bi destûra destpêkirina pêşkêşkara X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" + --- xorg-server-1.19.6.orig/debian/po/lt.po +++ xorg-server-1.19.6/debian/po/lt.po @@ -0,0 +1,71 @@ +# translation of lt.po to Lithuanian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Gintautas Miliauskas , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: lt\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-08-31 23:09+0300\n" +"Last-Translator: Gintautas Miliauskas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Tik administratorius" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Tik konsolės naudotojai" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Visi" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Naudotojai, kuriems leidžiama įkrauti X serverį:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Kadangi X serveris veikia administratoriaus teisėmis, saugumo sumetimais " +"gali būti neprotinga leisti jį įkrauti bet kuriam naudotojui. Iš kitos " +"pusės, dar blogiau yra vykdyti standartines X programas administratoriaus " +"teisėmis (tai gali atsitikti, jei tik administratoriui leidžiama įkrauti X " +"serverį). Neblogas kompromisas yra leisti įkrauti X serverį tik tiems " +"naudotojams, kurie prisijungę prie vienos iš virtualių konsolių." + --- xorg-server-1.19.6.orig/debian/po/ml.po +++ xorg-server-1.19.6/debian/po/ml.po @@ -0,0 +1,70 @@ +# xserver-xorg translation to Malayalam +# Copyright (c) 2006 xorg package's copyright holder +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Praveen|പ്രവീണ്‍ A|എ , 2006. +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg_ml\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-18 17:59+0530\n" +"Last-Translator: Praveen|പ്രവീണ്‍ A|എ \n" +"Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "റൂട്ട് മാത്രം" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "കണ്‍സോള്‍ ഉപയോക്താക്കള്‍ മാത്രം" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "ആരും" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "എക്സ് സേവകന്‍ തുടങ്ങാന്‍ അനുമതിയുള്ള ഉപയോക്താക്കള്‍:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"എക്സ് സേവകന്‍ സൂപര്‍ ഉപയോക്താവിന്റെ പദവികളോടെയാണ് ഓടുന്നത് എന്നതിനാല്‍ സുരക്ഷാ കാരണങ്ങളാല്‍ ഏത് " +"ഉപയോക്താവിനും ഇത് തുടങ്ങാന്‍ അനുമതി നല്കുന്നത് ബുദ്ധിശുന്യമായേക്കാം. എന്നാല്‍ പൊതുവായുള്ള-" +"കാര്യങ്ങള്‍ക്കുള്ള എക്സ് ക്ലയന്റ് പ്രോഗ്രാമുകള്‍ റൂട്ടായി ഓടിക്കുന്നത് ഇതിലധികം ബുദ്ധിശുന്യമാണ്, അതാണ് " +"റൂട്ടിന് മാത്രം എക്സ് സേവകന്‍ തുടങ്ങാന്‍ അനുമതി നല്കിയാല്‍ സംഭവിക്കാന്‍ പോകുന്നത്. ഒരു നല്ല വിട്ടുവീഴ്ച " +"വിര്‍ച്വല്‍ കണ്‍സോളിലേതെങ്കിലുമൊന്നില്‍ ലോഗിന്‍ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കള്‍ക്ക് മാത്രം എക്സ് സേവകന്‍ " +"തുടങ്ങാന്‍ അനുമതി നല്കുക എന്നത്." + --- xorg-server-1.19.6.orig/debian/po/mr.po +++ xorg-server-1.19.6/debian/po/mr.po @@ -0,0 +1,60 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2006-08-14 11:05+0200\n" +"Last-Translator: Priti Patil \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "फक्त मूल" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "फक्त कन्सोल वापरकर्ते" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "कोणीही" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "वापरकर्त्यांना एक्स परिसेवक सुरू करता येईल:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"एक्स परिसेवक सुपरयुझरचे हक्क असणारा कोणीही सुरू करू शकत असल्याने, सर्वच वापरकर्त्यांना तो " +"सुरू करण्याची अनुमती देणे सुरक्षिततेच्या दृष्टीकोनातून उचित होणार नाही. तथापी, सामान्य " +"वापराचे एक्स अशील प्रोग्राम मूल असताना चालवणे अधिकच अनुचित होईल, जे एक्स परिसेवक सुरू " +"करण्याची परवानगी फक्त मूल लाच दिल्यास घडू शकेल. अाभासी कन्सोलांपैकी एकावर सत्रारंभ " +"केलेल्या वापरकर्त्यांनाच एक्स परिसेवक सुरू करण्याची अनुमती देणे ही यातील चांगली तडजोड ठरू " +"शकेल." + --- xorg-server-1.19.6.orig/debian/po/nb.po +++ xorg-server-1.19.6/debian/po/nb.po @@ -0,0 +1,63 @@ +# translation of xserver-xorg_debian.po to Norwegian Bokmål +# +# This file is distributed under the same license as the package. +# +# Bjørn Steensrud , 2006. +# Hans Fredrik Nordhaug , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg_debian_nb\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-08-31 22:50+0200\n" +"Last-Translator: Hans Fredrik Nordhaug \n" +"Language-Team: Norwegian Bokmål \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Bare root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Bare konsoll-brukere" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Alle" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Brukere som har lov til å starte X-tjeneren:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Fordi X-tjeneren kjører med priviliegier som superbruker, er det kanskje " +"uklokt av sikkerhetsgrunner å la alle starte den. På den annen side er det " +"enda mer uklokt å kjøre alminnelige X klientprogrammer som root, og det kan " +"skje dersom bare root får lov til å starte X-tjeneren. En god middelvei er å " +"tillate bare brukere som er logget inn på et av de virtuelle konsollene å " +"starte X-tjeneren." + --- xorg-server-1.19.6.orig/debian/po/ne.po +++ xorg-server-1.19.6/debian/po/ne.po @@ -0,0 +1,63 @@ +# translation of ne.po to Nepali +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# +# Mahesh subedi , 2006. +# Shiva Prasad Pokharel , 2006. +# Shiva Pokharel , 2007. +msgid "" +msgstr "" +"Project-Id-Version: ne\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2007-04-06 05:41+0545\n" +"Last-Translator: Shiva Pokharel \n" +"Language-Team: Nepali \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; nplural(n!=1)\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "मूल मात्र" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "कन्सोल प्रयोगकर्ता मात्र" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "कोहि" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "प्रयोगकर्तालाई एक्स सर्भर सुरू गर्न अनुमति दिइयो:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"किनभने एक्स सर्भर सुपर प्रयोगकर्ताको बिशेषाधिकारमा चल्दछ, यदि यसलाई कुनै प्रयोगकर्ताले सुरू " +"गर्न अनुमति दिन नचाहेमा, सुरक्षाको कारणले । अर्को तर्फ, अझ यो एक्स ग्राहक कार्यक्रमको " +"रुपमा साधारण-उद्देश्य चलाउन अनिच्छुक छ, यदि मूललाई मात्र एक्स सर्भर सुरू गर्न अनुमति दिइयो " +"भने के होला जुन चाहि । एउटा राम्रो सम्झौता चाहि एक्स सर्भर केबल अवास्तविक कन्सोलहरुमा " +"एक प्रयोगकर्ता लगइन द्धारा सुरू हुने हुन्छ ।" + --- xorg-server-1.19.6.orig/debian/po/nl.po +++ xorg-server-1.19.6/debian/po/nl.po @@ -0,0 +1,82 @@ +# debconf templates for xorg-x11 package +# Dutch translation +# +# $Id$ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Wouter Verhelst, 2002 +# Bart Cornelis, 2003 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-16 10:58+0100\n" +"Last-Translator: Bart Cornelis \n" +"Language-Team: debian-l10n-dutch \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Dutch\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Enkel root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Enkel console-gebruikers" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Iedereen" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Gebruikers die de X-server mogen starten:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Omdat de X-server met de rechten van de supergebruiker draait is het, voor " +"beveiligingsredenen, dikwijls onverstandig om deze te laten opstarten door " +"eender welke gebruiker. Daar staat tegenover dat het nog onverstandiger is " +"om de algemene grafische programma's te gebruiken als root, wat mogelijk het " +"gevolg is wanneer enkel de root gebruiker de X-server kan opstarten. Een " +"goed compromis is om de X-server alleen te laten opstarten door gebruikers " +"die aangemeld zijn via één van de virtuele consoles." + --- xorg-server-1.19.6.orig/debian/po/nn.po +++ xorg-server-1.19.6/debian/po/nn.po @@ -0,0 +1,70 @@ +# translation of xserver-xorg_nn.po to Norwegian nynorsk +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Håvard Korsvoll , 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg_nn\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2007-03-11 10:07+0100\n" +"Last-Translator: Håvard Korsvoll \n" +"Language-Team: Norwegian nynorsk \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Berre root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Berre konsollbrukarar" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Alle" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Brukarar som har lov til å starte X-tenaren:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Sidan X-tenaren køyrer med priviliegiar som superbrukar, er det kanskje " +"uklokt av tryggingsgrunner å la alle starte han. På den andre sida er det " +"endå meir uklokt å køyre alminnelege X klientprogram som root, og det kan " +"skje dersom berre root får lov til å starte X-tenaren. Ein god middelveg er " +"å tillate berre brukarar som er logga inn på eit av dei virituelle konsolla " +"å starte X-tenaren." + --- xorg-server-1.19.6.orig/debian/po/pl.po +++ xorg-server-1.19.6/debian/po/pl.po @@ -0,0 +1,66 @@ +# debconf templates for xorg-x11 package +# +# $Id: xorg.po,v 1.26 2006/02/15 09:47:09 arteek Exp $ +# +# Copyright: +# 2006 Bartosz Feski +# 2006 Artur Szymaski +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +msgid "" +msgstr "" +"Project-Id-Version: 6.9.0.dfsg.1-2+SVN\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-08-31 22:49+0200\n" +"Last-Translator: Bartosz Fenski \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Tylko root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Tylko uytkownicy konsoli" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Kady uytkownik" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Uytkownicy mogcy uruchamia serwer X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Poniewa serwer X dziaa z przywilejami speruytkownika, ze wzgldu na " +"bezpieczestwo systemu nierozsdnie jest dawa prawa jego uruchamiania " +"kademu uytkownikowi. Z drugiej za strony, jeszcze mniej rozsdnie jest " +"uruchamianie programw klienckich X oglnego przeznaczenia jako uytkownik " +"root, co moe si zdarzy jeli tylko root bdzie mg uruchomi serwer X. " +"Dobrym kompromisem jest zezwolenie na uruchamianie serwera X tylko " +"uytkownikom zalogowanym na jednej z wirtualnych konsol (uytkownik konsoli)." + --- xorg-server-1.19.6.orig/debian/po/pothead.in +++ xorg-server-1.19.6/debian/po/pothead.in @@ -0,0 +1,30 @@ +# debconf templates for xfree86 package +# +# $Id: pothead.in 1695 2004-07-29 07:22:25Z branden $ +# +# Copyright: +# Branden Robinson, 2000--2004 +# +# This file is distributed under the same license as the xfree86 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf is available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: SOURCE_VERSION\n" +"Report-Msgid-Bugs-To: debian-x@lists.debian.org\n" +"POT-Creation-Date: DATE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" --- xorg-server-1.19.6.orig/debian/po/pt.po +++ xorg-server-1.19.6/debian/po/pt.po @@ -0,0 +1,67 @@ +# debconf templates for xorg-x11 package +# Portuguese translation +# +# $Id: pt.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyright: +# Branden Robinson, 2000-2004 +# Eduardo Silva , 2005 +# Miguel Figueiredo , 2006-2008 +# +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg_debian_po\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 21:23+0100\n" +"Last-Translator: Miguel Figueiredo \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Apenas Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Apenas Utilizadores de Consola" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Todos" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Utilizadores autorizados a iniciar o servidor X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Como o servidor X corre com privilégios de super-utilizador, por razões de " +"segurança, pode ser imprudente permitir que qualquer utilizador o inicie. " +"Por outro lado, é ainda mais imprudente correr programas clientes de X de " +"carácter geral como root, que é o que poderá acontecer se apenas o root " +"tiver permissões para iniciar o servidor X. Um bom compromisso é permitir " +"que o servidor X seja iniciado apenas por utilizadores que tenham iniciado " +"uma sessão numa das consolas virtuais." + --- xorg-server-1.19.6.orig/debian/po/pt_BR.po +++ xorg-server-1.19.6/debian/po/pt_BR.po @@ -0,0 +1,85 @@ +# debconf templates for xorg-x11 package +# Portuguese (Brazil) translation +# +# $Id: pt_BR.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Gustavo Noronha Silva, 2001 +# Henrique de Moraes Holschuh, 2001 +# André Luís Lopes , 2001-2005 +# Felipe Augusto van de Wiel (faw) , 2007-2008. +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg-x11\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-14 21:44-0300\n" +"Last-Translator: Felipe Augusto van de Wiel (faw) \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"pt_BR utf-8\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Somente Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Somente Usuários de Console" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Qualquer Um" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Usuários que podem iniciar o servidor X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Devido ao servidor X ser executado com privilégios de superusuário, pode não " +"ser muito sábio permitir que qualquer usuário o inicie, por questões de " +"segurança. Por outro lado, é menos sábio ainda executar programas clientes X " +"de propósito geral como root, que é o que pode acontecer se somente o root " +"tiver permissão de iniciar o servidor X. Um bom compromisso é permitir o " +"servidor X ser iniciado somente por usuários logados em um dos consoles " +"virtuais." + --- xorg-server-1.19.6.orig/debian/po/ro.po +++ xorg-server-1.19.6/debian/po/ro.po @@ -0,0 +1,84 @@ +# translation of ro.po to Română +# Romanian translation +# debconf templates for xorg-x11 package +# +# $Id: pothead.in 189 2005-06-11 00:04:27Z branden $ +# +# Copyright: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf is available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000--2004. +# Ruset Zeno , 2005. +# Eddy Petrișor , 2005,2006,2008. +msgid "" +msgstr "" +"Project-Id-Version: ro\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-17 14:03+0300\n" +"Last-Translator: Eddy Petrișor \n" +"Language-Team: Română \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3;plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1))\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Doar root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Doar utilizatorii de consolă" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Oricine" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Utilizatori cărora le este permis să pornească serverul X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Deoarece serverul X rulează cu privilegii de superutilizator, nu este " +"probabil înțelept să i se permită oricărui utilizator să-l pornească, din " +"motive de securitate. Pe de altă parte, este și mai puțin înțelept să se " +"ruleze clienții X de uz general ca și root, lucru probabil dacă se permite " +"doar ca root să pornească serverul X. Un bun compromis este permiterea " +"pornirii pentru utilizatorii autentificați la una din consolele virtuale." + --- xorg-server-1.19.6.orig/debian/po/ru.po +++ xorg-server-1.19.6/debian/po/ru.po @@ -0,0 +1,87 @@ +# translation of xorg-debconf-ru.po to Russian +# debconf templates for xorg-x11 package +# Russian translation +# +# $Id: ru.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000-2004. +# Ilgiz Kalmetev, 2002, 2003. +# Serge Winitzki, 2003. +# Yuri Kozlov , 2005, 2006. +# Sergey Alyoshin , 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg-1:7.1.0-15_debian_po_ru\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-12 22:32+0400\n" +"Last-Translator: Sergey Alyoshin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Только суперпользователь" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Только пользователи из консоли" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Кто угодно" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Пользователи, которым разрешено запускать X сервер:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Поскольку X сервер запускается с привилегиями суперпользователя, то из " +"соображений безопасности, вероятно, не очень хорошо позволять любым " +"пользователям запускать его. С другой стороны, ещё хуже запускать клиентские " +"X-программы общего назначения от имени суперпользователя; это может " +"случиться, если право запускать сервер X имеет только суперпользователь. " +"Наилучшее решение заключается в том, чтобы позволять запускать сервер X " +"только пользователям, зарегистрированным на одной из виртуальных консолей." + --- xorg-server-1.19.6.orig/debian/po/sk.po +++ xorg-server-1.19.6/debian/po/sk.po @@ -0,0 +1,65 @@ +# debconf templates for xorg-x11 package +# Slovak translation +# $Id: sk.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Miroslav Kure , 2004. +# Peter Mann , 2005, 2008. +# Ivan Masár , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg-x11\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2009-04-10 12:53+0100\n" +"Last-Translator: Ivan Masár \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Len root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Len konzoloví používatelia" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Ktokoľvek" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Používatelia,ktorí môžu spustiť X server:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Pretože X server je spustený s právami superpoužívateľa, nie je z hľadiska " +"bezpečnosti veľmi rozumné dať možnosť jeho spustenia používateľom. Na druhej " +"strane ešte horšie je spustenie všeobecného X klienta ako používateľ root, " +"čo sa stane vtedy, ak povolíte spustenie X servera iba používateľovi root. " +"Rozumným kompromisom je teda povolenie spustenia X servera iba používateľom " +"prihláseným na virtuálnej konzole." + --- xorg-server-1.19.6.orig/debian/po/sq.po +++ xorg-server-1.19.6/debian/po/sq.po @@ -0,0 +1,66 @@ +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# Developers do not need to manually edit POT or PO files. +# +# +msgid "" +msgstr "" +"Project-Id-Version: xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2007-04-09 23:45+0200\n" +"Last-Translator: Elian Myftiu \n" +"Language-Team: Albanian\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Vetëm Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Vetëm Përdorues Konsoli" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Çdokush" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Përdorues të lejuar të nisin shërbyesin X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Meqë shërbyesi X xhiron me pronësi administruesi, mund të jetë mendjelehtësi " +"të lejosh çdo përdorues ta nisë atë, për arsye sigurie. Nga ana tjetër, " +"është ende më mendjelehtësi të xhirosh programe klientë nën X si root, gjë " +"që ndodh nëse vetëm root lejohet të nisë shërbyesin X. Një marrëveshje e " +"mirë është të lejosh shërbyesin X të niset vetëm nga përdorues të kyçur në " +"një nga konsolet virtuale." + --- xorg-server-1.19.6.orig/debian/po/sr.po +++ xorg-server-1.19.6/debian/po/sr.po @@ -0,0 +1,60 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2011 +# This file is distributed under the same license as the xorg package. +# Zlatan Todoric , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Zlatan Todoric \n" +"Language-Team: LANGUAGE \n" +"Language: Serbian cyrillic\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Само главни корисник" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Само за кориснике конзоле" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Свако" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Корисници којима је дозвољено покретање Х сервера:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Због покретања Х сервера са суперкорисничким привилегијам, није " +"препоручљиводозволити корисницима да га покрену, из сигурносних разлога. С " +"друге стране, јошмање је препоручљиво покренути Х клијента опште намјене као " +"главни корисник, што се може десити ако је само главном кориснику дозвољено " +"да покрене Х сервер.Компромис би био дозволити покретање Х сервера од стране " +"корисника који су самоулоговани на једну од виртуелних конзола." --- xorg-server-1.19.6.orig/debian/po/sr@latin.po +++ xorg-server-1.19.6/debian/po/sr@latin.po @@ -0,0 +1,61 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2011 +# This file is distributed under the same license as the PACKAGE package. +# Zlatan Todoric , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Zlatan Todoric \n" +"Language-Team: LANGUAGE \n" +"Language: Serbian latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Samo glavni korisnik" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Samo za korisnike konzole" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Svako" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Korisnici kojima je dozvoljeno pokretanje X servera:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Zbog pokretanja X servera sa superkorisničkim privilegijam, nije " +"preporučljivodozvoliti korisnicima da ga pokrenu, iz sigurnosnih razloga. S " +"druge strane, jošmanje je preporučljivo pokrenuti X klijenta opšte namjene " +"kao glavni korisnik, štose može desiti ako je samo glavnom korisniku " +"dozvoljeno da pokrene X server.Kompromis bi bio dozvoliti pokretanje X " +"servera od strane korisnika koji su samoulogovani na jednu od virtuelnih " +"konzola." --- xorg-server-1.19.6.orig/debian/po/sv.po +++ xorg-server-1.19.6/debian/po/sv.po @@ -0,0 +1,88 @@ +# translation of xorg_po_sv.po to swedish +# debconf templates for xorg-x11 package +# Swedish translation +# +# $Id: sv.po 1042 2006-01-09 07:55:08Z ender $ +# +# Copyrights: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000-2004. +# Andr Dahlqvist, 2001. +# Peter Toneby, 2002. +# Mikael Hedin, 2002. +# Daniel Nylander, 2006. +# Martin Bagge , 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg_po_sv\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-29 15:56+0200\n" +"Last-Translator: Martin Bagge \n" +"Language-Team: swedish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-Country: SWEDEN\n" +"X-Poedit-SourceCharset: iso-8859-1\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Endast root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Endast konsollanvndare" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Alla" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Anvndare som r behriga att starta X-servern:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"D X-servern krs med superanvndarens rttigheter kan det vara otillbrligt " +"att, ur skerhetssynpunkt, lta vilken anvndare som helst starta den. " +"andra sidan r det nnu vrre att kra de flesta X-program som root, vilket " +"r det som kan hnda om endast root tillts starta X-servern. A bra " +"kompromiss r att endast tillta anvndare som r inloggade p en av de " +"virtuella konsollerna." + --- xorg-server-1.19.6.orig/debian/po/ta.po +++ xorg-server-1.19.6/debian/po/ta.po @@ -0,0 +1,70 @@ +# translation of ta.po to TAMIL +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# drtvasudevan , 2006, 2007. +# Dr.T.Vasudevan , 2007. +# Dr.T.Vasudevan , 2008. +msgid "" +msgstr "" +"Project-Id-Version: ta\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2007-04-06 15:48+0530\n" +"Last-Translator: Dr.T.Vasudevan \n" +"Language-Team: TAMIL \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "மூலம் (ரூட்) மட்டும்" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "முனைய பயனாளர்களுக்கு மட்டும்" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "எல்லாருக்கும்" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "எக்ஸ் சேவையகத்தை துவக்க அனுமதியுள்ள பயனாளர்கள்:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"எக்ஸ் சேவையகம் சூப்பர் பயனர் அனுமதிகளுடன் இயங்குவதால் பாதுகாப்பு கருதி எல்லா பயனர்களையும் " +"அதை இயக்க அனுமதிப்பது உசிதமில்லை. அதே சமயம் பொதுவான எக்ஸ் கிளையன் நிரல்களை ரூட்டாக " +"இயக்குவது அதை விட உசிதமில்லாதது. ரூட்டை மட்டும் எக்ஸ் சேவையகத்தை இயக்க அனுமதித்தால் " +"அப்படித்தான் நடக்கும். ஆகவே ஒரு நல்ல வழி பயனர்களால் துவக்கப் பட்ட மெய்நிகர் முனையங்களில் " +"ஒன்றில் எக்ஸ் சேவையகத்தை துவக்க அனுமதிப்பதுதான்." + --- xorg-server-1.19.6.orig/debian/po/templates.pot +++ xorg-server-1.19.6/debian/po/templates.pot @@ -0,0 +1,53 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" --- xorg-server-1.19.6.orig/debian/po/th.po +++ xorg-server-1.19.6/debian/po/th.po @@ -0,0 +1,59 @@ +# Thai translation of xserver-xorg. +# Copyright (C) 2006-2008 Software in the Public Interest, Inc. +# This file is distributed under the same license as the xserver-xorg package. +# Theppitak Karoonboonyanan , 2006-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xserver-xorg\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 12:09+0700\n" +"Last-Translator: Theppitak Karoonboonyanan \n" +"Language-Team: Thai \n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "root เท่านั้น" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "ผู้ใช้คอนโซลเท่านั้น" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "ใครก็ได้" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "ผู้ใช้ที่อนุญาตให้เรียกเซิร์ฟเวอร์เอ็กซ์ขึ้นมาทำงานได้:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"เนื่องจากเซิร์ฟเวอร์เอ็กซ์ทำงานด้วยอภิสิทธิ์ผู้ดูแลระบบ จึงอาจไม่ฉลาดนักที่จะให้ใครก็ได้เรียกใช้งาน " +"ด้วยเหตุผลเรื่องการรักษาความปลอดภัย แต่ในทางกลับกัน อาจจะไม่ฉลาดยิ่งกว่า " +"ที่จะเรียกโปรแกรมไคลเอนต์ของเอ็กซ์วินโดว์ด้วยผู้ใช้ root ซึ่งเป็นสิ่งที่อาจเกิดขึ้นถ้าอนุญาตให้ root " +"เท่านั้นที่เรียกเซิร์ฟเวอร์เอ็กซ์ได้ การประนีประนอมที่ดีที่สุด " +"คืออนุญาตให้เฉพาะผู้ใช้ที่เข้าระบบที่คอนโซลเท่านั้นเรียกเซิร์ฟเวอร์เอ็กซ์ได้" + --- xorg-server-1.19.6.orig/debian/po/tr.po +++ xorg-server-1.19.6/debian/po/tr.po @@ -0,0 +1,83 @@ +# translation of xorg-tr.po to Turkish +# debconf templates for xorg-x11 package +# Turkish translation +# +# $Id: tr.po 1061 2006-01-11 10:19:43Z ender $ +# +# Copyrights: +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# Branden Robinson, 2000-2004. +# Osman Yüksel , 2004, 2006. +# Recai Oktaş , 2004. +# Mert Dirik , 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg-x11\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-15 18:21+0200\n" +"Last-Translator: Mert Dirik \n" +"Language-Team: Debian L10n Turkish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"X-Poedit-Language: Turkish\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Sadece Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Sadece Konsol Kullanıcıları" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Herhangi Birisi" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "X sunucuyu çalıştırabilecek kullanıcılar:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"X sunucusu süper-kullanıcı haklarıyla çalıştırıldığından herhangi bir " +"kullanıcının sunucuyu başlatmasına izin vermek güvenlik gerekçeleriyle " +"tavsiye edilmez. Öte yandan X uygulamalarını root olarak çalıştırmak daha " +"da yanlış olacaktır. Makul bir seçim, X sunucusunu sadece sanal konsollara " +"giriş yapmış kullanıcılar tarafından kullanılacak şekilde ayarlamaktır." + --- xorg-server-1.19.6.orig/debian/po/vi.po +++ xorg-server-1.19.6/debian/po/vi.po @@ -0,0 +1,62 @@ +# Vietnamese translation for Xorg. +# Copyright © Branden Robinson, 2000-2004 +# Clytie Siddall , 2005-2008. +# +msgid "" +msgstr "" +"Project-Id-Version: xorg 1:7.3+12\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 18:47+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.7b3\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Chỉ người chủ" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Chỉ người dùng bàn giáo tiếp" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Bất kỳ ai" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Người dùng có quyền khởi chạy trình phục vụ X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Vì trình phục vụ X chạy với quyền của người siêu dùng (superuser), có thể " +"không phải là ý kiến tốt nếu bạn cho phép bất cứ người dùng nào khởi chạy " +"nó, vì lý do bảo mật. Mặt khác, cũng là nguy hiểm khi chạy chương trình " +"khách X thường dụng dưới người chủ — kết quả nếu chỉ người chủ có quyền khởi " +"chạy trình phục vụ X. Một sự nhân nhượng hợp lý là cho phép trình phục vụ X " +"được khởi chạy chỉ bởi người dùng đã đăng nhập vào một của những bàn giao " +"tiếp ảo." + --- xorg-server-1.19.6.orig/debian/po/wo.po +++ xorg-server-1.19.6/debian/po/wo.po @@ -0,0 +1,61 @@ +# translation of xorg_po_wo.po to Wolof +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# +# Mouhamadou Mamoune Mbacke , 2006, 2008. +msgid "" +msgstr "" +"Project-Id-Version: xorg_po_wo\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-09-30 13:25+0200\n" +"Last-Translator: Mouhamadou Mamoune Mbacke \n" +"Language-Team: Wolof \n" +"Language: wo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "Root Rekk" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "Jëfandikukat yu Konsol Rekk" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "Kumu mana doon" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "Jëfandikukat yiñu may ñu tambule serwóor X:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"Binga xamee ne serwóor X dafay dox ak sañsañu superuser, doonul lu xellu di " +"may ñéppu ñukoy mana tambule, ngir kaaraangey sistem bi. Ba tay doonul yit " +"lu xellu rugge root ba noppi di doxal prograam kiliyaŋ yu X, ta loolu mooy " +"am bu fekkee dangaa def ne root rekk mooy mana tambule serwóor X. Jubna lool " +"nak nga def ne serwóor X kikoy mana tambule day doon ku duggee ci benn ci " +"konsol wirtuwel yi." + --- xorg-server-1.19.6.orig/debian/po/zh_CN.po +++ xorg-server-1.19.6/debian/po/zh_CN.po @@ -0,0 +1,81 @@ +# debconf templates for xorg-x11 package +# Simplified Chinese translation +# +# $Id: zh_CN.po 490 2005-08-03 09:59:07Z ender $ +# +# Copyrights: +# Branden Robinson, 2000-2004 +# Kov Chai , 2008 +# Carlos Z.F. Liu , 2005, 2006 +# Haifeng Chen , 2006 +# Ming Hua , 2005 +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: 6.8.2.dfsg.1-4+SVN\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2008-06-09 13:20+0800\n" +"Last-Translator: Kov Chai \n" +"Language-Team: Debian Chinese [GB] \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "仅根(root)用户" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "仅控制台(console)用户" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "任何用户" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "允许启动 X 服务器的用户:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"因为 X 服务器是以超级用户权限运行,所以从安全角度来说,允许任何用户启动它不是" +"一个明智的选择。在另一方面,以根(root)用户身份运行一般用途的 X 客户端程序则是" +"更加愚蠢的做法,这在仅允许根(root)用户启动 X 服务器时可能会发生。较好的解决办" +"法是允许那些能登录到虚拟控制台的用户启动 X 服务器。" + --- xorg-server-1.19.6.orig/debian/po/zh_TW.po +++ xorg-server-1.19.6/debian/po/zh_TW.po @@ -0,0 +1,74 @@ +# debconf templates for xorg-x11 package +# Traditional Chinese translation +# +# This file is distributed under the same license as the xorg-x11 package. +# Please see debian/copyright. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: 6.8.2.dfsg.1-4+SVN\n" +"Report-Msgid-Bugs-To: xorg@packages.debian.org\n" +"POT-Creation-Date: 2009-06-02 20:32+0200\n" +"PO-Revision-Date: 2006-09-20 22:54+0800\n" +"Last-Translator: Tetralet \n" +"Language-Team: Debian-user in Chinese [Big5] \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Root Only" +msgstr "僅限 Root" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Console Users Only" +msgstr "僅限 Console 使用者" + +#. Type: select +#. Choices +#: ../xserver-xorg-legacy.templates:2001 +msgid "Anybody" +msgstr "無限制" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "Users allowed to start the X server:" +msgstr "可以啟動 X Server 的使用者:" + +#. Type: select +#. Description +#: ../xserver-xorg-legacy.templates:2002 +msgid "" +"Because the X server runs with superuser privileges, it may be unwise to " +"permit any user to start it, for security reasons. On the other hand, it is " +"even more unwise to run general-purpose X client programs as root, which is " +"what may happen if only root is permitted to start the X server. A good " +"compromise is to permit the X server to be started only by users logged in " +"to one of the virtual consoles." +msgstr "" +"因為 X Server 是以管理者的權限在運行的,所以從安全角度而言,允許任何使用者啟" +"動它並非明智之舉。但從另一角度而言,若在此設定為只有 root 才能啟動 X Server," +"那麼將會導致所有一般用途的 X 用戶端程式都會是以 root 身份執行,而這可是更為不" +"智的做法。折衷的方案是只允許那些能登入到虛擬主控台 (Virtual console) 的使用者" +"才能啟動 X Server。" + --- xorg-server-1.19.6.orig/debian/rules +++ xorg-server-1.19.6/debian/rules @@ -0,0 +1,136 @@ +#!/usr/bin/make -f + +include debian/rules.flags + +include /usr/share/dpkg/architecture.mk + +%: + dh $@ --with quilt,autoreconf --parallel + +build-source-stamp: + mkdir -p build-source + tar \ + --owner=0 --group=0 \ + --transform 's,^,xorg-server/,' \ + --exclude=debian \ + --exclude=autom4te.cache \ + -cf - * | xz > build-source/xorg-server.tar.xz + >$@ + +override_dh_auto_configure: + dh_auto_configure --builddirectory=debian/build/main -- \ + $(confflags) \ + $(confflags_main) \ + $(vars) + dh_auto_configure --builddirectory=debian/build/udeb -- \ + $(confflags) \ + $(confflags_udeb) \ + $(vars) + +override_dh_auto_build: + dh_auto_build --builddirectory=debian/build/main + dh_auto_build --builddirectory=debian/build/udeb + +override_dh_auto_test: + dh_auto_test -- -j1 VERBOSE=1 + +build: abibumpcheck +build-indep: build-source-stamp + +override_dh_auto_install: + dh_auto_install --builddirectory=debian/build/main \ + --destdir=debian/tmp/main + dh_auto_install --builddirectory=debian/build/udeb \ + --destdir=debian/tmp/udeb + + # 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, needed for dh_install + # --fail-missing + rm -rf debian/tmp/udeb/var/lib/xkb/README.compiled + rm -rf debian/tmp/udeb/usr/bin/X + 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 + 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 + +# Only read the first line, the rest of the file is used to determine +# when the minimal version is 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 + +override_dh_fixperms-arch: + dh_fixperms + chown root:root $(CURDIR)/debian/xserver-xorg-legacy/usr/lib/xorg/Xorg.wrap + chmod ug+s $(CURDIR)/debian/xserver-xorg-legacy/usr/lib/xorg/Xorg.wrap + +override_dh_install: + dh_install -pxserver-xorg-core-udeb --sourcedir=debian/tmp/udeb + dh_install --remaining-packages --sourcedir=debian/tmp/main --fail-missing + install -d $(CURDIR)/debian/xserver-xorg-dev/usr/share/xserver-xorg + # Extract only the major ABI version: + set -e; \ + abi_videodrv=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig pkg-config --variable=abi_videodrv xorg-server|cut -d . -f 1`; \ + test -n "$$abi_videodrv"; 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 + set -e; \ + abi_xinput=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig pkg-config --variable=abi_xinput xorg-server|cut -d . -f 1`; \ + test -n "$$abi_xinput"; 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 + + # save the configure flags so that packages like vnc, tightvnc, tigervnc + # know how the package was built. + echo 'xserver_confflags = $(confflags) $(confflags_main)' \ + > debian/xserver-xorg-dev/usr/share/xserver-xorg/configure_flags.mk + + 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 + 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 --- xorg-server-1.19.6.orig/debian/rules.flags +++ xorg-server-1.19.6/debian/rules.flags @@ -0,0 +1,164 @@ +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) + +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}') + +# disable-static is so we don't get libfoo.a for modules. now if only we could +# kill the .las. +confflags += \ + --libexecdir=\$${prefix}/lib/xorg \ + --with-module-dir=\$${prefix}/lib/xorg/modules \ + --with-serverconfig-path=\$${libexecdir} \ + --disable-static \ + --without-dtrace \ + --disable-strict-compilation \ + --disable-debug \ + --with-int10=x86emu \ + --with-os-vendor="$(VENDOR)" \ + --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(SUPPORT))" \ + --with-xkb-path=/usr/share/X11/xkb \ + --with-xkb-output=/var/lib/xkb \ + --with-shared-memory-dir=/dev/shm \ + --enable-mitshm \ + --enable-xres \ + --disable-xcsecurity \ + --disable-tslib \ + --enable-dbe \ + --disable-xf86bigfont \ + --enable-dpms \ + --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-composite \ + --enable-record \ + --enable-xv \ + --enable-xvmc \ + --enable-dga \ + --enable-screensaver \ + --enable-xdmcp \ + --enable-xdm-auth-1 \ + --enable-glx \ + --enable-present \ + --enable-xinerama \ + --enable-xf86vidmode \ + --enable-xace \ + --enable-xfree86-utils \ + --enable-suid-wrapper \ + --enable-dmx \ + --enable-xvfb \ + --enable-xnest \ + --enable-kdrive \ + --enable-xephyr \ + --with-sha1=libgcrypt \ + --enable-xcsecurity \ + $(void) + +confflags_udeb = \ + --with-default-font-path="built-ins" \ + --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-glamor \ + --disable-xinerama \ + --disable-xf86vidmode \ + --disable-xace \ + --disable-xselinux \ + --disable-xfree86-utils \ + --disable-xwayland \ + --disable-systemd-logind \ + --without-systemd-daemon \ + --disable-suid-wrapper \ + --disable-dmx \ + --disable-xvfb \ + --disable-xnest \ + --disable-kdrive \ + --disable-xephyr \ + --disable-xmir \ + --with-sha1=libnettle \ + $(void) + +ifeq ($(DEB_HOST_ARCH_OS), linux) + confflags_main += \ + --enable-dri3 \ + --enable-xselinux \ + --enable-xwayland \ + --enable-systemd-logind \ + --with-systemd-daemon +else + confflags_main += \ + --disable-dri3 \ + --disable-xselinux \ + --disable-xwayland \ + --disable-systemd-logind \ + --without-systemd-daemon +endif + +# Mir isn't built on PPC or s390x +ifneq (,$(filter $(DEB_HOST_ARCH), powerpc ppc64el s390x)) + confflags_main += --disable-xmir +else + confflags_main += --enable-xmir +endif + +ifeq ($(DEB_HOST_ARCH_OS), hurd) + confflags_main += --disable-dri --disable-dri2 + confflags_main += --disable-glamor + confflags += --disable-xshmfence +else + confflags_main += --enable-dri --enable-dri2 + confflags_main += --enable-glamor + confflags += --enable-xshmfence +endif + +confflags += --disable-config-hal +ifeq ($(DEB_HOST_ARCH_OS), linux) + confflags += --enable-config-udev +else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) + confflags += --disable-config-udev --enable-config-devd + libs = $(shell pkg-config --libs libbsd-overlay) + cppflags = $(shell pkg-config --cflags libbsd-overlay) +else # hurd + confflags += --disable-config-udev +endif + +# linux: libdrm needed for kms (hw/xfree86/os-support/linux/lnx_platform.c) +# even in udeb +# kfreebsd: libdrm for dri in main build +# hurd: no libdrm +ifeq ($(DEB_HOST_ARCH_OS), linux) + confflags_main += --enable-libdrm + confflags_udeb += --enable-libdrm +else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) + confflags_main += --enable-libdrm + confflags_udeb += --disable-libdrm +else # hurd + confflags_main += --disable-libdrm + confflags_udeb += --disable-libdrm +endif + +ifneq (,$(filter nocheck, $(DEB_BUILD_OPTIONS))) + confflags += --disable-unit-tests +else + confflags += --enable-unit-tests +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)" --- xorg-server-1.19.6.orig/debian/serverminver +++ xorg-server-1.19.6/debian/serverminver @@ -0,0 +1,3 @@ +2:1.18.99.901 +ABI_VIDEODRV_VERSION:23.0 +ABI_XINPUT_VERSION:24.1 --- xorg-server-1.19.6.orig/debian/upstream/signing-key.asc +++ xorg-server-1.19.6/debian/upstream/signing-key.asc @@ -0,0 +1,323 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBE9iNskBEAC4ZlqFgnzmpGeN2MOk6dvxs3UQFEHycoNVxCb+KPF3R0q4ZTt/ +Qdmjg5ut3I6D+LshJoPPIajOp3Csm8Jjue8xWNY0HVN7/d+Nhok+6FAtD+H22hUz +rGxWfUTCmga1oLwxRjptSZeAUb/EFRzvaALB9JUt///VerzDUuuMttJ6gPNMo7+f +EOknT8fmRuxTT8Fa9o8/XJ0nDVKnEZfXMq+kaxFwRl7D/PfFSxzjOVvLDZYJ5gNT +qW/2e4YJCTAQWhWAOWYpUjuG+UsYc2m1xyt8Xoe1JOz0uD9sVypQgNt6iRKGG4QZ +R43SlKvJnp5LJVemiQAJydxb3Yh3aU64GT5p/nV9lU26+iycFVwpxWEpH4z/3lUj +HaaI2dM9JvTrcjeBmsLRUC32SwI2MjFiLwKa22Kzfp02w02s2XSw9m8jYkwUzHln +UAesFIwYXivckAf6ULSaMe8x22XtvXRmHdOy/q/uTC7i2JR33VEm0zNxSZRWTsX/ +sv0BETjNE525iz9sLAGmt60vThkO6zt8ke0A6lCekLUsi3rzok21oFqSnasJNXUY +eVOAW3LisGRrPBXHUPoztyB9n7OpC2xbBep2ce/Y4zBjHZZUngBZXxXj92X2CRSo +qezlP2cZfnXk0C7exUr4aTC44IjkZYEsFwQSNiJhzIoN5blVn1QU45J4RQARAQAB +tCFLZWl0aCBQYWNrYXJkIDxrZWl0aHBAZGViaWFuLm9yZz6JAjgEEwEIACIFAlBT +0bwCGy8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJENsiGmkAAAARyYMP/jC3 +uOmE25bvnTKmyYPDGk7wyCgkLNlFzsAYGuesiOnyw4T1FGM+ogIX2G7gYj9J/hdT +nX/WwEU8zfVkVRxNd9kb/BbJ+zcS28saSLG/6IsYcdtuBBw/1tvB7sR5cRZgEBij +NGoa8VvIY6cJozmw6zgXQqqS4el1jKZTtdQNpmwK95EV6TvmdAjmMqj4s5n742ou +bdD+lx5HQlGC+a20vosoX9kxrCtw3utQngXcgr6k75ZB22Uc15zQIQc9P78NnXnI +GyliT3z5SEYVoThpmAkexHUr9uK/rP3bBeMTTk88wzq7CYqMoxpTz4HzM+RdKLUA +pFZ7f181s/JP7PTksHVxTJtWQx+l09VAWLg1Gj2/F8j20xjEHSkywklPL0gg4g9o +dTPVbaSHJDS7xlNAhwHw4/7vupORU16Xiwt9wgAWvJ4k4dTrcXkd+HJ6FLJlAKBl +sQU+/G5e8oxTnmksfJcpbHaWT2quW+oDe3qadsXjKDGfZn0b1ocvGUjg5mTzN95B +PlGZ6pBmZgrgv3wWeFgjXScVnhQQeKHCF+G76c5c52H8jjOWFAv+RkpXD/J5N3I9 +QWR7DVVfvwPqLgwZ+SaAXPR4hQ0b3kanyaNHJgDNZWAG7hHA3EbnaVyVyyRmR+1M +2jXuzKVlbJp8/+ts3hrBeZ17bgu+xw6FydKN+ODJtCFLZWl0aCBQYWNrYXJkIDxr +ZWl0aHBAa2VpdGhwLmNvbT6JAjsEEwEIACUCGy8GCwkIBwMCBhUIAgkKCwQWAgMB +Ah4BAheABQJQU9N6AhkBAAoJENsiGmkAAAARpFsQALbybdFI85DE/NDfzNxGroru +pO96ecH7bLK1o4VjjIsBbybvlcF89FVHI4o+5w9SQRF+a+4Da9YWVXsrFAeRRVMV +iDRgW/GdXHYV+vRSVHzFeJGpsGV/IYApctwcS8y/aWzEJXjp5ARGK7lpBG4zZVOk +jjphTPFHF7Y8W2Yu5HoEjqG1t4PzcNN7sOrt6Nxkv5DWKjnzN+fB63SgfBsIk7NG +/ufWncrxa/eQl6zKu42LHlDnDgLm9HI9y/iPBwEStfoIM9tNyDuvtsxU6RXIBeuB +JgGMjkht6f97aK9Zv8vOXlk3mhaF4SbIXKHvyQDNJ4ZoZmzlZSsWBTLH/+eYNI6n +jUQHK5X4bscmUobFDbU2JNqaKA8gVtLAmE/nPOIuSk0Y7je5nVx4+HsQ+FC9ntFe +1aYKmn1S04QSS/bvmH52qSx7U+nnLnwGvtDhomQ5Q63ZIXwLsT+PBUb7XkECpJNI +B8lXWmCLxABrUTuEsUa1k6yGnYWCAWI/LX5MW1VZOg51rgKWNNsSQ2O1QI+7VG1S +85K3/HU70jUEDdWvr6ZCkr8VORLXehkbP0Mr4iOQCHUgljpul9wTINQw6FIO57H4 +85vwXiP4NdC5HKHy/BoUzcbg6HzX6ji+UlatiqOgxbrdWhpS3pQgzVUcwV90UWpe +o74gEp0cDIja3cCrDJDJtCZLZWl0aCBQYWNrYXJkIDxrZWl0aHBAZnJlZWRlc2t0 +b3Aub3JnPokCOAQTAQgAIgUCUFPRlgIbLwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC +F4AACgkQ2yIaaQAAABHGNQ/9FoQfqNvPsyj/CII5y7Fyi6cSPDeTVBdxkB++2gJ9 +kDKsjL5ylr0MhNly37uu38cVGkgiEf5WJEbJqQGuLlvU6dbo75RIGUsDi+FLee7X +uwtEwY+WuMQTbxGyqEFbbOL3EuylqqD+7+Mh3iEMdleJfJhKUGScyDz4VwAvIzgS +LwKk1tyOl5io9f3QA0tKnohScV0X6ruVnS5/X7FG3boFxuN9d1W10uG1LOHDQMsC +a1rA2euBbYsDATM0DWCR4TOCz7RcBn6BnRV5U/UNmMgkgX6ZKrJRLk1oIZZYnBZF +5J2f+g3BhQ0t5lOkvFO1H2tWK38Ch1DzieKFjLodB4vW1XMV0C3Bjx3jGMYBMclR +jseyDvgt9G1QLA+O4/gGCZW/+AHorSDKJwJeR/5YpbfHPIQi/6W21gaqbJwAdoHO +xynzprPCUAPiTXJqv0tOUs5trteoj83+7Jn9hGFiFkr6uluILPeFurKvxuP63EaS +RNrYKjk3qAQq5EdJm9W+o2vBw5naN8M9I65I5uaXs3sz+MY/+fTJGHEsG3bQokTa +XppoE7rG+7GJwMX+s88ALU8lz4FzY3ZTWXxqnRFbDSzpxPq7eOMx7ovHjTXbyEE8 +v4STT6wWHllaYUMeR/0BqYDGoH03vm4vMJoBNdFPeM92skcdbZFITl9MaLriHlvk +qKO0J0tlaXRoIFBhY2thcmQgPGtlaXRoLnBhY2thcmRAaW50ZWwuY29tPokCOAQT +AQgAIgIbLwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAlBT03oACgkQ2yIaaQAA +ABGQshAAoi3ek8jWeD97QIOyr4JfCCL5ajZPxfCtjp0j2tWNy0QHZCesCXIZ0eOF +7cCGsBrAdCExlqlRWvjB7FiCTCg/0vS1MLjhT6GuxiyfeF/qfTdxswcXKs/BafBP +XdTfTdVVUX7IsECxihWlL8XO56T24mEUlcERDNcmB0rdsCLUy5+hUw2w5tTkI4bX +NNHcg727NhqbfMRKNbk5pdsmCJBwwPkKIJNKCy4LfO1UhvTYQNPAkiBY/1HXoiR3 +ZF+n5sYHkH8sR7AGoUJxiLINsCAcs2D6kf4zL2MXRbCrgE08/0ABNriqe7My6Ocn +hZWq76POx8ETyEZj1ZVIWpbrEw/TwDVlI0oI/1WMqclVC9TasmW9vtXG+FLzEMM/ +5cXHpFS4Ffr2twWADaGKA+kzpyvn3LFvMzxLtZXV0U7lzGvanHfEvJ7Wp/r3ZZM2 +IzhNn2yM2wmm6yDm0rt8ilBIkzGbIwWC+GYXgUE9jatkIDBS3rzDqrUOQbfNOutZ +ARdVeUJTj0xpLj1WbTrA16AvTzXk7UraE2JmveCyLUk5LY2jG6CZM9Ez2D4uIcpM +mSfXlPqRv3eKYBdTXRINmaIUAFXNxuNa7EaCiZJ7uyo8Kbo1KBOkyqNuCWj4Z/66 +UrYA/aV1zxe3nkDdiRq9GYH4bVyjJl/H8goLblcIkgeLhDczwS3R1NnU1wEQAAEB +AAAAAAAAAAAAAAAA/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYH +BwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0o +MCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo +KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCADgAJYDASIAAhEBAxEB/8QA +HAAAAQUBAQEAAAAAAAAAAAAABQACAwQGBwEI/8QANRAAAQQBBAAFAgQGAgIDAAAA +AQACAxEEBRIhMRMiQVFhBnEUMoGRByNCUqGxFcHR4TND8f/EABkBAAIDAQAAAAAA +AAAAAAAAAAECAAMEBf/EACIRAAICAwEAAgMBAQAAAAAAAAABAhEDEiExBEETIlEy +Yf/aAAwDAQACEQMRAD8A+eMPEja3cDud7q3bg3hxA+ENjkdE/wAh4+VdikEgHNKq +SdmiLRM1zuye0r3hwNpg/KCD0pI2l916lIPYMzMFpJewfsqTIHtINkc8gLUeDYDa +BJ9lPi6WZHElpr7VasUq9K3BN8M7DFI+6a4Ec/dSmCRoJp4IPC1sGmO4DABXHSv/ +APDPc3kc/ZTYdQaMjj5shb4WUXEA+V47arrcmSxucRzw6+HIhmaNI0WI91eyFnGL +CQbZR5a8f6VUoRZdHJKPGXY8p7R5Sa+6smfxGdkOBQokxO2u8zPQ+qnY6nAuHHpQ +WbJiRpjOwnHkFzfCyCXA+riqksB8R/hvto65XglobSSD71StY0TgHPYS410Vnr8f +UXL9ge2AxuL2k2ikAmYwAyO74IKfiujmIbIQTV/IKhmmjxXECqPSSWRzetdJVEeW +S8B/iG+rKr083TzY/ZP/ABDJHiwOTRT4Ggizz7BP2C6KRHKezyuc5zR0kopzbzZ2 +v9QkrVBNWHZozAaHE2aPzyvLc1x7Xt0TxaimlDbs89LpnHbVFqGYk+Y99Uj+lYT5 +Ghxbwer4QT6fx3ZWQHPFsZyQV0fScIcGqA/KEsnRZjjfSrhaW0UXDzjnjpHsXTLa +LoDrgIhjY7Qbr4RbEx+twr1VZbQMw9LayiBRV0YTB6ItFAD6KYQg38fCg6Rn5NNZ +ZNX8INqOiQzN5YAR0QtyYBzwqs+P2Nt/KgGjlGfo/gk8bggOSx+E4+UmI+nsus6j +gB4JDeVj9X0xsjXNLRZBpD3jF7HqMljZDDdmz2Cr8eQWt8p9OVnM2OXT8nZIDXoT +0ienzeK0Oa674pV5cKqy7Dm2dP0vusS72ki/UKfJImiO4N3VVHj/ACrcGMyXHFNo +jilTzYXRMO4mv7VgU4uSX2aq4C4wN4YODfCLQO8MEm9w4CpwwCRwIB3ehVvwnMAM +oJo1dK3LJPjBGLRXkY6XkmPv1CS9mYS/m0kU+BoxmQ/aTVqvtLvT16VtkLprLBYH +Nq7p2nPnlhJadrjyf1XV8OEk5M1f0Rp1Yhkc024Lf6dj7Y22OaVHQsVkGMxjQBwA +VoYWgN/wqZdNkeLg6KKwOObRTHiscg2VXhbZFBFIWkVQCFliHxxfHCnjg475TmNp +vJU8bWgXzZ9lCMrGNzXUK5VfIiPwipbuBIB+FTyG0LN+3KjIBMiDu0A1PD3AnatV +LXNg2hWYwO3AcIBa4cu+qdJGRjOJHmAJBCx2kSHFmeyYcejvZdd1TH3B3HNLm+t6 +c2PJLmgVZ3AJlUlqyiVxlsg1pWS17SDRs8Ef1K5qEBewAgjj9lhMLUZMKYsBtl9e +y1+LnNy8Uujfvrkn1H/lcr5Px5Y57x8N2LNGaKM8fgXsJIvs+iIafI18dOG6+Sqz +sd0ryXeXcLBCVmBhB4d8eqE0pxr7LlzpNlthD/LyElF45cTxX60kjFOKoIA0aCJ2 +I9rnbZHGhfoi+lzMdkMw8dpLGnlyxzZXy5BDSQxx9ult/pSNsLBLtPJoH3XakcOB +0HDYGRtr0CvwPDnCzwSqWI64wOORyrEXGQylUzVEOYrTdi+UTiBH+1Tw2+QV3SIx +N59kpYTws6sq0xrWmgLUEbSRyVNVVZ5UI+j3NAIIA/RRzsDmGmq3FTgBVFJ7WuBH +RpMRGczWbbIaUKm2vceq/wBLR50Ng10gkmPtebFX2kYzQDzYA4O9/RYXWYTE6R4a +CWHdXwuj5UVAk30sZrbKdI6uCKNoxfSnIuHJs5rPxLzH+UmwPZLDzJ8R+6J7vZLV +mGPKe5grm1Vjka888H1VzVrplUqfDa6bqcORA0WWv/qBRMwtma2QPa4erR6Bc7je +6N4cw7XWtDpWrE+Vx2uPRPS52b4jT2xnQw/I2/WQWzIWiSxe3ocJKeGVkzaeOe0l +n3ceM1GE02IPnBcQGe63Ohyglm1vlY7hYmNxY0Brfi1p/phzjOxrtwPa7UvDjYzp +OIAI7PPHoiMQ/mRm+UOw7MYHpXCvQmgHONEC1Uaoo0WGRwOuETY+McFwv7rEza9D +CPDEgMh491JiZeblmsZjtx5BeKQDsjoUBY6hYP3KsBkfbquvdc/fh/UA8zpWxi/6 +TaK6W/UITWXKXiu6pEGzs1uxt2BaZK4BvBFqnj5DtgJ7P+FDPI4l3JKg6JJHBxNu ++6FZuRjRPIdKwEelr3Oe4x7YybKzc/02/Jl3y5Ja098pRW39F/IzcWS2tlYXH0BW +Q12MHxQORRIRHN+mcbEbvxcmQTD1c7/2svk5WXBlCHN2ua7hrwUUVtvw55qjS58n +HmY4hApLD76NrV5+I7/kcpmwkGyPj5Qz8JFK000X6EK7ZJdM+jb4DI5b4caKma6q +o0ocvFfju5oju1DHIWmijx+C24+h/B1V0LS2XcR6EdpISx4SVMsUG7aNEfkTSo3O +rfR2ZpeWI2uZNjEkb/6gPkKvgzDF1cCZoiaKbbbcAup6rp02RhzugO7zFoH9vKwm +Dgvx9Qd47CCXc2O06d+glFKXDY6W9ksFscHD3BUucJXMMMXbuLCqQaTC9pkg8THl +r/5ITt/ceq806PXMTInklkjzscMdsFbXNcOrVd9Le0SYmPj6bJtlY6bId1Ys/wDp +X59ckxYWmB0eORe4kbkInfkOi3htTPFuPpZ/6S0zT5akdO7xi/jkdIxabpkknXCx +L9R52QAGahOGnhp8GgT60rOHrupR8STxzezXsq/sQvYsPIihxxJJJLj47t0cTvyt +s8pTw/j9SdOaiceC1jeCpNJeAxbP/SNfomrxZrKkb4cja3Ncf9KfVMzGgiLjKwNP +Fk8LF5xx49UwW5LHhriWNcDTevX4Wry4YJcAsMbCK4BA7SfRaA8zWPAYJI2lxedr +B/2gepZOVmh5/EuuNu5zXzeHf2HZTcGXGy9Vmw3slDsZnFniyfRFJ4oCwiSMiQdO +74Tw1XpTOMpeMzGU0YmLFlZMA8OT+sPLq+6o5WIzKY6aFx2NAePMtLnYjZ4dji6R +tcNA6Qj8AdPxZGi2tcOj6ISavgaaXQA6IQznMkcwtmhexu8d0P8AayuBE5rbce/l +anWsrxdOw8V/LI97uuRfys5iNa2OyWqSlwCj0c+DxW7XAEIJqGmuiO5nLfhaHdxw +R7JslOFOopYzaDOCkZAOLCf9eySM5mnxyPLo+LKS0KSZleOS4fTen4Lqmd2GvcK/ +VZL6wwX4mRjZBcCJHGwOKHotpiZbYnZTSfL4hduHVE/5WZ+u5BkQCRjtwa5vXsqj +XP8ApBgva2Ln2CvwSMfbXNtjvL+iB4EodA0e4HKL41EjnsJWh0SNgi3uYG+QcBSn +Eha7y7m/ZTsaDTgCa7RGCBszbb38KUMkDW42O5tPke4eylix4m8RMAb/AJKJDADX +hzxQSklx8cHa0Egd2pQ1JAPL0x2TmwZBADIegT2UXA/k0CSQFVly3yABrAG3xQV7 +FbbDVX62FGFRMnLhNdqpnj8srG7aHqEVaJCxpczcKUeqxPx8pk7O754RfBMeRjtc +W2HD05UAooGMjslzGNH3CF/UGKH47yALpaqRjI++fXpCdTb4sTmtaSK9UUgSXDif +1ATFDk1dDgGkCwslgaGyj7Faz65kihxZYS0eI99NI9AFh49rGDslPSaMbk1LgbBj +obf3SIZ2BQr3Qxk9NptppmfaT8Y/5VQS8u4+aikhpcUkyiRzOufw8+o26xo7MTIe +fx+P5TZ/OFrvqeJmRocgaypWsv70vnnTs+bRNWZkYrtsrDdej/j7LrmifWumavgS +fj5248pbtMcjq9PT4TSV9BGeypjNNePw4I9OEfxJP5YJ/wDxZfSHtcwhhDm2QPml +oYGu8IlnN+irZZFmhwSQR3yjuM2Lg0P0NLN4pcAAQiQySGGiVLLk1Rb1HIqwHEgf +KrtwzkYby78xHCqNk8SUukNNHoiLMsPYAzgAILodkCGSjHIZMxwkb2AOES0rUMR5 +ka9oJI4vhNkIkBsWfVUcjCbK8u5a7+9vFo0Daz36jy4XbIcdu6Rx6HNKxpkckGGw +O/N3QQhkBxXEjlx7JPKmGpmANDjz6BRol11miMttomzXsg+ryARv+ykwnSZtuB2i +lR1hhbG7cSSlTA5cOLfxGeW5bD6EnhY/xfZh/dbL+JTSMqADskrF7ZG/0Eq+Pisw +T/0yRsrweGL0ySE3TR+qiuQHhiR8XrwympC2yRzpb7ASUNzf2pKUSwt9Q44jle9t +Dm+EJhmLHAEXf+FrNWx25QftsOtZR8Do5SHggBJjdqhsiqVnSvpbIqNjS7ggELf6 +a5rgCe1zD6efePA8f2roGjZLAWgnkpJLpogzUsi20QOFciAI8zfuq+NI18Y5FKwX +FjTRq1WxrKU0DpJZDG8No8D0Q+WXNxJCJI3OF/mai7Xhji339U5gDgQ/sdKJtFkQ +ZBrO7h0LweuipHayG2HwuvvootGyON24saD30EsqZkhNsBr2Cf0baK+jLZeoTyuJ +jgdbvjpe6biunmL8sbnDpvoEZymNI8oDSe6CqNuIk2BaVv6I2mFsOoIXhtDjhCdQ +t556FqVmVuidyeOAg2v6hHhafNK9wbtaT36oJFEpUcq/iFlNn10RtIIYOa91nXgG +v+1FlZT83UJsh/b3EqS7IPYWiqKIuzw0TwF67zELwjnhNBoHnlGg39DzXskvAOTw +kiSzXS7It57FmkHyRFM51tFjhFMokzBvlFlB3XE97XDkc/dTBjWuzKM+RqWqND9P +R1hRV0CWlaXGeYi1w7B90B+jv5+FKAOGuWohiB7ApVz4zRHxBvSs/e0AlHhJvZYL +bHSxMe6CTc29rjyFo8LLGxvIvvlVyQ6Zeeey49J0Mx4t3PaqzP3kkVRPSTCL54NJ +aHjLoSGRuHJH2TXNJ6dQI5UMbA5ocSA8n9lfi28Cwb7TU6LNgRNK+MkHn9EOzcgl +t8rQ57IgzjseyxutztYTzV+iFdFlPhaxckbeXGu1zb+JmveNJ+Bhf8vr/SOazq7d +N06RwP8ANo0FyXIlfkZD5JXbnudZKthH7MuSd8H445Br/wBK2T2U2GMBl+6lDQbA +TtkimkMuknAHpeub+6btP6/dQj/guvhJOdfokiSjSzu8TJPmvaeFX1DHfK1j4Ruk +JqlYoNeTXN+6UUmyYA1X3WlQ1jqjC57T2Df0DjvgjljlBBJv7rath8/YKAfThDpN +zXEn1H/hbOOBrgCDzSwz4+nSg04qgVPCaIpQRSOgdRJrpaE4wI65KH5uBYJA8yFg +aPGZN9kFq9/FOaDVGukNdHLC6qLrHKZ4rxwevshQUwu3UQ38/STtapp27gP8oOJi +eXBeGYi6dR+yNAsuZmtvIO0O6WZzsh75HSSnzE8Ac0rmSZJHEBVhh8ufIRfdI0K2 +2Yj6vlk8Jm7cd5/ZZrFxnzfl/S1staiZmmdrhYYaH3QWBjYjQYGkd2r9JVwz7x26 +DAXwO2yA0FPG8dojPGydha9rb+DyhORjSY5JbbmIOMvtDqav9WPlkpxCZv55I/RR +2JeSaJTpYnR+t3yhQW2+npLvcJKHlvYSRFs2koBe8j3Ub28cqaQFrnHg8/uoyQbD +uPZbDDZc0bUX4eQ145o8ivRdW0HNg1CBr4nDrkHsLjFbTYq0U0LWJtNy2yQvo+x6 +Kpy4lNc9NGLNpx+HbWRbqJSkxmkFDPp/6gw9VY1viNjyBW6Nxok/C0DWXyDuBFig +sLi48ZvjJS6gNPgh4uuVTdgRk3t5+y0zowe6UEkAq+FAsAf8TG70Fpn/ABELLujw +jhaWXRVaW3X6ogM/PjMaaY0WhOqDwYXf3VwtRNGGgn1WZ1anSnf+VvJ/RFeiy4jE +ZEW1+QCKc4WhWTECPEA5rlFnTePkTuIqyaHwqFeZzD10FuiuI5zlcmUQN1OHf2U1 +xllSCr+LUfMb69ipQGuB6tNQLBuVpgsuhNKH8NLtpxaSOuUW5jPHmavZIw8bm1fd +JHjTHWRrgBfG5ppzaSRQx7jy02kk/H/0tWVfYTxshrvK93IPBKfI0g+YX7KpJFtc +Sw8WnRZTo6bIA4D0ctFsy1/CQ2DVhwUbw67BrhWgGSxmSO+Oxf5V4IyOQ2/hQF0N +iyZoq2uO4dEcUulfSn1qWMih1ZxLTVTVz+q5uISewB8K0wbPypZ41NdGhlcOo+hc +XIiyIRJFI2WNw4c02CnSAHgf6XDdK1jP0lwdg5D4wf8A6zy0/p0tv9O/xCgyiY9X +DYHAcSt/K5ZJ4JR8N2P5MZcfDZSRlx4AUBh5O6yptP1DC1Bu7CyIZvXyFWXNa323 +dqpqi+0+oCZ8RZEeK46XP/qScY++z5ncNC6DrmW3GA8UENNkuA4C49rOoN1HUpng +kMaaarcMNmZ889VSKIpzw4HkcFV5C05BAJLe1JM4RNc57trQLPyUI/5Bs0j244N+ +rulsboxJNk+RsdJbDx68KPlp4TmjyhKh2gEfe7teRu2O2kgBNH+elKGhza9UQMlL +Gnkn9klC0vaD7JKWCh9EONn1qk4xhw5rlJzvMSffuk9rq+/omBZ5jbsaS2Cwe2/C +mOW2PlsDueyeUwH59KTqHYq1KJ6M/GMJoRSNv2UoyWDzBshPtSjdE03Y5KcGBtjk +j7KE4eyzPlFEVGe2jsqN8jRCWMh8xPEgKfsLa2Hn/C86/M2/shREx2lapnaVmx5G +LI5kjT+hHz7rqegfX+LqLBFntbjzkUHD8p/VcnaLJFAjtPfGCLI57FJJY1JdLcea +UDp38QNWbFpzMaJwMk1En2C5jFt3H55tSPyJp2N8aR8ha2huVLPlMUDy38xFEqQj +ogTl+SQM1zM8V/gRn+W3s+6i0pt7nfPCoOs2T2jGmRDwGk1buVXH9pWWP9Yl2htb +7lNLeeSp3M4HHXSQaLsq+iiyHZzYNqWMcX0nhtEUvXd16qURs92js0kldjsgJKAP +/9mJAjgEEwEIACIFAlBT0lYCGy8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJ +ENsiGmkAAAARySEQAKsOl4Si5Ud2dev330FSp7n0Xoe6ac6c2s7mdsfVzRabddlp ++8sbo0r5nM4IgyAcTbizyA1u6a18ESKBWszbwUAe/sm2EDL7zwsDm8HUZLEHbUX6 +tgd/bPjkAnFaskJhYKDFnYsW+0D8toz4/aquuQN98a7RUnbbWjwe8c9miEuctn3/ +I8cBCbgMtA9T8HDzP38dlb5tGMAdkCWcAqBn6fxMVy7NXFsgKerd6dnkVlZbJcRo +TRFRCn1cbWW3sTpKFtN3GB4x8/0dbaaG/UbaAxZhVEcfdy++PLud2qXf1Hyi1/kD +kIMctegHljRJPou5BHOSPdDlgtjcOSJxR9VP6oIQrGiNkZY/gMTJHurO/etEznfq +87nshweR3P+WP8I/S5QnE+w4aSL2sQpgYt1/ErVHlir/7ZpAd15uWcEqTHA1Q3Ad +jGCB9Ny1PmCIzStdj2NjMd98cKLVj3xxUnUG6V4Mjc0OIMErseRDMv0FndcHcyZZ +u/84qqIujhQCmnoH3Mdhi80+Hn7b5Xuw6G4Skbk9Ko5wVXyAfTmATirfe64odZEb +tqgJX2dkQBHzpMqrL8Tr5S6UY/ofBxqVcZZvP6UlnuuzJ67nfllIZEhcvlUOT8rb +i4PUo/XWKqb43SFis50slwzKd9xEnV7j0o6wxkhkT3KR7GXzz7TeQuAygluruQIN +BFBT04gBEACyRYUzdRvlCkr2WrB7kYIQr9xUwUboTJhHnqtUgzgny2rfHThmc/bl +GpuiRXrLtnarjbrxBnsfyYnBHCrX1oRU1pfI8eGXLkrLF698PzuGvnuVn11ZMlFo +gHpx+pw3aTtExpDhzWDsxaYCPNMgkEMGrkZQGEQ6XzFkvgcMfVTT1uQj1CGj419s +rASZ+m0BXG3S7nFL9mVcKSABnSAPVptFxZUr9UPnQ7X17LLkVNmCpstP1Gri4LOh +V53AT61sWPUtdUj4jKm1hYBKF5EmJrf6IF50qlUt5ehreMJ7TvHDKpu43t/8zOtQ +jElEJL5fEBbpGJX9YVYH+pYxDWJsNVmSkLNYosrJTRDruPUKlYm/naPDqFvR035o +tkTPrFiVkkqvDUvLgZl4it+DTRir9cuBfTwb8NYa2jJFesrXm2xYbrzmKaVg4AXc +u43kQg/Rk1lW3OQYt0/a5AdfMFYGk+Qa1lIvbibONYkASgeSxkDHQ6CfK5vxjp1j +eweEphoT193SCCx3nK7ip6WhX9dzPs0JKmCa1tMkTnYxe/xPRRsezd93S4E2vTOP +bN2uKPEUbctZFX1apRwWDoxRFuNDRSjqikzyEsVEiLRJ0jp99vcX3dpVVGqeZK68 +QYGFF/UK8nXn1S2QZxB/i9YksZNx6Px95ZIFL2SgmnaosqScm9qUewARAQABiQIf +BBgBCAAJBQJQU9OIAhsMAAoJENsiGmkAAAAR2uAP/RQilUyBaiFUvOjV0t6pzLgZ +8xuWLqK+51SHRfH92xxV53hOcPchFbl4aM5t6uM7INo8tV6fBDSQGxbpL7/HtZzS +JyHVLX24L3dOs0ryseZSI0uKlWHfODTF/Wu0IUYe0sSe4QtkT2bnJHGfa02O1yfU +gX+jMTAyrt/hcbExJZ0ykeXPbLHtp7ms+eRjnHTY3DiZMNPqK4xPlWEc+DvrKyq3 +yKnH2wKgrMUL+dKr9lLv7/Es24sxsnAhwRwJUsP5WYmD0Be/r8AmSibI7FkO0OI3 +DjUUKDE35Omm+mwEgXuaoK+5hStM213XNzSrEEt5wAw21Adppin+38VVLYALNosF +tCdDIh6WHlmA2iSFhYH8oUnrESxsF2Nni60MMfWvpKAWLOhnTMSCjwxFUjnqltwD +hgHktnxi6GUJT+mhits0OqKP/zJtiUM15bLF2mlWVxiCj9R/o+h4/pO2WcImNKAU +OgMQfsLPOH1oasEEzRHlxCPXiaD8KocyFxdRxuz7CZqA9XfC8lGFyld43lKIOSzJ +j+9rmqBB8XuDu+eX4WbObGSbGUCv9LfBeKbjfXyg94stLxxsZvPysv2gOR7dclzt +iF4iAeqQsCgsHVxWnPP5TO8tysNWZi818nu7irxldNL6VoionLQ4YDtm5QS/Eh7b +gZp+x8Yi4yc+nrIcmbB1 +=SX54 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBEoIZDEBEAD5MrFJC9Hi4mXZ97HlFotHIrkMURIFkvl17XEuJ8Jh3hlzJD/q +K1ByzQGHozzVcfbg4lP4lzqfdps6WCbusqtVYcTF61jjFhYo398lBgpKHUBbsEPC +SfYp5WkoICa824zcmWO9qYizGqkpd1C6gdQtK6ZaGjLx3xt08M9oVZqj+E2SsPHz +WaYLugCwCKhlbVTaP28OGy7tBRY6hcLtiZc2CNpr0YjZ53B7Ubs0BVYQutYxho7l +u0ChE9zNesy4KaIOumXZjTUrMCLpxF/01M1tfzXArMMLAqx3F1M6QIuy18F1zJ2W +LlkRwJi47NTiJ6jwLUYKBTN9T3nmy0oNAvv5v4B8nWgZAOjjDC2pFoVJa1O3K8Ab +vSRA3L/N+80MxM9VK5bw451pDqNhxn5q0yeS+RBagmOb2PZSMIuw9adooMurAfDJ +hsxqp3KaCTdYX5p+mCczNkoKMRUQiVUi250426o69IAmtpVi1q+MV0qWLl2tSvx4 +I4iph9XAhho7ycb4jziWf46ZljnhoGn54EU5GEqH0huakYcXK7XoNxU0XzS/eQuD +qVy2NH2C945h3LAtMo4zr49VZXjNnFn++zZqCUHASDX6Y3h8uMpzIY6Eslu2S85W +gpb+V4M5RvKPeuEJTuzxJOOW/B3nyoWFQfN6SXWGVW618dLEmFmQnyLBwwARAQAB +tCxKdWxpZW4gQ3Jpc3RhdSA8anVsaWVuLmNyaXN0YXVAZW5zLWx5b24ub3JnPokC +PAQTAQgAJgIbAwIeAQIXgAYLCQgHAwIGFQoJCAsCBRYCAwEABQJK4Fj7AhkBAAoJ +EDEBgAUJBeQMu/wP/jmGDVXrXZXtNJ7Ov94iDBwcEBlLoNHUyH4FWQG05eW3CqT0 +w9ZOvZEQ/kKlSjpdZzPiYMjgunl7D78aoL4Il2qKyirlT+trt+v79rl5VkD2xJx/ +gi7iN34VJQ50iGBxyxPicUjkXUO17kpJ2/uw/7/pNG0buBDbLGPwYPQFyV3UVOv7 +R8chvmAqtujck1961gRffKPihiv6sj4zjGs8ukmLCO3EgLzpz3shBfJyq6GNMNmy +aVX7hAcwhErKCrPeGVlzFpCLbtqIxpq6uPfxrDI20LhQkQ9NPD/4t1qkvenRCY77 +wqoiUBSYlpsKND2I2mywOE2FVMj34aBKvn96YsZWlj3Rkc++JvzdZQy09WQIUXt5 +fqEoQI6J+3l4gaQaFHCt0EWZhSCN/uNDP4sEXmX+MQP6sybU7UU18cEDFy/Op0z0 +2+2Csf3ewVPPcP8Dw6JZJjbiFH6+rQmHgBdz2kValcWwoEgD2oESyibGxI08XrJL +nonfZSDdhrfJ31q7F+qUnX+ukxVGo8Z+VdlZCyqacNrFbKPWSeM82vXucvgxeWIK +kjMiJsLVtitK117u3p5FkStKkzwqjmg6DM7NTyNExA/AyPmeFeGZU1iWwcIsT/UI +Sn7A8IWQk7lPJ5aJs7c+FCTl169FOkyhK4Xu8dWcXdyXg8ReeWt5qsynnukRtCRK +dWxpZW4gQ3Jpc3RhdSA8amNyaXN0YXVAZGViaWFuLm9yZz6JAjYEEwEIACAFAkos +Iv4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAxAYAFCQXkDIxHEACa0xs8 +cH59Q8MpHuWu+c2CVksTDw0O4t88inhtc9Ut66eN8uSEf/DZM/VgCyj5kYbGHIdA +cSAQHOWXa9GLeI/ZJ+LuQ53I4xw5xT5fAf8vIPbYJ+4fsHouTVY4pp59HQPs87d3 +VdGcOcPsTw3p5mypZfNX8tq6DD9i3pZpK7t2wzvSgQkJs0f4IliUsurxG2aiDNwS +Og1pUBQWdcuriLZRV7aBWJaLO7lCWEpxMiTFRODsMzjI28kRxU7MLlSwL0PlhhJc +XMTxQJVRJnLMW92btoRL5LBn8FHCFCj3yFj1GX1yZVgmzCUOrHu4xpRBR/cRtxgQ +Znh/aG9EttjQsB5byvSuzC2vZ9O+/l6mLi9zmhtIxxRGRn+ATYpXr/kddff9k8AH +WPE3N/jrXnIEC9+2HKolyRdK6mxfwOrq5Je3C+C+0vFtbZFxpP76LI7O9p+t4T77 +KuufxDNMix9LvPxQpAuUJkbWwiIO8T4ygYMzlIDZswi5Tyl7BMQ4IheJtKEyzuFp +DN6FvLpwh5gj6RM+i/IvCIExStcW+ySUZcuMItIELTsQlSycatO0OQi+3rXbBTsC +QidP/uL6cmxxTvBAs/XPK7XYdhl7P/9LvBSSNb1ZhHN2D3qfDXTwYWt8sZe3G7cj +2IrPvxBROvaoJCF1OriG4cXUTbsCWwe28rAbUbkCDQRKCGXUEAgAvfSSNQmYedmB +2KL6LqTHmt98Vs2fC6cJQ+uZtRf9lfQWYm5ssSTHN53czQNqMTlEL1vRILJb+uDk +B1nAFT5zy6JX/JmD6QXpUonx+YzTvL9ZI0qIF91hb4qPcNt4Nh+6bRfA7KLT7lWE +Rudr2MzkD3lb0Nubkq4+QmYhog8UhvUxfWUA/ubwktakKiYgveVKRb/ONTOIpZa+ +TAeZOsfMeDggTFMqOaFTxISV63O8p8mi8a7O/qM+rsPqlTjEVf/0Y3tILhEIoEfC +n2L4mU4vhVrXG6/lZ7sM+O8WoqlhQH5gVpjPFR66G0mQdGbvY0jdWS+wtVDGImkO +MIExpGAlkwADBggAioH1Z7OjuZNBb2Pf/ik3l68ouYqMu3qaxZhp2wYJGR6ndxKh +/0oTJbMrnYuHMc10PBiniqG6l/m/m2/ULyHl4yixZAHaG5tilfG6k1BgUMEfNvof +v9mHTm+iHrwU58PiZYaKlIfqPcnLc7oxsCiO/7oAn/NCUkB8EfFXqvsrgF6/DWF1 +LgIAvO9CvGuoBDGo7VU8w2YoB3ach5+nljdoQPb23K4TyE1zbpFQ8niEd8ULv4Gn +gQGrYWHS5O5RNsT8/Z2Rgk6I6lTssX8eizmVH9nRK/MlU3ulHG+uCd1JSZWVM6cD +E6NlTBMTZ9dA39c8GCQmctMKm1vmgIXm8OVI/4kCHwQYAQgACQUCSghl1AIbDAAK +CRAxAYAFCQXkDIA9D/9VLt9q9k71Z+mtpuVJUpVAnxWTuHjUmQ54dl7PFMeAU9KP +qAdBgoeE0NsZEC7aq/xZ17IH+fjbvLi40mMjqlv35fFjf9hlSHfPT6G4iOZqBCzn +egU1uqkrTj7Pm2STCgSWyM9jnRlfueQFSr7QdbJwklXlnhPY2XpBs0Wzbqp9dbTS +R47hR3CkjS3AUbsULb/ea+gP3mzCAytGExcGKghFipLQR5QLUDaJqxHDQBZK9K7N ++hccUdWArFycsoczS8IkrQ9+0qErjT8CdGm/laiaWvINYetlrRVrogI4YyuqUHyy +HjppPl6ypPX/zZdX32jFXvM4UmjlUlCojyIWh/WVNaZwSm6CC5M28w7iq5RzRw5f +0rdXGr8pQHgXKOTQgFOFs73SkmnQFK4sFNsTgTkSvyLlHsqAiXOXFhqYw1w4ozGT +sEcIdFCQuzEDHn57VRxWQhRd1npwUzlyFBszOGnbDLgXey1gMqzbpnupSU39FeWZ +Lka+Fmt9fn79alEg9K3xaCMfiIrQRSLqVlhr57S1OdJOy1z4jRbT2hjt5LKXTAUJ +gksZFyWOfV82jHBeu+O0xJNU/9xvZsJF4TORrRWRO1o1gkF7x/oBk7yilh+mSq1P +DNOWZJQhmuWMtbOUL2WMkKRPDwJrcbwpt3bc6aZCeAH1SSRLEe9Y+2uLeneTMA== +=+xMJ +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2 + +mQGNBFnVVFMBDACz5+V0s2/JjDuvutBbI4hAO3Zgb8mlny5nM/YgkCCVe79MsOAe +5Kn4Gj+lc8LiwJ4fyYPAWx1FIliryYE4RgpnKhipQhZB/UcvImTHQA4tqIavReyo +H4o5+CbPgRY7XNE2wRWOogWd3WuSeuq/37mu1gORmq3KogzuarjJvffLNL4saA+w +J37BXWhQ3P+eRiyF0qHaozf+bMenqtWEy0n0IQEg5wUS/zGXVlOX3fNhJeskq93a +US0bu3axZL4sxOMKxnhRK0XDziFaiMu/DTj4Y0SWDXgK0owkcc7Ow2eAX52Z+zvw +m9O3nBaQvQV7cUxNwYBmc2WkVts9XBrGT7tZ3HmFAkzB6YyPfdXYT4TpyFLofLVs +JDvpa8iXkOmy22JUuqJlW36Idpmv/2jNkEfiIbby3wwZtONJOD9xNxCmOiVGA59+ +q+Lgs0aCWzomNx07zMOEeVvLOj9ficZhTqfvhZrkPD4iEOKKIpRRjCyDyMa0HTb7 +XAkDYk/NcZe4kQsAEQEAAbQcQWRhbSBKYWNrc29uIDxhamF4QG53bmsubmV0PokB +zgQTAQgAOBYhBJle1cimE46wlh8YR0wJ3YPKqlCyBQJZ1VRTAhsDBQsJCAcCBhUI +CQoLAgQWAgMBAh4BAheAAAoJEEwJ3YPKqlCy6A4L/Ru8dHFdsNKvKtBH9szNgd5d +qcjEVWzw6YZKRTVpqw30O9uTcfuHzjV5ATIVTPEdXLklQficyCb4mGQLwxL2q5kT +YMrGteTwBt4pYExo/DYIEZom3f9+75+OgN1PleXQ9pTYo+Ndw18GsnD/sW04HX2I +IGKY3qUX3qhlxG6zdXsHTTIoCCBXrWepaD/IdA9Nw37tiyaTq2NH/ChcxFN7SuYr +SWpBkPRhcsxKDju7j+s4KzO9f1QYFB2Vi3TbbYLEJ3BJg6AxVoiVe4B9xfl6KfCa +EUjFWMqUprWiOjxNAdRUnfBN3UF2O/BxAtgZMk3RwVGG7fAEkfACkws8G5lcraTu +kHQJBfzdlbbwrQG4020kRRdNihblPHZAWI5PJG5jpdGcqftyD+lRvv4gljHpAg/I +eMK4rHjGANX3uQvcCelNwKf8TPVIDTB5vYvWmnHtRmEQkIeHhrMRzjhZej+uzNDF +FpKPZayGn2uyPLv77aZCQmEs1O1EafWz1+IfBWDUmLkBjQRZ1VRTAQwA5E5W/FDK +wfm+owkPenG0VYoXRfLlrBDvHcewLt04evdygHZZxNdV9Ycpsve9INdEg4nTJHj4 +mf302faUGECtiMKek78mfymzbAXS0kEXc2NoaXtEgFlPhavM4e8PpJ5aAKEsSHnQ +1HMS2KJ4bPbDNSLpWkT4HBDAzsJHOFNDu0Z6TsyG/bA1VLoj0iMC9jL8xWz1lOBN +iAhukMkjHOvmeq4BA2ktH5CUh8qwn8iEyw4sps5RcFKanIeru3sg8SVed4w0oCId +Tw54mSNE3vzGiK9tDk0yhDRq2oFT7ER4r0Cr3ctyAsDPJCwhgVJ2YWAGdHewdfg6 +l1hfsvmO1omjR1SQBSEbw6Ftl6GySd91rsvT9i5+3LiNIpYgYb2L6wNn7cSXc9NF +RXDWtw07P1mRJiRrBHwX1Brro7h9tvFT751F5yWSDdah5dUaqbl0C3cmXMoM+FLv +E0dECfuM/mwOvtvlYzL1htdTSLZRb25dddZ6nTlH3sLkVpd9oZRSd7kdABEBAAGJ +AbYEGAEIACAWIQSZXtXIphOOsJYfGEdMCd2DyqpQsgUCWdVUUwIbDAAKCRBMCd2D +yqpQsjd+C/sHZFFz3zSLBo1sUIHCGl6P2DYHatEoQTP7R8g1kAHd145pAGrvXzR4 +F6T5SgM8t4a04Ia2SJLaptNXpf1pJXKlEpEaCb/oDhB/eCt8sOilcqSojkEmpe7z +1xZY/ePNSzbsXDWTOagTM70UdaxgDand1dxMs2q8+Q3y3xZltXcYDmM48a/mRwe7 +rtPK68v3A54ZbcXojNcIMS1JBk+XcuBbmeI0yfGkcqbO2hiP8W81n1mb96jfZ/wj +QhNzLqI3zxRnFHPiBMLy9tF0odNCRccQ2mbKdV2cfOIF5WKC4lrcyqz3eit2RYdS +W3PPUqS3x2696I40zI2KoFjRn7YcWJ6T+skZPWW5bHCVcUN57v7270IG2MCA6D6a +Rto7m6yUbLNgGadDyIjTQladTN1aKYK/QAsxS4y+EhkAPeaQRvZxBhZEocjIAE0B +D2qzco+dq7IuQHIhXTnGRGEsS0bQdEnpQAoTQMVRo7loR2/XqzCIjkG40JH7Cr/r +gPSRdLLYOLo= +=+H4u +-----END PGP PUBLIC KEY BLOCK----- --- xorg-server-1.19.6.orig/debian/watch +++ xorg-server-1.19.6/debian/watch @@ -0,0 +1,4 @@ +#git=git://anongit.freedesktop.org/xorg/xserver +version=3 +opts="pgpsigurlmangle=s/$/.sig/" \ +https://xorg.freedesktop.org/releases/individual/xserver/ xorg-server-(.*)\.tar\.gz --- xorg-server-1.19.6.orig/debian/xdmx-tools.install +++ xorg-server-1.19.6/debian/xdmx-tools.install @@ -0,0 +1,6 @@ +usr/bin/dmx* +usr/bin/vdltodmx +usr/bin/xdmxconfig +usr/share/man/man1/vdltodmx.1 +usr/share/man/man1/dmxtodmx.1 +usr/share/man/man1/xdmxconfig.1 --- xorg-server-1.19.6.orig/debian/xdmx.install +++ xorg-server-1.19.6/debian/xdmx.install @@ -0,0 +1,2 @@ +usr/bin/Xdmx +usr/share/man/man1/Xdmx.1 --- xorg-server-1.19.6.orig/debian/xmir.install +++ xorg-server-1.19.6/debian/xmir.install @@ -0,0 +1 @@ +main/usr/bin/Xmir usr/bin --- xorg-server-1.19.6.orig/debian/xnest.install +++ xorg-server-1.19.6/debian/xnest.install @@ -0,0 +1,2 @@ +usr/bin/Xnest +usr/share/man/man1/Xnest.1 --- xorg-server-1.19.6.orig/debian/xorg-server-source.install +++ xorg-server-1.19.6/debian/xorg-server-source.install @@ -0,0 +1 @@ +../../build-source/xorg-server.tar.* usr/src --- xorg-server-1.19.6.orig/debian/xserver-common.install +++ xorg-server-1.19.6/debian/xserver-common.install @@ -0,0 +1,3 @@ +usr/lib/xorg/protocol.txt +usr/share/man/man1/Xserver.1 +var/lib/xkb/README.compiled --- xorg-server-1.19.6.orig/debian/xserver-xephyr.docs +++ xorg-server-1.19.6/debian/xserver-xephyr.docs @@ -0,0 +1 @@ +hw/kdrive/ephyr/README --- xorg-server-1.19.6.orig/debian/xserver-xephyr.install +++ xorg-server-1.19.6/debian/xserver-xephyr.install @@ -0,0 +1,2 @@ +usr/bin/Xephyr +usr/share/man/man1/Xephyr.1 --- xorg-server-1.19.6.orig/debian/xserver-xorg-core-udeb.install +++ xorg-server-1.19.6/debian/xserver-xorg-core-udeb.install @@ -0,0 +1,7 @@ +# from xserver-common: +usr/lib/xorg/protocol.txt + +# from xserver-xorg-core: +usr/lib/xorg/modules +usr/bin/Xorg +usr/share/X11/xorg.conf.d --- xorg-server-1.19.6.orig/debian/xserver-xorg-core.NEWS +++ xorg-server-1.19.6/debian/xserver-xorg-core.NEWS @@ -0,0 +1,31 @@ +xorg-server (2:1.18.3-2) unstable; urgency=medium + + X now defaults to using built-in modesetting video driver on Intel + hardware which is "4th gen GMA" and newer, so roughly speaking on hardware + from 2007 and up. If this triggers new bugs on your hw, please file them + against the xserver. + + Continuing to use the -intel driver is possible by dropping the template + xorg.conf to /etc/X11: + + # cp /usr/share/doc/xserver-xorg-video-intel/xorg.conf /etc/X11 + + -- Timo Aaltonen Tue, 19 Jul 2016 04:28:05 +0300 + +xorg-server (2:1.17.3-1) unstable; urgency=medium + + The Xorg server is no longer setuid root by default. This change reduces the + risk of privilege escalation due to X server bugs, but has some side effects: + + * it relies on logind and libpam-systemd + * it relies on a kernel video driver (so the userspace component doesn't + touch the hardware directly) + * it needs X to run on the virtual console (VT) it was started from + * it changes the location for storing the Xorg log from /var/log/ to + ~/.local/share/xorg/ + + On systems where those are not available, the new xserver-xorg-legacy package + is needed to allow X to run with elevated privileges. See the + Xwrapper.config(5) manual page for configuration details. + + -- Julien Cristau Tue, 27 Oct 2015 22:54:11 +0000 --- xorg-server-1.19.6.orig/debian/xserver-xorg-core.bug.script +++ xorg-server-1.19.6/debian/xserver-xorg-core.bug.script @@ -0,0 +1,146 @@ +#!/bin/sh + +PATH="/sbin:$PATH" +CONFIG_DIR=/etc/X11 +SERVER_BINARY=/usr/bin/Xorg +SERVER_SYMLINK="$CONFIG_DIR/X" +XORGCONFIG="$CONFIG_DIR/xorg.conf" +XORGCONFIG_DIR="$CONFIG_DIR/xorg.conf.d" +CONFIG_AUX_DIR=/var/lib/x11 +X11R6_LIBS=/usr/X11R6/lib +LOCAL_LIBS=/usr/local/lib + +# Pretty echo, underline the specified string: +pecho() { + echo "$@" + echo "$@"|sed 's/./-/g' +} + +exec >&3 + +if [ -e "$SERVER_SYMLINK" ]; then + pecho "X server symlink status:" + ls -dl "$SERVER_SYMLINK" + ls -dl "$(readlink "$SERVER_SYMLINK")" +else + echo "$SERVER_SYMLINK does not exist." +fi + +if ! [ -L "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not a symlink." +fi + +if ! [ -x "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not executable." +fi + +echo + +if ldd "$SERVER_BINARY" | grep -qs "$LOCAL_LIBS"; then + pecho "The server is using local libraries!" + ldd "$SERVER_BINARY" | grep "$LOCAL_LIBS" + echo +fi + +if ldd "$SERVER_BINARY" | grep -qs "$X11R6_LIBS"; then + pecho "The server is using obsolete libraries!" + ldd "$SERVER_BINARY" | grep "$X11R6_LIBS" + echo +fi + +if dpkg-divert --list | grep -qs -i libgl; then + pecho "Diversions concerning libGL are in place" + dpkg-divert --list | grep -i libgl + echo +fi + +if which lspci > /dev/null 2>&1; then + pecho "VGA-compatible devices on PCI bus:" + LC_ALL=C lspci -nn | grep 'VGA compatible controller' +else + echo "The lspci command was not found; not including PCI data." +fi + +echo + +if [ -e "$XORGCONFIG" ]; then + pecho "Xorg X server configuration file status:" + ls -dl "$XORGCONFIG" + echo + pecho "Contents of $XORGCONFIG:" + iconv -c -t ascii "$XORGCONFIG" +else + echo "$XORGCONFIG does not exist." +fi + +echo + +if [ -d "$XORGCONFIG_DIR" ]; then + pecho "Contents of $XORGCONFIG_DIR:" + ls -l "$XORGCONFIG_DIR" +else + echo "$XORGCONFIG_DIR does not exist." +fi + +echo + +KMS_CONFS_DIR=/etc/modprobe.d +KMS_CONFS=$(ls $KMS_CONFS_DIR/*-kms.conf 2>/dev/null) + +if [ -n "$KMS_CONFS" ]; then + pecho "KMS configuration files:" + for CONF in $KMS_CONFS; do + echo "$CONF:" + # Indent, and get rid of empty lines: + sed 's/^/ /' < "$CONF"|egrep -v '^\s*$' + done +else + echo "$KMS_CONFS_DIR contains no KMS configuration files." +fi + +echo + +KERNEL_VERSION=/proc/version + +if [ -e "$KERNEL_VERSION" ]; then + pecho "Kernel version ($KERNEL_VERSION):" + cat /proc/version +else + echo "No kernel version found (missing $KERNEL_VERSION)." +fi + +echo + +XORG_LOGS=$(ls -dt /var/log/Xorg.*.log $HOME/.local/share/xorg/Xorg.*.log 2>/dev/null) + +if [ -n "$XORG_LOGS" ]; then + pecho "Xorg X server log files on system:" + ls -dlrt /var/log/Xorg.*.log $HOME/.local/share/xorg/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 /bin/udevadm ]; then + pecho "udev information:" + /bin/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: --- xorg-server-1.19.6.orig/debian/xserver-xorg-core.install +++ xorg-server-1.19.6/debian/xserver-xorg-core.install @@ -0,0 +1,13 @@ +usr/lib/xorg/modules +usr/bin/Xorg +usr/bin/X +usr/share/man/man1/Xorg.1 +usr/share/man/man4 +usr/share/man/man5/xorg.conf.5 +usr/share/man/man5/xorg.conf.d.5 +usr/bin/cvt +usr/bin/gtf +usr/share/man/man1/cvt.1 +usr/share/man/man1/gtf.1 +usr/share/X11/xorg.conf.d +usr/lib/xorg/Xorg --- xorg-server-1.19.6.orig/debian/xserver-xorg-core.lintian-overrides +++ xorg-server-1.19.6/debian/xserver-xorg-core.lintian-overrides @@ -0,0 +1,3 @@ +# That's OK, they were virtual packages: +breaks-without-version xserver-xorg-input-7 +breaks-without-version xserver-xorg-video-6 --- xorg-server-1.19.6.orig/debian/xserver-xorg-core.postrm +++ xorg-server-1.19.6/debian/xserver-xorg-core.postrm @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +case "$1" in +purge) + rm /var/log/Xorg.*.log || true + rm /var/log/Xorg.*.log.old || true + ;; +esac + +#DEBHELPER# + +# vim:set ai et sts=2 sw=2 tw=0: --- xorg-server-1.19.6.orig/debian/xserver-xorg-dev.install +++ xorg-server-1.19.6/debian/xserver-xorg-dev.install @@ -0,0 +1,6 @@ +usr/include/xorg +usr/lib/*/pkgconfig/xorg-server.pc +usr/share/aclocal + +../../debian/local/dh_xsf_substvars usr/bin +../../debian/local/xsf.pm /usr/share/perl5/Debian/Debhelper/Sequence/ --- xorg-server-1.19.6.orig/debian/xserver-xorg-legacy.config +++ xorg-server-1.19.6/debian/xserver-xorg-legacy.config @@ -0,0 +1,87 @@ +#!/bin/sh +# Debian x11-common package configuration script +# Copyright 2000--2003 Branden Robinson. +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . + +set -e + +# source debconf library +. /usr/share/debconf/confmodule + +THIS_PACKAGE=xserver-xorg-legacy +THIS_SCRIPT=config + +CONFIG_DIR=/etc/X11 +XWRAPPER_CONFIG="$CONFIG_DIR/Xwrapper.config" + +allowed_users_english_to_actual () { + case "$1" in + "Root Only") + echo "rootonly" + ;; + "Console Users Only") + echo "console" + ;; + "Anybody") + echo "anybody" + ;; + *) + # garbage input; return default + echo "allowed_users_english_to_actual(): unrecognized input \"$1\";" \ + "using default" >&2 + echo "console" + ;; + esac +} + +allowed_users_actual_to_english () { + case "$1" in + "rootonly") + echo "Root Only" + ;; + "console") + echo "Console Users Only" + ;; + "anybody") + echo "Anybody" + ;; + *) + # garbage input; return default + echo "allowed_users_actual_to_english(): unrecognized input \"$1\";" \ + "using default" >&2 + echo "Console Users Only" + ;; + esac +} + +CURRENT_ALLOWED_USERS= + +# scan the X wrapper config file for existing settings, if it exists +if [ -e "$XWRAPPER_CONFIG" ]; then + if MATCHES=$(grep "^allowed_users=.\+" "$XWRAPPER_CONFIG"); then + CURRENT_ALLOWED_USERS=$(echo "${MATCHES##*=}" | head -n 1) + fi +fi + +if [ -n "$CURRENT_ALLOWED_USERS" ]; then + echo "setting xserver-xorg-legacy/xwrapper/allowed_users from configuration" \ + "file" >&2 + db_set xserver-xorg-legacy/xwrapper/allowed_users \ + $(allowed_users_actual_to_english \ + "$CURRENT_ALLOWED_USERS") +fi + +db_input low xserver-xorg-legacy/xwrapper/allowed_users || test $? = 30 +db_go + +RET= +if db_get xserver-xorg-legacy/xwrapper/allowed_users; then + if [ -n "$RET" ]; then + db_set xserver-xorg-legacy/xwrapper/actual_allowed_users \ + $(allowed_users_english_to_actual "$RET") + fi +fi +exit 0 + +# vim:set ai et sts=2 sw=2 tw=0: --- xorg-server-1.19.6.orig/debian/xserver-xorg-legacy.install +++ xorg-server-1.19.6/debian/xserver-xorg-legacy.install @@ -0,0 +1,3 @@ +usr/lib/xorg/Xorg.wrap +usr/share/man/man1/Xorg.wrap.1 +usr/share/man/man5/Xwrapper.config.5 --- xorg-server-1.19.6.orig/debian/xserver-xorg-legacy.postinst +++ xorg-server-1.19.6/debian/xserver-xorg-legacy.postinst @@ -0,0 +1,77 @@ +#!/bin/sh +# Debian xserver-xorg-legacy package post-installation script +# Copyright 1998--2001, 2003 Branden Robinson. +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . +# Acknowlegements to Stephen Early, Mark Eichin, and Manoj Srivastava. + +set -e + +. /usr/share/debconf/confmodule + +THIS_PACKAGE=xserver-xorg-legacy +THIS_SCRIPT=postinst +CONFIG_DIR=/etc/X11 +XWRAPPER_CONFIG="$CONFIG_DIR/Xwrapper.config" +CONFIG_AUX_DIR=/var/lib/x11 +XWRAPPER_CONFIG_CHECKSUM_BASE="${XWRAPPER_CONFIG##*/}.md5sum" +XWRAPPER_CONFIG_CHECKSUM="$CONFIG_AUX_DIR/$XWRAPPER_CONFIG_CHECKSUM_BASE" +XWRAPPER_CONFIG_ROSTER_BASE="${XWRAPPER_CONFIG##*/}.roster" +XWRAPPER_CONFIG_ROSTER="$CONFIG_AUX_DIR/$XWRAPPER_CONFIG_ROSTER_BASE" + +# only mess with config file it exists; otherwise, assume that's the way the +# user wants it, but only if upgrading +if [ -e "$XWRAPPER_CONFIG" ] || [ -z "$UPGRADE" ]; then + ALLOWED_USERS= + if db_get xserver-xorg-legacy/xwrapper/actual_allowed_users; then + ALLOWED_USERS="$RET" + fi + if [ -n "$ALLOWED_USERS" ]; then + NEW_XWRAPPER_CONFIG=$(tempfile -m 644) + if ! [ -e "$XWRAPPER_CONFIG" ]; then + cat >>"$NEW_XWRAPPER_CONFIG" << EOF +# Xwrapper.config (Debian X Window System server wrapper configuration file) +# +# This file was generated by the post-installation script of the +# xserver-xorg-legacy package using values from the debconf database. +# +# See the Xwrapper.config(5) manual page for more information. +# +# This file is automatically updated on upgrades of the xserver-xorg-legacy +# package *only* if it has not been modified since the last upgrade of that +# package. +# +# If you have edited this file but would like it to be automatically updated +# again, run the following command as root: +# dpkg-reconfigure xserver-xorg-legacy +allowed_users=$ALLOWED_USERS +EOF + else + sed -e '/^allowed_users.*/d' < "$XWRAPPER_CONFIG" > "$NEW_XWRAPPER_CONFIG" + echo "allowed_users=$ALLOWED_USERS" >> "$NEW_XWRAPPER_CONFIG" + fi + if ! cmp -s "$XWRAPPER_CONFIG" "$NEW_XWRAPPER_CONFIG"; then + cp "$NEW_XWRAPPER_CONFIG" "$XWRAPPER_CONFIG.dpkg-new" + mv "$XWRAPPER_CONFIG.dpkg-new" "$XWRAPPER_CONFIG" + fi + rm -f "$NEW_XWRAPPER_CONFIG" + else + echo "not updating $XWRAPPER_CONFIG; problems communicating" \ + "with debconf database" >&2 + fi +else + echo "not updating $XWRAPPER_CONFIG; file does not exist" >&2 +fi + +# get rid of obsolete X server wrapper config roster and checksum +if dpkg --compare-versions "$2" lt-nl 1:7.6~3; then + rm -f "$XWRAPPER_CONFIG_ROSTER" + rm -f "$XWRAPPER_CONFIG_CHECKSUM" + rmdir "$CONFIG_AUX_DIR" 2>/dev/null || : +fi + +#DEBHELPER# + +exit 0 + +# vim:set ai et sts=2 sw=2 tw=80: --- xorg-server-1.19.6.orig/debian/xserver-xorg-legacy.postrm +++ xorg-server-1.19.6/debian/xserver-xorg-legacy.postrm @@ -0,0 +1,36 @@ +#!/bin/sh +# Debian xserver-xorg-legacy package post-removal script +# Copyright 1998--2001, 2003 Branden Robinson. +# Licensed under the GNU General Public License, version 2. See the file +# /usr/share/common-licenses/GPL or . +# Acknowlegements to Stephen Early, Mark Eichin, and Manoj Srivastava. + + +set -e + +THIS_PACKAGE=xserver-xorg-legacy +THIS_SCRIPT=postrm +CONFIG_DIR=/etc/X11 +XWRAPPER_CONFIG="$CONFIG_DIR/Xwrapper.config" +CONFIG_AUX_DIR=/var/lib/x11 +XWRAPPER_CONFIG_CHECKSUM="$CONFIG_AUX_DIR/${XWRAPPER_CONFIG##*/}.md5sum" +XWRAPPER_CONFIG_ROSTER="$CONFIG_AUX_DIR/${XWRAPPER_CONFIG##*/}.roster" + +#INCLUDE_SHELL_LIB# + +# clean up non-conffile configuration files and related materials on purge +if [ "$1" = "purge" ]; then + rm -f "$XWRAPPER_CONFIG_ROSTER" + rm -f "$XWRAPPER_CONFIG" + rm -f "$XWRAPPER_CONFIG_CHECKSUM" + + for DIR in "$CONFIG_DIR" "$CONFIG_AUX_DIR"; do + rmdir "$DIR" 2> /dev/null || true + done +fi + +#DEBHELPER# + +exit 0 + +# vim:set ai et sts=2 sw=2 tw=80: --- xorg-server-1.19.6.orig/debian/xserver-xorg-legacy.templates +++ xorg-server-1.19.6/debian/xserver-xorg-legacy.templates @@ -0,0 +1,22 @@ +# These debconf templates have been proofread by the debian-l10n-english +# team. +# +# Please consider interacting with the team if you intend +# to modify the templates or add new templates + +Template: xserver-xorg-legacy/xwrapper/allowed_users +Type: select +__Choices: Root Only, Console Users Only, Anybody +Default: Console Users Only +_Description: Users allowed to start the X server: + Because the X server runs with superuser privileges, it may be unwise to + permit any user to start it, for security reasons. On the other hand, it is + even more unwise to run general-purpose X client programs as root, which is + what may happen if only root is permitted to start the X server. A good + compromise is to permit the X server to be started only by users logged in to + one of the virtual consoles. + +Template: xserver-xorg-legacy/xwrapper/actual_allowed_users +Type: string +Description: for internal use + This template is never shown to the user and does not require translation. --- xorg-server-1.19.6.orig/debian/xvfb.install +++ xorg-server-1.19.6/debian/xvfb.install @@ -0,0 +1,4 @@ +usr/bin/Xvfb +usr/bin/xvfb-run +usr/share/man/man1/xvfb-run.1 +usr/share/man/man1/Xvfb.1 --- xorg-server-1.19.6.orig/debian/xwayland.install +++ xorg-server-1.19.6/debian/xwayland.install @@ -0,0 +1 @@ +usr/bin/Xwayland --- xorg-server-1.19.6.orig/doc/c-extensions +++ xorg-server-1.19.6/doc/c-extensions @@ -0,0 +1,68 @@ +First of all: C89 or better. If you don't have that, port gcc first. + +Use of C language extensions throughout the X server tree +--------------------------------------------------------- + +Optional extensions: +The server will still build if your toolchain does not support these +extensions, although the results may not be optimal. + + * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.: + void parseOptions(Option *options _X_SENTINEL(0)); + parseOptions("foo", "bar", NULL); /* this is OK */ + parseOptions("foo", "bar", "baz"); /* this is not */ + This definition comes from Xfuncproto.h in the core + protocol headers. + * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics; + check the format string when built with + -Wformat (gcc) or similar. + * _X_EXPORT: this function should appear in symbol tables. + * _X_HIDDEN: this function should not appear in the _dynamic_ symbol + table. + * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function + is never called from another module. + * _X_INLINE: inline this function 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. --- xorg-server-1.19.6.orig/fix-miregion +++ xorg-server-1.19.6/fix-miregion @@ -0,0 +1,29 @@ +#!/bin/sh +sed -i \ +-e 's/miRegionCreate\b/RegionCreate/g' \ +-e 's/miRegionInit\b/RegionInit/g' \ +-e 's/miRegionDestroy\b/RegionDestroy/g' \ +-e 's/miRegionUninit\b/RegionUninit/g' \ +-e 's/miRegionCopy\b/RegionCopy/g' \ +-e 's/miIntersect\b/RegionIntersect/g' \ +-e 's/miUnion\b/RegionUnion/g' \ +-e 's/miRegionAppend\b/RegionAppend/g' \ +-e 's/miRegionValidate\b/RegionValidate/g' \ +-e 's/miRectsToRegion\b/RegionFromRects/g' \ +-e 's/miSubtract\b/RegionSubtract/g' \ +-e 's/miInverse\b/RegionInverse/g' \ +-e 's/miRectIn\b/RegionContainsRect/g' \ +-e 's/miTranslateRegion\b/RegionTranslate/g' \ +-e 's/miRegionReset\b/RegionReset/g' \ +-e 's/miRegionBreak\b/RegionBreak/g' \ +-e 's/miPointInRegion\b/RegionContainsPoint/g' \ +-e 's/miRegionEqual\b/RegionEqual/g' \ +-e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \ +-e 's/miRegionEmpty\b/RegionEmpty/g' \ +-e 's/miRegionExtents\b/RegionExtents/g' \ +-e 's/miPrintRegion\b/RegionPrint/g' \ +-e 's/miRectAlloc\b/RegionRectAlloc/g' \ +-e 's/miValidRegion\b/RegionIsValid/g' \ +-e 's/miRegionBroken\b/RegionBroken/g' \ +-e 's/miClipSpans\b/RegionClipSpans/g' \ +"$@" --- xorg-server-1.19.6.orig/fix-miregion-private +++ xorg-server-1.19.6/fix-miregion-private @@ -0,0 +1,14 @@ +#!/bin/sh +sed -i \ +-e 's/miEmptyBox\b/RegionEmptyBox/g' \ +-e 's/miEmptyData\b/RegionEmptyData/g' \ +-e 's/miBrokenData\b/RegionBrokenData/g' \ +-e 's/miBrokenRegion\b/RegionBrokenRegion/g' \ +-e 's/miCoalesce\b/RegionCoalesce/g' \ +-e 's/miAppendNonO\b/RegionAppendNonO/g' \ +-e 's/miRegionOp\b/RegionOp/g' \ +-e 's/miSetExtents\b/RegionSetExtents/g' \ +-e 's/miIntersectO\b/RegionIntersectO/g' \ +-e 's/miUnionO\b/RegionUnionO/g' \ +-e 's/miSubtractO\b/RegionSubtractO/g' \ +"$@" --- xorg-server-1.19.6.orig/fix-patch-whitespace +++ xorg-server-1.19.6/fix-patch-whitespace @@ -0,0 +1,4 @@ +#!/bin/sh +git diff --check | +sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' | +sh --- xorg-server-1.19.6.orig/fix-region +++ xorg-server-1.19.6/fix-region @@ -0,0 +1,38 @@ +#!/bin/sh +sed -i \ + -e 's/REGION_NIL\b/RegionNil/g' \ + -e 's/REGION_NAR\b/RegionNar/g' \ + -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \ + -e 's/REGION_SIZE\b/RegionSize/g' \ + -e 's/REGION_RECTS\b/RegionRects/g' \ + -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \ + -e 's/REGION_BOX\b/RegionBox/g' \ + -e 's/REGION_TOP\b/RegionTop/g' \ + -e 's/REGION_END\b/RegionEnd/g' \ + -e 's/REGION_SZOF\b/RegionSizeof/g' \ + -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \ + -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \ + -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \ + -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \ + -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \ + -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \ + -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \ + -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \ + -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \ + -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \ + -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \ + -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \ + -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \ + -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \ + -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \ + -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \ + -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \ + -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \ + -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \ + -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \ + -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \ + -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \ + -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \ + -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \ + -e 's/REGION_NULL$/RegionNull/g' \ + "$@" --- xorg-server-1.19.6.orig/hw/kdrive/Xkdrive.man +++ xorg-server-1.19.6/hw/kdrive/Xkdrive.man @@ -0,0 +1,50 @@ +.\" $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 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 -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. --- xorg-server-1.19.6.orig/hw/kdrive/fbdev/Xfbdev.man +++ xorg-server-1.19.6/hw/kdrive/fbdev/Xfbdev.man @@ -0,0 +1,28 @@ +.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $ +.\" +.TH Xfbdev 1 __vendorversion__ +.SH NAME +Xfbdev \- Linux framebuffer device tiny X server +.SH SYNOPSIS +.B Xfbdev +.RI [ :display ] +.RI [ option ...] +.SH DESCRIPTION +.B Xfbdev +is a generic X server for Linux. +.B Xfbdev +doesn't know about any particular hardware, and uses the framebuffer +provided by the Linux framebuffer device. +.SH OPTIONS +.B Xfbdev +accepts the common options of the Xkdrive family of servers. Please +see Xkdrive(1). +.SH KEYBOARD +To be written. +.SH SEE ALSO +X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1). +.SH AUTHORS +The +.B Xfbdev +server was written by Keith Packard. + --- xorg-server-1.19.6.orig/hw/xfree86/os-support/shared/platform_noop.c +++ xorg-server-1.19.6/hw/xfree86/os-support/shared/platform_noop.c @@ -0,0 +1,23 @@ + +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + +#ifdef XSERVER_PLATFORM_BUS +/* noop platform device support */ +#include "xf86_OSproc.h" + +#include "xf86.h" +#include "xf86platformBus.h" + +Bool +xf86PlatformDeviceCheckBusID(struct xf86_platform_device *device, const char *busid) +{ + return FALSE; +} + +void xf86PlatformDeviceProbe(struct OdevAttributes *attribs) +{ + +} +#endif --- xorg-server-1.19.6.orig/hw/xfree86/xkb/meson.build +++ xorg-server-1.19.6/hw/xfree86/xkb/meson.build @@ -0,0 +1,12 @@ +srcs_xorg_xkb = [ + 'xkbVT.c', + 'xkbPrivate.c', + 'xkbKillSrv.c', +] + +xorg_xkb = static_library('xorg_xkb', + srcs_xorg_xkb, + include_directories: [inc, xorg_inc], + dependencies: common_dep, + c_args: xorg_c_args, +) --- xorg-server-1.19.6.orig/hw/xquartz/GL/glcontextmodes.c +++ xorg-server-1.19.6/hw/xquartz/GL/glcontextmodes.c @@ -0,0 +1,585 @@ +/* + * (C) Copyright IBM Corporation 2003 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file glcontextmodes.c + * Utility routines for working with \c __GLcontextModes structures. At + * some point most or all of these functions will be moved to the Mesa + * code base. + * + * \author Ian Romanick + */ + +#if defined(IN_MINI_GLX) +#include +#else +#if defined(HAVE_DIX_CONFIG_H) +#include +#endif +#include +#include +#include "GL/glxint.h" +#endif + +/* Memory macros */ +#if defined(IN_MINI_GLX) +#include +#include +#define _mesa_malloc(b) malloc(b) +#define _mesa_free(m) free(m) +#define _mesa_memset memset +#else +#ifdef XFree86Server +#include +#include +#define _mesa_malloc(b) malloc(b) +#define _mesa_free(m) free(m) +#define _mesa_memset memset +#else +#include +#define _mesa_memset memset +#define _mesa_malloc(b) Xmalloc(b) +#define _mesa_free(m) free(m) +#endif /* XFree86Server */ +#endif /* !defined(IN_MINI_GLX) */ + +#include "glcontextmodes.h" + +#if !defined(IN_MINI_GLX) +#define NUM_VISUAL_TYPES 6 + +/** + * Convert an X visual type to a GLX visual type. + * + * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) + * to be converted. + * \return If \c visualType is a valid X visual type, a GLX visual type will + * be returned. Otherwise \c GLX_NONE will be returned. + */ +GLint +_gl_convert_from_x_visual_type(int visualType) +{ + static const int glx_visual_types[NUM_VISUAL_TYPES] = { + GLX_STATIC_GRAY, GLX_GRAY_SCALE, + GLX_STATIC_COLOR, GLX_PSEUDO_COLOR, + GLX_TRUE_COLOR, GLX_DIRECT_COLOR + }; + + return ((unsigned)visualType < NUM_VISUAL_TYPES) + ? glx_visual_types[visualType] : GLX_NONE; +} + +/** + * Convert a GLX visual type to an X visual type. + * + * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, + * \c GLX_STATIC_GRAY, etc.) to be converted. + * \return If \c visualType is a valid GLX visual type, an X visual type will + * be returned. Otherwise -1 will be returned. + */ +GLint +_gl_convert_to_x_visual_type(int visualType) +{ + static const int x_visual_types[NUM_VISUAL_TYPES] = { + TrueColor, DirectColor, + PseudoColor, StaticColor, + GrayScale, StaticGray + }; + + return ((unsigned)(visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES) + ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1; +} + +/** + * Copy a GLX visual config structure to a GL context mode structure. All + * of the fields in \c config are copied to \c mode. Additional fields in + * \c mode that can be derrived from the fields of \c config (i.e., + * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode + * that cannot be derived are set to default values. + * + * \param mode Destination GL context mode. + * \param config Source GLX visual config. + * + * \note + * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes + * structure will be set to the \c vid of the \c __GLXvisualConfig structure. + */ +void +_gl_copy_visual_to_context_mode(__GLcontextModes * mode, + const __GLXvisualConfig * config) +{ + __GLcontextModes * const next = mode->next; + + (void)_mesa_memset(mode, 0, sizeof(__GLcontextModes)); + mode->next = next; + + mode->visualID = config->vid; + mode->visualType = _gl_convert_from_x_visual_type(config->class); + mode->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)); +} --- xorg-server-1.19.6.orig/hw/xquartz/GL/glcontextmodes.h +++ xorg-server-1.19.6/hw/xquartz/GL/glcontextmodes.h @@ -0,0 +1,60 @@ +/* + * (C) Copyright IBM Corporation 2003 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file glcontextmodes.h + * \author Ian Romanick + */ + +#ifndef GLCONTEXTMODES_H +#define GLCONTEXTMODES_H + +#include "GL/internal/glcore.h" + +#if !defined(IN_MINI_GLX) +extern GLint +_gl_convert_from_x_visual_type(int visualType); +extern GLint +_gl_convert_to_x_visual_type(int visualType); +extern void +_gl_copy_visual_to_context_mode(__GLcontextModes * mode, + const __GLXvisualConfig * config); +extern int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return); +#endif /* !defined(IN_MINI_GLX) */ + +extern __GLcontextModes * +_gl_context_modes_create(unsigned count, size_t minimum_size); +extern void +_gl_context_modes_destroy(__GLcontextModes * modes); +extern __GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid); +extern __GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid); +extern GLboolean +_gl_context_modes_are_same(const __GLcontextModes * a, + const __GLcontextModes * b); + +#endif /* GLCONTEXTMODES_H */ --- xorg-server-1.19.6.orig/hw/xwin/winclipboard/internal.h +++ xorg-server-1.19.6/hw/xwin/winclipboard/internal.h @@ -0,0 +1,125 @@ + +/* + *Copyright (C) 2003-2004 Harold L Hunt II 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 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. + * + * Authors: Harold L Hunt II + */ + +#ifndef WINCLIPBOARD_INTERNAL_H +#define WINCLIPBOARD_INTERNAL_H + +/* X headers */ +#include + +/* Windows headers */ +#include + +#define WIN_XEVENTS_SUCCESS 0 +#define WIN_XEVENTS_FAILED 1 +#define WIN_XEVENTS_NOTIFY_DATA 3 +#define WIN_XEVENTS_NOTIFY_TARGETS 4 + +#define WM_WM_REINIT (WM_USER + 1) +#define WM_WM_QUIT (WM_USER + 2) + +/* + * References to external symbols + */ + +extern void winDebug(const char *format, ...) _X_ATTRIBUTE_PRINTF(1, 2); +extern void ErrorF(const char *format, ...) _X_ATTRIBUTE_PRINTF(1, 2); + +/* + * winclipboardtextconv.c + */ + +void + winClipboardDOStoUNIX(char *pszData, int iLength); + +void + winClipboardUNIXtoDOS(char **ppszData, int iLength); + +/* + * winclipboardthread.c + */ + + +typedef struct +{ + Atom atomClipboard; + Atom atomLocalProperty; + Atom atomUTF8String; + Atom atomCompoundText; + Atom atomTargets; +} ClipboardAtoms; + +/* Modern clipboard API functions */ +typedef wBOOL WINAPI (*ADDCLIPBOARDFORMATLISTENERPROC)(HWND hwnd); +typedef wBOOL WINAPI (*REMOVECLIPBOARDFORMATLISTENERPROC)(HWND hwnd); + +extern Bool g_fHasModernClipboardApi; +extern ADDCLIPBOARDFORMATLISTENERPROC g_fpAddClipboardFormatListener; +extern REMOVECLIPBOARDFORMATLISTENERPROC g_fpRemoveClipboardFormatListener; + +/* + * winclipboardwndproc.c + */ + +Bool winClipboardFlushWindowsMessageQueue(HWND hwnd); + +LRESULT CALLBACK +winClipboardWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); + +typedef struct +{ + Display *pClipboardDisplay; + Window iClipboardWindow; + ClipboardAtoms *atoms; +} ClipboardWindowCreationParams; + +/* + * winclipboardxevents.c + */ + +typedef struct +{ + Bool fUseUnicode; + Atom *targetList; +} ClipboardConversionData; + +int +winClipboardFlushXEvents(HWND hwnd, + Window iWindow, Display * pDisplay, ClipboardConversionData *data, ClipboardAtoms *atom); + + +Atom +winClipboardGetLastOwnedSelectionAtom(ClipboardAtoms *atoms); + +void +winClipboardInitMonitoredSelections(void); + +#endif --- xorg-server-1.19.6.orig/xkb/XKM_file_format.txt +++ xorg-server-1.19.6/xkb/XKM_file_format.txt @@ -0,0 +1,684 @@ + XKM File Format Description + Version 15 + +1. Introduction + +The XKM file format is the exchange format for XKB keyboard descriptions +between the server and xkbcomp. Usually, the server forks off xkbcomp, +xkbcomp compiles the XKM format from the given parameters. +The resulting XKM file is put into a directory readable by the server and +then parsed. + +The XKM format is little more than a binary dump of various XKB-specific +structures and hence tied to the ABI of the server. + + ❧❧❧❧❧❧❧❧❧❧❧ + +1.1 About this file format description + +This description was produced by analyzing the XKM parsing code. Parts of +the file description present in the original format specification may be +missing. This description thus cannot be a reference document for XKM +implementations. + +No description of the meaning of the various fields is given here. Refer to +the XKB protocol specification for more details. + ❧❧❧❧❧❧❧❧❧❧❧ + +2. Notations used in this document + +Notation for structures: + +┌─── + Name of struct + name of field: type or fixed value of field + name of field: type or fixed value of field +└─── + +Data types are identical to those used in the X Protocol specification +except where noted otherwise. Structs specific to XKM are prefixed with XKM, +defines specific to the XKB protocol specification are prefixed with Xkb and +their value is equivalent to that in the protocol specification. + +Multiple instances of a given type are denoted in the following form: + name of field: LISTofFIELDTYPE + +Length specifiers for such fields are usually prefixed with num_. For +example, a struct containing a num_foo of 8 and a 'foo' field contains 8 +structures of type 'foo'. + +Variable length padding is specified as pad(x), where x is the length of the +data to be padded out to a multiple of 4 bytes. For example, given an x of +10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12 +bytes. + +A special notation is a variable content struct. In this case, the contents +of the struct depend on the value of one or more specific fields. +┌─── + Name of struct + field: type or fixed value of field + field: type or fixed value of field + ─── + field ⇒ value 1 + ⇒ + specific field: type + specific field: type + ─── + field ⇒ value 2 + ⇒ + specific field: type + specific field: type +└─── +This notation denotes that if field is of value 1, this struct contains the +specific fields listed underneath value 1. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3. XKM Format + +The XKM format is a binary format with structs usually being padded to a +multiple of 4 bytes. No provisions for endianess are provided, the parser is +left to guess the endianess of the XKM file. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.1 Common data types + +┌─── + XKMCountedString + count: CARD16 + string: count * CHAR + pad: pad(count + 2) +└─── + +XKMCountedString is used for user-readable identifiers. Prime example are +the level names and the section names ("complete", "evdev(inet)", etc.) + +┌─── + XKMGroupBits: CARD8 + group1 0x1 + group2 0x2 + group3 0x4 + group4 0x8 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.2 Header and Table of Contents + +┌─── + XKMHeader + version: CARD8 + identifier1: 'm' + identifier2: 'k' + idenfifier3: 'x' +└─── + +The XKM file format has a 4 byte header identifying the file and the XKM +version. The header is followed by the table of contents indicating the +sections present in this file. + +┌─── + XKMFileInfo + type: CARD8 + min_keycode: CARD8 + max_keycode: CARD8 + num_sectioninfo: CARD8 + present: CARD16 + pad: CARD16 + sectioninfo: LISTofXKMSectionInfo +└─── + +min_keycode and max_keycode specify the keycode range for this keyboard +descriptions. The core protocol requires min_keycode always be equal to or +greater than 8. + +┌─── + XKMSectionInfo + type: CARD16 + XkmTypesIndex 0 + XkmCompatMapIndex 1 + XkmSymbolsIndex 2 + XkmIndicatorsIndex 3 + XkmKeyNamesIndex 4 + XkmGeometryIndex 5 + XkmVirtualModsIndex 6 + format: CARD16 + size: CARD16 + offset: CARD16 +└─── + +Describes the section found in a chunk of a file. This struct is found +_twice_ in the file per section, once as part of the XKMFileInfo, once at +the beginning of the actual section (see offset). +The type specifies the type of the section, the section is to be parsed +according to this type. +Size and offset specify the size in bytes and the offset into the file in +bytes, respectively. + +3.3 Sections + +Each section resides at the offset specified in the XKMFileInfo sectioninfo. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.1 XKMTypes + +An XKMTypes section describes the key types defined in a layout. Roughly +speaking, a key type defines how many levels a given key has and which +modifiers change to a particular level. + +┌─── + XKMTypesSection + section_info: XKMSectionInfo + name: XKMCountedString + num_types: CARD16 + pad: CARD16 + types: LISTofXKMKeyType +└─── + +┌─── + XKMKeyType + real_mods: CARD8 + num_levels: CARD8 + virt_mods: CARD16 + num_map_entries: CARD8 + num_level_names: CARD8 + perserve: CARD8 + pad: CARD8 + map_entries: LISTofXKMKTMapEntry + name: XKMCountedString + mods: LISTofXKMModsDesc + level_names: LISXTofXKMCountedString +└─── + +The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE. + +┌─── + XKMKTMapEntry + level: CARD8 + real_mods: CARD8 + virt_mods: CARD16 +└─── + +┌─── + XKMModsDesc + real_mods: CARD8 + pad: CARD8 + virt_mods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.2 XKMCompatMap + +An XKMCompatMap section describes the actions a keyboard may trigger. This +ranges from the TerminateServer action to simple modifier bits. + +┌─── + XKMCompatMap + section_info: XKMSectionInfo + name: XKMCountedString + num_si: CARD16 + group_mask: XKMGroupBits + pad: CARD8 + si: LISTofXKMSymInterpreterDesc + groups: LISTofXKMModsDesc +└─── + +One XKMModsDesc is present for each bit set in group_mask. + +┌─── + XKMSymInterpretDesc + sym: CARD32 + mods: CARD8 + match: CARD8 + virtual_mod: CARD8 + flags: CARD8 + action_type: CARD8 + action_data: XKMActionData +└─── + +Where the action is 7 bytes of CARD8 whose content is determined by +action_type. + +┌─── + XKMActionData: + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_SetMods || + action_type ⇒ XkbSA_LatchMods || + action_type ⇒ XkbSA_LockMods + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + vmods1: CARD8 + vmods2: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_SetGroup || + action_type ⇒ XkbSA_LatchGroup || + action_type ⇒ XkbSA_LockGroup + ⇒ + flags: CARD8 + group_XXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_MovePtr + ⇒ + flags: CARD8 + high_XXX: CARD8 + low_XXX: CARD8 + high_YYY: CARD8 + low_YYY: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_PtrBtn || + action_type ⇒ XkbSA_LockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + pad: CARD32 + ─── + action_type ⇒ XkbSA_DeviceBtn || + action_type ⇒ XkbSA_LockLockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + device: CARD8 + pad0: CARD8 + pad1: CARD16 + ─── + action_type ⇒ XkbSA_SetPtrDflt + ⇒ + flags: CARD8 + affect: CARD8 + valueXXX: CARD8 + pad0: CARD32 + ─── + action_type ⇒ XkbSA_ISOLock + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + group_XXX: CARD8 + affect: CARD8 + vmods1: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_SwitchScreen + ⇒ + flags: CARD8 + screenXXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_SetControls || + action_type ⇒ XkbSA_LockControls + ⇒ + flags: CARD8 + ctrls3: CARD8 + ctrls2: CARD8 + ctrls1: CARD8 + ctrls0: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_RedirectKey + ⇒ + new_key: CARD8 + mods_mask: CARD8 + mods: CARD8 + vmods_mask0: CARD8 + vmods_mask1: CARD8 + vmods0: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_DeviceValuator + ⇒ + device: CARD8 + v1_what: CARD8 + v1_idx: CARD8 + v1_value: CARD8 + v2_what: CARD8 + v2_idx: CARD8 + v2_value: CARD8 + pad: CARD8 + ─── + action_type ⇒ XkbSA_XFree86Private || + action_type ⇒ XkbSA_Terminate + ⇒ + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_ActionMessage + ⇒ + press_msg: BOOL + release_msg: BOOL + gen_event: BOOL + message: 4 * CHAR +└─── + +Note: XkbSA_ActionMessage is currently unsupported and the contents are +ignored. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.3 XkmSymbols + +The symbols in a keymap define the actual keysyms each key may produce. + +┌─── + XKMSymbols + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + group_names_mask: XKMGroupBits + num_vmod_maps: CARD8 + group_names: LISTofXKMCountedString + keysyms: XKMKeysymMapDesc + vmod_maps: XKMVModMapDesc +└─── +One group_name is present for each bit set in group_names_mask. +The number of keysyms present is max_keycode - min_keycode + 1. + +┌─── + XKMKeysymMapDesc + width: CARD8 + num_groups: CARD8 + modifier_map: CARD8 + flags: CARD8 + names: LISTofXKMCountedString + syms: LISTofCARD32 + behavior: XKMBehaviorDesc +└─── + +Presence of names is conditional on the XkmKeyHasTypes flag. The number of +strings is equal to the number of group bits in group_names_mask in the +preceeding XKMSymbols section. +The number of elements in syms is equal to width * num_groups. +Presence of behavior is conditional on the XkmKeyHasBehavior flag. + +┌─── + XKMKeyBehaviorDesc + type: CARD8 + data: CARD8 + pad: CARD16 +└─── + +┌─── + XKMVModMapDesc + key: CARD8 + pad: CARD8 + vmods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.4 XKMIndicators + +┌─── + XKMIndicators + section_info: XKMSectionInfo + name: XKMCountedString + num_indicators: CARD8 + pad0: CARD8 + pad1: CARD16 + indicators: LISTofXKMIndicatorMapDesc +└─── + +┌─── + XKMIndicatorMapDesc + name: XKMCountedString + indicator: CARD8 + flags: CARD8 + which_mods: CARD8 + real_mods: CARD8 + vmods: CARD16 + which_groups: CARD8 + groups: CARD8 + ctrls: CARD32 +└─── + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMKeyNames + +┌─── + XKMKeyNames + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + num_aliases: CARD8 + pad: CARD8 + keynames: LISTofXKMKeyname + aliases: LISTofXKMKeyAlias +└─── + +keynames contains max_keycode - min_keycode + 1 entries. + +┌─── + XkmKeyname + name: 4 * CHAR8 +└─── + +┌─── + XkmKeyAlias + real: XkmKeyname + alias: XkmKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMGeometry + +┌─── + XKMGeometry + section_info: XKMSectionInfo + name: XKMCountedString + width_mm: CARD16 + height_mm: CARD16 + base_color_ndx: CARD8 + label_color_ndx: CARD8 + num_properties: CARD16 + num_colors: CARD16 + num_shapes: CARD16 + num_sections: CARD16 + num_doodads: CARD16 + num_key_aliases: CARD16 + pad: CARD16 + label_font: XKMCountedString + properties: LISTofXKMGeomProperty + colors: LISTofXKMCountedString + shapes: LISTofXKMGeomShape + sections: LISTofXKMGeomSection + doodads: LISTofXKMGeomDoodad + key_aliases: LISTofXKMKeyAlias +└─── + +┌─── + XKMGeomProperty + name: XKMCountedString + value: XKMCountedString + +└─── + +┌─── + XKMGeomShape + name: XKMCountedString + num_outlines: CARD8 + primary_idx: CARD8 + approx_idx: CARD8 + pad: CARD8 + outlines: LISTofXKMOutlineDesc +└─── + +┌─── + XKMOutlineDesc + num_points: CARD8 + corner_radius: CARD8 + pad: CARD16 + points: LISTofXKMPointDesc +└─── + +┌─── + XKMPointDesc + x: INT16 + y: INT16 +└─── + +┌─── + XKMGeomSection + name: XKMCountedString + top: INT16 + left: INT16 + width: CARD16 + height: CARD16 + angle: INT16 + priority: CARD8 + num_rows: CARD8 + num_doodads: CARD8 + num_overlays: CARD8 + pad: CARD16 + rows: LISTofXKMRowDesc + doodads: LISTofXKMGeomDoodad + overlays: LISTofXKMGeomOverlay +└─── + +┌─── + XKMRowDesc + top: INT16 + left: INT16 + num_keys: CARD8 + vertical: BOOL + pad: CARD16 + keys: XKMKeyDesc +└─── + +┌─── + XKMKeyDesc + name: XKMKeyname + gap: INT16 + shape_idx: CARD8 + color_idx: CARD8 +└─── + +┌─── + XKMGeomDoodad + name: XKMCountedString + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + pad1: CARD16 + pad2: CARD32 + pad3: CARD32 + ─── + type ⇒ XkbOutlineDoodad || + type ⇒ XkbSolideDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + ─── + type ⇒ XkbTextDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + width: CARD16 + height: CARD16 + color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + text: XKMCountedString + font: XKMCountedString + ─── + type ⇒ XkbIndicatorDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + shape_idx: CARD8 + on_color_idx: CARD8 + off_color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + type ⇒ XkbLogoDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + logo_name: XKMCountedString +└─── + +WARNING: XKMGeomDoodad has variable length depending on the type. +NOTE: The current server implementation does not use all fields of all +structures. + +┌─── + XKMOverlayDesc + name: XKMCountedString + num_rows: CARD8 + pad0: CARD8 + pad1: CARD16 + rows: LISTofXKMOverlayRowDesc +└─── + +┌─── + XKMOverlayRowDesc + name: XKMCountedString + row_under: CARD8 + num_keys: CARD8 + pad: CARD16 + keys: LISTofXKMOverlayKeyDesc +└─── + +┌─── + XKMOverlayKeyDesc + over: XKMKeyname + under: XKMKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.6 XKMVirtualMods + +┌─── + XKMOverlayRowDesc + section_info: XKMSectionInfo + name: XKMCountedString + bound_mask: SETofVMODBITS + named_mask: SETofVMODBITS + vmods: LISTofCARD8 + pad: pad(vmods) + names: LISTofXKMCountedString +└─── + + VMODBITS: CARD16 + +Number of elements in vmods is equal to the number of bits set in +bound_mask. The padding completes vmods to a multiple of 4 byte units. +Number of elements in names is equal to the number of bits set in +named_mask.