Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2020-01-18 12:14:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Sat Jan 18 12:14:53 2020 rev:377 rq:764307 version:1.20.7+0

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2020-01-07 23:51:20.659968736 +0100
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-server.new.26092/xorg-x11-server.changes   
    2020-01-18 12:16:35.139089180 +0100
@@ -1,0 +2,20 @@
+Tue Jan 14 12:41:02 UTC 2020 - [email protected]
+
+- Update to version 1.20.7+0:
+  * xserver 1.20.7
+  * ospoll: Fix Solaris ports implementation to build on Solaris 11.4
+  * os-support/solaris: Set IOPL for input thread too
+  * Add xf86OSInputThreadInit call from common layer into os-support layer
+  * Add ddxInputThread call from os layer into ddx layer
+  * os-support/solaris: Drop ExtendedEnabled global variable
+  * glamor: Only use dual blending with GLSL >= 1.30
+  * modesetting: Check whether RandR was initialized before calling 
rrGetScrPriv
+  * Xi: return AlreadyGrabbed for key grabs > 255
+  * xwayland: Do flush GPU work in xwl_present_flush
+  * modesetting: Clear new screen pixmap storage on RandR resize
+  * xfree86/modes: Call xf86RotateRedisplay from xf86CrtcRotate
+  * modesetting: Call glamor_finish from drmmode_crtc_set_mode
+  * modesetting: Use EGL_MESA_query_driver to select DRI driver if possible
+  * glamor: Add a function to get the driver name via EGL_MESA_query_driver
+
+-------------------------------------------------------------------

Old:
----
  xserver-1.20.6+0.tar.xz

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

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

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.DgUn6k/_old  2020-01-18 12:16:38.379090917 +0100
+++ /var/tmp/diff_new_pack.DgUn6k/_new  2020-01-18 12:16:38.383090919 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package xorg-x11-server
 #
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -42,7 +42,7 @@
 %endif
 
 Name:           xorg-x11-server
-Version:        1.20.6+0
+Version:        1.20.7+0
 Release:        0
 URL:            http://xorg.freedesktop.org/
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DgUn6k/_old  2020-01-18 12:16:38.615091044 +0100
+++ /var/tmp/diff_new_pack.DgUn6k/_new  2020-01-18 12:16:38.619091046 +0100
@@ -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">6b3fafa9</param>
+    <param name="revision">489f4191</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.DgUn6k/_old  2020-01-18 12:16:38.675091076 +0100
+++ /var/tmp/diff_new_pack.DgUn6k/_new  2020-01-18 12:16:38.675091076 +0100
@@ -1,4 +1,4 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://gitlab.freedesktop.org/xorg/xserver.git</param>
-              <param 
name="changesrevision">6b3fafa9bfa94b9b04a1a44dc52afb7c4bc250ce</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">489f4191f3c881c6c8acce97ec612167a4ae0f33</param></service></servicedata>
\ No newline at end of file

++++++ pre_checkin.sh ++++++
--- /var/tmp/diff_new_pack.DgUn6k/_old  2020-01-18 12:16:38.871091181 +0100
+++ /var/tmp/diff_new_pack.DgUn6k/_new  2020-01-18 12:16:38.871091181 +0100
@@ -22,14 +22,14 @@
 else
        echo "Wrong usage of this script"
        echo "$0 can be started in two ways:"
-       echo "1: $0 --tar {xorg-server-xxxx.tar.bz2}"
+       echo "1: $0 --tar {xserver-xxxx.tar.xz}"
        echo "2: $0 --verify {source-folder}"
        echo "Variant 1 creates the file xorg-server-provides to be included in 
the src rpm"
        echo "Variant 2 is being called during build to ensure the ABI provides 
match the expectations."
        echo ""
        echo ""
        echo "Trying to guess the right tarball"
-       sh $0 --tar xorg-server-*.tar.bz2
+       sh $0 --tar xserver-*.tar.xz
        echo "... Please verify if the result makes sense"
        exit 2
 fi

++++++ xorg-server-provides ++++++
--- /var/tmp/diff_new_pack.DgUn6k/_old  2020-01-18 12:16:38.979091239 +0100
+++ /var/tmp/diff_new_pack.DgUn6k/_new  2020-01-18 12:16:38.983091241 +0100
@@ -1,4 +1,4 @@
 Provides: X11_ABI_XINPUT = 24.1
