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(®ion); - 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.