Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2020-04-04 12:17:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Sat Apr  4 12:17:15 2020 rev:380 rq:789725 version:1.20.8+0

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2020-02-29 21:23:37.106410103 +0100
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-server.new.3248/xorg-x11-server.changes    
    2020-04-04 12:17:24.923520355 +0200
@@ -1,0 +2,31 @@
+Mon Mar 30 11:17:21 UTC 2020 - Stefan Dirsch <sndir...@suse.com>
+
+- Update to version 1.20.8+0: 
+  * Revert "dri2: Don't make reference to noClientException"
+  * dix: Check for NULL spriteInfo in GetPairedDevice
+  * os: Ignore dying client in ResetCurrentRequest
+  * modesetting: remove unnecessary error message, fix zaphod leases
+  * Fix building with `-fno-common`
+  * xwayland: clear pixmaps after creation in rootless mode
+  * glamor: Fix a compiler warning since the recent OOM fixes.
+  * Restrict 1x1 pixmap filling optimization to GXcopy
+  * Add xf86OSInputThreadInit to stub os-support as well
+  * Fix old-style definition warning for xf86OSInputThreadInit()
+  * xwayland/glamor-gbm: Handle DRM_FORMAT_MOD_INVALID gracefully
+  * configure: Define GLAMOR_HAS_EGL_QUERY_DRIVER when available
+  * modesetting: Disable atomic support by default
+  * modesetting: Explicitly #include "mi.h"
+  * xfree86/modes: Bail from xf86RotateRedisplay if pScreen->root is NULL
+  * xwayland: Split up xwl_screen_post_damage into two phases
+  * xwayland: Call glamor_block_handler from xwl_screen_post_damage
+  * xwayland: Add xwl_window_create_frame_callback helper
+  * xwayland: Use single frame callback for Present flips and normal updates
+  * xwayland: Use frame callbacks for Present vblank events
+  * xwayland: Delete all frame_callback_list nodes in xwl_unrealize_window
+  * glamor: Propagate FBO allocation failure for picture to texture upload
+  * glamor: Error out on out-of-memory when allocating PBO for FBO access
+  * glamor: Propagate glamor_prepare_access failures in copy helpers
+  * glamor: Fallback to system memory for RW PBO buffer allocation
+- supersedes u_fno-common.patch
+
+-------------------------------------------------------------------

Old:
----
  u_fno-common.patch
  xserver-1.20.7+0.tar.xz

New:
----
  xserver-1.20.8+0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.g20DE2/_old  2020-04-04 12:17:28.991524022 +0200
+++ /var/tmp/diff_new_pack.g20DE2/_new  2020-04-04 12:17:28.995524025 +0200
@@ -42,7 +42,7 @@
 %endif
 
 Name:           xorg-x11-server
-Version:        1.20.7+0
+Version:        1.20.8+0
 Release:        0
 URL:            http://xorg.freedesktop.org/
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -248,8 +248,6 @@
 
 Patch1505:      U_xwayland-Allow-passing-a-fd.patch
 
-Patch1600:      u_fno-common.patch
-
 %description
 This package contains the X.Org Server.
 
@@ -397,7 +395,6 @@
 %patch1502 -p1
 %patch1503 -p1
 %patch1505 -p1
-%patch1600 -p1
 
 %build
 %define _lto_cflags %{nil}

++++++ _service ++++++
--- /var/tmp/diff_new_pack.g20DE2/_old  2020-04-04 12:17:29.059524080 +0200
+++ /var/tmp/diff_new_pack.g20DE2/_new  2020-04-04 12:17:29.059524080 +0200
@@ -2,7 +2,7 @@
   <service name="tar_scm" mode="disabled">
     <param name="url">https://gitlab.freedesktop.org/xorg/xserver.git</param>
     <param name="scm">git</param>
-    <param name="revision">489f4191</param>
+    <param name="revision">f84ad082</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">xorgserver(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.g20DE2/_old  2020-04-04 12:17:29.083524101 +0200
+++ /var/tmp/diff_new_pack.g20DE2/_new  2020-04-04 12:17:29.083524101 +0200
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://gitlab.freedesktop.org/xorg/xserver.git</param>
-              <param 
name="changesrevision">489f4191f3c881c6c8acce97ec612167a4ae0f33</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">f84ad082557f9cde6b8faa373eca6a0a89ba7d56</param></service></servicedata>