-Provides: X11_ABI_VIDEODRV = 24.0
+Provides: X11_ABI_VIDEODRV = 24.1
 Provides: X11_ABI_ANSIC = 0.4
 Provides: X11_ABI_EXTENSION = 10.0

++++++ xserver-1.20.6+0.tar.xz -> xserver-1.20.7+0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/Xi/xipassivegrab.c 
new/xserver-1.20.7+0/Xi/xipassivegrab.c
--- old/xserver-1.20.6+0/Xi/xipassivegrab.c     2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/Xi/xipassivegrab.c     2020-01-13 23:50:00.000000000 
+0100
@@ -203,8 +203,14 @@
                                 &param, XI2, &mask);
             break;
         case XIGrabtypeKeycode:
-            status = GrabKey(client, dev, mod_dev, stuff->detail,
-                             &param, XI2, &mask);
+            /* XI2 allows 32-bit keycodes but thanks to XKB we can never
+             * implement this. Just return an error for all keycodes that
+             * cannot work anyway */
+            if (stuff->detail > 255)
+                status = XIAlreadyGrabbed;
+            else
+                status = GrabKey(client, dev, mod_dev, stuff->detail,
+                                 &param, XI2, &mask);
             break;
         case XIGrabtypeEnter:
         case XIGrabtypeFocusIn:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/configure.ac 
new/xserver-1.20.7+0/configure.ac
--- old/xserver-1.20.6+0/configure.ac   2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/configure.ac   2020-01-13 23:50:00.000000000 +0100
@@ -26,9 +26,9 @@
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.20.6, 
[https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
-RELEASE_DATE="2019-11-22"
-RELEASE_NAME="Enchiladas de Queso"
+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_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/glamor/glamor.c 
new/xserver-1.20.7+0/glamor/glamor.c
--- old/xserver-1.20.6+0/glamor/glamor.c        2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/glamor/glamor.c        2020-01-13 23:50:00.000000000 
+0100
@@ -624,6 +624,7 @@
         epoxy_gl_version() >= 30 ||
         epoxy_has_gl_extension("GL_NV_pack_subimage");
     glamor_priv->has_dual_blend =
+        glamor_priv->glsl_version >= 130 &&
         epoxy_has_gl_extension("GL_ARB_blend_func_extended");
 
     glamor_priv->can_copyplane = (gl_version >= 30);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/glamor/glamor.h 
new/xserver-1.20.7+0/glamor/glamor.h
--- old/xserver-1.20.6+0/glamor/glamor.h        2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/glamor/glamor.h        2020-01-13 23:50:00.000000000 
+0100
@@ -395,6 +395,8 @@
                                                struct gbm_bo *bo,
                                                Bool used_modifiers);
 
+extern _X_EXPORT const char *glamor_egl_get_driver_name(ScreenPtr screen);
+
 #endif
 
 extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/glamor/glamor_egl.c 
new/xserver-1.20.7+0/glamor/glamor_egl.c
--- old/xserver-1.20.6+0/glamor/glamor_egl.c    2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/glamor/glamor_egl.c    2020-01-13 23:50:00.000000000 
+0100
@@ -688,6 +688,22 @@
 #endif
 }
 
+_X_EXPORT const char *
+glamor_egl_get_driver_name(ScreenPtr screen)
+{
+#ifdef GLAMOR_HAS_EGL_QUERY_DRIVER
+    struct glamor_egl_screen_private *glamor_egl;
+
+    glamor_egl = glamor_egl_get_screen_private(xf86ScreenToScrn(screen));
+
+    if (epoxy_has_egl_extension(glamor_egl->display, "EGL_MESA_query_driver"))
+        return eglGetDisplayDriverName(glamor_egl->display);
+#endif
+
+    return NULL;
+}
+
+
 static Bool
 glamor_egl_destroy_pixmap(PixmapPtr pixmap)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/dmx/dmxinit.c 
