[arch-commits] Commit in xorg-server/trunk (PKGBUILD git-fixes.diff)

Laurent Carlier lcarlier at archlinux.org
Tue Jan 10 20:43:35 UTC 2017


    Date: Tuesday, January 10, 2017 @ 20:43:34
  Author: lcarlier
Revision: 285640

upgpkg: xorg-server 1.19.0-6

add another upstream patch to fix hangs

Modified:
  xorg-server/trunk/PKGBUILD
  xorg-server/trunk/git-fixes.diff

----------------+
 PKGBUILD       |    5 ++--
 git-fixes.diff |   68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+), 2 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-01-10 20:03:15 UTC (rev 285639)
+++ PKGBUILD	2017-01-10 20:43:34 UTC (rev 285640)
@@ -5,7 +5,7 @@
 pkgbase=xorg-server
 pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest' 'xorg-server-xwayland' 'xorg-server-common' 'xorg-server-devel')
 pkgver=1.19.0
-pkgrel=5
+pkgrel=6
 arch=('i686' 'x86_64')
 license=('custom')
 groups=('xorg')
@@ -28,7 +28,7 @@
             'SKIP'
             'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
             '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
-            '15ae819f97b16e88974986d71c832b99fa220e8223ccaf171513e9e4c73f84dd')
+            'f0f18685a5894a4d30669fa0b74db8f29d869b57315d8a16e093010659a3299c')
 
 prepare() {
   cd "${pkgbase}-${pkgver}"
@@ -37,6 +37,7 @@
   # os: return 0 from check_timers if we touched any of them
   # glamor: Trust eglGetPlatformDisplayEXT if it exists
   # present: Only call present_flip_notify if vblank->queued == FALSE
+  # AttendClient of grab-pervious client should queue to saved_ready_clients
   patch -Np1 -i ../git-fixes.diff
 }
 

Modified: git-fixes.diff
===================================================================
--- git-fixes.diff	2017-01-10 20:03:15 UTC (rev 285639)
+++ git-fixes.diff	2017-01-10 20:43:34 UTC (rev 285640)
@@ -652,3 +652,71 @@
 -- 
 cgit v0.10.2
 
+From: Keith Packard <keithp at keithp.com>
+X-Patchwork-Id: 132089
+Message-Id: <20170110021441.12759-1-keithp at keithp.com>
+To: xorg-devel at lists.freedesktop.org
+Date: Mon,  9 Jan 2017 18:14:41 -0800
+
+A client which is attended while a grab is blocking execution of its
+requests needs to be placed in the saved_ready_clients list so that it
+will get scheduled once the grab terminates. Otherwise, if the client
+never sends another request, there is no way for it to be placed in
+the ready_clients list.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99333
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+ dix/dispatch.c      | 7 +++++++
+ include/dixstruct.h | 3 +++
+ os/connection.c     | 4 ++++
+ 3 files changed, 14 insertions(+)
+
+diff --git a/dix/dispatch.c b/dix/dispatch.c
+index 3d0fe26fd..ab69d34b9 100644
+--- a/dix/dispatch.c
++++ b/dix/dispatch.c
+@@ -266,6 +266,13 @@ mark_client_ready(ClientPtr client)
+         xorg_list_append(&client->ready, &ready_clients);
+ }
+ 
++/* Client has requests queued or data on the network, but awaits a server grab release */
++void mark_client_saved_ready(ClientPtr client)
++{
++    if (xorg_list_is_empty(&client->ready))
++        xorg_list_append(&client->ready, &saved_ready_clients);
++}
++
+ /* Client has no requests queued and no data on network */
+ void
+ mark_client_not_ready(ClientPtr client)
+diff --git a/include/dixstruct.h b/include/dixstruct.h
+index d71b0ac05..fd9195972 100644
+--- a/include/dixstruct.h
++++ b/include/dixstruct.h
+@@ -143,6 +143,9 @@ extern void SmartScheduleStopTimer(void);
+ /* Client has requests queued or data on the network */
+ void mark_client_ready(ClientPtr client);
+ 
++/* Client has requests queued or data on the network, but awaits a server grab release */
++void mark_client_saved_ready(ClientPtr client);
++
+ /* Client has no requests queued and no data on network */
+ void mark_client_not_ready(ClientPtr client);
+ 
+diff --git a/os/connection.c b/os/connection.c
+index a901ebf3c..a2629c8a2 100644
+--- a/os/connection.c
++++ b/os/connection.c
+@@ -1067,6 +1067,10 @@ AttendClient(ClientPtr client)
+     set_poll_client(client);
+     if (listen_to_client(client))
+         mark_client_ready(client);
++    else if (!(oc->flags & OS_COMM_IGNORED)) {
++        /* grab active, mark ready when grab goes away */
++        mark_client_saved_ready(client);
++    }
+ }
+ 
+ /* make client impervious to grabs; assume only executing client calls this */
+



More information about the arch-commits mailing list