++++++ xserver-1.20.7+0.tar.xz -> xserver-1.20.8+0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/configure.ac 
new/xserver-1.20.8+0/configure.ac
--- old/xserver-1.20.7+0/configure.ac   2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/configure.ac   2020-03-29 22:02:03.000000000 +0200
@@ -26,9 +26,9 @@
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.20.7, 
[https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
-RELEASE_DATE="2020-01-13"
-RELEASE_NAME="Stuffed French Toast"
+AC_INIT([xorg-server], 1.20.8, 
[https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
+RELEASE_DATE="2020-03-29"
+RELEASE_NAME="Chicken Parmigiana"
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -2053,6 +2053,10 @@
                         [AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DMABUF, 1, [Have 
GLAMOR_HAS_EGL_QUERY_DMABUF])],
                         [])
 
+       PKG_CHECK_EXISTS(epoxy >= 1.5.4,
+                        [AC_DEFINE(GLAMOR_HAS_EGL_QUERY_DRIVER, 1, [Have 
GLAMOR_HAS_EGL_QUERY_DRIVER])],
+                        [])
+
        PKG_CHECK_MODULES(GBM, "$LIBGBM", [GBM=yes], [GBM=no])
        if test "x$GBM" = xyes; then
                AC_DEFINE(GLAMOR_HAS_GBM, 1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/dix/devices.c 
new/xserver-1.20.8+0/dix/devices.c
--- old/xserver-1.20.7+0/dix/devices.c  2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/dix/devices.c  2020-03-29 22:02:03.000000000 +0200
@@ -2656,7 +2656,7 @@
     if (!IsMaster(dev) && !IsFloating(dev))
         dev = GetMaster(dev, MASTER_ATTACHED);
 
-    return dev->spriteInfo->paired;
+    return dev->spriteInfo? dev->spriteInfo->paired: NULL;
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/exa/exa_accel.c 
new/xserver-1.20.8+0/exa/exa_accel.c
--- old/xserver-1.20.7+0/exa/exa_accel.c        2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/exa/exa_accel.c        2020-03-29 22:02:03.000000000 
+0200
@@ -1037,7 +1037,7 @@
         if (pExaPixmap->pDamage &&
             pExaPixmap->sys_ptr && pDrawable->type == DRAWABLE_PIXMAP &&
             pDrawable->width == 1 && pDrawable->height == 1 &&
-            pDrawable->bitsPerPixel != 24) {
+            pDrawable->bitsPerPixel != 24 && alu == GXcopy) {
             RegionPtr pending_damage = 
DamagePendingRegion(pExaPixmap->pDamage);
 
             switch (pDrawable->bitsPerPixel) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor.c 
new/xserver-1.20.8+0/glamor/glamor.c
--- old/xserver-1.20.7+0/glamor/glamor.c        2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/glamor/glamor.c        2020-03-29 22:02:03.000000000 
+0200
@@ -128,6 +128,21 @@
     glamor_pixmap_attach_fbo(pixmap, fbo);
 }
 
+_X_EXPORT void
+glamor_clear_pixmap(PixmapPtr pixmap)
+{
+    ScreenPtr screen = pixmap->drawable.pScreen;
+    glamor_screen_private *glamor_priv;
+    glamor_pixmap_private *pixmap_priv;
+
+    glamor_priv = glamor_get_screen_private(screen);
+    pixmap_priv = glamor_get_pixmap_private(pixmap);
+
+    assert(pixmap_priv->fbo != NULL);
+
+    glamor_pixmap_clear_fbo(glamor_priv, pixmap_priv->fbo);
+}
+
 uint32_t
 glamor_get_pixmap_texture(PixmapPtr pixmap)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor.h 
new/xserver-1.20.8+0/glamor/glamor.h
--- old/xserver-1.20.7+0/glamor/glamor.h        2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/glamor/glamor.h        2020-03-29 22:02:03.000000000 
+0200
@@ -115,6 +115,9 @@
 
 extern _X_EXPORT void glamor_set_pixmap_type(PixmapPtr pixmap,
                                              glamor_pixmap_type_t type);
+
+extern _X_EXPORT void glamor_clear_pixmap(PixmapPtr pixmap);
+
 extern _X_EXPORT void glamor_block_handler(ScreenPtr screen);
 
 extern _X_EXPORT PixmapPtr glamor_create_pixmap(ScreenPtr screen, int w, int h,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor_copy.c 
new/xserver-1.20.8+0/glamor/glamor_copy.c
--- old/xserver-1.20.7+0/glamor/glamor_copy.c   2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/glamor/glamor_copy.c   2020-03-29 22:02:03.000000000 
+0200
@@ -221,7 +221,9 @@
         goto bail;
 
     glamor_make_current(glamor_priv);
-    glamor_prepare_access(src, GLAMOR_ACCESS_RO);
+
+    if (!glamor_prepare_access(src, GLAMOR_ACCESS_RO))
+        goto bail;
 
     glamor_get_drawable_deltas(dst, dst_pixmap, &dst_xoff, &dst_yoff);
 
@@ -309,7 +311,9 @@
         goto bail;
 
     glamor_make_current(glamor_priv);
-    glamor_prepare_access(dst, GLAMOR_ACCESS_RW);
+
+    if (!glamor_prepare_access(dst, GLAMOR_ACCESS_RW))
+        goto bail;
 
     glamor_get_drawable_deltas(src, src_pixmap, &src_xoff, &src_yoff);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor_fbo.c 
new/xserver-1.20.8+0/glamor/glamor_fbo.c
--- old/xserver-1.20.7+0/glamor/glamor_fbo.c    2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/glamor/glamor_fbo.c    2020-03-29 22:02:03.000000000 
+0200
@@ -239,6 +239,18 @@
     return NULL;
 }
 
+void
+glamor_pixmap_clear_fbo(glamor_screen_private *glamor_priv, glamor_pixmap_fbo 
*fbo)
+{
+    glamor_make_current(glamor_priv);
+
+    assert(fbo->fb != 0 && fbo->tex != 0);
+
+    glamor_set_destination_pixmap_fbo(glamor_priv, fbo, 0, 0, fbo->width, 
fbo->height);
+    glClearColor(0.0, 0.0, 0.0, 0.0);
+    glClear(GL_COLOR_BUFFER_BIT);
+}
+
 glamor_pixmap_fbo *
 glamor_pixmap_detach_fbo(glamor_pixmap_private *pixmap_priv)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor_picture.c 
new/xserver-1.20.8+0/glamor/glamor_picture.c
--- old/xserver-1.20.7+0/glamor/glamor_picture.c        2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/glamor/glamor_picture.c        2020-03-29 
22:02:03.000000000 +0200
@@ -340,8 +340,10 @@
     else
         iformat = format;
 
-    if (!glamor_pixmap_ensure_fbo(pixmap, iformat, GLAMOR_CREATE_FBO_NO_FBO))
+    if (!glamor_pixmap_ensure_fbo(pixmap, iformat, GLAMOR_CREATE_FBO_NO_FBO)) {
+        ret = FALSE;
         goto fail;
+    }
 
     glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor_prepare.c 
new/xserver-1.20.8+0/glamor/glamor_prepare.c
--- old/xserver-1.20.7+0/glamor/glamor_prepare.c        2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/glamor/glamor_prepare.c        2020-03-29 
22:02:03.000000000 +0200
@@ -88,11 +88,29 @@
 
             gl_usage = GL_STREAM_READ;
 
+            glamor_priv->suppress_gl_out_of_memory_logging = true;
+
             glBindBuffer(GL_PIXEL_PACK_BUFFER, priv->pbo);
             glBufferData(GL_PIXEL_PACK_BUFFER,
                          pixmap->devKind * pixmap->drawable.height, NULL,
                          gl_usage);
-        } else {
+
+            glamor_priv->suppress_gl_out_of_memory_logging = false;
+
+            if (glGetError() == GL_OUT_OF_MEMORY) {
+                if (!glamor_priv->logged_any_pbo_allocation_failure) {
+                    LogMessageVerb(X_WARNING, 0, "glamor: Failed to allocate 
%d "
+                                   "bytes PBO due to GL_OUT_OF_MEMORY.\n",
+                                   pixmap->devKind * pixmap->drawable.height);
+                    glamor_priv->logged_any_pbo_allocation_failure = true;
+                }
+                glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+                glDeleteBuffers(1, &priv->pbo);
+                priv->pbo = 0;
+            }
+        }
+
+        if (!priv->pbo) {
             pixmap->devPrivate.ptr = xallocarray(pixmap->devKind,
                                                  pixmap->drawable.height);
             if (!pixmap->devPrivate.ptr)
@@ -106,7 +124,7 @@
 
     RegionUninit(&region);
 
-    if (glamor_priv->has_rw_pbo) {
+    if (priv->pbo) {
         if (priv->map_access == GLAMOR_ACCESS_RW)
             gl_access = GL_READ_WRITE;
         else
@@ -128,8 +146,6 @@
 static void
 glamor_fini_pixmap(PixmapPtr pixmap)
 {
-    ScreenPtr                   screen = pixmap->drawable.pScreen;
-    glamor_screen_private       *glamor_priv = 
glamor_get_screen_private(screen);
     glamor_pixmap_private       *priv = glamor_get_pixmap_private(pixmap);
 
     if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(priv))
@@ -138,7 +154,7 @@
     if (!priv->prepared)
         return;
 
-    if (glamor_priv->has_rw_pbo) {
+    if (priv->pbo) {
         glBindBuffer(GL_PIXEL_UNPACK_BUFFER, priv->pbo);
         glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
         pixmap->devPrivate.ptr = NULL;
@@ -153,7 +169,7 @@
 
     RegionUninit(&priv->prepare_region);
 
-    if (glamor_priv->has_rw_pbo) {
+    if (priv->pbo) {
         glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
         glDeleteBuffers(1, &priv->pbo);
         priv->pbo = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glamor/glamor_priv.h 
new/xserver-1.20.8+0/glamor/glamor_priv.h
--- old/xserver-1.20.7+0/glamor/glamor_priv.h   2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/glamor/glamor_priv.h   2020-03-29 22:02:03.000000000 
+0200
@@ -289,6 +289,7 @@
 
     Bool suppress_gl_out_of_memory_logging;
     Bool logged_any_fbo_allocation_failure;
+    Bool logged_any_pbo_allocation_failure;
 
     /* xv */
     glamor_program xv_prog;
@@ -538,6 +539,7 @@
                         glamor_pixmap_fbo *fbo);
 void glamor_pixmap_destroy_fbo(PixmapPtr pixmap);
 Bool glamor_pixmap_fbo_fixup(ScreenPtr screen, PixmapPtr pixmap);
+void glamor_pixmap_clear_fbo(glamor_screen_private *glamor_priv, 
glamor_pixmap_fbo *fbo);
 
 /* Return whether 'picture' is alpha-only */
 static inline Bool glamor_picture_is_alpha(PicturePtr picture)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/glx/glxdri2.c 
new/xserver-1.20.8+0/glx/glxdri2.c
--- old/xserver-1.20.7+0/glx/glxdri2.c  2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/glx/glxdri2.c  2020-03-29 22:02:03.000000000 +0200
@@ -295,7 +295,7 @@
     }
 
     if (ret) {
-        *error = -1;
+        *error = cl->client->noClientException;
         return TRUE;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/dmx/config/dmxconfig.c 
new/xserver-1.20.8+0/hw/dmx/config/dmxconfig.c
--- old/xserver-1.20.7+0/hw/dmx/config/dmxconfig.c      2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/dmx/config/dmxconfig.c      2020-03-29 
22:02:03.000000000 +0200
@@ -72,7 +72,7 @@
     DMXConfigList *xinputs;
 } DMXConfigCmd, *DMXConfigCmdPtr;
 
-DMXConfigEntryPtr dmxConfigEntry;
+extern DMXConfigEntryPtr dmxConfigEntry;
 static DMXConfigCmd dmxConfigCmd;
 
 static int dmxDisplaysFromCommandLine;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/dmx/config/xdmxconfig.c 
new/xserver-1.20.8+0/hw/dmx/config/xdmxconfig.c
--- old/xserver-1.20.7+0/hw/dmx/config/xdmxconfig.c     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/dmx/config/xdmxconfig.c     2020-03-29 
22:02:03.000000000 +0200
@@ -65,7 +65,7 @@
 #define DMX_CANVAS_WIDTH  400
 #define DMX_CANVAS_HEIGHT 500
 
-DMXConfigEntryPtr dmxConfigEntry;
+extern DMXConfigEntryPtr dmxConfigEntry;
 static DMXConfigVirtualPtr dmxConfigCurrent, dmxConfigNewVirtual;
 static DMXConfigDisplayPtr dmxConfigCurrentDisplay, dmxConfigNewDisplay;
 static int dmxConfigGrabbed, dmxConfigGrabbedFine;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/dmx/glxProxy/glxext.c 
new/xserver-1.20.8+0/hw/dmx/glxProxy/glxext.c
--- old/xserver-1.20.7+0/hw/dmx/glxProxy/glxext.c       2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/dmx/glxProxy/glxext.c       2020-03-29 
22:02:03.000000000 +0200
@@ -47,8 +47,6 @@
 #include "extinit.h"
 #include "glx_extinit.h"
 
-int noGlxExtension;
-
 /*
 ** Forward declarations.
 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.c 
new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/driver.c
--- old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.c        
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/driver.c        
2020-03-29 22:02:03.000000000 +0200
@@ -131,6 +131,7 @@
     {OPTION_PAGEFLIP, "PageFlip", OPTV_BOOLEAN, {0}, FALSE},
     {OPTION_ZAPHOD_HEADS, "ZaphodHeads", OPTV_STRING, {0}, FALSE},
     {OPTION_DOUBLE_SHADOW, "DoubleShadow", OPTV_BOOLEAN, {0}, FALSE},
+    {OPTION_ATOMIC, "Atomic", OPTV_BOOLEAN, {0}, FALSE},
     {-1, NULL, OPTV_NONE, {0}, FALSE}
 };
 
@@ -1038,8 +1039,12 @@
 #endif
     }
 
-    ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
-    ms->atomic_modeset = (ret == 0);
+    if (xf86ReturnOptValBool(ms->drmmode.Options, OPTION_ATOMIC, FALSE)) {
+        ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
+        ms->atomic_modeset = (ret == 0);
+    } else {
+        ms->atomic_modeset = FALSE;
+    }
 
     ms->kms_has_modifiers = FALSE;
     ret = drmGetCap(ms->fd, DRM_CAP_ADDFB2_MODIFIERS, &value);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.h 
new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/driver.h
--- old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.h        
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/driver.h        
2020-03-29 22:02:03.000000000 +0200
@@ -51,6 +51,7 @@
     OPTION_PAGEFLIP,
     OPTION_ZAPHOD_HEADS,
     OPTION_DOUBLE_SHADOW,
+    OPTION_ATOMIC,
 } modesettingOpts;
 
 typedef struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/drmmode_display.c 
new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/drmmode_display.c
--- old/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/drmmode_display.c       
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/drivers/modesetting/drmmode_display.c       
2020-03-29 22:02:03.000000000 +0200
@@ -36,6 +36,7 @@
 #include "dumb_bo.h"
 #include "xf86str.h"
 #include "X11/Xatom.h"
+#include "mi.h"
 #include "micmap.h"
 #include "xf86cmap.h"
 #include "xf86DDC.h"
@@ -3676,7 +3677,7 @@
         goto out;
 
     if (mode_res->count_crtcs != config->num_crtc) {
-        ErrorF("number of CRTCs changed - failed to handle, %d vs %d\n", 
mode_res->count_crtcs, config->num_crtc);
+        /* this triggers with Zaphod mode where we don't currently support 
connector hotplug or MST. */
         goto out_free_res;
     }
 
@@ -3725,15 +3726,16 @@
         drmmode_output_init(scrn, drmmode, mode_res, i, TRUE, 0);
     }
 
-    /* Check to see if a lessee has disappeared */
-    drmmode_validate_leases(scrn);
-
     if (changed) {
         RRSetChanged(xf86ScrnToScreen(scrn));
         RRTellChanged(xf86ScrnToScreen(scrn));
     }
 
 out_free_res:
+
+    /* Check to see if a lessee has disappeared */
+    drmmode_validate_leases(scrn);
+
     drmModeFreeResources(mode_res);
 out:
     RRGetInfo(xf86ScrnToScreen(scrn), TRUE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/xfree86/modes/xf86Rotate.c 
new/xserver-1.20.8+0/hw/xfree86/modes/xf86Rotate.c
--- old/xserver-1.20.7+0/hw/xfree86/modes/xf86Rotate.c  2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/modes/xf86Rotate.c  2020-03-29 
22:02:03.000000000 +0200
@@ -176,7 +176,7 @@
     DamagePtr damage = xf86_config->rotation_damage;
     RegionPtr region;
 
-    if (!damage)
+    if (!damage || !pScreen->root)
         return FALSE;
     xf86RotatePrepare(pScreen);
     region = DamageRegion(damage);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/os-support/bsd/bsd_init.c 
new/xserver-1.20.8+0/hw/xfree86/os-support/bsd/bsd_init.c
--- old/xserver-1.20.7+0/hw/xfree86/os-support/bsd/bsd_init.c   2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/os-support/bsd/bsd_init.c   2020-03-29 
22:02:03.000000000 +0200
@@ -663,7 +663,7 @@
 }
 
 void
-xf86OSInputThreadInit()
+xf86OSInputThreadInit(void)
 {
     return;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/os-support/hurd/hurd_init.c 
new/xserver-1.20.8+0/hw/xfree86/os-support/hurd/hurd_init.c
--- old/xserver-1.20.7+0/hw/xfree86/os-support/hurd/hurd_init.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/os-support/hurd/hurd_init.c 2020-03-29 
22:02:03.000000000 +0200
@@ -89,7 +89,7 @@
 }
 
 void
-xf86OSInputThreadInit()
+xf86OSInputThreadInit(void)
 {
     return;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/os-support/linux/lnx_init.c 
new/xserver-1.20.8+0/hw/xfree86/os-support/linux/lnx_init.c
--- old/xserver-1.20.7+0/hw/xfree86/os-support/linux/lnx_init.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/os-support/linux/lnx_init.c 2020-03-29 
22:02:03.000000000 +0200
@@ -399,7 +399,7 @@
 }
 
 void
-xf86OSInputThreadInit()
+xf86OSInputThreadInit(void)
 {
     return;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/os-support/solaris/sun_vid.c 
new/xserver-1.20.8+0/hw/xfree86/os-support/solaris/sun_vid.c
--- old/xserver-1.20.7+0/hw/xfree86/os-support/solaris/sun_vid.c        
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/os-support/solaris/sun_vid.c        
2020-03-29 22:02:03.000000000 +0200
@@ -74,7 +74,7 @@
 /***************************************************************************/
 
 void
-xf86OSInputThreadInit()
+xf86OSInputThreadInit(void)
 {
     /*
      * Need to enable in input thread as well, as Solaris kernel tracks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/hw/xfree86/os-support/stub/stub_init.c 
new/xserver-1.20.8+0/hw/xfree86/os-support/stub/stub_init.c
--- old/xserver-1.20.7+0/hw/xfree86/os-support/stub/stub_init.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xfree86/os-support/stub/stub_init.c 2020-03-29 
22:02:03.000000000 +0200
@@ -24,3 +24,9 @@
 xf86UseMsg(void)
 {
 }
+
+void
+xf86OSInputThreadInit(void)
+{
+    return;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/xwayland/xwayland-glamor-gbm.c 
new/xserver-1.20.8+0/hw/xwayland/xwayland-glamor-gbm.c
--- old/xserver-1.20.7+0/hw/xwayland/xwayland-glamor-gbm.c      2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xwayland/xwayland-glamor-gbm.c      2020-03-29 
22:02:03.000000000 +0200
@@ -242,8 +242,12 @@
         if (bo) {
             pixmap = xwl_glamor_gbm_create_pixmap_for_bo(screen, bo, depth);
 
-            if (!pixmap)
+            if (!pixmap) {
                 gbm_bo_destroy(bo);
+            }
+            else if (xwl_screen->rootless && hint == 
CREATE_PIXMAP_USAGE_BACKING_PIXMAP) {
+                glamor_clear_pixmap(pixmap);
+            }
         }
     }
 
@@ -794,6 +798,10 @@
     struct xwl_format *xwl_format = NULL;
     int i;
 
+    if (modifier_hi == (DRM_FORMAT_MOD_INVALID >> 32) &&
+        modifier_lo == (DRM_FORMAT_MOD_INVALID & 0xffffffff))
+        return;
+
     for (i = 0; i < xwl_screen->num_formats; i++) {
         if (xwl_screen->formats[i].format == format) {
             xwl_format = &xwl_screen->formats[i];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/xwayland/xwayland-present.c 
new/xserver-1.20.8+0/hw/xwayland/xwayland-present.c
--- old/xserver-1.20.7+0/hw/xwayland/xwayland-present.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/hw/xwayland/xwayland-present.c 2020-03-29 
22:02:03.000000000 +0200
@@ -60,6 +60,7 @@
         xwl_present_window->msc = 1;
         xwl_present_window->ust = GetTimeInMicros();
 
+        xorg_list_init(&xwl_present_window->frame_callback_list);
         xorg_list_init(&xwl_present_window->event_list);
         xorg_list_init(&xwl_present_window->release_queue);
 
@@ -96,7 +97,7 @@
     if (xwl_present_has_events(xwl_present_window)) {
         CARD32 timeout;
 
-        if (xwl_present_window->frame_callback)
+        if (!xorg_list_is_empty(&xwl_present_window->frame_callback_list))
             timeout = TIMER_LEN_FLIP;
         else
             timeout = TIMER_LEN_COPY;
@@ -119,10 +120,7 @@
     if (!xwl_present_window)
         return;
 
-    if (xwl_present_window->frame_callback) {
-        wl_callback_destroy(xwl_present_window->frame_callback);
-        xwl_present_window->frame_callback = NULL;
-    }
+    xorg_list_del(&xwl_present_window->frame_callback_list);
 
     if (xwl_present_window->sync_callback) {
         wl_callback_destroy(xwl_present_window->sync_callback);
@@ -244,7 +242,10 @@
 {
     struct xwl_present_window *xwl_present_window = arg;
 
-    xwl_present_window->frame_timer_firing = TRUE;
+    /* If we were expecting a frame callback for this window, it didn't arrive
+     * in a second. Stop listening to it to avoid double-bumping the MSC
+     */
+    xorg_list_del(&xwl_present_window->frame_callback_list);
 
     xwl_present_msc_bump(xwl_present_window);
     xwl_present_reset_timer(xwl_present_window);
@@ -252,20 +253,10 @@
     return 0;
 }
 
-static void
-xwl_present_frame_callback(void *data,
-               struct wl_callback *callback,
-               uint32_t time)
+void
+xwl_present_frame_callback(struct xwl_present_window *xwl_present_window)
 {
-    struct xwl_present_window *xwl_present_window = data;
-
-    wl_callback_destroy(xwl_present_window->frame_callback);
-    xwl_present_window->frame_callback = NULL;
-
-    if (xwl_present_window->frame_timer_firing) {
-        /* If the timer is firing, this frame callback is too late */
-        return;
-    }
+    xorg_list_del(&xwl_present_window->frame_callback_list);
 
     xwl_present_msc_bump(xwl_present_window);
 
@@ -275,10 +266,6 @@
     xwl_present_reset_timer(xwl_present_window);
 }
 
-static const struct wl_callback_listener xwl_present_frame_listener = {
-    xwl_present_frame_callback
-};
-
 static void
 xwl_present_sync_callback(void *data,
                struct wl_callback *callback,
@@ -360,6 +347,7 @@
                          uint64_t msc)
 {
     struct xwl_present_window *xwl_present_window = 
xwl_present_window_get_priv(present_window);
+    struct xwl_window *xwl_window = xwl_window_from_window(present_window);
     struct xwl_present_event *event;
 
     event = malloc(sizeof *event);
@@ -372,7 +360,15 @@
 
     xorg_list_append(&event->list, &xwl_present_window->event_list);
 
-    if (!xwl_present_window->frame_timer)
+    /* If there's a pending frame callback, use that */
+    if (xwl_window && xwl_window->frame_callback &&
+        xorg_list_is_empty(&xwl_present_window->frame_callback_list)) {
+        xorg_list_add(&xwl_present_window->frame_callback_list,
+                      &xwl_window->frame_callback_list);
+    }
+
+    if ((xwl_window && xwl_window->frame_callback) ||
+        !xwl_present_window->frame_timer)
         xwl_present_reset_timer(xwl_present_window);
 
     return Success;
@@ -488,15 +484,15 @@
     /* We can flip directly to the main surface (full screen window without 
clips) */
     wl_surface_attach(xwl_window->surface, buffer, 0, 0);
 
-    if (!xwl_present_window->frame_callback) {
-        xwl_present_window->frame_callback = 
wl_surface_frame(xwl_window->surface);
-        wl_callback_add_listener(xwl_present_window->frame_callback,
-                                 &xwl_present_frame_listener,
-                                 xwl_present_window);
+    if (!xwl_window->frame_callback)
+        xwl_window_create_frame_callback(xwl_window);
+
+    if (xorg_list_is_empty(&xwl_present_window->frame_callback_list)) {
+        xorg_list_add(&xwl_present_window->frame_callback_list,
+                      &xwl_window->frame_callback_list);
     }
 
     /* Realign timer */
-    xwl_present_window->frame_timer_firing = FALSE;
     xwl_present_reset_timer(xwl_present_window);
 
     wl_surface_damage(xwl_window->surface, 0, 0,
@@ -528,18 +524,12 @@
 }
 
 void
-xwl_present_unrealize_window(WindowPtr window)
+xwl_present_unrealize_window(struct xwl_present_window *xwl_present_window)
 {
-    struct xwl_present_window *xwl_present_window = 
xwl_present_window_priv(window);
-
-    if (!xwl_present_window || !xwl_present_window->frame_callback)
-        return;
-
     /* The pending frame callback may never be called, so drop it and shorten
      * the frame timer interval.
      */
-    wl_callback_destroy(xwl_present_window->frame_callback);
-    xwl_present_window->frame_callback = NULL;
+    xorg_list_del(&xwl_present_window->frame_callback_list);
     xwl_present_reset_timer(xwl_present_window);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/xwayland/xwayland.c 
new/xserver-1.20.8+0/hw/xwayland/xwayland.c
--- old/xserver-1.20.7+0/hw/xwayland/xwayland.c 2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/hw/xwayland/xwayland.c 2020-03-29 22:02:03.000000000 
+0200
@@ -40,7 +40,11 @@
 
 #ifdef XF86VIDMODE
 #include <X11/extensions/xf86vmproto.h>
-_X_EXPORT Bool noXFree86VidModeExtension;
+extern _X_EXPORT Bool noXFree86VidModeExtension;
+#endif
+
+#ifdef XWL_HAS_GLAMOR
+#include <glamor.h>
 #endif
 
 void
@@ -596,6 +600,10 @@
     dixSetPrivate(&window->devPrivates, &xwl_window_private_key, xwl_window);
     xorg_list_init(&xwl_window->link_damage);
 
+#ifdef GLAMOR_HAS_GBM
+    xorg_list_init(&xwl_window->frame_callback_list);
+#endif
+
     xwl_window_init_allow_commits(xwl_window);
 
     return TRUE;
@@ -680,11 +688,6 @@
     xwl_screen->UnrealizeWindow = screen->UnrealizeWindow;
     screen->UnrealizeWindow = xwl_unrealize_window;
 
-#ifdef GLAMOR_HAS_GBM
-    if (xwl_screen->present)
-        xwl_present_unrealize_window(window);
-#endif
-
     xwl_window = xwl_window_get(window);
     if (!xwl_window)
         return ret;
@@ -696,6 +699,18 @@
     if (xwl_window->frame_callback)
         wl_callback_destroy(xwl_window->frame_callback);
 
+#ifdef GLAMOR_HAS_GBM
+    if (xwl_screen->present) {
+        struct xwl_present_window *xwl_present_window, *tmp;
+
+        xorg_list_for_each_entry_safe(xwl_present_window, tmp,
+                                      &xwl_window->frame_callback_list,
+                                      frame_callback_list) {
+            xwl_present_unrealize_window(xwl_present_window);
+        }
+    }
+#endif
+
     free(xwl_window);
     dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
 
@@ -737,12 +752,32 @@
 
     wl_callback_destroy (xwl_window->frame_callback);
     xwl_window->frame_callback = NULL;
+
+#ifdef GLAMOR_HAS_GBM
+    if (xwl_window->xwl_screen->present) {
+        struct xwl_present_window *xwl_present_window, *tmp;
+
+        xorg_list_for_each_entry_safe(xwl_present_window, tmp,
+                                      &xwl_window->frame_callback_list,
+                                      frame_callback_list) {
+            xwl_present_frame_callback(xwl_present_window);
+        }
+    }
+#endif
 }
 
 static const struct wl_callback_listener frame_listener = {
     frame_callback
 };
 
+void
+xwl_window_create_frame_callback(struct xwl_window *xwl_window)
+{
+    xwl_window->frame_callback = wl_surface_frame(xwl_window->surface);
+    wl_callback_add_listener(xwl_window->frame_callback, &frame_listener,
+                             xwl_window);
+}
+
 static Bool
 xwl_destroy_window(WindowPtr window)
 {
@@ -813,19 +848,17 @@
                               box->x2 - box->x1, box->y2 - box->y1);
     }
 
-    xwl_window->frame_callback = wl_surface_frame(xwl_window->surface);
-    wl_callback_add_listener(xwl_window->frame_callback, &frame_listener, 
xwl_window);
-
-    wl_surface_commit(xwl_window->surface);
+    xwl_window_create_frame_callback(xwl_window);
     DamageEmpty(window_get_damage(xwl_window->window));
-
-    xorg_list_del(&xwl_window->link_damage);
 }
 
 static void
 xwl_screen_post_damage(struct xwl_screen *xwl_screen)
 {
     struct xwl_window *xwl_window, *next_xwl_window;
+    struct xorg_list commit_window_list;
+
+    xorg_list_init(&commit_window_list);
 
     xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
                                   &xwl_screen->damage_window_list, 
link_damage) {
@@ -843,6 +876,24 @@
 #endif
 
         xwl_window_post_damage(xwl_window);
+        xorg_list_del(&xwl_window->link_damage);
+        xorg_list_append(&xwl_window->link_damage, &commit_window_list);
+    }
+
+    if (xorg_list_is_empty(&commit_window_list))
+        return;
+
+#ifdef XWL_HAS_GLAMOR
+    if (xwl_screen->glamor &&
+        xwl_screen->egl_backend == &xwl_screen->gbm_backend) {
+        glamor_block_handler(xwl_screen->screen);
+    }
+#endif
+
+    xorg_list_for_each_entry_safe(xwl_window, next_xwl_window,
+                                  &commit_window_list, link_damage) {
+        wl_surface_commit(xwl_window->surface);
+        xorg_list_del(&xwl_window->link_damage);
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/hw/xwayland/xwayland.h 
new/xserver-1.20.8+0/hw/xwayland/xwayland.h
--- old/xserver-1.20.7+0/hw/xwayland/xwayland.h 2020-01-13 23:50:00.000000000 
+0100
+++ new/xserver-1.20.8+0/hw/xwayland/xwayland.h 2020-03-29 22:02:03.000000000 
+0200
@@ -183,6 +183,7 @@
     struct wl_callback *frame_callback;
     Bool allow_commits;
 #ifdef GLAMOR_HAS_GBM
+    struct xorg_list frame_callback_list;
     Bool present_flipped;
 #endif
 };
@@ -192,15 +193,13 @@
     struct xwl_screen *xwl_screen;
     struct xwl_present_event *sync_flip;
     WindowPtr window;
-    struct xorg_list link;
+    struct xorg_list frame_callback_list;
 
     uint64_t msc;
     uint64_t ust;
 
     OsTimerPtr frame_timer;
-    Bool frame_timer_firing;
 
-    struct wl_callback *frame_callback;
     struct wl_callback *sync_callback;
 
     struct xorg_list event_list;
@@ -378,6 +377,8 @@
     Bool xdg_output_done;
 };
 
+void xwl_window_create_frame_callback(struct xwl_window *xwl_window);
+
 void xwl_sync_events (struct xwl_screen *xwl_screen);
 
 Bool xwl_screen_init_cursor(struct xwl_screen *xwl_screen);
@@ -452,9 +453,10 @@
 void xwl_glamor_egl_make_current(struct xwl_screen *xwl_screen);
 
 #ifdef GLAMOR_HAS_GBM
+void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window);
 Bool xwl_present_init(ScreenPtr screen);
 void xwl_present_cleanup(WindowPtr window);
-void xwl_present_unrealize_window(WindowPtr window);
+void xwl_present_unrealize_window(struct xwl_present_window 
*xwl_present_window);
 #endif /* GLAMOR_HAS_GBM */
 
 #ifdef XV
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/include/dix-config.h.in 
new/xserver-1.20.8+0/include/dix-config.h.in
--- old/xserver-1.20.7+0/include/dix-config.h.in        2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/include/dix-config.h.in        2020-03-29 
22:02:03.000000000 +0200
@@ -485,6 +485,9 @@
 /* Glamor can use eglQueryDmaBuf* functions */
 #undef GLAMOR_HAS_EGL_QUERY_DMABUF
 
+/* Glamor can use EGL_MESA_query_driver functions */
+#undef GLAMOR_HAS_EGL_QUERY_DRIVER
+
 /* byte order */
 #undef X_BYTE_ORDER
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/meson.build 
new/xserver-1.20.8+0/meson.build
--- old/xserver-1.20.7+0/meson.build    2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/meson.build    2020-03-29 22:02:03.000000000 +0200
@@ -3,7 +3,7 @@
             'buildtype=debugoptimized',
             'c_std=gnu99',
         ],
-        version: '1.20.7',
+        version: '1.20.8',
         meson_version: '>= 0.42.0',
 )
 add_project_arguments('-DHAVE_DIX_CONFIG_H', language: 'c')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/os/io.c new/xserver-1.20.8+0/os/io.c
--- old/xserver-1.20.7+0/os/io.c        2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/os/io.c        2020-03-29 22:02:03.000000000 +0200
@@ -557,6 +557,11 @@
 ResetCurrentRequest(ClientPtr client)
 {
     OsCommPtr oc = (OsCommPtr) client->osPrivate;
+
+    /* ignore dying clients */
+    if (!oc)
+        return;
+
     register ConnectionInputPtr oci = oc->input;
     register xReq *request;
     int gotnow, needed;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/misc.c 
new/xserver-1.20.8+0/test/misc.c
--- old/xserver-1.20.7+0/test/misc.c    2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/misc.c    2020-03-29 22:02:03.000000000 +0200
@@ -33,7 +33,7 @@
 
 #include "tests-common.h"
 
-ScreenInfo screenInfo;
+extern ScreenInfo screenInfo;
 
 static void
 dix_version_compare(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/test/xi1/protocol-xchangedevicecontrol.c 
new/xserver-1.20.8+0/test/xi1/protocol-xchangedevicecontrol.c
--- old/xserver-1.20.7+0/test/xi1/protocol-xchangedevicecontrol.c       
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi1/protocol-xchangedevicecontrol.c       
2020-03-29 22:02:03.000000000 +0200
@@ -37,7 +37,7 @@
 
 #include "protocol-common.h"
 
-ClientRec client_window;
+extern ClientRec client_window;
 static ClientRec client_request;
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-common.c 
new/xserver-1.20.8+0/test/xi2/protocol-common.c
--- old/xserver-1.20.7+0/test/xi2/protocol-common.c     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-common.c     2020-03-29 
22:02:03.000000000 +0200
@@ -45,6 +45,8 @@
 
 void *global_userdata;
 
+void (*reply_handler) (ClientPtr client, int len, char *data, void *userdata);
+
 int enable_GrabButton_wrap = 1;
 int enable_XISetEventMask_wrap = 1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-common.h 
new/xserver-1.20.8+0/test/xi2/protocol-common.h
--- old/xserver-1.20.7+0/test/xi2/protocol-common.h     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-common.h     2020-03-29 
22:02:03.000000000 +0200
@@ -99,7 +99,7 @@
  * The reply handler called from WriteToClient. Set this handler if you need
  * to check the reply values.
  */
-void (*reply_handler) (ClientPtr client, int len, char *data, void *userdata);
+extern void (*reply_handler) (ClientPtr client, int len, char *data, void 
*userdata);
 
 /**
  * The default screen used for the windows. Initialized by init_simple().
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/test/xi2/protocol-xigetclientpointer.c 
new/xserver-1.20.8+0/test/xi2/protocol-xigetclientpointer.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xigetclientpointer.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xigetclientpointer.c 2020-03-29 
22:02:03.000000000 +0200
@@ -46,7 +46,7 @@
     int win;
 } test_data;
 
-ClientRec client_window;
+extern ClientRec client_window;
 static ClientRec client_request;
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/test/xi2/protocol-xigetselectedevents.c 
new/xserver-1.20.8+0/test/xi2/protocol-xigetselectedevents.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xigetselectedevents.c        
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xigetselectedevents.c        
2020-03-29 22:02:03.000000000 +0200
@@ -60,7 +60,7 @@
     int mask_len;
 } test_data;
 
-ClientRec client_window;
+extern ClientRec client_window;
 
 /* AddResource is called from XISetSEventMask, we don't need this */
 Bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/test/xi2/protocol-xipassivegrabdevice.c 
new/xserver-1.20.8+0/test/xi2/protocol-xipassivegrabdevice.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xipassivegrabdevice.c        
2020-01-13 23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xipassivegrabdevice.c        
2020-03-29 22:02:03.000000000 +0200
@@ -41,7 +41,7 @@
 
 #include "protocol-common.h"
 
-ClientRec client_window;
+extern ClientRec client_window;
 static ClientRec client_request;
 
 #define N_MODS 7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-xiquerydevice.c 
new/xserver-1.20.8+0/test/xi2/protocol-xiquerydevice.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xiquerydevice.c      2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xiquerydevice.c      2020-03-29 
22:02:03.000000000 +0200
@@ -54,7 +54,7 @@
     int num_devices_in_reply;
 };
 
-ClientRec client_window;
+extern ClientRec client_window;
 
 static void reply_XIQueryDevice_data(ClientPtr client, int len, char *data,
                                      void *closure);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-xiquerypointer.c 
new/xserver-1.20.8+0/test/xi2/protocol-xiquerypointer.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xiquerypointer.c     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xiquerypointer.c     2020-03-29 
22:02:03.000000000 +0200
@@ -41,7 +41,7 @@
 
 #include "protocol-common.h"
 
-ClientRec client_window;
+extern ClientRec client_window;
 static ClientRec client_request;
 static void reply_XIQueryPointer_data(ClientPtr client, int len,
                                       char *data, void *closure);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-xiqueryversion.c 
new/xserver-1.20.8+0/test/xi2/protocol-xiqueryversion.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xiqueryversion.c     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xiqueryversion.c     2020-03-29 
22:02:03.000000000 +0200
@@ -58,7 +58,7 @@
     int minor_expected;
 };
 
-ClientRec client_window;
+extern ClientRec client_window;
 
 static void
 reply_XIQueryVersion(ClientPtr client, int len, char *data, void *closure)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-xiselectevents.c 
new/xserver-1.20.8+0/test/xi2/protocol-xiselectevents.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xiselectevents.c     2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xiselectevents.c     2020-03-29 
22:02:03.000000000 +0200
@@ -62,7 +62,7 @@
 
 static unsigned char *data[4096 * 20];  /* the request data buffer */
 
-ClientRec client_window;
+extern ClientRec client_window;
 
 int
 __real_XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.7+0/test/xi2/protocol-xisetclientpointer.c 
new/xserver-1.20.8+0/test/xi2/protocol-xisetclientpointer.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xisetclientpointer.c 2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xisetclientpointer.c 2020-03-29 
22:02:03.000000000 +0200
@@ -48,7 +48,7 @@
 
 #include "protocol-common.h"
 
-ClientRec client_window;
+extern ClientRec client_window;
 static ClientRec client_request;
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.7+0/test/xi2/protocol-xiwarppointer.c 
new/xserver-1.20.8+0/test/xi2/protocol-xiwarppointer.c
--- old/xserver-1.20.7+0/test/xi2/protocol-xiwarppointer.c      2020-01-13 
23:50:00.000000000 +0100
+++ new/xserver-1.20.8+0/test/xi2/protocol-xiwarppointer.c      2020-03-29 
22:02:03.000000000 +0200
@@ -44,7 +44,7 @@
 static int expected_x = SPRITE_X;
 static int expected_y = SPRITE_Y;
 
-ClientRec client_window;
+extern ClientRec client_window;
 
 /**
  * This function overrides the one in the screen rec.


Reply via email to