new/xserver-1.20.7+0/hw/dmx/dmxinit.c
--- old/xserver-1.20.6+0/hw/dmx/dmxinit.c       2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/hw/dmx/dmxinit.c       2020-01-13 23:50:00.000000000 
+0100
@@ -838,6 +838,15 @@
     AbortDDX(error);
 }
 
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
+
 /** This function is called in Xserver/os/osinit.c from \a OsInit(). */
 void
 OsVendorInit(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/kdrive/ephyr/ephyrinit.c 
new/xserver-1.20.7+0/hw/kdrive/ephyr/ephyrinit.c
--- old/xserver-1.20.6+0/hw/kdrive/ephyr/ephyrinit.c    2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/kdrive/ephyr/ephyrinit.c    2020-01-13 
23:50:00.000000000 +0100
@@ -100,6 +100,15 @@
     KdCloseInput();
 }
 
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
+
 #ifdef DDXBEFORERESET
 void
 ddxBeforeReset(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/vfb/InitOutput.c 
new/xserver-1.20.7+0/hw/vfb/InitOutput.c
--- old/xserver-1.20.6+0/hw/vfb/InitOutput.c    2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/hw/vfb/InitOutput.c    2020-01-13 23:50:00.000000000 
+0100
@@ -232,6 +232,15 @@
 }
 #endif
 
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
+
 void
 ddxUseMsg(void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xfree86/common/xf86Init.c 
new/xserver-1.20.7+0/hw/xfree86/common/xf86Init.c
--- old/xserver-1.20.6+0/hw/xfree86/common/xf86Init.c   2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/common/xf86Init.c   2020-01-13 
23:50:00.000000000 +0100
@@ -1444,3 +1444,13 @@
 {
 }
 #endif
+
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+    xf86OSInputThreadInit();
+}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xfree86/common/xf86Module.h 
new/xserver-1.20.7+0/hw/xfree86/common/xf86Module.h
--- old/xserver-1.20.6+0/hw/xfree86/common/xf86Module.h 2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/common/xf86Module.h 2020-01-13 
23:50:00.000000000 +0100
@@ -74,7 +74,7 @@
  * mask is 0xFFFF0000.
  */
 #define ABI_ANSIC_VERSION      SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION   SET_ABI_VERSION(24, 0)
+#define ABI_VIDEODRV_VERSION   SET_ABI_VERSION(24, 1)
 #define ABI_XINPUT_VERSION     SET_ABI_VERSION(24, 1)
 #define ABI_EXTENSION_VERSION  SET_ABI_VERSION(10, 0)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/dri2.c 
new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/dri2.c
--- old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/dri2.c  2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/dri2.c  2020-01-13 
23:50:00.000000000 +0100
@@ -1033,6 +1033,7 @@
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     modesettingPtr ms = modesettingPTR(scrn);
     DRI2InfoRec info;
+    const char *driver_names[2] = { NULL, NULL };
 
     if (!glamor_supports_pixmap_import_export(screen)) {
         xf86DrvMsg(scrn->scrnIndex, X_WARNING,
@@ -1071,9 +1072,30 @@
     info.DestroyBuffer2 = ms_dri2_destroy_buffer2;
     info.CopyRegion2 = ms_dri2_copy_region2;
 
-    /* These two will be filled in by dri2.c */
-    info.numDrivers = 0;
-    info.driverNames = NULL;
+    /* Ask Glamor to obtain the DRI driver name via EGL_MESA_query_driver. */
+    driver_names[0] = glamor_egl_get_driver_name(screen);
+
+    if (driver_names[0]) {
+        /* There is no VDPAU driver for Intel, fallback to the generic
+         * OpenGL/VAAPI va_gl backend to emulate VDPAU.  Otherwise,
+         * guess that the DRI and VDPAU drivers have the same name.
+         */
+        if (strcmp(driver_names[0], "i965") == 0 ||
+            strcmp(driver_names[0], "iris") == 0) {
+            driver_names[1] = "va_gl";
+        } else {
+            driver_names[1] = driver_names[0];
+        }
+
+        info.numDrivers = 2;
+        info.driverNames = driver_names;
+    } else {
+        /* EGL_MESA_query_driver was unavailable; let dri2.c select the
+         * driver and fill in these fields for us.
+         */
+        info.numDrivers = 0;
+        info.driverNames = NULL;
+    }
 
     return DRI2ScreenInit(screen, &info);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/driver.c 
new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.c
--- old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/driver.c        
2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/driver.c        
2020-01-13 23:50:00.000000000 +0100
@@ -1332,7 +1332,6 @@
 CreateScreenResources(ScreenPtr pScreen)
 {
     ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-    rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen);
     modesettingPtr ms = modesettingPTR(pScrn);
     PixmapPtr rootPixmap;
     Bool ret;
@@ -1398,10 +1397,14 @@
         }
     }
 
