update xserver to version 1.19.7

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

update xserver to version 1.19.7

Matthieu Herrb-3
Hi,

the patch below updates the X server to version 1.19.7. It's a bug-fix
release. You'll find the change log at the begining of the patch.

To test, apply the patch with patch -p0 -E in /usr/xenocara/xserver,
and then re build xenocara as documented in release(8).

The patch is also available at https://herrb.eu/xserver-1.19.7.diff

Test reports and/or Oks welcome,

Thanks,

Index: ChangeLog
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/ChangeLog,v
retrieving revision 1.31
diff -u -p -u -r1.31 ChangeLog
--- ChangeLog 18 Feb 2018 17:16:37 -0000 1.31
+++ ChangeLog 3 Mar 2019 09:25:45 -0000
@@ -1,3 +1,547 @@
+commit 937391523eef6459d1f8b1ae25fe7e1f77b8a12a
+Author: Kevin Brace <[hidden email]>
+Date:   Sat Mar 2 14:13:20 2019 -0800
+
+    xserver 1.19.7
+    
+    Signed-off-by: Kevin Brace <[hidden email]>
+
+commit a93f8f74b54accfb94a8c56357e566db76c24b22
+Author: Kevin Brace <[hidden email]>
+Date:   Sat Mar 2 14:10:41 2019 -0800
+
+    Update configure.ac bug URL for gitlab migration
+    
+    It is based on Alan Coopersmith's commit for various fd.o projects.
+    
+    Signed-off-by: Kevin Brace <[hidden email]>
+
+commit af63efe470417cde8a64068b1e6965b2677d92d9
+Author: Kevin Brace <[hidden email]>
+Date:   Thu Dec 13 22:32:27 2018 -0600
+
+    Add 24-bit color support to exaGetPixmapFirstPixel
+    
+    It appears that people who developed EXA forgot that there used to be
+    graphics devices that used 24-bits (3 bytes) instead of 32-bits (4 bytes)
+    in order to display one pixel. The lack of 24-bit color support inside
+    exaGetPixmapFirstPixel causes SiS 6326 to crash when running Xfce since
+    SiS 6326 does not support 32-bit color.
+    
+    Signed-off-by: Kevin Brace <[hidden email]>
+
+commit 56547b196660e246e37132960723819972b99c8c
+Author: Mario Kleiner <[hidden email]>
+Date:   Mon Feb 5 11:20:41 2018 +0100
+
+    glx: Only assign 8 bpc fbconfigs for composite visuals.
+    
+    Commit 91c42093b248 ("glx: Duplicate relevant fbconfigs for
+    compositing visuals") adds many new depth 32 fbconfigs as
+    composite visuals. On a X-Screen running at depth 24, this
+    also adds bgra 10-10-10-2 fbconigs, as they also have
+    config.rgbBits == 32, but these are not displayable on a
+    depth 24 screen, leading to visually corrupted desktops
+    under some compositors, e.g., fdo bug 104597 "Compton
+    weird colors" when running compton with
+    "compton --backend glx".
+    
+    Be more conservative for now and only select fbconfigs with
+    8 bpc red, green, blue components for composite visuals.
+    
+    Fixes: 91c42093b248 ("glx: Duplicate relevant fbconfigs for
+                          compositing visuals")
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104597
+    Signed-off-by: Mario Kleiner <[hidden email]>
+    Reviewed-by: Thomas Hellstrom <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit bebcc8477c8070ade9dd4be7299c718baeab3d7a)
+
+commit e96bd477395af3c2c3157ebda0f55ea4b672a114
+Author: Lyude Paul <[hidden email]>
+Date:   Tue Feb 6 12:41:47 2018 -0500
+
+    xwayland: Don't process cursor warping without an xwl_seat
+    
+    Unfortunately, on my machine Xwayland immediately crashes when I try to
+    start it. gdb backtrace:
+    
+     #0  0x00007ffff74f0e79 in wl_proxy_marshal () from target:/lib64/libwayland-client.so.0
+     #1  0x0000000000413172 in zwp_confined_pointer_v1_destroy (zwp_confined_pointer_v1=0x700000000)
+         at hw/xwayland/Xwayland@exe/pointer-constraints-unstable-v1-client-protocol.h:612
+     #2  0x0000000000418bc0 in xwl_seat_destroy_confined_pointer (xwl_seat=0x8ba2a0)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2839
+     #3  0x0000000000418c09 in xwl_seat_unconfine_pointer (xwl_seat=0x8ba2a0)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2849
+     #4  0x0000000000410d97 in xwl_cursor_confined_to (device=0xa5a000, screen=0x8b9d80, window=0x9bdb70)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland.c:328
+     #5  0x00000000004a8571 in ConfineCursorToWindow (pDev=0xa5a000, pWin=0x9bdb70, generateEvents=1,
+         confineToScreen=0) at /home/lyudess/Projects/xserver/dix/events.c:900
+     #6  0x00000000004a94b7 in ScreenRestructured (pScreen=0x8b9d80)
+         at /home/lyudess/Projects/xserver/dix/events.c:1387
+     #7  0x0000000000502386 in RRScreenSizeNotify (pScreen=0x8b9d80)
+         at /home/lyudess/Projects/xserver/randr/rrscreen.c:160
+     #8  0x000000000041a83c in update_screen_size (xwl_output=0x8e7670, width=3840, height=2160)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:203
+     #9  0x000000000041a9f0 in apply_output_change (xwl_output=0x8e7670)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:252
+     #10 0x000000000041aaeb in xdg_output_handle_done (data=0x8e7670, xdg_output=0x8e7580)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-output.c:307
+     #11 0x00007ffff50e9d1e in ffi_call_unix64 () at ../src/x86/unix64.S:76
+     #12 0x00007ffff50e968f in ffi_call (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>,
+         avalue=<optimized out>) at ../src/x86/ffi64.c:525
+     #13 0x00007ffff74f3d8b in wl_closure_invoke () from target:/lib64/libwayland-client.so.0
+     #14 0x00007ffff74f0928 in dispatch_event.isra () from target:/lib64/libwayland-client.so.0
+     #15 0x00007ffff74f1be4 in wl_display_dispatch_queue_pending () from target:/lib64/libwayland-client.so.0
+     #16 0x00007ffff74f200b in wl_display_roundtrip_queue () from target:/lib64/libwayland-client.so.0
+     #17 0x0000000000418cad in InitInput (argc=12, argv=0x7fffffffd9c8)
+         at /home/lyudess/Projects/xserver/hw/xwayland/xwayland-input.c:2867
+     #18 0x00000000004a20e3 in dix_main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
+         at /home/lyudess/Projects/xserver/dix/main.c:250
+     #19 0x0000000000420cb2 in main (argc=12, argv=0x7fffffffd9c8, envp=0x7fffffffda30)
+        at /home/lyudess/Projects/xserver/dix/stubmain.c:34
+    
+    This appears to be the result of xwl_cursor_confined_to() and
+    xwl_screen_get_default_seat(). While not against protocol, mutter ends
+    up sending xdg_output before wl_seat. xwl_screen_get_default_seat()
+    makes the naïve assumption that we always have a valid seat, we end up
+    returning a pointer to the empty list itself instead of an actual seat
+    and causing ourselves to segfault.
+    
+    So, actually return NULL in xwl_screen_get_default_seat() if the seat
+    list is empty, and skip any pointer confinement processing in
+    xwl_cursor_confined_to() when we don't have a seat setup yet.
+    
+    Signed-off-by: Lyude Paul <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 98edb9a35e2cdd61355656b82975d7f2b6a9f0e6)
+
+commit 61d3f56877b23241757490efcdb759b905caca1d
+Author: Alex Goins <[hidden email]>
+Date:   Mon Jan 8 18:44:25 2018 -0800
+
+    randr: Fix rotation check in ProcRRSetScreenSize()
+    
+    ProcRRSetScreenSize() does bounds checking to ensure that none of the CRTCs have
+    a viewport that extends beyond the new screen size. In doing so, it accounts for
+    if the CRTC is rotated 90 or 270 degrees, swapping width and height.
+    
+    However, it does so by testing if crtc->rotation is equal to RR_Rotate_90 or
+    RR_Rotate_270. crtc->rotation is a bit mask, and it includes reflection as well
+    as rotation. If a CRTC is reflected as well as rotated, it will incorrectly fail
+    this test, resulting in incorrect dimensions being used to verify the validity
+    of the new screen size. In some cases, this can cause valid uses of
+    ProcRRSetScreenSize() to fail with BadMatch.
+    
+    This patch fixes the issue by testing that the bits RR_Rotate_90 or
+    RR_Rotate_270 are set, rather than testing for equality.
+    
+    Signed-off-by: Alex Goins <[hidden email]>
+    Reviewed-by: Michel Dänzer <[hidden email]>
+    (cherry picked from commit 6b26a7bda9efa93440734ede0382a3e9a6761365)
+
+commit cb908a7840487e4b81aa16c5b3a4b609ff1153fc
+Author: Jeff Smith <[hidden email]>
+Date:   Fri Jan 26 06:25:22 2018 -0600
+
+    glamor: tidy up some gradient color formulas
+    
+    - Avoid some needlessly complex equations for calculating the color at a
+      point in a gradient field.
+    - Avoid calculating certain values multiple times.
+    - Use similar variable names across the two versions of the get_color
+      function where practical.
+    
+    Signed-off-by: Jeff Smith <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit ff410c56bfd6dcdf5d252ef0ba3f4c6fde91774b)
+
+commit b41bb8147e706cb8e615842e08a548b7e8afd279
+Author: Jeff Smith <[hidden email]>
+Date:   Fri Jan 26 06:25:21 2018 -0600
+
+    glamor: remove unused variables in linear gradient shader
+    
+    Signed-off-by: Jeff Smith <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 3bd17dff1ac5a4685a5da92a9982f621effee658)
+
+commit c715645c14ec00cd49e6bb86340351fa97ab6ea0
+Author: Jeff Smith <[hidden email]>
+Date:   Fri Jan 26 06:25:20 2018 -0600
+
+    glamor: fix no-reflect case for gradients
+    
+    When compositing a no-reflect gradient, 'before' the gradient is empty,
+    but 'after' the gradient is padded with the final color.  Both sides are
+    supposed to be empty.
+    
+    This is fixed by moving the virtual stops to match the first and last
+    client-supplied stops for no-reflect gradients, then causing everything
+    'before' the initial virtual stop and 'after' the final virtual stop to
+    emit rgba(0,0,0,0).  This does not impact gradients using the other
+    reflect modes.
+    
+    Signed-off-by: Jeff Smith <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 5815c7b5951fd46d69e5c40144b64e516c7afdbf)
+
+commit 38e6fb757386e2cb2c51a27e52346473d4ffb9a1
+Author: Jeff Smith <[hidden email]>
+Date:   Fri Jan 26 06:25:19 2018 -0600
+
+    glamor: fix repeat-reflect case in linear gradient shader
+    
+    If _pt_distance is negative, it causes the final distance to be negative
+    in the repeat-reflect case.  Moving the scaling by _pt_distance earlier
+    avoids this problem, and simplifies some equations as a bonus.
+    
+    Bugzilla: https://bugs.freedesktop.org/98508
+    Signed-off-by: Jeff Smith <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 3e377e238f7257fd01e56a4a25dfd77e033673e4)
+
+commit f6cd99ed79c17e3aa04b8821d10ca95939bd8675
+Author: Olivier Fourdan <[hidden email]>
+Date:   Wed Jan 24 17:45:37 2018 +0100
+
+    xwayland: remove dirty window unconditionally on unrealize
+    
+    This is a rare occurrence of a crash in Xwayland for which I don't have
+    the reproducing steps, just a core file.
+    
+    The backtrace looks as follow:
+    
+      #0  raise () from /usr/lib64/libc.so.6
+      #1  abort () from /usr/lib64/libc.so.6
+      #2  OsAbort () at utils.c:1361
+      #3  AbortServer () at log.c:877
+      #4  FatalError () at log.c:1015
+      #5  OsSigHandler () at osinit.c:154
+      #6  <signal handler called>
+      #7  xwl_glamor_pixmap_get_wl_buffer () at xwayland-glamor.c:162
+      #8  xwl_screen_post_damage () at xwayland.c:514
+      #9  block_handler () at xwayland.c:665
+      #10 BlockHandler () at dixutils.c:388
+      #11 WaitForSomething () at WaitFor.c:219
+      #12 Dispatch () at dispatch.c:422
+      #13 dix_main () at main.c:287
+    
+    The crash is caused by dereferencing “xwl_pixmap->buffer” in
+    xwl_glamor_pixmap_get_wl_buffer() because “xwl_pixmap” is NULL.
+    
+    Reason for this is because the corresponding pixmap is from the root
+    window and xwayland is rootless by default.
+    
+    This can happen if the window was mapped, redirected, damaged and
+    unredirected immediately, before the damage is processed by Xwayland.
+    
+    Make sure to remove the dirty window from the damage list on unrealize
+    to prevent this from happening.
+    
+    Credit goes to Adam Jackson <[hidden email]> and Daniel Stone
+    <[hidden email]> for finding the root cause the issue.
+    
+    Signed-off-by: Olivier Fourdan <[hidden email]>
+    Reviewed-by: Daniel Stone <[hidden email]>
+    (cherry picked from commit 3362422e8413dd9f231cfac50ce0a0862525b1bf)
+
+commit 9cd243f75dc52e1c649178963ab22583db52cd54
+Author: Michal Srb <[hidden email]>
+Date:   Mon Nov 27 09:59:01 2017 +0100
+
+    os/inputthread: Force unlock when stopping thread.
+    
+    The inputthread is kept locked all the time while X server's VT is not active.
+    If the X server is terminated while not active, it will be stuck forever in
+    InputThreadFini waiting for the thread to join, but it wouldn't because it is
+    locked.
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=103782
+    Signed-off-by: Michal Srb <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 71348e99a8e6a95542e483b93839168ca8f51f81)
+
+commit 5c456b6e2a9a579e67ba577f9147642406f2ce99
+Author: Peter Harris <[hidden email]>
+Date:   Thu Dec 14 12:21:19 2017 -0500
+
+    composite: Propagate damagedDescendants when reparented
+    
+    If a window that is fully covered by an automatic-redirected descendant
+    (even implicitly, eg. via BackingStores) is reparented, the automatic
+    updates could be broken if the new parent is not marked as having
+    damaged descendants.
+    
+    Fix this issue by propagating the damagedDescendants flag whenever a
+    window is reparented.
+    
+    Reviewed-by: Adam Jackson <[hidden email]>
+    Signed-off-by: Peter Harris <[hidden email]>
+    (cherry picked from commit d5c23b29487d5ff440abf5ed0beb22c00f21e387)
+
+commit df319f889ddc952dd065bbb3252d045b90baaf8e
+Author: Michel Dänzer <[hidden email]>
+Date:   Wed Jan 24 12:28:38 2018 +0100
+
+    xf86XvMCScreenInit: Clear pScreenPriv->dixinfo when freeing pAdapt
+    
+    Fixes double-free later in xf86XvMCCloseScreen, which would generally
+    cause fireworks.
+    
+    Reviewed-by: Adam Jackson <[hidden email]>
+    Signed-off-by: Michel Dänzer <[hidden email]>
+    (cherry picked from commit 75408f53d4e203e462b2f13ea4b06264f0e59ad2)
+
+commit d0d1a694f967af770fba0d36043fd5218ff20984
+Author: Michel Dänzer <[hidden email]>
+Date:   Wed Jan 24 11:40:50 2018 +0100
+
+    Revert "present: Only send PresentCompleteNotify events to the presenting client"
+    
+    This reverts commit 5c00e693631475679c1c2504e03177652ec7de28.
+    
+    It broke the Gallium nine state tracker, which makes PresentPixmap
+    requests on one display connection and processes the corresponding
+    events on another one.
+    
+    The issue that motivated this change is prevented on the client side by
+    https://cgit.freedesktop.org/mesa/mesa/commit/?id=7b0e8264dd21ae05521d08d41fecd84139401fef
+    
+    Bugzilla: https://bugs.freedesktop.org/104678
+    (cherry picked from commit 76732f498f1e73fb081841a04faf068660f3d5c7)
+
+commit 8be1dbeacf5f29c0b538414e87d47c9d5af08d9d
+Author: Martin Wilck <[hidden email]>
+Date:   Tue Jan 9 20:33:09 2018 +0100
+
+    xfree86: add default modes for 16:9 and 16:10
+    
+    Improve the user experience for users with wide screens by adding standard
+    16:9 and 16:10 modes to extramodes, as suggested previously
+    (https://lists.x.org/archives/xorg-devel/2016-February/048866.html).
+    Tested successfully on my laptop. Feedback welcome.
+    
+    See also https://bugs.freedesktop.org/show_bug.cgi?id=37858.
+    
+    Signed-off-by: Martin Wilck <[hidden email]>
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit a5e9bcad7ad0887f804905b482894b85751519fb)
+
+commit 71269c6e57cec82bbf81b1c99c8019098303d6a3
+Author: Adam Jackson <[hidden email]>
+Date:   Wed Dec 13 14:53:56 2017 -0500
+
+    os: Fix a type error in the IPv6 XDMCP code
+    
+    Building with strict-aliasing rightly chirps here:
+    
+    ../os/xdmcp.c: In function ‘XdmcpRegisterConnection’:
+    ../os/xdmcp.c:489:31: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
+                         &((struct sockaddr_in6 *) &address)->sin6_addr.s6_addr[12];
+                                   ^~~~~~~~~~~~
+    
+    We have "const char *address", so &address here is a char ** (i.e., it
+    points to the slot on the stack containing the pointer to the character
+    array passed in as an argument). Casting that to a struct sockaddr_in6 *
+    is wrong, because it means that area of the stack will be reinterpreted
+    as a struct sockaddr_in6.
+    
+    Instead, cast address, not &address.
+    
+    Signed-off-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 652913cd9474946bcb29271602bacfd98f46ad0b)
+
+commit 8f11ab2b475623d5c00e146a7d6108f356a16b52
+Author: Helmut Grohne <[hidden email]>
+Date:   Thu Dec 21 11:48:15 2017 +0100
+
+    build: guess availability of monotonic clock for cross compilation
+    
+    When cross compiling, the value of MONOTONIC_CLOCK would be "cross
+    compiling", because AC_RUN_IFELSE doesn't work. However when enabling
+    wayland, a monotonic clock is required and configure aborts.
+    
+    We change detection of CLOCK_MONOTONIC to degrade it gracefully from a
+    run check to a declaration check in case of cross compilation based on
+    the assumption that most systems will have a monotonic clock and those
+    that don't won't be able to run Xwayland anyway. The trade-off
+    essentially is either "always fail cross compilation" or "produce an
+    unusable Xwayland for unusual platform" and this commit switches to the
+    latter.
+    
+    Signed-off-by: Helmut Grohne <[hidden email]>
+    Bug-Debian: https://bugs.debian.org/882531
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit c601c8faf54ff9e3bcbc653421828d71042deef7)
+
+commit 7cec7fb7bc34ea857e2d40ad32ead8a328dbe1a1
+Author: Peter Hutterer <[hidden email]>
+Date:   Fri Jan 5 11:58:42 2018 +1000
+
+    config: fix NULL value detection for ID_INPUT being unset
+    
+    Erroneous condition caused us to keep going with all devices that didn't have
+    ID_INPUT set.
+    
+    Fixes: 5aad81445c8c3d6
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104382
+    Reviewed-by: Adam Jackson <[hidden email]>
+    Signed-off-by: Peter Hutterer <[hidden email]>
+    (cherry picked from commit a309323328d9d6e0bf5d9ea1d75920e53b9beef3)
+
+commit 16896d05a6a2a91fd53cf6af56ce5e79f6abb500
+Author: Corentin Rossignon <[hidden email]>
+Date:   Thu Jan 4 08:34:01 2018 +0100
+
+    glamor: Specify GLSL version for xv shader
+    
+    SAMPLE is a GLSL keyword in newer OpenGL version.
+    This fix issue with gnome-shell and playing video using xv
+    
+    Signed-off-by: Corentin Rossignon <[hidden email]>
+    Bugzilla: https://bugs.freedesktop.org/104405
+    Reviewed-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit dbfbe58b94ec07a45fd6170f96bffec55051724e)
+
+commit 5e83ebd76738455c443a66024b0b5eb92930b36c
+Author: Adam Jackson <[hidden email]>
+Date:   Tue Jan 9 10:54:05 2018 -0500
+
+    animcur: Fix transitions between animated cursors
+    
+    We weren't cancelling the old timer when changing cursors, making things
+    go all crashy. Logically we could always cancel the timer first, but
+    then we'd have to call TimerSet to re-arm ourselves, and GetTimeInMillis
+    is potentially expensive.
+    
+    Reported-by: https://devtalk.nvidia.com/default/topic/1028172/linux/titan-v-ubuntu-16-04lts-and-387-34-driver-crashes-badly/post/5230967/#5230967
+    Signed-off-by: Adam Jackson <[hidden email]>
+    Reviewed-by: Aaron Plattner <[hidden email]>
+    Tested-by: Aaron Plattner <[hidden email]>
+    (cherry picked from commit de60245e05c0d2528d4ff42557a044387e53315c)
+
+commit 693f0e21d55d6e9fe792d91e76e4168aa813db71
+Author: Adam Jackson <[hidden email]>
+Date:   Thu Oct 26 15:24:39 2017 -0400
+
+    animcur: Run the timer from the device, not the screen
+    
+    This is very slightly more efficient since the callback now doesn't need
+    to walk every input device, instead we know exactly which device's
+    cursor is being updated. AnimCurTimerNotify() gets outdented nicely as a
+    result. A more important side effect is that we can stop using the
+    TimerAbsolute mode and just pass in the relative delay.
+    
+    In AnimCurSetCursorPosition, we no longer need to rearm the timer with
+    the new screen; it is enough to update the device's state. In
+    AnimCurDisplayCursor we need to notice when we're switching from
+    animated cursor to regular and cancel the existing timer.
+    
+    Reviewed-by: Robert Morell <[hidden email]>
+    Tested-by: Robert Morell <[hidden email]>
+    Signed-off-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 094a63d56fbfb9e23210cc9ac538fb198af37cee)
+
+commit 354c48304d27f75b7c33c03a0adb050c37788ccf
+Author: Adam Jackson <[hidden email]>
+Date:   Thu Oct 26 13:53:06 2017 -0400
+
+    animcur: Return the next interval directly from the timer callback
+    
+    If the return value is non-zero here, DoTimer() will automatically rearm
+    the timer for the new (relative) delay. 'soonest' is in absolute time,
+    so subtract off 'now' and return that.
+    
+    Reviewed-by: Robert Morell <[hidden email]>
+    Tested-by: Robert Morell <[hidden email]>
+    Signed-off-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit cc3241a712684f8c7147f5688e9ee3ecb5a93b87)
+
+commit 26841b2c9ea03fda8b2d0da254e0344fd2a3afce
+Author: Adam Jackson <[hidden email]>
+Date:   Thu Oct 26 13:40:57 2017 -0400
+
+    animcur: Use fixed-size screen private
+    
+    Reviewed-by: Robert Morell <[hidden email]>
+    Tested-by: Robert Morell <[hidden email]>
+    Signed-off-by: Adam Jackson <[hidden email]>
+    (cherry picked from commit 3abbdb7318018584a27220737bd92081ce8ee67c)
+
+commit 725b4b46ff59a8db84d8c12fec02c6b1d94b27ce
+Author: Lukáš Krejčí <[hidden email]>
+Date:   Sat Dec 30 23:46:45 2017 +0100
+
+    Xorg.wrap: Ensure correct ordering of post-install hook
+    
+    The install rule of Xorg.wrap is currently a dependency of the
+    install-data target instead of the install-exec target. The build also
+    uses install-exec-hook to change the ownership and set the SUID bit on
+    the Xorg.wrap binary. The problem is that install-exec-hook is only
+    ordered respective to the install-exec target, the rules of install-data
+    may or may not have been executed.
+    
+    If install-exec-hook runs before the Xorg.wrap binary is in place,
+    a message similar to the following will be present in the build log:
+    
+    chown: cannot access '/pkgdir/usr/lib/xorg-server/Xorg.wrap': No such file or directory
+    make[6]: [Makefile:1151: install-exec-hook] Error 1 (ignored)
+    
+    All that needs to be done is to change the name of the program variable
+    to contain 'exec' for the install rule to depend on the install-exec
+    target.
+    
+    Excerpt from the Automake manual, chapter 12.2 The Two Parts of Install:
+    "Any variable using a user-defined directory prefix with ‘exec’ in the
+    name (e.g., myexecbin_PROGRAMS) is installed by install-exec. All other
+    user-defined prefixes are installed by install-data."
+    
+    https://bugs.freedesktop.org/show_bug.cgi?id=104419
+    
+    Signed-off-by: Lukáš Krejčí <[hidden email]>
+    Acked-by: Hans de Goede <[hidden email]>
+    Reviewed-by: Peter Hutterer <[hidden email]>
+    Signed-off-by: Peter Hutterer <[hidden email]>
+    (cherry picked from commit f615cb62d47cb24ea31718e8226df53ce6651c91)
+
+commit 16fd18479d2f617adf0e6de922586441be3808eb
+Author: Olivier Fourdan <[hidden email]>
+Date:   Fri Dec 15 16:43:47 2017 +0100
+
+    xwayland: avoid race condition on new keymap
+    
+    When the Wayland compositor notifies of a new keymap, for the first X11
+    client using the keyboard, the last slave keyboard used might still not
+    be set (i.e. “lastSlave” is still NULL).
+    
+    As a result, the new keymap is not applied, and the first X11 window
+    will have the wrong keymap set initially.
+    
+    Apply the new keymap to the master keyboard as long as there's one.
+    
+    Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=791383
+    Signed-off-by: Olivier Fourdan <[hidden email]>
+    Reviewed-by: Peter Hutterer <[hidden email]>
+    Signed-off-by: Peter Hutterer <[hidden email]>
+    (cherry picked from commit 170c95978530f6373bdf4488116902b273f3abf4)
+
+commit a13271f2feb6e480b2e698d4efa3b94150a6808b
+Author: Tapani Pälli <[hidden email]>
+Date:   Tue Nov 28 09:23:29 2017 +0200
+
+    glx: do not pick sRGB config for 32-bit RGBA visual
+    
+    This fixes blending issues seen with kwin and gnome-shell when
+    32bit visual has sRGB capability set.
+    
+    Reviewed-by: Adam Jackson <[hidden email]>
+    Signed-off-by: Tapani Pälli <[hidden email]>
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103699
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103646
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103655
+    (cherry picked from commit c2954b16c8730c7ed8441fd8dba25900f3aed265)
+
 commit ebfb06b11955a6c32500b7086be912ab96b753a7
 Author: Adam Jackson <[hidden email]>
 Date:   Wed Dec 20 14:23:57 2017 -0500
