diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2013-12-28 14:40:03 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2013-12-28 14:40:03 +0000 |
commit | fc3a735d42a0dcd748b6b8dc2c63bafde01effd0 (patch) | |
tree | 9b40fc63ccdb80ebec638a8c31e73c17f8dbbaeb /xserver | |
parent | da8308393b93d5c87075d65ace98cd249643e165 (diff) |
Update to xserver 1.14.5
Diffstat (limited to 'xserver')
-rw-r--r-- | xserver/ChangeLog | 428 | ||||
-rw-r--r-- | xserver/Xext/sync.c | 11 | ||||
-rw-r--r-- | xserver/configure | 24 | ||||
-rw-r--r-- | xserver/configure.ac | 6 | ||||
-rw-r--r-- | xserver/glx/glxdricommon.c | 24 | ||||
-rw-r--r-- | xserver/hw/xfree86/common/xf86Bus.c | 5 | ||||
-rw-r--r-- | xserver/hw/xfree86/common/xf86platformBus.c | 6 | ||||
-rw-r--r-- | xserver/hw/xfree86/modes/xf86RandR12.c | 21 | ||||
-rw-r--r-- | xserver/hw/xquartz/X11Controller.m | 2 | ||||
-rw-r--r-- | xserver/hw/xquartz/bundle/Info.plist.cpp | 8 | ||||
-rw-r--r-- | xserver/miext/damage/damage.c | 5 | ||||
-rw-r--r-- | xserver/randr/randr.c | 120 | ||||
-rw-r--r-- | xserver/randr/randrstr.h | 12 | ||||
-rw-r--r-- | xserver/randr/rrcrtc.c | 6 | ||||
-rw-r--r-- | xserver/randr/rrinfo.c | 2 | ||||
-rw-r--r-- | xserver/randr/rroutput.c | 7 | ||||
-rw-r--r-- | xserver/randr/rrpointer.c | 2 | ||||
-rw-r--r-- | xserver/randr/rrprovider.c | 25 | ||||
-rw-r--r-- | xserver/randr/rrscreen.c | 2 |
19 files changed, 680 insertions, 36 deletions
diff --git a/xserver/ChangeLog b/xserver/ChangeLog index 0ad7f7215..5aabd0e52 100644 --- a/xserver/ChangeLog +++ b/xserver/ChangeLog @@ -1,9 +1,437 @@ +commit 200f98894a43114586eb2d4405e766e8a4a59221 +Author: Matt Dew <marcoz@osource.org> +Date: Thu Dec 12 20:51:27 2013 -0700 + + bump version from 1.14.4.901 to 1.14.5 + +commit c30db601a619b741260f02aa08ccec57ab9d43ba +Author: Matt Dew <marcoz@osource.org> +Date: Thu Nov 21 21:55:35 2013 -0700 + + bump version to 1.14.4.901 + +commit 384588bd8408d50b1b29b174af75c7b1cd3ff60d +Merge: 6cc5efa 7ddc6f7 +Author: Matt Dew <marcoz@osource.org> +Date: Sat Nov 16 15:27:35 2013 -0700 + + Merge commit '7ddc6f7f1ed0e0f85b2d617c59d75d5de1cd2d5a' into server-1.14-branch + +commit 6cc5efa68e5fdc301ab9a381bffe88fe5c7865e2 +Author: Peter Hutterer <peter.hutterer@who-t.net> +Date: Wed Oct 30 15:40:58 2013 +1000 + + sync: fix corner-case in triggering idle alarms + + ProcessInputEvent() resets the device idle times. If idle time was higher than + the lower bracket, this should trigger an event in the idle time wakeup + handler. + + If processing is slow, the idle time may advance past the lower bracket + between the reset and the time the BlockHandler is called. In that case, we'd + never schedule a wakeup to handle the event, causing us to randomly miss + events. + + Ran tests with a neg transition trigger on 5ms with 200 repeats of the test + and it succeeded. Anything below that gets a bit tricky to make sure the + server sees the same idle time as the client usleeps for. + + Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> + Reviewed-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit f36f5a65f639b6524191d888d5bf89e73027156c) + +commit 7ddc6f7f1ed0e0f85b2d617c59d75d5de1cd2d5a +Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Fri Nov 8 14:55:33 2013 -0800 + + xfree86: Fix build without libpciaccess + + Regression fix from commit 04ab07ca19236d6c9a947e065fb69b0dd0d16639 + + Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> + Reviewed-by: Connor Behan <connor.behan@gmail.com> + (cherry picked from commit 4a251f5883b042cd902c192060a0be2b11148f2b) + +commit c6fd9c11f7302f4ac77bce37687c8bbffbf8ed65 +Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Sun Nov 10 11:40:27 2013 -0800 + + XQuartz: Don't sleep forever on exit if usleep() returns an error + + Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> + (cherry picked from commit f70a8bf3714d89bccaad36841ef9149e91ad3bba) + +commit c82a90815cef2d92f6aabb2b0991b3cda71d23c4 +Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Sun Nov 10 11:26:49 2013 -0800 + + XQuartz: Update Info.plist copyright years + + Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> + (cherry picked from commit ebcc1c214c466582d7b92826b4860256fd9c582a) + +commit 339af2ae943d943f8ce986fc7bdcb8aa52b44922 +Author: Eric Anholt <eric@anholt.net> +Date: Tue Oct 22 14:22:04 2013 -0700 + + glx: Add support for the new DRI loader entrypoint. + + This is going to be exposed (and not the old entrypoint) for some DRI + drivers once the megadrivers series lands, and the plan is to + eventually transition all drivers to that. Hopefully this is + unobtrusive enough to merge to stable X servers so that they can be + compatible with new Mesa versions. + + v2: typo fix in the comment + + Signed-off-by: Eric Anholt <eric@anholt.net> + Reviewed-by: Adam Jackson <ajax@redhat.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + +commit 833639d2653a869c2ec8692640213e2ffa16fbb4 +Merge: cf684f0 94b7f26 +Author: Matt Dew <marcoz@osource.org> +Date: Tue Nov 5 20:06:28 2013 -0700 + + Merge commit '94b7f26aeda31cf55ff9b7c04f390ba6d35977e4' into server-1.14-branch + +commit cf684f05180e8b3eb29ca94bbab84abb99f0f578 +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:51 2013 +0200 + + randr: deliver Output and Crtc events of attached output providers. + + Consider all attached output providers when looking for changed outputs and + crtcs. + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit 85ae44f07fa21b4a48d95d736dc8135bd4f751d0) + +commit 87d66ccfec6808fd753da04254c096fa4a3d14cb +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:50 2013 +0200 + + randr: send RRResourceChangeNotify event (abi unbreak) + + Send RRResourceChangeNotify event when provider, output or crtc was created or + destroyed. I.e. when the list of resources returned by RRGetScreenResources and + RRGetProviders changes. + + [airlied: move structure member to avoid ABI breakage] + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit a9ca93dcf9a711b3d60fbad31cbd44e0c82b6f42) + +commit 9cc5d700b1e963284992ea3be7c93d425120c713 +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:49 2013 +0200 + + randr: send RRProviderChangeNotify event (abi unbreak) + + Send RRProviderChangeNotify event when a provider becomes output source or + offload sink. + + [airlied: unbreak the ABI for 1.14 backport.] + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit 4b39ea8a918fe6117bf34dc1cba67a4e56d0d1fb) + +commit 4cd0af4bb2662554e9bf3c044b8233019515e758 +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:26:35 2013 +1000 + + randr: report changes when we disconnect a GPU slave + + When we disconnect an output/offload slave set the changed bits, + so a later TellChanged can do something. + + Then when we remove a GPU slave device, sent change notification + to the protocol screen. + + This allows hot unplugged USB devices to disappear in clients. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + (cherry picked from commit 9d26e8eaf5a2d7c3e65670ac20254c60f665c463) + +commit 33b110d2dd74d4474c13f529b36fe30019fabcfc +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:25:43 2013 +1000 + + randr: only respected changed on the protocol screen + + We don't want to know about changes on the non-protocol screen, + we will fix up setchanged to make sure non-protocol screens update + the protocol screens when they have a change. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + (cherry picked from commit e233bda3e7c68234b34a8b7ad04b27c6e2009a8f) + +commit 8d923f090fd793a52b2a9a84353a242b30b12b99 +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:29:47 2013 +1000 + + randr: make SetChanged modify the main protocol screen not the gpu screen + + When SetChanged is called we now modify the main protocol screen, + not the the gpu screen. Since changed stuff should work at the protocol level. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + (cherry picked from commit b3f70f38edebac87afe9351538365292f1aaaff3) + +commit cc9579aee3b44e43a69fbf8c24ef88dfabe7f16d +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:23:57 2013 +1000 + + randr: don't directly set changed bits in randr screen + + Introduce a wrapper interface so we can fix things up for multi-gpu + situations later. + + This just introduces the API for now. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + (cherry picked from commit f9c8248b8326ad01f33f31531c6b2479baf80f02) + +commit 98ef5bc9aa421961e6c1654963af86d5ff3092db +Author: Adam Jackson <ajax@redhat.com> +Date: Wed Aug 21 14:12:52 2013 -0400 + + randr: Fix a copypasta bug in CRTC confinement + + Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> + Signed-off-by: Adam Jackson <ajax@redhat.com> + (cherry picked from commit 1c8beedfe4343377fa3504f8ab71430cc137b22c) + +commit 2bea21ea7e6d474d2a075dd7d37464929ff5855b +Author: Aaron Plattner <aplattner@nvidia.com> +Date: Tue Apr 30 14:14:23 2013 -0700 + + xfree86: detach scanout pixmaps when detaching output GPUs + + Commit 8f4640bdb9d3988148e09a08d2c7e3bab1d538d6 fixed a bit of a + chicken-and-egg problem by detaching GPU screens when their providers + are destroyed, which happens before CloseScreen is called. However, + this created a new problem: the GPU screen tears down its RandR crtc + objects during CloseScreen and if one of them is active, it tries to + detach the scanout pixmap then. This crashes because + RRCrtcDetachScanoutPixmap tries to get the master screen's screen + pixmap, but crtc->pScreen->current_master is already NULL at that + point. + + It doesn't make sense for an unbound GPU screen to still be scanning + out its former master screen's pixmap, so detach them first when the + provider is destroyed. + + Signed-off-by: Aaron Plattner <aplattner@nvidia.com> + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit bdd1e22cbde9ea2324e4e1991c9e152f22f88151) + +commit 9fbbea8cda199c5efdf3d3ae7485eb9ba62cde8b +Author: Dave Airlie <airlied@redhat.com> +Date: Tue Nov 5 13:19:41 2013 +1000 + + Revert "Merge commit 'f98d6cfa0de41cf33e7555342753897c07af84ef' into server-1.14-branch" + + This reverts commit ad2fa50b5371f6e71a66d47e73304599c90f9118, reversing + changes made to bab4908579f6b034ea38f8df2f8dc1f9f026f5e1. + + oops i broke ABI. + + Signed-off-by: Dave Airlie <airlied@redhat.com> + +commit 94b7f26aeda31cf55ff9b7c04f390ba6d35977e4 +Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Thu Oct 31 08:57:56 2013 -0700 + + miext/damage: Partial revert of "Only wrap into the GC ops chain if there's a listener (v3)" + + Fixes regression from: 4dc2a76740d921c824a4d8193f39dd373475f02a + + http://lists.x.org/archives/xorg-devel/2013-May/036241.html + https://trac.macports.org/ticket/38993 + + Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> + Reviewed-by: Adam Jackson <ajax@redhat.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + (cherry picked from commit abf5d5ac12437ebe156b4dd500c2acd69eea3654) + +commit 0a1628bca7b6c85054041312987b73e701aecb80 +Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Tue Oct 29 11:06:55 2013 -0700 + + XQuartz: Bump bundle version to 2.7.5 + + Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> + +commit ad2fa50b5371f6e71a66d47e73304599c90f9118 +Merge: bab4908 f98d6cf +Author: Matt Dew <marcoz@osource.org> +Date: Thu Oct 31 23:53:04 2013 -0600 + + Merge commit 'f98d6cfa0de41cf33e7555342753897c07af84ef' into server-1.14-branch + +commit bab4908579f6b034ea38f8df2f8dc1f9f026f5e1 +Author: Connor Behan <connor.behan@gmail.com> +Date: Thu Oct 17 18:26:28 2013 -0700 + + xfree86: Find primary entity when bus types are nominally different + + As of server 1.13, systems with DRM and Udev will have BUS_PLATFORM as + their primary bus type. However, drivers not implementing a + platformProbe function will still create entities of type BUS_PCI. We + need to account for this when checking for the primary entity. + + Signed-off-by: Connor Behan <connor.behan@gmail.com> + Acked-by: Tormod Volden <debian.tormod@gmail.com> + Reviewed-by: Adam Jackson <ajax@redhat.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + commit 4c40d9c4e4e4b39e81097cf6152d9940422fb5ab Author: Matt Dew <marcoz@osource.org> Date: Thu Oct 31 23:09:03 2013 -0600 bump version from 1.14.3.901, to 1.14.4 +commit f98d6cfa0de41cf33e7555342753897c07af84ef +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:51 2013 +0200 + + randr: deliver Output and Crtc events of attached output providers. + + Consider all attached output providers when looking for changed outputs and + crtcs. + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + +commit 14f89fb291f058a39e45cef012607a43edc5c9fe +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:50 2013 +0200 + + randr: send RRResourceChangeNotify event + + Send RRResourceChangeNotify event when provider, output or crtc was created or + destroyed. I.e. when the list of resources returned by RRGetScreenResources and + RRGetProviders changes. + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + +commit 4c79ea71a11c705a654a49f3edc2f01b4cdc61e2 +Author: Michal Srb <msrb@suse.com> +Date: Wed Oct 30 13:33:49 2013 +0200 + + randr: send RRProviderChangeNotify event + + Send RRProviderChangeNotify event when a provider becomes output source or + offload sink. + + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Michal Srb <msrb@suse.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + +commit d94e40f0498b998c89e396a024d9a7bdc326cc41 +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:26:35 2013 +1000 + + randr: report changes when we disconnect a GPU slave + + When we disconnect an output/offload slave set the changed bits, + so a later TellChanged can do something. + + Then when we remove a GPU slave device, sent change notification + to the protocol screen. + + This allows hot unplugged USB devices to disappear in clients. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + +commit e233bda3e7c68234b34a8b7ad04b27c6e2009a8f +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:25:43 2013 +1000 + + randr: only respected changed on the protocol screen + + We don't want to know about changes on the non-protocol screen, + we will fix up setchanged to make sure non-protocol screens update + the protocol screens when they have a change. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + +commit 61df3350d000e32ea60f6b1cd222c5adc2e35617 +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:29:47 2013 +1000 + + randr: make SetChanged modify the main protocol screen not the gpu screen + + When SetChanged is called we now modify the main protocol screen, + not the the gpu screen. Since changed stuff should work at the protocol level. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + +commit 0454e4485186953195dc48d7b403eb610102d0a5 +Author: Dave Airlie <airlied@redhat.com> +Date: Wed Jan 9 14:23:57 2013 +1000 + + randr: don't directly set changed bits in randr screen + + Introduce a wrapper interface so we can fix things up for multi-gpu + situations later. + + This just introduces the API for now. + + Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> + Signed-off-by: Dave Airlie <airlied@redhat.com> + +commit c635df3a7dcc1eaa0dbd3c3e1b02adcfcfb74e0a +Author: Adam Jackson <ajax@redhat.com> +Date: Wed Aug 21 14:12:52 2013 -0400 + + randr: Fix a copypasta bug in CRTC confinement + + Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> + Signed-off-by: Adam Jackson <ajax@redhat.com> + +commit c856013cd2ca361dfa1b808071b7869c81224ec5 +Author: Aaron Plattner <aplattner@nvidia.com> +Date: Tue Apr 30 14:14:23 2013 -0700 + + xfree86: detach scanout pixmaps when detaching output GPUs + + Commit 8f4640bdb9d3988148e09a08d2c7e3bab1d538d6 fixed a bit of a + chicken-and-egg problem by detaching GPU screens when their providers + are destroyed, which happens before CloseScreen is called. However, + this created a new problem: the GPU screen tears down its RandR crtc + objects during CloseScreen and if one of them is active, it tries to + detach the scanout pixmap then. This crashes because + RRCrtcDetachScanoutPixmap tries to get the master screen's screen + pixmap, but crtc->pScreen->current_master is already NULL at that + point. + + It doesn't make sense for an unbound GPU screen to still be scanning + out its former master screen's pixmap, so detach them first when the + provider is destroyed. + + Signed-off-by: Aaron Plattner <aplattner@nvidia.com> + Reviewed-by: Dave Airlie <airlied@redhat.com> + Signed-off-by: Keith Packard <keithp@keithp.com> + commit ca11bdc890f14fbe2ab4c32fb7a36ae50672b81a Author: Matt Dew <marcoz@osource.org> Date: Sat Oct 26 13:51:05 2013 -0600 diff --git a/xserver/Xext/sync.c b/xserver/Xext/sync.c index 1e3d43ee6..4ed60fdb6 100644 --- a/xserver/Xext/sync.c +++ b/xserver/Xext/sync.c @@ -2654,7 +2654,16 @@ IdleTimeBlockHandler(pointer pCounter, struct timeval **wt, pointer LastSelectMa IdleTimeQueryValue(counter, &idle); counter->value = idle; /* push, so CheckTrigger works */ - if (less && XSyncValueLessOrEqual(idle, *less)) { + /** + * There's an indefinite amount of time between ProcessInputEvents() + * where the idle time is reset and the time we actually get here. idle + * may be past the lower bracket if we dawdled with the events, so + * check for whether we did reset and bomb out of select immediately. + */ + if (less && XSyncValueGreaterThan(idle, *less) && + LastEventTimeWasReset(priv->deviceid)) { + AdjustWaitForDelay(wt, 0); + } else if (less && XSyncValueLessOrEqual(idle, *less)) { /* * We've been idle for less than the threshold value, and someone * wants to know about that, but now we need to know whether they diff --git a/xserver/configure b/xserver/configure index 7dce172ec..7e9ad33e9 100644 --- a/xserver/configure +++ b/xserver/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xorg-server 1.14.4. +# Generated by GNU Autoconf 2.69 for xorg-server 1.14.5. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. # @@ -651,8 +651,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xorg-server' PACKAGE_TARNAME='xorg-server' -PACKAGE_VERSION='1.14.4' -PACKAGE_STRING='xorg-server 1.14.4' +PACKAGE_VERSION='1.14.5' +PACKAGE_STRING='xorg-server 1.14.5' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -1992,7 +1992,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xorg-server 1.14.4 to adapt to many kinds of systems. +\`configure' configures xorg-server 1.14.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2062,7 +2062,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xorg-server 1.14.4:";; + short | recursive ) echo "Configuration of xorg-server 1.14.5:";; esac cat <<\_ACEOF @@ -2463,7 +2463,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xorg-server configure 1.14.4 +xorg-server configure 1.14.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3172,7 +3172,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xorg-server $as_me 1.14.4, which was +It was created by xorg-server $as_me 1.14.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3520,8 +3520,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -RELEASE_DATE="2013-10-31" -RELEASE_NAME="October Flood" +RELEASE_DATE="2013-12-12" +RELEASE_NAME="November Rain" am__api_version='1.12' @@ -3999,7 +3999,7 @@ fi # Define the identity of the package. PACKAGE='xorg-server' - VERSION='1.14.4' + VERSION='1.14.5' cat >>confdefs.h <<_ACEOF @@ -31181,7 +31181,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xorg-server $as_me 1.14.4, which was +This file was extended by xorg-server $as_me 1.14.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -31247,7 +31247,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xorg-server config.status 1.14.4 +xorg-server config.status 1.14.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/xserver/configure.ac b/xserver/configure.ac index 93de44e50..89183d338 100644 --- a/xserver/configure.ac +++ b/xserver/configure.ac @@ -26,9 +26,9 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.14.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2013-10-31" -RELEASE_NAME="October Flood" +AC_INIT([xorg-server], 1.14.5, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2013-12-12" +RELEASE_NAME="November Rain" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) diff --git a/xserver/glx/glxdricommon.c b/xserver/glx/glxdricommon.c index c90f38098..5686c5f64 100644 --- a/xserver/glx/glxdricommon.c +++ b/xserver/glx/glxdricommon.c @@ -209,6 +209,14 @@ glxConvertConfigs(const __DRIcoreExtension * core, static const char dri_driver_path[] = DRI_DRIVER_PATH; +/* Temporary define to allow building without a dri_interface.h from + * updated Mesa. Some day when we don't care about Mesa that old any + * more this can be removed. + */ +#ifndef __DRI_DRIVER_GET_EXTENSIONS +#define __DRI_DRIVER_GET_EXTENSIONS "__driDriverGetExtensions" +#endif + void * glxProbeDriver(const char *driverName, void **coreExt, const char *coreName, int coreVersion, @@ -217,7 +225,8 @@ glxProbeDriver(const char *driverName, int i; void *driver; char filename[PATH_MAX]; - const __DRIextension **extensions; + char *get_extensions_name; + const __DRIextension **extensions = NULL; snprintf(filename, sizeof filename, "%s/%s_dri.so", dri_driver_path, driverName); @@ -229,7 +238,18 @@ glxProbeDriver(const char *driverName, goto cleanup_failure; } - extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS); + if (asprintf(&get_extensions_name, "%s_%s", + __DRI_DRIVER_GET_EXTENSIONS, driverName) != -1) { + const __DRIextension **(*get_extensions)(void); + + get_extensions = dlsym(driver, get_extensions_name); + if (get_extensions) + extensions = get_extensions(); + free(get_extensions_name); + } + + if (!extensions) + extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS); if (extensions == NULL) { LogMessage(X_ERROR, "AIGLX error: %s exports no extensions (%s)\n", driverName, dlerror()); diff --git a/xserver/hw/xfree86/common/xf86Bus.c b/xserver/hw/xfree86/common/xf86Bus.c index a8aa7540b..3f9ee71e6 100644 --- a/xserver/hw/xfree86/common/xf86Bus.c +++ b/xserver/hw/xfree86/common/xf86Bus.c @@ -266,6 +266,11 @@ xf86IsEntityPrimary(int entityIndex) { EntityPtr pEnt = xf86Entities[entityIndex]; +#ifdef XSERVER_LIBPCIACCESS + if (primaryBus.type == BUS_PLATFORM && pEnt->bus.type == BUS_PCI) + return MATCH_PCI_DEVICES(pEnt->bus.id.pci, primaryBus.id.plat->pdev); +#endif + if (primaryBus.type != pEnt->bus.type) return FALSE; diff --git a/xserver/hw/xfree86/common/xf86platformBus.c b/xserver/hw/xfree86/common/xf86platformBus.c index db831a883..33b2b7dd8 100644 --- a/xserver/hw/xfree86/common/xf86platformBus.c +++ b/xserver/hw/xfree86/common/xf86platformBus.c @@ -47,6 +47,7 @@ #include "Pci.h" #include "xf86platformBus.h" +#include "randrstr.h" int platformSlotClaimed; int xf86_num_platform_devices; @@ -465,6 +466,9 @@ xf86platformAddDevice(int index) /* attach unbound to 0 protocol screen */ AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + RRResourcesChanged(xf86Screens[0]->pScreen); + RRTellChanged(xf86Screens[0]->pScreen); + return 0; } @@ -508,6 +512,8 @@ xf86platformRemoveDevice(int index) xf86_remove_platform_device(index); + RRResourcesChanged(xf86Screens[0]->pScreen); + RRTellChanged(xf86Screens[0]->pScreen); out: return; } diff --git a/xserver/hw/xfree86/modes/xf86RandR12.c b/xserver/hw/xfree86/modes/xf86RandR12.c index edc31a922..bd1f28141 100644 --- a/xserver/hw/xfree86/modes/xf86RandR12.c +++ b/xserver/hw/xfree86/modes/xf86RandR12.c @@ -1771,6 +1771,19 @@ xf86RandR12EnterVT(ScrnInfoPtr pScrn) return RRGetInfo(pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ } +static void +xf86DetachOutputGPU(ScreenPtr pScreen) +{ + rrScrPrivPtr rp = rrGetScrPriv(pScreen); + int i; + + /* make sure there are no attached shared scanout pixmaps first */ + for (i = 0; i < rp->numCrtcs; i++) + RRCrtcDetachScanoutPixmap(rp->crtcs[i]); + + DetachOutputGPU(pScreen); +} + static Bool xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, RRProviderPtr provider, @@ -1780,7 +1793,7 @@ xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, if (provider->output_source) { ScreenPtr cmScreen = pScreen->current_master; - DetachOutputGPU(pScreen); + xf86DetachOutputGPU(pScreen); AttachUnboundGPU(cmScreen, pScreen); } provider->output_source = NULL; @@ -1808,7 +1821,7 @@ xf86RandR14ProviderSetOffloadSink(ScreenPtr pScreen, if (!sink_provider) { if (provider->offload_sink) { ScreenPtr cmScreen = pScreen->current_master; - DetachOutputGPU(pScreen); + xf86DetachOutputGPU(pScreen); AttachUnboundGPU(cmScreen, pScreen); } @@ -1896,10 +1909,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider) if (config->randr_provider->offload_sink) { DetachOffloadGPU(screen); config->randr_provider->offload_sink = NULL; + RRSetChanged(screen); } else if (config->randr_provider->output_source) { - DetachOutputGPU(screen); + xf86DetachOutputGPU(screen); config->randr_provider->output_source = NULL; + RRSetChanged(screen); } else if (screen->current_master) DetachUnboundGPU(screen); diff --git a/xserver/hw/xquartz/X11Controller.m b/xserver/hw/xquartz/X11Controller.m index 737db42e7..3d094bfc7 100644 --- a/xserver/hw/xquartz/X11Controller.m +++ b/xserver/hw/xquartz/X11Controller.m @@ -936,7 +936,7 @@ extern char *bundle_id_prefix; - (void) applicationWillTerminate:(NSNotification *)aNotification { - unsigned remain; + int remain; [X11App prefs_synchronize]; /* shutdown the X server, it will exit () for us. */ diff --git a/xserver/hw/xquartz/bundle/Info.plist.cpp b/xserver/hw/xquartz/bundle/Info.plist.cpp index b0106c6da..4b4a894a4 100644 --- a/xserver/hw/xquartz/bundle/Info.plist.cpp +++ b/xserver/hw/xquartz/bundle/Info.plist.cpp @@ -19,9 +19,9 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>2.7.4</string> + <string>2.7.5</string> <key>CFBundleVersion</key> - <string>2.7.4</string> + <string>2.7.5</string> <key>CFBundleSignature</key> <string>x11a</string> <key>CSResourcesFileMapped</key> @@ -39,9 +39,9 @@ <key>LSApplicationCategoryType</key> <string>public.app-category.utilities</string> <key>NSHumanReadableCopyright</key> - <string>© 2003-2012 Apple Inc. + <string>© 2003-2013 Apple Inc. © 2003 XFree86 Project, Inc. -© 2003-2012 X.org Foundation, Inc. +© 2003-2013 X.org Foundation, Inc. </string> <key>NSMainNibFile</key> <string>main</string> diff --git a/xserver/miext/damage/damage.c b/xserver/miext/damage/damage.c index a98c20ec0..3dc3180f3 100644 --- a/xserver/miext/damage/damage.c +++ b/xserver/miext/damage/damage.c @@ -439,10 +439,7 @@ damageValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable) drawableDamage(pDrawable); DAMAGE_GC_FUNC_PROLOGUE(pGC); (*pGC->funcs->ValidateGC) (pGC, changes, pDrawable); - if (pDamage) - pGCPriv->ops = pGC->ops; /* so it's not NULL, so FUNC_EPILOGUE does work */ - else - pGCPriv->ops = NULL; + pGCPriv->ops = pGC->ops; /* just so it's not NULL */ DAMAGE_GC_FUNC_EPILOGUE(pGC); } diff --git a/xserver/randr/randr.c b/xserver/randr/randr.c index f0decfc6c..3c5142771 100644 --- a/xserver/randr/randr.c +++ b/xserver/randr/randr.c @@ -420,12 +420,40 @@ RRExtensionInit(void) #endif } +void +RRResourcesChanged(ScreenPtr pScreen) +{ + rrScrPriv(pScreen); + pScrPriv->resourcesChanged = TRUE; + + RRSetChanged(pScreen); +} + +static void +RRDeliverResourceEvent(ClientPtr client, WindowPtr pWin) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + + rrScrPriv(pScreen); + + xRRResourceChangeNotifyEvent re = { + .type = RRNotify + RREventBase, + .subCode = RRNotify_ResourceChange, + .timestamp = pScrPriv->lastSetTime.milliseconds, + .window = pWin->drawable.id + }; + + WriteEventsToClient(client, 1, (xEvent *) &re); +} + static int TellChanged(WindowPtr pWin, pointer value) { RREventPtr *pHead, pRREvent; ClientPtr client; ScreenPtr pScreen = pWin->drawable.pScreen; + ScreenPtr iter; + rrScrPrivPtr pSlaveScrPriv; rrScrPriv(pScreen); int i; @@ -450,6 +478,16 @@ TellChanged(WindowPtr pWin, pointer value) if (crtc->changed) RRDeliverCrtcEvent(client, pWin, crtc); } + + xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) { + RRCrtcPtr crtc = pSlaveScrPriv->crtcs[i]; + + if (crtc->changed) + RRDeliverCrtcEvent(client, pWin, crtc); + } + } } if (pRREvent->mask & RROutputChangeNotifyMask) { @@ -459,11 +497,67 @@ TellChanged(WindowPtr pWin, pointer value) if (output->changed) RRDeliverOutputEvent(client, pWin, output); } + + xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + for (i = 0; i < pSlaveScrPriv->numOutputs; i++) { + RROutputPtr output = pSlaveScrPriv->outputs[i]; + + if (output->changed) + RRDeliverOutputEvent(client, pWin, output); + } + } + } + + if (pRREvent->mask & RRProviderChangeNotifyMask) { + xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + if (pSlaveScrPriv->provider->changed) + RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider); + } + xorg_list_for_each_entry(iter, &pScreen->offload_slave_list, offload_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + if (pSlaveScrPriv->provider->changed) + RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider); + } + xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + if (pSlaveScrPriv->provider->changed) + RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider); + } + } + + if (pRREvent->mask & RRResourceChangeNotifyMask) { + if (pScrPriv->resourcesChanged) { + RRDeliverResourceEvent(client, pWin); + } } } return WT_WALKCHILDREN; } +void +RRSetChanged(ScreenPtr pScreen) +{ + /* set changed bits on the master screen only */ + ScreenPtr master; + rrScrPriv(pScreen); + rrScrPrivPtr mastersp; + + if (pScreen->isGPU) { + master = pScreen->current_master; + if (!master) + return; + mastersp = rrGetScrPriv(master); + } + else { + master = pScreen; + mastersp = pScrPriv; + } + + mastersp->changed = TRUE; +} + /* * Something changed; send events and adjust pointer position */ @@ -474,6 +568,8 @@ RRTellChanged(ScreenPtr pScreen) rrScrPriv(pScreen); rrScrPrivPtr mastersp; int i; + ScreenPtr iter; + rrScrPrivPtr pSlaveScrPriv; if (pScreen->isGPU) { master = pScreen->current_master; @@ -484,7 +580,7 @@ RRTellChanged(ScreenPtr pScreen) mastersp = pScrPriv; } - if (pScrPriv->changed) { + if (mastersp->changed) { UpdateCurrentTimeIf(); if (mastersp->configChanged) { mastersp->lastConfigTime = currentTime; @@ -492,11 +588,33 @@ RRTellChanged(ScreenPtr pScreen) } pScrPriv->changed = FALSE; mastersp->changed = FALSE; + WalkTree(master, TellChanged, (pointer) master); + + mastersp->resourcesChanged = FALSE; + for (i = 0; i < pScrPriv->numOutputs; i++) pScrPriv->outputs[i]->changed = FALSE; for (i = 0; i < pScrPriv->numCrtcs; i++) pScrPriv->crtcs[i]->changed = FALSE; + + xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + pSlaveScrPriv->provider->changed = FALSE; + for (i = 0; i < pSlaveScrPriv->numOutputs; i++) + pSlaveScrPriv->outputs[i]->changed = FALSE; + for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) + pSlaveScrPriv->crtcs[i]->changed = FALSE; + } + xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + pSlaveScrPriv->provider->changed = FALSE; + } + xorg_list_for_each_entry(iter, &master->unattached_list, unattached_head) { + pSlaveScrPriv = rrGetScrPriv(iter); + pSlaveScrPriv->provider->changed = FALSE; + } + if (mastersp->layoutChanged) { pScrPriv->layoutChanged = FALSE; RRPointerScreenConfigured(master); diff --git a/xserver/randr/randrstr.h b/xserver/randr/randrstr.h index 25174798f..27b4ba05c 100644 --- a/xserver/randr/randrstr.h +++ b/xserver/randr/randrstr.h @@ -166,6 +166,7 @@ struct _rrProvider { Bool pendingProperties; struct _rrProvider *offload_sink; struct _rrProvider *output_source; + Bool changed; }; #if RANDR_12_INTERFACE @@ -336,6 +337,7 @@ typedef struct _rrScrPriv { RRProviderDestroyProcPtr rrProviderDestroy; + Bool resourcesChanged; /* screen resources change */ } rrScrPrivRec, *rrScrPrivPtr; extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec; @@ -485,7 +487,14 @@ extern _X_EXPORT int extern _X_EXPORT void RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen); +extern _X_EXPORT void + RRResourcesChanged(ScreenPtr pScreen); + /* randr.c */ +/* set a screen change on the primary screen */ +extern _X_EXPORT void +RRSetChanged(ScreenPtr pScreen); + /* * Send all pending events */ @@ -919,6 +928,9 @@ RRProviderSetCapabilities(RRProviderPtr provider, uint32_t capabilities); extern _X_EXPORT Bool RRProviderLookup(XID id, RRProviderPtr *provider_p); +extern _X_EXPORT void +RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider); + /* rrproviderproperty.c */ extern _X_EXPORT void diff --git a/xserver/randr/rrcrtc.c b/xserver/randr/rrcrtc.c index 6e2eca5ad..5cdfd0510 100644 --- a/xserver/randr/rrcrtc.c +++ b/xserver/randr/rrcrtc.c @@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged) if (pScreen) { rrScrPriv(pScreen); - pScrPriv->changed = TRUE; + RRSetChanged(pScreen); /* * Send ConfigureNotify on any layout change */ @@ -102,6 +102,8 @@ RRCrtcCreate(ScreenPtr pScreen, void *devPrivate) crtc->pScreen = pScreen; pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc; + RRResourcesChanged(pScreen); + return crtc; } @@ -672,6 +674,8 @@ RRCrtcDestroyResource(pointer value, XID pid) break; } } + + RRResourcesChanged(pScreen); } if (crtc->scanout_pixmap) diff --git a/xserver/randr/rrinfo.c b/xserver/randr/rrinfo.c index 1408d6f64..fc57bd408 100644 --- a/xserver/randr/rrinfo.c +++ b/xserver/randr/rrinfo.c @@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen, pScrPriv->minHeight = minHeight; pScrPriv->maxWidth = maxWidth; pScrPriv->maxHeight = maxHeight; - pScrPriv->changed = TRUE; + RRSetChanged(pScreen); pScrPriv->configChanged = TRUE; } diff --git a/xserver/randr/rroutput.c b/xserver/randr/rroutput.c index 88781ba0f..2b0b82f4c 100644 --- a/xserver/randr/rroutput.c +++ b/xserver/randr/rroutput.c @@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged) output->changed = TRUE; if (pScreen) { rrScrPriv(pScreen); - pScrPriv->changed = TRUE; + RRSetChanged(pScreen); if (configChanged) pScrPriv->configChanged = TRUE; } @@ -101,6 +101,9 @@ RROutputCreate(ScreenPtr pScreen, return NULL; pScrPriv->outputs[pScrPriv->numOutputs++] = output; + + RRResourcesChanged(pScreen); + return output; } @@ -355,6 +358,8 @@ RROutputDestroyResource(pointer value, XID pid) break; } } + + RRResourcesChanged(pScreen); } if (output->modes) { for (m = 0; m < output->numModes; m++) diff --git a/xserver/randr/rrpointer.c b/xserver/randr/rrpointer.c index ec803e9d1..eb6b6770c 100644 --- a/xserver/randr/rrpointer.c +++ b/xserver/randr/rrpointer.c @@ -82,7 +82,7 @@ RRPointerToNearestCrtc(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y, else dx = 0; if (y < crtc->y) - dy = crtc->y - x; + dy = crtc->y - y; else if (y > crtc->y + scan_height) dy = y - (crtc->y + scan_height); else diff --git a/xserver/randr/rrprovider.c b/xserver/randr/rrprovider.c index b321e6227..2334ad277 100644 --- a/xserver/randr/rrprovider.c +++ b/xserver/randr/rrprovider.c @@ -304,6 +304,9 @@ ProcRRSetProviderOutputSource(ClientPtr client) pScrPriv->rrProviderSetOutputSource(pScreen, provider, source_provider); + provider->changed = TRUE; + RRSetChanged(pScreen); + RRTellChanged (pScreen); return Success; @@ -333,6 +336,9 @@ ProcRRSetProviderOffloadSink(ClientPtr client) pScrPriv->rrProviderSetOffloadSink(pScreen, provider, sink_provider); + provider->changed = TRUE; + RRSetChanged(pScreen); + RRTellChanged (pScreen); return Success; @@ -357,6 +363,7 @@ RRProviderCreate(ScreenPtr pScreen, const char *name, provider->nameLength = nameLength; memcpy(provider->name, name, nameLength); provider->name[nameLength] = '\0'; + provider->changed = FALSE; if (!AddResource (provider->id, RRProviderType, (pointer) provider)) return NULL; @@ -416,3 +423,21 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p) return TRUE; return FALSE; } + +void +RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider) +{ + ScreenPtr pScreen = pWin->drawable.pScreen; + + rrScrPriv(pScreen); + + xRRProviderChangeNotifyEvent pe = { + .type = RRNotify + RREventBase, + .subCode = RRNotify_ProviderChange, + .timestamp = pScrPriv->lastSetTime.milliseconds, + .window = pWin->drawable.id, + .provider = provider->id + }; + + WriteEventsToClient(client, 1, (xEvent *) &pe); +} diff --git a/xserver/randr/rrscreen.c b/xserver/randr/rrscreen.c index 39340ccee..36179ae89 100644 --- a/xserver/randr/rrscreen.c +++ b/xserver/randr/rrscreen.c @@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen) pScrPriv->height = pScreen->height; pScrPriv->mmWidth = pScreen->mmWidth; pScrPriv->mmHeight = pScreen->mmHeight; - pScrPriv->changed = TRUE; + RRSetChanged(pScreen); /* pScrPriv->sizeChanged = TRUE; */ RRTellChanged(pScreen); |