Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2018-01-16 09:31:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Tue Jan 16 09:31:06 2018 rev:352 rq:562546 version:1.19.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2017-12-15 14:03:30.734041926 +0100
+++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes     
2018-01-16 09:31:08.313227532 +0100
@@ -1,0 +2,7 @@
+Sun Dec 24 14:59:57 UTC 2017 - tobias.johannes.klausm...@mni.thm.de
+
+- Update to version 1.19.6:
+  Another collection of fixes from master. There will likely be at east one 
more
+  1.19.x release in 2018.
+
+-------------------------------------------------------------------

Old:
----
  xorg-server-1.19.5.tar.bz2

New:
----
  xorg-server-1.19.6.tar.bz2

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

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.ne0Uhw/_old  2018-01-16 09:31:09.761159787 +0100
+++ /var/tmp/diff_new_pack.ne0Uhw/_new  2018-01-16 09:31:09.761159787 +0100
@@ -46,7 +46,7 @@
 %endif
 
 Name:           xorg-x11-server
-Version:        1.19.5
+Version:        1.19.6
 Release:        0
 Url:            http://xorg.freedesktop.org/
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ xorg-server-1.19.5.tar.bz2 -> xorg-server-1.19.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/ChangeLog 
new/xorg-server-1.19.6/ChangeLog
--- old/xorg-server-1.19.5/ChangeLog    2017-10-12 19:25:36.000000000 +0200
+++ new/xorg-server-1.19.6/ChangeLog    2017-12-20 21:33:11.000000000 +0100
@@ -1,3 +1,484 @@
+commit ebfb06b11955a6c32500b7086be912ab96b753a7
+Author: Adam Jackson <a...@redhat.com>
+Date:   Wed Dec 20 14:23:57 2017 -0500
+
+    xserver 1.19.6
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+
+commit 91c42093b248fc61a23cd1f48fec451fa29e122c
+Author: Thomas Hellstrom <thellst...@vmware.com>
+Date:   Tue Sep 26 17:28:12 2017 -0700
+
+    glx: Duplicate relevant fbconfigs for compositing visuals
+    
+    Previously, before GLX_OML_swap_method was fixed, both the X server and
+    client ignored the swapMethod fbconfig value, which meant that, if the dri
+    driver thought it exposed more than one swapMethod, it actually just
+    exported a duplicated set of fbconfigs. When fixing GLX_OML_swap_method
+    and restricting the choice for built-in visuals to a single swap method
+    that meant we didn't have that many fbconfigs to choose from when pairing
+    the compositing visual with an fbconfig, resulting in the fbconfig paired
+    with the compositing visual becoming too restrictive for some applications,
+    (at least for kwin). This problem would also happen if the dri driver
+    only exposed a single swap method to begin with.
+    
+    So, to make sure the compositing visual gets a good enough fbconfig,
+    duplicate fbconfigs that are suitable for compositing visuals and make
+    sure these duplicated fbconfigs can be used only by compositing visuals.
+    For duplicated fbconfigs not paired with a compositing visual, construct
+    new compositing visuals, making compositing clients able to choose visuals
+    / fbconfig more adapted to their needs.
+    
+    This is in some sense equivalent to adding a new "TRUECOLOR_COMPOSITING"
+    GLX visualtype.
+    
+    Fixes: 4486d199bd3b ("glx: Fix visual fbconfig matching with respect to
+                          swap method")
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102806
+    Signed-off-by: Thomas Hellstrom <thellst...@vmware.com>
+    Tested-By: Nick Sarnie <commendsar...@gmail.com>
+    Tested-by: Fredrik Höglund <fred...@kde.org>
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit f84e59a4f474d22860bac8aec2947798a86db69b)
+
+commit 22b0880df680aee95e21bb8f93d6dd7d3434c681
+Author: Thomas Hellstrom <thellst...@vmware.com>
+Date:   Wed Sep 6 16:27:54 2017 +0200
+
+    glx: Fix visual fbconfig matching with respect to swap method
+    
+    For the built in visuals, we'd typically select the "best" fbconfig
+    without considering the swap method. If the client then requests a
+    specific swap method, say GLX_SWAP_COPY_OML, it may well happen that the
+    first fbconfig matching requirements would have been paired with the 32-bit
+    compositing visual, and the client would render a potentially transparent
+    window.
+    
+    Fix this so that we try to match fbconfigs with the same swap method to all
+    built-in visuals. That would guarantee that selecting a specific swap-
+    method would not influence the chance of getting a compositing visual.
+    
+    Signed-off-by: Thomas Hellstrom <thellst...@vmware.com>
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit 4486d199bd3bcb5b2b8ad9bc54eb11604d9bd653)
+
+commit 1726badd61358e644b96f7c561ba239a68d87ba6
+Author: Thomas Hellstrom <thellst...@vmware.com>
+Date:   Wed Sep 6 16:27:53 2017 +0200
+
+    glx: Work around a GLX_OML swap method in older dri drivers
+    
+    The swapMethod config member would typically contain an arbitrary value
+    on older dri drivers. Fix this so that if we detect an illegal value,
+    return GLX_SWAP_UNDEFINED_OML.
+    
+    Signed-off-by: Thomas Hellstrom <thellst...@vmware.com>
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit 0fc26310d5b09213c65f50bde444a1758172b016)
+
+commit c64bd21d7a732b6b8de0f8f636e93b1d1bb46135
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jan 19 17:20:49 2017 -0500
+
+    glx: Move Composite's synthetic visuals to a different select group
+    
+    Should you find yourself using a 16bpp display while also using a
+    compositor, you poor soul, you may find that your GLX applications
+    behave strangely; in particular, glxgears will be transparent. This is
+    because it clears to (0,0,0,0) which is transparent if you honor alpha,
+    and it will choose the synthetic visual because it has the most
+    available r/g/b bits.
+    
+    To avoid this, bump synthetic visuals to a higher (less-preferred)
+    select group. Unless the client explicitly asks for non-zero alpha bits,
+    this will prefer any rgb565 visual ahead of the argb8888 visual.
+    
+    Reviewed-by: Eric Anholt <e...@anholt.net>
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit ea483af99a6351323afe00a0b630cd63310efdb1)
+
+commit 4c64b20a629287472908ae82a05844feed209dd9
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jan 19 17:20:49 2017 -0500
+
+    glx: Send GLX_VISUAL_SELECT_GROUP_SGIX attribute for visuals
+    
+    We already send this for fbconfigs. Mesa happens to implement
+    glXChooseVisual relative to the fbconfig data, but that might not be
+    true of NVIDIA's libGL.
+    
+    Reviewed-by: Eric Anholt <e...@anholt.net>
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit 43efaa6e4fd903229dc9c508da4177ad4bbdd4d8)
+
+commit 0a73e7bf10d5a9373be5f057fd583c8a5e8e511f
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jul 27 16:02:28 2017 -0400
+
+    composite: Make compIsAlternateVisual safe even if Composite is off
+    
+    As of ea483af9 we're calling this unconditionally from the GLX code so
+    the synthetic visual is in a lower select group. If Composite has been
+    disabled then GetCompScreen() will return NULL, and this would crash.
+    
+    Rather than force the caller to check first, just always return FALSE if
+    Composite is disabled (which is correct, since none of the visuals will
+    be synthetic in that case).
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    Reviewed-by: Aaron Plattner <aplatt...@nvidia.com>
+    (cherry picked from commit f80119120c487581ac050ce741808f7c8f438f35)
+
+commit 06d1c83d04a53f506ae3c8c3c86df5ae779b9ca9
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jan 19 17:20:49 2017 -0500
+
+    composite: Export compIsAlternateVisual
+    
+    Reviewed-by: Eric Anholt <e...@anholt.net>
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit ef2345aaa28461a76f77c65240ce5facc180f98e)
+
+commit c70d8e5585ddcd3c9f5b4adac15eca1f9178d3c5
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jan 19 17:20:49 2017 -0500
+
+    composite: Remove a misleading comment
+    
+    This comment is above compIsAlternateVisual, which used to be the only
+    thing determining whether implicit redirect was needed. It's not anymore
+    due to the redirection exception list. That job is now performed by
+    compImplicitRedirect, whose code is self-explanitory.
+    
+    Reviewed-by: Eric Anholt <e...@anholt.net>
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit bccbaf7c113b1300071601879002682ebbe8b1c1)
+
+commit dbf97534de61539873717b8e0fcc03f1be6362f8
+Author: Tomasz Śniatowski <kailo...@gmail.com>
+Date:   Wed Dec 6 12:16:17 2017 +0100
+
+    os: Fix strtok/free crash in ComputeLocalClient
+    
+    Don't reuse cmd for strtok output to ensure the proper pointer is
+    freed afterwards.
+    
+    The code incorrectly assumed the pointer returned by strtok(cmd, ":")
+    would always point to cmd. However, strtok(str, sep) != str if str
+    begins with sep. This caused an invalid-free crash when running
+    a program under X with a name beginning with a colon.
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=104123
+    Signed-off-by: Tomasz Śniatowski <kailo...@gmail.com>
+    Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
+    (cherry picked from commit 6883ae43eb72fe4e2651c1dca209563323fad2db)
+
+commit 072dff82817bc02bb4bdb2dad594e6090586bf58
+Author: Olivier Fourdan <ofour...@redhat.com>
+Date:   Tue Dec 5 09:59:06 2017 +0100
+
+    dix: avoid deferencing NULL PtrCtrl
+    
+    PtrCtrl really makes sense for relative pointing device only, absolute
+    devices such as touch devices do not have any PtrCtrl set.
+    
+    In some cases, if the client issues a XGetPointerControl() immediatlely
+    after a ChangeMasterDeviceClasses() copied the touch device to the VCP,
+    a NULL pointer dereference will occur leading to a crash of Xwayland.
+    
+    Check whether the PtrCtrl is not NULL in ProcGetPointerControl() and
+    return the default control values otherwise, to avoid the NULL pointer
+    dereference.
+    
+    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1519533
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    Signed-off-by: Olivier Fourdan <ofour...@redhat.com>
+    (cherry picked from commit 9f7a9be13d6449c00c86d3035374f4f543654b3f)
+
+commit f9a55653721980e3921083015ffb39f777606828
+Author: Olivier Fourdan <ofour...@redhat.com>
+Date:   Wed Sep 27 18:01:01 2017 +0200
+
+    xwayland: Fix non-argb cursor conversion
+    
+    From the bug: "What happens if bits->width is less than 8? :)"
+    
+    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=103012
+    Signed-off-by: Olivier Fourdan <ofour...@redhat.com>
+    Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
+    Reviewed-by: Daniel Stone <dani...@collabora.com>
+    (cherry picked from commit 97ac59b1ed3624f7c04e54dd3e3dadfa46a8f170)
+
+commit b832dac751f81d803d33df7c4dd929f77a69c7b0
+Author: Adam Jackson <a...@redhat.com>
+Date:   Tue Nov 14 15:15:01 2017 -0500
+
+    glx: Fix glXQueryContext for GLX_FBCONFIG_ID and GLX_RENDER_TYPE (v2)
+    
+    Just never filled in, oops. Seems to have gone unnoticed because
+    normally glXQueryContext simply returns the values filled in by the
+    client library when the context was created. The only path by which you
+    normally get to a GLXQueryContext request is glXImportContext, and then
+    only if the context is already indirect.
+    
+    However, that's a statement about Mesa's libGL (and anything else that
+    inherited that bit of the SGI SI more or less intact). Nothing prevents
+    a mischeivous client from issuing that request of a direct context, and
+    if they did we'd be in trouble because we never bothered to preserve the
+    associated fbconfig in the context state, so we'd crash looking up
+    GLX_VISUAL_ID_EXT. So let's fix that too.
+    
+    v2: Fixed missing preservation of the config in DRI2 (Eric Anholt)
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    Reviewed-by: Eric Anholt <e...@anholt.net>
+    (cherry picked from commit 5d667df6ea1634191a26f9a7c26bc883701d62b0)
+
+commit ee64427c6c5b22514b4d427fb9cee11b8239baea
+Author: Daniel Martin <consume.no...@gmail.com>
+Date:   Mon Nov 20 10:47:38 2017 +0100
+
+    os/xdmcp: Honour -once when session is dead
+    
+    Terminate a dead session when -once was passed. Don't restart it.
+    
+    Signed-off-by: Daniel Martin <consume.no...@gmail.com>
+    Reviewed-by: Walter Harms <wha...@bfs.de>
+    (cherry picked from commit 918afeecbc63d70413e222efdb2ac4cfb16eae9e)
+
+commit 5c00e693631475679c1c2504e03177652ec7de28
+Author: Michel Dänzer <michel.daen...@amd.com>
+Date:   Mon Oct 2 11:33:43 2017 +0200
+
+    present: Only send PresentCompleteNotify events to the presenting client
+    
+    We were sending the events to all clients listening for them on the
+    window. But clients can get confused by events from another client, and
+    I can't imagine any case where receiving events from other clients would
+    be required.
+    
+    v2:
+    * Also restrict events sent to additional windows to the presenting
+      client
+    * Don't shorten line lengths
+    
+    Reviewed-by: Keith Packard <kei...@keithp.com>
+    (cherry picked from commit 559954aaa8d811a22cf918cc16a7d618e12201a0)
+
+commit a4bd27bdc8e3569ffa67c1105a2e5cdf0f3de683
+Author: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+Date:   Thu Nov 9 10:21:19 2017 +0100
+
+    randr: rrGetScreenResources: initialize memory
+    
+    Similarly to bb766ef11227bd8c71ac65845d1930edd0eda40d, ensure that the
+    extra padding is set to 0.
+    
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    Signed-off-by: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+    (cherry picked from commit fb5ee77b91a93e27801006be8ee34d27984e7fa6)
+
+commit ece2e82ebf597ffda44b4753aa5cb7f5e1d97480
+Author: Adam Jackson <a...@redhat.com>
+Date:   Tue Nov 14 15:59:35 2017 -0500
+
+    glx: Only flush indirect contexts in MakeCurrent (v2)
+    
+    If the context is direct none of the GL commands were issued by this
+    process, the server couldn't flush them even if it wanted to.
+    
+    v2: Fix embarassingly obvious boolean inversion (Michel Dänzer)
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
+    (cherry picked from commit 307c124d6bcfe26057767b2c0990dc9ac66b9c93)
+
+commit d1a2a2757977bf2f241fd254be821bf96910b587
+Author: Hector Martin <mar...@marcan.st>
+Date:   Wed Nov 15 03:12:31 2017 +0900
+
+    edid: fix off-by-one error in CEA mode numbering
+    
+    The CEA extension short video descriptors contain the VIC, which starts
+    at 1, not 0.
+    
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    Signed-off-by: Hector Martin <mar...@marcan.st>
+    (cherry picked from commit 68556d74b49e99d3490166c446079f7d5de26ca4)
+
+commit b3fa60edc412e4c52bc6fa0346217eed0ebc98e3
+Author: Adam Jackson <a...@redhat.com>
+Date:   Mon Nov 6 16:07:41 2017 -0500
+
+    glx: Fix typos that break GLX_ARB_context_flush_control
+    
+    The trailing \n are just wrong here, __glXEnableExtension wants a string
+    without them.
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
+    Reviewed-by: Emil Velikov <emil.veli...@collabora.com>
+    (cherry picked from commit fd0eafb18426da14601d5c0d0a50092c49a7aff8)
+
+commit c010bcb8c36b2ca0bba1b80c9bde63ff89e42ed4
+Author: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+Date:   Sat Nov 4 23:06:29 2017 +0100
+
+    randr: ProcRRGetOutputInfo: initialize memory
+    
+    Running Xephyr under valgrind reveals that we're sending some
+    uninitialized memory over the wire (particularly, the leftover padding
+    that comes from rounding extraLen to the next 32-bit multiple).
+    
+    Solve by calloc()ing the memory instead of malloc()ing (the alternative
+    would be to memset just the padding, but I'm not sure it's more
+    convenient.)
+    
+    Signed-off-by: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit bb766ef11227bd8c71ac65845d1930edd0eda40d)
+
+commit c328570644e3b4dfaf840d057883a4db31976da7
+Author: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+Date:   Sat Nov 4 23:06:27 2017 +0100
+
+    xkb: initialize tsyms
+    
+    This fixes some “Conditional jump depends on uninitialized value(s)”
+    errors spotted by valgrind.
+    
+    Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
+    Signed-off-by: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
+    (cherry picked from commit b2167015043a458e9cf93b827b43eb5b7c552ce9)
+
+commit c39de5f7358634eb2fea66041e3a3465e8cf6e13
+Author: Eric Anholt <e...@anholt.net>
+Date:   Tue Oct 31 12:22:31 2017 -0700
+
+    xkb: Print the xkbcomp path being executed when we fail to compile.
+    
+    I don't know how many times I've had a broken server due to a bad
+    directory to xkbcomp, and only finding the whole path has shown me
+    where I went wrong.
+    
+    Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net>
+    (cherry picked from commit 30f4d440ebc3517fdcc1d3c6a422a8fbf3af1f23)
+
+commit 5a5b6d6cca469521daa6ac9087f3589b7489ab55
+Author: Peter Hutterer <peter.hutte...@who-t.net>
+Date:   Tue Sep 26 15:21:59 2017 +1000
+
+    config/udev: consider ID_INPUT_FOO=0 as 'unset'
+    
+    Historically we didn't need to care about this case but more devices are
+    having invalid types set and they cannot be unset with a hwdb entry (which
+    doesn't handle the empty string). Allow for "0" to mean "unset" because
+    anything else would be crazy anyway.
+    
+    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>
+    (cherry picked from commit 5aad81445c8c3d6b7b30d503cfe26027fa482870)
+
+commit 8817747c8587d75c14e00069e8f26e3edb671013
+Author: Daniel Martin <consume.no...@gmail.com>
+Date:   Fri Oct 27 16:11:55 2017 +0200
+
+    test: signal-logging: Fix looping signed number tests
+    
+    unsigned_tests[] was used to compute the amount of signed numbers to
+    test.
+    
+    Signed-off-by: Daniel Martin <consume.no...@gmail.com>
+    Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
+    (cherry picked from commit 15a32ee5d1fffa171bb05af9a0e5b472e4af1488)
+
+commit e663998fa8bb77bb753abed1e0c12922d4ce1669
+Author: Daniel Martin <consume.no...@gmail.com>
+Date:   Fri Oct 27 16:11:54 2017 +0200
+
+    test: input: Fix used uninitialized warning in dix_event_to_core
+    
+    input.c: In function ‘dix_event_to_core’:
+    ../include/inputstr.h:61:55: warning: ‘*((void *)&ev+80)’ is used 
uninitialized in this function [-Wuninitialized]
+     #define SetBit(ptr, bit)  (((BYTE *) (ptr))[(bit)>>3] |= (1 << ((bit) & 
7)))
+                                                           ^~
+    
+    Signed-off-by: Daniel Martin <consume.no...@gmail.com>
+    Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
+    (cherry picked from commit 0bcc65f2bf479c6a74ac70bb5b5181d6834dded6)
+
+commit e8530b872aa4b1648bba7fb3dddaf9abf70100ed
+Author: Daniel Martin <consume.no...@gmail.com>
+Date:   Fri Oct 27 16:11:53 2017 +0200
+
+    modesetting: Fix potential buffer overflow
+    
+    If one misconfigures a ZaphodHeads value (more than 20 characters
+    without a delimiter), we get an overflow of our buffer.  Use
+    xstrtokenize() instead of writing/fixing our own tokenizer.
+    
+    Signed-off-by: Daniel Martin <consume.no...@gmail.com>
+    Reviewed-by: Eric Engestrom <eric.engest...@imgtec.com>
+    (cherry picked from commit 04a305121fbc08ecc2ef345ee7155d6087a43fd1)
+
+commit 4ef1aef0fbbf47c937cf421f0180cc18fc23a03e
+Author: Alex Goins <ago...@nvidia.com>
+Date:   Tue Oct 24 18:39:13 2017 -0700
+
+    ramdac: Check ScreenPriv != NULL in xf86ScreenSetCursor()
+    
+    Similar to change cba5a10f, xf86ScreenSetCursor() would dereference 
ScreenPriv
+    without NULL checking it. If Option "SWCursor" is specified, ScreenPriv == 
NULL.
+    
+    Without this fix, it is observed that setting Option "SWCursor" "on" on the
+    modesetting driver in a PRIME configuration will segfault the server.
+    
+    It is important to return success rather than failure in the instance that
+    ScreenPriv == NULL and pCurs == NullCursor, because otherwise 
xf86SetCursor()
+    can fall into infinite recursion: xf86SetCursor(pCurs) calls
+    xf86ScreenSetCursor(pCurs), and if FALSE, calls xf86SetCursor(NullCursor). 
If
+    xf86ScreenSetCursor(NullCursor) returns FALSE, it calls
+    xf86SetCursor(NullCursor) again and this repeats forever.
+    
+    Signed-off-by: Alex Goins <ago...@nvidia.com>
+    Reviewed-by: Dave Airlie <airl...@redhat.com>
+    (cherry picked from commit 68d95e759f8b6ebca6bd52e69e6bc34cc174f8ca)
+
+commit cd5076a50c0274512bd2ce2c8ecf56c3517d0266
+Author: Nikolay Martynov <mar.ko...@gmail.com>
+Date:   Wed Sep 13 23:23:13 2017 -0400
+
+    XShmGetImage: fix censoring
+    
+    It looks like offsets calculated during image censoring are wrong.
+    This results in black (empty) images returns.
+    
+    This fix is very similar to 6c6f09aac7f1d1367a042087b7681c7fdf1d1e0f
+    that was applied to XGetImage
+    
+    Visually this fixes chromium/firefox window sharing in multiscreen
+    configurations - without this patch most of the windows on 'secodnary'
+    screens are black.
+    
+    This also should fix https://bugs.freedesktop.org/show_bug.cgi?id=101730.
+    
+    Signed-off-by: Nikolay Martynov <mar.ko...@gmail.com>
+    Reviewed-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit 885636b7d42b3c7b151fc386d358184db004ce45)
+
+commit a6776111b24f7211c08c7497466f5d9351d0756c
+Author: Adam Jackson <a...@redhat.com>
+Date:   Thu Jun 8 16:23:12 2017 -0400
+
+    xfixes: Remove the CursorCurrent array
+    
+    We're not wrapping all the ways a cursor can be destroyed, so this array
+    ends up with stale data. Rather than try harder to wrap more code paths,
+    just look up the cursor when we need it.
+    
+    Signed-off-by: Adam Jackson <a...@redhat.com>
+    (cherry picked from commit aa6651f83c698e8cc40de61aad36c73ca7a6adcf)
+
 commit b96e982e3a43513549636850186ff80a82190f64
 Author: Adam Jackson <a...@redhat.com>
 Date:   Thu Oct 12 12:32:31 2017 -0400
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/Xext/shm.c 
new/xorg-server-1.19.6/Xext/shm.c
--- old/xorg-server-1.19.5/Xext/shm.c   2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/Xext/shm.c   2017-12-20 21:32:33.000000000 +0100
@@ -650,9 +650,8 @@
                wBorderWidth((WindowPtr) pDraw) + (int) pDraw->height)
             return BadMatch;
         visual = wVisual(((WindowPtr) pDraw));