Index: Makefile.in
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/Makefile.in,v
retrieving revision 1.36
diff -u -p -u -r1.36 Makefile.in
--- Makefile.in 8 Dec 2017 15:01:59 -0000 1.36
+++ Makefile.in 3 Mar 2019 09:27:12 -0000
@@ -55,7 +55,7 @@ DIST_COMMON = README $(am__configure_dep
  $(srcdir)/Makefile.in $(srcdir)/xorg-server.pc.in \
  $(srcdir)/xserver.ent.in $(top_srcdir)/configure COPYING \
  ChangeLog INSTALL config.guess config.sub depcomp install-sh \
- ltmain.sh missing ylwrap
+ ltmain.sh missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
  $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
Index: aclocal.m4
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/aclocal.m4,v
retrieving revision 1.33
diff -u -p -u -r1.33 aclocal.m4
--- aclocal.m4 8 Dec 2017 15:01:59 -0000 1.33
+++ aclocal.m4 3 Mar 2019 09:27:05 -0000
@@ -19,32 +19,63 @@ You have another version of autoconf.  I
 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'.])])
 
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <[hidden email]>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
+dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+dnl serial 11 (pkg-config-0.29.1)
+dnl
+dnl Copyright © 2004 Scott James Remnant <[hidden email]>.
+dnl Copyright © 2012-2015 Dan Nicholson <[hidden email]>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+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_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
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
 AC_DEFUN([PKG_PROG_PKG_CONFIG],
 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
 m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
@@ -66,18 +97,19 @@ if test -n "$PKG_CONFIG"; then
  PKG_CONFIG=""
  fi
 fi[]dnl
-])# PKG_PROG_PKG_CONFIG
+])dnl PKG_PROG_PKG_CONFIG
 
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
 AC_DEFUN([PKG_CHECK_EXISTS],
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
 if test -n "$PKG_CONFIG" && \
@@ -87,8 +119,10 @@ m4_ifvaln([$3], [else
   $3])dnl
 fi])
 
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
 m4_define([_PKG_CONFIG],
 [if test -n "$$1"; then
     pkg_cv_[]$1="$$1"
@@ -100,10 +134,11 @@ m4_define([_PKG_CONFIG],
  else
     pkg_failed=untried
 fi[]dnl
-])# _PKG_CONFIG
+])dnl _PKG_CONFIG
 
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
 AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])
 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -111,19 +146,17 @@ if $PKG_CONFIG --atleast-pkgconfig-versi
 else
         _pkg_short_errors_supported=no
 fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
 
 
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
 AC_DEFUN([PKG_CHECK_MODULES],
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
 AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
@@ -177,16 +210,40 @@ else
         AC_MSG_RESULT([yes])
  $3
 fi[]dnl
-])# PKG_CHECK_MODULES
+])dnl PKG_CHECK_MODULES
 
 
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl   [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
 AC_DEFUN([PKG_INSTALLDIR],
 [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
 m4_pushdef([pkg_description],
@@ -197,16 +254,18 @@ AC_ARG_WITH([pkgconfigdir],
 AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
 m4_popdef([pkg_default])
 m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
+])dnl PKG_INSTALLDIR
 
 
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
 AC_DEFUN([PKG_NOARCH_INSTALLDIR],
 [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
 m4_pushdef([pkg_description],
@@ -217,7 +276,24 @@ AC_ARG_WITH([noarch-pkgconfigdir],
 AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
 m4_popdef([pkg_default])
 m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
 
 # Copyright (C) 2002-2012 Free Software Foundation, Inc.
 #
@@ -1659,7 +1735,7 @@ AC_DEFUN([XORG_FONTDIR],[XORG_FONTSUBDIR
 
 dnl xorg-macros.m4.  Generated from xorg-macros.m4.in xorgversion.m4 by configure.
 dnl
-dnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+dnl Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
 dnl
 dnl Permission is hereby granted, free of charge, to any person obtaining a
 dnl copy of this software and associated documentation files (the "Software"),
@@ -1696,7 +1772,7 @@ dnl DEALINGS IN THE SOFTWARE.
 # See the "minimum version" comment for each macro you use to see what
 # version you require.
 m4_defun([XORG_MACROS_VERSION],[
-m4_define([vers_have], [1.19.0])
+m4_define([vers_have], [1.19.2])
 m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
 m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
 m4_if(m4_cmp(maj_have, maj_needed), 0,,
@@ -1774,6 +1850,17 @@ AC_DEFUN([XORG_MANPAGE_SECTIONS],[
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_REQUIRE([AC_PROG_SED])
 
+case $host_os in
+    solaris*)
+        # Solaris 2.0 - 11.3 use SysV man page section numbers, so we
+        # check for a man page file found in later versions that use
+        # traditional section numbers instead
+        AC_CHECK_FILE([/usr/share/man/man7/attributes.7],
+                [SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true])
+        ;;
+    *) SYSV_MAN_SECTIONS=false ;;
+esac
+
 if test x$APP_MAN_SUFFIX = x    ; then
     APP_MAN_SUFFIX=1
 fi
@@ -1789,9 +1876,9 @@ if test x$LIB_MAN_DIR = x    ; then
 fi
 
 if test x$FILE_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) FILE_MAN_SUFFIX=4  ;;
- *) FILE_MAN_SUFFIX=5  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) FILE_MAN_SUFFIX=4  ;;
+ *) FILE_MAN_SUFFIX=5  ;;
     esac
 fi
 if test x$FILE_MAN_DIR = x    ; then
@@ -1799,9 +1886,9 @@ if test x$FILE_MAN_DIR = x    ; then
 fi
 
 if test x$MISC_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) MISC_MAN_SUFFIX=5  ;;
- *) MISC_MAN_SUFFIX=7  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) MISC_MAN_SUFFIX=5  ;;
+ *) MISC_MAN_SUFFIX=7  ;;
     esac
 fi
 if test x$MISC_MAN_DIR = x    ; then
@@ -1809,9 +1896,9 @@ if test x$MISC_MAN_DIR = x    ; then
 fi
 
 if test x$DRIVER_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) DRIVER_MAN_SUFFIX=7  ;;
- *) DRIVER_MAN_SUFFIX=4  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) DRIVER_MAN_SUFFIX=7  ;;
+ *) DRIVER_MAN_SUFFIX=4  ;;
     esac
 fi
 if test x$DRIVER_MAN_DIR = x    ; then
