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 <kevinbr...@gmx.com> +Date: Sat Mar 2 14:13:20 2019 -0800 + + xserver 1.19.7 + + Signed-off-by: Kevin Brace <kevinbr...@gmx.com> + +commit a93f8f74b54accfb94a8c56357e566db76c24b22 +Author: Kevin Brace <kevinbr...@gmx.com> +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 <kevinbr...@gmx.com> + +commit af63efe470417cde8a64068b1e6965b2677d92d9 +Author: Kevin Brace <kevinbr...@gmx.com> +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 <kevinbr...@gmx.com> + +commit 56547b196660e246e37132960723819972b99c8c +Author: Mario Kleiner <mario.kleiner...@gmail.com> +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 <mario.kleiner...@gmail.com> + Reviewed-by: Thomas Hellstrom <thellst...@vmware.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit bebcc8477c8070ade9dd4be7299c718baeab3d7a) + +commit e96bd477395af3c2c3157ebda0f55ea4b672a114 +Author: Lyude Paul <ly...@redhat.com> +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 <ly...@redhat.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 98edb9a35e2cdd61355656b82975d7f2b6a9f0e6) + +commit 61d3f56877b23241757490efcdb759b905caca1d +Author: Alex Goins <ago...@nvidia.com> +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 <ago...@nvidia.com> + Reviewed-by: Michel Dänzer <michel.daen...@amd.com> + (cherry picked from commit 6b26a7bda9efa93440734ede0382a3e9a6761365) + +commit cb908a7840487e4b81aa16c5b3a4b609ff1153fc +Author: Jeff Smith <whydo...@gmail.com> +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 <whydo...@gmail.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit ff410c56bfd6dcdf5d252ef0ba3f4c6fde91774b) + +commit b41bb8147e706cb8e615842e08a548b7e8afd279 +Author: Jeff Smith <whydo...@gmail.com> +Date: Fri Jan 26 06:25:21 2018 -0600 + + glamor: remove unused variables in linear gradient shader + + Signed-off-by: Jeff Smith <whydo...@gmail.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 3bd17dff1ac5a4685a5da92a9982f621effee658) + +commit c715645c14ec00cd49e6bb86340351fa97ab6ea0 +Author: Jeff Smith <whydo...@gmail.com> +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 <whydo...@gmail.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 5815c7b5951fd46d69e5c40144b64e516c7afdbf) + +commit 38e6fb757386e2cb2c51a27e52346473d4ffb9a1 +Author: Jeff Smith <whydo...@gmail.com> +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 <whydo...@gmail.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 3e377e238f7257fd01e56a4a25dfd77e033673e4) + +commit f6cd99ed79c17e3aa04b8821d10ca95939bd8675 +Author: Olivier Fourdan <ofour...@redhat.com> +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 <a...@nwnk.net> and Daniel Stone + <dan...@fooishbar.org> for finding the root cause the issue. + + Signed-off-by: Olivier Fourdan <ofour...@redhat.com> + Reviewed-by: Daniel Stone <dani...@collabora.com> + (cherry picked from commit 3362422e8413dd9f231cfac50ce0a0862525b1bf) + +commit 9cd243f75dc52e1c649178963ab22583db52cd54 +Author: Michal Srb <m...@suse.com> +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 <m...@suse.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 71348e99a8e6a95542e483b93839168ca8f51f81) + +commit 5c456b6e2a9a579e67ba577f9147642406f2ce99 +Author: Peter Harris <phar...@opentext.com> +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 <a...@redhat.com> + Signed-off-by: Peter Harris <phar...@opentext.com> + (cherry picked from commit d5c23b29487d5ff440abf5ed0beb22c00f21e387) + +commit df319f889ddc952dd065bbb3252d045b90baaf8e +Author: Michel Dänzer <michel.daen...@amd.com> +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 <a...@redhat.com> + Signed-off-by: Michel Dänzer <michel.daen...@amd.com> + (cherry picked from commit 75408f53d4e203e462b2f13ea4b06264f0e59ad2) + +commit d0d1a694f967af770fba0d36043fd5218ff20984 +Author: Michel Dänzer <michel.daen...@amd.com> +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 <mwi...@suse.com> +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 <mwi...@suse.com> + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit a5e9bcad7ad0887f804905b482894b85751519fb) + +commit 71269c6e57cec82bbf81b1c99c8019098303d6a3 +Author: Adam Jackson <a...@redhat.com> +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 <a...@redhat.com> + (cherry picked from commit 652913cd9474946bcb29271602bacfd98f46ad0b) + +commit 8f11ab2b475623d5c00e146a7d6108f356a16b52 +Author: Helmut Grohne <hel...@subdivi.de> +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 <hel...@subdivi.de> + Bug-Debian: https://bugs.debian.org/882531 + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit c601c8faf54ff9e3bcbc653421828d71042deef7) + +commit 7cec7fb7bc34ea857e2d40ad32ead8a328dbe1a1 +Author: Peter Hutterer <peter.hutte...@who-t.net> +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 <a...@redhat.com> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit a309323328d9d6e0bf5d9ea1d75920e53b9beef3) + +commit 16896d05a6a2a91fd53cf6af56ce5e79f6abb500 +Author: Corentin Rossignon <corentin.rossig...@gmail.com> +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 <corentin.rossig...@gmail.com> + Bugzilla: https://bugs.freedesktop.org/104405 + Reviewed-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit dbfbe58b94ec07a45fd6170f96bffec55051724e) + +commit 5e83ebd76738455c443a66024b0b5eb92930b36c +Author: Adam Jackson <a...@redhat.com> +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 <a...@redhat.com> + Reviewed-by: Aaron Plattner <aplatt...@nvidia.com> + Tested-by: Aaron Plattner <aplatt...@nvidia.com> + (cherry picked from commit de60245e05c0d2528d4ff42557a044387e53315c) + +commit 693f0e21d55d6e9fe792d91e76e4168aa813db71 +Author: Adam Jackson <a...@redhat.com> +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 <rmor...@nvidia.com> + Tested-by: Robert Morell <rmor...@nvidia.com> + Signed-off-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 094a63d56fbfb9e23210cc9ac538fb198af37cee) + +commit 354c48304d27f75b7c33c03a0adb050c37788ccf +Author: Adam Jackson <a...@redhat.com> +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 <rmor...@nvidia.com> + Tested-by: Robert Morell <rmor...@nvidia.com> + Signed-off-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit cc3241a712684f8c7147f5688e9ee3ecb5a93b87) + +commit 26841b2c9ea03fda8b2d0da254e0344fd2a3afce +Author: Adam Jackson <a...@redhat.com> +Date: Thu Oct 26 13:40:57 2017 -0400 + + animcur: Use fixed-size screen private + + Reviewed-by: Robert Morell <rmor...@nvidia.com> + Tested-by: Robert Morell <rmor...@nvidia.com> + Signed-off-by: Adam Jackson <a...@redhat.com> + (cherry picked from commit 3abbdb7318018584a27220737bd92081ce8ee67c) + +commit 725b4b46ff59a8db84d8c12fec02c6b1d94b27ce +Author: Lukáš Krejčí <lskre...@gmail.com> +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čí <lskre...@gmail.com> + Acked-by: Hans de Goede <hdego...@redhat.com> + Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit f615cb62d47cb24ea31718e8226df53ce6651c91) + +commit 16fd18479d2f617adf0e6de922586441be3808eb +Author: Olivier Fourdan <ofour...@redhat.com> +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 <ofour...@redhat.com> + Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> + Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> + (cherry picked from commit 170c95978530f6373bdf4488116902b273f3abf4) + +commit a13271f2feb6e480b2e698d4efa3b94150a6808b +Author: Tapani Pälli <tapani.pa...@intel.com> +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 <a...@redhat.com> + Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> + 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 <a...@redhat.com> 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 <sc...@netsplit.com>. -# -# 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 <sc...@netsplit.com>. +dnl Copyright © 2012-2015 Dan Nicholson <dbn.li...@gmail.com> +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 bug-autoc...@gnu.org 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