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;