@@ -1819,9 +1906,9 @@ if test x$DRIVER_MAN_DIR = x    ; then
 fi
 
 if test x$ADMIN_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) ADMIN_MAN_SUFFIX=1m ;;
- *) ADMIN_MAN_SUFFIX=8  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) ADMIN_MAN_SUFFIX=1m ;;
+ *) ADMIN_MAN_SUFFIX=8  ;;
     esac
 fi
 if test x$ADMIN_MAN_DIR = x    ; then
@@ -2082,13 +2169,24 @@ m4_ifval([$1],
 fi])
 
 # Test for the ability of xmlto to generate a text target
+#
+# NOTE: xmlto 0.0.27 or higher return a non-zero return code in the
+# following test for empty XML docbook files.
+# For compatibility reasons use the following empty XML docbook file and if
+# it fails try it again with a non-empty XML file.
 have_xmlto_text=no
 cat > conftest.xml << "EOF"
 EOF
 AS_IF([test "$have_xmlto" = yes],
       [AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
              [have_xmlto_text=yes],
-             [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])
+             [# Try it again with a non-empty XML file.
+              cat > conftest.xml << "EOF"
+<x></x>
+EOF
+              AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
+                    [have_xmlto_text=yes],
+                    [AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])])
 rm -f conftest.xml
 AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes])
 AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
@@ -3484,8 +3582,9 @@ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
 macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
 INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
 mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
-|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
-echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
+touch \$(top_srcdir)/INSTALL; \
+echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
 AC_SUBST([INSTALL_CMD])
 ]) # XORG_INSTALL
 dnl Copyright 2005 Red Hat, Inc
@@ -3546,10 +3645,11 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
 #
 #
 AC_DEFUN([XORG_CHANGELOG], [
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
 mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
-|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
-echo 'git directory not found: installing possibly empty changelog.' >&2)"
+|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
+touch \$(top_srcdir)/ChangeLog; \
+echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
 AC_SUBST([CHANGELOG_CMD])
 ]) # XORG_CHANGELOG
 
Index: configure
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/configure,v
retrieving revision 1.69
diff -u -p -u -r1.69 configure
--- configure 18 Feb 2018 17:16:37 -0000 1.69
+++ configure 3 Mar 2019 09:27:38 -0000
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xorg-server 1.19.6.
+# Generated by GNU Autoconf 2.69 for xorg-server 1.19.7.
 #
-# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
+# Report bugs to <https://gitlab.freedesktop.org/xorg/xserver/issues>.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -275,7 +275,7 @@ fi
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
     $as_echo "$0: Please tell [hidden email] and
-$0: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+$0: https://gitlab.freedesktop.org/xorg/xserver/issues
 $0: about your system, including any error possibly output
 $0: before this message. Then install a modern shell, or
 $0: manually run the script under such a shell if you do
@@ -651,9 +651,9 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='xorg-server'
 PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='1.19.6'
-PACKAGE_STRING='xorg-server 1.19.6'
-PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
+PACKAGE_VERSION='1.19.7'
+PACKAGE_STRING='xorg-server 1.19.7'
+PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/xserver/issues'
 PACKAGE_URL=''
 
 ac_unique_file="Makefile.am"