-    pScrPriv->rrEnableSharedPixmapFlipping = msEnableSharedPixmapFlipping;
-    pScrPriv->rrDisableSharedPixmapFlipping = msDisableSharedPixmapFlipping;
+    if (dixPrivateKeyRegistered(rrPrivKey)) {
+        rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen);
 
-    pScrPriv->rrStartFlippingPixmapTracking = msStartFlippingPixmapTracking;
+        pScrPriv->rrEnableSharedPixmapFlipping = msEnableSharedPixmapFlipping;
+        pScrPriv->rrDisableSharedPixmapFlipping = 
msDisableSharedPixmapFlipping;
+
+        pScrPriv->rrStartFlippingPixmapTracking = 
msStartFlippingPixmapTracking;
+    }
 
     return ret;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/drmmode_display.c 
new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/drmmode_display.c
--- old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/drmmode_display.c       
2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/drmmode_display.c       
2020-01-13 23:50:00.000000000 +0100
@@ -754,6 +754,7 @@
     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
     drmmode_ptr drmmode = drmmode_crtc->drmmode;
+    ScreenPtr screen = crtc->scrn->pScreen;
     drmModeModeInfo kmode;
     int output_count = 0;
     uint32_t *output_ids = NULL;
@@ -764,6 +765,12 @@
     if (!drmmode_crtc_get_fb_id(crtc, &fb_id, &x, &y))
         return 1;
 
+#ifdef GLAMOR_HAS_GBM
+    /* Make sure any pending drawing will be visible in a new scanout buffer */
+    if (drmmode->glamor)
+        glamor_finish(screen);
+#endif
+
     if (ms->atomic_modeset) {
         drmModeAtomicReq *req = drmModeAtomicAlloc();
         Bool active;
@@ -1452,8 +1459,6 @@
 
     FreeScratchGC(gc);
 
-    glamor_finish(pScreen);
-
     pScreen->canDoBGNoneRoot = TRUE;
 
     if (drmmode->fbcon_pixmap)
@@ -1790,6 +1795,19 @@
                                              &drmmode_crtc->prime_pixmap);
 }
 