-        pVisibleRegion = NotClippedByChildren((WindowPtr) pDraw);
-        if (pVisibleRegion)
-            RegionTranslate(pVisibleRegion, -pDraw->x, -pDraw->y);
+        if (pDraw->type == DRAWABLE_WINDOW)
+            pVisibleRegion = &((WindowPtr) pDraw)->borderClip;
     }
     else {
         if (stuff->x < 0 ||
@@ -715,9 +714,6 @@
         }
     }
 
-    if (pVisibleRegion)
-        RegionDestroy(pVisibleRegion);
-
     if (client->swapped) {
         swaps(&xgi.sequenceNumber);
         swapl(&xgi.length);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/composite/compositeext.h 
new/xorg-server-1.19.6/composite/compositeext.h
--- old/xorg-server-1.19.5/composite/compositeext.h     2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/composite/compositeext.h     2017-12-20 
21:32:33.000000000 +0100
@@ -39,6 +39,8 @@
                                                                     VisualID 
parentVisual,
                                                                     VisualID 
winVisual);
 
+
+extern _X_EXPORT Bool compIsAlternateVisual(ScreenPtr pScreen, XID visual);
 extern _X_EXPORT RESTYPE CompositeClientWindowType;
 
 #endif                          /* _COMPOSITEEXT_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/composite/compwindow.c 
