summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2020-12-12 09:31:01 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2020-12-12 09:31:01 +0000
commitde1becf4e6fef4f4af7ddcce36b218eb8b97e953 (patch)
tree6c9ca26361bcdb5ff8552163eef21caa9a15c4f7
parent547f94c1bd5f859fdb141297f602245d127f205b (diff)
Update X server to version 1.20.10. Tested by jsg@ and naddy@
-rw-r--r--xserver/ChangeLog1206
-rw-r--r--xserver/Makefile.in1
-rw-r--r--xserver/Xext/Makefile.am10
-rw-r--r--xserver/Xext/Makefile.in35
-rw-r--r--xserver/Xi/Makefile.in1
-rw-r--r--xserver/aclocal.m416
-rw-r--r--xserver/composite/Makefile.in1
-rw-r--r--xserver/config/Makefile.in1
-rw-r--r--xserver/configure430
-rw-r--r--xserver/configure.ac11
-rw-r--r--xserver/damageext/Makefile.in1
-rw-r--r--xserver/dbe/Makefile.in1
-rw-r--r--xserver/dix/Makefile.in1
-rw-r--r--xserver/doc/Makefile.in1
-rw-r--r--xserver/doc/dtrace/Makefile.in1
-rw-r--r--xserver/doc/dtrace/Xserver-DTrace.xml16
-rw-r--r--xserver/dri3/Makefile.in1
-rw-r--r--xserver/exa/Makefile.in1
-rw-r--r--xserver/fb/Makefile.in1
-rw-r--r--xserver/glamor/Makefile.in1
-rw-r--r--xserver/glamor/glamor_egl.c3
-rw-r--r--xserver/glamor/glamor_rects.c18
-rw-r--r--xserver/glx/Makefile.am4
-rw-r--r--xserver/glx/Makefile.in9
-rw-r--r--xserver/hw/Makefile.in1
-rw-r--r--xserver/hw/dmx/Makefile.in1
-rw-r--r--xserver/hw/dmx/config/Makefile.in1
-rw-r--r--xserver/hw/dmx/config/man/Makefile.in1
-rw-r--r--xserver/hw/dmx/doc/Makefile.in1
-rw-r--r--xserver/hw/dmx/doxygen/Makefile.in1
-rw-r--r--xserver/hw/dmx/examples/Makefile.in1
-rw-r--r--xserver/hw/dmx/glxProxy/Makefile.in1
-rw-r--r--xserver/hw/dmx/input/Makefile.in1
-rw-r--r--xserver/hw/dmx/man/Makefile.in1
-rw-r--r--xserver/hw/dmx/man/Xdmx.man2
-rw-r--r--xserver/hw/kdrive/Makefile.in1
-rw-r--r--xserver/hw/kdrive/ephyr/Makefile.in1
-rw-r--r--xserver/hw/kdrive/ephyr/man/Makefile.in1
-rw-r--r--xserver/hw/kdrive/src/Makefile.in1
-rw-r--r--xserver/hw/vfb/Makefile.in1
-rw-r--r--xserver/hw/vfb/man/Makefile.in1
-rw-r--r--xserver/hw/xfree86/Makefile.in1
-rw-r--r--xserver/hw/xfree86/common/Makefile.in1
-rw-r--r--xserver/hw/xfree86/ddc/Makefile.in1
-rw-r--r--xserver/hw/xfree86/ddc/edid.h17
-rw-r--r--xserver/hw/xfree86/ddc/interpret_edid.c27
-rw-r--r--xserver/hw/xfree86/ddc/xf86DDC.h3
-rw-r--r--xserver/hw/xfree86/dixmods/Makefile.in1
-rw-r--r--xserver/hw/xfree86/doc/Makefile.in1
-rw-r--r--xserver/hw/xfree86/dri/Makefile.in1
-rw-r--r--xserver/hw/xfree86/dri2/Makefile.in1
-rw-r--r--xserver/hw/xfree86/dri2/pci_ids/Makefile.in1
-rw-r--r--xserver/hw/xfree86/drivers/Makefile.in1
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/Makefile.in1
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/dri2.c1
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/driver.c49
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/driver.h1
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/drmmode_display.c225
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/drmmode_display.h16
-rw-r--r--xserver/hw/xfree86/drivers/modesetting/present.c33
-rw-r--r--xserver/hw/xfree86/exa/Makefile.in1
-rw-r--r--xserver/hw/xfree86/exa/man/Makefile.in1
-rw-r--r--xserver/hw/xfree86/fbdevhw/Makefile.in1
-rw-r--r--xserver/hw/xfree86/fbdevhw/man/Makefile.in1
-rw-r--r--xserver/hw/xfree86/glamor_egl/Makefile.in1
-rw-r--r--xserver/hw/xfree86/i2c/Makefile.in1
-rw-r--r--xserver/hw/xfree86/int10/Makefile.in1
-rw-r--r--xserver/hw/xfree86/loader/Makefile.in1
-rw-r--r--xserver/hw/xfree86/man/Makefile.in1
-rw-r--r--xserver/hw/xfree86/man/Xorg.man8
-rw-r--r--xserver/hw/xfree86/man/xorg.conf.man2
-rw-r--r--xserver/hw/xfree86/modes/Makefile.in1
-rw-r--r--xserver/hw/xfree86/modes/xf86Crtc.c3
-rw-r--r--xserver/hw/xfree86/os-support/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/bsd/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/bus/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/hurd/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/linux/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/misc/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/solaris/Makefile.in1
-rw-r--r--xserver/hw/xfree86/os-support/stub/Makefile.in1
-rw-r--r--xserver/hw/xfree86/parser/Makefile.in1
-rw-r--r--xserver/hw/xfree86/ramdac/Makefile.in1
-rw-r--r--xserver/hw/xfree86/ramdac/xf86CursorRD.c6
-rw-r--r--xserver/hw/xfree86/shadowfb/Makefile.in1
-rw-r--r--xserver/hw/xfree86/utils/Makefile.in1
-rw-r--r--xserver/hw/xfree86/utils/cvt/Makefile.in1
-rw-r--r--xserver/hw/xfree86/utils/gtf/Makefile.in1
-rw-r--r--xserver/hw/xfree86/utils/man/Makefile.in1
-rw-r--r--xserver/hw/xfree86/vbe/Makefile.in1
-rw-r--r--xserver/hw/xfree86/vgahw/Makefile.in1
-rw-r--r--xserver/hw/xfree86/x86emu/Makefile.in1
-rw-r--r--xserver/hw/xfree86/xkb/Makefile.in1
-rw-r--r--xserver/hw/xnest/Makefile.in1
-rw-r--r--xserver/hw/xnest/man/Makefile.in1
-rw-r--r--xserver/hw/xquartz/GL/Makefile.in1
-rw-r--r--xserver/hw/xquartz/Makefile.in1
-rw-r--r--xserver/hw/xquartz/bundle/Makefile.in1
-rw-r--r--xserver/hw/xquartz/mach-startup/Makefile.in1
-rw-r--r--xserver/hw/xquartz/man/Makefile.in1
-rw-r--r--xserver/hw/xquartz/man/Xquartz.man2
-rw-r--r--xserver/hw/xquartz/pbproxy/Makefile.in1
-rw-r--r--xserver/hw/xquartz/xpr/Makefile.in1
-rw-r--r--xserver/hw/xwayland/Makefile.in1
-rw-r--r--xserver/hw/xwayland/xwayland-glamor-eglstream.c2
-rw-r--r--xserver/hw/xwayland/xwayland-glamor-gbm.c52
-rw-r--r--xserver/hw/xwayland/xwayland-input.c84
-rw-r--r--xserver/hw/xwayland/xwayland-output.c41
-rw-r--r--xserver/hw/xwayland/xwayland-present.c74
-rw-r--r--xserver/hw/xwayland/xwayland-vidmode.c1
-rw-r--r--xserver/hw/xwayland/xwayland.c62
-rw-r--r--xserver/hw/xwayland/xwayland.h4
-rw-r--r--xserver/hw/xwin/Makefile.in1
-rw-r--r--xserver/hw/xwin/dri/Makefile.in1
-rw-r--r--xserver/hw/xwin/glx/Makefile.in1
-rw-r--r--xserver/hw/xwin/man/Makefile.in1
-rw-r--r--xserver/hw/xwin/winclipboard/Makefile.in1
-rw-r--r--xserver/include/Makefile.in1
-rw-r--r--xserver/include/misc.h2
-rw-r--r--xserver/man/Makefile.in1
-rw-r--r--xserver/mi/Makefile.in1
-rw-r--r--xserver/miext/Makefile.in1
-rw-r--r--xserver/miext/damage/Makefile.in1
-rw-r--r--xserver/miext/rootless/Makefile.in1
-rw-r--r--xserver/miext/shadow/Makefile.in1
-rw-r--r--xserver/miext/sync/Makefile.in1
-rw-r--r--xserver/os/Makefile.in1
-rw-r--r--xserver/os/backtrace.c7
-rw-r--r--xserver/present/Makefile.in1
-rw-r--r--xserver/present/present_execute.c23
-rw-r--r--xserver/present/present_priv.h6
-rw-r--r--xserver/present/present_scmd.c16
-rw-r--r--xserver/present/present_screen.c8
-rw-r--r--xserver/present/present_vblank.c18
-rw-r--r--xserver/present/present_wnmd.c84
-rw-r--r--xserver/pseudoramiX/Makefile.in1
-rw-r--r--xserver/randr/Makefile.in1
-rw-r--r--xserver/randr/rrcrtc.c8
-rw-r--r--xserver/record/Makefile.in1
-rw-r--r--xserver/render/Makefile.in1
-rw-r--r--xserver/test/Makefile.in1
-rw-r--r--xserver/xfixes/Makefile.in1
-rw-r--r--xserver/xkb/Makefile.in1
143 files changed, 2191 insertions, 554 deletions
diff --git a/xserver/ChangeLog b/xserver/ChangeLog
index f23837692..66cc93842 100644
--- a/xserver/ChangeLog
+++ b/xserver/ChangeLog
@@ -1,3 +1,1209 @@
+commit bc111a2e67e16d4e6d4f3196ab86c22c1e278c45
+Author: Matt Turner <mattst88@gmail.com>
+Date: Tue Dec 1 10:55:00 2020 -0500
+
+ xserver 1.20.10
+
+ Signed-off-by: Matt Turner <mattst88@gmail.com>
+
+commit 06d1a032ee491547f7037c3ff042065dc2aeaa99
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Thu Nov 12 19:15:07 2020 +0100
+
+ Check SetMap request length carefully.
+
+ Avoid out of bounds memory accesses on too short request.
+
+ ZDI-CAN 11572 / CVE-2020-14360
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 446ff2d3177087b8173fa779fa5b77a2a128988b)
+
+commit 7ccb3b0eabb4658daf0ecb2c78a53609ae2c263b
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Sun Oct 11 17:05:09 2020 +0200
+
+ Fix XkbSetDeviceInfo() and SetDeviceIndicators() heap overflows
+
+ ZDI-CAN 11389 / CVE-2020-25712
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 87c64fc5b0db9f62f4e361444f4b60501ebf67b9)
+
+commit 440ed5948ba5818abf5ea5fdc5a9d98514658fd3
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Dec 1 11:25:31 2020 +0100
+
+ present/wnmd: Translate update region to screen space
+
+ The region as passed in is in the source pixmap's coordinate space, so
+ intersecting it with the clipList (which is in screen space) resulted in
+ disappointment.
+
+ Fixes Firefox popups such as the hamburger menu when using the EGL
+ backend.
+
+ v2:
+ * Drop vblank->x/y_off from RegionTranslate call, since they're always
+ 0 here (present_wnmd_check_flip rejects flips for x/y_off != 0).
+
+ Reported-by: Robert Mader <robert.mader@posteo.de>
+ Tested-by: Robert Mader <robert.mader@posteo.de>
+ Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
+ Tested-by: Joakim Tjernlund <joakim.tjernlund@infinera.com> # v1
+ (cherry picked from commit 466b8b43fb355c6040cee45406860b8b8c04e948)
+
+commit 54f9af1c61bd10e2e65cbb17069e0c9ec1f9a2c5
+Author: Kishore Kadiyala <kishore.kadiyala@intel.com>
+Date: Tue Dec 1 11:13:51 2020 +0100
+
+ modesetting: keep going if a modeset fails on EnterVT
+
+ There was a time when setting a mode on a CRTC would not depend on the
+ associated connector's state. If a mode had been set successfully once,
+ it would mean it would work later on.
+
+ This changed with the introduction of new connectors type that now
+ require a link training sequence (DP, HDMI 2.0), and that means that
+ some events may have happened while the X server was not master that
+ would then prevent the mode from successfully be restored to its
+ previous state.
+
+ This patch relaxes the requirement that all modes should be restored on
+ EnterVT, or the entire X-Server would go down by allowing modesets to
+ fail (with some warnings). If a modeset fails, the CRTC will be
+ disabled, and a RandR event will be sent for the desktop environment to
+ fix the situation as well as possible.
+
+ Additional patches might be needed to make sure that the user would
+ never be left with all screens black in some scenarios.
+
+ v2 (Martin Peres):
+ - whitespace fixes
+ - remove the uevent handling (it is done in a previous patch)
+ - improve the commit message
+ - reduce the size of the patch by not changing lines needlessly
+ - return FALSE if one modeset fails in ignore mode
+ - add comments/todos to explain why we do things
+ - disable the CRTCs that failed the modeset
+
+ Signed-off-by: Kishore Kadiyala <kishore.kadiyala@intel.com>
+ Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
+ Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+ Tested-by: Kishore Kadiyala <kishore.kadiyala@intel.com>
+ Closes: #1010
+ (cherry picked from commit efb3abddd49fb75bd6d0e31046fed43d258c93da)
+
+commit bd0f53725b581e4698f5f3ec366a9507bd2556e2
+Author: Martin Peres <martin.peres@linux.intel.com>
+Date: Tue Dec 1 11:10:34 2020 +0100
+
+ modesetting: check the kms state on EnterVT
+
+ Normally, we would receive a uevent coming from Linux's DRM subsystem,
+ which would trigger the check for disappearing/appearing resources.
+ However, this event is not received when X is not master (another VT
+ is selected), and so the userspace / desktop environment would not be
+ notified about the changes that happened while X wasn't master.
+
+ To fix the issue, this patch forces a refresh on EnterVT by splitting
+ the kms-checking code from the uevent handling into its own (exported)
+ function called drmmode_update_kms_state. This function is then called
+ from both the uevent-handling function, and on EnterVT right before
+ restoring the modes.
+
+ Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
+ Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+ Acked-by: Kishore Kadiyala <kishore.kadiyala@intel.com>
+ Tested-by: Kishore Kadiyala <kishore.kadiyala@intel.com>
+ (cherry picked from commit 293cf660c95d7ba36510bcc4114d7fd5c5f3801c)
+
+commit 5c400cae1f9817045378966effa6bca91e45aead
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue Oct 27 16:33:55 2020 +0100
+
+ configure: Build hashtable for Xres and glvnd
+
+ With autoconf, hashtable support is built along with Xres support.
+
+ Yet, glvnd also use it, so when disabling Xres from configure, the
+ build will fail at link time because hashtable functions are not
+ available.
+
+ Untie the build of hashtable from Xres support, just like meson build
+ does.
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1091
+ (cherry picked from commit 899cebb76ab7754fea49f7babcd64a7e94052cc8)
+
+commit 253569a3d281996d7c84041020e14313756900da
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Thu Nov 5 18:35:54 2020 +0100
+
+ xwayland: Create an xwl_window for toplevel only
+
+ One general assumption in Xwayland is that the xwl_window remains the
+ same for all the child windows of the toplevel window.
+
+ When mapping a new X11 window, ensure_surface_for_window() checks for an
+ existing xwl_window by using xwl_window_get() which will just check for
+ the registered xwl_window for the window.
+
+ That means that a client mapping a child window of an existing window
+ with a xwl_window will get another different xwl_window.
+
+ If an X11 client issues a Present request on the parent window, hence
+ placed underneath its child window of the same size, the Wayland
+ compositor may not send the frame callback event for the parent's
+ Wayland surface which is reckoned to be not visible, obscured behind
+ the other Wayland surface for the child X11 window.
+
+ That bug affects some games running in wine which may get 1 fps because
+ the repaint occurs only on timeout with a long interval (as with, e.g.
+ https://bugs.winehq.org/show_bug.cgi?id=47066)
+
+ Fix ensure_surface_for_window() by using xwl_window_from_window() which
+ will walk the window tree, so that a child window won't get another
+ xwl_window than its parent.
+
+ https://gitlab.freedesktop.org/xorg/xserver/-/issues/1099
+ See-also: https://bugs.winehq.org/show_bug.cgi?id=47066
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ (cherry picked from commit 606ba7fc51e5420646f75c4e672fbe61eb7c7e6e)
+
+commit 0811a9ff783c252b3e4d558bf31c6b066b0633e1
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Mon Nov 2 15:44:31 2020 +0100
+
+ xwayland: non-rootless requires the wl_shell protocol
+
+ When running non-rootless, Xwayland requires that the Wayland compositor
+ supports the wl_shell protocol.
+
+ Check for wl_shell protocol support at startup and exit cleanly if
+ missing rather than segfaulting later in ensure_surface_for_window()
+ while trying to use wl_shell_get_shell_surface().
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ Reviewed-by: Simon Ser <contact@emersion.fr>
+ (cherry picked from commit ffd02d9b26bd560849c407a6dd4f5c4d7d2c1736)
+
+commit b3ae038c32870a4a1bb42b6e1cf2ebedc8b7bc8d
+Author: Alex Goins <agoins@nvidia.com>
+Date: Mon Oct 5 18:19:52 2020 -0500
+
+ glamor: Update pixmap's devKind when making it exportable
+
+ When making a pixmap exportable, glamor will currently create a temporary
+ exported pixmap backed by a GBM bo, with the devKind updated to the stride of
+ the bo. However, when the backing of the exported pixmap is swapped into the
+ original, the devKind of the original is not updated.
+
+ Some GBM bos may get implicitly padded, in which case the devKind of the pixmap
+ will not match the stride of the backing bo. For example, an 800x600 pixmap will
+ have a devKind of 3200, but the bo's stride will be 3328. This can cause
+ corruption with PRIME, when the sink uses the wrong stride to display the shared
+ pixmap.
+
+ This commit changes glamor_make_pixmap_exportable() to update the devKind of the
+ original pixmap after it swaps exported pixmap's backing into it, keeping
+ everything consistent.
+
+ Fixes issue #1018.
+
+ Signed-off-by: Alex Goins <agoins@nvidia.com>
+ Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ (cherry picked from commit 7a7e55c5c1d6461a9f4d9a4e0129c1c6e1fd3d66)
+
+commit d6c389cb87b220f7005cebf483708267b5f4a1c3
+Author: Bernhard Übelacker <bernhardu@mailbox.org>
+Date: Sun Sep 27 18:03:48 2020 +0200
+
+ os: Fix instruction pointer written in xorg_backtrace
+
+ The address retrieved in "pip.start_ip" is not necessarily the same
+ address as unw_get_proc_name finds as nearest symbol and returns in "off".
+ Therefore using "pip.start_ip + off" is not reliable, at least
+ visible in the binaries from the Debian repository.
+
+ Bug-Debian: https://bugs.debian.org/971088
+
+ Signed-off-by: Bernhard Übelacker <bernhardu@mailbox.org>
+ (cherry picked from commit c15dd0ba4893f79f7181e783cb1ba404edca917a)
+
+commit c3e4c1a0fd5d4d6015e9e6317b758018317e56d1
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Jul 28 18:40:47 2020 +0200
+
+ present/wnmd: Execute copies at target_msc-1 already
+
+ It always takes one update cycle for the copy to become visible on the
+ host windowing system, so waiting for the target MSC resulted in 1 cycle
+ delay.
+
+ We re-use the idle list for copies which were executed but need their
+ completion event sent.
+
+ Fixes black seams when resizing the "Builder" sub-window of
+
+ GDK_BACKEND=x11 gtk4-demo
+
+ on Xwayland (see
+ https://gitlab.gnome.org/GNOME/mutter/-/issues/1290#note_873557).
+
+ Unfortunately, this cannot completely fix the seams with apps which
+ queue up multiple frames in advance, since there's always at least one
+ queued frame corresponding to the old window size. But it should at
+ least help a little in that case as well.
+
+ v2:
+ * Bug fix: Don't update exec_msc in present_wnmd_check_flip_window.
+ (Roman Gilg)
+ * Use exec_msc = target_msc - 1 instead of exec_msc--, and add a
+ comment, for clarity.
+ v3:
+ * Drop exec_msc = target_msc again in present_wnmd_execute.
+ * present_execute_copy should never set vblank->queued in
+ present_wnmd_execute now, so replace that branch with an assertion.
+ (Roman Gilg)
+
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ Tested-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit 1cccb486d48a5d2e7649836b993805bb65dc09e3)
+ [Since present_wnmd_event_notify hasn't been split up on the 1.20
+ branch, it needs to check vblank->flip. Doing the same in
+ present_wnmd_free_idle_vblanks to be safe, though I'm not sure it's
+ actually possible to hit non-flips there.]
+
+commit 96ef31e0f20fcffb2edfe4cb9510f994c188785f
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Jul 28 18:53:45 2020 +0200
+
+ present/wnmd: Move up present_wnmd_queue_vblank
+
+ Allowing it to be called from more functions than before. No functional
+ change.
+
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ Tested-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit d14ea667feccf085c7d66a7c63f380975e07af66)
+
+commit 669e40390c3679b649db33f0aa4ae4cfdd17e2a9
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Fri Sep 11 17:00:35 2020 +0200
+
+ present: Add present_vblank::exec_msc field
+
+ For tracking the MSC when the present can be executed separately from
+ the target MSC.
+
+ Allows removing the requeue field instead, plus more later.
+
+ v2:
+ * Rename wait_msc → exec_msc (Roman Gilg)
+ * Use exec_msc = target_msc instead of exec_msc++, for clarity.
+ * Bug fix: Set exec_msc = target_msc also if present_flip returned
+ false in present_execute.
+ v3:
+ * Set exec_msc = target_msc also if present_wnmd_flip returned
+ false in present_wnmd_execute, for consistency.
+ v4:
+ * Specifically check for exec_msc == crtc_msc + 1 in
+ present_execute_wait/copy, to avoid re-introducing
+ https://bugs.freedesktop.org/show_bug.cgi?id=94596 .
+
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ Tested-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit b0b3159abd8001fa3f6dfc44a288a95a62aa5cf6)
+
+commit dae234efdb7bba75744aa1697386df3c0db5348a
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Fri Sep 11 17:00:18 2020 +0200
+
+ present: Move flip target_msc adjustment out of present_vblank_create
+
+ Preparation for different handling between SCMD & WNMD. No functional
+ change intended.
+
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ Tested-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit 4c92dea952f7fed19857904f0f552900257ef4b9)
+
+commit 1930ed233fdec5d22e4fc192769a0126faabb3ea
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Mon Sep 14 15:39:10 2020 +0200
+
+ xwayland: Remove pending stream reference when freeing
+
+ The EGLStream backend keeps a queue of pending streams for each Xwayland
+ window.
+
+ However, when this pending queue is freed, the corresponding private
+ data may not be cleared (typically if the pixmap for this window has
+ changed before the compositor finished attaching the consumer for the
+ window's pixmap's original eglstream), leading to a use-after-free and a
+ crash when trying to use that data as the window pixmap.
+
+ Make sure to clear the private data when the pending stream is freed.
+
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1055
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Tested-by: Karol Szuster <karolsz9898@gmail.com>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit a5f439dcd21b4fda093cb382bb1a758b434a1444)
+
+commit 1ac389dda89b2882c80767c91bbe88e01818491c
+Author: Greg V <greg@unrelenting.technology>
+Date: Tue Sep 15 17:41:04 2020 +0300
+
+ xwayland: use drmGetNodeTypeFromFd for checking if a node is a render one
+
+ Major/minor numbers are a.. major (ha) source of pain in FreeBSD porting.
+ In this case, Xwayland was thinking that /dev/dri/card0 is already a render node,
+ because the st_rdev on FreeBSD was passing the Linux-style check,
+ and because of the assumption, acceleration would fail because
+ various ioctls like AMDGPU_INFO would be denied on the non-render node.
+
+ Switch to libdrm's function that already works correctly on all platforms.
+
+ Signed-off-by: Greg V <greg@unrelenting.technology>
+ Reviewed-by: Emmanuel Vadot <manu@FreeBSD.org>
+ (cherry picked from commit 239ebdc9e447d4f836d0c2aa6068c6064fffb46c)
+
+commit d108c2c82cba242ea5998d7c91254d90d3a5db71
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Fri Sep 11 11:30:18 2020 +0200
+
+ xwayland: Do not discard frame callbacks on allow commits
+
+ Currently, when a X11 client (usually the X11 window manager from a
+ Wayland compositor) changes the value of the X11 property
+ `_XWAYLAND_ALLOW_COMMITS` from `false` to `true`, all pending frame
+ callbacks on the window are discarded so that the commit occurs
+ immediately.
+
+ Weston uses that mechanism to prevent the content of the window from
+ showing before it's ready when mapping the window initially, but
+ discarding the pending frame callbacks has no effect on the initial
+ mapping of the X11 window since at that point there cannot be any frame
+ callback on a surface which hasn't been committed yet anyway.
+
+ However, discarding pending frame callbacks can be problematic if we
+ were to use the same `_XWAYLAND_ALLOW_COMMITS` mechanism to prevent
+ damages to be posted before the X11 toplevel is updated completely
+ (including the window decorations from the X11 window manager).
+
+ Remove the portion of code discarding the pending frame callback,
+ Xwayland should always wait for a pending frame callback if there's one
+ before posting new damages.
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.com>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ https://gitlab.freedesktop.org/xorg/xserver/merge_requests/333
+ (cherry picked from commit 66da95a172c4941b75ffedcdaa0138c0a48f11fb)
+
+commit 174cb91d82d643f78d8ba2b9999312b9d7dea98c
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Mon Sep 7 18:40:34 2020 +0200
+
+ present/wnmd: Remove dead check from present_wnmd_check_flip
+
+ present_wnmd_toplvl_pixmap_window returns a window with the same window
+ pixmap, so the check could never fail.
+
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit b6b1161fd7ac409156fb69439897bcabdeacf393)
+
+commit 51ee6e5ceb0cacc8e2fa225ad5391ffb159e36a0
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Mon Sep 7 18:39:17 2020 +0200
+
+ xwayland: Check window pixmap in xwl_present_check_flip2
+
+ We can only flip if the window pixmap matches that of the toplevel
+ window. Doing so regardless could cause the toplevel window pixmap to
+ get destroyed while it was still referenced by the window, resulting in
+ use-after-free and likely a crash.
+
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1033
+ Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit 4c25356d6cd908c5030c70e712076dff318ac00d)
+
+commit f4006d795cb199bf7deeb00f542c592db6a5becb
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Mon Sep 7 18:35:10 2020 +0200
+
+ present/wnmd: Can't use page flipping for windows clipped by children
+
+ Noticed this was missing while working on the following fix.
+
+ v2:
+ * Dropped present_wnmd_can_window_flip hunk (that function is never
+ called, will be cleaned up in a follow-up MR).
+
+ Reviewed-by: Olivier Fourdan <ofourdan@redhat.com> # v1
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit 7ac303c7b1e3b1be79ba3648e217798683e65a99)
+
+commit 1e84fda2020b12a83c6b9c6d31ab84f993c6176c
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Sep 1 11:24:57 2020 +0200
+
+ xfree86: Take second reference for SavedCursor in xf86CursorSetCursor
+
+ The same pointer is kept in CurrentCursor as well, therefore two
+ RefCursor calls are needed.
+
+ Fixes use-after-free after switching VTs.
+
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1067
+ (cherry picked from commit 919f1f46fc67dae93b2b3f278fcbfc77af34ec58)
+
+commit 8c3c8bda2c44fb3d62b954b02b08e3b1771ef5bc
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Aug 25 17:26:56 2020 +0200
+
+ glamor: Fix glamor_poly_fill_rect_gl xRectangle::width/height handling
+
+ (Using GLSL 1.30 or newer)
+
+ The width/height members of xRectangle are unsigned, but they were
+ being interpreted as signed when converting to floating point for the
+ vertex shader, producing incorrect drawing for values > 32767.
+
+ v2:
+ * Use separate GL_UNSIGNED_SHORT vertex attribute for width/height.
+ (Eric Anholt)
+
+ Reviewed-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit 032af35657aa95c6bbdb74ff8c72e535b9b56cfa)
+
+commit b28c882889cbea9be3748d3dee1b21ba6eb90b66
+Author: Arthur Williams <taaparthur@gmail.com>
+Date: Fri Sep 25 04:52:57 2020 +0000
+
+ include: Increase the number of max. input devices to 256.
+
+ Extending the decade old f0124ed93, to increase the number of input
+ devices from 40 to 256. 40 translates at most 9 MD, while 256 will allow
+ 63 MD. It is an arbitrary number, but people are hitting the current
+ limit under reasonable conditions.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64793
+ Signed-off-by: Arthur Williams <taaparthur@gmail.com>
+
+ (cherry picked from commit fe439596b99db65bbae35eff1ea0b79db167f8d6)
+
+commit af4c84ce8855e84c0ad89b929bc972e884f0b8e3
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue Sep 8 10:03:33 2020 +0200
+
+ Revert "linux: Make platform device probe less fragile"
+
+ This reverts commit 74b7427c41b4e4104af7abf70a996c086d3d7628.
+
+ https://gitlab.freedesktop.org/xorg/xserver/-/issues/1068
+
+commit 39cb95e959fab97a7e255dda1a1599b096fb0f7e
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue Sep 8 10:03:11 2020 +0200
+
+ Revert "linux: Fix platform device PCI detection for complex bus topologies"
+
+ This reverts commit 5c96eb5f44e62a4cfe835023cde304eb5795b8fd.
+
+ https://gitlab.freedesktop.org/xorg/xserver/-/issues/1068
+
+commit 4b6fce5975c2f931a0478cf4deeec97529b05eb6
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue Sep 8 10:01:55 2020 +0200
+
+ Revert "linux: Fix platform device probe for DT-based PCI"
+
+ This reverts commit 249a12c54a9316b089bd22683c011519348496df.
+
+ https://gitlab.freedesktop.org/xorg/xserver/-/issues/1068
+
+commit afb77415e1fb862c322754230f63bb70fd596943
+Author: Matt Turner <mattst88@gmail.com>
+Date: Tue Aug 25 08:23:42 2020 -0700
+
+ xserver 1.20.9
+
+ Signed-off-by: Matt Turner <mattst88@gmail.com>
+
+commit 705d7213935820d9f56563ee9e17aa9beb365c1e
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Tue Aug 18 14:55:01 2020 +0200
+
+ Fix XRecordRegisterClients() Integer underflow
+
+ CVE-2020-14362 ZDI-CAN-11574
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 24acad216aa0fc2ac451c67b2b86db057a032050)
+
+commit 5b384e7678c5a155dd8752f018c8292153c1295e
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Tue Aug 18 14:52:29 2020 +0200
+
+ Fix XkbSelectEvents() integer underflow
+
+ CVE-2020-14361 ZDI-CAN 11573
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 90304b3c2018a6b8f4a79de86364d2af15cb9ad8)
+
+commit eff3f6cdd398bfac040351e99e64baf3bf64fa2e
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Tue Aug 18 14:49:04 2020 +0200
+
+ Fix XIChangeHierarchy() integer underflow
+
+ CVE-2020-14346 / ZDI-CAN-11429
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 1e3392b07923987c6c9d09cf75b24f397b59bd5e)
+
+commit 1d3a1092c30af660b1366fcd344af745590aa29f
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Tue Aug 18 14:46:32 2020 +0200
+
+ Correct bounds checking in XkbSetNames()
+
+ CVE-2020-14345 / ZDI 11428
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ (cherry picked from commit 11f22a3bf694d7061d552c99898d843bcdaf0cf1)
+
+commit 249a12c54a9316b089bd22683c011519348496df
+Author: Huacai Chen <chenhc@lemote.com>
+Date: Sun Jul 5 05:59:58 2020 -0400
+
+ linux: Fix platform device probe for DT-based PCI
+
+ On a DT-base PCI platform, the sysfs path of vga device is like this:
+ /sys/devices/platform/bus@10000000/1a000000.pci/pci0000:00/0000:00:11.0/0000:04:00.0.
+
+ Then the ID_PATH from udev is platform-1a000000.pci-pci-0000:04:00.0 and
+ the BusID will be pci-0000:04:00.0, which causes Xorg start fail. This
+ is because config_udev_odev_setup_attribs() use strstr() to search the
+ first "pci-" in ID_PATH. To fix this, we implement a strrstr() function
+ and use it to search the last "pci-" in ID_PATH, which can get a correct
+ BusID.
+
+ (backported from commit 9fbd3e43dd9e13700df96b508c3d97f77e2b9f7e)
+
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ Signed-off-by: Huacai Chen <chenhc@lemote.com>
+
+commit 5c96eb5f44e62a4cfe835023cde304eb5795b8fd
+Author: Adam Jackson <ajax@redhat.com>
+Date: Wed Jun 19 14:23:56 2019 -0400
+
+ linux: Fix platform device PCI detection for complex bus topologies
+
+ Suppose you're in a Hyper-V guest and are trying to use PCI passthrough.
+ The ID_PATH that udev will construct for that looks something like
+ "acpi-VMBUS:00-pci-b8c8:00:00.0", and obviously looking for "pci-" in
+ the first four characters of that is going to not work.
+
+ Instead, strstr. I suppose it's possible you could have _multiple_ PCI
+ buses in the path, in which case you'd want strrstr, if that were a
+ thing.
+
+ (backported from commit 9acff309434a8029bcce1b22530043459bb71791)
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Huacai Chen <chenhc@lemote.com>
+
+commit 74b7427c41b4e4104af7abf70a996c086d3d7628
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Sep 18 14:37:51 2018 -0400
+
+ linux: Make platform device probe less fragile
+
+ At the point where xf86BusProbe runs we haven't yet taken our own VT,
+ which means we can't perform drm "master" operations on the device. This
+ is tragic, because we need master to fish the bus id string out of the
+ kernel, which we can only do after drmSetInterfaceVersion, which for
+ some reason stores that string on the device not the file handle and
+ thus needs master access.
+
+ Fortunately we know the format of the busid string, and it happens to
+ almost be the same as the ID_PATH variable from udev. Use that instead
+ and stop calling drmSetInterfaceVersion.
+
+ (backported from commit 0816e8fca6194dfb4cc94c3a7fcb2c7f2a921386)
+
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Huacai Chen <chenhc@lemote.com>
+
+commit 4979ac8f0be6fa2c4a1edd8a527f7d2134d8586a
+Author: Matthieu Herrb <matthieu@herrb.eu>
+Date: Sat Jul 25 19:33:50 2020 +0200
+
+ fix for ZDI-11426
+
+ Avoid leaking un-initalized memory to clients by zeroing the
+ whole pixmap on initial allocation.
+
+ This vulnerability was discovered by:
+ Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit a6b2cbe91793ae4967cd21a7103d889248029553)
+
+commit 2720b871575504349d9f4dffbc73539f1626bd78
+Author: Aaron Ma <aaron.ma@canonical.com>
+Date: Thu Jul 30 11:02:39 2020 +0200
+
+ xfree86: add drm modes on non-GTF panels
+
+ EDID1.4 replaced GTF Bit with Continuous or Non-Continuous Frequency Display.
+
+ Check the "Display Range Limits Descriptor" for GTF support.
+ If panel doesn't support GTF, then add gtf modes.
+
+ Otherwise X will only show the modes in "Detailed Timing Descriptor".
+
+ V2: Coding style changes.
+ V3: Coding style changes, remove unused variate.
+ V4: remove unused variate.
+
+ BugLink: https://gitlab.freedesktop.org/drm/intel/issues/313
+ Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit 6a79a737e2c0bc730ee693b4ea4a1530c108be4e)
+
+commit 7da8e7babee16f7d518cd9ee2a71c950fe2c3c3f
+Author: Roman Gilg <subdiff@gmail.com>
+Date: Fri Jul 24 12:21:37 2020 +0200
+
+ present: Check valid region in window mode flips
+
+ For Pixmap flips to have well defined outcomes the window must be contained by
+ the valid region if such region was specified.
+
+ The valid region is inserted as an argument to the check in window mode.
+ Setting this argument is missing in screen mode as well but we ignore it for now
+ and only add it to window mode.
+
+ It seems there are none or only very few clients actually making use of valid
+ regions at the moment. For simplicity we therefore just check if a valid region
+ was set by the client and in this case do never flip, independently of the
+ window being contained by the region or not.
+
+ Signed-off-by: Roman Gilg <subdiff@gmail.com>
+ (cherry picked from commit 591916ea9e7a77f68f436b4a541402d9deadfe64)
+
+commit 4a65b6617ecc43b754885894f6575fb7dc4bb74d
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Thu Jul 23 19:14:28 2020 +0200
+
+ xwayland: Handle NULL xwl_seat in xwl_seat_can_emulate_pointer_warp
+
+ This can happen e.g. with weston's headless backend.
+
+ Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
+ (cherry picked from commit e33453f9111b21e4814d628e6ae00bc7b200f404)
+
+commit 10cabe0b978677cfac4bfb405295a16ee8eedb34
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Tue Mar 17 12:58:12 2020 +0100
+
+ xwayland: Propagate damage x1/y1 coordinates in xwl_present_flip
+
+ This couldn't have worked correctly for non-0 x1/y1.
+
+ Noticed by inspection.
+
+ Reviewed-by: Simon Ser <contact@emersion.fr>
+ (cherry picked from commits 9141196d3104ab37385c3e385deaa70c002dd184)
+ (cherry picked fixup from commit 85a6fd11c723888ca093785a3df43066fdca9c33)
+
+commit 3b51978b9ca8cdc71508f6db2411255ca6406c3a
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Jul 21 18:34:28 2020 +0200
+
+ doc: Update URLs in Xserver-DTrace.xml
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 0006aecba097b437f96a462075494d68bdad24c1)
+
+commit 6cbd6a09b9037c6e6074127324978a51442ca375
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue Jun 2 11:23:46 2020 +0200
+
+ xwayland: Use a fixed DPI value for core protocol
+
+ The way Xwayland works (like all Wayland clients), it first queries the
+ Wayland registry, set up all relevant protocols and then initializes its
+ own structures.
+
+ That means Xwayland will get the Wayland outputs from the Wayland
+ compositor, compute the physical size of the combined outputs and set
+ the corresponding Xwayland screen properties accordingly.
+
+ Then it creates the X11 screen using fbScreenInit() but does so by using
+ a default DPI value of 96. That value is used to set the physical size
+ of the X11 screen, hence overriding the value computed from the actual
+ physical size provided by the Wayland compositor.
+
+ As a result, the DPI computed by tools such as xdpyinfo will always be
+ 96 regardless of the actual screen size and resolution.
+
+ However, if the Wayland outputs get reconfigured, or new outputs added,
+ or existing outputs removed, Xwayland will recompute and update the
+ physical size of the screen, leading to an unexpected change of DPI.
+
+ To avoid that discrepancy, use a fixed size DPI (defaults to 96, and can
+ be set using the standard command lime option "-dpi") and compute a
+ physical screen size to match that DPI setting.
+
+ Note that only affects legacy core protocols, X11 clients can still get
+ the actual physical output size as reported by the Wayland compositor
+ using the RandR protocol, which also allows for the size to be 0 if the
+ size is unknown or meaningless.
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Simon Ser <contact@emersion.fr>
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/731
+ (cherry picked from commit b0413b6e99c6b5fbc04229ce64ddf1f41b08e63e)
+
+commit d4e8c4622890b0cdcfe5f4b9c5608d15ce976901
+Author: Simon Ser <contact@emersion.fr>
+Date: Tue Jul 21 18:28:01 2020 +0200
+
+ xwayland: only use linux-dmabuf if format/modifier was advertised
+
+ Previously, linux-dmabuf was used unconditionally if the buffer had a
+ modifier. However creating a linux-dmabuf buffer with a format/modifier
+ which hasn't been advertised will fail.
+
+ Change xwl_glamor_gbm_get_wl_buffer_for_pixmap to use linux-dmabuf when
+ the format/modifier has been advertised only.
+
+ Signed-off-by: Simon Ser <contact@emersion.fr>
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1035
+ Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ (cherry picked from commit c0e13cbf5a56e1fdd1e4ce58ebdefb6d2904e4b3)
+
+commit c726ceacc1a39c56d2b054ac5f35798d0c3640d7
+Author: Martin Weber <martin.weber@secunet.com>
+Date: Tue Jul 21 18:24:41 2020 +0200
+
+ hw/xfree86: Avoid cursor use after free
+
+ During a VT-Switch a raw pointer to the shared cursor object
+ is saved which is then freed (in case of low refcount) by a call to
+ xf86CursorSetCursor with argument pCurs = NullCursor.
+ This leads to a dangling pointer which can follow in a use after free.
+
+ This fix ensures that there is a shared handle saved for the VT-Switch cycle.
+
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ (cherry picked from commit 7ae221ad5774756766dc78a73d71f4163ac7b1c6)
+
+commit 0679d4660579d0f399b5a9b8140d0c0d3483fa9f
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Jul 21 18:14:51 2020 +0200
+
+ Update URL's in man pages
+
+ Mostly http->https conversions, but also replaces gitweb.fd.o
+ with gitlab.fd.o, and xquartz.macosforge.org with xquartz.org.
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit a5151f58cf98d1696d60a3577dc50851f159da8a)
+
+commit 3059a2e62ae7ef665a537ee0fc2ec24beccf17ae
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Wed Jun 3 10:17:13 2020 +0200
+
+ xwayland: Disable the MIT-SCREEN-SAVER extension when rootless
+
+ Xwayland is just a Wayland client, no X11 screensaver should be
+ expected to work reliably on Xwayland when running rootless because
+ Xwayland cannot grab the input devices so it has no way to actually
+ lock the screen managed by the Wayland compositor.
+
+ Turn off the screensaver on Xwayland when running rootless by setting
+ the screensaver timeout and interval and their default values to zero
+ and disable the MIT-SCREEN-SAVER extension.
+
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1051
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 5c20e4b834145f590c68dbc98e33c7d3d710001a)
+
+commit 23c55ec32973e0a75d723e3f37769dd711c9c59c
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Wed Jul 22 18:20:14 2020 +0200
+
+ xwayland: Hold a pixmap reference in struct xwl_present_event
+
+ In the log of the commit below, I claimed this wasn't necessary on the
+ 1.20 branch, but this turned out to be wrong: It meant that
+ event->buffer could already be destroyed in xwl_present_free_event,
+ resulting in use-after-free and likely a crash.
+
+ Fixes: 22c0808ac88f "xwayland: Free all remaining events in
+ xwl_present_cleanup"
+
+commit 1179938c179a6e96170275e24adac3325539be65
+Author: Alex Goins <agoins@nvidia.com>
+Date: Thu Jul 2 20:12:43 2020 -0500
+
+ randr: Check rrPrivKey in RRHasScanoutPixmap()
+
+ RRHasScanoutPixmap() is called from xf86CheckHWCursor(), regardless of whether
+ or not RandR has been initialized.
+
+ As mentioned in commit 4226c6d, it's possible that RandR has not been
+ initialized if the server is configured with Xinerama and there is more than one
+ X screen. Calling rrGetScrPriv when RandR isn't initialized causes an assertion
+ failure that aborts the server:
+
+ Xorg: ../include/privates.h:121: dixGetPrivateAddr: Assertion
+ key->initialized' failed.
+
+ Just as in commit 4226c6d, fix the problem by checking
+ dixPrivateKeyRegistered(rrPrivKey) before calling rrGetScrPriv.
+
+ Signed-off-by: Alex Goins <agoins@nvidia.com>
+ Acked-by: Olivier Fourdan <ofourdan@redhat.com>
+ (cherry picked from commit 8eeff5d7880c6885ee6f206355599f13d739afa7)
+
+commit 4912f693e8e3abbd090ee02b4bfe14703c3bad0f
+Author: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
+Date: Fri May 15 18:33:11 2020 +0200
+
+ modesetting: Fix front_bo leak at drmmode_xf86crtc_resize on XRandR rotation
+
+ Since the introduction of "modesetting: Remove unnecessary fb addition from
+ drmmode_xf86crtc_resize" the fb_id isn't initialited at
+ drmmode_xf86crtc_resize.
+
+ Rotate operation of XRandR uses rotate_bo. So in this case the fb_id
+ associated to the front_bo is not initialized at drmmode_set_mode_major.
+ So fd_id remains 0.
+
+ As every call to drmmode_xf86crtc_resize allocates a new front_bo we should
+ destroy unconditionally the old_front_bo if operation success. So we free
+ the allocated GBM handles.
+
+ This avoids crashing xserver with a OOM in the RPI4 1Gb at 4k resolution
+ after 3 series xrandr rotations from normal to left and vice versa reported at
+ https://github.com/raspberrypi/firmware/issues/1345
+
+ Signed-off-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1024
+ Fixes: 8774532121 "modesetting: Remove unnecessary fb addition from
+ drmmode_xf86crtc_resize"
+ (cherry picked from commit 73480f172aeced074dd9301ae4d97f7d2f3a9a45)
+
+commit ccbcf083d5c676311aab77cc837a2539a7278a62
+Author: Lyude Paul <lyude@redhat.com>
+Date: Tue Jul 14 18:32:39 2020 -0400
+
+ xwayland: Store xwl_tablet_pad in its own private key
+
+ When a slave device causes the master virtual pointer device to change
+ device types, the device's private data pointer
+ (device->public.devicePrivate) is also changed to match the type of the
+ slave device. This can be a problem though, as tablet pad devices will
+ set the device's private data pointer to their own xwl_tablet_pad
+ struct. This can cause us to dereference the pointer as the wrong type,
+ and result in a segfault:
+
+ Thread 1 "Xwayland" received signal SIGSEGV, Segmentation fault.
+ wl_proxy_marshal (proxy=0x51, opcode=opcode@entry=0) at src/wayland-client.c:792
+ 792 va_start(ap, opcode);
+ (gdb) bt
+ 0 wl_proxy_marshal (proxy=0x51, opcode=opcode@entry=0) at
+ src/wayland-client.c:792
+ 1 0x00005610b27b6c55 in wl_pointer_set_cursor (hotspot_y=0,
+ hotspot_x=0, surface=0x0, serial=<optimized out>, wl_pointer=<optimized
+ out>) at /usr/include/wayland-client-protocol.h:4610
+ 2 xwl_seat_set_cursor (xwl_seat=xwl_seat@entry=0x5610b46d5d10) at
+ xwayland-cursor.c:137
+ 3 0x00005610b27b6ecd in xwl_set_cursor (device=<optimized out>,
+ screen=<optimized out>, cursor=<optimized out>, x=<optimized out>,
+ y=<optimized out>) at xwayland-cursor.c:249
+ 4 0x00005610b2800b46 in miPointerUpdateSprite (pDev=0x5610b4501a30) at
+ mipointer.c:468
+ 5 miPointerUpdateSprite (pDev=0x5610b4501a30) at mipointer.c:410
+ 6 0x00005610b2800e56 in miPointerDisplayCursor (pCursor=0x5610b4b35740,
+ pScreen=0x5610b3d54410, pDev=0x5610b4501a30) at mipointer.c:206
+ 7 miPointerDisplayCursor (pDev=0x5610b4501a30, pScreen=0x5610b3d54410,
+ pCursor=0x5610b4b35740) at mipointer.c:194
+ 8 0x00005610b27ed62b in CursorDisplayCursor (pDev=<optimized out>,
+ pScreen=0x5610b3d54410, pCursor=0x5610b4b35740) at cursor.c:168
+ 9 0x00005610b28773ee in AnimCurDisplayCursor (pDev=0x5610b4501a30,
+ pScreen=0x5610b3d54410, pCursor=0x5610b4b35740) at animcur.c:197
+ 10 0x00005610b28eb4ca in ChangeToCursor (pDev=0x5610b4501a30,
+ cursor=0x5610b4b35740) at events.c:938
+ 11 0x00005610b28ec99f in WindowHasNewCursor
+ (pWin=pWin@entry=0x5610b4b2e0c0) at events.c:3362
+ 12 0x00005610b291102d in ChangeWindowAttributes (pWin=0x5610b4b2e0c0,
+ vmask=<optimized out>, vlist=vlist@entry=0x5610b4c41dcc,
+ client=client@entry=0x5610b4b2c900) at window.c:1561
+ 13 0x00005610b28db8e3 in ProcChangeWindowAttributes (client=0x5610b4b2c900)
+ at dispatch.c:746
+ 14 0x00005610b28e1e5b in Dispatch () at dispatch.c:497
+ 15 0x00005610b28e5f34 in dix_main (argc=16, argv=0x7ffc7a601b68,
+ envp=<optimized out>) at main.c:276
+ 16 0x00007f8828cde042 in __libc_start_main (main=0x5610b27ae930 <main>,
+ argc=16, argv=0x7ffc7a601b68, init=<optimized out>, fini=<optimized
+ out>, rtld_fini=<optimized out>, stack_end=0x7ffc7a601b58) at
+ ../csu/libc-start.c:308
+ 17 0x00005610b27ae96e in _start () at cursor.c:1064
+
+ Simple reproducer in gnome-shell: open up an Xwayland window, press some
+ tablet buttons, lock and unlock the screen. Repeat if it doesn't crash
+ the first time.
+
+ So, let's fix this by registering our own device-specific private key
+ for storing a backpointer to xwl_tablet_pad, so that all input devices
+ have their private data pointers set to their respective xwl_seat.
+
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Lyude Paul <lyude@redhat.com>
+ (cherry picked from commit ba0e789b912671c724a21b3a30291247718bcf7d)
+
+commit cc36135595fad70ce81697d7c98eb8a26cec9a72
+Author: SimonP <simonp.git@gmail.com>
+Date: Tue Jun 9 13:26:48 2020 +0200
+
+ xwayland: Initialise values in xwlVidModeGetGamma()
+
+ ProcVidModeGetGamma() relies on GetGamma() to initialise values if it
+ returns TRUE. Without this, we're sending uninitialised values to
+ clients.
+
+ Fixes: xorg/xserver#1040
+ (cherry picked from commit 6748a4094158d2bde1630b915a5318f9f22c8e0a)
+
+commit 533cc6ca046a9e59503bd0763ab28f66284f7dc7
+Author: Sjoerd Simons <sjoerd@collabora.com>
+Date: Fri Apr 10 16:34:06 2020 +0200
+
+ xwayland: Fix crashes when there is no pointer
+
+ When running with a weston session without a pointer device (thus with
+ the wl_seat not having a pointer) xwayland pointer warping and pointer
+ confining should simply be ignored to avoid crashes.
+
+ Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
+ (cherry picked from commit d35f68336b0a462dc660797d1779581f348af04e)
+
+commit 3aa31823dbc3dd026ce08958ca5324d7af94a86a
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Tue May 5 15:40:43 2020 +0200
+
+ xwayland: Clear private on device removal
+
+ Xwayland uses the device private to point to the `xwl_seat`.
+
+ Device may be removed at any time, including on suspend.
+
+ On resume, if the DIX code ends up calling a function that requires the
+ `xwl_seat` such as `xwl_set_cursor()` we may end up pointing at random
+ data.
+
+ Make sure the clear the device private data on removal so that we don't
+ try to use it and crash later.
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ https://gitlab.freedesktop.org/xorg/xserver/issues/709
+ (cherry picked from commit 4195e8035645007be313ade79032b8d561ceec6c)
+
+commit 22c0808ac88f917541fe40ab30e85364adac82bc
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Fri Jun 19 18:10:18 2020 +0200
+
+ xwayland: Free all remaining events in xwl_present_cleanup
+
+ At the end of xwl_present_cleanup, these events aren't reachable
+ anymore, so if we don't free them first, they're leaked.
+
+ (cherry picked from commit 64565ea344fef0171497952ef75f019cb420fe3b)
+
+ v2:
+ * Simpler backport, no need to keep a reference to the pixmap on the
+ 1.20 branch.
+
+commit 37779d7f4028e94c8383a937eab57a6ffb15c38b
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Fri Jun 19 18:14:35 2020 +0200
+
+ xwayland: Always use xwl_present_free_event for freeing Present events
+
+ Minor cleanup, and will make the next change simpler. No functional
+ change intended.
+
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit 1beffba699e2cc3f23039d2177c025bc127966de)
+
+commit ba52e5eb0e3b30aa63a8b51e8899eca88d9e0a30
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Thu Jun 25 18:11:31 2020 +0200
+
+ present/wnmd: Free flip_queue entries in present_wnmd_clear_window_flip
+
+ When present_wnmd_clear_window_flip is done, present_destroy_window
+ frees struct present_window_priv, and the events in the flip queue
+ become unreachable. So if we don't free them first, they're leaked.
+
+ Also drop the call to present_wnmd_set_abort_flip, which just sets a
+ flag in struct present_window_priv and thus can't have any observable
+ effect after present_destroy_window.
+
+ Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1042
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit 1bdedc8dbb9d035b85444c2558a137470ff52113)
+
+commit b3310ed5036b098509e40b3642c2265132445e6a
+Author: Michel Dänzer <mdaenzer@redhat.com>
+Date: Thu Jun 25 18:09:27 2020 +0200
+
+ present/wnmd: Keep pixmap pointer in present_wnmd_clear_window_flip
+
+ The comment was incorrect: Any reference held by the window (see
+ present_wnmd_execute) is in addition to the one in struct present_vblank
+ (see present_vblank_create). So if we don't drop the latter, the pixmap
+ will be leaked.
+
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit bc9dd1c71c3722284ffaa7183f4119151b25a44f)
+
+commit fc297c87d6755c11380a44e3510689cc76eb1ee1
+Author: Simon Ser <contact@emersion.fr>
+Date: Mon May 4 18:20:17 2020 +0200
+
+ xwayland: import DMA-BUFs with GBM_BO_USE_RENDERING only
+
+ Drop GBM_BO_USE_SCANOUT from the GBM_BO_IMPORT_FD import, add
+ GBM_BO_USE_RENDERING to the GBM_BO_IMPORT_FD_MODIFIER import.
+
+ If the DMA-BUF cannot be scanned out, gbm_bo_import with
+ GBM_BO_USE_SCANOUT will fail. However Xwayland doesn't need to scan-out
+ the buffer and can work fine without scanout. Glamor only needs
+ GBM_BO_USE_RENDERING.
+
+ Signed-off-by: Simon Ser <contact@emersion.fr>
+ Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
+ Reviewed-by: Daniel Stone <daniels@collabora.com>
+ (cherry picked from commit 421ce458f1d295015c108eb32f9611e527649cf8)
+
+commit 0430d13c1ed8ddbb1d5a57d7e507771f8079d9af
+Author: Olivier Fourdan <ofourdan@redhat.com>
+Date: Fri Apr 24 17:45:49 2020 +0200
+
+ xwayland: Fix infinite loop at startup
+
+ Mutter recently added headless tests, and when running those tests the
+ Wayland compositor runs for a very short time.
+
+ Xwayland is spawned by the Wayland compositor and upon startup will
+ query the various Wayland protocol supported by the compositor.
+
+ To do so, it will do a roundtrip to the Wayland server waiting for
+ events it expects.
+
+ If the Wayland compositor terminates before Xwayland has got the replies
+ it expects, it will loop indefinitely calling `wl_display_roundtrip()`
+ continuously.
+
+ To avoid that issue, add a new `xwl_screen_roundtrip()` that checks for
+ the returned value from `wl_display_roundtrip()` and fails if it is
+ negative.
+
+ Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
+ Reviewed-by: Roman Gilg <subdiff@gmail.com>
+ Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
+
+ (cherry picked from commit 785e59060c00129e47da6c0877604a56d7e0e32f)
+
+commit b8b10e29302d94832be8f0d8aa7aa1b54e42762c
+Author: Hans de Goede <hdegoede@redhat.com>
+Date: Mon Jun 24 21:46:26 2019 +0200
+
+ modesetting: Disable pageflipping when using a swcursor
+
+ The miPointerSpriteFunc swcursor code expects there to only be a single
+ framebuffer and when the cursor moves it will undo the damage of the
+ previous draw, potentially overwriting what ever is there in a new
+ framebuffer installed after a flip.
+
+ This leads to all kind of artifacts, so we need to disable pageflipping
+ when a swcursor is used.
+
+ The code for this has shamelessly been copied from the xf86-video-amdgpu
+ code.
+
+ Fixes: https://gitlab.freedesktop.org/xorg/xserver/issues/828
+
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ (cherry picked from commit 0aaac8d783e78c040a70a55ba8d67809abd7e625)
+ Signed-off-by: Łukasz Spintzyk <lukasz.spintzyk@displaylink.com>
+
+commit 271934db9f3b1297754b29855646e0a4ee01db59
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Tue Oct 30 18:43:51 2018 +0100
+
+ dix: do not send focus event when grab actually does not change
+
+ c67f2eac5651 ("dix: always send focus event on grab change") made dix
+ always sent events when it's a NotifyGrab or NotifyUngrab, even if
+ from == to, because 'from' can just come from a previous XSetInputFocus
+ call.
+
+ However, when an application calls XGrabKeyboard several times on
+ the same window, we are now sending spurious FocusOut+FocusIn with
+ NotifyGrab, even if the grab does not actually change. This makes screen
+ readers for blind people spuriously emit activity events which disturb
+ screen reading workflow when e.g. switching between menus.
+
+ This commit avoids calling DoFocusEvents in that precise case, i.e. when
+ oldWin is a previous grab and the new grab is the same window.
+
+ Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit 364d64981549544213e2bca8de6ff8a5b2b5a69e)
+
commit f84ad082557f9cde6b8faa373eca6a0a89ba7d56
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Mar 29 13:02:03 2020 -0700
diff --git a/xserver/Makefile.in b/xserver/Makefile.in
index 453694368..eeccd248c 100644
--- a/xserver/Makefile.in
+++ b/xserver/Makefile.in
@@ -530,6 +530,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/Xext/Makefile.am b/xserver/Xext/Makefile.am
index 32a27eba8..f15a15a3e 100644
--- a/xserver/Xext/Makefile.am
+++ b/xserver/Xext/Makefile.am
@@ -1,4 +1,4 @@
-noinst_LTLIBRARIES = libXext.la libXvidmode.la
+noinst_LTLIBRARIES = libXext.la libXvidmode.la libhashtable.la
AM_CFLAGS = $(DIX_CFLAGS)
@@ -35,7 +35,7 @@ BUILTIN_SRCS += $(XV_SRCS)
endif
# XResource extension: lets clients get data about per-client resource usage
-RES_SRCS = hashtable.c hashtable.h xres.c
+RES_SRCS = xres.c
if RES
BUILTIN_SRCS += $(RES_SRCS)
endif
@@ -95,10 +95,16 @@ endif
libXext_la_SOURCES = $(BUILTIN_SRCS)
libXext_la_LIBADD = $(BUILTIN_LIBS)
+if RES
+libXext_la_LIBADD += libhashtable.la
+endif
# XVidMode extension
libXvidmode_la_SOURCES = vidmode.c
+#Hashtable
+libhashtable_la_SOURCES = hashtable.c hashtable.h
+
EXTRA_DIST = \
$(MITSHM_SRCS) \
$(XV_SRCS) \
diff --git a/xserver/Xext/Makefile.in b/xserver/Xext/Makefile.in
index 5c0c3111c..1d027c492 100644
--- a/xserver/Xext/Makefile.in
+++ b/xserver/Xext/Makefile.in
@@ -64,6 +64,7 @@ host_triplet = @host@
@XCSECURITY_TRUE@am__append_11 = $(XCSECURITY_SRCS)
@XF86BIGFONT_TRUE@am__append_12 = $(BIGFONT_SRCS)
@DPMSExtension_TRUE@am__append_13 = $(DPMS_SRCS)
+@RES_TRUE@am__append_14 = libhashtable.la
subdir = Xext
DIST_COMMON = $(am__sdk_HEADERS_DIST) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(top_srcdir)/depcomp
@@ -90,20 +91,20 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
@XSELINUX_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2)
-libXext_la_DEPENDENCIES = $(am__DEPENDENCIES_3)
+libXext_la_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__append_14)
am__libXext_la_SOURCES_DIST = bigreq.c geext.c shape.c sleepuntil.c \
sleepuntil.h sync.c syncsdk.h syncsrv.h xcmisc.c xtest.c shm.c \
shmint.h xvmain.c xvdisp.c xvmc.c xvdix.h xvmcext.h xvdisp.h \
- hashtable.c hashtable.h xres.c saver.c panoramiX.c panoramiX.h \
- panoramiXh.h panoramiXsrv.h panoramiXprocs.c panoramiXSwap.c \
- xace.c xace.h xacestr.h xselinux_ext.c xselinux_hooks.c \
- xselinux_label.c xselinux.h xselinuxint.h security.c \
- securitysrv.h xf86bigfont.c xf86bigfontsrv.h dpms.c dpmsproc.h
+ xres.c saver.c panoramiX.c panoramiX.h panoramiXh.h \
+ panoramiXsrv.h panoramiXprocs.c panoramiXSwap.c xace.c xace.h \
+ xacestr.h xselinux_ext.c xselinux_hooks.c xselinux_label.c \
+ xselinux.h xselinuxint.h security.c securitysrv.h \
+ xf86bigfont.c xf86bigfontsrv.h dpms.c dpmsproc.h
am__objects_1 = shm.lo
@MITSHM_TRUE@am__objects_2 = $(am__objects_1)
am__objects_3 = xvmain.lo xvdisp.lo xvmc.lo
@XV_TRUE@am__objects_4 = $(am__objects_3)
-am__objects_5 = hashtable.lo xres.lo
+am__objects_5 = xres.lo
@RES_TRUE@am__objects_6 = $(am__objects_5)
am__objects_7 = saver.lo
@SCREENSAVER_TRUE@am__objects_8 = $(am__objects_7)
@@ -133,6 +134,9 @@ am__v_lt_1 =
libXvidmode_la_LIBADD =
am_libXvidmode_la_OBJECTS = vidmode.lo
libXvidmode_la_OBJECTS = $(am_libXvidmode_la_OBJECTS)
+libhashtable_la_LIBADD =
+am_libhashtable_la_OBJECTS = hashtable.lo
+libhashtable_la_OBJECTS = $(am_libhashtable_la_OBJECTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -167,9 +171,10 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(libXext_la_SOURCES) $(libXvidmode_la_SOURCES)
+SOURCES = $(libXext_la_SOURCES) $(libXvidmode_la_SOURCES) \
+ $(libhashtable_la_SOURCES)
DIST_SOURCES = $(am__libXext_la_SOURCES_DIST) \
- $(libXvidmode_la_SOURCES)
+ $(libXvidmode_la_SOURCES) $(libhashtable_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -556,6 +561,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
@@ -567,7 +573,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libXext.la libXvidmode.la
+noinst_LTLIBRARIES = libXext.la libXvidmode.la libhashtable.la
AM_CFLAGS = $(DIX_CFLAGS)
@XORG_TRUE@sdk_HEADERS = xvdix.h xvmcext.h geext.h geint.h shmint.h \
@XORG_TRUE@ syncsdk.h $(am__append_6) $(am__append_8)
@@ -589,7 +595,7 @@ MITSHM_SRCS = shm.c shmint.h
XV_SRCS = xvmain.c xvdisp.c xvmc.c xvdix.h xvmcext.h xvdisp.h
# XResource extension: lets clients get data about per-client resource usage
-RES_SRCS = hashtable.c hashtable.h xres.c
+RES_SRCS = xres.c
# MIT ScreenSaver extension
SCREENSAVER_SRCS = saver.c
@@ -616,10 +622,13 @@ DPMS_SRCS = dpms.c dpmsproc.h
# Now take all of the above, mix well, bake for 10 minutes and get libXext*.la
libXext_la_SOURCES = $(BUILTIN_SRCS)
-libXext_la_LIBADD = $(BUILTIN_LIBS)
+libXext_la_LIBADD = $(BUILTIN_LIBS) $(am__append_14)
# XVidMode extension
libXvidmode_la_SOURCES = vidmode.c
+
+#Hashtable
+libhashtable_la_SOURCES = hashtable.c hashtable.h
EXTRA_DIST = \
$(MITSHM_SRCS) \
$(XV_SRCS) \
@@ -682,6 +691,8 @@ libXext.la: $(libXext_la_OBJECTS) $(libXext_la_DEPENDENCIES) $(EXTRA_libXext_la_
$(AM_V_CCLD)$(LINK) $(libXext_la_OBJECTS) $(libXext_la_LIBADD) $(LIBS)
libXvidmode.la: $(libXvidmode_la_OBJECTS) $(libXvidmode_la_DEPENDENCIES) $(EXTRA_libXvidmode_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libXvidmode_la_OBJECTS) $(libXvidmode_la_LIBADD) $(LIBS)
+libhashtable.la: $(libhashtable_la_OBJECTS) $(libhashtable_la_DEPENDENCIES) $(EXTRA_libhashtable_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(libhashtable_la_OBJECTS) $(libhashtable_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
diff --git a/xserver/Xi/Makefile.in b/xserver/Xi/Makefile.in
index 05fed0c06..2ddda50f8 100644
--- a/xserver/Xi/Makefile.in
+++ b/xserver/Xi/Makefile.in
@@ -485,6 +485,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/aclocal.m4 b/xserver/aclocal.m4
index fa54ecdac..300ccb1f9 100644
--- a/xserver/aclocal.m4
+++ b/xserver/aclocal.m4
@@ -19,9 +19,9 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-dnl serial 11 (pkg-config-0.29.1)
-dnl
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 12 (pkg-config-0.29.2)
+
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
dnl
@@ -62,7 +62,7 @@ dnl
dnl See the "Since" comment for each macro you use to see what version
dnl of the macros you require.
m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29.1])
+[m4_define([PKG_MACROS_VERSION], [0.29.2])
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
])dnl PKG_PREREQ
@@ -163,7 +163,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
-AC_MSG_CHECKING([for $1])
+AC_MSG_CHECKING([for $2])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
@@ -173,11 +173,11 @@ and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
+ else
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
@@ -194,7 +194,7 @@ installed software in a non-standard prefix.
_PKG_TEXT])[]dnl
])
elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
+ AC_MSG_RESULT([no])
m4_default([$4], [AC_MSG_FAILURE(
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
diff --git a/xserver/composite/Makefile.in b/xserver/composite/Makefile.in
index 88391ed47..43abe323c 100644
--- a/xserver/composite/Makefile.in
+++ b/xserver/composite/Makefile.in
@@ -503,6 +503,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/config/Makefile.in b/xserver/config/Makefile.in
index ef8b0cffd..97c813a2a 100644
--- a/xserver/config/Makefile.in
+++ b/xserver/config/Makefile.in
@@ -524,6 +524,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/configure b/xserver/configure
index bdd5c2a7c..845ac2e2b 100644
--- a/xserver/configure
+++ b/xserver/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xorg-server 1.20.8.
+# Generated by GNU Autoconf 2.69 for xorg-server 1.20.10.
#
# Report bugs to <https://gitlab.freedesktop.org/xorg/xserver/issues>.
#
@@ -651,8 +651,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='xorg-server'
PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='1.20.8'
-PACKAGE_STRING='xorg-server 1.20.8'
+PACKAGE_VERSION='1.20.10'
+PACKAGE_STRING='xorg-server 1.20.10'
PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/xserver/issues'
PACKAGE_URL=''
@@ -947,6 +947,8 @@ PRESENT_FALSE
PRESENT_TRUE
GLX_SYS_LIBS
GLX_DEFINES
+HASHTABLE_FALSE
+HASHTABLE_TRUE
GLX_FALSE
GLX_TRUE
GL_LIBS
@@ -1249,6 +1251,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1543,6 +1546,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1795,6 +1799,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1932,7 +1945,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -2045,7 +2058,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xorg-server 1.20.8 to adapt to many kinds of systems.
+\`configure' configures xorg-server 1.20.10 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2085,6 +2098,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -2115,7 +2129,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xorg-server 1.20.8:";;
+ short | recursive ) echo "Configuration of xorg-server 1.20.10:";;
esac
cat <<\_ACEOF
@@ -2310,10 +2324,10 @@ Optional Packages:
org.x)
--with-bundle-version=VERSION
Version to use for X11.app's CFBundleVersion
- (default: 1.20.8)
+ (default: 1.20.10)
--with-bundle-version-string=VERSION
Version to use for X11.app's
- CFBundleShortVersionString (default: 1.20.8)
+ CFBundleShortVersionString (default: 1.20.10)
--with-sparkle-feed-url=URL
URL for the Sparkle feed (default:
https://www.xquartz.org/releases/sparkle/release.xml)
@@ -2568,7 +2582,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xorg-server configure 1.20.8
+xorg-server configure 1.20.10
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3277,7 +3291,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xorg-server $as_me 1.20.8, which was
+It was created by xorg-server $as_me 1.20.10, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3625,8 +3639,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-RELEASE_DATE="2020-03-29"
-RELEASE_NAME="Chicken Parmigiana"
+RELEASE_DATE="2020-12-01"
+RELEASE_NAME="Chicken Pot Pie"
am__api_version='1.12'
@@ -4105,7 +4119,7 @@ fi
# Define the identity of the package.
PACKAGE='xorg-server'
- VERSION='1.20.8'
+ VERSION='1.20.10'
cat >>confdefs.h <<_ACEOF
@@ -23034,7 +23048,7 @@ _ACEOF
if test "${with_bundle_version+set}" = set; then :
withval=$with_bundle_version; BUNDLE_VERSION="${withval}"
else
- BUNDLE_VERSION="1.20.8"
+ BUNDLE_VERSION="1.20.10"
fi
@@ -24138,8 +24152,8 @@ LIBPIXMAN="pixman-1 >= 0.27.2"
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PIXMAN" >&5
-$as_echo_n "checking for PIXMAN... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBPIXMAN" >&5
+$as_echo_n "checking for $LIBPIXMAN... " >&6; }
if test -n "$PIXMAN_CFLAGS"; then
pkg_cv_PIXMAN_CFLAGS="$PIXMAN_CFLAGS"
@@ -24179,7 +24193,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -24206,7 +24220,7 @@ Alternatively, you may set the environment variables PIXMAN_CFLAGS
and PIXMAN_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -24779,8 +24793,8 @@ fi
if test "x$WITH_SYSTEMD_DAEMON" = "xyes" -o "x$WITH_SYSTEMD_DAEMON" = "xauto" ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5
-$as_echo_n "checking for SYSTEMD_DAEMON... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBSYSTEMD" >&5
+$as_echo_n "checking for $LIBSYSTEMD... " >&6; }
if test -n "$SYSTEMD_DAEMON_CFLAGS"; then
pkg_cv_SYSTEMD_DAEMON_CFLAGS="$SYSTEMD_DAEMON_CFLAGS"
@@ -24820,7 +24834,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -24838,8 +24852,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5
-$as_echo_n "checking for SYSTEMD_DAEMON... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5
+$as_echo_n "checking for libsystemd-daemon... " >&6; }
if test -n "$SYSTEMD_DAEMON_CFLAGS"; then
pkg_cv_SYSTEMD_DAEMON_CFLAGS="$SYSTEMD_DAEMON_CFLAGS"
@@ -24879,7 +24893,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -24897,7 +24911,7 @@ fi
HAVE_SYSTEMD_DAEMON=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_SYSTEMD_DAEMON=no
else
@@ -24909,12 +24923,12 @@ $as_echo "yes" >&6; }
LIBSYSTEMD_DAEMON=libsystemd-daemon
fi
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD_DAEMON" >&5
-$as_echo_n "checking for SYSTEMD_DAEMON... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5
+$as_echo_n "checking for libsystemd-daemon... " >&6; }
if test -n "$SYSTEMD_DAEMON_CFLAGS"; then
pkg_cv_SYSTEMD_DAEMON_CFLAGS="$SYSTEMD_DAEMON_CFLAGS"
@@ -24954,7 +24968,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -24972,7 +24986,7 @@ fi
HAVE_SYSTEMD_DAEMON=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_SYSTEMD_DAEMON=no
else
@@ -25025,8 +25039,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UDEV" >&5
-$as_echo_n "checking for UDEV... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBUDEV" >&5
+$as_echo_n "checking for $LIBUDEV... " >&6; }
if test -n "$UDEV_CFLAGS"; then
pkg_cv_UDEV_CFLAGS="$UDEV_CFLAGS"
@@ -25066,7 +25080,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -25084,7 +25098,7 @@ fi
HAVE_LIBUDEV=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_LIBUDEV=no
else
@@ -25164,8 +25178,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
-$as_echo_n "checking for DBUS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBDBUS" >&5
+$as_echo_n "checking for $LIBDBUS... " >&6; }
if test -n "$DBUS_CFLAGS"; then
pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS"
@@ -25205,7 +25219,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -25223,7 +25237,7 @@ fi
HAVE_DBUS=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_DBUS=no
else
@@ -25249,8 +25263,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for HAL" >&5
-$as_echo_n "checking for HAL... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for hal" >&5
+$as_echo_n "checking for hal... " >&6; }
if test -n "$HAL_CFLAGS"; then
pkg_cv_HAL_CFLAGS="$HAL_CFLAGS"
@@ -25290,7 +25304,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -25308,7 +25322,7 @@ fi
HAVE_HAL=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_HAL=no
else
@@ -25692,6 +25706,7 @@ $as_echo "#define SCREENSAVER 1" >>confdefs.h
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $SCRNSAVERPROTO"
fi
+HASHTABLE=no
if test "x$RES" = xyes; then
RES_TRUE=
RES_FALSE='#'
@@ -25704,6 +25719,7 @@ if test "x$RES" = xyes; then
$as_echo "#define RES 1" >>confdefs.h
+ HASHTABLE=yes
REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO"
fi
@@ -25772,8 +25788,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DRI2PROTO" >&5
-$as_echo_n "checking for DRI2PROTO... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DRI2PROTO" >&5
+$as_echo_n "checking for $DRI2PROTO... " >&6; }
if test -n "$DRI2PROTO_CFLAGS"; then
pkg_cv_DRI2PROTO_CFLAGS="$DRI2PROTO_CFLAGS"
@@ -25813,7 +25829,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -25831,7 +25847,7 @@ fi
HAVE_DRI2PROTO=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_DRI2PROTO=no
else
@@ -25909,8 +25925,8 @@ esac
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DRI3PROTO" >&5
-$as_echo_n "checking for DRI3PROTO... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DRI3PROTO" >&5
+$as_echo_n "checking for $DRI3PROTO... " >&6; }
if test -n "$DRI3PROTO_CFLAGS"; then
pkg_cv_DRI3PROTO_CFLAGS="$DRI3PROTO_CFLAGS"
@@ -25950,7 +25966,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -25968,7 +25984,7 @@ fi
HAVE_DRI3PROTO=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_DRI3PROTO=no
else
@@ -26039,8 +26055,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSHMFENCE" >&5
-$as_echo_n "checking for XSHMFENCE... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBXSHMFENCE" >&5
+$as_echo_n "checking for $LIBXSHMFENCE... " >&6; }
if test -n "$XSHMFENCE_CFLAGS"; then
pkg_cv_XSHMFENCE_CFLAGS="$XSHMFENCE_CFLAGS"
@@ -26080,7 +26096,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -26098,7 +26114,7 @@ fi
HAVE_XSHMFENCE=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_XSHMFENCE=no
else
@@ -26176,8 +26192,8 @@ $as_echo "#define WITH_LIBDRM 1" >>confdefs.h
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDRM" >&5
-$as_echo_n "checking for LIBDRM... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBDRM" >&5
+$as_echo_n "checking for $LIBDRM... " >&6; }
if test -n "$LIBDRM_CFLAGS"; then
pkg_cv_LIBDRM_CFLAGS="$LIBDRM_CFLAGS"
@@ -26217,7 +26233,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -26244,7 +26260,7 @@ Alternatively, you may set the environment variables LIBDRM_CFLAGS
and LIBDRM_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -26271,8 +26287,8 @@ fi
if test "x$GLX" = xyes; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XLIB" >&5
-$as_echo_n "checking for XLIB... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x11" >&5
+$as_echo_n "checking for x11... " >&6; }
if test -n "$XLIB_CFLAGS"; then
pkg_cv_XLIB_CFLAGS="$XLIB_CFLAGS"
@@ -26312,7 +26328,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -26339,7 +26355,7 @@ Alternatively, you may set the environment variables XLIB_CFLAGS
and XLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -26362,8 +26378,8 @@ $as_echo "yes" >&6; }
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GL" >&5
-$as_echo_n "checking for GL... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GLPROTO $LIBGL" >&5
+$as_echo_n "checking for $GLPROTO $LIBGL... " >&6; }
if test -n "$GL_CFLAGS"; then
pkg_cv_GL_CFLAGS="$GL_CFLAGS"
@@ -26403,7 +26419,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -26430,7 +26446,7 @@ Alternatively, you may set the environment variables GL_CFLAGS
and GL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -26455,6 +26471,7 @@ fi
$as_echo "#define GLXEXT 1" >>confdefs.h
+ HASHTABLE=yes
GLX_LIBS='$(top_builddir)/glx/libglx.la $(top_builddir)/glx/libglxvnd.la'
GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
else
@@ -26469,6 +26486,15 @@ else
fi
+ if test "x$HASHTABLE" = xyes; then
+ HASHTABLE_TRUE=
+ HASHTABLE_FALSE='#'
+else
+ HASHTABLE_TRUE='#'
+ HASHTABLE_FALSE=
+fi
+
+
@@ -26607,8 +26633,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SELINUX" >&5
-$as_echo_n "checking for SELINUX... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBSELINUX" >&5
+$as_echo_n "checking for $LIBSELINUX... " >&6; }
if test -n "$SELINUX_CFLAGS"; then
pkg_cv_SELINUX_CFLAGS="$SELINUX_CFLAGS"
@@ -26648,7 +26674,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -26675,7 +26701,7 @@ Alternatively, you may set the environment variables SELINUX_CFLAGS
and SELINUX_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -26961,8 +26987,8 @@ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XDMCP" >&5
-$as_echo_n "checking for XDMCP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdmcp" >&5
+$as_echo_n "checking for xdmcp... " >&6; }
if test -n "$XDMCP_CFLAGS"; then
pkg_cv_XDMCP_CFLAGS="$XDMCP_CFLAGS"
@@ -27002,7 +27028,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27020,7 +27046,7 @@ fi
have_libxdmcp="no"
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_libxdmcp="no"
else
@@ -27402,8 +27428,8 @@ $as_echo "#define HAVE_SHA1_IN_LIBMD 1" >>confdefs.h
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSHA1" >&5
-$as_echo_n "checking for LIBSHA1... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsha1" >&5
+$as_echo_n "checking for libsha1... " >&6; }
if test -n "$LIBSHA1_CFLAGS"; then
pkg_cv_LIBSHA1_CFLAGS="$LIBSHA1_CFLAGS"
@@ -27443,7 +27469,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27461,7 +27487,7 @@ fi
HAVE_LIBSHA1=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_LIBSHA1=no
else
@@ -27630,8 +27656,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL" >&5
-$as_echo_n "checking for OPENSSL... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for openssl" >&5
+$as_echo_n "checking for openssl... " >&6; }
if test -n "$OPENSSL_CFLAGS"; then
pkg_cv_OPENSSL_CFLAGS="$OPENSSL_CFLAGS"
@@ -27671,7 +27697,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27689,7 +27715,7 @@ fi
HAVE_OPENSSL_PKC=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_OPENSSL_PKC=no
else
@@ -27728,8 +27754,8 @@ $as_echo "$with_sha1" >&6; }
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSERVERCFLAGS" >&5
-$as_echo_n "checking for XSERVERCFLAGS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $REQUIRED_MODULES $REQUIRED_LIBS" >&5
+$as_echo_n "checking for $REQUIRED_MODULES $REQUIRED_LIBS... " >&6; }
if test -n "$XSERVERCFLAGS_CFLAGS"; then
pkg_cv_XSERVERCFLAGS_CFLAGS="$XSERVERCFLAGS_CFLAGS"
@@ -27769,7 +27795,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27796,7 +27822,7 @@ Alternatively, you may set the environment variables XSERVERCFLAGS_CFLAGS
and XSERVERCFLAGS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -27819,8 +27845,8 @@ $as_echo "yes" >&6; }
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XSERVERLIBS" >&5
-$as_echo_n "checking for XSERVERLIBS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $REQUIRED_LIBS" >&5
+$as_echo_n "checking for $REQUIRED_LIBS... " >&6; }
if test -n "$XSERVERLIBS_CFLAGS"; then
pkg_cv_XSERVERLIBS_CFLAGS="$XSERVERLIBS_CFLAGS"
@@ -27860,7 +27886,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27887,7 +27913,7 @@ Alternatively, you may set the environment variables XSERVERLIBS_CFLAGS
and XSERVERLIBS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -27911,8 +27937,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUNWIND" >&5
-$as_echo_n "checking for LIBUNWIND... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libunwind" >&5
+$as_echo_n "checking for libunwind... " >&6; }
if test -n "$LIBUNWIND_CFLAGS"; then
pkg_cv_LIBUNWIND_CFLAGS="$LIBUNWIND_CFLAGS"
@@ -27952,7 +27978,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -27970,7 +27996,7 @@ fi
HAVE_LIBUNWIND=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
HAVE_LIBUNWIND=no
else
@@ -28179,8 +28205,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XNESTMODULES" >&5
-$as_echo_n "checking for XNESTMODULES... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBXEXT x11 xau $XDMCP_MODULES" >&5
+$as_echo_n "checking for $LIBXEXT x11 xau $XDMCP_MODULES... " >&6; }
if test -n "$XNESTMODULES_CFLAGS"; then
pkg_cv_XNESTMODULES_CFLAGS="$XNESTMODULES_CFLAGS"
@@ -28220,7 +28246,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -28238,7 +28264,7 @@ fi
have_xnest=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_xnest=no
else
@@ -28356,8 +28382,8 @@ $as_echo_n "checking whether to build Xorg PCI functions... " >&6; }
if test "x$PCI" = xyes; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PCIACCESS" >&5
-$as_echo_n "checking for PCIACCESS... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBPCIACCESS" >&5
+$as_echo_n "checking for $LIBPCIACCESS... " >&6; }
if test -n "$PCIACCESS_CFLAGS"; then
pkg_cv_PCIACCESS_CFLAGS="$PCIACCESS_CFLAGS"
@@ -28397,7 +28423,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -28424,7 +28450,7 @@ Alternatively, you may set the environment variables PCIACCESS_CFLAGS
and PCIACCESS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -28635,8 +28661,8 @@ please email xorg@lists.freedesktop.org." >&6;}
if test "x$DGA" = xauto; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGA" >&5
-$as_echo_n "checking for DGA... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DGAPROTO" >&5
+$as_echo_n "checking for $DGAPROTO... " >&6; }
if test -n "$DGA_CFLAGS"; then
pkg_cv_DGA_CFLAGS="$DGA_CFLAGS"
@@ -28676,7 +28702,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -28694,7 +28720,7 @@ fi
DGA=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
DGA=no
else
@@ -28709,8 +28735,8 @@ fi
XORG_MODULES="$XORG_MODULES $DGAPROTO"
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGA" >&5
-$as_echo_n "checking for DGA... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DGAPROTO" >&5
+$as_echo_n "checking for $DGAPROTO... " >&6; }
if test -n "$DGA_CFLAGS"; then
pkg_cv_DGA_CFLAGS="$DGA_CFLAGS"
@@ -28750,7 +28776,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -28777,7 +28803,7 @@ Alternatively, you may set the environment variables DGA_CFLAGS
and DGA_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -28813,8 +28839,8 @@ $as_echo "#define XFreeXDGA 1" >>confdefs.h
if test -n "$XORG_MODULES"; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XORG_MODULES" >&5
-$as_echo_n "checking for XORG_MODULES... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $XORG_MODULES" >&5
+$as_echo_n "checking for $XORG_MODULES... " >&6; }
if test -n "$XORG_MODULES_CFLAGS"; then
pkg_cv_XORG_MODULES_CFLAGS="$XORG_MODULES_CFLAGS"
@@ -28854,7 +28880,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -28881,7 +28907,7 @@ Alternatively, you may set the environment variables XORG_MODULES_CFLAGS
and XORG_MODULES_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -29236,8 +29262,8 @@ $as_echo "#define GLAMOR 1" >>confdefs.h
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLAMOR" >&5
-$as_echo_n "checking for GLAMOR... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for epoxy" >&5
+$as_echo_n "checking for epoxy... " >&6; }
if test -n "$GLAMOR_CFLAGS"; then
pkg_cv_GLAMOR_CFLAGS="$GLAMOR_CFLAGS"
@@ -29277,7 +29303,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -29304,7 +29330,7 @@ Alternatively, you may set the environment variables GLAMOR_CFLAGS
and GLAMOR_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -29350,8 +29376,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GBM" >&5
-$as_echo_n "checking for GBM... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$LIBGBM\"" >&5
+$as_echo_n "checking for \"$LIBGBM\"... " >&6; }
if test -n "$GBM_CFLAGS"; then
pkg_cv_GBM_CFLAGS="$GBM_CFLAGS"
@@ -29391,7 +29417,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -29409,7 +29435,7 @@ fi
GBM=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
GBM=no
else
@@ -29593,8 +29619,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XWINMODULES" >&5
-$as_echo_n "checking for XWINMODULES... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x11 xdmcp xau xfixes x11-xcb xcb-aux xcb-image xcb-ewmh xcb-icccm" >&5
+$as_echo_n "checking for x11 xdmcp xau xfixes x11-xcb xcb-aux xcb-image xcb-ewmh xcb-icccm... " >&6; }
if test -n "$XWINMODULES_CFLAGS"; then
pkg_cv_XWINMODULES_CFLAGS="$XWINMODULES_CFLAGS"
@@ -29634,7 +29660,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -29661,7 +29687,7 @@ Alternatively, you may set the environment variables XWINMODULES_CFLAGS
and XWINMODULES_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -29698,8 +29724,8 @@ fi
if test "x$WINDOWSWM" = xyes ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WINDOWSWM" >&5
-$as_echo_n "checking for WINDOWSWM... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $WINDOWSWMPROTO" >&5
+$as_echo_n "checking for $WINDOWSWMPROTO... " >&6; }
if test -n "$WINDOWSWM_CFLAGS"; then
pkg_cv_WINDOWSWM_CFLAGS="$WINDOWSWM_CFLAGS"
@@ -29739,7 +29765,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -29766,7 +29792,7 @@ Alternatively, you may set the environment variables WINDOWSWM_CFLAGS
and WINDOWSWM_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -29808,8 +29834,8 @@ fi
if test "x$WINDOWSDRI" = xyes ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WINDOWSDRI" >&5
-$as_echo_n "checking for WINDOWSDRI... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for windowsdriproto" >&5
+$as_echo_n "checking for windowsdriproto... " >&6; }
if test -n "$WINDOWSDRI_CFLAGS"; then
pkg_cv_WINDOWSDRI_CFLAGS="$WINDOWSDRI_CFLAGS"
@@ -29849,7 +29875,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -29876,7 +29902,7 @@ Alternatively, you may set the environment variables WINDOWSDRI_CFLAGS
and WINDOWSDRI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -29995,8 +30021,8 @@ $as_echo "yes" >&6; }
if test "x$KHRONOS_SPEC_DIR" = "xauto" ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for KHRONOS_OPENGL_REGISTRY" >&5
-$as_echo_n "checking for KHRONOS_OPENGL_REGISTRY... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for khronos-opengl-registry" >&5
+$as_echo_n "checking for khronos-opengl-registry... " >&6; }
if test -n "$KHRONOS_OPENGL_REGISTRY_CFLAGS"; then
pkg_cv_KHRONOS_OPENGL_REGISTRY_CFLAGS="$KHRONOS_OPENGL_REGISTRY_CFLAGS"
@@ -30036,7 +30062,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30063,7 +30089,7 @@ Alternatively, you may set the environment variables KHRONOS_OPENGL_REGISTRY_CFL
and KHRONOS_OPENGL_REGISTRY_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -30179,8 +30205,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XPBPROXY" >&5
-$as_echo_n "checking for XPBPROXY... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $APPLEWMPROTO $LIBAPPLEWM xfixes x11" >&5
+$as_echo_n "checking for $APPLEWMPROTO $LIBAPPLEWM xfixes x11... " >&6; }
if test -n "$XPBPROXY_CFLAGS"; then
pkg_cv_XPBPROXY_CFLAGS="$XPBPROXY_CFLAGS"
@@ -30220,7 +30246,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30247,7 +30273,7 @@ Alternatively, you may set the environment variables XPBPROXY_CFLAGS
and XPBPROXY_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -30455,8 +30481,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DMXMODULES" >&5
-$as_echo_n "checking for DMXMODULES... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmuu $LIBXEXT x11 >= 1.6 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES" >&5
+$as_echo_n "checking for xmuu $LIBXEXT x11 >= 1.6 xrender xfixes $LIBXI $DMXPROTO xau $XDMCP_MODULES... " >&6; }
if test -n "$DMXMODULES_CFLAGS"; then
pkg_cv_DMXMODULES_CFLAGS="$DMXMODULES_CFLAGS"
@@ -30496,7 +30522,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30514,7 +30540,7 @@ fi
have_dmx=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_dmx=no
else
@@ -30524,8 +30550,8 @@ else
$as_echo "yes" >&6; }
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XDMXCONFIG_DEP" >&5
-$as_echo_n "checking for XDMXCONFIG_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xaw7 xmu xt xpm x11" >&5
+$as_echo_n "checking for xaw7 xmu xt xpm x11... " >&6; }
if test -n "$XDMXCONFIG_DEP_CFLAGS"; then
pkg_cv_XDMXCONFIG_DEP_CFLAGS="$XDMXCONFIG_DEP_CFLAGS"
@@ -30565,7 +30591,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30583,7 +30609,7 @@ fi
have_dmx=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_dmx=no
else
@@ -30640,8 +30666,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DMXEXAMPLES_DEP" >&5
-$as_echo_n "checking for DMXEXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBDMX $LIBXEXT x11" >&5
+$as_echo_n "checking for $LIBDMX $LIBXEXT x11... " >&6; }
if test -n "$DMXEXAMPLES_DEP_CFLAGS"; then
pkg_cv_DMXEXAMPLES_DEP_CFLAGS="$DMXEXAMPLES_DEP_CFLAGS"
@@ -30681,7 +30707,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30708,7 +30734,7 @@ Alternatively, you may set the environment variables DMXEXAMPLES_DEP_CFLAGS
and DMXEXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -30732,8 +30758,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DMXXMUEXAMPLES_DEP" >&5
-$as_echo_n "checking for DMXXMUEXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBDMX xmu $LIBXEXT x11" >&5
+$as_echo_n "checking for $LIBDMX xmu $LIBXEXT x11... " >&6; }
if test -n "$DMXXMUEXAMPLES_DEP_CFLAGS"; then
pkg_cv_DMXXMUEXAMPLES_DEP_CFLAGS="$DMXXMUEXAMPLES_DEP_CFLAGS"
@@ -30773,7 +30799,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30800,7 +30826,7 @@ Alternatively, you may set the environment variables DMXXMUEXAMPLES_DEP_CFLAGS
and DMXXMUEXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -30824,8 +30850,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DMXXIEXAMPLES_DEP" >&5
-$as_echo_n "checking for DMXXIEXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBDMX $LIBXI $LIBXEXT x11" >&5
+$as_echo_n "checking for $LIBDMX $LIBXI $LIBXEXT x11... " >&6; }
if test -n "$DMXXIEXAMPLES_DEP_CFLAGS"; then
pkg_cv_DMXXIEXAMPLES_DEP_CFLAGS="$DMXXIEXAMPLES_DEP_CFLAGS"
@@ -30865,7 +30891,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30892,7 +30918,7 @@ Alternatively, you may set the environment variables DMXXIEXAMPLES_DEP_CFLAGS
and DMXXIEXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -30916,8 +30942,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XTSTEXAMPLES_DEP" >&5
-$as_echo_n "checking for XTSTEXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBXTST $LIBXEXT x11" >&5
+$as_echo_n "checking for $LIBXTST $LIBXEXT x11... " >&6; }
if test -n "$XTSTEXAMPLES_DEP_CFLAGS"; then
pkg_cv_XTSTEXAMPLES_DEP_CFLAGS="$XTSTEXAMPLES_DEP_CFLAGS"
@@ -30957,7 +30983,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -30984,7 +31010,7 @@ Alternatively, you may set the environment variables XTSTEXAMPLES_DEP_CFLAGS
and XTSTEXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -31008,8 +31034,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XRESEXAMPLES_DEP" >&5
-$as_echo_n "checking for XRESEXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for xres $LIBXEXT x11" >&5
+$as_echo_n "checking for xres $LIBXEXT x11... " >&6; }
if test -n "$XRESEXAMPLES_DEP_CFLAGS"; then
pkg_cv_XRESEXAMPLES_DEP_CFLAGS="$XRESEXAMPLES_DEP_CFLAGS"
@@ -31049,7 +31075,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31076,7 +31102,7 @@ Alternatively, you may set the environment variables XRESEXAMPLES_DEP_CFLAGS
and XRESEXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -31100,8 +31126,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11EXAMPLES_DEP" >&5
-$as_echo_n "checking for X11EXAMPLES_DEP... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBXEXT x11" >&5
+$as_echo_n "checking for $LIBXEXT x11... " >&6; }
if test -n "$X11EXAMPLES_DEP_CFLAGS"; then
pkg_cv_X11EXAMPLES_DEP_CFLAGS="$X11EXAMPLES_DEP_CFLAGS"
@@ -31141,7 +31167,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31168,7 +31194,7 @@ Alternatively, you may set the environment variables X11EXAMPLES_DEP_CFLAGS
and X11EXAMPLES_DEP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -31229,8 +31255,8 @@ if test "$KDRIVE" = yes; then
if test "x$XEPHYR" = xauto; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XEPHYR" >&5
-$as_echo_n "checking for XEPHYR... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $XEPHYR_REQUIRED_LIBS" >&5
+$as_echo_n "checking for $XEPHYR_REQUIRED_LIBS... " >&6; }
if test -n "$XEPHYR_CFLAGS"; then
pkg_cv_XEPHYR_CFLAGS="$XEPHYR_CFLAGS"
@@ -31270,7 +31296,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31288,7 +31314,7 @@ fi
XEPHYR="no"
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
XEPHYR="no"
else
@@ -31301,8 +31327,8 @@ fi
elif test "x$XEPHYR" = xyes ; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XEPHYR" >&5
-$as_echo_n "checking for XEPHYR... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $XEPHYR_REQUIRED_LIBS" >&5
+$as_echo_n "checking for $XEPHYR_REQUIRED_LIBS... " >&6; }
if test -n "$XEPHYR_CFLAGS"; then
pkg_cv_XEPHYR_CFLAGS="$XEPHYR_CFLAGS"
@@ -31342,7 +31368,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31369,7 +31395,7 @@ Alternatively, you may set the environment variables XEPHYR_CFLAGS
and XEPHYR_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -31482,8 +31508,8 @@ if test "x$XF86VIDMODE" = xyes; then
fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XWAYLANDMODULES" >&5
-$as_echo_n "checking for XWAYLANDMODULES... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $XWAYLANDMODULES" >&5
+$as_echo_n "checking for $XWAYLANDMODULES... " >&6; }
if test -n "$XWAYLANDMODULES_CFLAGS"; then
pkg_cv_XWAYLANDMODULES_CFLAGS="$XWAYLANDMODULES_CFLAGS"
@@ -31523,7 +31549,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31541,7 +31567,7 @@ fi
have_xwayland=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_xwayland=no
else
@@ -31580,8 +31606,8 @@ $as_echo "#define XWL_HAS_GLAMOR 1" >>confdefs.h
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_EGLSTREAM" >&5
-$as_echo_n "checking for WAYLAND_EGLSTREAM... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wayland-eglstream-protocols >= 1.0.2" >&5
+$as_echo_n "checking for wayland-eglstream-protocols >= 1.0.2... " >&6; }
if test -n "$WAYLAND_EGLSTREAM_CFLAGS"; then
pkg_cv_WAYLAND_EGLSTREAM_CFLAGS="$WAYLAND_EGLSTREAM_CFLAGS"
@@ -31621,7 +31647,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31639,7 +31665,7 @@ fi
have_wl_eglstream=no
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
have_wl_eglstream=no
else
@@ -31724,8 +31750,8 @@ fi
if test "x$WAYLAND_SCANNER" = x; then
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_SCANNER" >&5
-$as_echo_n "checking for WAYLAND_SCANNER... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wayland-scanner" >&5
+$as_echo_n "checking for wayland-scanner... " >&6; }
if test -n "$WAYLAND_SCANNER_CFLAGS"; then
pkg_cv_WAYLAND_SCANNER_CFLAGS="$WAYLAND_SCANNER_CFLAGS"
@@ -31765,7 +31791,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31792,7 +31818,7 @@ Alternatively, you may set the environment variables WAYLAND_SCANNER_CFLAGS
and WAYLAND_SCANNER_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -31819,8 +31845,8 @@ fi
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_SCANNER" >&5
-$as_echo_n "checking for WAYLAND_SCANNER... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wayland-scanner >= 1.14.91" >&5
+$as_echo_n "checking for wayland-scanner >= 1.14.91... " >&6; }
if test -n "$WAYLAND_SCANNER_CFLAGS"; then
pkg_cv_WAYLAND_SCANNER_CFLAGS="$WAYLAND_SCANNER_CFLAGS"
@@ -31860,7 +31886,7 @@ fi
if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -31879,7 +31905,7 @@ fi
SCANNER_ARG='code'
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
SCANNER_ARG='code'
@@ -32372,6 +32398,10 @@ if test -z "${GLX_TRUE}" && test -z "${GLX_FALSE}"; then
as_fn_error $? "conditional \"GLX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HASHTABLE_TRUE}" && test -z "${HASHTABLE_FALSE}"; then
+ as_fn_error $? "conditional \"HASHTABLE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${PRESENT_TRUE}" && test -z "${PRESENT_FALSE}"; then
as_fn_error $? "conditional \"PRESENT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -32961,7 +32991,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xorg-server $as_me 1.20.8, which was
+This file was extended by xorg-server $as_me 1.20.10, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -33027,7 +33057,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-xorg-server config.status 1.20.8
+xorg-server config.status 1.20.10
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/xserver/configure.ac b/xserver/configure.ac
index 298a7aff0..ab67b713a 100644
--- a/xserver/configure.ac
+++ b/xserver/configure.ac
@@ -26,9 +26,9 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.60)
-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_INIT([xorg-server], 1.20.10, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
+RELEASE_DATE="2020-12-01"
+RELEASE_NAME="Chicken Pot Pie"
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -1105,9 +1105,11 @@ if test "x$SCREENSAVER" = xyes; then
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $SCRNSAVERPROTO"
fi
+HASHTABLE=no
AM_CONDITIONAL(RES, [test "x$RES" = xyes])
if test "x$RES" = xyes; then
AC_DEFINE(RES, 1, [Support X resource extension])
+ HASHTABLE=yes
REQUIRED_MODULES="$REQUIRED_MODULES $RESOURCEPROTO"
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $RESOURCEPROTO"
fi
@@ -1291,6 +1293,7 @@ if test "x$GLX" = xyes; then
PKG_CHECK_MODULES([GL], $GLPROTO $LIBGL)
AC_SUBST(XLIB_CFLAGS)
AC_DEFINE(GLXEXT, 1, [Build GLX extension])
+ HASHTABLE=yes
GLX_LIBS='$(top_builddir)/glx/libglx.la $(top_builddir)/glx/libglxvnd.la'
GLX_SYS_LIBS="$GLX_SYS_LIBS $GL_LIBS"
else
@@ -1298,6 +1301,8 @@ else
fi
AM_CONDITIONAL(GLX, test "x$GLX" = xyes)
+AM_CONDITIONAL(HASHTABLE, test "x$HASHTABLE" = xyes)
+
AC_SUBST([GLX_DEFINES])
AC_SUBST([GLX_SYS_LIBS])
diff --git a/xserver/damageext/Makefile.in b/xserver/damageext/Makefile.in
index afe52b09a..cd14ebad7 100644
--- a/xserver/damageext/Makefile.in
+++ b/xserver/damageext/Makefile.in
@@ -471,6 +471,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/dbe/Makefile.in b/xserver/dbe/Makefile.in
index fc49b0ba4..427c099de 100644
--- a/xserver/dbe/Makefile.in
+++ b/xserver/dbe/Makefile.in
@@ -502,6 +502,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/dix/Makefile.in b/xserver/dix/Makefile.in
index ea78d5ff6..07cce38e9 100644
--- a/xserver/dix/Makefile.in
+++ b/xserver/dix/Makefile.in
@@ -517,6 +517,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/doc/Makefile.in b/xserver/doc/Makefile.in
index 858e09eb3..a9ec8852b 100644
--- a/xserver/doc/Makefile.in
+++ b/xserver/doc/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/doc/dtrace/Makefile.in b/xserver/doc/dtrace/Makefile.in
index 3118136f3..b5923c1eb 100644
--- a/xserver/doc/dtrace/Makefile.in
+++ b/xserver/doc/dtrace/Makefile.in
@@ -491,6 +491,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/doc/dtrace/Xserver-DTrace.xml b/xserver/doc/dtrace/Xserver-DTrace.xml
index 91ca254d7..ee594ac7c 100644
--- a/xserver/doc/dtrace/Xserver-DTrace.xml
+++ b/xserver/doc/dtrace/Xserver-DTrace.xml
@@ -15,8 +15,8 @@
</affiliation>
</author>
<releaseinfo>X Server Version &xserver.version;</releaseinfo>
- <copyright><year>2005</year><year>2006</year><year>2007</year><year>2010</year>
- <holder>Oracle and/or its affiliates. All rights reserved.</holder>
+ <copyright><year>2005</year><year>2006</year><year>2007</year><year>2010</year><year>2020</year>
+ <holder>Oracle and/or its affiliates.</holder>
</copyright>
<legalnotice id="copyright">
<para>
@@ -46,9 +46,9 @@ DEALINGS IN THE SOFTWARE.
<title>Introduction</title>
<para>
This page provides details on a
- <ulink url="http://wikis.sun.com/display/DTrace/Statically+Defined+Tracing+for+User+Applications">statically defined user application tracing provider</ulink>
+ <ulink url="http://dtrace.org/guide/chp-usdt.html">statically defined user application tracing provider</ulink>
for the
- <ulink url="http://hub.opensolaris.org/bin/view/Community+Group+dtrace/">DTrace</ulink>
+ <ulink url="http://dtrace.org/blogs/about/">DTrace</ulink>
facility in <productname>Solaris</productname> 10,
<productname>MacOS X</productname> 10.5, and later releases. This
provider instruments various points in the X server, to allow
@@ -235,9 +235,9 @@ DEALINGS IN THE SOFTWARE.
<para>
To access data in arguments of type <type>string</type>, you will need
- to use <ulink url="http://wikis.sun.com/display/DTrace/Actions+and+Subroutines#ActionsandSubroutines-{{copyinstr}}"><function>copyinstr()</function></ulink>.
+ to use <ulink url="http://dtrace.org/guide/chp-actsub.html#chp-actsub-copyinstr"><function>copyinstr()</function></ulink>.
To access data buffers referenced via <type>uintptr_t</type>'s, you will
- need to use <ulink url="http://wikis.sun.com/display/DTrace/Actions+and+Subroutines#ActionsandSubroutines-{{copyin}}"><function>copyin()</function></ulink>.
+ need to use <ulink url="http://dtrace.org/guide/chp-actsub.html#chp-actsub-copyin"><function>copyin()</function></ulink>.
<table id="Probe_Arguments">
<title>Probe Arguments</title>
@@ -286,7 +286,7 @@ DEALINGS IN THE SOFTWARE.
<entry><type>uintptr_t</type></entry>
<entry>Pointer to buffer containing X event - decode using
structures in
- &lt;<ulink url="http://cgit.freedesktop.org/xorg/proto/xproto/tree/Xproto.h"><filename class="headerfile">X11/Xproto.h</filename></ulink>&gt;
+ &lt;<ulink url="https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/master/include/X11/Xproto.h"><filename class="headerfile">X11/Xproto.h</filename></ulink>&gt;
and similar headers for each extension</entry>
</row>
<row>
@@ -325,7 +325,7 @@ DEALINGS IN THE SOFTWARE.
<entry><type>uintptr_t</type></entry>
<entry>Pointer to buffer containing X request - decode using
structures in
- &lt;<ulink url="http://cgit.freedesktop.org/xorg/proto/xproto/tree/Xproto.h"><filename class="headerfile">X11/Xproto.h</filename></ulink>&gt;
+ &lt;<ulink url="https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/master/include/X11/Xproto.h"><filename class="headerfile">X11/Xproto.h</filename></ulink>&gt;
and similar headers for each extension</entry>
</row>
<row>
diff --git a/xserver/dri3/Makefile.in b/xserver/dri3/Makefile.in
index 86cad69bd..2a931ec08 100644
--- a/xserver/dri3/Makefile.in
+++ b/xserver/dri3/Makefile.in
@@ -501,6 +501,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/exa/Makefile.in b/xserver/exa/Makefile.in
index 4b0a93c75..e68485d1c 100644
--- a/xserver/exa/Makefile.in
+++ b/xserver/exa/Makefile.in
@@ -504,6 +504,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/fb/Makefile.in b/xserver/fb/Makefile.in
index b722a17fb..1b5659dc4 100644
--- a/xserver/fb/Makefile.in
+++ b/xserver/fb/Makefile.in
@@ -532,6 +532,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/glamor/Makefile.in b/xserver/glamor/Makefile.in
index 21bdbc6e8..516ec52b0 100644
--- a/xserver/glamor/Makefile.in
+++ b/xserver/glamor/Makefile.in
@@ -535,6 +535,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/glamor/glamor_egl.c b/xserver/glamor/glamor_egl.c
index b77f676da..78c2aaef7 100644
--- a/xserver/glamor/glamor_egl.c
+++ b/xserver/glamor/glamor_egl.c
@@ -350,6 +350,9 @@ glamor_make_pixmap_exportable(PixmapPtr pixmap, Bool modifiers_ok)
*/
glamor_egl_exchange_buffers(pixmap, exported);
+ /* Swap the devKind into the original pixmap, reflecting the bo's stride */
+ screen->ModifyPixmapHeader(pixmap, 0, 0, 0, 0, exported->devKind, NULL);
+
screen->DestroyPixmap(exported);
return TRUE;
diff --git a/xserver/glamor/glamor_rects.c b/xserver/glamor/glamor_rects.c
index 6cbb040c1..ae4fe8bcc 100644
--- a/xserver/glamor/glamor_rects.c
+++ b/xserver/glamor/glamor_rects.c
@@ -27,8 +27,10 @@
static const glamor_facet glamor_facet_polyfillrect_130 = {
.name = "poly_fill_rect",
.version = 130,
- .vs_vars = "attribute vec4 primitive;\n",
- .vs_exec = (" vec2 pos = primitive.zw * vec2(gl_VertexID&1, (gl_VertexID&2)>>1);\n"
+ .source_name = "size",
+ .vs_vars = "attribute vec2 primitive;\n"
+ "attribute vec2 size;\n",
+ .vs_exec = (" vec2 pos = size * vec2(gl_VertexID&1, (gl_VertexID&2)>>1);\n"
GLAMOR_POS(gl_Position, (primitive.xy + pos))),
};
@@ -81,9 +83,14 @@ glamor_poly_fill_rect_gl(DrawablePtr drawable,
glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
glVertexAttribDivisor(GLAMOR_VERTEX_POS, 1);
- glVertexAttribPointer(GLAMOR_VERTEX_POS, 4, GL_SHORT, GL_FALSE,
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_SHORT, GL_FALSE,
4 * sizeof (short), vbo_offset);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glVertexAttribDivisor(GLAMOR_VERTEX_SOURCE, 1);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_UNSIGNED_SHORT, GL_FALSE,
+ 4 * sizeof (short), vbo_offset + 2 * sizeof (short));
+
memcpy(v, prect, nrect * sizeof (xRectangle));
glamor_put_vbo_space(screen);
@@ -156,8 +163,11 @@ glamor_poly_fill_rect_gl(DrawablePtr drawable,
bail:
glDisable(GL_SCISSOR_TEST);
- if (glamor_priv->glsl_version >= 130)
+ if (glamor_priv->glsl_version >= 130) {
+ glVertexAttribDivisor(GLAMOR_VERTEX_SOURCE, 0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
glVertexAttribDivisor(GLAMOR_VERTEX_POS, 0);
+ }
glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
return ret;
diff --git a/xserver/glx/Makefile.am b/xserver/glx/Makefile.am
index 0f652356d..8f19e9dc7 100644
--- a/xserver/glx/Makefile.am
+++ b/xserver/glx/Makefile.am
@@ -81,7 +81,7 @@ libglx_la_SOURCES = \
unpack.h \
xfont.c
-libglx_la_LIBADD = $(DLOPEN_LIBS)
+libglx_la_LIBADD = $(DLOPEN_LIBS) $(top_builddir)/Xext/libhashtable.la
libglxvnd_la_SOURCES = \
vndcmds.c \
@@ -90,4 +90,6 @@ libglxvnd_la_SOURCES = \
vndservervendor.h \
vndservervendor.c
+libglxvnd_la_LIBADD = $(top_builddir)/Xext/libhashtable.la
+
EXTRA_DIST = vnd_dispatch_stubs.c
diff --git a/xserver/glx/Makefile.in b/xserver/glx/Makefile.in
index f055567fb..f007cdeca 100644
--- a/xserver/glx/Makefile.in
+++ b/xserver/glx/Makefile.in
@@ -76,7 +76,8 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
-libglx_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+libglx_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(top_builddir)/Xext/libhashtable.la
am__objects_1 = indirect_dispatch.lo indirect_dispatch_swap.lo \
indirect_reqsize.lo indirect_size_get.lo indirect_table.lo
am_libglx_la_OBJECTS = $(am__objects_1) clientinfo.lo createcontext.lo \
@@ -97,7 +98,7 @@ am__libglxdri_la_SOURCES_DIST = glxdri2.c
am_libglxdri_la_OBJECTS = $(am__objects_2)
libglxdri_la_OBJECTS = $(am_libglxdri_la_OBJECTS)
@DRI2_TRUE@am_libglxdri_la_rpath =
-libglxvnd_la_LIBADD =
+libglxvnd_la_DEPENDENCIES = $(top_builddir)/Xext/libhashtable.la
am_libglxvnd_la_OBJECTS = vndcmds.lo vndext.lo vndservermapping.lo \
vndservervendor.lo
libglxvnd_la_OBJECTS = $(am_libglxvnd_la_OBJECTS)
@@ -523,6 +524,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
@@ -607,7 +609,7 @@ libglx_la_SOURCES = \
unpack.h \
xfont.c
-libglx_la_LIBADD = $(DLOPEN_LIBS)
+libglx_la_LIBADD = $(DLOPEN_LIBS) $(top_builddir)/Xext/libhashtable.la
libglxvnd_la_SOURCES = \
vndcmds.c \
vndext.c \
@@ -615,6 +617,7 @@ libglxvnd_la_SOURCES = \
vndservervendor.h \
vndservervendor.c
+libglxvnd_la_LIBADD = $(top_builddir)/Xext/libhashtable.la
EXTRA_DIST = vnd_dispatch_stubs.c
all: all-am
diff --git a/xserver/hw/Makefile.in b/xserver/hw/Makefile.in
index 046b18253..717d4062b 100644
--- a/xserver/hw/Makefile.in
+++ b/xserver/hw/Makefile.in
@@ -476,6 +476,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/Makefile.in b/xserver/hw/dmx/Makefile.in
index 4ad111e93..8b1a70150 100644
--- a/xserver/hw/dmx/Makefile.in
+++ b/xserver/hw/dmx/Makefile.in
@@ -545,6 +545,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/config/Makefile.in b/xserver/hw/dmx/config/Makefile.in
index edc32741e..a8d5e6a24 100644
--- a/xserver/hw/dmx/config/Makefile.in
+++ b/xserver/hw/dmx/config/Makefile.in
@@ -553,6 +553,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/config/man/Makefile.in b/xserver/hw/dmx/config/man/Makefile.in
index f6d84fe50..edcf1015e 100644
--- a/xserver/hw/dmx/config/man/Makefile.in
+++ b/xserver/hw/dmx/config/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/doc/Makefile.in b/xserver/hw/dmx/doc/Makefile.in
index ca047fe50..bf89745d0 100644
--- a/xserver/hw/dmx/doc/Makefile.in
+++ b/xserver/hw/dmx/doc/Makefile.in
@@ -481,6 +481,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/doxygen/Makefile.in b/xserver/hw/dmx/doxygen/Makefile.in
index d84238aaf..e065f1041 100644
--- a/xserver/hw/dmx/doxygen/Makefile.in
+++ b/xserver/hw/dmx/doxygen/Makefile.in
@@ -462,6 +462,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/examples/Makefile.in b/xserver/hw/dmx/examples/Makefile.in
index 3311b00fb..35dd69ccd 100644
--- a/xserver/hw/dmx/examples/Makefile.in
+++ b/xserver/hw/dmx/examples/Makefile.in
@@ -576,6 +576,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/glxProxy/Makefile.in b/xserver/hw/dmx/glxProxy/Makefile.in
index 54cc24f03..07e0656b6 100644
--- a/xserver/hw/dmx/glxProxy/Makefile.in
+++ b/xserver/hw/dmx/glxProxy/Makefile.in
@@ -482,6 +482,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/input/Makefile.in b/xserver/hw/dmx/input/Makefile.in
index a1b4449a9..7ef27c1bf 100644
--- a/xserver/hw/dmx/input/Makefile.in
+++ b/xserver/hw/dmx/input/Makefile.in
@@ -494,6 +494,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/man/Makefile.in b/xserver/hw/dmx/man/Makefile.in
index 05ea05f19..d1119230f 100644
--- a/xserver/hw/dmx/man/Makefile.in
+++ b/xserver/hw/dmx/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/dmx/man/Xdmx.man b/xserver/hw/dmx/man/Xdmx.man
index ef62a02f5..2ca9fb59f 100644
--- a/xserver/hw/dmx/man/Xdmx.man
+++ b/xserver/hw/dmx/man/Xdmx.man
@@ -729,4 +729,4 @@ Portions of
are based on code from The XFree86 Project
.RI ( http://www.xfree86.org )
and X.Org
-.RI ( http://www.x.org ).
+.RI ( https://www.x.org ).
diff --git a/xserver/hw/kdrive/Makefile.in b/xserver/hw/kdrive/Makefile.in
index 215a61770..b0a4585a6 100644
--- a/xserver/hw/kdrive/Makefile.in
+++ b/xserver/hw/kdrive/Makefile.in
@@ -476,6 +476,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/kdrive/ephyr/Makefile.in b/xserver/hw/kdrive/ephyr/Makefile.in
index 212b68d3b..a39cd574b 100644
--- a/xserver/hw/kdrive/ephyr/Makefile.in
+++ b/xserver/hw/kdrive/ephyr/Makefile.in
@@ -546,6 +546,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/kdrive/ephyr/man/Makefile.in b/xserver/hw/kdrive/ephyr/man/Makefile.in
index 783ae4dd5..ba2ea867a 100644
--- a/xserver/hw/kdrive/ephyr/man/Makefile.in
+++ b/xserver/hw/kdrive/ephyr/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/kdrive/src/Makefile.in b/xserver/hw/kdrive/src/Makefile.in
index 1698d96fc..595d225dd 100644
--- a/xserver/hw/kdrive/src/Makefile.in
+++ b/xserver/hw/kdrive/src/Makefile.in
@@ -478,6 +478,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/vfb/Makefile.in b/xserver/hw/vfb/Makefile.in
index 1197f32cb..204b1ee41 100644
--- a/xserver/hw/vfb/Makefile.in
+++ b/xserver/hw/vfb/Makefile.in
@@ -523,6 +523,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/vfb/man/Makefile.in b/xserver/hw/vfb/man/Makefile.in
index c91d250a4..0cf74a1d1 100644
--- a/xserver/hw/vfb/man/Makefile.in
+++ b/xserver/hw/vfb/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/Makefile.in b/xserver/hw/xfree86/Makefile.in
index 2f9e20d7b..ac7e28c82 100644
--- a/xserver/hw/xfree86/Makefile.in
+++ b/xserver/hw/xfree86/Makefile.in
@@ -528,6 +528,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/common/Makefile.in b/xserver/hw/xfree86/common/Makefile.in
index 08aeea9d0..b7ae230d6 100644
--- a/xserver/hw/xfree86/common/Makefile.in
+++ b/xserver/hw/xfree86/common/Makefile.in
@@ -535,6 +535,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/ddc/Makefile.in b/xserver/hw/xfree86/ddc/Makefile.in
index 404505db4..0313080c4 100644
--- a/xserver/hw/xfree86/ddc/Makefile.in
+++ b/xserver/hw/xfree86/ddc/Makefile.in
@@ -502,6 +502,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/ddc/edid.h b/xserver/hw/xfree86/ddc/edid.h
index 750e4270b..b884d8212 100644
--- a/xserver/hw/xfree86/ddc/edid.h
+++ b/xserver/hw/xfree86/ddc/edid.h
@@ -262,6 +262,10 @@
#define MAX_H (_MAX_H(c) + _MAX_H_OFFSET(c))
#define _MAX_CLOCK(x) x[9]
#define MAX_CLOCK _MAX_CLOCK(c)
+#define _DEFAULT_GTF(x) (x[10] == 0x00)
+#define DEFAULT_GTF _DEFAULT_GTF(c)
+#define _RANGE_LIMITS_ONLY(x) (x[10] == 0x01)
+#define RANGE_LIMITS_ONLY _RANGE_LIMITS_ONLY(c)
#define _HAVE_2ND_GTF(x) (x[10] == 0x02)
#define HAVE_2ND_GTF _HAVE_2ND_GTF(c)
#define _F_2ND_GTF(x) (x[12] * 2)
@@ -477,6 +481,16 @@ struct detailed_timings {
#define DS_VENDOR 0x101
#define DS_VENDOR_MAX 0x110
+/*
+ * Display range limit Descriptor of EDID version1, reversion 4
+ */
+typedef enum {
+ DR_DEFAULT_GTF,
+ DR_LIMITS_ONLY,
+ DR_SECONDARY_GTF,
+ DR_CVT_SUPPORTED = 4,
+} DR_timing_flags;
+
struct monitor_ranges {
int min_v;
int max_v;
@@ -495,6 +509,7 @@ struct monitor_ranges {
char supported_blanking;
char supported_scaling;
int preferred_refresh; /* in hz */
+ DR_timing_flags display_range_timing_flags;
};
struct whitePoints {
@@ -524,7 +539,7 @@ struct detailed_monitor_section {
Uchar serial[13];
Uchar ascii_data[13];
Uchar name[13];
- struct monitor_ranges ranges; /* 56 */
+ struct monitor_ranges ranges; /* 60 */
struct std_timings std_t[5]; /* 80 */
struct whitePoints wp[2]; /* 32 */
/* color management data */
diff --git a/xserver/hw/xfree86/ddc/interpret_edid.c b/xserver/hw/xfree86/ddc/interpret_edid.c
index 17a8f81c0..19630471c 100644
--- a/xserver/hw/xfree86/ddc/interpret_edid.c
+++ b/xserver/hw/xfree86/ddc/interpret_edid.c
@@ -672,6 +672,9 @@ get_monitor_ranges(Uchar * c, struct monitor_ranges *r)
r->max_clock = 0;
if (MAX_CLOCK != 0xff) /* is specified? */
r->max_clock = MAX_CLOCK * 10 + 5;
+
+ r->display_range_timing_flags = c[10];
+
if (HAVE_2ND_GTF) {
r->gtf_2nd_f = F_2ND_GTF;
r->gtf_2nd_c = C_2ND_GTF;
@@ -751,6 +754,30 @@ validate_version(int scrnIndex, struct edid_version *r)
return TRUE;
}
+Bool
+gtf_supported(xf86MonPtr mon)
+{
+ int i;
+
+ if (!mon)
+ return FALSE;
+
+ if ((mon->ver.version == 1) && (mon->ver.revision < 4)) {
+ if (mon->features.msc & 0x1)
+ return TRUE;
+ } else {
+ for (i = 0; i < DET_TIMINGS; i++) {
+ struct detailed_monitor_section *det_timing_des = &(mon->det_mon[i]);
+ if (det_timing_des && (det_timing_des->type == DS_RANGES) &&
+ (det_timing_des->section.ranges.display_range_timing_flags == DR_DEFAULT_GTF
+ || det_timing_des->section.ranges.display_range_timing_flags == DR_SECONDARY_GTF))
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
/*
* Returns true if HDMI, false if definitely not or unknown.
*/
diff --git a/xserver/hw/xfree86/ddc/xf86DDC.h b/xserver/hw/xfree86/ddc/xf86DDC.h
index 7d81ab911..6eb2f0ba2 100644
--- a/xserver/hw/xfree86/ddc/xf86DDC.h
+++ b/xserver/hw/xfree86/ddc/xf86DDC.h
@@ -48,6 +48,9 @@ extern _X_EXPORT Bool xf86SetDDCproperties(ScrnInfoPtr pScreen, xf86MonPtr DDC);
extern _X_EXPORT Bool
xf86MonitorIsHDMI(xf86MonPtr mon);
+extern _X_EXPORT Bool
+gtf_supported(xf86MonPtr mon);
+
extern _X_EXPORT DisplayModePtr
FindDMTMode(int hsize, int vsize, int refresh, Bool rb);
diff --git a/xserver/hw/xfree86/dixmods/Makefile.in b/xserver/hw/xfree86/dixmods/Makefile.in
index 151dc7312..9c2f290aa 100644
--- a/xserver/hw/xfree86/dixmods/Makefile.in
+++ b/xserver/hw/xfree86/dixmods/Makefile.in
@@ -542,6 +542,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/doc/Makefile.in b/xserver/hw/xfree86/doc/Makefile.in
index 9dd621cda..8a330179e 100644
--- a/xserver/hw/xfree86/doc/Makefile.in
+++ b/xserver/hw/xfree86/doc/Makefile.in
@@ -460,6 +460,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/dri/Makefile.in b/xserver/hw/xfree86/dri/Makefile.in
index 4a1f66e84..f328e6871 100644
--- a/xserver/hw/xfree86/dri/Makefile.in
+++ b/xserver/hw/xfree86/dri/Makefile.in
@@ -501,6 +501,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/dri2/Makefile.in b/xserver/hw/xfree86/dri2/Makefile.in
index 7c8052de3..34eedfcaa 100644
--- a/xserver/hw/xfree86/dri2/Makefile.in
+++ b/xserver/hw/xfree86/dri2/Makefile.in
@@ -539,6 +539,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/dri2/pci_ids/Makefile.in b/xserver/hw/xfree86/dri2/pci_ids/Makefile.in
index 3e19f7a56..e4aa7ca71 100644
--- a/xserver/hw/xfree86/dri2/pci_ids/Makefile.in
+++ b/xserver/hw/xfree86/dri2/pci_ids/Makefile.in
@@ -437,6 +437,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/drivers/Makefile.in b/xserver/hw/xfree86/drivers/Makefile.in
index 3bb4abea7..5070fce6e 100644
--- a/xserver/hw/xfree86/drivers/Makefile.in
+++ b/xserver/hw/xfree86/drivers/Makefile.in
@@ -478,6 +478,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/drivers/modesetting/Makefile.in b/xserver/hw/xfree86/drivers/modesetting/Makefile.in
index 54f1779dc..aaa95a521 100644
--- a/xserver/hw/xfree86/drivers/modesetting/Makefile.in
+++ b/xserver/hw/xfree86/drivers/modesetting/Makefile.in
@@ -566,6 +566,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/drivers/modesetting/dri2.c b/xserver/hw/xfree86/drivers/modesetting/dri2.c
index 167814015..c0799896c 100644
--- a/xserver/hw/xfree86/drivers/modesetting/dri2.c
+++ b/xserver/hw/xfree86/drivers/modesetting/dri2.c
@@ -586,6 +586,7 @@ can_flip(ScrnInfoPtr scrn, DrawablePtr draw,
return draw->type == DRAWABLE_WINDOW &&
ms->drmmode.pageflip &&
+ !ms->drmmode.sprites_visible &&
!ms->drmmode.present_flipping &&
scrn->vtSema &&
DRI2CanFlip(draw) && can_exchange(scrn, draw, front, back);
diff --git a/xserver/hw/xfree86/drivers/modesetting/driver.c b/xserver/hw/xfree86/drivers/modesetting/driver.c
index d37c0d282..f11f44d5e 100644
--- a/xserver/hw/xfree86/drivers/modesetting/driver.c
+++ b/xserver/hw/xfree86/drivers/modesetting/driver.c
@@ -41,6 +41,7 @@
#include "compiler.h"
#include "xf86Pci.h"
#include "mipointer.h"
+#include "mipointrst.h"
#include "micmap.h"
#include <X11/extensions/randr.h>
#include "fb.h"
@@ -710,7 +711,7 @@ msBlockHandler_oneshot(ScreenPtr pScreen, void *pTimeout)
msBlockHandler(pScreen, pTimeout);
- drmmode_set_desired_modes(pScrn, &ms->drmmode, TRUE);
+ drmmode_set_desired_modes(pScrn, &ms->drmmode, TRUE, FALSE);
}
static void
@@ -1353,7 +1354,7 @@ CreateScreenResources(ScreenPtr pScreen)
ret = pScreen->CreateScreenResources(pScreen);
pScreen->CreateScreenResources = CreateScreenResources;
- if (!drmmode_set_desired_modes(pScrn, &ms->drmmode, pScrn->is_gpu))
+ if (!drmmode_set_desired_modes(pScrn, &ms->drmmode, pScrn->is_gpu, FALSE))
return FALSE;
if (!drmmode_glamor_handle_new_screen_pixmap(&ms->drmmode))
@@ -1662,6 +1663,21 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
xf86SetSilkenMouse(pScreen);
miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
+ /* If pageflip is enabled hook the screen's cursor-sprite (swcursor) funcs.
+ * So that we can disabe page-flipping on fallback to a swcursor. */
+ if (ms->drmmode.pageflip) {
+ miPointerScreenPtr PointPriv =
+ dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
+
+ if (!dixRegisterScreenPrivateKey(&ms->drmmode.spritePrivateKeyRec,
+ pScreen, PRIVATE_DEVICE,
+ sizeof(msSpritePrivRec)))
+ return FALSE;
+
+ ms->SpriteFuncs = PointPriv->spriteFuncs;
+ PointPriv->spriteFuncs = &drmmode_sprite_funcs;
+ }
+
/* Need to extend HWcursor support to handle mask interleave */
if (!ms->drmmode.sw_cursor)
xf86_cursors_init(pScreen, ms->cursor_width, ms->cursor_height,
@@ -1810,8 +1826,25 @@ EnterVT(ScrnInfoPtr pScrn)
SetMaster(pScrn);
- if (!drmmode_set_desired_modes(pScrn, &ms->drmmode, TRUE))
- return FALSE;
+ drmmode_update_kms_state(&ms->drmmode);
+
+ /* allow not all modes to be set successfully since some events might have
+ * happened while not being master that could prevent the previous
+ * configuration from being re-applied.
+ */
+ if (!drmmode_set_desired_modes(pScrn, &ms->drmmode, TRUE, TRUE)) {
+ xf86DisableUnusedFunctions(pScrn);
+
+ /* TODO: check that at least one screen is on, to allow the user to fix
+ * their setup if all modeset failed...
+ */
+
+ /* Tell the desktop environment that something changed, so that they
+ * can hopefully correct the situation
+ */
+ RRSetChanged(xf86ScrnToScreen(pScrn));
+ RRTellChanged(xf86ScrnToScreen(pScrn));
+ }
return TRUE;
}
@@ -1858,6 +1891,14 @@ CloseScreen(ScreenPtr pScreen)
drmmode_free_bos(pScrn, &ms->drmmode);
+ if (ms->drmmode.pageflip) {
+ miPointerScreenPtr PointPriv =
+ dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
+
+ if (PointPriv->spriteFuncs == &drmmode_sprite_funcs)
+ PointPriv->spriteFuncs = ms->SpriteFuncs;
+ }
+
if (pScrn->vtSema) {
LeaveVT(pScrn);
}
diff --git a/xserver/hw/xfree86/drivers/modesetting/driver.h b/xserver/hw/xfree86/drivers/modesetting/driver.h
index 8bfb2fc1a..f2e7889db 100644
--- a/xserver/hw/xfree86/drivers/modesetting/driver.h
+++ b/xserver/hw/xfree86/drivers/modesetting/driver.h
@@ -97,6 +97,7 @@ typedef struct _modesettingRec {
CreateScreenResourcesProcPtr createScreenResources;
ScreenBlockHandlerProcPtr BlockHandler;
+ miPointerSpriteFuncPtr SpriteFuncs;
void *driver;
drmmode_rec drmmode;
diff --git a/xserver/hw/xfree86/drivers/modesetting/drmmode_display.c b/xserver/hw/xfree86/drivers/modesetting/drmmode_display.c
index 9a960e3c6..492f2238d 100644
--- a/xserver/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/xserver/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -37,6 +37,7 @@
#endif
#include <unistd.h>
#include "dumb_bo.h"
+#include "inputstr.h"
#include "xf86str.h"
#include "X11/Xatom.h"
#include "mi.h"
@@ -2441,7 +2442,7 @@ drmmode_output_add_gtf_modes(xf86OutputPtr output, DisplayModePtr Modes)
int max_x = 0, max_y = 0;
float max_vrefresh = 0.0;
- if (mon && GTF_SUPPORTED(mon->features.msc))
+ if (mon && gtf_supported(mon))
return Modes;
if (!has_panel_fitter(output))
@@ -2601,8 +2602,6 @@ drmmode_property_ignore(drmModePropertyPtr prop)
return FALSE;
}
-static Atom backlight_atom;
-
static void
drmmode_output_create_resources(xf86OutputPtr output)
{
@@ -2722,9 +2721,6 @@ drmmode_output_create_resources(xf86OutputPtr output)
}
}
}
-
- backlight_atom = MakeAtom(RR_PROPERTY_BACKLIGHT,
- strlen(RR_PROPERTY_BACKLIGHT), FALSE);
}
static Bool
@@ -2784,48 +2780,7 @@ drmmode_output_set_property(xf86OutputPtr output, Atom property,
static Bool
drmmode_output_get_property(xf86OutputPtr output, Atom property)
{
- drmmode_output_private_ptr drmmode_output = output->driver_private;
- drmmode_ptr drmmode = drmmode_output->drmmode;
- drmModeObjectPropertiesPtr props;
- int i;
-
- if (property != backlight_atom)
- return TRUE;
-
- props = drmModeObjectGetProperties(drmmode->fd, drmmode_output->output_id,
- DRM_MODE_OBJECT_CONNECTOR);
- if (!props)
- return FALSE;
-
- for (i = 0; i < drmmode_output->num_props; i++) {
- drmmode_prop_ptr p = &drmmode_output->props[i];
- int j;
-
- if (p->atoms[0] != property)
- continue;
-
- for (j = 0; j < props->count_props; j++) {
- if (props->props[j] == p->mode_prop->prop_id) {
- INT32 value;
- int err;
-
- value = p->value = props->prop_values[j];
- err = RRChangeOutputProperty(output->randr_output, p->atoms[0],
- XA_INTEGER, 32, PropModeReplace, 1,
- &value, FALSE, TRUE);
- if (err != 0) {
- xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
- "RRChangeOutputProperty error, %d\n", err);
- }
-
- drmModeFreeObjectProperties(props);
- return TRUE;
- }
- }
- }
-
- drmModeFreeObjectProperties(props);
- return FALSE;
+ return TRUE;
}
static const xf86OutputFuncsRec drmmode_output_funcs = {
@@ -3254,10 +3209,10 @@ drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
crtc->rotation, crtc->x, crtc->y);
}
- if (old_fb_id) {
+ if (old_fb_id)
drmModeRmFB(drmmode->fd, old_fb_id);
- drmmode_bo_destroy(drmmode, &old_front);
- }
+
+ drmmode_bo_destroy(drmmode, &old_front);
return TRUE;
@@ -3505,9 +3460,11 @@ drmmode_adjust_frame(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int x, int y)
}
Bool
-drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, Bool set_hw)
+drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, Bool set_hw,
+ Bool ign_err)
{
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
+ Bool success = TRUE;
int c;
for (c = 0; c < config->num_crtc; c++) {
@@ -3555,8 +3512,17 @@ drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, Bool set_hw)
if (set_hw) {
if (!crtc->funcs->
set_mode_major(crtc, &crtc->desiredMode, crtc->desiredRotation,
- crtc->desiredX, crtc->desiredY))
- return FALSE;
+ crtc->desiredX, crtc->desiredY)) {
+ if (!ign_err)
+ return FALSE;
+ else {
+ success = FALSE;
+ crtc->enabled = FALSE;
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Failed to set the desired mode on connector %s\n",
+ output->name);
+ }
+ }
} else {
crtc->mode = crtc->desiredMode;
crtc->rotation = crtc->desiredRotation;
@@ -3570,7 +3536,7 @@ drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, Bool set_hw)
/* Validate leases on VT re-entry */
drmmode_validate_leases(pScrn);
- return TRUE;
+ return success;
}
static void
@@ -3655,39 +3621,19 @@ drmmode_setup_colormap(ScreenPtr pScreen, ScrnInfoPtr pScrn)
return TRUE;
}
-#if defined(CONFIG_UDEV_KMS) || defined(CONFIG_KEVENT_KMS)
-
#define DRM_MODE_LINK_STATUS_GOOD 0
#define DRM_MODE_LINK_STATUS_BAD 1
-static void
-drmmode_handle_uevents(int fd, void *closure)
+void
+drmmode_update_kms_state(drmmode_ptr drmmode)
{
- drmmode_ptr drmmode = closure;
ScrnInfoPtr scrn = drmmode->scrn;
-#ifdef CONFIG_UDEV_KMS
- struct udev_device *dev;
-#endif
drmModeResPtr mode_res;
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
int i, j;
Bool found = FALSE;
Bool changed = FALSE;
-#ifdef CONFIG_UDEV_KMS
- while ((dev = udev_monitor_receive_device(drmmode->uevent_monitor))) {
- udev_device_unref(dev);
- found = TRUE;
- }
-#else
- struct kevent ev;
- if ((kevent(fd, NULL, 0, &ev, 1, NULL)) && ev.fflags & NOTE_CHANGE)
- found = TRUE;
-#endif
-
- if (!found)
- return;
-
/* Try to re-set the mode on all the connectors with a BAD link-state:
* This may happen if a link degrades and a new modeset is necessary, using
* different link-training parameters. If the kernel found that the current
@@ -3802,6 +3748,32 @@ out:
#undef DRM_MODE_LINK_STATUS_BAD
#undef DRM_MODE_LINK_STATUS_GOOD
+#if defined(CONFIG_UDEV_KMS) || defined(CONFIG_KEVENT_KMS)
+
+static void
+drmmode_handle_uevents(int fd, void *closure)
+{
+ drmmode_ptr drmmode = closure;
+ struct udev_device *dev;
+ Bool found = FALSE;
+
+#ifdef CONFIG_UDEV_KMS
+ while ((dev = udev_monitor_receive_device(drmmode->uevent_monitor))) {
+ udev_device_unref(dev);
+ found = TRUE;
+ }
+#else
+ struct kevent ev;
+ if ((kevent(fd, NULL, 0, &ev, 1, NULL)) && ev.fflags & NOTE_CHANGE)
+ found = TRUE;
+#endif
+
+ if (!found)
+ return;
+
+ drmmode_update_kms_state(drmmode);
+}
+
#endif
void
@@ -4021,3 +3993,102 @@ drmmode_get_default_bpp(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int *depth,
drmModeFreeResources(mode_res);
return;
}
+
+/*
+ * We hook the screen's cursor-sprite (swcursor) functions to see if a swcursor
+ * is active. When a swcursor is active we disabe page-flipping.
+ */
+
+static void drmmode_sprite_do_set_cursor(msSpritePrivPtr sprite_priv,
+ ScrnInfoPtr scrn, int x, int y)
+{
+ modesettingPtr ms = modesettingPTR(scrn);
+ CursorPtr cursor = sprite_priv->cursor;
+ Bool sprite_visible = sprite_priv->sprite_visible;
+
+ if (cursor) {
+ x -= cursor->bits->xhot;
+ y -= cursor->bits->yhot;
+
+ sprite_priv->sprite_visible =
+ x < scrn->virtualX && y < scrn->virtualY &&
+ (x + cursor->bits->width > 0) &&
+ (y + cursor->bits->height > 0);
+ } else {
+ sprite_priv->sprite_visible = FALSE;
+ }
+
+ ms->drmmode.sprites_visible += sprite_priv->sprite_visible - sprite_visible;
+}
+
+static void drmmode_sprite_set_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+ CursorPtr pCursor, int x, int y)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+ msSpritePrivPtr sprite_priv = msGetSpritePriv(pDev, ms, pScreen);
+
+ sprite_priv->cursor = pCursor;
+ drmmode_sprite_do_set_cursor(sprite_priv, scrn, x, y);
+
+ ms->SpriteFuncs->SetCursor(pDev, pScreen, pCursor, x, y);
+}
+
+static void drmmode_sprite_move_cursor(DeviceIntPtr pDev, ScreenPtr pScreen,
+ int x, int y)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+ msSpritePrivPtr sprite_priv = msGetSpritePriv(pDev, ms, pScreen);
+
+ drmmode_sprite_do_set_cursor(sprite_priv, scrn, x, y);
+
+ ms->SpriteFuncs->MoveCursor(pDev, pScreen, x, y);
+}
+
+static Bool drmmode_sprite_realize_realize_cursor(DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCursor)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+
+ return ms->SpriteFuncs->RealizeCursor(pDev, pScreen, pCursor);
+}
+
+static Bool drmmode_sprite_realize_unrealize_cursor(DeviceIntPtr pDev,
+ ScreenPtr pScreen,
+ CursorPtr pCursor)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+
+ return ms->SpriteFuncs->UnrealizeCursor(pDev, pScreen, pCursor);
+}
+
+static Bool drmmode_sprite_device_cursor_initialize(DeviceIntPtr pDev,
+ ScreenPtr pScreen)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+
+ return ms->SpriteFuncs->DeviceCursorInitialize(pDev, pScreen);
+}
+
+static void drmmode_sprite_device_cursor_cleanup(DeviceIntPtr pDev,
+ ScreenPtr pScreen)
+{
+ ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+ modesettingPtr ms = modesettingPTR(scrn);
+
+ ms->SpriteFuncs->DeviceCursorCleanup(pDev, pScreen);
+}
+
+miPointerSpriteFuncRec drmmode_sprite_funcs = {
+ .RealizeCursor = drmmode_sprite_realize_realize_cursor,
+ .UnrealizeCursor = drmmode_sprite_realize_unrealize_cursor,
+ .SetCursor = drmmode_sprite_set_cursor,
+ .MoveCursor = drmmode_sprite_move_cursor,
+ .DeviceCursorInitialize = drmmode_sprite_device_cursor_initialize,
+ .DeviceCursorCleanup = drmmode_sprite_device_cursor_cleanup,
+};
diff --git a/xserver/hw/xfree86/drivers/modesetting/drmmode_display.h b/xserver/hw/xfree86/drivers/modesetting/drmmode_display.h
index 7a5e98431..73d97193c 100644
--- a/xserver/hw/xfree86/drivers/modesetting/drmmode_display.h
+++ b/xserver/hw/xfree86/drivers/modesetting/drmmode_display.h
@@ -114,6 +114,9 @@ typedef struct {
void *shadow_fb2;
DevPrivateKeyRec pixmapPrivateKeyRec;
+ DevScreenPrivateKeyRec spritePrivateKeyRec;
+ /* Number of SW cursors currently visible on this screen */
+ int sprites_visible;
Bool reverse_prime_offload_mode;
@@ -245,6 +248,15 @@ extern DevPrivateKeyRec msPixmapPrivateKeyRec;
#define msGetPixmapPriv(drmmode, p) ((msPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, &(drmmode)->pixmapPrivateKeyRec))
+typedef struct _msSpritePriv {
+ CursorPtr cursor;
+ Bool sprite_visible;
+} msSpritePrivRec, *msSpritePrivPtr;
+
+#define msGetSpritePriv(dev, ms, screen) dixLookupScreenPrivate(&(dev)->devPrivates, &(ms)->drmmode.spritePrivateKeyRec, screen)
+
+extern miPointerSpriteFuncRec drmmode_sprite_funcs;
+
Bool drmmode_is_format_supported(ScrnInfoPtr scrn, uint32_t format,
uint64_t modifier);
int drmmode_bo_import(drmmode_ptr drmmode, drmmode_bo *bo,
@@ -269,9 +281,11 @@ void drmmode_DisableSharedPixmapFlipping(xf86CrtcPtr crtc, drmmode_ptr drmmode);
extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp);
extern Bool drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode);
void drmmode_adjust_frame(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int x, int y);
-extern Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode, Bool set_hw);
+extern Bool drmmode_set_desired_modes(ScrnInfoPtr pScrn, drmmode_ptr drmmode,
+ Bool set_hw, Bool ign_err);
extern Bool drmmode_setup_colormap(ScreenPtr pScreen, ScrnInfoPtr pScrn);
+extern void drmmode_update_kms_state(drmmode_ptr drmmode);
extern void drmmode_uevent_init(ScrnInfoPtr scrn, drmmode_ptr drmmode);
extern void drmmode_uevent_fini(ScrnInfoPtr scrn, drmmode_ptr drmmode);
diff --git a/xserver/hw/xfree86/drivers/modesetting/present.c b/xserver/hw/xfree86/drivers/modesetting/present.c
index ab79fe778..009a0790c 100644
--- a/xserver/hw/xfree86/drivers/modesetting/present.c
+++ b/xserver/hw/xfree86/drivers/modesetting/present.c
@@ -208,13 +208,17 @@ ms_present_flip_abort(modesettingPtr ms, void *data)
/*
* Test to see if page flipping is possible on the target crtc
+ *
+ * We ignore sw-cursors when *disabling* flipping, we may very well be
+ * returning to scanning out the normal framebuffer *because* we just
+ * switched to sw-cursor mode and check_flip just failed because of that.
*/
static Bool
-ms_present_check_flip(RRCrtcPtr crtc,
- WindowPtr window,
- PixmapPtr pixmap,
- Bool sync_flip,
- PresentFlipReason *reason)
+ms_present_check_unflip(RRCrtcPtr crtc,
+ WindowPtr window,
+ PixmapPtr pixmap,
+ Bool sync_flip,
+ PresentFlipReason *reason)
{
ScreenPtr screen = window->drawable.pScreen;
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
@@ -281,6 +285,23 @@ ms_present_check_flip(RRCrtcPtr crtc,
return TRUE;
}
+static Bool
+ms_present_check_flip(RRCrtcPtr crtc,
+ WindowPtr window,
+ PixmapPtr pixmap,
+ Bool sync_flip,
+ PresentFlipReason *reason)
+{
+ ScreenPtr screen = window->drawable.pScreen;
+ ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ modesettingPtr ms = modesettingPTR(scrn);
+
+ if (ms->drmmode.sprites_visible > 0)
+ return FALSE;
+
+ return ms_present_check_unflip(crtc, window, pixmap, sync_flip, reason);
+}
+
/*
* Queue a flip on 'crtc' to 'pixmap' at 'target_msc'. If 'sync_flip' is true,
* then wait for vblank. Otherwise, flip immediately
@@ -343,7 +364,7 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id)
event->event_id = event_id;
event->unflip = TRUE;
- if (ms_present_check_flip(NULL, screen->root, pixmap, TRUE, NULL) &&
+ if (ms_present_check_unflip(NULL, screen->root, pixmap, TRUE, NULL) &&
ms_do_pageflip(screen, pixmap, event, -1, FALSE,
ms_present_flip_handler, ms_present_flip_abort)) {
return;
diff --git a/xserver/hw/xfree86/exa/Makefile.in b/xserver/hw/xfree86/exa/Makefile.in
index b3ce5f0ad..4d193005a 100644
--- a/xserver/hw/xfree86/exa/Makefile.in
+++ b/xserver/hw/xfree86/exa/Makefile.in
@@ -541,6 +541,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/exa/man/Makefile.in b/xserver/hw/xfree86/exa/man/Makefile.in
index de4f13fc7..17a157177 100644
--- a/xserver/hw/xfree86/exa/man/Makefile.in
+++ b/xserver/hw/xfree86/exa/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/fbdevhw/Makefile.in b/xserver/hw/xfree86/fbdevhw/Makefile.in
index 8007e59dc..7bf93bcfd 100644
--- a/xserver/hw/xfree86/fbdevhw/Makefile.in
+++ b/xserver/hw/xfree86/fbdevhw/Makefile.in
@@ -544,6 +544,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/fbdevhw/man/Makefile.in b/xserver/hw/xfree86/fbdevhw/man/Makefile.in
index ef00c72ff..477ebe4b9 100644
--- a/xserver/hw/xfree86/fbdevhw/man/Makefile.in
+++ b/xserver/hw/xfree86/fbdevhw/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/glamor_egl/Makefile.in b/xserver/hw/xfree86/glamor_egl/Makefile.in
index 60e042a11..0970934e1 100644
--- a/xserver/hw/xfree86/glamor_egl/Makefile.in
+++ b/xserver/hw/xfree86/glamor_egl/Makefile.in
@@ -525,6 +525,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/i2c/Makefile.in b/xserver/hw/xfree86/i2c/Makefile.in
index ac8d770d8..ae65037a6 100644
--- a/xserver/hw/xfree86/i2c/Makefile.in
+++ b/xserver/hw/xfree86/i2c/Makefile.in
@@ -501,6 +501,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/int10/Makefile.in b/xserver/hw/xfree86/int10/Makefile.in
index 9c16c6e70..68510eb10 100644
--- a/xserver/hw/xfree86/int10/Makefile.in
+++ b/xserver/hw/xfree86/int10/Makefile.in
@@ -520,6 +520,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/loader/Makefile.in b/xserver/hw/xfree86/loader/Makefile.in
index f572bb976..8e725fe46 100644
--- a/xserver/hw/xfree86/loader/Makefile.in
+++ b/xserver/hw/xfree86/loader/Makefile.in
@@ -472,6 +472,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/man/Makefile.in b/xserver/hw/xfree86/man/Makefile.in
index a1876c2b4..3623d65ec 100644
--- a/xserver/hw/xfree86/man/Makefile.in
+++ b/xserver/hw/xfree86/man/Makefile.in
@@ -503,6 +503,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/man/Xorg.man b/xserver/hw/xfree86/man/Xorg.man
index 4338a1fe2..48af2a5e2 100644
--- a/xserver/hw/xfree86/man/Xorg.man
+++ b/xserver/hw/xfree86/man/Xorg.man
@@ -555,7 +555,7 @@ vesa(@drivermansuffix@),
vmware(@drivermansuffix@),
.br
Web site
-.IR <http://www.x.org> .
+.IR <https://www.x.org> .
.SH AUTHORS
Xorg has many contributors world wide. The names of most of them
@@ -608,9 +608,9 @@ Orest Zborowski \fIorestz@eskimo.com\fP
.PP
Xorg source is available from the FTP server
\fI<ftp://ftp.x.org/>\fP, and from the X.Org
-server \fI<http://gitweb.freedesktop.org/>\fP. Documentation and other
+server \fI<https://gitlab.freedesktop.org/xorg/>\fP. Documentation and other
information can be found from the X.Org web site
-\fI<http://www.x.org/>\fP.
+\fI<https://www.x.org/>\fP.
.SH LEGAL
.PP
@@ -620,7 +620,7 @@ and redistribution in source and binary form without fee.
.B Xorg is copyright by numerous authors and
contributors from around the world. Licensing information can be found
at
-.IR <http://www.x.org> .
+.IR <https://www.x.org> .
Refer to the source code for specific copyright notices.
.PP
.B XFree86(TM)
diff --git a/xserver/hw/xfree86/man/xorg.conf.man b/xserver/hw/xfree86/man/xorg.conf.man
index 958926243..80215ead6 100644
--- a/xserver/hw/xfree86/man/xorg.conf.man
+++ b/xserver/hw/xfree86/man/xorg.conf.man
@@ -2500,7 +2500,7 @@ section for a dual headed configuration with two mice:
This optional section is used to provide some information for the
Direct Rendering Infrastructure.
Details about the format of this section can be found on-line at
-.IR <http://dri.freedesktop.org/> .
+.IR <https://dri.freedesktop.org/> .
.SH "VENDOR SECTION"
The optional
.B Vendor
diff --git a/xserver/hw/xfree86/modes/Makefile.in b/xserver/hw/xfree86/modes/Makefile.in
index 82cea4400..8282cdb20 100644
--- a/xserver/hw/xfree86/modes/Makefile.in
+++ b/xserver/hw/xfree86/modes/Makefile.in
@@ -507,6 +507,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/modes/xf86Crtc.c b/xserver/hw/xfree86/modes/xf86Crtc.c
index 37a45bb3a..17d4ef103 100644
--- a/xserver/hw/xfree86/modes/xf86Crtc.c
+++ b/xserver/hw/xfree86/modes/xf86Crtc.c
@@ -1719,11 +1719,10 @@ xf86ProbeOutputModes(ScrnInfoPtr scrn, int maxX, int maxY)
if (edid_monitor) {
struct det_monrec_parameter p;
- struct disp_features *features = &edid_monitor->features;
struct cea_data_block *hdmi_db;
/* if display is not continuous-frequency, don't add default modes */
- if (!GTF_SUPPORTED(features->msc))
+ if (!gtf_supported(edid_monitor))
add_default_modes = FALSE;
p.mon_rec = &mon_rec;
diff --git a/xserver/hw/xfree86/os-support/Makefile.in b/xserver/hw/xfree86/os-support/Makefile.in
index e7aa6817c..65e90e067 100644
--- a/xserver/hw/xfree86/os-support/Makefile.in
+++ b/xserver/hw/xfree86/os-support/Makefile.in
@@ -536,6 +536,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/bsd/Makefile.in b/xserver/hw/xfree86/os-support/bsd/Makefile.in
index a99576633..f31d4eb11 100644
--- a/xserver/hw/xfree86/os-support/bsd/Makefile.in
+++ b/xserver/hw/xfree86/os-support/bsd/Makefile.in
@@ -506,6 +506,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/bus/Makefile.in b/xserver/hw/xfree86/os-support/bus/Makefile.in
index a312795bf..e82015d0b 100644
--- a/xserver/hw/xfree86/os-support/bus/Makefile.in
+++ b/xserver/hw/xfree86/os-support/bus/Makefile.in
@@ -510,6 +510,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/hurd/Makefile.in b/xserver/hw/xfree86/os-support/hurd/Makefile.in
index ecc3cc20d..c62726059 100644
--- a/xserver/hw/xfree86/os-support/hurd/Makefile.in
+++ b/xserver/hw/xfree86/os-support/hurd/Makefile.in
@@ -473,6 +473,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/linux/Makefile.in b/xserver/hw/xfree86/os-support/linux/Makefile.in
index 623f93f5d..1ff27ce76 100644
--- a/xserver/hw/xfree86/os-support/linux/Makefile.in
+++ b/xserver/hw/xfree86/os-support/linux/Makefile.in
@@ -488,6 +488,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/misc/Makefile.in b/xserver/hw/xfree86/os-support/misc/Makefile.in
index 0e5ee8f7b..df507bc42 100644
--- a/xserver/hw/xfree86/os-support/misc/Makefile.in
+++ b/xserver/hw/xfree86/os-support/misc/Makefile.in
@@ -471,6 +471,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/solaris/Makefile.in b/xserver/hw/xfree86/os-support/solaris/Makefile.in
index 74ba8bf84..7c787b2f8 100644
--- a/xserver/hw/xfree86/os-support/solaris/Makefile.in
+++ b/xserver/hw/xfree86/os-support/solaris/Makefile.in
@@ -526,6 +526,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/os-support/stub/Makefile.in b/xserver/hw/xfree86/os-support/stub/Makefile.in
index 04712aa08..3b9dbcf70 100644
--- a/xserver/hw/xfree86/os-support/stub/Makefile.in
+++ b/xserver/hw/xfree86/os-support/stub/Makefile.in
@@ -473,6 +473,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/parser/Makefile.in b/xserver/hw/xfree86/parser/Makefile.in
index c65a84db3..6bfc9eda1 100644
--- a/xserver/hw/xfree86/parser/Makefile.in
+++ b/xserver/hw/xfree86/parser/Makefile.in
@@ -505,6 +505,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/ramdac/Makefile.in b/xserver/hw/xfree86/ramdac/Makefile.in
index c54d3efcf..45e398df2 100644
--- a/xserver/hw/xfree86/ramdac/Makefile.in
+++ b/xserver/hw/xfree86/ramdac/Makefile.in
@@ -502,6 +502,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/ramdac/xf86CursorRD.c b/xserver/hw/xfree86/ramdac/xf86CursorRD.c
index afcce5353..02dab36fe 100644
--- a/xserver/hw/xfree86/ramdac/xf86CursorRD.c
+++ b/xserver/hw/xfree86/ramdac/xf86CursorRD.c
@@ -212,7 +212,7 @@ xf86CursorEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable)
xf86CursorScreenKey);
if (!enable && ScreenPriv->CurrentCursor != NullCursor) {
- CursorPtr currentCursor = ScreenPriv->CurrentCursor;
+ CursorPtr currentCursor = RefCursor(ScreenPriv->CurrentCursor);
xf86CursorSetCursor(pDev, pScreen, NullCursor, ScreenPriv->x,
ScreenPriv->y);
@@ -231,6 +231,7 @@ xf86CursorEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable)
*/
xf86CursorSetCursor(pDev, pScreen, ScreenPriv->SavedCursor,
ScreenPriv->x, ScreenPriv->y);
+ UnrefCursor(ScreenPriv->SavedCursor);
ScreenPriv->SavedCursor = NULL;
}
}
@@ -333,6 +334,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
ScreenPriv->HotY = cursor->bits->yhot;
if (!infoPtr->pScrn->vtSema) {
+ cursor = RefCursor(cursor);
+ if (ScreenPriv->SavedCursor)
+ FreeCursor(ScreenPriv->SavedCursor, None);
ScreenPriv->SavedCursor = cursor;
return;
}
diff --git a/xserver/hw/xfree86/shadowfb/Makefile.in b/xserver/hw/xfree86/shadowfb/Makefile.in
index 5a51e4597..454f218aa 100644
--- a/xserver/hw/xfree86/shadowfb/Makefile.in
+++ b/xserver/hw/xfree86/shadowfb/Makefile.in
@@ -506,6 +506,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/utils/Makefile.in b/xserver/hw/xfree86/utils/Makefile.in
index 6a4ca4194..af0017d37 100644
--- a/xserver/hw/xfree86/utils/Makefile.in
+++ b/xserver/hw/xfree86/utils/Makefile.in
@@ -477,6 +477,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/utils/cvt/Makefile.in b/xserver/hw/xfree86/utils/cvt/Makefile.in
index feb22b1d9..11d5f4995 100644
--- a/xserver/hw/xfree86/utils/cvt/Makefile.in
+++ b/xserver/hw/xfree86/utils/cvt/Makefile.in
@@ -499,6 +499,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/utils/gtf/Makefile.in b/xserver/hw/xfree86/utils/gtf/Makefile.in
index 1dd56a88b..4c4ef52f8 100644
--- a/xserver/hw/xfree86/utils/gtf/Makefile.in
+++ b/xserver/hw/xfree86/utils/gtf/Makefile.in
@@ -498,6 +498,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/utils/man/Makefile.in b/xserver/hw/xfree86/utils/man/Makefile.in
index 5c22f4757..d909cdec0 100644
--- a/xserver/hw/xfree86/utils/man/Makefile.in
+++ b/xserver/hw/xfree86/utils/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/vbe/Makefile.in b/xserver/hw/xfree86/vbe/Makefile.in
index b0cae486a..c925c038c 100644
--- a/xserver/hw/xfree86/vbe/Makefile.in
+++ b/xserver/hw/xfree86/vbe/Makefile.in
@@ -504,6 +504,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/vgahw/Makefile.in b/xserver/hw/xfree86/vgahw/Makefile.in
index f8f06813c..e7d4c8d7e 100644
--- a/xserver/hw/xfree86/vgahw/Makefile.in
+++ b/xserver/hw/xfree86/vgahw/Makefile.in
@@ -505,6 +505,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/x86emu/Makefile.in b/xserver/hw/xfree86/x86emu/Makefile.in
index b36a80ada..8e82d12fb 100644
--- a/xserver/hw/xfree86/x86emu/Makefile.in
+++ b/xserver/hw/xfree86/x86emu/Makefile.in
@@ -473,6 +473,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xfree86/xkb/Makefile.in b/xserver/hw/xfree86/xkb/Makefile.in
index ba03bcb35..d38be2f5c 100644
--- a/xserver/hw/xfree86/xkb/Makefile.in
+++ b/xserver/hw/xfree86/xkb/Makefile.in
@@ -471,6 +471,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xnest/Makefile.in b/xserver/hw/xnest/Makefile.in
index b120181ed..87ff2901e 100644
--- a/xserver/hw/xnest/Makefile.in
+++ b/xserver/hw/xnest/Makefile.in
@@ -524,6 +524,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xnest/man/Makefile.in b/xserver/hw/xnest/man/Makefile.in
index 520a1ea52..a1692f653 100644
--- a/xserver/hw/xnest/man/Makefile.in
+++ b/xserver/hw/xnest/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/GL/Makefile.in b/xserver/hw/xquartz/GL/Makefile.in
index 16aa9e89c..2a252479e 100644
--- a/xserver/hw/xquartz/GL/Makefile.in
+++ b/xserver/hw/xquartz/GL/Makefile.in
@@ -472,6 +472,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/Makefile.in b/xserver/hw/xquartz/Makefile.in
index d4c0607ef..38d6abb77 100644
--- a/xserver/hw/xquartz/Makefile.in
+++ b/xserver/hw/xquartz/Makefile.in
@@ -528,6 +528,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/bundle/Makefile.in b/xserver/hw/xquartz/bundle/Makefile.in
index fcab532e2..11b1f11ee 100644
--- a/xserver/hw/xquartz/bundle/Makefile.in
+++ b/xserver/hw/xquartz/bundle/Makefile.in
@@ -476,6 +476,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/mach-startup/Makefile.in b/xserver/hw/xquartz/mach-startup/Makefile.in
index 3f91029ca..fd5e3a664 100644
--- a/xserver/hw/xquartz/mach-startup/Makefile.in
+++ b/xserver/hw/xquartz/mach-startup/Makefile.in
@@ -508,6 +508,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/man/Makefile.in b/xserver/hw/xquartz/man/Makefile.in
index a458e3c1b..195ed9cfd 100644
--- a/xserver/hw/xquartz/man/Makefile.in
+++ b/xserver/hw/xquartz/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/man/Xquartz.man b/xserver/hw/xquartz/man/Xquartz.man
index df7ab25aa..65a75d584 100644
--- a/xserver/hw/xquartz/man/Xquartz.man
+++ b/xserver/hw/xquartz/man/Xquartz.man
@@ -136,7 +136,7 @@ instead of -d.
.PP
X(@miscmansuffix@), Xserver(1), xdm(1), xinit(1), syslog(1), syslogd(8)
.PP
-http://xquartz.macosforge.org
+https://www.xquartz.org/
.PP
.SH AUTHORS / HISTORY
X11 was originally ported to Mac OS X Server by John Carmack. Dave
diff --git a/xserver/hw/xquartz/pbproxy/Makefile.in b/xserver/hw/xquartz/pbproxy/Makefile.in
index 1a64545ee..643e285e0 100644
--- a/xserver/hw/xquartz/pbproxy/Makefile.in
+++ b/xserver/hw/xquartz/pbproxy/Makefile.in
@@ -502,6 +502,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xquartz/xpr/Makefile.in b/xserver/hw/xquartz/xpr/Makefile.in
index 65cf505d2..72efbef70 100644
--- a/xserver/hw/xquartz/xpr/Makefile.in
+++ b/xserver/hw/xquartz/xpr/Makefile.in
@@ -473,6 +473,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwayland/Makefile.in b/xserver/hw/xwayland/Makefile.in
index 5a110e736..3f8e6cbb5 100644
--- a/xserver/hw/xwayland/Makefile.in
+++ b/xserver/hw/xwayland/Makefile.in
@@ -535,6 +535,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwayland/xwayland-glamor-eglstream.c b/xserver/hw/xwayland/xwayland-glamor-eglstream.c
index 36b749aaf..0c32fff4d 100644
--- a/xserver/hw/xwayland/xwayland-glamor-eglstream.c
+++ b/xserver/hw/xwayland/xwayland-glamor-eglstream.c
@@ -431,8 +431,8 @@ xwl_eglstream_consumer_ready_callback(void *data,
DebugF("eglstream: win %d completes eglstream for pixmap %p, congrats!\n",
pending->window->drawable.id, pending->pixmap);
- xwl_eglstream_window_set_pending(pending->window, NULL);
out:
+ xwl_eglstream_window_set_pending(pending->window, NULL);
xorg_list_del(&pending->link);
free(pending);
}
diff --git a/xserver/hw/xwayland/xwayland-glamor-gbm.c b/xserver/hw/xwayland/xwayland-glamor-gbm.c
index dce782fc3..b519492cc 100644
--- a/xserver/hw/xwayland/xwayland-glamor-gbm.c
+++ b/xserver/hw/xwayland/xwayland-glamor-gbm.c
@@ -111,21 +111,6 @@ wl_drm_format_for_depth(int depth)
}
static char
-is_fd_render_node(int fd)
-{
- struct stat render;
-
- if (fstat(fd, &render))
- return 0;
- if (!S_ISCHR(render.st_mode))
- return 0;
- if (render.st_rdev & 0x80)
- return 1;
-
- return 0;
-}
-
-static char
is_device_path_render_node (const char *device_path)
{
char is_render_node;
@@ -135,7 +120,7 @@ is_device_path_render_node (const char *device_path)
if (fd < 0)
return 0;
- is_render_node = is_fd_render_node(fd);
+ is_render_node = (drmGetNodeTypeFromFd(fd) == DRM_NODE_RENDER);
close(fd);
return is_render_node;
@@ -285,6 +270,9 @@ xwl_glamor_gbm_get_wl_buffer_for_pixmap(PixmapPtr pixmap,
struct xwl_gbm_private *xwl_gbm = xwl_gbm_get(xwl_screen);
unsigned short width = pixmap->drawable.width;
unsigned short height = pixmap->drawable.height;
+ uint32_t format;
+ struct xwl_format *xwl_format = NULL;
+ Bool modifier_supported = FALSE;
int prime_fd;
int num_planes;
uint32_t strides[4];
@@ -309,6 +297,8 @@ xwl_glamor_gbm_get_wl_buffer_for_pixmap(PixmapPtr pixmap,
if (!xwl_pixmap->bo)
return NULL;
+ format = wl_drm_format_for_depth(pixmap->drawable.depth);
+
prime_fd = gbm_bo_get_fd(xwl_pixmap->bo);
if (prime_fd == -1)
return NULL;
@@ -327,7 +317,23 @@ xwl_glamor_gbm_get_wl_buffer_for_pixmap(PixmapPtr pixmap,
offsets[0] = 0;
#endif
- if (xwl_gbm->dmabuf && modifier != DRM_FORMAT_MOD_INVALID) {
+ for (i = 0; i < xwl_screen->num_formats; i++) {
+ if (xwl_screen->formats[i].format == format) {
+ xwl_format = &xwl_screen->formats[i];
+ break;
+ }
+ }
+
+ if (xwl_format) {
+ for (i = 0; i < xwl_format->num_modifiers; i++) {
+ if (xwl_format->modifiers[i] == modifier) {
+ modifier_supported = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (xwl_gbm->dmabuf && modifier_supported) {
struct zwp_linux_buffer_params_v1 *params;
params = zwp_linux_dmabuf_v1_create_params(xwl_gbm->dmabuf);
@@ -339,13 +345,12 @@ xwl_glamor_gbm_get_wl_buffer_for_pixmap(PixmapPtr pixmap,
xwl_pixmap->buffer =
zwp_linux_buffer_params_v1_create_immed(params, width, height,
- wl_drm_format_for_depth(pixmap->drawable.depth),
- 0);
+ format, 0);
zwp_linux_buffer_params_v1_destroy(params);
} else if (num_planes == 1) {
xwl_pixmap->buffer =
wl_drm_create_prime_buffer(xwl_gbm->drm, prime_fd, width, height,
- wl_drm_format_for_depth(pixmap->drawable.depth),
+ format,
0, gbm_bo_get_stride(xwl_pixmap->bo),
0, 0,
0, 0);
@@ -501,7 +506,8 @@ glamor_pixmap_from_fds(ScreenPtr screen, CARD8 num_fds, const int *fds,
data.strides[i] = strides[i];
data.offsets[i] = offsets[i];
}
- bo = gbm_bo_import(xwl_gbm->gbm, GBM_BO_IMPORT_FD_MODIFIER, &data, 0);
+ bo = gbm_bo_import(xwl_gbm->gbm, GBM_BO_IMPORT_FD_MODIFIER, &data,
+ GBM_BO_USE_RENDERING);
#endif
} else if (num_fds == 1) {
struct gbm_import_fd_data data;
@@ -512,7 +518,7 @@ glamor_pixmap_from_fds(ScreenPtr screen, CARD8 num_fds, const int *fds,
data.stride = strides[0];
data.format = gbm_format_for_depth(depth);
bo = gbm_bo_import(xwl_gbm->gbm, GBM_BO_IMPORT_FD, &data,
- GBM_BO_USE_SCANOUT | GBM_BO_USE_RENDERING);
+ GBM_BO_USE_RENDERING);
} else {
goto error;
}
@@ -746,7 +752,7 @@ xwl_drm_handle_device(void *data, struct wl_drm *drm, const char *device)
return;
}
- if (is_fd_render_node(xwl_gbm->drm_fd)) {
+ if (drmGetNodeTypeFromFd(xwl_gbm->drm_fd) == DRM_NODE_RENDER) {
xwl_gbm->fd_render_node = 1;
xwl_screen->expecting_event--;
} else {
diff --git a/xserver/hw/xwayland/xwayland-input.c b/xserver/hw/xwayland/xwayland-input.c
index fa46ac3e7..a05d178ff 100644
--- a/xserver/hw/xwayland/xwayland-input.c
+++ b/xserver/hw/xwayland/xwayland-input.c
@@ -48,6 +48,8 @@ struct sync_pending {
DeviceIntPtr pending_dev;
};
+static DevPrivateKeyRec xwl_tablet_private_key;
+
static void
xwl_pointer_warp_emulator_handle_motion(struct xwl_pointer_warp_emulator *warp_emulator,
double dx,
@@ -831,6 +833,9 @@ remove_sync_pending(DeviceIntPtr dev)
struct xwl_seat *xwl_seat = dev->public.devicePrivate;
struct sync_pending *p, *npd;
+ if (!xwl_seat)
+ return;
+
xorg_list_for_each_entry_safe(p, npd, &xwl_seat->sync_pending, l) {
if (p->pending_dev == dev) {
xorg_list_del(&xwl_seat->sync_pending);
@@ -857,11 +862,15 @@ static Bool
keyboard_check_repeat (DeviceIntPtr dev, XkbSrvInfoPtr xkbi, unsigned key)
{
struct xwl_seat *xwl_seat = dev->public.devicePrivate;
- struct xwl_screen *xwl_screen = xwl_seat->xwl_screen;
+ struct xwl_screen *xwl_screen;
struct wl_callback *callback;
struct sync_pending *p;
+ if (!xwl_seat)
+ return FALSE;
+
/* Make sure we didn't miss a possible reply from the compositor */
+ xwl_screen = xwl_seat->xwl_screen;
xwl_sync_events (xwl_screen);
xorg_list_for_each_entry(p, &xwl_seat->sync_pending, l) {
@@ -1150,6 +1159,21 @@ add_device(struct xwl_seat *xwl_seat,
}
static void
+disable_device(DeviceIntPtr dev)
+{
+ DisableDevice(dev, TRUE);
+ dev->public.devicePrivate = NULL;
+}
+
+static void
+enable_device(struct xwl_seat *xwl_seat, DeviceIntPtr dev)
+{
+ dev->public.devicePrivate = xwl_seat;
+ EnableDevice(dev, TRUE);
+}
+
+
+static void
init_pointer(struct xwl_seat *xwl_seat)
{
xwl_seat->wl_pointer = wl_seat_get_pointer(xwl_seat->seat);
@@ -1162,7 +1186,7 @@ init_pointer(struct xwl_seat *xwl_seat)
add_device(xwl_seat, "xwayland-pointer", xwl_pointer_proc);
ActivateDevice(xwl_seat->pointer, TRUE);
}
- EnableDevice(xwl_seat->pointer, TRUE);
+ enable_device(xwl_seat, xwl_seat->pointer);
}
static void
@@ -1172,7 +1196,7 @@ release_pointer(struct xwl_seat *xwl_seat)
xwl_seat->wl_pointer = NULL;
if (xwl_seat->pointer)
- DisableDevice(xwl_seat->pointer, TRUE);
+ disable_device(xwl_seat->pointer);
}
static void
@@ -1196,7 +1220,7 @@ init_relative_pointer(struct xwl_seat *xwl_seat)
xwl_pointer_proc_relative);
ActivateDevice(xwl_seat->relative_pointer, TRUE);
}
- EnableDevice(xwl_seat->relative_pointer, TRUE);
+ enable_device(xwl_seat, xwl_seat->relative_pointer);
}
static void
@@ -1208,7 +1232,7 @@ release_relative_pointer(struct xwl_seat *xwl_seat)
}
if (xwl_seat->relative_pointer)
- DisableDevice(xwl_seat->relative_pointer, TRUE);
+ disable_device(xwl_seat->relative_pointer);
}
static void
@@ -1225,7 +1249,7 @@ init_keyboard(struct xwl_seat *xwl_seat)
add_device(xwl_seat, "xwayland-keyboard", xwl_keyboard_proc);
ActivateDevice(xwl_seat->keyboard, TRUE);
}
- EnableDevice(xwl_seat->keyboard, TRUE);
+ enable_device(xwl_seat, xwl_seat->keyboard);
xwl_seat->keyboard->key->xkbInfo->checkRepeat = keyboard_check_repeat;
if (xwl_seat->xwl_screen->wp_grab) {
@@ -1245,7 +1269,7 @@ release_keyboard(struct xwl_seat *xwl_seat)
if (xwl_seat->keyboard) {
remove_sync_pending(xwl_seat->keyboard);
- DisableDevice(xwl_seat->keyboard, TRUE);
+ disable_device(xwl_seat->keyboard);
}
}
@@ -1261,8 +1285,7 @@ init_touch(struct xwl_seat *xwl_seat)
add_device(xwl_seat, "xwayland-touch", xwl_touch_proc);
ActivateDevice(xwl_seat->touch, TRUE);
}
- EnableDevice(xwl_seat->touch, TRUE);
-
+ enable_device(xwl_seat, xwl_seat->touch);
}
static void
@@ -1272,7 +1295,7 @@ release_touch(struct xwl_seat *xwl_seat)
xwl_seat->wl_touch = NULL;
if (xwl_seat->touch)
- DisableDevice(xwl_seat->touch, TRUE);
+ disable_device(xwl_seat->touch);
}
static void
@@ -1431,19 +1454,19 @@ tablet_handle_done(void *data, struct zwp_tablet_v2 *tablet)
xwl_seat->stylus = add_device(xwl_seat, "xwayland-stylus", xwl_tablet_proc);
ActivateDevice(xwl_seat->stylus, TRUE);
}
- EnableDevice(xwl_seat->stylus, TRUE);
+ enable_device(xwl_seat, xwl_seat->stylus);
if (xwl_seat->eraser == NULL) {
xwl_seat->eraser = add_device(xwl_seat, "xwayland-eraser", xwl_tablet_proc);
ActivateDevice(xwl_seat->eraser, TRUE);
}
- EnableDevice(xwl_seat->eraser, TRUE);
+ enable_device(xwl_seat, xwl_seat->eraser);
if (xwl_seat->puck == NULL) {
xwl_seat->puck = add_device(xwl_seat, "xwayland-cursor", xwl_tablet_proc);
ActivateDevice(xwl_seat->puck, TRUE);
}
- EnableDevice(xwl_seat->puck, TRUE);
+ enable_device(xwl_seat, xwl_seat->puck);
}
static void
@@ -1458,11 +1481,11 @@ tablet_handle_removed(void *data, struct zwp_tablet_v2 *tablet)
will re-use the same X devices */
if (xorg_list_is_empty(&xwl_seat->tablets)) {
if (xwl_seat->stylus)
- DisableDevice(xwl_seat->stylus, TRUE);
+ disable_device(xwl_seat->stylus);
if (xwl_seat->eraser)
- DisableDevice(xwl_seat->eraser, TRUE);
+ disable_device(xwl_seat->eraser);
if (xwl_seat->puck)
- DisableDevice(xwl_seat->puck, TRUE);
+ disable_device(xwl_seat->puck);
/* pads are removed separately */
}
@@ -2064,7 +2087,8 @@ static struct zwp_tablet_pad_group_v2_listener tablet_pad_group_listener = {
static int
xwl_tablet_pad_proc(DeviceIntPtr device, int what)
{
- struct xwl_tablet_pad *pad = device->public.devicePrivate;
+ struct xwl_tablet_pad *pad = dixGetPrivate(&device->devPrivates,
+ &xwl_tablet_private_key);
/* Axis layout mirrors that of xf86-input-wacom to have better
compatibility with existing clients */
#define NAXES 7
@@ -2188,7 +2212,7 @@ tablet_pad_done(void *data,
pad->xdevice = add_device(pad->seat, "xwayland-pad",
xwl_tablet_pad_proc);
- pad->xdevice->public.devicePrivate = pad;
+ dixSetPrivate(&pad->xdevice->devPrivates, &xwl_tablet_private_key, pad);
ActivateDevice(pad->xdevice, TRUE);
EnableDevice(pad->xdevice, TRUE);
}
@@ -2524,6 +2548,8 @@ sprite_check_lost_focus(SpritePtr sprite, WindowPtr window)
return FALSE;
xwl_seat = device->public.devicePrivate;
+ if (!xwl_seat)
+ return FALSE;
master = GetMaster(device, POINTER_OR_FLOAT);
if (!master || !master->lastSlave)
@@ -2757,7 +2783,15 @@ xwl_seat_create_pointer_warp_emulator(struct xwl_seat *xwl_seat)
static Bool
xwl_seat_can_emulate_pointer_warp(struct xwl_seat *xwl_seat)
{
- struct xwl_screen *xwl_screen = xwl_seat->xwl_screen;
+ struct xwl_screen *xwl_screen;
+
+ if (!xwl_seat)
+ return FALSE;
+
+ if (!xwl_seat->pointer)
+ return FALSE;
+
+ xwl_screen = xwl_seat->xwl_screen;
if (!xwl_screen->relative_pointer_manager)
return FALSE;
@@ -2851,6 +2885,9 @@ xwl_seat_confine_pointer(struct xwl_seat *xwl_seat,
if (!pointer_constraints)
return;
+ if (!xwl_seat->wl_pointer)
+ return;
+
if (xwl_seat->cursor_confinement_window == xwl_window &&
xwl_seat->confined_pointer)
return;
@@ -2895,6 +2932,11 @@ InitInput(int argc, char *argv[])
ScreenPtr pScreen = screenInfo.screens[0];
struct xwl_screen *xwl_screen = xwl_screen_get(pScreen);
+ if (!dixRegisterPrivateKey(&xwl_tablet_private_key, PRIVATE_DEVICE, 0)) {
+ ErrorF("Failed to register private key\n");
+ return;
+ }
+
mieqInit();
xwl_screen->input_registry = wl_display_get_registry(xwl_screen->display);
@@ -2904,9 +2946,7 @@ InitInput(int argc, char *argv[])
xwl_screen->XYToWindow = pScreen->XYToWindow;
pScreen->XYToWindow = xwl_xy_to_window;
- wl_display_roundtrip(xwl_screen->display);
- while (xwl_screen->expecting_event)
- wl_display_roundtrip(xwl_screen->display);
+ xwl_screen_roundtrip(xwl_screen);
}
void
diff --git a/xserver/hw/xwayland/xwayland-output.c b/xserver/hw/xwayland/xwayland-output.c
index aa6f37864..ae646c663 100644
--- a/xserver/hw/xwayland/xwayland-output.c
+++ b/xserver/hw/xwayland/xwayland-output.c
@@ -30,7 +30,6 @@
#include "xwayland.h"
#include <randrstr.h>
-#define DEFAULT_DPI 96
#define ALL_ROTATIONS (RR_Rotate_0 | \
RR_Rotate_90 | \
RR_Rotate_180 | \
@@ -143,34 +142,6 @@ output_get_new_size(struct xwl_output *xwl_output,
*height = xwl_output->y + output_height;
}
-/* Approximate some kind of mmpd (m.m. per dot) of the screen given the outputs
- * associated with it.
- *
- * It either calculates the mean mmpd of all the outputs or, if no reasonable
- * value could be calculated, defaults to the mmpd of a screen with a DPI value
- * of DEFAULT_DPI.
- */
-static double
-approximate_mmpd(struct xwl_screen *xwl_screen)
-{
- struct xwl_output *it;
- int total_width_mm = 0;
- int total_width = 0;
-
- xorg_list_for_each_entry(it, &xwl_screen->output_list, link) {
- if (it->randr_output->mmWidth == 0)
- continue;
-
- total_width_mm += it->randr_output->mmWidth;
- total_width += it->width;
- }
-
- if (total_width_mm != 0)
- return (double)total_width_mm / total_width;
- else
- return 25.4 / DEFAULT_DPI;
-}
-
static int
xwl_set_pixmap_visit_window(WindowPtr window, void *data)
{
@@ -209,7 +180,6 @@ static void
update_screen_size(struct xwl_output *xwl_output, int width, int height)
{
struct xwl_screen *xwl_screen = xwl_output->xwl_screen;
- double mmpd;
if (xwl_screen->root_clip_mode == ROOT_CLIP_FULL)
SetRootClip(xwl_screen->screen, ROOT_CLIP_NONE);
@@ -221,15 +191,8 @@ update_screen_size(struct xwl_output *xwl_output, int width, int height)
xwl_screen->height = height;
xwl_screen->screen->width = width;
xwl_screen->screen->height = height;
-
- if (xwl_output->width == width && xwl_output->height == height) {
- xwl_screen->screen->mmWidth = xwl_output->randr_output->mmWidth;
- xwl_screen->screen->mmHeight = xwl_output->randr_output->mmHeight;
- } else {
- mmpd = approximate_mmpd(xwl_screen);
- xwl_screen->screen->mmWidth = width * mmpd;
- xwl_screen->screen->mmHeight = height * mmpd;
- }
+ xwl_screen->screen->mmWidth = (width * 25.4) / monitorResolution;
+ xwl_screen->screen->mmHeight = (height * 25.4) / monitorResolution;
SetRootClip(xwl_screen->screen, xwl_screen->root_clip_mode);
diff --git a/xserver/hw/xwayland/xwayland-present.c b/xserver/hw/xwayland/xwayland-present.c
index 5ba7dce08..d177abdd8 100644
--- a/xserver/hw/xwayland/xwayland-present.c
+++ b/xserver/hw/xwayland/xwayland-present.c
@@ -111,6 +111,27 @@ xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
}
}
+static void
+xwl_present_free_event(struct xwl_present_event *event)
+{
+ if (!event)
+ return;
+
+ if (event->pixmap) {
+ if (!event->buffer_released) {
+ struct wl_buffer *buffer =
+ xwl_glamor_pixmap_get_wl_buffer(event->pixmap, NULL);
+
+ wl_buffer_set_user_data(buffer, NULL);
+ }
+
+ dixDestroyPixmap(event->pixmap, event->pixmap->drawable.id);
+ }
+
+ xorg_list_del(&event->list);
+ free(event);
+}
+
void
xwl_present_cleanup(WindowPtr window)
{
@@ -128,26 +149,13 @@ xwl_present_cleanup(WindowPtr window)
}
/* Clear remaining events */
- xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
- xorg_list_del(&event->list);
- free(event);
- }
+ xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list)
+ xwl_present_free_event(event);
- /* Clear remaining buffer releases and inform Present about free ressources */
- event = xwl_present_window->sync_flip;
- xwl_present_window->sync_flip = NULL;
- if (event) {
- if (event->buffer_released) {
- free(event);
- } else {
- event->pending = FALSE;
- event->abort = TRUE;
- }
- }
- xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_queue, list) {
- xorg_list_del(&event->list);
- event->abort = TRUE;
- }
+ xwl_present_free_event(xwl_present_window->sync_flip);
+
+ xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->release_queue, list)
+ xwl_present_free_event(event);
/* Clear timer */
xwl_present_free_timer(xwl_present_window);
@@ -161,13 +169,6 @@ xwl_present_cleanup(WindowPtr window)
}
static void
-xwl_present_free_event(struct xwl_present_event *event)
-{
- xorg_list_del(&event->list);
- free(event);
-}
-
-static void
xwl_present_buffer_release(void *data, struct wl_buffer *buffer)
{
struct xwl_present_event *event = data;
@@ -216,7 +217,7 @@ xwl_present_msc_bump(struct xwl_present_window *xwl_present_window)
/* If the buffer was already released, clean up now */
present_wnmd_event_notify(xwl_present_window->window, event->event_id,
xwl_present_window->ust, msc);
- free(event);
+ xwl_present_free_event(event);
} else {
xorg_list_add(&event->list, &xwl_present_window->release_queue);
}
@@ -355,6 +356,7 @@ xwl_present_queue_vblank(WindowPtr present_window,
return BadAlloc;
event->event_id = event_id;
+ event->pixmap = NULL;
event->xwl_present_window = xwl_present_window;
event->target_msc = msc;
@@ -392,8 +394,7 @@ xwl_present_abort_vblank(WindowPtr present_window,
xorg_list_for_each_entry_safe(event, tmp, &xwl_present_window->event_list, list) {
if (event->event_id == event_id) {
- xorg_list_del(&event->list);
- free(event);
+ xwl_present_free_event(event);
return;
}
}
@@ -420,10 +421,18 @@ xwl_present_check_flip2(RRCrtcPtr crtc,
PresentFlipReason *reason)
{
struct xwl_window *xwl_window = xwl_window_from_window(present_window);
+ ScreenPtr screen = pixmap->drawable.pScreen;
if (!xwl_window)
return FALSE;
+ /* Can't flip if the window pixmap doesn't match the xwl_window parent
+ * window's, e.g. because a client redirected this window or one of its
+ * parents.
+ */
+ if (screen->GetWindowPixmap(xwl_window->window) != screen->GetWindowPixmap(present_window))
+ return FALSE;
+
/*
* We currently only allow flips of windows, that have the same
* dimensions as their xwl_window parent window. For the case of
@@ -460,11 +469,12 @@ xwl_present_flip(WindowPtr present_window,
if (!event)
return FALSE;
+ pixmap->refcnt++;
buffer = xwl_glamor_pixmap_get_wl_buffer(pixmap, &buffer_created);
event->event_id = event_id;
event->xwl_present_window = xwl_present_window;
- event->buffer = buffer;
+ event->pixmap = pixmap;
event->target_msc = target_msc;
event->pending = TRUE;
event->abort = FALSE;
@@ -495,7 +505,9 @@ xwl_present_flip(WindowPtr present_window,
/* Realign timer */
xwl_present_reset_timer(xwl_present_window);
- wl_surface_damage(xwl_window->surface, 0, 0,
+ wl_surface_damage(xwl_window->surface,
+ damage_box->x1 - present_window->drawable.x,
+ damage_box->y1 - present_window->drawable.y,
damage_box->x2 - damage_box->x1,
damage_box->y2 - damage_box->y1);
diff --git a/xserver/hw/xwayland/xwayland-vidmode.c b/xserver/hw/xwayland/xwayland-vidmode.c
index 0bcd11401..d25d1aca1 100644
--- a/xserver/hw/xwayland/xwayland-vidmode.c
+++ b/xserver/hw/xwayland/xwayland-vidmode.c
@@ -332,6 +332,7 @@ static Bool
xwlVidModeGetGamma(ScreenPtr pScreen, float *red, float *green, float *blue)
{
/* Unsupported for now, but pretend it works */
+ *red = *green = *blue = 1.0f;
return TRUE;
}
diff --git a/xserver/hw/xwayland/xwayland.c b/xserver/hw/xwayland/xwayland.c
index ed9f2e3c2..b353167c3 100644
--- a/xserver/hw/xwayland/xwayland.c
+++ b/xserver/hw/xwayland/xwayland.c
@@ -87,6 +87,8 @@ ddxInputThreadInit(void)
}
#endif
+#define DEFAULT_DPI 96
+
_X_NORETURN
static void _X_ATTRIBUTE_PRINTF(1, 2)
xwl_give_up(const char *f, ...)
@@ -191,8 +193,6 @@ static void
xwl_window_property_allow_commits(struct xwl_window *xwl_window,
PropertyStateRec *propstate)
{
- Bool old_allow_commits = xwl_window->allow_commits;
-
switch (propstate->state) {
case PropertyNewValue:
xwl_window_set_allow_commits_from_property(xwl_window, propstate->prop);
@@ -205,17 +205,6 @@ xwl_window_property_allow_commits(struct xwl_window *xwl_window,
default:
break;
}
-
- /* If allow_commits turned from off to on, discard any frame
- * callback we might be waiting for so that a new buffer is posted
- * immediately through block_handler() if there is damage to post.
- */
- if (!old_allow_commits && xwl_window->allow_commits) {
- if (xwl_window->frame_callback) {
- wl_callback_destroy(xwl_window->frame_callback);
- xwl_window->frame_callback = NULL;
- }
- }
}
static void
@@ -538,7 +527,7 @@ ensure_surface_for_window(WindowPtr window)
struct xwl_window *xwl_window;
struct wl_region *region;
- if (xwl_window_get(window))
+ if (xwl_window_from_window(window))
return TRUE;
xwl_screen = xwl_screen_get(screen);
@@ -1043,6 +1032,19 @@ xwl_sync_events (struct xwl_screen *xwl_screen)
xwl_read_events (xwl_screen);
}
+void
+xwl_screen_roundtrip(struct xwl_screen *xwl_screen)
+{
+ int ret;
+
+ ret = wl_display_roundtrip(xwl_screen->display);
+ while (ret >= 0 && xwl_screen->expecting_event)
+ ret = wl_display_roundtrip(xwl_screen->display);
+
+ if (ret < 0)
+ xwl_give_up("could not connect to wayland server\n");
+}
+
static CARD32
add_client_fd(OsTimerPtr timer, CARD32 time, void *arg)
{
@@ -1117,6 +1119,19 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
for (i = 1; i < argc; i++) {
if (strcmp(argv[i], "-rootless") == 0) {
xwl_screen->rootless = 1;
+
+ /* Disable the XSS extension on Xwayland rootless.
+ *
+ * Xwayland is just a Wayland client, no X11 screensaver
+ * should be expected to work reliably on Xwayland rootless.
+ */
+#ifdef SCREENSAVER
+ noScreenSaverExtension = TRUE;
+#endif
+ ScreenSaverTime = 0;
+ ScreenSaverInterval = 0;
+ defaultScreenSaverTime = 0;
+ defaultScreenSaverInterval = 0;
}
else if (strcmp(argv[i], "-wm") == 0) {
xwl_screen->wm_fd = atoi(argv[i + 1]);
@@ -1169,6 +1184,9 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
xorg_list_init(&xwl_screen->damage_window_list);
xwl_screen->depth = 24;
+ if (!monitorResolution)
+ monitorResolution = DEFAULT_DPI;
+
xwl_screen->display = wl_display_connect(NULL);
if (xwl_screen->display == NULL) {
ErrorF("could not connect to wayland server\n");
@@ -1182,15 +1200,13 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
xwl_screen->registry = wl_display_get_registry(xwl_screen->display);
wl_registry_add_listener(xwl_screen->registry,
&registry_listener, xwl_screen);
- ret = wl_display_roundtrip(xwl_screen->display);
- if (ret == -1) {
- ErrorF("could not connect to wayland server\n");
+ xwl_screen_roundtrip(xwl_screen);
+
+ if (!xwl_screen->rootless && !xwl_screen->shell) {
+ ErrorF("missing wl_shell protocol\n");
return FALSE;
}
- while (xwl_screen->expecting_event > 0)
- wl_display_roundtrip(xwl_screen->display);
-
bpc = xwl_screen->depth / 3;
green_bpc = xwl_screen->depth - 2 * bpc;
blue_mask = (1 << bpc) - 1;
@@ -1206,7 +1222,7 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
ret = fbScreenInit(pScreen, NULL,
xwl_screen->width, xwl_screen->height,
- 96, 96, 0,
+ monitorResolution, monitorResolution, 0,
BitsPerPixel(xwl_screen->depth));
if (!ret)
return FALSE;
@@ -1281,9 +1297,7 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
AddCallback(&PropertyStateCallback, xwl_property_callback, pScreen);
- wl_display_roundtrip(xwl_screen->display);
- while (xwl_screen->expecting_event)
- wl_display_roundtrip(xwl_screen->display);
+ xwl_screen_roundtrip(xwl_screen);
return ret;
}
diff --git a/xserver/hw/xwayland/xwayland.h b/xserver/hw/xwayland/xwayland.h
index daa719209..b9495b313 100644
--- a/xserver/hw/xwayland/xwayland.h
+++ b/xserver/hw/xwayland/xwayland.h
@@ -215,7 +215,7 @@ struct xwl_present_event {
Bool buffer_released;
struct xwl_present_window *xwl_present_window;
- struct wl_buffer *buffer;
+ PixmapPtr pixmap;
struct xorg_list list;
};
@@ -381,6 +381,8 @@ void xwl_window_create_frame_callback(struct xwl_window *xwl_window);
void xwl_sync_events (struct xwl_screen *xwl_screen);
+void xwl_screen_roundtrip (struct xwl_screen *xwl_screen);
+
Bool xwl_screen_init_cursor(struct xwl_screen *xwl_screen);
struct xwl_screen *xwl_screen_get(ScreenPtr screen);
diff --git a/xserver/hw/xwin/Makefile.in b/xserver/hw/xwin/Makefile.in
index b82abe003..21735d4e4 100644
--- a/xserver/hw/xwin/Makefile.in
+++ b/xserver/hw/xwin/Makefile.in
@@ -617,6 +617,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwin/dri/Makefile.in b/xserver/hw/xwin/dri/Makefile.in
index 7d09c18ae..d2288409c 100644
--- a/xserver/hw/xwin/dri/Makefile.in
+++ b/xserver/hw/xwin/dri/Makefile.in
@@ -471,6 +471,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwin/glx/Makefile.in b/xserver/hw/xwin/glx/Makefile.in
index 3225fd315..b4a1c3811 100644
--- a/xserver/hw/xwin/glx/Makefile.in
+++ b/xserver/hw/xwin/glx/Makefile.in
@@ -519,6 +519,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwin/man/Makefile.in b/xserver/hw/xwin/man/Makefile.in
index 05c564b66..ba183a662 100644
--- a/xserver/hw/xwin/man/Makefile.in
+++ b/xserver/hw/xwin/man/Makefile.in
@@ -500,6 +500,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/hw/xwin/winclipboard/Makefile.in b/xserver/hw/xwin/winclipboard/Makefile.in
index f00872a55..8ddf1f359 100644
--- a/xserver/hw/xwin/winclipboard/Makefile.in
+++ b/xserver/hw/xwin/winclipboard/Makefile.in
@@ -550,6 +550,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/include/Makefile.in b/xserver/include/Makefile.in
index dcc8e32a8..d8c3f429e 100644
--- a/xserver/include/Makefile.in
+++ b/xserver/include/Makefile.in
@@ -482,6 +482,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/include/misc.h b/xserver/include/misc.h
index 546ed5c96..c81478b3e 100644
--- a/xserver/include/misc.h
+++ b/xserver/include/misc.h
@@ -91,7 +91,7 @@ OF THIS SOFTWARE.
#define LIMITCLIENTS 256 /* Must be a power of 2 and <= MAXCLIENTS */
#define MAXEXTENSIONS 128
#define MAXFORMATS 8
-#define MAXDEVICES 40 /* input devices */
+#define MAXDEVICES 256 /* input devices */
#define GPU_SCREEN_OFFSET 256
/* 128 event opcodes for core + extension events, excluding GE */
diff --git a/xserver/man/Makefile.in b/xserver/man/Makefile.in
index 5bc96ff56..01a1f4830 100644
--- a/xserver/man/Makefile.in
+++ b/xserver/man/Makefile.in
@@ -504,6 +504,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/mi/Makefile.in b/xserver/mi/Makefile.in
index e7a35e02c..00741c6b8 100644
--- a/xserver/mi/Makefile.in
+++ b/xserver/mi/Makefile.in
@@ -509,6 +509,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/miext/Makefile.in b/xserver/miext/Makefile.in
index 49f60978d..333d23d81 100644
--- a/xserver/miext/Makefile.in
+++ b/xserver/miext/Makefile.in
@@ -477,6 +477,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/miext/damage/Makefile.in b/xserver/miext/damage/Makefile.in
index e6ab15f3c..9d4d8f6e2 100644
--- a/xserver/miext/damage/Makefile.in
+++ b/xserver/miext/damage/Makefile.in
@@ -502,6 +502,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/miext/rootless/Makefile.in b/xserver/miext/rootless/Makefile.in
index e933848bb..3eef12029 100644
--- a/xserver/miext/rootless/Makefile.in
+++ b/xserver/miext/rootless/Makefile.in
@@ -472,6 +472,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/miext/shadow/Makefile.in b/xserver/miext/shadow/Makefile.in
index 74d19011d..55d678dd4 100644
--- a/xserver/miext/shadow/Makefile.in
+++ b/xserver/miext/shadow/Makefile.in
@@ -508,6 +508,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/miext/sync/Makefile.in b/xserver/miext/sync/Makefile.in
index 1896109c4..dd6565f74 100644
--- a/xserver/miext/sync/Makefile.in
+++ b/xserver/miext/sync/Makefile.in
@@ -507,6 +507,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/os/Makefile.in b/xserver/os/Makefile.in
index a9089ae6b..f81c2915b 100644
--- a/xserver/os/Makefile.in
+++ b/xserver/os/Makefile.in
@@ -509,6 +509,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/os/backtrace.c b/xserver/os/backtrace.c
index 619bf145e..2aad0e38a 100644
--- a/xserver/os/backtrace.c
+++ b/xserver/os/backtrace.c
@@ -45,6 +45,7 @@ xorg_backtrace(void)
{
unw_cursor_t cursor;
unw_context_t context;
+ unw_word_t ip;
unw_word_t off;
unw_proc_info_t pip;
int ret, i = 0;
@@ -88,7 +89,9 @@ xorg_backtrace(void)
procname[1] = 0;
}
- if (dladdr((void *)(uintptr_t)(pip.start_ip + off), &dlinfo) && dlinfo.dli_fname &&
+ if (unw_get_reg (&cursor, UNW_REG_IP, &ip) < 0)
+ ip = pip.start_ip + off;
+ if (dladdr((void *)(uintptr_t)(ip), &dlinfo) && dlinfo.dli_fname &&
*dlinfo.dli_fname)
filename = dlinfo.dli_fname;
else
@@ -96,7 +99,7 @@ xorg_backtrace(void)
ErrorFSigSafe("%u: %s (%s%s+0x%x) [%p]\n", i++, filename, procname,
ret == -UNW_ENOMEM ? "..." : "", (int)off,
- (void *)(uintptr_t)(pip.start_ip + off));
+ (void *)(uintptr_t)(ip));
ret = unw_step(&cursor);
if (ret < 0)
diff --git a/xserver/present/Makefile.in b/xserver/present/Makefile.in
index bd9d7f759..36bebf945 100644
--- a/xserver/present/Makefile.in
+++ b/xserver/present/Makefile.in
@@ -504,6 +504,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/present/present_execute.c b/xserver/present/present_execute.c
index 8d1ef4a8c..58066db86 100644
--- a/xserver/present/present_execute.c
+++ b/xserver/present/present_execute.c
@@ -48,16 +48,13 @@ present_execute_wait(present_vblank_ptr vblank, uint64_t crtc_msc)
ScreenPtr screen = window->drawable.pScreen;
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
- if (vblank->requeue) {
- vblank->requeue = FALSE;
- if (msc_is_after(vblank->target_msc, crtc_msc) &&
- Success == screen_priv->queue_vblank(screen,
- window,
- vblank->crtc,
- vblank->event_id,
- vblank->target_msc))
- return TRUE;
- }
+ /* We may have to requeue for the next MSC if check_flip_window prevented
+ * using a flip.
+ */
+ if (vblank->exec_msc == crtc_msc + 1 &&
+ screen_priv->queue_vblank(screen, window, vblank->crtc, vblank->event_id,
+ vblank->exec_msc) == Success)
+ return TRUE;
if (vblank->wait_fence) {
if (!present_fence_check_triggered(vblank->wait_fence)) {
@@ -75,13 +72,13 @@ present_execute_copy(present_vblank_ptr vblank, uint64_t crtc_msc)
ScreenPtr screen = window->drawable.pScreen;
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
- /* If present_flip failed, we may have to requeue for the target MSC */
- if (vblank->target_msc == crtc_msc + 1 &&
+ /* If present_flip failed, we may have to requeue for the next MSC */
+ if (vblank->exec_msc == crtc_msc + 1 &&
Success == screen_priv->queue_vblank(screen,
window,
vblank->crtc,
vblank->event_id,
- vblank->target_msc)) {
+ vblank->exec_msc)) {
vblank->queued = TRUE;
return;
}
diff --git a/xserver/present/present_priv.h b/xserver/present/present_priv.h
index 5849b9e0b..f34edd5cf 100644
--- a/xserver/present/present_priv.h
+++ b/xserver/present/present_priv.h
@@ -70,14 +70,14 @@ struct present_vblank {
int16_t y_off;
CARD16 kind;
uint64_t event_id;
- uint64_t target_msc;
+ uint64_t target_msc; /* target MSC when present should complete */
+ uint64_t exec_msc; /* MSC at which present can be executed */
uint64_t msc_offset;
present_fence_ptr idle_fence;
present_fence_ptr wait_fence;
present_notify_ptr notifies;
int num_notifies;
Bool queued; /* on present_exec_queue */
- Bool requeue; /* on queue, but target_msc has changed */
Bool flip; /* planning on using flip */
Bool flip_ready; /* wants to flip, but waiting for previous flip or unflip */
Bool flip_idler; /* driver explicitly permitted idling */
@@ -469,7 +469,7 @@ present_vblank_create(WindowPtr window,
const uint32_t *capabilities,
present_notify_ptr notifies,
int num_notifies,
- uint64_t *target_msc,
+ uint64_t target_msc,
uint64_t crtc_msc);
void
diff --git a/xserver/present/present_scmd.c b/xserver/present/present_scmd.c
index 6a580cb7a..3e3ae3477 100644
--- a/xserver/present/present_scmd.c
+++ b/xserver/present/present_scmd.c
@@ -361,8 +361,8 @@ present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
ScreenPtr screen = vblank->screen;
present_screen_priv_ptr screen_priv = present_screen_priv(screen);
- DebugPresent(("\tn %" PRIu64 " %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
- vblank->event_id, vblank, vblank->target_msc,
+ DebugPresent(("\tn %" PRIu64 " %p %" PRIu64 " %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
+ vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
vblank->pixmap ? vblank->pixmap->drawable.id : 0,
vblank->window ? vblank->window->drawable.id : 0));
@@ -482,7 +482,7 @@ present_check_flip_window (WindowPtr window)
vblank->flip = FALSE;
vblank->reason = reason;
if (vblank->sync_flip)
- vblank->requeue = TRUE;
+ vblank->exec_msc = vblank->target_msc;
}
}
}
@@ -608,6 +608,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
*/
screen_priv->flip_pending = NULL;
vblank->flip = FALSE;
+ vblank->exec_msc = vblank->target_msc;
}
DebugPresent(("\tc %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
vblank, crtc_msc, vblank->pixmap->drawable.id, vblank->window->drawable.id));
@@ -745,16 +746,19 @@ present_scmd_pixmap(WindowPtr window,
screen_priv->info ? &screen_priv->info->capabilities : NULL,
notifies,
num_notifies,
- &target_msc,
+ target_msc,
crtc_msc);
if (!vblank)
return BadAlloc;
+ if (vblank->flip && vblank->sync_flip)
+ vblank->exec_msc--;
+
xorg_list_append(&vblank->event_queue, &present_exec_queue);
vblank->queued = TRUE;
- if (msc_is_after(target_msc, crtc_msc)) {
- ret = present_queue_vblank(screen, window, target_crtc, vblank->event_id, target_msc);
+ if (msc_is_after(vblank->exec_msc, crtc_msc)) {
+ ret = present_queue_vblank(screen, window, target_crtc, vblank->event_id, vblank->exec_msc);
if (ret == Success)
return Success;
diff --git a/xserver/present/present_screen.c b/xserver/present/present_screen.c
index c7e37c5fd..bfd30b8ba 100644
--- a/xserver/present/present_screen.c
+++ b/xserver/present/present_screen.c
@@ -115,15 +115,13 @@ present_wnmd_clear_window_flip(WindowPtr window)
present_window_priv_ptr window_priv = present_window_priv(window);
present_vblank_ptr vblank, tmp;
- if (window_priv->flip_pending) {
- present_wnmd_set_abort_flip(window);
- window_priv->flip_pending->window = NULL;
+ xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->flip_queue, event_queue) {
+ present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
+ present_vblank_destroy(vblank);
}
xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
- /* The pixmap will be destroyed by freeing the window resources. */
- vblank->pixmap = NULL;
present_vblank_destroy(vblank);
}
diff --git a/xserver/present/present_vblank.c b/xserver/present/present_vblank.c
index 2c124f4bb..af14fe134 100644
--- a/xserver/present/present_vblank.c
+++ b/xserver/present/present_vblank.c
@@ -57,7 +57,7 @@ present_vblank_create(WindowPtr window,
const uint32_t *capabilities,
present_notify_ptr notifies,
int num_notifies,
- uint64_t *target_msc,
+ uint64_t target_msc,
uint64_t crtc_msc)
{
ScreenPtr screen = window->drawable.pScreen;
@@ -100,7 +100,8 @@ present_vblank_create(WindowPtr window,
vblank->x_off = x_off;
vblank->y_off = y_off;
- vblank->target_msc = *target_msc;
+ vblank->target_msc = target_msc;
+ vblank->exec_msc = target_msc;
vblank->crtc = target_crtc;
vblank->msc_offset = window_priv->msc_offset;
vblank->notifies = notifies;
@@ -111,12 +112,11 @@ present_vblank_create(WindowPtr window,
if (pixmap != NULL &&
!(options & PresentOptionCopy) &&
capabilities) {
- if (msc_is_after(*target_msc, crtc_msc) &&
+ if (msc_is_after(target_msc, crtc_msc) &&
screen_priv->check_flip (target_crtc, window, pixmap, TRUE, valid, x_off, y_off, &reason))
{
vblank->flip = TRUE;
vblank->sync_flip = TRUE;
- *target_msc = *target_msc - 1;
} else if ((*capabilities & PresentCapabilityAsync) &&
screen_priv->check_flip (target_crtc, window, pixmap, FALSE, valid, x_off, y_off, &reason))
{
@@ -139,7 +139,7 @@ present_vblank_create(WindowPtr window,
if (pixmap)
DebugPresent(("q %" PRIu64 " %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 " (crtc %p) flip %d vsync %d serial %d\n",
- vblank->event_id, vblank, *target_msc,
+ vblank->event_id, vblank, target_msc,
vblank->pixmap->drawable.id, vblank->window->drawable.id,
target_crtc, vblank->flip, vblank->sync_flip, vblank->serial));
return vblank;
@@ -153,8 +153,8 @@ no_mem:
void
present_vblank_scrap(present_vblank_ptr vblank)
{
- DebugPresent(("\tx %" PRIu64 " %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 " (crtc %p)\n",
- vblank->event_id, vblank, vblank->target_msc,
+ DebugPresent(("\tx %" PRIu64 " %p %" PRIu64 " %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 " (crtc %p)\n",
+ vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
vblank->pixmap->drawable.id, vblank->window->drawable.id,
vblank->crtc));
@@ -175,8 +175,8 @@ present_vblank_destroy(present_vblank_ptr vblank)
/* Also make sure vblank is removed from event queue (wnmd) */
xorg_list_del(&vblank->event_queue);
- DebugPresent(("\td %" PRIu64 " %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
- vblank->event_id, vblank, vblank->target_msc,
+ DebugPresent(("\td %" PRIu64 " %p %" PRIu64 " %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
+ vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
vblank->pixmap ? vblank->pixmap->drawable.id : 0,
vblank->window ? vblank->window->drawable.id : 0));
diff --git a/xserver/present/present_wnmd.c b/xserver/present/present_wnmd.c
index 82bae4022..a2e00cebb 100644
--- a/xserver/present/present_wnmd.c
+++ b/xserver/present/present_wnmd.c
@@ -42,6 +42,17 @@
static void
present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc);
+static int
+present_wnmd_queue_vblank(ScreenPtr screen,
+ WindowPtr window,
+ RRCrtcPtr crtc,
+ uint64_t event_id,
+ uint64_t msc)
+{
+ present_screen_priv_ptr screen_priv = present_screen_priv(screen);
+ return (*screen_priv->wnmd_info->queue_vblank) (window, crtc, event_id, msc);
+}
+
static void
present_wnmd_create_event_id(present_window_priv_ptr window_priv, present_vblank_ptr vblank)
{
@@ -111,7 +122,8 @@ present_wnmd_free_idle_vblanks(WindowPtr window)
present_vblank_ptr vblank, tmp;
xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
- present_wnmd_free_idle_vblank(vblank);
+ if (vblank->flip)
+ present_wnmd_free_idle_vblank(vblank);
}
if (window_priv->flip_active) {
@@ -168,8 +180,8 @@ present_wnmd_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_
WindowPtr window = vblank->window;
present_window_priv_ptr window_priv = present_window_priv(window);
- DebugPresent(("\tn %" PRIu64 " %p %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
- vblank->event_id, vblank, vblank->target_msc,
+ DebugPresent(("\tn %" PRIu64 " %p %" PRIu64 " %" PRIu64 ": %08" PRIx32 " -> %08" PRIx32 "\n",
+ vblank->event_id, vblank, vblank->exec_msc, vblank->target_msc,
vblank->pixmap ? vblank->pixmap->drawable.id : 0,
vblank->window ? vblank->window->drawable.id : 0));
@@ -234,7 +246,12 @@ present_wnmd_event_notify(WindowPtr window, uint64_t event_id, uint64_t ust, uin
xorg_list_for_each_entry(vblank, &window_priv->idle_queue, event_queue) {
if (vblank->event_id == event_id) {
- present_wnmd_free_idle_vblank(vblank);
+ if (vblank->flip)
+ present_wnmd_free_idle_vblank(vblank);
+ else
+ /* Copies which were executed but need their completion event sent */
+ present_execute_post(vblank, ust, msc);
+
return;
}
}
@@ -270,15 +287,13 @@ present_wnmd_check_flip(RRCrtcPtr crtc,
if (!screen_priv->wnmd_info->flip)
return FALSE;
- /* Can't flip redirected child windows */
- if (screen->GetWindowPixmap(window) != screen->GetWindowPixmap(toplvl_window))
- return FALSE;
-
/* Source pixmap must align with window exactly */
if (x_off || y_off)
return FALSE;
- // TODO: Check for valid region?
+ /* Valid area must contain window (for simplicity for now just never flip when one is set). */
+ if (valid)
+ return FALSE;
/* Flip pixmap must have same dimensions as window */
if (window->drawable.width != pixmap->drawable.width ||
@@ -289,6 +304,10 @@ present_wnmd_check_flip(RRCrtcPtr crtc,
if ( !RegionEqual(&window->winSize, &toplvl_window->winSize) )
return FALSE;
+ /* Can't flip if window clipped by children */
+ if (!RegionEqual(&window->clipList, &window->winSize))
+ return FALSE;
+
/* Ask the driver for permission */
if (screen_priv->wnmd_info->check_flip2) {
if (!(*screen_priv->wnmd_info->check_flip2) (crtc, window, pixmap, sync_flip, reason)) {
@@ -325,11 +344,11 @@ present_wnmd_check_flip_window (WindowPtr window)
if (flip_pending) {
if (!present_wnmd_check_flip(flip_pending->crtc, flip_pending->window, flip_pending->pixmap,
- flip_pending->sync_flip, NULL, 0, 0, NULL))
+ flip_pending->sync_flip, flip_pending->valid, 0, 0, NULL))
present_wnmd_set_abort_flip(window);
} else if (flip_active) {
if (!present_wnmd_check_flip(flip_active->crtc, flip_active->window, flip_active->pixmap,
- flip_active->sync_flip, NULL, 0, 0, NULL))
+ flip_active->sync_flip, flip_active->valid, 0, 0, NULL))
present_wnmd_flips_stop(window);
}
@@ -337,11 +356,9 @@ present_wnmd_check_flip_window (WindowPtr window)
xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) {
if (vblank->queued && vblank->flip &&
!present_wnmd_check_flip(vblank->crtc, window, vblank->pixmap,
- vblank->sync_flip, NULL, 0, 0, &reason)) {
+ vblank->sync_flip, vblank->valid, 0, 0, &reason)) {
vblank->flip = FALSE;
vblank->reason = reason;
- if (vblank->sync_flip)
- vblank->requeue = TRUE;
}
}
}
@@ -441,6 +458,7 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
vblank->queued = FALSE;
if (vblank->pixmap && vblank->window) {
+ ScreenPtr screen = window->drawable.pScreen;
if (vblank->flip) {
RegionPtr damage;
@@ -455,10 +473,13 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
/* Set update region as damaged */
if (vblank->update) {
- damage = vblank->update;
+ damage = RegionDuplicate(vblank->update);
+ /* Translate update region to screen space */
+ assert(vblank->x_off == 0 && vblank->y_off == 0);
+ RegionTranslate(damage, window->drawable.x, window->drawable.y);
RegionIntersect(damage, damage, &window->clipList);
} else
- damage = &window->clipList;
+ damage = RegionDuplicate(&window->clipList);
/* Try to flip - the vblank is now pending
*/
@@ -466,7 +487,6 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
// ask the driver
if (present_wnmd_flip(vblank->window, vblank->crtc, vblank->event_id,
vblank->target_msc, vblank->pixmap, vblank->sync_flip, damage)) {
- ScreenPtr screen = window->drawable.pScreen;
WindowPtr toplvl_window = present_wnmd_toplvl_pixmap_window(vblank->window);
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
@@ -481,6 +501,7 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
/* Report damage */
DamageDamageRegion(&vblank->window->drawable, damage);
+ RegionDestroy(damage);
return;
}
@@ -496,9 +517,12 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
present_wnmd_cancel_flip(window);
present_execute_copy(vblank, crtc_msc);
+ assert(!vblank->queued);
- if (vblank->queued) {
- xorg_list_add(&vblank->event_queue, &window_priv->exec_queue);
+ if (present_wnmd_queue_vblank(screen, window, vblank->crtc,
+ vblank->event_id, crtc_msc + 1)
+ == Success) {
+ xorg_list_add(&vblank->event_queue, &window_priv->idle_queue);
xorg_list_append(&vblank->window_list, &window_priv->vblank);
return;
@@ -508,17 +532,6 @@ present_wnmd_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
present_execute_post(vblank, ust, crtc_msc);
}
-static int
-present_wnmd_queue_vblank(ScreenPtr screen,
- WindowPtr window,
- RRCrtcPtr crtc,
- uint64_t event_id,
- uint64_t msc)
-{
- present_screen_priv_ptr screen_priv = present_screen_priv(screen);
- return (*screen_priv->wnmd_info->queue_vblank) (window, crtc, event_id, msc);
-}
-
static uint64_t
present_wnmd_window_to_crtc_msc(WindowPtr window, RRCrtcPtr crtc, uint64_t window_msc, uint64_t new_msc)
{
@@ -624,15 +637,20 @@ present_wnmd_pixmap(WindowPtr window,
&screen_priv->wnmd_info->capabilities,
notifies,
num_notifies,
- &target_msc,
+ target_msc,
crtc_msc);
if (!vblank)
return BadAlloc;
+ /* WNMD presentations always complete (at least) one frame after they
+ * are executed
+ */
+ vblank->exec_msc = vblank->target_msc - 1;
+
xorg_list_append(&vblank->event_queue, &window_priv->exec_queue);
vblank->queued = TRUE;
- if (crtc_msc < target_msc) {
- if (present_wnmd_queue_vblank(screen, window, target_crtc, vblank->event_id, target_msc) == Success) {
+ if (crtc_msc < vblank->exec_msc) {
+ if (present_wnmd_queue_vblank(screen, window, target_crtc, vblank->event_id, vblank->exec_msc) == Success) {
return Success;
}
DebugPresent(("present_queue_vblank failed\n"));
diff --git a/xserver/pseudoramiX/Makefile.in b/xserver/pseudoramiX/Makefile.in
index 9be9786d9..5d6329649 100644
--- a/xserver/pseudoramiX/Makefile.in
+++ b/xserver/pseudoramiX/Makefile.in
@@ -473,6 +473,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/randr/Makefile.in b/xserver/randr/Makefile.in
index 82ff00b40..bc24a1ee7 100644
--- a/xserver/randr/Makefile.in
+++ b/xserver/randr/Makefile.in
@@ -513,6 +513,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/randr/rrcrtc.c b/xserver/randr/rrcrtc.c
index ae7e30605..7839a0eda 100644
--- a/xserver/randr/rrcrtc.c
+++ b/xserver/randr/rrcrtc.c
@@ -2012,9 +2012,15 @@ RRReplaceScanoutPixmap(DrawablePtr pDrawable, PixmapPtr pPixmap, Bool enable)
Bool
RRHasScanoutPixmap(ScreenPtr pScreen)
{
- rrScrPriv(pScreen);
+ rrScrPrivPtr pScrPriv;
int i;
+ /* Bail out if RandR wasn't initialized. */
+ if (!dixPrivateKeyRegistered(rrPrivKey))
+ return FALSE;
+
+ pScrPriv = rrGetScrPriv(pScreen);
+
if (!pScreen->is_output_slave)
return FALSE;
diff --git a/xserver/record/Makefile.in b/xserver/record/Makefile.in
index e87057861..696011283 100644
--- a/xserver/record/Makefile.in
+++ b/xserver/record/Makefile.in
@@ -471,6 +471,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/render/Makefile.in b/xserver/render/Makefile.in
index d76403f4b..002a1c6c2 100644
--- a/xserver/render/Makefile.in
+++ b/xserver/render/Makefile.in
@@ -504,6 +504,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/test/Makefile.in b/xserver/test/Makefile.in
index 67e9e07f2..fec20a30f 100644
--- a/xserver/test/Makefile.in
+++ b/xserver/test/Makefile.in
@@ -660,6 +660,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/xfixes/Makefile.in b/xserver/xfixes/Makefile.in
index d74cdb634..dad4f898e 100644
--- a/xserver/xfixes/Makefile.in
+++ b/xserver/xfixes/Makefile.in
@@ -472,6 +472,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@
diff --git a/xserver/xkb/Makefile.in b/xserver/xkb/Makefile.in
index 38fd61f9d..d6abe6cdc 100644
--- a/xserver/xkb/Makefile.in
+++ b/xserver/xkb/Makefile.in
@@ -511,6 +511,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@