+static void
+drmmode_clear_pixmap(PixmapPtr pixmap)
+{
+    ScreenPtr screen = pixmap->drawable.pScreen;
+    GCPtr gc;
+
+    gc = GetScratchGC(pixmap->drawable.depth, screen);
+    if (gc) {
+        miClearDrawable(&pixmap->drawable, gc);
+        FreeScratchGC(gc);
+    }
+}
+
 static void *
 drmmode_shadow_allocate(xf86CrtcPtr crtc, int width, int height)
 {
@@ -3174,6 +3192,8 @@
     if (!drmmode_glamor_handle_new_screen_pixmap(drmmode))
         goto fail;
 
+    drmmode_clear_pixmap(ppix);
+
     for (i = 0; i < xf86_config->num_crtc; i++) {
         xf86CrtcPtr crtc = xf86_config->crtc[i];
 
@@ -3206,13 +3226,19 @@
 drmmode_validate_leases(ScrnInfoPtr scrn)
 {
     ScreenPtr screen = scrn->pScreen;
-    rrScrPrivPtr scr_priv = rrGetScrPriv(screen);
+    rrScrPrivPtr scr_priv;
     modesettingPtr ms = modesettingPTR(scrn);
     drmmode_ptr drmmode = &ms->drmmode;
     drmModeLesseeListPtr lessees;
     RRLeasePtr lease, next;
     int l;
 
+    /* Bail out if RandR wasn't initialized. */
+    if (!dixPrivateKeyRegistered(rrPrivKey))
+        return;
+
+    scr_priv = rrGetScrPriv(screen);
+
     /* We can't talk to the kernel about leases when VT switched */
     if (!scrn->vtSema)
         return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/vblank.c 
new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/vblank.c
--- old/xserver-1.20.6+0/hw/xfree86/drivers/modesetting/vblank.c        
2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/drivers/modesetting/vblank.c        
2020-01-13 23:50:00.000000000 +0100
@@ -220,7 +220,7 @@
 ms_covering_randr_crtc(ScreenPtr pScreen, BoxPtr box, Bool screen_is_ms)
 {
     ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
-    rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen);
+    rrScrPrivPtr pScrPriv;
     RRCrtcPtr crtc, best_crtc;
     int coverage, best_coverage;
     int c;
@@ -230,6 +230,11 @@
     best_crtc = NULL;
     best_coverage = 0;
 
+    if (!dixPrivateKeyRegistered(rrPrivKey))
+        return NULL;
+
+    pScrPriv = rrGetScrPriv(pScreen);
+
     if (!pScrPriv)
         return NULL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xfree86/modes/xf86Rotate.c 
new/xserver-1.20.7+0/hw/xfree86/modes/xf86Rotate.c
--- old/xserver-1.20.6+0/hw/xfree86/modes/xf86Rotate.c  2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/modes/xf86Rotate.c  2020-01-13 
23:50:00.000000000 +0100
@@ -485,6 +485,9 @@
 
     if (damage)
         xf86CrtcDamageShadow(crtc);
+    else if (crtc->rotatedData && !crtc->rotatedPixmap)
+        /* Make sure the new rotate buffer has valid transformed contents */
+        xf86RotateRedisplay(pScreen);
 
     /* All done */
     return TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/os-support/bsd/bsd_init.c 
new/xserver-1.20.7+0/hw/xfree86/os-support/bsd/bsd_init.c
--- old/xserver-1.20.6+0/hw/xfree86/os-support/bsd/bsd_init.c   2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/os-support/bsd/bsd_init.c   2020-01-13 
23:50:00.000000000 +0100
@@ -661,3 +661,9 @@
     ErrorF("don't detach controlling tty (for debugging only)\n");
     return;
 }
+
+void
+xf86OSInputThreadInit()
+{
+    return;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/os-support/hurd/hurd_init.c 
new/xserver-1.20.7+0/hw/xfree86/os-support/hurd/hurd_init.c
--- old/xserver-1.20.6+0/hw/xfree86/os-support/hurd/hurd_init.c 2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/os-support/hurd/hurd_init.c 2020-01-13 
23:50:00.000000000 +0100
@@ -87,3 +87,9 @@
     close(xf86Info.consoleFd);
     return;
 }
+
+void
+xf86OSInputThreadInit()
+{
+    return;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/os-support/linux/lnx_init.c 
new/xserver-1.20.7+0/hw/xfree86/os-support/linux/lnx_init.c
--- old/xserver-1.20.6+0/hw/xfree86/os-support/linux/lnx_init.c 2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/os-support/linux/lnx_init.c 2020-01-13 
23:50:00.000000000 +0100
@@ -397,3 +397,9 @@
     ErrorF("don't detach controlling tty (for debugging only)\n");
     ErrorF("-masterfd <fd>         use the specified fd as the DRM master fd 
(not if setuid/gid)\n");
 }
+
+void
+xf86OSInputThreadInit()
+{
+    return;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xserver-1.20.6+0/hw/xfree86/os-support/solaris/sun_vid.c 
new/xserver-1.20.7+0/hw/xfree86/os-support/solaris/sun_vid.c
--- old/xserver-1.20.6+0/hw/xfree86/os-support/solaris/sun_vid.c        
2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/os-support/solaris/sun_vid.c        
2020-01-13 23:50:00.000000000 +0100
@@ -73,22 +73,24 @@
 /* I/O Permissions section                                                */
 /***************************************************************************/
 
-#if defined(__i386__) || defined(__i386) || defined(__x86)
-static Bool ExtendedEnabled = FALSE;
-#endif
+void
+xf86OSInputThreadInit()
+{
+    /*
+     * Need to enable in input thread as well, as Solaris kernel tracks
+     * IOPL per-thread and doesn't inherit when creating a new thread.
+     */
+    xf86EnableIO();
+}
 
 Bool
 xf86EnableIO(void)
 {
 #if defined(__i386__) || defined(__i386) || defined(__x86)
-    if (ExtendedEnabled)
-        return TRUE;
-
     if (sysi86(SI86V86, V86SC_IOPL, PS_IOPL) < 0) {
         xf86Msg(X_WARNING, "xf86EnableIOPorts: Failed to set IOPL for I/O\n");
         return FALSE;
     }
-    ExtendedEnabled = TRUE;
 #endif                          /* i386 */
     return TRUE;
 }
@@ -97,11 +99,6 @@
 xf86DisableIO(void)
 {
 #if defined(__i386__) || defined(__i386) || defined(__x86)
-    if (!ExtendedEnabled)
-        return;
-
     sysi86(SI86V86, V86SC_IOPL, 0);
-
-    ExtendedEnabled = FALSE;
 #endif                          /* i386 */
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xfree86/os-support/xf86_OSproc.h 
new/xserver-1.20.7+0/hw/xfree86/os-support/xf86_OSproc.h
--- old/xserver-1.20.6+0/hw/xfree86/os-support/xf86_OSproc.h    2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xfree86/os-support/xf86_OSproc.h    2020-01-13 
23:50:00.000000000 +0100
@@ -136,6 +136,7 @@
 extern _X_EXPORT int xf86SerialModemSetBits(int fd, int bits);
 extern _X_EXPORT int xf86SerialModemClearBits(int fd, int bits);
 extern _X_EXPORT int xf86LoadKernelModule(const char *pathname);
+extern _X_EXPORT void xf86OSInputThreadInit(void);
 
 /* AGP GART interface */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xnest/Init.c 
new/xserver-1.20.7+0/hw/xnest/Init.c
--- old/xserver-1.20.6+0/hw/xnest/Init.c        2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/hw/xnest/Init.c        2020-01-13 23:50:00.000000000 
+0100
@@ -169,3 +169,12 @@
     return;
 }
 #endif
+
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xwayland/xwayland-present.c 
new/xserver-1.20.7+0/hw/xwayland/xwayland-present.c
--- old/xserver-1.20.6+0/hw/xwayland/xwayland-present.c 2019-11-22 
23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/hw/xwayland/xwayland-present.c 2020-01-13 
23:50:00.000000000 +0100
@@ -24,6 +24,7 @@
  */
 
 #include "xwayland.h"
+#include "glamor.h"
 
 #include <present.h>
 
@@ -412,9 +413,7 @@
 static void
 xwl_present_flush(WindowPtr window)
 {
-    /* Only called when a Pixmap is copied instead of flipped,
-     * but in this case we wait on the next block_handler.
-     */
+    glamor_block_handler(window->drawable.pScreen);
 }
 
 static Bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xwayland/xwayland.c 
new/xserver-1.20.7+0/hw/xwayland/xwayland.c
--- old/xserver-1.20.6+0/hw/xwayland/xwayland.c 2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/hw/xwayland/xwayland.c 2020-01-13 23:50:00.000000000 
+0100
@@ -74,6 +74,15 @@
 }
 #endif
 
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
+
  _X_NORETURN
 static void _X_ATTRIBUTE_PRINTF(1, 2)
 xwl_give_up(const char *f, ...)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/hw/xwin/InitOutput.c 
new/xserver-1.20.7+0/hw/xwin/InitOutput.c
--- old/xserver-1.20.6+0/hw/xwin/InitOutput.c   2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/hw/xwin/InitOutput.c   2020-01-13 23:50:00.000000000 
+0100
@@ -151,6 +151,15 @@
 }
 #endif
 
+#if INPUTTHREAD
+/** This function is called in Xserver/os/inputthread.c when starting
+    the input thread. */
+void
+ddxInputThreadInit(void)
+{
+}
+#endif
+
 int
 main(int argc, char *argv[], char *envp[])
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/include/meson.build 
new/xserver-1.20.7+0/include/meson.build
--- old/xserver-1.20.6+0/include/meson.build    2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/include/meson.build    2020-01-13 23:50:00.000000000 
+0100
@@ -74,6 +74,8 @@
 conf_data.set('WITH_LIBDRM', libdrm_dep.found())
 conf_data.set('GLAMOR_HAS_EGL_QUERY_DMABUF',
               epoxy_dep.found() and epoxy_dep.version().version_compare('>= 
1.4.4'))
+conf_data.set('GLAMOR_HAS_EGL_QUERY_DRIVER',
+              epoxy_dep.found() and epoxy_dep.version().version_compare('>= 
1.5.4'))
 conf_data.set('GLXEXT', build_glx)
 conf_data.set('GLAMOR', build_glamor)
 conf_data.set('GLAMOR_HAS_GBM', gbm_dep.found())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/include/os.h 
new/xserver-1.20.7+0/include/os.h
--- old/xserver-1.20.6+0/include/os.h   2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/include/os.h   2020-01-13 23:50:00.000000000 +0100
@@ -556,6 +556,8 @@
 AbortDDX(enum ExitCode error);
 extern _X_EXPORT void
 ddxGiveUp(enum ExitCode error);
+extern _X_EXPORT void
+ddxInputThreadInit(void);
 extern _X_EXPORT int
 TimeSinceLastInputEvent(void);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/meson.build 
new/xserver-1.20.7+0/meson.build
--- old/xserver-1.20.6+0/meson.build    2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/meson.build    2020-01-13 23:50:00.000000000 +0100
@@ -3,7 +3,7 @@
             'buildtype=debugoptimized',
             'c_std=gnu99',
         ],
-        version: '1.20.6',
+        version: '1.20.7',
         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.6+0/os/inputthread.c 
new/xserver-1.20.7+0/os/inputthread.c
--- old/xserver-1.20.6+0/os/inputthread.c       2019-11-22 23:56:38.000000000 
+0100
+++ new/xserver-1.20.7+0/os/inputthread.c       2020-01-13 23:50:00.000000000 
+0100
@@ -318,6 +318,8 @@
     sigfillset(&set);
     pthread_sigmask(SIG_BLOCK, &set, NULL);
 
+    ddxInputThreadInit();
+
     inputThreadInfo->running = TRUE;
 
 #if defined(HAVE_PTHREAD_SETNAME_NP_WITH_TID)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xserver-1.20.6+0/os/ospoll.c 
new/xserver-1.20.7+0/os/ospoll.c
--- old/xserver-1.20.6+0/os/ospoll.c    2019-11-22 23:56:38.000000000 +0100
+++ new/xserver-1.20.7+0/os/ospoll.c    2020-01-13 23:50:00.000000000 +0100
@@ -40,6 +40,7 @@
 
 #if !HAVE_OSPOLL && defined(HAVE_PORT_CREATE)
 #include <port.h>
+#include <poll.h>
 #define PORT            1
 #define HAVE_OSPOLL     1
 #endif
@@ -78,7 +79,6 @@
 #endif
 
 #if EPOLL || PORT
-#include <sys/epoll.h>
 
 /* epoll-based implementation */
 struct ospollfd {
@@ -468,10 +468,10 @@
 {
     int events = 0;
     if (osfd->xevents & X_NOTIFY_READ)
-        events |= EPOLLIN;
+        events |= POLLIN;
     if (osfd->xevents & X_NOTIFY_WRITE)
-        events |= EPOLLOUT;
-    port_associate(ospool->epoll_fd, PORT_SOURCE_FD, osfd->fd, events, osfd);
+        events |= POLLOUT;
+    port_associate(ospoll->epoll_fd, PORT_SOURCE_FD, osfd->fd, events, osfd);
 }
 #endif
 
@@ -601,9 +601,14 @@
 #define MAX_EVENTS      256
     port_event_t events[MAX_EVENTS];
     uint_t nget = 1;
+    timespec_t port_timeout = {
+        .tv_sec = timeout / 1000,
+        .tv_nsec = (timeout % 1000) * 1000000
+    };
 
     nready = 0;
-    if (port_getn(ospoll->epoll_fd, events, MAX_EVENTS, &nget, &timeout) == 0) 
{
+    if (port_getn(ospoll->epoll_fd, events, MAX_EVENTS, &nget, &port_timeout)
+        == 0) {
         nready = nget;
     }
     for (int i = 0; i < nready; i++) {
@@ -612,17 +617,18 @@
         uint32_t revents = ev->portev_events;
         int xevents = 0;
 
-        if (revents & EPOLLIN)
+        if (revents & POLLIN)
             xevents |= X_NOTIFY_READ;
-        if (revents & EPOLLOUT)
+        if (revents & POLLOUT)
             xevents |= X_NOTIFY_WRITE;
-        if (revents & (~(EPOLLIN|EPOLLOUT)))
+        if (revents & (~(POLLIN|POLLOUT)))
             xevents |= X_NOTIFY_ERROR;
 
         if (osfd->callback)
             osfd->callback(osfd->fd, xevents, osfd->data);
 
-        if (osfd->trigger == ospoll_trigger_level && !osfd->deleted) {
+        if (osfd->trigger == ospoll_trigger_level &&
+            !xorg_list_is_empty(&osfd->deleted)) {
             epoll_mod(ospoll, osfd);
         }
     }


Reply via email to