new/xorg-server-1.19.6/composite/compwindow.c
--- old/xorg-server-1.19.5/composite/compwindow.c       2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/composite/compwindow.c       2017-12-20 
21:32:33.000000000 +0100
@@ -320,18 +320,13 @@
     }
 }
 
-/*
- * Returns TRUE if the window needs server-provided automatic redirect,
- * which is true if the child and parent aren't both regular or ARGB visuals
- */
-
-static Bool
+Bool
 compIsAlternateVisual(ScreenPtr pScreen, XID visual)
 {
     CompScreenPtr cs = GetCompScreen(pScreen);
     int i;
 
-    for (i = 0; i < cs->numAlternateVisuals; i++)
+    for (i = 0; cs && i < cs->numAlternateVisuals; i++)
         if (cs->alternateVisuals[i] == visual)
             return TRUE;
     return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/config/udev.c 
new/xorg-server-1.19.6/config/udev.c
--- old/xorg-server-1.19.5/config/udev.c        2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/config/udev.c        2017-12-20 21:32:33.000000000 
+0100
@@ -134,7 +134,8 @@
     }
 #endif
 
-    if (!udev_device_get_property_value(udev_device, "ID_INPUT")) {
+    value = udev_device_get_property_value(udev_device, "ID_INPUT");
+    if (value && !strcmp(value, "0")) {
         LogMessageVerb(X_INFO, 10,
                        "config/udev: ignoring device %s without "
                        "property ID_INPUT set\n", path);
@@ -237,38 +238,36 @@
         else if (!strcmp(key, "ID_VENDOR")) {
             LOG_PROPERTY(path, key, value);
             attrs.vendor = strdup(value);
-        }
-        else if (!strcmp(key, "ID_INPUT_KEY")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_KEY;
-        }
-        else if (!strcmp(key, "ID_INPUT_KEYBOARD")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_KEYBOARD;
-        }
-        else if (!strcmp(key, "ID_INPUT_MOUSE")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_POINTER;
-        }
-        else if (!strcmp(key, "ID_INPUT_JOYSTICK")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_JOYSTICK;
-        }
-        else if (!strcmp(key, "ID_INPUT_TABLET")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_TABLET;
-        }
-        else if (!strcmp(key, "ID_INPUT_TABLET_PAD")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_TABLET_PAD;
-        }
-        else if (!strcmp(key, "ID_INPUT_TOUCHPAD")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_TOUCHPAD;
-        }
-        else if (!strcmp(key, "ID_INPUT_TOUCHSCREEN")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.flags |= ATTR_TOUCHSCREEN;
+        } else if (!strncmp(key, "ID_INPUT_", 9)) {
+            const struct pfmap {
+                const char *property;
+                unsigned int flag;
+            } map[] = {
+                { "ID_INPUT_KEY", ATTR_KEY },
+                { "ID_INPUT_KEYBOARD", ATTR_KEYBOARD },
+                { "ID_INPUT_MOUSE", ATTR_POINTER },
+                { "ID_INPUT_JOYSTICK", ATTR_JOYSTICK },
+                { "ID_INPUT_TABLET", ATTR_TABLET },
+                { "ID_INPUT_TABLET_PAD", ATTR_TABLET_PAD },
+                { "ID_INPUT_TOUCHPAD", ATTR_TOUCHPAD },
+                { "ID_INPUT_TOUCHSCREEN", ATTR_TOUCHSCREEN },
+                { NULL, 0 },
+            };
+
+            /* Anything but the literal string "0" is considered a
+             * boolean true. The empty string isn't a thing with udev
+             * properties anyway */
+            if (value && strcmp(value, "0")) {
+                const struct pfmap *m = map;
+
+                while (m->property != NULL) {
+                    if (!strcmp(m->property, key)) {
+                        LOG_PROPERTY(path, key, value);
+                        attrs.flags |= m->flag;
+                    }
+                    m++;
+                }
+            }
         }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/configure 
new/xorg-server-1.19.6/configure
--- old/xorg-server-1.19.5/configure    2017-10-12 19:25:13.000000000 +0200
+++ new/xorg-server-1.19.6/configure    2017-12-20 21:32:47.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xorg-server 1.19.5.
+# Generated by GNU Autoconf 2.69 for xorg-server 1.19.6.
 #
 # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
 #
@@ -651,8 +651,8 @@
 # Identity of this package.
 PACKAGE_NAME='xorg-server'
 PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='1.19.5'
-PACKAGE_STRING='xorg-server 1.19.5'
+PACKAGE_VERSION='1.19.6'
+PACKAGE_STRING='xorg-server 1.19.6'
 PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
 PACKAGE_URL=''
 
@@ -2058,7 +2058,7 @@
   # 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.5 to adapt to many kinds of systems.
+\`configure' configures xorg-server 1.19.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2128,7 +2128,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xorg-server 1.19.5:";;
+     short | recursive ) echo "Configuration of xorg-server 1.19.6:";;
    esac
   cat <<\_ACEOF
 
@@ -2325,10 +2325,10 @@
                           org.x)
   --with-bundle-version=VERSION
                           Version to use for X11.app's CFBundleVersion
-                          (default: 1.19.5)
+                          (default: 1.19.6)
   --with-bundle-version-string=VERSION
                           Version to use for X11.app's
-                          CFBundleShortVersionString (default: 1.19.5)
+                          CFBundleShortVersionString (default: 1.19.6)
   --with-sparkle-feed-url=URL
                           URL for the Sparkle feed (default:
                           https://www.xquartz.org/releases/sparkle/release.xml)
@@ -2585,7 +2585,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xorg-server configure 1.19.5
+xorg-server configure 1.19.6
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3294,7 +3294,7 @@
 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.5, which was
+It was created by xorg-server $as_me 1.19.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3642,8 +3642,8 @@
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-RELEASE_DATE="2017-10-12"
-RELEASE_NAME="Shahi Paneer"
+RELEASE_DATE="2017-12-20"
+RELEASE_NAME="Lousiana Gumbo"
 
 
 am__api_version='1.15'
@@ -4161,7 +4161,7 @@
 
 # Define the identity of the package.
  PACKAGE='xorg-server'
- VERSION='1.19.5'
+ VERSION='1.19.6'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -23823,7 +23823,7 @@
 if test "${with_bundle_version+set}" = set; then :
   withval=$with_bundle_version;  BUNDLE_VERSION="${withval}"
 else
-   BUNDLE_VERSION="1.19.5"
+   BUNDLE_VERSION="1.19.6"
 fi
 
 
@@ -33834,7 +33834,7 @@
 # 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.5, which was
+This file was extended by xorg-server $as_me 1.19.6, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -33900,7 +33900,7 @@
 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.5
+xorg-server config.status 1.19.6
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/configure.ac 
new/xorg-server-1.19.6/configure.ac
--- old/xorg-server-1.19.5/configure.ac 2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/configure.ac 2017-12-20 21:32:33.000000000 +0100
@@ -26,9 +26,9 @@
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.19.5, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2017-10-12"
-RELEASE_NAME="Shahi Paneer"
+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_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/dix/devices.c 
new/xorg-server-1.19.6/dix/devices.c
--- old/xorg-server-1.19.5/dix/devices.c        2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/dix/devices.c        2017-12-20 21:32:33.000000000 
+0100
@@ -2329,10 +2329,15 @@
 ProcGetPointerControl(ClientPtr client)
 {
     DeviceIntPtr ptr = PickPointer(client);
-    PtrCtrl *ctrl = &ptr->ptrfeed->ctrl;
+    PtrCtrl *ctrl;
     xGetPointerControlReply rep;
     int rc;
 
+    if (ptr->ptrfeed)
+        ctrl = &ptr->ptrfeed->ctrl;
+    else
+        ctrl = &defaultPointerControl;
+
     REQUEST_SIZE_MATCH(xReq);
 
     rc = XaceHook(XACE_DEVICE_ACCESS, client, ptr, DixGetAttrAccess);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxcmds.c 
new/xorg-server-1.19.6/glx/glxcmds.c
--- old/xorg-server-1.19.5/glx/glxcmds.c        2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxcmds.c        2017-12-20 21:32:33.000000000 
+0100
@@ -215,6 +215,7 @@
     if (context == NULL)
         return NULL;
 
+    context->config = modes;
     context->destroy = __glXdirectContextDestroy;
     context->loseCurrent = __glXdirectContextLoseCurrent;
 
@@ -631,7 +632,7 @@
         /*
          ** Flush the previous context if needed.
          */
-        Bool need_flush = GL_TRUE;
+        Bool need_flush = !prevglxc->isDirect;
 #ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
         if (prevglxc->releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB)
             need_flush = GL_FALSE;
@@ -1030,13 +1031,14 @@
         buf[p++] = modes->samples;
         buf[p++] = GLX_SAMPLE_BUFFERS_SGIS;
         buf[p++] = modes->sampleBuffers;
+        buf[p++] = GLX_VISUAL_SELECT_GROUP_SGIX;
+        buf[p++] = modes->visualSelectGroup;
         /* Add attribute only if its value is not default. */
         if (modes->sRGBCapable != GL_FALSE) {
             buf[p++] = GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT;
             buf[p++] = modes->sRGBCapable;
         }
-        /* Don't add visualSelectGroup (GLX_VISUAL_SELECT_GROUP_SGIX)?
-         * Pad the remaining place with zeroes, so that attributes count is 
constant. */
+        /* Pad with zeroes, so that attributes count is constant. */
         while (p < GLX_VIS_CONFIG_TOTAL) {
             buf[p++] = 0;
             buf[p++] = 0;
@@ -1720,7 +1722,7 @@
     ClientPtr client = cl->client;
     __GLXcontext *ctx;
     xGLXQueryContextInfoEXTReply reply;
-    int nProps = 3;
+    int nProps = 5;
     int sendBuf[nProps * 2];
     int nReplyBytes;
     int err;
@@ -1742,6 +1744,10 @@
     sendBuf[3] = (int) (ctx->config->visualID);
     sendBuf[4] = GLX_SCREEN_EXT;
     sendBuf[5] = (int) (ctx->pGlxScreen->pScreen->myNum);
+    sendBuf[6] = GLX_FBCONFIG_ID;
+    sendBuf[7] = (int) (ctx->config->fbconfigID);
+    sendBuf[8] = GLX_RENDER_TYPE;
+    sendBuf[9] = (int) (ctx->config->renderType);
 
     if (client->swapped) {
         __glXSwapQueryContextInfoEXTReply(client, &reply, sendBuf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxdri2.c 
new/xorg-server-1.19.6/glx/glxdri2.c
--- old/xorg-server-1.19.5/glx/glxdri2.c        2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxdri2.c        2017-12-20 21:32:33.000000000 
+0100
@@ -557,6 +557,7 @@
         return NULL;
     }
 
+    context->base.config = glxConfig;
     context->base.destroy = __glXDRIcontextDestroy;
     context->base.makeCurrent = __glXDRIcontextMakeCurrent;
     context->base.loseCurrent = __glXDRIcontextLoseCurrent;
@@ -901,7 +902,7 @@
 #ifdef __DRI2_FLUSH_CONTROL
         if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
             __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_ARB_context_flush_control\n");
+                                 "GLX_ARB_context_flush_control");
         }
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxdricommon.c 
new/xorg-server-1.19.6/glx/glxdricommon.c
--- old/xorg-server-1.19.5/glx/glxdricommon.c   2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxdricommon.c   2017-12-20 21:32:33.000000000 
+0100
@@ -139,13 +139,15 @@
 static __GLXconfig *
 createModeFromConfig(const __DRIcoreExtension * core,
                      const __DRIconfig * driConfig,
-                     unsigned int visualType)
+                     unsigned int visualType,
+                     GLboolean duplicateForComp)
 {
     __GLXDRIconfig *config;
     GLint renderType = 0;
     unsigned int attrib, value, drawableType = GLX_PBUFFER_BIT;
     int i;
 
+
     config = calloc(1, sizeof *config);
 
     config->driConfig = driConfig;
@@ -181,6 +183,13 @@
                 config->config.bindToTextureTargets |=
                     GLX_TEXTURE_RECTANGLE_BIT_EXT;
             break;
+        case __DRI_ATTRIB_SWAP_METHOD:
+            /* Workaround for broken dri drivers */
+            if (value != GLX_SWAP_UNDEFINED_OML &&
+                value != GLX_SWAP_COPY_OML &&
+                value != GLX_SWAP_EXCHANGE_OML)
+                value = GLX_SWAP_UNDEFINED_OML;
+            /* Fall through. */
         default:
             setScalar(&config->config, attrib, value);
             break;
@@ -196,6 +205,28 @@
     config->config.drawableType = drawableType;
     config->config.yInverted = GL_TRUE;
 
+#ifdef COMPOSITE
+    /*
+     * Here we decide what fbconfigs will be duplicated for compositing.
+     * fgbconfigs marked with duplicatedForConf will be reserved for
+     * compositing visuals.
+     * It might look strange to do this decision this late when translation
+     * from a __DRIConfig is already done, but using the __DRIConfig
+     * accessor function becomes worse both with respect to code complexity
+     * and CPU usage.
+     */
+    if (duplicateForComp &&
+        (render_type_is_pbuffer_only(renderType) ||
+         config->config.rgbBits != 32 ||
+         config->config.visualRating != GLX_NONE ||
+         config->config.sampleBuffers != 0)) {
+        free(config);
+        return NULL;
+    }
+
+    config->config.duplicatedForComp = duplicateForComp;
+#endif
+
     return &config->config;
 }
 
@@ -210,21 +241,34 @@
     head.next = NULL;
 
     for (i = 0; configs[i]; i++) {
-        tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR);
+        tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
+                                          GL_FALSE);
         if (tail->next == NULL)
             break;
-
         tail = tail->next;
     }
 
     for (i = 0; configs[i]; i++) {
-        tail->next = createModeFromConfig(core, configs[i], GLX_DIRECT_COLOR);
+        tail->next = createModeFromConfig(core, configs[i], GLX_DIRECT_COLOR,
+                                          GL_FALSE);
         if (tail->next == NULL)
             break;
 
         tail = tail->next;
     }
 
+#ifdef COMPOSITE
+    /* Duplicate fbconfigs for use with compositing visuals */
+    for (i = 0; configs[i]; i++) {
+        tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR,
+                                          GL_TRUE);
+        if (tail->next == NULL)
+            continue;
+
+       tail = tail->next;
+    }
+#endif
+
     return head.next;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxdriswrast.c 
new/xorg-server-1.19.6/glx/glxdriswrast.c
--- old/xorg-server-1.19.5/glx/glxdriswrast.c   2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxdriswrast.c   2017-12-20 21:32:33.000000000 
+0100
@@ -244,6 +244,7 @@
     if (context == NULL)
         return NULL;
 
+    context->base.config = glxConfig;
     context->base.destroy = __glXDRIcontextDestroy;
     context->base.makeCurrent = __glXDRIcontextMakeCurrent;
     context->base.loseCurrent = __glXDRIcontextLoseCurrent;
@@ -413,7 +414,7 @@
 #ifdef __DRI2_FLUSH_CONTROL
         if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
             __glXEnableExtension(screen->glx_enable_bits,
-                                 "GLX_ARB_context_flush_control\n");
+                                 "GLX_ARB_context_flush_control");
         }
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxscreens.c 
new/xorg-server-1.19.6/glx/glxscreens.c
--- old/xorg-server-1.19.5/glx/glxscreens.c     2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxscreens.c     2017-12-20 21:32:33.000000000 
+0100
@@ -43,6 +43,7 @@
 #include "glxutil.h"
 #include "glxext.h"
 #include "protocol-versions.h"
+#include "compositeext.h"
 
 static DevPrivateKeyRec glxScreenPrivateKeyRec;
 
@@ -277,7 +278,21 @@
         /* Can't use the same FBconfig for multiple X visuals.  I think. */
         if (config->visualID != 0)
             continue;
-
+#ifdef COMPOSITE
+       /* Use only duplicated configs for compIsAlternateVisuals */
+        if (!!compIsAlternateVisual(pGlxScreen->pScreen, visual->vid) !=
+           !!config->duplicatedForComp)
+            continue;
+#endif
+        /*
+         * If possible, use the same swapmethod for all built-in visual
+         * fbconfigs, to avoid getting the 32-bit composite visual when
+         * requesting, for example, a SWAP_COPY fbconfig.
+         */
+        if (config->swapMethod == GLX_SWAP_UNDEFINED_OML)
+            score += 32;
+        if (config->swapMethod == GLX_SWAP_EXCHANGE_OML)
+            score += 16;
         if (config->doubleBufferMode > 0)
             score += 8;
         if (config->depthBits > 0)
@@ -336,6 +351,10 @@
         if (config) {
             pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
             config->visualID = visual->vid;
+#ifdef COMPOSITE
+            if (compIsAlternateVisual(pScreen, visual->vid))
+                config->visualSelectGroup++;
+#endif
         }
     }
 
@@ -355,7 +374,12 @@
          * set up above is for.
          */
         depth = config->redBits + config->greenBits + config->blueBits;
-
+#ifdef COMPOSITE
+       if (config->duplicatedForComp) {
+               depth += config->alphaBits;
+               config->visualSelectGroup++;
+       }
+#endif
         /* Make sure that our FBconfig's depth can actually be displayed
          * (corresponds to an existing visual).
          */
@@ -378,6 +402,10 @@
         if (visual == NULL)
             continue;
 
+#ifdef COMPOSITE
+        if (config->duplicatedForComp)
+           (void) CompositeRegisterAlternateVisuals(pScreen, &visual->vid, 1);
+#endif
         pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
         initGlxVisual(visual, config);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/glx/glxscreens.h 
new/xorg-server-1.19.6/glx/glxscreens.h
--- old/xorg-server-1.19.5/glx/glxscreens.h     2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/glx/glxscreens.h     2017-12-20 21:32:33.000000000 
+0100
@@ -39,7 +39,11 @@
 
 typedef struct __GLXconfig __GLXconfig;
 struct __GLXconfig {
+    /* Management */
     __GLXconfig *next;
+#ifdef COMPOSITE
+    GLboolean duplicatedForComp;
+#endif
     GLuint doubleBufferMode;
     GLuint stereoMode;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xorg-server-1.19.5/hw/xfree86/drivers/modesetting/drmmode_display.c 
new/xorg-server-1.19.6/hw/xfree86/drivers/modesetting/drmmode_display.c
--- old/xorg-server-1.19.5/hw/xfree86/drivers/modesetting/drmmode_display.c     
2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/hw/xfree86/drivers/modesetting/drmmode_display.c     
2017-12-20 21:32:33.000000000 +0100
@@ -57,34 +57,22 @@
 static Bool
 drmmode_zaphod_string_matches(ScrnInfoPtr scrn, const char *s, char 
*output_name)
 {
-    int i = 0;
-    char s1[20];
+    char **token = xstrtokenize(s, ", \t\n\r");
+    Bool ret = FALSE;
 
-    do {
-        switch(*s) {
-        case ',':
-            s1[i] = '\0';
-            i = 0;
-            if (strcmp(s1, output_name) == 0)
-                return TRUE;
-            break;
-        case ' ':
-        case '\t':
-        case '\n':
-        case '\r':
-            break;
-        default:
-            s1[i] = *s;
-            i++;
-            break;
-        }
-    } while(*s++);
-
-    s1[i] = '\0';
-    if (strcmp(s1, output_name) == 0)
-        return TRUE;
+    if (!token)
+        return FALSE;
 
-    return FALSE;
+    for (int i = 0; token[i]; i++) {
+        if (strcmp(token[i], output_name) == 0)
+            ret = TRUE;
+
+        free(token[i]);
+    }
+
+    free(token);
+
+    return ret;
 }
 
 int
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/hw/xfree86/modes/xf86EdidModes.c 
new/xorg-server-1.19.6/hw/xfree86/modes/xf86EdidModes.c
--- old/xorg-server-1.19.5/hw/xfree86/modes/xf86EdidModes.c     2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/hw/xfree86/modes/xf86EdidModes.c     2017-12-20 
21:32:33.000000000 +0100
@@ -976,8 +976,8 @@
     int vid;
 
     vid = video->video_code & 0x7f;
-    if (vid < CEA_VIDEO_MODES_NUM) {
-        Mode = xf86DuplicateMode(CEAVideoModes + vid);
+    if (vid >= 1 && vid <= CEA_VIDEO_MODES_NUM) {
+        Mode = xf86DuplicateMode(CEAVideoModes + (vid - 1));
         *Modes = xf86ModesAdd(*Modes, Mode);
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/hw/xfree86/ramdac/xf86HWCurs.c 
new/xorg-server-1.19.6/hw/xfree86/ramdac/xf86HWCurs.c
--- old/xorg-server-1.19.5/hw/xfree86/ramdac/xf86HWCurs.c       2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/hw/xfree86/ramdac/xf86HWCurs.c       2017-12-20 
21:32:33.000000000 +0100
@@ -180,9 +180,16 @@
     xf86CursorScreenPtr ScreenPriv =
         (xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
                                                xf86CursorScreenKey);
-    xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr;
+
+    xf86CursorInfoPtr infoPtr;
     unsigned char *bits;
 
+    if (!ScreenPriv) { /* NULL if Option "SWCursor" */
+        return (pCurs == NullCursor);
+    }
+
+    infoPtr = ScreenPriv->CursorInfoPtr;
+
     if (pCurs == NullCursor) {
         (*infoPtr->HideCursor) (infoPtr->pScrn);
         return TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/hw/xquartz/GL/indirect.c 
new/xorg-server-1.19.6/hw/xquartz/GL/indirect.c
--- old/xorg-server-1.19.5/hw/xquartz/GL/indirect.c     2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/hw/xquartz/GL/indirect.c     2017-12-20 
21:32:33.000000000 +0100
@@ -156,7 +156,7 @@
     memset(context, 0, sizeof *context);
 
     context->base.pGlxScreen = screen;
-
+    context->base.config = conf;
     context->base.destroy = __glXAquaContextDestroy;
     context->base.makeCurrent = __glXAquaContextMakeCurrent;
     context->base.loseCurrent = __glXAquaContextLoseCurrent;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/hw/xwayland/xwayland-cursor.c 
new/xorg-server-1.19.6/hw/xwayland/xwayland-cursor.c
--- old/xorg-server-1.19.5/hw/xwayland/xwayland-cursor.c        2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/hw/xwayland/xwayland-cursor.c        2017-12-20 
21:32:33.000000000 +0100
@@ -42,7 +42,7 @@
         (cursor->foreGreen & 0xff00) | (cursor->foreGreen >> 8);
     bg = ((cursor->backRed & 0xff00) << 8) |
         (cursor->backGreen & 0xff00) | (cursor->backGreen >> 8);
-    stride = (bits->width / 8 + 3) & ~3;
+    stride = BitmapBytePad(bits->width);
     for (y = 0; y < bits->height; y++)
         for (x = 0; x < bits->width; x++) {
             i = y * stride + x / 8;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/include/misc.h 
new/xorg-server-1.19.6/include/misc.h
--- old/xorg-server-1.19.5/include/misc.h       2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/include/misc.h       2017-12-20 21:32:33.000000000 
+0100
@@ -248,7 +248,7 @@
 }
 
 
-extern char **xstrtokenize(const char *str, const char *separators);
+extern _X_EXPORT char **xstrtokenize(const char *str, const char *separators);
 extern void FormatInt64(int64_t num, char *string);
 extern void FormatUInt64(uint64_t num, char *string);
 extern void FormatUInt64Hex(uint64_t num, char *string);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/os/access.c 
new/xorg-server-1.19.6/os/access.c
--- old/xorg-server-1.19.5/os/access.c  2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/os/access.c  2017-12-20 21:32:33.000000000 +0100
@@ -1137,12 +1137,12 @@
         /* Cut off any colon and whatever comes after it, see
          * 
https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html
          */
-        cmd = strtok(cmd, ":");
+        char *tok = strtok(cmd, ":");
 
 #if !defined(WIN32) || defined(__CYGWIN__)
-        ret = strcmp(basename(cmd), "ssh") != 0;
+        ret = strcmp(basename(tok), "ssh") != 0;
 #else
-        ret = strcmp(cmd, "ssh") != 0;
+        ret = strcmp(tok, "ssh") != 0;
 #endif
 
         free(cmd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/os/xdmcp.c 
new/xorg-server-1.19.6/os/xdmcp.c
--- old/xorg-server-1.19.5/os/xdmcp.c   2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/os/xdmcp.c   2017-12-20 21:32:33.000000000 +0100
@@ -797,7 +797,7 @@
     ErrorF("XDM: %s, declaring session dead\n", reason);
     state = XDM_INIT_STATE;
     isItTimeToYield = TRUE;
-    dispatchException |= DE_RESET;
+    dispatchException |= (OneSession ? DE_TERMINATE : DE_RESET);
     TimerCancel(xdmcp_timer);
     timeOutRtx = 0;
     send_packet();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/present/present.c 
new/xorg-server-1.19.6/present/present.c
--- old/xorg-server-1.19.5/present/present.c    2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/present/present.c    2017-12-20 21:32:33.000000000 
+0100
@@ -222,13 +222,13 @@
     int         n;
 
     if (vblank->window)
-        present_send_complete_notify(vblank->window, kind, mode, 
vblank->serial, ust, crtc_msc - vblank->msc_offset);
+        present_send_complete_notify(vblank->window, kind, mode, 
vblank->serial, ust, crtc_msc - vblank->msc_offset, vblank->client);
     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);
+            present_send_complete_notify(window, kind, mode, serial, ust, 
crtc_msc - vblank->msc_offset, vblank->client);
     }
 }
 
@@ -788,6 +788,7 @@
 int
 present_pixmap(WindowPtr window,
                PixmapPtr pixmap,
+               ClientPtr client,
                CARD32 serial,
                RegionPtr valid,
                RegionPtr update,
@@ -898,6 +899,7 @@
     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;
@@ -1017,6 +1019,7 @@
 
 int
 present_notify_msc(WindowPtr window,
+                   ClientPtr client,
                    CARD32 serial,
                    uint64_t target_msc,
                    uint64_t divisor,
@@ -1024,6 +1027,7 @@
 {
     return present_pixmap(window,
                           NULL,
+                          client,
                           serial,
                           NULL, NULL,
                           0, 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/present/present_event.c 
new/xorg-server-1.19.6/present/present_event.c
--- old/xorg-server-1.19.5/present/present_event.c      2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/present/present_event.c      2017-12-20 
21:32:33.000000000 +0100
@@ -146,7 +146,7 @@
 }
 
 void
-present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 
serial, uint64_t ust, uint64_t msc)
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 
serial, uint64_t ust, uint64_t msc, ClientPtr client)
 {
     present_window_priv_ptr window_priv = present_window_priv(window);
 
@@ -167,7 +167,8 @@
         present_event_ptr event;
 
         for (event = window_priv->events; event; event = event->next) {
-            if (event->mask & PresentCompleteNotifyMask) {
+            if (event->mask & PresentCompleteNotifyMask &&
+                client == event->client) {
                 cn.eid = event->id;
                 WriteEventsToClient(event->client, 1, (xEvent *) &cn);
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/present/present_priv.h 
new/xorg-server-1.19.6/present/present_priv.h
--- old/xorg-server-1.19.5/present/present_priv.h       2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/present/present_priv.h       2017-12-20 
21:32:33.000000000 +0100
@@ -52,6 +52,7 @@
 struct present_vblank {
     struct xorg_list    window_list;
     struct xorg_list    event_queue;
+    ClientPtr           client;
     ScreenPtr           screen;
     WindowPtr           window;
     PixmapPtr           pixmap;
@@ -155,6 +156,7 @@
 int
 present_pixmap(WindowPtr window,
                PixmapPtr pixmap,
+               ClientPtr client,
                CARD32 serial,
                RegionPtr valid,
                RegionPtr update,
@@ -172,6 +174,7 @@
 
 int
 present_notify_msc(WindowPtr window,
+                   ClientPtr client,
                    CARD32 serial,
                    uint64_t target_msc,
                    uint64_t divisor,
@@ -215,7 +218,7 @@
 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);
+present_send_complete_notify(WindowPtr window, CARD8 kind, CARD8 mode, CARD32 
serial, uint64_t ust, uint64_t msc, ClientPtr client);
 
 void
 present_send_idle_notify(WindowPtr window, CARD32 serial, PixmapPtr pixmap, 
present_fence_ptr idle_fence);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/present/present_request.c 
new/xorg-server-1.19.6/present/present_request.c
--- old/xorg-server-1.19.5/present/present_request.c    2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/present/present_request.c    2017-12-20 
21:32:33.000000000 +0100
@@ -135,7 +135,7 @@
             return ret;
     }
 
-    ret = present_pixmap(window, pixmap, stuff->serial, valid, update,
+    ret = present_pixmap(window, pixmap, client, 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 @@
         }
     }
 
-    return present_notify_msc(window, stuff->serial,
+    return present_notify_msc(window, client, stuff->serial,
                               stuff->target_msc, stuff->divisor, 
stuff->remainder);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/randr/rroutput.c 
new/xorg-server-1.19.6/randr/rroutput.c
--- old/xorg-server-1.19.5/randr/rroutput.c     2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/randr/rroutput.c     2017-12-20 21:32:33.000000000 
+0100
@@ -459,7 +459,7 @@
 
     if (extraLen) {
         rep.length += bytes_to_int32(extraLen);
-        extra = malloc(extraLen);
+        extra = calloc(1, extraLen);
         if (!extra)
             return BadAlloc;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/randr/rrscreen.c 
new/xorg-server-1.19.6/randr/rrscreen.c
--- old/xorg-server-1.19.5/randr/rrscreen.c     2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/randr/rrscreen.c     2017-12-20 21:32:33.000000000 
+0100
@@ -558,7 +558,7 @@
 
         extraLen = rep.length << 2;
         if (extraLen) {
-            extra = malloc(extraLen);
+            extra = calloc(1, extraLen);
             if (!extra) {
                 free(modes);
                 return BadAlloc;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/test/input.c 
new/xorg-server-1.19.6/test/input.c
--- old/xorg-server-1.19.5/test/input.c 2017-10-12 19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/test/input.c 2017-12-20 21:32:33.000000000 +0100
@@ -228,7 +228,7 @@
 static void
 dix_event_to_core(int type)
 {
-    DeviceEvent ev;
+    DeviceEvent ev = {};
     xEvent *core;
     int time;
     int x, y;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/test/signal-logging.c 
new/xorg-server-1.19.6/test/signal-logging.c
--- old/xorg-server-1.19.5/test/signal-logging.c        2017-10-12 
19:24:59.000000000 +0200
+++ new/xorg-server-1.19.6/test/signal-logging.c        2017-12-20 
21:32:33.000000000 +0100
@@ -146,7 +146,7 @@
     for (i = 0; i < sizeof(unsigned_tests) / sizeof(unsigned_tests[0]); i++)
         assert(check_number_format_test(unsigned_tests[i]));
 
-    for (i = 0; i < sizeof(unsigned_tests) / sizeof(signed_tests[0]); i++)
+    for (i = 0; i < sizeof(signed_tests) / sizeof(signed_tests[0]); i++)
         assert(check_signed_number_format_test(signed_tests[i]));
 
     for (i = 0; i < sizeof(float_tests) / sizeof(float_tests[0]); i++)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/xfixes/cursor.c 
new/xorg-server-1.19.6/xfixes/cursor.c
--- old/xorg-server-1.19.5/xfixes/cursor.c      2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/xfixes/cursor.c      2017-12-20 21:32:33.000000000 
+0100
@@ -61,7 +61,6 @@
 static RESTYPE CursorClientType;
 static RESTYPE CursorHideCountType;
 static RESTYPE CursorWindowType;
-static CursorPtr CursorCurrent[MAXDEVICES];
 
 static DevPrivateKeyRec CursorScreenPrivateKeyRec;
 
@@ -132,10 +131,26 @@
 Bool CursorVisible = FALSE;
 Bool EnableCursor = TRUE;
 
+static CursorPtr
+CursorForDevice(DeviceIntPtr pDev)
+{
+    if (pDev && pDev->spriteInfo && pDev->spriteInfo->sprite)
+        return pDev->spriteInfo->sprite->current;
+
+    return NULL;
+}
+
+static CursorPtr
+CursorForClient(ClientPtr client)
+{
+    return CursorForDevice(PickPointer(client));
+}
+
 static Bool
 CursorDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
 {
     CursorScreenPtr cs = GetCursorScreen(pScreen);
+    CursorPtr pOldCursor = CursorForDevice(pDev);
     Bool ret;
     DisplayCursorProcPtr backupProc;
 
@@ -150,11 +165,10 @@
         ret = (*pScreen->DisplayCursor) (pDev, pScreen, pCursor);
     }
 
-    if (pCursor != CursorCurrent[pDev->id]) {
+    if (pCursor != pOldCursor) {
         CursorEventPtr e;
 
         UpdateCurrentTimeIf();
-        CursorCurrent[pDev->id] = pCursor;
         for (e = cursorEvents; e; e = e->next) {
             if ((e->eventMask & XFixesDisplayCursorNotifyMask)) {
                 xXFixesCursorNotifyEvent ev = {
@@ -351,7 +365,7 @@
     int npixels, width, height, rc, x, y;
 
     REQUEST_SIZE_MATCH(xXFixesGetCursorImageReq);
-    pCursor = CursorCurrent[PickPointer(client)->id];
+    pCursor = CursorForClient(client);
     if (!pCursor)
         return BadCursor;
     rc = XaceHook(XACE_RESOURCE_ACCESS, client, pCursor->id, RT_CURSOR,
@@ -500,7 +514,7 @@
     int rc, x, y;
 
     REQUEST_SIZE_MATCH(xXFixesGetCursorImageAndNameReq);
-    pCursor = CursorCurrent[PickPointer(client)->id];
+    pCursor = CursorForClient(client);
     if (!pCursor)
         return BadCursor;
     rc = XaceHook(XACE_RESOURCE_ACCESS, client, pCursor->id, RT_CURSOR,
@@ -874,7 +888,7 @@
         for (dev = inputInfo.devices; dev; dev = dev->next) {
             if (IsMaster(dev) && IsPointerDevice(dev))
                 CursorDisplayCursor(dev, pWin->drawable.pScreen,
-                                    CursorCurrent[dev->id]);
+                                    CursorForDevice(dev));
         }
     }
 
@@ -969,7 +983,7 @@
     deleteCursorHideCount(pChc, pChc->pScreen);
     for (dev = inputInfo.devices; dev; dev = dev->next) {
         if (IsMaster(dev) && IsPointerDevice(dev))
-            CursorDisplayCursor(dev, pScreen, CursorCurrent[dev->id]);
+            CursorDisplayCursor(dev, pScreen, CursorForDevice(dev));
     }
 
     return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/xkb/ddxLoad.c 
new/xorg-server-1.19.6/xkb/ddxLoad.c
--- old/xorg-server-1.19.5/xkb/ddxLoad.c        2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/xkb/ddxLoad.c        2017-12-20 21:32:33.000000000 
+0100
@@ -191,8 +191,10 @@
 #endif
             return xnfstrdup(keymap);
         }
-        else
-            LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
+        else {
+            LogMessage(X_ERROR, "Error compiling keymap (%s) executing '%s'\n",
+                       keymap, buf);
+        }
 #ifdef WIN32
         /* remove the temporary file */
         unlink(tmpname);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.19.5/xkb/xkbUtils.c 
new/xorg-server-1.19.6/xkb/xkbUtils.c
--- old/xorg-server-1.19.5/xkb/xkbUtils.c       2017-10-12 19:24:59.000000000 
+0200
+++ new/xorg-server-1.19.6/xkb/xkbUtils.c       2017-12-20 21:32:33.000000000 
+0100
@@ -222,7 +222,7 @@
     XkbDescPtr xkb;
     unsigned key, nG, explicit;
     int types[XkbNumKbdGroups];
-    KeySym tsyms[XkbMaxSymsPerKey], *syms;
+    KeySym tsyms[XkbMaxSymsPerKey] = {NoSymbol}, *syms;
     XkbMapChangesPtr mc;
 
     xkb = pXDev->key->xkbInfo->desc;


Reply via email to