@@ -2071,7 +2071,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.19.6 to adapt to many kinds of systems.
+\`configure' configures xorg-server 1.19.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2141,7 +2141,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xorg-server 1.19.6:";;
+     short | recursive ) echo "Configuration of xorg-server 1.19.7:";;
    esac
   cat <<\_ACEOF
 
@@ -2342,10 +2342,10 @@ Optional Packages:
                           org.x)
   --with-bundle-version=VERSION
                           Version to use for X11.app's CFBundleVersion
-                          (default: 1.19.6)
+                          (default: 1.19.7)
   --with-bundle-version-string=VERSION
                           Version to use for X11.app's
-                          CFBundleShortVersionString (default: 1.19.6)
+                          CFBundleShortVersionString (default: 1.19.7)
   --with-sparkle-feed-url=URL
                           URL for the Sparkle feed (default:
                           https://www.xquartz.org/releases/sparkle/release.xml)
@@ -2537,7 +2537,7 @@ Some influential environment variables:
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
+Report bugs to <https://gitlab.freedesktop.org/xorg/xserver/issues>.
 _ACEOF
 ac_status=$?
 fi
@@ -2600,7 +2600,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xorg-server configure 1.19.6
+xorg-server configure 1.19.7
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2759,9 +2759,9 @@ $as_echo "$as_me: WARNING: $2: see the A
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ---------------------------------------------------------------------- ##
-## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ##
-## ---------------------------------------------------------------------- ##"
+( $as_echo "## ----------------------------------------------------------------- ##
+## Report this to https://gitlab.freedesktop.org/xorg/xserver/issues ##
+## ----------------------------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -3309,7 +3309,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.19.6, which was
+It was created by xorg-server $as_me 1.19.7, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3657,8 +3657,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-RELEASE_DATE="2017-12-20"
-RELEASE_NAME="Lousiana Gumbo"
+RELEASE_DATE="2019-03-02"
+RELEASE_NAME="Clemson Hamberder"
 
 
 am__api_version='1.12'
@@ -4137,7 +4137,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='xorg-server'
- VERSION='1.19.6'
+ VERSION='1.19.7'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -11842,10 +11842,11 @@ _ACEOF
 
 
 
-CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
+CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
 mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
-|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
-echo 'git directory not found: installing possibly empty changelog.' >&2)"
+|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
+touch \$(top_srcdir)/ChangeLog; \
+echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
 
 
 
@@ -11853,14 +11854,45 @@ echo 'git directory not found: installin
 macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
 INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
 mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
-|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
-echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
+|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
+touch \$(top_srcdir)/INSTALL; \
+echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
 
 
 
 
 
 
+case $host_os in
+    solaris*)
+        # Solaris 2.0 - 11.3 use SysV man page section numbers, so we
+        # check for a man page file found in later versions that use
+        # traditional section numbers instead
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5
+$as_echo_n "checking for /usr/share/man/man7/attributes.7... " >&6; }
+if ${ac_cv_file__usr_share_man_man7_attributes_7+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/share/man/man7/attributes.7"; then
+  ac_cv_file__usr_share_man_man7_attributes_7=yes
+else
+  ac_cv_file__usr_share_man_man7_attributes_7=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5
+$as_echo "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; }
+if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes; then :
+  SYSV_MAN_SECTIONS=false
+else
+  SYSV_MAN_SECTIONS=true
+fi
+
+        ;;
+    *) SYSV_MAN_SECTIONS=false ;;
+esac
+
 if test x$APP_MAN_SUFFIX = x    ; then
     APP_MAN_SUFFIX=1
 fi
@@ -11876,9 +11908,9 @@ if test x$LIB_MAN_DIR = x    ; then
 fi
 
 if test x$FILE_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) FILE_MAN_SUFFIX=4  ;;
- *) FILE_MAN_SUFFIX=5  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) FILE_MAN_SUFFIX=4  ;;
+ *) FILE_MAN_SUFFIX=5  ;;
     esac
 fi
 if test x$FILE_MAN_DIR = x    ; then
@@ -11886,9 +11918,9 @@ if test x$FILE_MAN_DIR = x    ; then
 fi
 
 if test x$MISC_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) MISC_MAN_SUFFIX=5  ;;
- *) MISC_MAN_SUFFIX=7  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) MISC_MAN_SUFFIX=5  ;;
+ *) MISC_MAN_SUFFIX=7  ;;
     esac
 fi
 if test x$MISC_MAN_DIR = x    ; then
@@ -11896,9 +11928,9 @@ if test x$MISC_MAN_DIR = x    ; then
 fi
 
 if test x$DRIVER_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) DRIVER_MAN_SUFFIX=7  ;;
- *) DRIVER_MAN_SUFFIX=4  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) DRIVER_MAN_SUFFIX=7  ;;
+ *) DRIVER_MAN_SUFFIX=4  ;;
     esac
 fi
 if test x$DRIVER_MAN_DIR = x    ; then
@@ -11906,9 +11938,9 @@ if test x$DRIVER_MAN_DIR = x    ; then
 fi
 
 if test x$ADMIN_MAN_SUFFIX = x    ; then
-    case $host_os in
- solaris*) ADMIN_MAN_SUFFIX=1m ;;
- *) ADMIN_MAN_SUFFIX=8  ;;
+    case $SYSV_MAN_SECTIONS in
+ true) ADMIN_MAN_SUFFIX=1m ;;
+ *) ADMIN_MAN_SUFFIX=8  ;;
     esac
 fi
 if test x$ADMIN_MAN_DIR = x    ; then
@@ -12428,6 +12460,11 @@ esac
 fi
 
 # Test for the ability of xmlto to generate a text target
+#
+# NOTE: xmlto 0.0.27 or higher return a non-zero return code in the
+# following test for empty XML docbook files.
+# For compatibility reasons use the following empty XML docbook file and if
+# it fails try it again with a non-empty XML file.
 have_xmlto_text=no
 cat > conftest.xml << "EOF"
 EOF
@@ -12435,10 +12472,18 @@ if test "$have_xmlto" = yes; then :
   if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1; then :
   have_xmlto_text=yes
 else
+  # Try it again with a non-empty XML file.
+              cat > conftest.xml << "EOF"
+<x></x>
+EOF
+              if $XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1; then :
+  have_xmlto_text=yes
+else
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: xmlto cannot generate text format, this format skipped" >&5
 $as_echo "$as_me: WARNING: xmlto cannot generate text format, this format skipped" >&2;}
 fi
 fi
+fi
 rm -f conftest.xml
  if test $have_xmlto_text = yes; then
   HAVE_XMLTO_TEXT_TRUE=
@@ -23161,7 +23206,7 @@ _ACEOF
 if test "${with_bundle_version+set}" = set; then :
   withval=$with_bundle_version;  BUNDLE_VERSION="${withval}"
 else
-   BUNDLE_VERSION="1.19.6"
+   BUNDLE_VERSION="1.19.7"
 fi
 
 
@@ -25707,6 +25752,17 @@ rm -f core *.core core.conftest.* gmon.o
 fi
 
 
+    if test "$MONOTONIC_CLOCK" = "cross compiling"; then
+        ac_fn_c_check_decl "$LINENO" "CLOCK_MONOTONIC" "ac_cv_have_decl_CLOCK_MONOTONIC" "#include <time.h>
+"
+if test "x$ac_cv_have_decl_CLOCK_MONOTONIC" = xyes; then :
+  MONOTONIC_CLOCK="guessing yes"
+else
+  MONOTONIC_CLOCK=no
+fi
+
+    fi
+
     LIBS="$LIBS_SAVE"
     CPPFLAGS="$CPPFLAGS_SAVE"
 else
@@ -25715,6 +25771,9 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MONOTONIC_CLOCK" >&5
 $as_echo "$MONOTONIC_CLOCK" >&6; }
+if test "$MONOTONIC_CLOCK" = "guessing yes"; then
+ MONOTONIC_CLOCK=yes
+fi
 
 if test "x$MONOTONIC_CLOCK" = xyes; then
 
@@ -33262,7 +33321,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # 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.19.6, which was
+This file was extended by xorg-server $as_me 1.19.7, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -33322,13 +33381,13 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>."
+Report bugs to <https://gitlab.freedesktop.org/xorg/xserver/issues>."
 
 _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.19.6
+xorg-server config.status 1.19.7
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
Index: configure.ac
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/configure.ac,v
retrieving revision 1.64
diff -u -p -u -r1.64 configure.ac
--- configure.ac 18 Feb 2018 17:16:37 -0000 1.64
+++ configure.ac 3 Mar 2019 09:25:26 -0000
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.19.6, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2017-12-20"
-RELEASE_NAME="Lousiana Gumbo"
+AC_INIT([xorg-server], 1.19.7, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
+RELEASE_DATE="2019-03-02"
+RELEASE_NAME="Clemson Hamberder"
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -1107,6 +1107,10 @@ int main(int argc, char *argv[[]]) {
     ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
        [MONOTONIC_CLOCK="cross compiling"])
 
+    if test "$MONOTONIC_CLOCK" = "cross compiling"; then
+        AC_CHECK_DECL([CLOCK_MONOTONIC],[MONOTONIC_CLOCK="guessing yes"],[MONOTONIC_CLOCK=no],[#include <time.h>])
+    fi
+
     LIBS="$LIBS_SAVE"
     CPPFLAGS="$CPPFLAGS_SAVE"
 else
@@ -1114,6 +1118,9 @@ else
 fi
 
 AC_MSG_RESULT([$MONOTONIC_CLOCK])
+if test "$MONOTONIC_CLOCK" = "guessing yes"; then
+ MONOTONIC_CLOCK=yes
+fi
 
 if test "x$MONOTONIC_CLOCK" = xyes; then
     AC_DEFINE(MONOTONIC_CLOCK, 1, [Have monotonic clock from clock_gettime()])
Index: composite/compalloc.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/composite/compalloc.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 compalloc.c
--- composite/compalloc.c 8 Dec 2017 15:01:59 -0000 1.13
+++ composite/compalloc.c 3 Mar 2019 09:25:26 -0000
@@ -67,6 +67,18 @@ compBlockHandler(ScreenPtr pScreen, void
     cs->BlockHandler = NULL;
 }
 
+void
+compMarkAncestors(WindowPtr pWin)
+{
+    pWin = pWin->parent;
+    while (pWin) {
+        if (pWin->damagedDescendants)
+            return;
+        pWin->damagedDescendants = TRUE;
+        pWin = pWin->parent;
+    }
+}
+
 static void
 compReportDamage(DamagePtr pDamage, RegionPtr pRegion, void *closure)
 {
@@ -81,14 +93,7 @@ compReportDamage(DamagePtr pDamage, Regi
     }
     cw->damaged = TRUE;
 
-    /* Mark the ancestors */
-    pWin = pWin->parent;
-    while (pWin) {
-        if (pWin->damagedDescendants)
-            break;
-        pWin->damagedDescendants = TRUE;
-        pWin = pWin->parent;
-    }
+    compMarkAncestors(pWin);
 }
 
 static void
Index: composite/compint.h
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/composite/compint.h,v
retrieving revision 1.11
diff -u -p -u -r1.11 compint.h
--- composite/compint.h 8 Dec 2017 15:02:00 -0000 1.11
+++ composite/compint.h 3 Mar 2019 09:25:26 -0000
@@ -236,6 +236,8 @@ Bool
 compReallocPixmap(WindowPtr pWin, int x, int y,
                   unsigned int w, unsigned int h, int bw);
 
+void compMarkAncestors(WindowPtr pWin);
+
 /*
  * compinit.c
  */
Index: composite/compwindow.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/composite/compwindow.c,v
retrieving revision 1.15
diff -u -p -u -r1.15 compwindow.c
--- composite/compwindow.c 18 Feb 2018 17:16:37 -0000 1.15
+++ composite/compwindow.c 3 Mar 2019 09:25:26 -0000
@@ -432,6 +432,7 @@ compReparentWindow(WindowPtr pWin, Windo
 {
     ScreenPtr pScreen = pWin->drawable.pScreen;
     CompScreenPtr cs = GetCompScreen(pScreen);
+    CompWindowPtr cw = GetCompWindow(pWin);
 
     pScreen->ReparentWindow = cs->ReparentWindow;
     /*
@@ -469,6 +470,10 @@ compReparentWindow(WindowPtr pWin, Windo
         (*pScreen->ReparentWindow) (pWin, pPriorParent);
     cs->ReparentWindow = pScreen->ReparentWindow;
     pScreen->ReparentWindow = compReparentWindow;
+
+    if (pWin->damagedDescendants || (cw && cw->damaged))
+        compMarkAncestors(pWin);
+
     compCheckTree(pWin->drawable.pScreen);
 }
 
Index: config/udev.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/config/udev.c,v
retrieving revision 1.12
diff -u -p -u -r1.12 udev.c
--- config/udev.c 18 Feb 2018 17:16:37 -0000 1.12
+++ config/udev.c 3 Mar 2019 09:25:26 -0000
@@ -135,7 +135,7 @@ device_added(struct udev_device *udev_de
 #endif
 
     value = udev_device_get_property_value(udev_device, "ID_INPUT");
-    if (value && !strcmp(value, "0")) {
+    if (!value || !strcmp(value, "0")) {
         LogMessageVerb(X_INFO, 10,
                        "config/udev: ignoring device %s without "
                        "property ID_INPUT set\n", path);
Index: exa/exa_unaccel.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/exa/exa_unaccel.c,v
retrieving revision 1.11
diff -u -p -u -r1.11 exa_unaccel.c
--- exa/exa_unaccel.c 16 Sep 2015 19:10:20 -0000 1.11
+++ exa/exa_unaccel.c 3 Mar 2019 09:25:27 -0000
@@ -703,6 +703,7 @@ exaGetPixmapFirstPixel(PixmapPtr pPixmap
 {
     switch (pPixmap->drawable.bitsPerPixel) {
     case 32:
+    case 24:
     {
         CARD32 pixel;
 
Index: glamor/glamor_gradient.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/glamor/glamor_gradient.c,v
retrieving revision 1.4
diff -u -p -u -r1.4 glamor_gradient.c
--- glamor/glamor_gradient.c 8 Dec 2017 15:02:00 -0000 1.4
+++ glamor/glamor_gradient.c 3 Mar 2019 09:25:27 -0000
@@ -54,27 +54,33 @@ _glamor_create_getcolor_fs_source(Screen
     "vec4 get_color(float stop_len)\n"\
     "{\n"\
     "    int i = 0;\n"\
-    "    float new_alpha; \n"\
+    "    vec4 stop_color_before;\n"\
     "    vec4 gradient_color;\n"\
+    "    float stop_delta;\n"\
     "    float percentage; \n"\
-    "    for(i = 0; i < n_stop - 1; i++) {\n"\
+    "    \n"\
+    "    if(stop_len < stops[0])\n"\
+    "        return vec4(0.0, 0.0, 0.0, 0.0); \n"\
+    "    for(i = 1; i < n_stop; i++) {\n"\
     "        if(stop_len < stops[i])\n"\
     "            break; \n"\
     "    }\n"\
+    "    if(i == n_stop)\n"\
+    "        return vec4(0.0, 0.0, 0.0, 0.0); \n"\
     "    \n"\
-    "    if(stops[i] - stops[i-1] > 2.0)\n"\
+    "    stop_color_before = stop_colors[i-1];\n"\
+    "    stop_delta = stops[i] - stops[i-1];\n"\
+    "    if(stop_delta > 2.0)\n"\
     "        percentage = 0.0;\n" /*For comply with pixman, walker->stepper overflow.*/\
-    "    else if(stops[i] - stops[i-1] < 0.000001)\n"\
+    "    else if(stop_delta < 0.000001)\n"\
     "        percentage = 0.0;\n"\
     "    else \n"\
-    "        percentage = (stop_len - stops[i-1])/(stops[i] - stops[i-1]);\n"\
-    "    new_alpha = percentage * stop_colors[i].a + \n"\
-    "                       (1.0-percentage) * stop_colors[i-1].a; \n"\
-    "    gradient_color = vec4((percentage * stop_colors[i].rgb \n"\
-    "                          + (1.0-percentage) * stop_colors[i-1].rgb)*new_alpha, \n"\
-    "                          new_alpha);\n"\
+    "        percentage = (stop_len - stops[i-1])/stop_delta;\n"\
     "    \n"\
-    "    return gradient_color;\n"\
+    "    gradient_color = stop_color_before;\n"\
+    "    if(percentage != 0.0)\n"\
+    "        gradient_color += (stop_colors[i] - gradient_color)*percentage;\n"\
+    "    return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a);\n"\
     "}\n"
 
     /* Because the array access for shader is very slow, the performance is very low
@@ -101,73 +107,66 @@ _glamor_create_getcolor_fs_source(Screen
         "\n"
         "vec4 get_color(float stop_len)\n"
         "{\n"
-        "    float stop_after;\n"
-        "    float stop_before;\n"
         "    vec4 stop_color_before;\n"
         "    vec4 stop_color_after;\n"
-        "    float new_alpha; \n"
         "    vec4 gradient_color;\n"
+        "    float stop_before;\n"
+        "    float stop_delta;\n"
         "    float percentage; \n"
         "    \n"
         "    if((stop_len < stop0) && (n_stop >= 1)) {\n"
-        "        stop_color_before = stop_color0;\n"
-        "        stop_color_after = stop_color0;\n"
-        "        stop_after = stop0;\n"
-        "        stop_before = stop0;\n"
+        "        stop_color_before = vec4(0.0, 0.0, 0.0, 0.0);\n"
+        "        stop_delta = 0.0;\n"
         "    } else if((stop_len < stop1) && (n_stop >= 2)) {\n"
         "        stop_color_before = stop_color0;\n"
         "        stop_color_after = stop_color1;\n"
-        "        stop_after = stop1;\n"
         "        stop_before = stop0;\n"
+        "        stop_delta = stop1 - stop0;\n"
         "    } else if((stop_len < stop2) && (n_stop >= 3)) {\n"
         "        stop_color_before = stop_color1;\n"
         "        stop_color_after = stop_color2;\n"
-        "        stop_after = stop2;\n"
         "        stop_before = stop1;\n"
+        "        stop_delta = stop2 - stop1;\n"
         "    } else if((stop_len < stop3) && (n_stop >= 4)){\n"
         "        stop_color_before = stop_color2;\n"
         "        stop_color_after = stop_color3;\n"
-        "        stop_after = stop3;\n"
         "        stop_before = stop2;\n"
+        "        stop_delta = stop3 - stop2;\n"
         "    } else if((stop_len < stop4) && (n_stop >= 5)){\n"
         "        stop_color_before = stop_color3;\n"
         "        stop_color_after = stop_color4;\n"
-        "        stop_after = stop4;\n"
         "        stop_before = stop3;\n"
+        "        stop_delta = stop4 - stop3;\n"
         "    } else if((stop_len < stop5) && (n_stop >= 6)){\n"
         "        stop_color_before = stop_color4;\n"
         "        stop_color_after = stop_color5;\n"
-        "        stop_after = stop5;\n"
         "        stop_before = stop4;\n"
+        "        stop_delta = stop5 - stop4;\n"
         "    } else if((stop_len < stop6) && (n_stop >= 7)){\n"
         "        stop_color_before = stop_color5;\n"
         "        stop_color_after = stop_color6;\n"
-        "        stop_after = stop6;\n"
         "        stop_before = stop5;\n"
+        "        stop_delta = stop6 - stop5;\n"
         "    } else if((stop_len < stop7) && (n_stop >= 8)){\n"
         "        stop_color_before = stop_color6;\n"
         "        stop_color_after = stop_color7;\n"
-        "        stop_after = stop7;\n"
         "        stop_before = stop6;\n"
+        "        stop_delta = stop7 - stop6;\n"
         "    } else {\n"
-        "        stop_color_before = stop_color7;\n"
-        "        stop_color_after = stop_color7;\n"
-        "        stop_after = stop7;\n"
-        "        stop_before = stop7;\n"
+        "        stop_color_before = vec4(0.0, 0.0, 0.0, 0.0);\n"
+        "        stop_delta = 0.0;\n"
         "    }\n"
-        "    if(stop_after - stop_before > 2.0)\n"
+        "    if(stop_delta > 2.0)\n"
         "        percentage = 0.0;\n" //For comply with pixman, walker->stepper overflow.
-        "    else if(stop_after - stop_before < 0.000001)\n"
+        "    else if(stop_delta < 0.000001)\n"
         "        percentage = 0.0;\n"
-        "    else \n"
-        "        percentage = (stop_len - stop_before)/(stop_after - stop_before);\n"
-        "    new_alpha = percentage * stop_color_after.a + \n"
-        "                       (1.0-percentage) * stop_color_before.a; \n"
-        "    gradient_color = vec4((percentage * stop_color_after.rgb \n"
-        "                          + (1.0-percentage) * stop_color_before.rgb)*new_alpha, \n"
-        "                          new_alpha);\n"
+        "    else\n"
+        "        percentage = (stop_len - stop_before)/stop_delta;\n"
         "    \n"
-        "    return gradient_color;\n"
+        "    gradient_color = stop_color_before;\n"
+        "    if(percentage != 0.0)\n"
+        "        gradient_color += (stop_color_after - gradient_color)*percentage;\n"
+        "    return vec4(gradient_color.rgb * gradient_color.a, gradient_color.a);\n"
         "}\n";
 
     if (use_array) {
@@ -458,18 +457,10 @@ _glamor_create_linear_gradient_program(S
     "float get_stop_len()\n"\
     "{\n"\
     "    vec3 tmp = vec3(source_texture.x, source_texture.y, 1.0);\n"\
-    "    float len_percentage;\n"\
     "    float distance;\n"\
     "    float _p1_distance;\n"\
     "    float _pt_distance;\n"\
     "    float y_dist;\n"\
-    "    float stop_after;\n"\
-    "    float stop_before;\n"\
-    "    vec4 stop_color_before;\n"\
-    "    vec4 stop_color_after;\n"\
-    "    float new_alpha; \n"\
-    "    vec4 gradient_color;\n"\
-    "    float percentage; \n"\
     "    vec3 source_texture_trans = transform_mat * tmp;\n"\
     "    \n"\
     "    if(hor_ver == 0) { \n" /*Normal case.*/\
@@ -484,19 +475,17 @@ _glamor_create_linear_gradient_program(S
     "        _pt_distance = pt_distance * source_texture_trans.z;\n"\
     "    } \n"\
     "    \n"\
-    "    distance = distance - _p1_distance; \n"\
+    "    distance = (distance - _p1_distance) / _pt_distance;\n"\
     "    \n"\
     "    if(repeat_type == %d){\n" /* repeat normal*/\
-    "        distance = mod(distance, _pt_distance);\n"\
+    "        distance = fract(distance);\n"\
     "    }\n"\
     "    \n"\
     "    if(repeat_type == %d) {\n" /* repeat reflect*/\
-    "        distance = abs(mod(distance + _pt_distance, 2.0 * _pt_distance) - _pt_distance);\n"\
+    "        distance = abs(fract(distance * 0.5 + 0.5) * 2.0 - 1.0);\n"\
     "    }\n"\
     "    \n"\
-    "    len_percentage = distance/(_pt_distance);\n"\
-    "    \n"\
-    "    return len_percentage;\n"\
+    "    return distance;\n"\
     "}\n"\
     "\n"\
     "void main()\n"\
@@ -761,13 +750,13 @@ _glamor_gradient_set_stops(PicturePtr sr
         stop_colors[1] = 0.0;   //G
         stop_colors[2] = 0.0;   //B
         stop_colors[3] = 0.0;   //Alpha
-        n_stops[0] = -(float) INT_MAX;  //should be small enough.
+        n_stops[0] = n_stops[1];
 
         stop_colors[0 + (count - 1) * 4] = 0.0; //R
         stop_colors[1 + (count - 1) * 4] = 0.0; //G
         stop_colors[2 + (count - 1) * 4] = 0.0; //B
         stop_colors[3 + (count - 1) * 4] = 0.0; //Alpha
-        n_stops[count - 1] = (float) INT_MAX;   //should be large enough.
+        n_stops[count - 1] = n_stops[count - 2];
         break;
     case PIXMAN_REPEAT_NORMAL:
         REPEAT_FILL_STOPS(0, count - 2);
Index: glamor/glamor_xv.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/glamor/glamor_xv.c,v
retrieving revision 1.4
diff -u -p -u -r1.4 glamor_xv.c
--- glamor/glamor_xv.c 8 Dec 2017 15:02:00 -0000 1.4
+++ glamor/glamor_xv.c 3 Mar 2019 09:25:27 -0000
@@ -62,6 +62,8 @@ typedef struct tagREF_TRANSFORM {
 static const glamor_facet glamor_facet_xv_planar = {
     .name = "xv_planar",
 
+    .version = 120,
+
     .source_name = "v_texcoord0",
     .vs_vars = ("attribute vec2 position;\n"
                 "attribute vec2 v_texcoord0;\n"
Index: glx/glxdricommon.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/glx/glxdricommon.c,v
retrieving revision 1.10
diff -u -p -u -r1.10 glxdricommon.c
--- glx/glxdricommon.c 18 Feb 2018 17:16:37 -0000 1.10
+++ glx/glxdricommon.c 3 Mar 2019 09:25:27 -0000
@@ -218,6 +218,9 @@ createModeFromConfig(const __DRIcoreExte
     if (duplicateForComp &&
         (render_type_is_pbuffer_only(renderType) ||
          config->config.rgbBits != 32 ||
+         config->config.redBits != 8 ||
+         config->config.greenBits != 8 ||
+         config->config.blueBits != 8 ||
          config->config.visualRating != GLX_NONE ||
          config->config.sampleBuffers != 0)) {
         free(config);
Index: glx/glxscreens.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/glx/glxscreens.c,v
retrieving revision 1.12
diff -u -p -u -r1.12 glxscreens.c
--- glx/glxscreens.c 18 Feb 2018 17:16:37 -0000 1.12
+++ glx/glxscreens.c 3 Mar 2019 09:25:27 -0000
@@ -275,6 +275,11 @@ pickFBConfig(__GLXscreen * pGlxScreen, V
         /* If it's the 32-bit RGBA visual, demand a 32-bit fbconfig. */
         if (visual->nplanes == 32 && config->rgbBits != 32)
             continue;
+        /* If it's the 32-bit RGBA visual, do not pick sRGB capable config.
+         * This can cause issues with compositors that are not sRGB aware.
+         */
+        if (visual->nplanes == 32 && config->sRGBCapable == GL_TRUE)
+            continue;
         /* Can't use the same FBconfig for multiple X visuals.  I think. */
         if (config->visualID != 0)
             continue;
Index: hw/xfree86/Makefile.am
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xfree86/Makefile.am,v
retrieving revision 1.13
diff -u -p -u -r1.13 Makefile.am
--- hw/xfree86/Makefile.am 8 Dec 2017 15:02:00 -0000 1.13
+++ hw/xfree86/Makefile.am 3 Mar 2019 09:25:38 -0000
@@ -84,8 +84,8 @@ Xorg_DEPENDENCIES = $(LOCAL_LIBS)
 Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
 
 if SUID_WRAPPER
-wrapdir = $(SUID_WRAPPER_DIR)
-wrap_PROGRAMS = Xorg.wrap
+wrapexecdir = $(SUID_WRAPPER_DIR)
+wrapexec_PROGRAMS = Xorg.wrap
 Xorg_wrap_SOURCES = xorg-wrapper.c
 endif
 
Index: hw/xfree86/Makefile.in
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xfree86/Makefile.in,v
retrieving revision 1.35
diff -u -p -u -r1.35 Makefile.in
--- hw/xfree86/Makefile.in 8 Dec 2017 15:02:00 -0000 1.35
+++ hw/xfree86/Makefile.in 3 Mar 2019 09:27:18 -0000
@@ -51,7 +51,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = Xorg$(EXEEXT)
-@SUID_WRAPPER_TRUE@wrap_PROGRAMS = Xorg.wrap$(EXEEXT)
+@SUID_WRAPPER_TRUE@wrapexec_PROGRAMS = Xorg.wrap$(EXEEXT)
 subdir = hw/xfree86
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
  $(srcdir)/Xorg.sh.in $(top_srcdir)/depcomp
@@ -74,8 +74,8 @@ CONFIG_HEADER = $(top_builddir)/include/
  $(top_builddir)/include/version-config.h
 CONFIG_CLEAN_FILES = Xorg.sh
 CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(wrapdir)"
-PROGRAMS = $(bin_PROGRAMS) $(wrap_PROGRAMS)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(wrapexecdir)"
+PROGRAMS = $(bin_PROGRAMS) $(wrapexec_PROGRAMS)
 nodist_Xorg_OBJECTS = sdksyms.$(OBJEXT)
 Xorg_OBJECTS = $(nodist_Xorg_OBJECTS)
 am__DEPENDENCIES_1 =
@@ -591,7 +591,7 @@ Xorg_LDADD = \
 
 Xorg_DEPENDENCIES = $(LOCAL_LIBS)
 Xorg_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-@SUID_WRAPPER_TRUE@wrapdir = $(SUID_WRAPPER_DIR)
+@SUID_WRAPPER_TRUE@wrapexecdir = $(SUID_WRAPPER_DIR)
 @SUID_WRAPPER_TRUE@Xorg_wrap_SOURCES = xorg-wrapper.c
 BUILT_SOURCES = xorg.conf.example
 DISTCLEANFILES = xorg.conf.example
@@ -688,12 +688,12 @@ clean-binPROGRAMS:
  list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
  echo " rm -f" $$list; \
  rm -f $$list
-install-wrapPROGRAMS: $(wrap_PROGRAMS)
+install-wrapexecPROGRAMS: $(wrapexec_PROGRAMS)
  @$(NORMAL_INSTALL)
- @list='$(wrap_PROGRAMS)'; test -n "$(wrapdir)" || list=; \
+ @list='$(wrapexec_PROGRAMS)'; test -n "$(wrapexecdir)" || list=; \
  if test -n "$$list"; then \
-  echo " $(MKDIR_P) '$(DESTDIR)$(wrapdir)'"; \
-  $(MKDIR_P) "$(DESTDIR)$(wrapdir)" || exit 1; \
+  echo " $(MKDIR_P) '$(DESTDIR)$(wrapexecdir)'"; \
+  $(MKDIR_P) "$(DESTDIR)$(wrapexecdir)" || exit 1; \
  fi; \
  for p in $$list; do echo "$$p $$p"; done | \
  sed 's/$(EXEEXT)$$//' | \
@@ -711,23 +711,23 @@ install-wrapPROGRAMS: $(wrap_PROGRAMS)
  while read type dir files; do \
     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
     test -z "$$files" || { \
-    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(wrapdir)$$dir'"; \
-    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(wrapdir)$$dir" || exit $$?; \
+    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(wrapexecdir)$$dir'"; \
+    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(wrapexecdir)$$dir" || exit $$?; \
     } \
  ; done
 
-uninstall-wrapPROGRAMS:
+uninstall-wrapexecPROGRAMS:
  @$(NORMAL_UNINSTALL)
- @list='$(wrap_PROGRAMS)'; test -n "$(wrapdir)" || list=; \
+ @list='$(wrapexec_PROGRAMS)'; test -n "$(wrapexecdir)" || list=; \
  files=`for p in $$list; do echo "$$p"; done | \
   sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
       -e 's/$$/$(EXEEXT)/' `; \
  test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(wrapdir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(wrapdir)" && rm -f $$files
+ echo " ( cd '$(DESTDIR)$(wrapexecdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(wrapexecdir)" && rm -f $$files
 
-clean-wrapPROGRAMS:
- @list='$(wrap_PROGRAMS)'; test -n "$$list" || exit 0; \
+clean-wrapexecPROGRAMS:
+ @list='$(wrapexec_PROGRAMS)'; test -n "$$list" || exit 0; \
  echo " rm -f" $$list; \
  rm -f $$list || exit $$?; \
  test -n "$(EXEEXT)" || exit 0; \
@@ -964,7 +964,7 @@ check: $(BUILT_SOURCES)
 all-am: Makefile $(PROGRAMS)
 installdirs: installdirs-recursive
 installdirs-am:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(wrapdir)"; do \
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(wrapexecdir)"; do \
   test -z "$$dir" || $(MKDIR_P) "$$dir"; \
  done
 install: $(BUILT_SOURCES)
@@ -1004,7 +1004,7 @@ maintainer-clean-generic:
 clean: clean-recursive
 
 clean-am: clean-binPROGRAMS clean-generic clean-libtool \
- clean-wrapPROGRAMS mostlyclean-am
+ clean-wrapexecPROGRAMS mostlyclean-am
 
 distclean: distclean-recursive
  -rm -rf ./$(DEPDIR)
@@ -1024,13 +1024,13 @@ info: info-recursive
 
 info-am:
 
-install-data-am: install-data-local install-wrapPROGRAMS
+install-data-am: install-data-local
 
 install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
-install-exec-am: install-binPROGRAMS
+install-exec-am: install-binPROGRAMS install-wrapexecPROGRAMS
  @$(NORMAL_INSTALL)
  $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
 install-html: install-html-recursive
@@ -1072,7 +1072,7 @@ ps: ps-recursive
 ps-am:
 
 uninstall-am: uninstall-binPROGRAMS uninstall-local \
- uninstall-wrapPROGRAMS
+ uninstall-wrapexecPROGRAMS
  @$(NORMAL_INSTALL)
  $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
@@ -1081,7 +1081,7 @@ uninstall-am: uninstall-binPROGRAMS unin
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
  all all-am check check-am clean clean-binPROGRAMS \
- clean-generic clean-libtool clean-wrapPROGRAMS cscopelist \
+ clean-generic clean-libtool clean-wrapexecPROGRAMS cscopelist \
  cscopelist-recursive ctags ctags-recursive distclean \
  distclean-compile distclean-generic distclean-libtool \
  distclean-tags distdir dvi dvi-am html html-am info info-am \
@@ -1090,13 +1090,13 @@ uninstall-am: uninstall-binPROGRAMS unin
  install-exec install-exec-am install-exec-hook install-html \
  install-html-am install-info install-info-am install-man \
  install-pdf install-pdf-am install-ps install-ps-am \
- install-strip install-wrapPROGRAMS installcheck \
+ install-strip install-wrapexecPROGRAMS installcheck \
  installcheck-am installdirs installdirs-am maintainer-clean \
  maintainer-clean-generic mostlyclean mostlyclean-compile \
  mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
  tags tags-recursive uninstall uninstall-am \
  uninstall-binPROGRAMS uninstall-hook uninstall-local \
- uninstall-wrapPROGRAMS
+ uninstall-wrapexecPROGRAMS
 
 
 # Without logdir, X will post an error on the terminal and will not start
Index: hw/xfree86/common/extramodes
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xfree86/common/extramodes,v
retrieving revision 1.2
diff -u -p -u -r1.2 extramodes
--- hw/xfree86/common/extramodes 2 Nov 2008 15:26:20 -0000 1.2
+++ hw/xfree86/common/extramodes 3 Mar 2019 09:25:38 -0000
@@ -25,3 +25,144 @@ Modeline "2048x1536" 340.48  2048 2216 2
 # 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
 Modeline "2048x1536" 388.04  2048 2216 2440 2832  1536 1537 1540 1612 -hsync +vsync
 
+### 16:9 modelines generated by cvt
+
+# 640x360 59.32 Hz (CVT 0.23M9-R) hsync: 22.19 kHz; pclk: 17.75 MHz
+Modeline "640x360R"   17.75  640 688 720 800  360 363 368 374 +hsync -vsync
+
+# 640x360 59.84 Hz (CVT 0.23M9) hsync: 22.50 kHz; pclk: 18.00 MHz
+Modeline "640x360"   18.00  640 664 720 800  360 363 368 376 -hsync +vsync
+
+# 720x405 58.99 Hz (CVT 0.29M9-R) hsync: 24.72 kHz; pclk: 21.75 MHz
+Modeline "720x405R"   21.75  720 768 800 880  405 408 413 419 +hsync -vsync
+
+# 720x405 59.51 Hz (CVT 0.29M9) hsync: 25.11 kHz; pclk: 22.50 MHz
+Modeline "720x405"   22.50  720 744 808 896  405 408 413 422 -hsync +vsync
+
+# 864x486 59.57 Hz (CVT 0.42M9-R) hsync: 29.79 kHz; pclk: 30.50 MHz
+Modeline "864x486R"   30.50  864 912 944 1024  486 489 494 500 +hsync -vsync
+
+# 864x486 59.92 Hz (CVT 0.42M9) hsync: 30.32 kHz; pclk: 32.50 MHz
+Modeline "864x486"   32.50  864 888 968 1072  486 489 494 506 -hsync +vsync
+
+# 960x540 59.82 Hz (CVT 0.52M9-R) hsync: 33.26 kHz; pclk: 37.25 MHz
+Modeline "960x540R"   37.25  960 1008 1040 1120  540 543 548 556 +hsync -vsync
+
+# 960x540 59.63 Hz (CVT 0.52M9) hsync: 33.51 kHz; pclk: 40.75 MHz
+Modeline "960x540"   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync
+
+# 1024x576 59.82 Hz (CVT 0.59M9-R) hsync: 35.47 kHz; pclk: 42.00 MHz
+Modeline "1024x576R"   42.00  1024 1072 1104 1184  576 579 584 593 +hsync -vsync
+
+# 1024x576 59.90 Hz (CVT 0.59M9) hsync: 35.88 kHz; pclk: 46.50 MHz
+Modeline "1024x576"   46.50  1024 1064 1160 1296  576 579 584 599 -hsync +vsync
+
+# 1280x720 59.74 Hz (CVT 0.92M9-R) hsync: 44.27 kHz; pclk: 63.75 MHz
+Modeline "1280x720R"   63.75  1280 1328 1360 1440  720 723 728 741 +hsync -vsync
+
+# 1280x720 59.86 Hz (CVT 0.92M9) hsync: 44.77 kHz; pclk: 74.50 MHz
+Modeline "1280x720"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync
+
+# 1368x768 59.85 Hz (CVT) hsync: 47.28 kHz; pclk: 72.25 MHz
+Modeline "1368x768R"   72.25  1368 1416 1448 1528  768 771 781 790 +hsync -vsync
+
+# 1368x768 59.88 Hz (CVT) hsync: 47.79 kHz; pclk: 85.25 MHz
+Modeline "1368x768"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync
+
+# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz
+Modeline "1600x900R"   97.50  1600 1648 1680 1760  900 903 908 926 +hsync -vsync
+
+# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
+Modeline "1600x900"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
+
+# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz
+Modeline "1920x1080R"  138.50  1920 1968 2000 2080  1080 1083 1088 1111 +hsync -vsync
+
+# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
+Modeline "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
+
+# 2048x1152 59.91 Hz (CVT 2.36M9-R) hsync: 70.99 kHz; pclk: 156.75 MHz
+Modeline "2048x1152R"  156.75  2048 2096 2128 2208  1152 1155 1160 1185 +hsync -vsync
+
+# 2048x1152 59.90 Hz (CVT 2.36M9) hsync: 71.58 kHz; pclk: 197.00 MHz
+Modeline "2048x1152"  197.00  2048 2184 2400 2752  1152 1155 1160 1195 -hsync +vsync
+
+# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
+Modeline "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
+
+# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
+Modeline "2560x1440"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync
+
+# 2880x1620 59.97 Hz (CVT 4.67M9-R) hsync: 99.92 kHz; pclk: 303.75 MHz
+Modeline "2880x1620R"  303.75  2880 2928 2960 3040  1620 1623 1628 1666 +hsync -vsync
+
+# 2880x1620 59.96 Hz (CVT 4.67M9) hsync: 100.67 kHz; pclk: 396.25 MHz
+Modeline "2880x1620"  396.25  2880 3096 3408 3936  1620 1623 1628 1679 -hsync +vsync
+
+# 3200x1800 59.94 Hz (CVT 5.76M9-R) hsync: 111.01 kHz; pclk: 373.00 MHz
+Modeline "3200x1800R"  373.00  3200 3248 3280 3360  1800 1803 1808 1852 +hsync -vsync
+
+# 3200x1800 59.96 Hz (CVT 5.76M9) hsync: 111.82 kHz; pclk: 492.00 MHz
+Modeline "3200x1800"  492.00  3200 3456 3800 4400  1800 1803 1808 1865 -hsync +vsync
+
+# 3840x2160 59.97 Hz (CVT 8.29M9-R) hsync: 133.25 kHz; pclk: 533.00 MHz
+Modeline "3840x2160R"  533.00  3840 3888 3920 4000  2160 2163 2168 2222 +hsync -vsync
+
+# 3840x2160 59.98 Hz (CVT 8.29M9) hsync: 134.18 kHz; pclk: 712.75 MHz
+Modeline "3840x2160"  712.75  3840 4160 4576 5312  2160 2163 2168 2237 -hsync +vsync
+
+# 4096x2304 59.98 Hz (CVT 9.44M9-R) hsync: 142.15 kHz; pclk: 605.00 MHz
+Modeline "4096x2304R"  605.00  4096 4144 4176 4256  2304 2307 2312 2370 +hsync -vsync
+
+# 4096x2304 59.99 Hz (CVT 9.44M9) hsync: 143.13 kHz; pclk: 813.00 MHz
+Modeline "4096x2304"  813.00  4096 4440 4888 5680  2304 2307 2312 2386 -hsync +vsync
+
+# 5120x2880 59.99 Hz (CVT 14.75M9-R) hsync: 177.70 kHz; pclk: 938.25 MHz
+Modeline "5120x2880R"  938.25  5120 5168 5200 5280  2880 2883 2888 2962 +hsync -vsync
+
+# 5120x2880 59.99 Hz (CVT 14.75M9) hsync: 178.88 kHz; pclk: 1276.50 MHz
+Modeline "5120x2880"  1276.50  5120 5560 6128 7136  2880 2883 2888 2982 -hsync +vsync
+
+# 7680x4320 59.99 Hz (CVT 33.18M9-R) hsync: 266.55 kHz; pclk: 2089.75 MHz
+Modeline "7680x4320R"  2089.75  7680 7728 7760 7840  4320 4323 4328 4443 +hsync -vsync
+
+# 7680x4320 59.99 Hz (CVT 33.18M9) hsync: 268.22 kHz; pclk: 2892.50 MHz
+Modeline "7680x4320"  2892.50  7680 8376 9232 10784  4320 4323 4328 4471 -hsync +vsync
+
+# 15360x8640 59.99 Hz (CVT 132.71M9-R) hsync: 533.10 kHz; pclk: 8273.75 MHz
+Modeline "15360x8640R"  8273.75  15360 15408 15440 15520  8640 8643 8648 8886 +hsync -vsync
+
+# 15360x8640 60.00 Hz (CVT 132.71M9) hsync: 536.27 kHz; pclk: 11669.25 MHz
+Modeline "15360x8640"  11669.25  15360 16824 18560 21760  8640 8643 8648 8938 -hsync +vsync
+
+## 16:10 modelines generated by cvt
+
+# 1280x800 59.91 Hz (CVT 1.02MA-R) hsync: 49.31 kHz; pclk: 71.00 MHz
+Modeline "1280x800R"   71.00  1280 1328 1360 1440  800 803 809 823 +hsync -vsync
+
+# 1280x800 59.81 Hz (CVT 1.02MA) hsync: 49.70 kHz; pclk: 83.50 MHz
+Modeline "1280x800"   83.50  1280 1352 1480 1680  800 803 809 831 -hsync +vsync
+
+# 1400x900 59.88 Hz (CVT) hsync: 55.45 kHz; pclk: 86.50 MHz
+Modeline "1400x900R"   86.50  1400 1448 1480 1560  900 903 913 926 +hsync -vsync
+
+# 1400x900 59.96 Hz (CVT) hsync: 56.01 kHz; pclk: 103.50 MHz
+Modeline "1400x900"  103.50  1400 1480 1624 1848  900 903 913 934 -hsync +vsync
+
+# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz
+Modeline "1680x1050R"  119.00  1680 1728 1760 1840  1050 1053 1059 1080 +hsync -vsync
+
+# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
+Modeline "1680x1050"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
+
+# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz
+Modeline "1920x1200R"  154.00  1920 1968 2000 2080  1200 1203 1209 1235 +hsync -vsync
+
+# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
+Modeline "1920x1200"  193.25  1920 2056 2256 2592  1200 1203 1209 1245 -hsync +vsync
+
+# 2560x1600 59.97 Hz (CVT 4.10MA-R) hsync: 98.71 kHz; pclk: 268.50 MHz
+Modeline "2560x1600R"  268.50  2560 2608 2640 2720  1600 1603 1609 1646 +hsync -vsync
+
+# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
+Modeline "2560x1600"  348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync
Index: hw/xfree86/common/xf86xvmc.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xfree86/common/xf86xvmc.c,v
retrieving revision 1.9
diff -u -p -u -r1.9 xf86xvmc.c
--- hw/xfree86/common/xf86xvmc.c 29 May 2016 12:02:37 -0000 1.9
+++ hw/xfree86/common/xf86xvmc.c 3 Mar 2019 09:25:38 -0000
@@ -187,6 +187,7 @@ xf86XvMCScreenInit(ScreenPtr pScreen,
         }
         if (!pAdapt[i].xv_adaptor) {
             /* no adaptor by that name */
+            pScreenPriv->dixinfo = FALSE;
             free(pAdapt);
             return FALSE;
         }
Index: hw/xwayland/xwayland-input.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xwayland/xwayland-input.c,v
retrieving revision 1.5
diff -u -p -u -r1.5 xwayland-input.c
--- hw/xwayland/xwayland-input.c 8 Dec 2017 15:02:01 -0000 1.5
+++ hw/xwayland/xwayland-input.c 3 Mar 2019 09:25:38 -0000
@@ -639,7 +639,7 @@ keyboard_handle_keymap(void *data, struc
     XkbDeviceApplyKeymap(xwl_seat->keyboard, xkb);
 
     master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD);
-    if (master && master->lastSlave == xwl_seat->keyboard)
+    if (master)
         XkbDeviceApplyKeymap(master, xkb);
 
     XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE);
Index: hw/xwayland/xwayland.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/hw/xwayland/xwayland.c,v
retrieving revision 1.4
diff -u -p -u -r1.4 xwayland.c
--- hw/xwayland/xwayland.c 8 Dec 2017 15:02:01 -0000 1.4
+++ hw/xwayland/xwayland.c 3 Mar 2019 09:25:38 -0000
@@ -159,6 +159,9 @@ xwl_window_from_window(WindowPtr window)
 static struct xwl_seat *
 xwl_screen_get_default_seat(struct xwl_screen *xwl_screen)
 {
+    if (xorg_list_is_empty(&xwl_screen->seat_list))
+        return NULL;
+
     return container_of(xwl_screen->seat_list.prev,
                         struct xwl_seat,
                         link);
@@ -218,6 +221,10 @@ xwl_cursor_confined_to(DeviceIntPtr devi
     if (!xwl_seat)
         xwl_seat = xwl_screen_get_default_seat(xwl_screen);
 
+    /* xwl_seat hasn't been setup yet, don't do anything just yet */
+    if (!xwl_seat)
+        return;
+
     if (window == screen->root) {
         xwl_seat_unconfine_pointer(xwl_seat);
         return;
@@ -454,8 +461,7 @@ xwl_unrealize_window(WindowPtr window)
         return ret;
 
     wl_surface_destroy(xwl_window->surface);
-    if (RegionNotEmpty(DamageRegion(xwl_window->damage)))
-        xorg_list_del(&xwl_window->link_damage);
+    xorg_list_del(&xwl_window->link_damage);
     DamageUnregister(xwl_window->damage);
     DamageDestroy(xwl_window->damage);
     if (xwl_window->frame_callback)
Index: os/inputthread.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/os/inputthread.c,v
retrieving revision 1.1
diff -u -p -u -r1.1 inputthread.c
--- os/inputthread.c 8 Dec 2017 15:02:02 -0000 1.1
+++ os/inputthread.c 3 Mar 2019 09:25:45 -0000
@@ -497,6 +497,7 @@ InputThreadFini(void)
 
     /* Close the pipe to get the input thread to shut down */
     close(hotplugPipeWrite);
+    input_force_unlock();
     pthread_join(inputThreadInfo->thread, NULL);
 
     xorg_list_for_each_entry_safe(dev, next, &inputThreadInfo->devs, node) {
Index: os/xdmcp.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/os/xdmcp.c,v
retrieving revision 1.15
diff -u -p -u -r1.15 xdmcp.c
--- os/xdmcp.c 18 Feb 2018 17:16:37 -0000 1.15
+++ os/xdmcp.c 3 Mar 2019 09:25:45 -0000
@@ -486,7 +486,7 @@ XdmcpRegisterConnection(int type, const
                      IN6_IS_ADDR_V4MAPPED((const struct in6_addr *) address)) {
                 fromAddr = &((struct sockaddr_in *) &FromAddress)->sin_addr;
                 regAddr =
-                    &((struct sockaddr_in6 *) &address)->sin6_addr.s6_addr[12];
+                    &((struct sockaddr_in6 *) address)->sin6_addr.s6_addr[12];
                 regAddrlen = sizeof(struct in_addr);
             }
         }
Index: present/present.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/present/present.c,v
retrieving revision 1.10
diff -u -p -u -r1.10 present.c
--- present/present.c 18 Feb 2018 17:16:37 -0000 1.10
+++ present/present.c 3 Mar 2019 09:25:45 -0000
@@ -222,13 +222,13 @@ present_vblank_notify(present_vblank_ptr
     int         n;
 
     if (vblank->window)
-        present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset, vblank->client);
+        present_send_complete_notify(vblank->window, kind, mode, vblank->serial, ust, crtc_msc - vblank->msc_offset);
     for (n = 0; n < vblank->num_notifies; n++) {
         WindowPtr   window = vblank->notifies[n].window;
         CARD32      serial = vblank->notifies[n].serial;
 
         if (window)
-            present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset, vblank->client);
+            present_send_complete_notify(window, kind, mode, serial, ust, crtc_msc - vblank->msc_offset);
     }
 }
 
@@ -788,7 +788,6 @@ present_execute(present_vblank_ptr vblan
 int
 present_pixmap(WindowPtr window,
                PixmapPtr pixmap,
-               ClientPtr client,
                CARD32 serial,
                RegionPtr valid,
                RegionPtr update,
@@ -899,7 +898,6 @@ present_pixmap(WindowPtr window,
     xorg_list_append(&vblank->window_list, &window_priv->vblank);
     xorg_list_init(&vblank->event_queue);
 
-    vblank->client = client;
     vblank->screen = screen;
     vblank->window = window;
     vblank->pixmap = pixmap;
@@ -1019,7 +1017,6 @@ present_abort_vblank(ScreenPtr screen, R
 
 int
 present_notify_msc(WindowPtr window,
-                   ClientPtr client,
                    CARD32 serial,
                    uint64_t target_msc,
                    uint64_t divisor,
@@ -1027,7 +1024,6 @@ present_notify_msc(WindowPtr window,
 {
     return present_pixmap(window,
                           NULL,
-                          client,
                           serial,
                           NULL, NULL,
                           0, 0,
Index: present/present_event.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/present/present_event.c,v
retrieving revision 1.6
diff -u -p -u -r1.6 present_event.c
--- present/present_event.c 18 Feb 2018 17:16:37 -0000 1.6
+++ present/present_event.c 3 Mar 2019 09:25:45 -0000
@@ -146,7 +146,7 @@ present_register_complete_notify(present
 }
 
 void
-present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc, ClientPtr client)
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc)
 {
     present_window_priv_ptr window_priv = present_window_priv(window);
 
@@ -167,8 +167,7 @@ present_send_complete_notify(WindowPtr w
         present_event_ptr event;
 
         for (event = window_priv->events; event; event = event->next) {
-            if (event->mask & PresentCompleteNotifyMask &&
-                client == event->client) {
+            if (event->mask & PresentCompleteNotifyMask) {
                 cn.eid = event->id;
                 WriteEventsToClient(event->client, 1, (xEvent *) &cn);
             }
Index: present/present_priv.h
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/present/present_priv.h,v
retrieving revision 1.6
diff -u -p -u -r1.6 present_priv.h
--- present/present_priv.h 18 Feb 2018 17:16:37 -0000 1.6
+++ present/present_priv.h 3 Mar 2019 09:25:45 -0000
@@ -52,7 +52,6 @@ struct present_notify {
 struct present_vblank {
     struct xorg_list    window_list;
     struct xorg_list    event_queue;
-    ClientPtr           client;
     ScreenPtr           screen;
     WindowPtr           window;
     PixmapPtr           pixmap;
@@ -156,7 +155,6 @@ present_get_window_priv(WindowPtr window
 int
 present_pixmap(WindowPtr window,
                PixmapPtr pixmap,
-               ClientPtr client,
                CARD32 serial,
                RegionPtr valid,
                RegionPtr update,
@@ -174,7 +172,6 @@ present_pixmap(WindowPtr window,
 
 int
 present_notify_msc(WindowPtr window,
-                   ClientPtr client,
                    CARD32 serial,
                    uint64_t target_msc,
                    uint64_t divisor,
@@ -218,7 +215,7 @@ void
 present_send_config_notify(WindowPtr window, int x, int y, int w, int h, int bw, WindowPtr sibling);
 
 void
-present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc, ClientPtr client);
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 serial, uint64_t ust, uint64_t msc);
 
 void
 present_send_idle_notify(WindowPtr window, CARD32 serial, PixmapPtr pixmap, present_fence_ptr idle_fence);
Index: present/present_request.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/present/present_request.c,v
retrieving revision 1.6
diff -u -p -u -r1.6 present_request.c
--- present/present_request.c 18 Feb 2018 17:16:37 -0000 1.6
+++ present/present_request.c 3 Mar 2019 09:25:45 -0000
@@ -135,7 +135,7 @@ proc_present_pixmap(ClientPtr client)
             return ret;
     }
 
-    ret = present_pixmap(window, pixmap, client, stuff->serial, valid, update,
+    ret = present_pixmap(window, pixmap, stuff->serial, valid, update,
                          stuff->x_off, stuff->y_off, target_crtc,
                          wait_fence, idle_fence, stuff->options,
                          stuff->target_msc, stuff->divisor, stuff->remainder, notifies, nnotifies);
@@ -171,7 +171,7 @@ proc_present_notify_msc(ClientPtr client
         }
     }
 
-    return present_notify_msc(window, client, stuff->serial,
+    return present_notify_msc(window, stuff->serial,
                               stuff->target_msc, stuff->divisor, stuff->remainder);
 }
 
Index: randr/rrscreen.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/randr/rrscreen.c,v
retrieving revision 1.15
diff -u -p -u -r1.15 rrscreen.c
--- randr/rrscreen.c 18 Feb 2018 17:16:37 -0000 1.15
+++ randr/rrscreen.c 3 Mar 2019 09:25:45 -0000
@@ -272,7 +272,7 @@ ProcRRSetScreenSize(ClientPtr client)
             int source_height = mode->mode.height;
             Rotation rotation = crtc->rotation;
 
-            if (rotation == RR_Rotate_90 || rotation == RR_Rotate_270) {
+            if (rotation & (RR_Rotate_90 | RR_Rotate_270)) {
                 source_width = mode->mode.height;
                 source_height = mode->mode.width;
             }
Index: render/animcur.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/xserver/render/animcur.c,v
retrieving revision 1.14
diff -u -p -u -r1.14 animcur.c
--- render/animcur.c 8 Dec 2017 15:02:02 -0000 1.14
+++ render/animcur.c 3 Mar 2019 09:25:45 -0000
@@ -55,6 +55,7 @@ typedef struct _AnimCurElt {
 typedef struct _AnimCur {
     int nelt;                   /* number of elements in the elts array */
     AnimCurElt *elts;           /* actually allocated right after the structure */
+    OsTimerPtr timer;
 } AnimCurRec, *AnimCurPtr;
 
 typedef struct _AnimScrPriv {
@@ -65,8 +66,6 @@ typedef struct _AnimScrPriv {
     RealizeCursorProcPtr RealizeCursor;
     UnrealizeCursorProcPtr UnrealizeCursor;
     RecolorCursorProcPtr RecolorCursor;
-    OsTimerPtr timer;
-    Bool timer_set;
 } AnimCurScreenRec, *AnimCurScreenPtr;
 
 static unsigned char empty[4];
@@ -77,12 +76,9 @@ static CursorBits animCursorBits = {
 
 static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
 
-#define AnimCurScreenPrivateKey (&AnimCurScreenPrivateKeyRec)
-
 #define IsAnimCur(c)    ((c) && ((c)->bits == &animCursorBits))
 #define GetAnimCur(c)    ((AnimCurPtr) ((((char *)(c) + CURSOR_REC_SIZE))))
-#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey))
-#define SetAnimCurScreen(s,p) dixSetPrivate(&(s)->devPrivates, AnimCurScreenPrivateKey, p)
+#define GetAnimCurScreen(s) ((AnimCurScreenPtr)dixLookupPrivate(&(s)->devPrivates, &AnimCurScreenPrivateKeyRec))
 
 #define Wrap(as,s,elt,func) (((as)->elt = (s)->elt), (s)->elt = func)
 #define Unwrap(as,s,elt)    ((s)->elt = (as)->elt)
@@ -101,9 +97,7 @@ AnimCurCloseScreen(ScreenPtr pScreen)
     Unwrap(as, pScreen, RealizeCursor);
     Unwrap(as, pScreen, UnrealizeCursor);
     Unwrap(as, pScreen, RecolorCursor);
-    SetAnimCurScreen(pScreen, 0);
     ret = (*pScreen->CloseScreen) (pScreen);
-    free(as);
     return ret;
 }
 
@@ -135,57 +129,43 @@ AnimCurCursorLimits(DeviceIntPtr pDev,
 static CARD32
 AnimCurTimerNotify(OsTimerPtr timer, CARD32 now, void *arg)
 {
-    ScreenPtr pScreen = arg;
+    DeviceIntPtr dev = arg;
+    ScreenPtr pScreen = dev->spriteInfo->anim.pScreen;
     AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
-    DeviceIntPtr dev;
-    Bool activeDevice = FALSE;
-    CARD32 soonest = ~0;       /* earliest time to wakeup again */
-
-    for (dev = inputInfo.devices; dev; dev = dev->next) {
-        if (IsPointerDevice(dev) && pScreen == dev->spriteInfo->anim.pScreen) {
-            if (!activeDevice)
-                activeDevice = TRUE;
-
-            if ((INT32) (now - dev->spriteInfo->anim.time) >= 0) {
-                AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
-                int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
-                DisplayCursorProcPtr DisplayCursor;
-
-                /*
-                 * Not a simple Unwrap/Wrap as this
-                 * isn't called along the DisplayCursor
-                 * wrapper chain.
-                 */
-                DisplayCursor = pScreen->DisplayCursor;
-                pScreen->DisplayCursor = as->DisplayCursor;
-                (void) (*pScreen->DisplayCursor) (dev,
-                                                  pScreen,
-                                                  ac->elts[elt].pCursor);
-                as->DisplayCursor = pScreen->DisplayCursor;
-                pScreen->DisplayCursor = DisplayCursor;
 
-                dev->spriteInfo->anim.elt = elt;
-                dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
-            }
+    AnimCurPtr ac = GetAnimCur(dev->spriteInfo->anim.pCursor);
+    int elt = (dev->spriteInfo->anim.elt + 1) % ac->nelt;
+    DisplayCursorProcPtr DisplayCursor = pScreen->DisplayCursor;
 
-            if (soonest > dev->spriteInfo->anim.time)
-                soonest = dev->spriteInfo->anim.time;
-        }
-    }
+    /*
+     * Not a simple Unwrap/Wrap as this isn't called along the DisplayCursor
+     * wrapper chain.
+     */
+    pScreen->DisplayCursor = as->DisplayCursor;
+    (void) (*pScreen->DisplayCursor) (dev, pScreen, ac->elts[elt].pCursor);
+    as->DisplayCursor = pScreen->DisplayCursor;
+    pScreen->DisplayCursor = DisplayCursor;
 
-    if (activeDevice)
-        TimerSet(as->timer, TimerAbsolute, soonest, AnimCurTimerNotify, pScreen);
-    else
-        as->timer_set = FALSE;
+    dev->spriteInfo->anim.elt = elt;
+    dev->spriteInfo->anim.time = now + ac->elts[elt].delay;
+
+    return ac->elts[elt].delay;
+}
+
+static void
+AnimCurCancelTimer(DeviceIntPtr pDev)
+{
+    CursorPtr cur = pDev->spriteInfo->anim.pCursor;
 
-    return 0;
+    if (IsAnimCur(cur))
+        TimerCancel(GetAnimCur(cur)->timer);
 }
 
 static Bool
 AnimCurDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
 {
     AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
-    Bool ret;
+    Bool ret = TRUE;
 
     if (IsFloating(pDev))
         return FALSE;
@@ -195,8 +175,10 @@ AnimCurDisplayCursor(DeviceIntPtr pDev,
         if (pCursor != pDev->spriteInfo->anim.pCursor) {
             AnimCurPtr ac = GetAnimCur(pCursor);
 
-            ret = (*pScreen->DisplayCursor)
-                (pDev, pScreen, ac->elts[0].pCursor);
+            AnimCurCancelTimer(pDev);
+            ret = (*pScreen->DisplayCursor) (pDev, pScreen,
+                                             ac->elts[0].pCursor);
+
             if (ret) {
                 pDev->spriteInfo->anim.elt = 0;
                 pDev->spriteInfo->anim.time =
@@ -204,17 +186,13 @@ AnimCurDisplayCursor(DeviceIntPtr pDev,
                 pDev->spriteInfo->anim.pCursor = pCursor;
                 pDev->spriteInfo->anim.pScreen = pScreen;
 
-                if (!as->timer_set) {
-                    TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
-                             AnimCurTimerNotify, pScreen);
-                    as->timer_set = TRUE;
-                }
+                ac->timer = TimerSet(ac->timer, 0, ac->elts[0].delay,
+                                     AnimCurTimerNotify, pDev);
             }
         }
-        else
-            ret = TRUE;
     }
     else {
+        AnimCurCancelTimer(pDev);
         pDev->spriteInfo->anim.pCursor = 0;
         pDev->spriteInfo->anim.pScreen = 0;
         ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
@@ -233,12 +211,6 @@ AnimCurSetCursorPosition(DeviceIntPtr pD
     Unwrap(as, pScreen, SetCursorPosition);
     if (pDev->spriteInfo->anim.pCursor) {
         pDev->spriteInfo->anim.pScreen = pScreen;
-
-        if (!as->timer_set) {
-            TimerSet(as->timer, TimerAbsolute, pDev->spriteInfo->anim.time,
-                     AnimCurTimerNotify, pScreen);
-            as->timer_set = TRUE;
-        }
     }
     ret = (*pScreen->SetCursorPosition) (pDev, pScreen, x, y, generateEvent);
     Wrap(as, pScreen, SetCursorPosition, AnimCurSetCursorPosition);
@@ -308,18 +280,11 @@ AnimCurInit(ScreenPtr pScreen)
 {
     AnimCurScreenPtr as;
 
-    if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
+    if (!dixRegisterPrivateKey(&AnimCurScreenPrivateKeyRec, PRIVATE_SCREEN,
+                               sizeof(AnimCurScreenRec)))
         return FALSE;
 
-    as = (AnimCurScreenPtr) malloc(sizeof(AnimCurScreenRec));
-    if (!as)
-        return FALSE;
-    as->timer = TimerSet(NULL, TimerAbsolute, 0, AnimCurTimerNotify, pScreen);
-    if (!as->timer) {
-        free(as);
-        return FALSE;
-    }
-    as->timer_set = FALSE;
+    as = GetAnimCurScreen(pScreen);
 
     Wrap(as, pScreen, CloseScreen, AnimCurCloseScreen);
 
@@ -329,7 +294,6 @@ AnimCurInit(ScreenPtr pScreen)
     Wrap(as, pScreen, RealizeCursor, AnimCurRealizeCursor);
     Wrap(as, pScreen, UnrealizeCursor, AnimCurUnrealizeCursor);
     Wrap(as, pScreen, RecolorCursor, AnimCurRecolorCursor);
-    SetAnimCurScreen(pScreen, as);
     return TRUE;
 }
 
@@ -368,10 +332,14 @@ AnimCursorCreate(CursorPtr *cursors, CAR
 
     pCursor->id = cid;
 
+    ac = GetAnimCur(pCursor);
+    ac->timer = TimerSet(NULL, 0, 0, AnimCurTimerNotify, NULL);
+
     /* security creation/labeling check */
     rc = XaceHook(XACE_RESOURCE_ACCESS, client, cid, RT_CURSOR, pCursor,
                   RT_NONE, NULL, DixCreateAccess);
     if (rc != Success) {
+        TimerFree(ac->timer);
         dixFiniPrivates(pCursor, PRIVATE_CURSOR);
         free(pCursor);
         return rc;
@@ -381,7 +349,6 @@ AnimCursorCreate(CursorPtr *cursors, CAR
      * Fill in the AnimCurRec
      */
     animCursorBits.refcnt++;
-    ac = GetAnimCur(pCursor);
     ac->nelt = ncursor;
     ac->elts = (AnimCurElt *) (ac + 1);
 

--
Matthieu Herrb

Reply | Threaded
Open this post in threaded view
|

Re: update xserver to version 1.19.7

Jeremie Courreges-Anglas-2
On Sun, Mar 03 2019, Matthieu Herrb <[hidden email]> wrote:

> Hi,
>
> the patch below updates the X server to version 1.19.7. It's a bug-fix
> release. You'll find the change log at the begining of the patch.
>
> To test, apply the patch with patch -p0 -E in /usr/xenocara/xserver,
> and then re build xenocara as documented in release(8).
>
> The patch is also available at https://herrb.eu/xserver-1.19.7.diff
>
> Test reports and/or Oks welcome,

Works fine on my thinkpad x230.  No user-visible change except
additional modelines in Xorg.0.log.  ok jca@

(Though it probably needs more tests than my relatively usual setup and
use cases permit).

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply | Threaded
Open this post in threaded view
|

Re: update xserver to version 1.19.7

Stefan Sperling-5
In reply to this post by Matthieu Herrb-3
On Sun, Mar 03, 2019 at 01:48:18PM +0100, Matthieu Herrb wrote:

> Hi,
>
> the patch below updates the X server to version 1.19.7. It's a bug-fix
> release. You'll find the change log at the begining of the patch.
>
> To test, apply the patch with patch -p0 -E in /usr/xenocara/xserver,
> and then re build xenocara as documented in release(8).
>
> The patch is also available at https://herrb.eu/xserver-1.19.7.diff
>
> Test reports and/or Oks welcome,
>

Running this on x250 and x201, and it seems fine.