xorg-server: Changes to 'debian-unstable'
debian/changelog | 11 +
debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff | 36 +++
debian/patches/os-treat-ssh-as-a-non-local-client.diff | 97 ++++++++++
debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff | 35 +++
debian/patches/revert-eb5108b870.diff | 35 ---
debian/patches/series | 5
6 files changed, 183 insertions(+), 36 deletions(-)
New commits:
commit fe1d88778d3940550f30b85a7323fc1e3935eaaa
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Tue Mar 29 10:39:02 2016 +0300
release to unstable
diff --git a/debian/changelog b/debian/changelog
index 2374ba2..9169531 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.18.2-3) UNRELEASED; urgency=medium
+xorg-server (2:1.18.2-3) unstable; urgency=medium
* regression fixes part2:
- replace revert-eb5108b870.diff with patch from upstream
@@ -7,7 +7,7 @@ xorg-server (2:1.18.2-3) UNRELEASED; urgency=medium
* os-treat-ssh-as-a-non-local-client.diff: Allow remote clients to work
with DRI3.
- -- Timo Aaltonen <tjaalton@debian.org> Tue, 29 Mar 2016 10:16:23 +0300
+ -- Timo Aaltonen <tjaalton@debian.org> Tue, 29 Mar 2016 10:38:47 +0300
xorg-server (2:1.18.2-2) unstable; urgency=medium
commit 99ea495eaeacfcbe5defa412d6922a0966c27c3a
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Tue Mar 29 10:34:50 2016 +0300
more regression fixes, plus fix remote clients with DRI3
diff --git a/debian/changelog b/debian/changelog
index 24902b1..2374ba2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+xorg-server (2:1.18.2-3) UNRELEASED; 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 <tjaalton@debian.org> Tue, 29 Mar 2016 10:16:23 +0300
+
xorg-server (2:1.18.2-2) unstable; urgency=medium
* regression fixes/workarounds:
diff --git a/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff b/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff
new file mode 100644
index 0000000..4e1b26b
--- /dev/null
+++ b/debian/patches/make-sure-hw-cursor-is-hidden-when-it-should.diff
@@ -0,0 +1,36 @@
+commit 418fe365b45a143680d3b4143dc60f7cdc5a3507
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Mar 24 17:34:23 2016 +0900
+
+ xfree86/modes: Make sure the HW cursor is hidden when it should be
+
+ When the HW cursor is hidden (e.g. because xf86CursorResetCursor
+ triggers a switch from HW cursor to SW cursor), the driver isn't
+ notified of this for disabled CRTCs. If the HW cursor was shown when the
+ CRTC was disabled, it may still be displayed when the CRTC is enabled
+ again.
+
+ Prevent this by explicitly hiding the HW cursor again after setting a
+ mode if it's currently supposed to be hidden.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94560
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+
+diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
+index 2639a30..6091b5e 100644
+--- a/hw/xfree86/modes/xf86Crtc.c
++++ b/hw/xfree86/modes/xf86Crtc.c
+@@ -368,6 +368,12 @@ xf86CrtcSetModeTransform(xf86CrtcPtr crtc, DisplayModePtr mode,
+ xf86CrtcSetScreenSubpixelOrder(scrn->pScreen);
+ if (scrn->ModeSet)
+ scrn->ModeSet(scrn);
++
++ /* Make sure the HW cursor is hidden if it's supposed to be, in case
++ * it was hidden while the CRTC was disabled
++ */
++ if (!xf86_config->cursor_on)
++ xf86_hide_cursors(scrn);
+ }
+ else {
+ crtc->x = saved_x;
diff --git a/debian/patches/os-treat-ssh-as-a-non-local-client.diff b/debian/patches/os-treat-ssh-as-a-non-local-client.diff
new file mode 100644
index 0000000..0b879bf
--- /dev/null
+++ b/debian/patches/os-treat-ssh-as-a-non-local-client.diff
@@ -0,0 +1,97 @@
+commit adefbaee499b9679c6cac21f52ec6545af2b36b5
+Author: Adam Jackson <ajax@redhat.com>
+Date: Mon Mar 28 18:11:09 2016 +0900
+
+ os: Treat ssh as a non-local client (v4)
+
+ By the time we get to ComputeLocalClient, we've already done
+ NextAvailableClient → ReserveClientIds → DetermineClientCmd (assuming
+ we're built with #define CLIENTIDS), so we can look up the name of the
+ client process and refuse to treat ssh's X forwarding as if it were
+ local.
+
+ v2: (Michel Dänzer)
+ * Only match "ssh" itself, not other executable names starting with
+ that prefix.
+ * Ignore executable path for the match.
+ v3: (Michel Dänzer)
+ * Use GetClientCmdName (Mark Kettenis)
+ * Perform check on Windows as well, but only ignore path on Cygwin
+ (Martin Peres, Emil Velikov, Jon Turney)
+ v4: (Michel Dänzer)
+ * Cut of any colon and whatever comes after it. (Adam Jackson)
+ * Add bugzilla reference.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93261
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+
+diff --git a/os/access.c b/os/access.c
+index 8b2177f..58f95a9 100644
+--- a/os/access.c
++++ b/os/access.c
+@@ -173,6 +173,10 @@ SOFTWARE.
+
+ #endif /* WIN32 */
+
++#if !defined(WIN32) || defined(__CYGWIN__)
++#include <libgen.h>
++#endif
++
+ #define X_INCLUDE_NETDB_H
+ #include <X11/Xos_r.h>
+
+@@ -1080,9 +1084,8 @@ ResetHosts(const char *display)
+ }
+ }
+
+-/* Is client on the local host */
+-Bool
+-ComputeLocalClient(ClientPtr client)
++static Bool
++xtransLocalClient(ClientPtr client)
+ {
+ int alen, family, notused;
+ Xtransaddr *from = NULL;
+@@ -1115,6 +1118,40 @@ ComputeLocalClient(ClientPtr client)
+ return FALSE;
+ }
+
++/* Is client on the local host */
++Bool
++ComputeLocalClient(ClientPtr client)
++{
++ const char *cmdname = GetClientCmdName(client);
++
++ if (!xtransLocalClient(client))
++ return FALSE;
++
++ /* If the executable name is "ssh", assume that this client connection
++ * is forwarded from another host via SSH
++ */
++ if (cmdname) {
++ char **cmd;
++ Bool ret;
++
++ /* Cut off any colon and whatever comes after it, see
++ * https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html
++ */
++ cmd = xstrtokenize(cmdname, ":");
++
++#if !defined(WIN32) || defined(__CYGWIN__)
++ cmd[0] = basename(cmd[0]);
++#endif
++
++ ret = strcmp(cmd[0], "ssh") != 0;
++ free(cmd);
++
++ return ret;
++ }
++
++ return TRUE;
++}
++
+ /*
+ * Return the uid and all gids of a connected local client
+ * Allocates a LocalClientCredRec - caller must call FreeLocalClientCreds
diff --git a/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff b/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff
new file mode 100644
index 0000000..6794fc7
--- /dev/null
+++ b/debian/patches/present-only-requeue-for-next-msc-after-flip-fail.diff
@@ -0,0 +1,35 @@
+commit 3b385105b2d19a1c55e9779ae88d775185eea231
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Thu Mar 24 17:42:47 2016 +0900
+
+ present: Only requeue for next MSC after flip failure
+
+ This code was added to deal with the driver present hook failing, in
+ which case we need to wait for the next MSC before executing the
+ presentation.
+
+ However, it could also take effect in cases where the driver incorrectly
+ thinks the current MSC matches the target one (e.g. due to the kernel
+ interface only supporting 32-bit MSC values), in which case it could
+ result in the presentation getting requeued over and over.
+
+ To prevent such issues, check specifically for the target MSC
+ immediately following the current MSC.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94596
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+
+diff --git a/present/present.c b/present/present.c
+index 55f6aa7..105e2bf 100644
+--- a/present/present.c
++++ b/present/present.c
+@@ -726,7 +726,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
+ }
+
+ /* If present_flip failed, we may have to requeue for the target MSC */
+- if (msc_is_after(vblank->target_msc, crtc_msc) &&
++ if (vblank->target_msc == crtc_msc + 1 &&
+ Success == present_queue_vblank(screen,
+ vblank->crtc,
+ vblank->event_id,
diff --git a/debian/patches/revert-eb5108b870.diff b/debian/patches/revert-eb5108b870.diff
deleted file mode 100644
index 0b4e59d..0000000
--- a/debian/patches/revert-eb5108b870.diff
+++ /dev/null
@@ -1,35 +0,0 @@
-this reverts:
-
-commit eb5108b87017128f394ae31b5b7cd85dd8819bca
-Author: Michel Dänzer <michel.daenzer@amd.com>
-Date: Wed Feb 24 16:52:58 2016 +0900
-
- present: Requeue if flip driver hook fails and target MSC not reached
-
-some intel users suffer from frozen X because of it
-
-diff --git b/present/present.c a/present/present.c
-index 7f9fc17..17ec526 100644
---- b/present/present.c
-+++ a/present/present.c
-@@ -712,20 +712,6 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
- if (window == screen_priv->flip_window)
- present_unflip(screen);
- }
--
-- /* If present_flip failed, we may have to requeue for the target MSC */
-- if (msc_is_after(vblank->target_msc, crtc_msc) &&
-- Success == present_queue_vblank(screen,
-- vblank->crtc,
-- vblank->event_id,
-- vblank->target_msc)) {
-- xorg_list_add(&vblank->event_queue, &present_exec_queue);
-- xorg_list_append(&vblank->window_list,
-- &present_get_window_priv(window, TRUE)->vblank);
-- vblank->queued = TRUE;
-- return;
-- }
--
- present_copy_region(&window->drawable, vblank->pixmap, vblank->update, vblank->x_off, vblank->y_off);
-
- /* present_copy_region sticks the region into a scratch GC,
diff --git a/debian/patches/series b/debian/patches/series
index 5440ad0..4429400 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -9,4 +9,7 @@
# 1.18.2 regression fixes/workarounds
vidmode-reduce-verbosity-of-getmodeline.diff
glamor-swizzle-red-to-0-for-alpha-textures.diff
-revert-eb5108b870.diff
+present-only-requeue-for-next-msc-after-flip-fail.diff
+make-sure-hw-cursor-is-hidden-when-it-should.diff
+
+os-treat-ssh-as-a-non-local-client.diff
Reply to: