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 @@
¶m, XI2, &mask);
break;
case XIGrabtypeKeycode:
- status = GrabKey(client, dev, mod_dev, stuff->detail,
- ¶m, 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,
+ ¶m, 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);
}
}