summaryrefslogtreecommitdiff
path: root/xserver
diff options
context:
space:
mode:
authorMatthieu Herrb <matthieu@cvs.openbsd.org>2015-11-07 16:48:54 +0000
committerMatthieu Herrb <matthieu@cvs.openbsd.org>2015-11-07 16:48:54 +0000
commit6c07b8ab53c2bbf0feb0afbbe98b33171c7b7872 (patch)
tree35eb85f0db40ffe6e6614d780b3de61b93edb3bc /xserver
parentf4e01ac5608a8dfd9a4ee2f7aa43d28cc1710d81 (diff)
Update to xserver 1.17.4.
tested by naddy@
Diffstat (limited to 'xserver')
-rw-r--r--xserver/ChangeLog1736
-rw-r--r--xserver/Makefile.in2
-rw-r--r--xserver/Xext/xace.c15
-rw-r--r--xserver/Xext/xace.h5
-rw-r--r--xserver/Xext/xselinux_hooks.c8
-rw-r--r--xserver/Xi/exevents.c12
-rw-r--r--xserver/configure24
-rw-r--r--xserver/configure.ac6
-rw-r--r--xserver/dix/Xserver.d5
-rw-r--r--xserver/dix/dispatch.c5
-rw-r--r--xserver/dix/dixfonts.c21
-rw-r--r--xserver/dix/events.c8
-rw-r--r--xserver/dix/getevents.c7
-rw-r--r--xserver/dix/main.c1
-rw-r--r--xserver/dix/privates.c9
-rw-r--r--xserver/dix/protocol.txt299
-rw-r--r--xserver/dix/resource.c5
-rw-r--r--xserver/exa/exa_render.c2
-rw-r--r--xserver/fb/fb.h5
-rw-r--r--xserver/fb/fbpict.c13
-rw-r--r--xserver/glamor/glamor.c27
-rw-r--r--xserver/glamor/glamor_font.c37
-rw-r--r--xserver/glamor/glamor_image.c4
-rw-r--r--xserver/glamor/glamor_prepare.c2
-rw-r--r--xserver/glx/createcontext.c15
-rw-r--r--xserver/glx/extension_string.c1
-rw-r--r--xserver/glx/extension_string.h3
-rw-r--r--xserver/glx/glxcmds.c22
-rw-r--r--xserver/glx/glxcontext.h5
-rw-r--r--xserver/glx/glxdri2.c7
-rw-r--r--xserver/glx/glxdriswrast.c44
-rw-r--r--xserver/hw/dmx/config/dmxparse.h3
-rw-r--r--xserver/hw/dmx/config/dmxprint.c20
-rw-r--r--xserver/hw/dmx/dmx.c1
-rw-r--r--xserver/hw/dmx/dmxcb.c3
-rw-r--r--xserver/hw/dmx/dmxfont.h2
-rw-r--r--xserver/hw/dmx/dmxgc.c4
-rw-r--r--xserver/hw/dmx/dmxgc.h4
-rw-r--r--xserver/hw/dmx/dmxinit.c42
-rw-r--r--xserver/hw/dmx/dmxpict.c1
-rw-r--r--xserver/hw/dmx/dmxprop.c6
-rw-r--r--xserver/hw/dmx/dmxscrinit.c1
-rw-r--r--xserver/hw/dmx/dmxwindow.c4
-rw-r--r--xserver/hw/dmx/glxProxy/compsize.h7
-rw-r--r--xserver/hw/dmx/glxProxy/g_disptab.h21
-rw-r--r--xserver/hw/dmx/glxProxy/glxcmds.c7
-rw-r--r--xserver/hw/dmx/glxProxy/glxcmds.h6
-rw-r--r--xserver/hw/dmx/glxProxy/glxcmdsswap.c4
-rw-r--r--xserver/hw/dmx/glxProxy/glxext.h1
-rw-r--r--xserver/hw/dmx/glxProxy/glxscreens.c6
-rw-r--r--xserver/hw/dmx/glxProxy/glxscreens.h2
-rw-r--r--xserver/hw/dmx/glxProxy/glxserver.h8
-rw-r--r--xserver/hw/dmx/glxProxy/glxsingle.c6
-rw-r--r--xserver/hw/dmx/glxProxy/glxsingle.h4
-rw-r--r--xserver/hw/dmx/glxProxy/glxswap.c4
-rw-r--r--xserver/hw/dmx/glxProxy/glxvendor.c6
-rw-r--r--xserver/hw/dmx/input/dmxinputinit.c10
-rw-r--r--xserver/hw/kdrive/ephyr/hostx.c10
-rw-r--r--xserver/hw/xfree86/dri2/dri2ext.c14
-rw-r--r--xserver/hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h28
-rw-r--r--xserver/hw/xfree86/modes/xf86EdidModes.c2
-rw-r--r--xserver/hw/xfree86/modes/xf86RandR12.c13
-rw-r--r--xserver/hw/xfree86/os-support/linux/lnx_init.c22
-rw-r--r--xserver/hw/xfree86/os-support/shared/sigio.c2
-rw-r--r--xserver/hw/xfree86/os-support/xf86_OSlib.h4
-rw-r--r--xserver/hw/xfree86/x86emu/debug.c6
-rw-r--r--xserver/hw/xquartz/GL/indirect.c37
-rw-r--r--xserver/hw/xquartz/X11Application.m27
-rw-r--r--xserver/hw/xquartz/X11Controller.m13
-rw-r--r--xserver/hw/xquartz/bundle/Info.plist.cpp13
-rw-r--r--xserver/hw/xquartz/bundle/Makefile.am30
-rw-r--r--xserver/hw/xquartz/bundle/Makefile.in30
-rw-r--r--xserver/hw/xquartz/bundle/mk_bundke.sh2
-rw-r--r--xserver/hw/xquartz/darwinEvents.c11
-rw-r--r--xserver/hw/xquartz/quartzKeyboard.c2
-rw-r--r--xserver/hw/xwayland/xwayland-input.c2
-rw-r--r--xserver/hw/xwayland/xwayland-output.c2
-rw-r--r--xserver/include/Makefile.am1
-rw-r--r--xserver/include/Makefile.in1
-rw-r--r--xserver/include/probes.h41
-rw-r--r--xserver/man/Xserver.man9
-rw-r--r--xserver/mi/miarc.c2
-rw-r--r--xserver/mi/mieq.c2
-rw-r--r--xserver/mi/miexpose.c13
-rw-r--r--xserver/mi/miwideline.c2
-rw-r--r--xserver/miext/rootless/rootlessCommon.h22
-rw-r--r--xserver/miext/rootless/rootlessGC.c2
-rw-r--r--xserver/miext/rootless/rootlessValTree.c2
-rw-r--r--xserver/os/WaitFor.c1
-rw-r--r--xserver/os/connection.c12
-rw-r--r--xserver/os/utils.c50
-rw-r--r--xserver/os/xdmauth.c4
-rw-r--r--xserver/os/xdmcp.c33
-rw-r--r--xserver/present/present.c16
-rw-r--r--xserver/randr/rrcrtc.c67
-rw-r--r--xserver/randr/rrdispatch.c4
-rw-r--r--xserver/randr/rrtransform.c2
-rw-r--r--xserver/render/picture.c13
-rw-r--r--xserver/render/render.c15
99 files changed, 2430 insertions, 692 deletions
diff --git a/xserver/ChangeLog b/xserver/ChangeLog
index 7dcfb7cca..3db13a96e 100644
--- a/xserver/ChangeLog
+++ b/xserver/ChangeLog
@@ -1,3 +1,1739 @@
+commit 2c7fa2a423ee3d2b9b4c1c63d90ecdfc9eb3b359
+Author: Adam Jackson <ajax@redhat.com>
+Date: Wed Oct 28 12:30:44 2015 -0400
+
+ xserver 1.17.4
+
+commit bbf1893cc039155432a960b61d55978f1b706295
+Author: Martin Peres <martin.peres@linux.intel.com>
+Date: Mon Jul 20 10:37:30 2015 +0300
+
+ os: make sure the clientsWritable fd_set is initialized before use
+
+ In WaitForSomething(), the fd_set clientsWritable may be used
+ unitialized when the boolean AnyClientsWriteBlocked is set in the
+ WakeupHandler(). This leads to a crash in FlushAllOutput() after
+ x11proto's commit 2c94cdb453bc641246cc8b9a876da9799bee1ce7.
+
+ The problem did not manifest before because both the XFD_SIZE and the
+ maximum number of clients were set to 256. As the connectionTranslation
+ table was initalized for the 256 clients to 0, the test on the index not
+ being 0 was aborting before dereferencing the client #0.
+
+ As of commit 2c94cdb453bc641246cc8b9a876da9799bee1ce7 in x11proto, the
+ XFD_SIZE got bumped to 512. This lead the OutputPending fd_set to have
+ any fd above 256 to be uninitialized which in turns lead to reading an
+ index after the end of the ConnectionTranslation table. This index would
+ then be used to find the client corresponding to the fd marked as
+ pending writes and would also result to an out-of-bound access which
+ would usually be the fatal one.
+
+ Fix this by zeroing the clientsWritable fd_set at the beginning of
+ WaitForSomething(). In this case, the bottom part of the loop, which
+ would indirectly call FlushAllOutput, will not do any work but the next
+ call to select will result in the execution of the right codepath. This
+ is exactly what we want because we need to know the writable clients
+ before handling them. In the end, it also makes sure that the fds above
+ MaxClient are initialized, preventing the crash in FlushAllOutput().
+
+ Thanks to everyone involved in tracking this one down!
+
+ Reported-by: Karol Herbst <freedesktop@karolherbst.de>
+ Reported-by: Tobias Klausmann <tobias.klausmann@mni.thm.de>
+ Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
+ Tested-by: Tobias Klausmann <tobias.klausmann@mni.thm.de>
+ Tested-by: Martin Peres <martin.peres@linux.intel.com>
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91316
+ Cc: Ilia Mirkin <imirkin@alum.mit.edu>
+ Cc: Olivier Fourdan <ofourdan@redhat.com
+ Cc: Adam Jackson <ajax@redhat.com>
+ Cc: Alan Coopersmith <alan.coopersmith@oracle.com
+ Cc: Chris Wilson <chris@chris-wilson.co.uk>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 6e3892045e57808b18d053288330306119ca2252
+Author: Julien Cristau <jcristau@debian.org>
+Date: Tue Oct 27 13:23:13 2015 +0100
+
+ Xext: fix build with --disable-xace
+
+ Regression from 990cf5b2828f73dc7a07f1e38f608af39acfd81d
+
+ Signed-off-by: Julien Cristau <jcristau@debian.org>
+ Cc: Andrew Eikum <aeikum@codeweavers.com>
+ Cc: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
+ (cherry picked from commit 524844c8c18e226aad30feb371b19ef491d83449)
+
+commit bf003230f93b2a537b01ab976b7ced83d053e0eb
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Tue Oct 27 11:51:49 2015 +0900
+
+ DRI2: Sync radeonsi_pci_ids.h from Mesa
+
+ Fixes DRI2 client driver name mapping for newer AMD GPUs with the
+ modesetting driver, allowing the DRI2 extension to initialize.
+
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+ (cherry picked from commit ac2f27f1a9fa8cd88c5dbe7ec0f96238eecf2c3e)
+
+commit 780022a8a5d6f8abd02f8b568f522ce5aed99839
+Author: Adam Jackson <ajax@redhat.com>
+Date: Mon Oct 26 13:03:59 2015 -0400
+
+ xserver 1.17.3
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+
+commit d9344ef3ea4f3009d61240e0fefcfca40eaa7dca
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon Feb 16 09:49:18 2015 +0000
+
+ present: Fix missed notify MSC computation
+
+ Only treat divisor==0 as async to immediately report the actual vblank.
+ If the user species a non-zero divisor, we should compute the missed
+ vblank properly or else we report too early.
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+ Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
+ (cherry picked from commit 413cb2ff1d754b5f19d77ff19cddf40793989c03)
+
+commit 88f22fc5dac502c7d57d0b53defda75b44dab985
+Author: Hans de Goede <hdegoede@redhat.com>
+Date: Wed Oct 21 11:36:06 2015 +0200
+
+ linux: Do not call FatalError from xf86CloseConsole
+
+ FatalError ends up calling xf86CloseConsole itself, so calling FatalError
+ from within xf86CloseConsole is not a good idea.
+
+ Make switch_to log errors using xf86Msg(X_WARNING, ...) and return success
+ (or failure).
+
+ This makes switch_to match the other error checking done in xf86CloseConsole
+ which all logs warnings and continues.
+
+ Add checking of the return value in xf86OpenConsole and call
+ FatalError there when switch_to fails, to preserve the error-handling
+ behavior of xf86OpenConsole.
+
+ BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1269210
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+ (cherry picked from commit 2092f12a243b9f7682f542b593b77c96d455ec89)
+
+commit 0ca79007c940b09bd81823fc2e2276f08057247c
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Sep 21 07:16:12 2015 +0100
+
+ fonts: Continue when font calls return Suspended more than once
+
+ Patch 3ab6cd31cbdf8095b2948034fce5fb645422d8da fixed Xinerama
+ interactions with font servers by not putting clients to sleep
+ multiple times. However, it introduced additional changes dealing with
+ libXfont routine returning Suspended more than once for the same
+ request. This additional change was to abandon processing of the
+ current request and free the closure data by jumping to
+ 'xinerama_sleep' in each of the functions.
+
+ Font library functions shouldn't return Suspended more than once,
+ except for ListFontsWithInfo, which produces multiple replies, and
+ thus ends up returning Suspended many times during processing.
+
+ With the jump to xinerama_sleep occurring after the first reply was
+ processed, the closure for the request was freed and future calls into
+ the ListFontsWithInfo callback resulted in dereferencing freed
+ memory.
+
+ This patch removes the added branches, reverting the code to its
+ previous behaviour, which permitted multiple Suspended returns and
+ simply waited for the client to be signaled again so that the callback
+ could continue processing the request.
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit f9a04d19aef77bf787b8d322305a6971d24a6ba1)
+
+commit 82000d6d0376bdd5c6bb4e0daefcb85879f7c5c7
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date: Sun Oct 18 23:12:50 2015 -0700
+
+ glx: Fix header length error checking in __glXDisp_RenderLarge
+
+ glxcmds.c:2206:46: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare,Semantic Issue]
+ if ((cmdlen = safe_pad(hdr->length)) < 0)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit e09875701b980b8c4578fb310a922c9934c34eef)
+
+commit 2ae94d6e8978faff330e9433eddf1697ba4693f6
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date: Wed Oct 14 15:13:42 2015 -0700
+
+ xdmcp: Declare XdmcpFatal _X_NORETURN
+
+ xdmcp.c:1404:1: warning: function 'XdmcpFatal' could be declared with attribute 'noreturn'
+ [-Wmissing-noreturn,Semantic Issue]
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 9a2a05a9a7ba02921fa29844c4cad41243c41326)
+
+commit a88460ca82c7aed00177a5bb733b98a7f9b45968
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date: Wed Oct 14 15:13:36 2015 -0700
+
+ xdmauth: Correct miscall of abs() to instrad call labs()
+
+ xdmauth.c:230:13: warning: absolute value function 'abs' given an argument of type 'long' but has parameter of
+ type
+ 'int'
+ which may cause truncation of value [-Wabsolute-value,Semantic Issue]
+ if (abs(now - client->time) > TwentyFiveMinutes) {
+ ^
+ xdmauth.c:230:13: note: use function 'labs' instead [Semantic Issue]
+ if (abs(now - client->time) > TwentyFiveMinutes) {
+ ^~~
+ labs
+ xdmauth.c:302:9: warning: absolute value function 'abs' given an argument of type 'long' but has parameter of type
+ 'int' which
+ may cause truncation of value [-Wabsolute-value,Semantic Issue]
+ if (abs(client->time - now) > TwentyMinutes) {
+ ^
+ xdmauth.c:302:9: note: use function 'labs' instead [Semantic Issue]
+ if (abs(client->time - now) > TwentyMinutes) {
+ ^~~
+ labs
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 85eb90ea45e89033b97bf71a13c5c70fec8f6871)
+
+commit 0f051cb4c3af6c3b906c2f210e3b6858dd7a5f53
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date: Wed Oct 14 15:13:35 2015 -0700
+
+ randr: Correct a miscall of abs() to instead call fabs()
+
+ rrtransform.c:124:22: warning: using integer absolute value function 'abs' when
+ argument is of floating point type [-Wabsolute-value,Semantic Issue]
+ if ((v = abs(f_transform->m[j][i])) > max)
+ ^
+ rrtransform.c:124:22: note: use function 'fabs' instead [Semantic Issue]
+ if ((v = abs(f_transform->m[j][i])) > max)
+ ^~~
+ fabs
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 9f0fcd14b52f8481cbb3b3b9c6e06f64ff003cc8)
+
+commit 8a30fd207cd4f560696ffd4463284ef123970e96
+Author: Jeremy Huddleston <jeremyhu@apple.com>
+Date: Wed Oct 14 15:13:34 2015 -0700
+
+ mi: Correct a miscall of abs() to instead call fabs()
+
+ miarc.c:1714:9: warning: using integer absolute value function
+ 'abs' when
+ argument is of floating point type [-Wabsolute-value,Semantic Issue]
+ if (abs(parc->angle2) >= 360.0)
+ ^
+ miarc.c:1714:9: note: use function 'fabs' instead [Semantic Issue]
+ if (abs(parc->angle2) >= 360.0)
+ ^~~
+ fabs
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 610dd8a58a75bb6a5b7d7abbae476d1cc4be519e)
+
+commit 0c5ef339ae36b530745b883347accf11b21b1fd6
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Dec 14 15:55:22 2011 +0000
+
+ render: Propagate allocation failure from createSourcePicture()
+
+ All the callers were already checking for failure, except that
+ createSourcePicture() itself was failing to check whether it
+ successfully allocated the Picture.
+
+ [ajax: Rebase, fix line wrap of preceding line]
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+ Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
+ (cherry picked from commit 211d4c2d353b5e379716484055a3f58235ea65f4)
+
+commit 025ae119a7561a911533ca69c8232147273af300
+Author: Arcady Goldmints-Orlov <arcadyg@nvidia.com>
+Date: Thu Oct 4 14:22:13 2012 -0700
+
+ Fix alphamap interactions with wfb
+
+ Set a destructor function on pixman images and call fbFinishAccess()
+ from there, rather than directly from free_pixman_pict(). This ensures
+ that fbFinishAccess() gets called even if pixman still has a reference
+ to the image after free_pixman_pict(), as is the case for alphamaps.
+
+ [ajax: Squash an unused variable warning in the non-wfb build]
+
+ Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
+ Signed-off-by: Arcady Goldmints-Orlov <arcadyg@nvidia.com>
+ Reviewed-by: Søren Sandmann <ssp@redhat.com>
+ (cherry picked from commit fbac451724f7e1b8ce6b6e0505cc33ccd41c5158)
+
+commit 62e2aa02efe45198d6b013530d269815ebd4c9ba
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon Sep 21 22:36:41 2015 -0700
+
+ dri2: better checks for integer overflow in GetBuffers*
+
+ Check for integer overflow before using stuff->count in a multiplication,
+ to avoid compiler optimizing out due to undefined behaviour, but only
+ after we've checked to make sure stuff->count is in the range of the
+ request we're parsing.
+
+ Reported-by: jes@posteo.de
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 6ca496b7c3ccfd677c8c1bee88cc509a5e3c9e04)
+
+commit 616239c15d03f5b527288965f7eee0edebdcf20f
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Sep 21 07:16:13 2015 +0100
+
+ Xext/xselinux: Warning fixes
+
+ There's a 'const char *' adventure here that I'm mostly ignoring; some
+ client information gets const poisoned. Worked around by adding a
+ couple of casts. Ick.
+
+ Added an _X_ATTRIBUTE_PRINTF to SELinuxLog.
+
+ Ignore a couple of unused return values.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 9af111fe045d82192bacc722940e1d92a8ba4cbd)
+
+commit 87151fefb06dc96fac79e93a3151300bd8037f3d
+Author: Eric Anholt <eric@anholt.net>
+Date: Mon May 5 11:10:06 2014 -0700
+
+ x86emu: Fix some set-but-not-used warnings.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit e6f8a0340b72113474ccfbf1ea447558b705995a)
+
+commit 20bdec91712957c069c410ed34045f4090821ac7
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon Jan 27 09:44:48 2014 +0000
+
+ render: Fix leak of filter params
+
+ ==11097== 2,048 (+1,640) bytes in 32 (+26) blocks are definitely lost in loss record 1,570 of 1,719
+ ==11097== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+ ==11097== by 0x225EF3: SetPicturePictFilter (filter.c:339)
+ ==11097== by 0x22DF4F: ProcRenderSetPictureFilter (render.c:1773)
+ ==11097== by 0x15D25D: Dispatch (dispatch.c:432)
+ ==11097== by 0x14C7B9: main (main.c:298)
+
+ [ajax: Fixed whitespace]
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+ (cherry picked from commit c7f84c880bbbb508016ad80390a11961b1c4214d)
+
+commit 5c0aea5fb3bda98a442b982b4622cc81a700ebd7
+Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Date: Mon Oct 14 17:07:29 2013 +0300
+
+ xfree86: Fix the 1792x1344-75 EST III mode
+
+ The correct refresh rate for this mode is 75, not 85.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+ (cherry picked from commit 98e170971c6b06d64a5bc7418bf6ae6ae985a3ae)
+
+commit 293d0efe3c742f5010cddf5ad0420d0d1c43959b
+Author: Michal Srb <msrb@suse.com>
+Date: Mon Oct 7 17:57:14 2013 +0300
+
+ randr: Allow RRSelectInput for ProviderChange and ResourceChange events
+
+ [ajax: To be clear, we already have code to emit these events, and it
+ looks like it works, but to get them you'd have had to also ask for one
+ of the other notify types. This makes it possible to listen for e.g.
+ ProviderChange alone.]
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Michal Srb <msrb@suse.com>
+ (cherry picked from commit 91c7acfc3447a0073dd1db260cf05115d94ce7e8)
+
+commit 833e3e84a077766b16b42d2b24931c14cd00bfb9
+Author: Dave Airlie <airlied@redhat.com>
+Date: Thu Oct 20 11:44:28 2011 +0100
+
+ exa: initialise mask_off_x and mask_off_y
+
+ These get used at the end of the function in a calculation,
+ even though the result isn't used its not pretty.
+
+ Pointed out by coverity.
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 4c7cefe24001279a558dd875949d40ede49ef702)
+
+commit 26a5364d507dff012283dc5d6f86b80c5936a807
+Author: Andrea Canciani <ranma42@gmail.com>
+Date: Wed Jul 27 10:52:31 2011 +0200
+
+ render: Allow single-stop gradients
+
+ The Render specification allows single-stop gradients and pixman 0.22
+ (X server requires >= 0.27.2 now) can rasterize them correctly.
+
+ [ajax: update commit message]
+
+ Signed-off-by: Andrea Canciani <ranma42@gmail.com>
+ Reviewed-by: Soren Sandmann <ssp@redhat.com>
+ (cherry picked from commit 7ed0c3912e1cbab960df308b9d4ea618be757fd2)
+
+commit a22b828dad72091210234a9e671c93015c970ac6
+Author: Cyril Brulebois <kibi@debian.org>
+Date: Sun Jun 5 23:32:26 2011 +0200
+
+ man: Fix case for MIT-unspecified.
+
+ include/site.h says that COMPILEDDISPLAYCLASS is MIT-unspecified, rather
+ than MIT-Unspecified. Fix the manpage accordingly.
+
+ Signed-off-by: Cyril Brulebois <kibi@debian.org>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 4803f7139131cee7bbf50b32d667d6e60302df09)
+
+commit 92f6b363972c13f564e1f8f555783fe9cb557db5
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 22 19:25:43 2015 -0700
+
+ protocol.txt: Add MIT-SHM 1.2 requests
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit a31bbc450a08622aadafc264b3efe57e465eaecb)
+
+commit 0b2a9db19bad7567ea30341f3432ae384a21c106
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 22 19:25:42 2015 -0700
+
+ protocol.txt: Add DRI3 1.0 requests
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 424ba5de56e2ddf173bb0d26daa821f12897f18f)
+
+commit d135b4cf6bc427f6f83f57ff70c673b64a6ae6af
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 22 19:25:41 2015 -0700
+
+ protocol.txt: Add Present 1.0 requests
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 7e6b7c799455fdeac082cf2a064fe1ba432e92ca)
+
+commit 32f3432ea65f2eec01a7eed0e9bf93e1bc082241
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Sep 22 19:25:39 2015 -0700
+
+ protocol.txt: Remove extensions that died before Xorg was born
+
+ Adobe-DPS-Extension, DEC-XTRAP, X3D-PEX, XIE
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 1ea8fb96bc6a95d98dd67fc9d4c4e4b858383d34)
+
+commit 5c5bc6a9c2050562e9330c0b7b98a5261ee0b113
+Author: Tiago Vignatti <tiago.vignatti@nokia.com>
+Date: Tue Sep 7 15:50:26 2010 +0300
+
+ dix: remove dead extensions to protocol.txt
+
+ lbx and mbe.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
+ (cherry picked from commit 593270038d8983b99aa0aaa24509da3cb944be5c)
+
+commit a55bfcc0df09920a5e3ec9f923d5168992a63f29
+Author: Robert Hooker <sarvatt@ubuntu.com>
+Date: Fri Dec 3 23:42:27 2010 -0500
+
+ Add new GLX events errors and requests to protocol.txt
+
+ Based off of glproto 1.4.11.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Robert Hooker <robert.hooker@canonical.com>
+ (cherry picked from commit 3cd56dd2cfbfcce6ba68c22450d51139208993ab)
+
+commit 9cb53672b4b4c847544c37888db6e2ae354697a2
+Author: Robert Hooker <sarvatt@ubuntu.com>
+Date: Fri Dec 3 23:39:51 2010 -0500
+
+ Add DRI2 2.2/2.3 events and requests to protocol.txt
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Robert Hooker <robert.hooker@canonical.com>
+ (cherry picked from commit 272ba9f021c6d08ebd6a2d96da3737f5630bcbd5)
+
+commit 8810c46a98a107cf53b30696cfad6e388b73024d
+Author: Adam Jackson <ajax@redhat.com>
+Date: Mon Sep 21 15:23:23 2015 -0400
+
+ rootless: Fix bogus handling of broken root clip
+
+ gcc quite correctly complains about this:
+
+ In file included from ../../include/scrnintstr.h:51:0,
+ from rootlessValTree.c:98:
+ In function 'RegionUninit.isra.1',
+ inlined from 'RegionEmpty' at ../../include/regionstr.h:194:5,
+ inlined from 'RootlessMiValidateTree' at rootlessValTree.c:490:9:
+ ../../include/regionstr.h:166:9: warning: attempt to free a non-heap object 'RegionBrokenData' [-Wfree-nonheap-object]
+ free((_pReg)->data);
+
+ So that'd crash if you ever got there. RegionNull will do almost the
+ same thing only without the free(), so let's do that instead; it might
+ still not be an entirely sane way to recover, but it at least won't
+ crash.
+
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit fa0bb01899d586e02cf51892c17edd22e462a46c)
+
+commit 9a4ea1f5ea7f813d28cf322aca6f2ea8c427bd1a
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Sep 21 07:16:17 2015 +0100
+
+ os/xdmcp: Just send XDMCP keepalive packets once every three minutes
+
+ There was a complicated scheme to increase the time between keepalives
+ from 3 minutes up to as much as 24 hours in an attempt to reduce
+ network traffic from idle X terminals. X terminals receiving X
+ traffic, or receiving user input would use the 3 minute value; X
+ terminals without any network traffic would use a longer value.
+
+ However, this was actually broken -- any activity in the X server,
+ either client requests or user input, would end up resetting the
+ keepalive timeout, so a user mashing on the keyboard would never
+ discover that the XDMCP master had disappeared and have the session
+ terminated, which was precisely the design goal of the XDMCP keepalive
+ mechanism.
+
+ Instead of attempting to fix this, accept the cost of a pair of XDMCP
+ packets once every three minutes and just perform keepalives
+ regularly.
+
+ This will also make reworking the block and wakeup handler APIs to
+ eliminate select masks easier.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit db1089eafc1c5371fa0030202de588d2e2b4f8e5)
+
+commit abe44851018d0e5bace2971682e724aa7444e96f
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Sep 21 07:16:16 2015 +0100
+
+ os/xdmcp: Remove dead 'restart' code
+
+ The X server used to wait for the user to hit a key or move the mouse
+ before restarting the session after a keepalive failure. This,
+ presumably, was to avoid having the X server continuously spew XDMCP
+ protocol on the network while the XDM server was dead.
+
+ Switching into this state was removed from the server some time before
+ XFree86 4.3.99.16, so the remaining bits of code have been dead for
+ over a decade, and no-one ever noticed.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit a3a40291330bad10401fe2bcdbc097ce742b026a)
+
+commit c72d4f00277c977faecd697ef3407518f11f909d
+Author: Egbert Eich <eich@freedesktop.org>
+Date: Tue Mar 31 09:06:46 2015 +0200
+
+ randr: Remove senseless checks for xf86RandR12Key
+
+ When xf86RandR12Key is not set we will not get to the places where
+ these tests are done as the functions in question are not called.
+ In most cases we would have crashed before these checks anyway.
+
+ Signed-off-by: Egbert Eich <eich@freedesktop.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 3cd7d33380953f2a315dd79ab74d7340c83fd80a)
+
+commit 7a53179425ab5112adcace1489cad6e8072af6b1
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon Oct 6 10:02:22 2014 +0100
+
+ randr/prime: Don't stop on the first pipe when disabling ReplaceScanoutPixmap
+
+ As we define sizeFits based on whether a CRTC is active, and skip trying
+ to redirect the scanout on a disable pipe, we then attempt to undo it
+ later and fail because crtc->scanout_pixmap != DRI2_Pixmap and
+ !sizeFits. Paper over this failure by skipping unredirected CRTC when
+ disabling.
+
+ v2: Unwind upon failure
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84653
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+ Cc: Dave Airlie <airlied@redhat.com>
+ Reported-by: Christoph Haag <haagch@frickel.club>
+ Tested-by: Christoph Haag <haagch@frickel.club>
+ Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+ (cherry picked from commit 245040f0d0b937efe14d947468a641a95398776a)
+
+commit a85808ce3fc26511996d01e7e6ec1192b8c3d216
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Sep 18 08:44:07 2015 -0700
+
+ Remove DECnet from Xserver.man
+
+ DECnet support died in modularization (X11R7.0)
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 9d65a0de95a20632f2a6a04ba596dcdd76d9f5e2)
+
+commit 49d04a43360267fb7cbbeec0ea4985ba224fb59c
+Author: Aaron Plattner <aplattner@nvidia.com>
+Date: Thu Sep 17 16:04:33 2015 -0700
+
+ privates: Clear screen-specific keys during CloseScreen
+
+ The modesetting driver corrupts memory when used after a server regeneration
+ because not enough memory is allocated for its pixmap privates. This happens
+ because its call to dixRegisterScreenSpecificPrivateKey() does nothing because
+ key->initialized is still TRUE from the first server generation. However, the
+ key is not in the screen's linked list of screen-specific privates because
+ that's freed and reallocated during the server generation loop in dix_main().
+
+ Fix this by clearing key->initialized before CloseScreen and add a call to
+ dixFreeScreenSpecificPrivates() for GPU screens.
+
+ v2: Just set key->initialized to FALSE and move dixFreeScreenSpecificPrivates()
+ calls to after CloseScreen.
+
+ v3: Move dixFreeScreenSpecificPrivates() calls back to just before CloseScreen.
+
+ Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 82eb490b0a341729f25d0c42a937fe29d99da521)
+
+commit daf15b551631e8a98960e629039bef1880de8f82
+Author: Adam Jackson <ajax@redhat.com>
+Date: Wed Jun 10 13:20:59 2015 -0400
+
+ render: Simplify SProcRenderScale
+
+ Since ProcRenderScale throws BadImplementation anyway it's pointless to
+ waste time carefully swapping the request.
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ (cherry picked from commit 67dd34fa734085ed67ba7790820fe4743d48b60f)
+
+commit 10a944889228acdeaf471766407fc84c8947e931
+Author: Ian Scott <ian.scott@arteris.com>
+Date: Thu May 21 16:13:12 2015 -0700
+
+ Xephyr: Paint with subimage for non-Glamor & non-XSHM case
+
+ This improves the case for when we paint an area without SHM.
+ xcb_image_subimage() is used to create a subimage for the damaged area, which
+ is converted to native format if necessary.
+
+ Signed-off-by: Ian Scott <ian.scott@arteris.com>
+ Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
+ (cherry picked from commit a579e6ba7763749d51d16e3a54941e06939df07a)
+
+commit 0134dc1b56e8c7c19f655e583ff3f3ba0d6cae4e
+Author: Daniel Drake <drake@endlessm.com>
+Date: Wed May 20 13:16:12 2015 -0600
+
+ Keep SIGALRM restart flag after Popen
+
+ Commit 94ab7455 added SA_RESTART to the SIGALRM handler. However, the
+ Popen code tears down and recreates the SIGALRM handler via OsSignal(),
+ and this flag is dropped at this time.
+
+ Clean the code to use just a single codepath for creating this signal
+ handler, always applying SA_RESTART.
+
+ [ajax: Fixed commit id]
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Daniel Drake <drake@endlessm.com>
+ (cherry picked from commit 1f915e8b524dd02011158aa038935970684c7630)
+
+commit f92c0b9f94deaa03f792c3c93efd802fec268e8f
+Author: Daniel Drake <drake@endlessm.com>
+Date: Tue May 12 16:39:22 2015 -0600
+
+ Allow system call restarts upon signal interruption
+
+ The X server frequently deals with SIGIO and SIGALRM interruptions.
+ If process execution is inside certain blocking system calls
+ when these signals arrive, e.g. with the kernel blocked on
+ a contended semaphore, the system calls will be interrupted.
+
+ Some system calls are automatically restartable (the kernel re-executes
+ them with the same parameters once the signal handler returns) but
+ only if the signal handler allows it.
+
+ Set SA_RESTART on the signal handlers to enable this convenient
+ behaviour.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Daniel Drake <drake@endlessm.com>
+ (cherry picked from commit 94ab7455abc213fc96760e29ab2e943ec682fb22)
+
+commit d2e4a9d4ac2f479de23e15af5e528cfa2bffb30f
+Author: Felix Janda <felix.janda@posteo.de>
+Date: Mon Aug 17 20:25:53 2015 +0200
+
+ On linux use <termios.h> instead of <termio.h>
+
+ <termio.h> is obsolete. Using <termios.h> instead fixes building with
+ musl libc.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Felix Janda <felix.janda@posteo.de>
+ (cherry picked from commit e8e3368298c98a1292bb1c727e2f3d56539e2eac)
+
+commit e863ab57eb94f32485a501e547eedc96f9249ad1
+Author: Adam Jackson <ajax@redhat.com>
+Date: Wed Jul 29 11:30:15 2015 -0400
+
+ glxproxy: Fix an obvious thinko in QueryExtensionsString
+
+ gcc 5.1 throws a rather amusing warning here:
+
+ glxcmdsswap.c: In function ‘__glXSwapQueryExtensionsString’:
+ glxcmdsswap.c:439:1: warning: function might be candidate for attribute
+ ‘noreturn’ [-Wsuggest-attribute=noreturn]
+ __glXSwapQueryExtensionsString(__GLXclientState * cl, GLbyte * pc)
+
+ This is entirely accurate, albeit curiously phrased: swapping some bits
+ hanging off the end of a null pointer will make Xdmx crash, so from the
+ perspective of code generation the function will indeed not return.
+
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit dfa8b37cfb2589f2474f6fcc755dde77bfdd6fed)
+
+commit 1688b7517e91dba84244c01d1a01fa8145b4367a
+Author: Ingo Schwarze <schwarze@usta.de>
+Date: Sun Aug 30 15:26:40 2015 +0200
+
+ remove bogus \/ escapes
+
+ some X manuals use then escape sequence \/ when they want to render
+ a slash. That's bad because \/ is not a slash but an italic
+ correction, never producing any output, having no effect at all in
+ terminal output, and only changing spacing in a minor way in typeset
+ output.
+
+ Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+ Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 634e357be2ec400f63bd5c42f706b709b6ddabc3)
+
+commit e9385b42a3f6cb1eadd5080019b9faf9538e5608
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Aug 17 18:37:10 2015 -0700
+
+ mi: Always initialize edge1 and edge2 in miLineArc
+
+ This eliminates a warning generated when miLineArcD is inlined and the
+ compiler can't figure out that edge1 and edge2 are always initialized
+ before being used.
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit bca4f4b56c7619d17f9df46f7aac392ea01a9429)
+
+commit 00b3f5a2eda7b819057d9e150754dc0a509f6e39
+Author: Dave Airlie <airlied@redhat.com>
+Date: Thu Aug 13 09:25:37 2015 +1000
+
+ rootless: rename w->_w to avoid shadow warnings
+
+ fixes:
+ In file included from rootlessWindow.c:51:0:
+ rootlessWindow.c: In function 'RootlessResizeWindow':
+ rootlessCommon.h:198:19: warning: declaration of 'w' shadows a parameter [-Wshadow]
+ WindowPtr w = pWin; \
+ ^
+ rootlessWindow.c:1292:9: note: in expansion of macro 'HUGE_ROOT'
+ HUGE_ROOT(pWin);
+ ^
+ rootlessWindow.c:1262:35: note: shadowed declaration is here
+ unsigned int w, unsigned int h, WindowPtr pSib)
+ ^
+ In file included from rootlessWindow.c:51:0:
+ rootlessCommon.h:207:19: warning: declaration of 'w' shadows a parameter [-Wshadow]
+ WindowPtr w = pWin; \
+ ^
+ rootlessWindow.c:1296:9: note: in expansion of macro 'NORMAL_ROOT'
+ NORMAL_ROOT(pWin);
+ ^
+ rootlessWindow.c:1262:35: note: shadowed declaration is here
+ unsigned int w, unsigned int h, WindowPtr pSib)
+ ^
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit d4710004367ab8eab794a12385ca7ed3acc9a0e0)
+
+commit 3aacda0aea221f703d469de82a8a6778677b34d0
+Author: Dave Airlie <airlied@redhat.com>
+Date: Thu Aug 13 09:25:36 2015 +1000
+
+ rootless: fix warnings due to lack of const keeping.
+
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 7f506b8099d23c2f045ad26cc5cff00109b69d7b)
+
+commit 02c94ccddf4fc9ea08555e929b051201ad5fbc79
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Aug 4 13:17:02 2015 -0400
+
+ xwayland: Don't (double) destroy input resources in CloseScreen
+
+ By the time we get here we've already done CloseDownDevices, so on the
+ second regeneration you get:
+
+ Invalid read of size 4
+ at 0x43402A: RemoveDevice (devices.c:1125)
+ by 0x427902: xwl_seat_destroy (xwayland-input.c:568)
+ by 0x42649C: xwl_close_screen (xwayland.c:116)
+ by 0x4B7F67: CursorCloseScreen (cursor.c:187)
+ by 0x536003: AnimCurCloseScreen (animcur.c:106)
+ by 0x539831: present_close_screen (present_screen.c:64)
+ by 0x43E486: dix_main (main.c:351)
+ by 0x30D70206FF: (below main) (libc-start.c:289)
+ Address 0x980e1a0 is 64 bytes inside a block of size 904
+
+ at 0x4A07D6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
+ by 0x434158: RemoveDevice (devices.c:1157)
+ by 0x42F77B: CloseDeviceList (devices.c:1017)
+ by 0x430246: CloseDownDevices (devices.c:1047)
+ by 0x43E3EB: dix_main (main.c:333)
+ by 0x30D70206FF: (below main) (libc-start.c:289)
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Reviewed-by: Daniel Stone <daniels@collabora.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 533fb627398e20f863234d780f4463e37007515b)
+
+commit 71e4b536cd16c1880889e5a3a88f550674c12882
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Aug 4 13:17:01 2015 -0400
+
+ xwayland: Don't (double) destroy RANDR resources in CloseScreen
+
+ By the time we get here we've already been through FreeAllResources,
+ which has already torn down the RANDR objects, so on the second
+ regeneration you get:
+
+ Invalid read of size 4
+ at 0x51C6F0: RRCrtcDestroy (rrcrtc.c:659)
+ by 0x4285F5: xwl_output_destroy (xwayland-output.c:191)
+ by 0x426464: xwl_close_screen (xwayland.c:112)
+ by 0x4B7F77: CursorCloseScreen (cursor.c:187)
+ by 0x536013: AnimCurCloseScreen (animcur.c:106)
+ by 0x539841: present_close_screen (present_screen.c:64)
+ by 0x43E496: dix_main (main.c:351)
+ by 0x30D70206FF: (below main) (libc-start.c:289)
+ Address 0x4cc6640 is 0 bytes inside a block of size 728 free'd
+ at 0x4A07D6A: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
+ by 0x51BCCF: RRCrtcDestroyResource (rrcrtc.c:689)
+ by 0x45CD91: doFreeResource (resource.c:872)
+ by 0x45DE56: FreeClientResources (resource.c:1138)
+ by 0x45DF06: FreeAllResources (resource.c:1153)
+ by 0x43E3BD: dix_main (main.c:321)
+ by 0x30D70206FF: (below main) (libc-start.c:289)
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Reviewed-by: Daniel Stone <daniels@collabora.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 11f4cc47a815c5d6284b1338e748e2605b2dd779)
+
+commit 75399d32f686e8aaa11a5afafacf9fdfad3d1bb4
+Author: Eric Anholt <eric@anholt.net>
+Date: Mon Jul 27 13:54:00 2015 -0700
+
+ glamor: Don't try to free the pixmap priv if we fail to allocate FBO.
+
+ Fixes a regression since a2a2f6e34bd49e7ae31779274d52e800595660bc. I
+ missed this in testing on x86, because we never fail to allocate an
+ FBO. We do hit this path on VC4, though.
+
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit ea03e314f98e5d8ed7bf7a508006a3d84014bde5)
+
+commit 288b355f48c58cbe458cf92d78246a8abcccd946
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sun Jul 19 08:24:39 2015 -0700
+
+ Xserver.man: -retro is used when starting the server, not the stipple
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit 6916d32ab3ec1aa922094abce7fac22884ee4e83)
+
+commit abfda3b941281e12cec35e36dd0e9d87e59ce699
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue May 19 11:31:25 2015 -0400
+
+ glx: Implement GLX_ARB_context_flush_control
+
+ This extension allows clients to opt out of the implicit glFlush on
+ context release, which is quite nice for performance for clients using
+ multiple contexts. The server doesn't really need to be aware of the
+ client's decision, at least for direct contexts, but it does need to not
+ reject the context attribute out of hand.
+
+ This patch won't do anything unless built against a Mesa that defines
+ the __DRI2_FLUSH_CONTROL extension (and a new enough glxext.h, but
+ that's been there since 10.3 at least).
+
+ Reviewed-by: James Jones <jajones@nvidia.com>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit 995ff11422eb49160abfe276f471e412b16cab9d)
+
+commit 23d52080a5d9c03dc2707e71f6d878c58d000a55
+Author: Fredrik Höglund <fredrik@kde.org>
+Date: Thu Sep 10 23:33:20 2015 +0200
+
+ present: Don't stash the MSC value when present_get_ust_msc fails
+
+ Otherwise we stash an uninitalized value, and later use it to compute
+ the msc_offset for the window. Also initialize ust and crtc_msc so we
+ never use uninitalized values when present_get_ust_msc fails.
+
+ This fixes clients getting stuck waiting indefinitely for an idle
+ event when a CRTC is turned off.
+
+ Signed-off-by: Fredrik Höglund <fredrik@kde.org>
+ Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+ (cherry picked from commit f6ce23fbfc8804204fa103f98b94478387b94040)
+
+commit 2a561fac70c8b04305eab6372298a128e6553d3f
+Author: Dave Airlie <airlied@redhat.com>
+Date: Wed Sep 23 11:19:00 2015 +1000
+
+ glx: fix regression with copy sub buffer disappearing
+
+ So copy sub buffer isn't a core extensions it's a driver extension
+ which means we are using totally the wrong interface to query for it
+ here, which means bad things happen when you roll out this code,
+ for instance MESA_copy_sub_buffer stops working.
+
+ This is just the hack I'm sticking in Fedora to avoid the regression
+ for now, but hopefully will inspire us.
+
+ Reviewed-by: Adam Jackson <ajax@redhat.com>
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+ (cherry picked from commit 6da3f5d04f6a1cda0c858280f9561f9fbc323275)
+
+commit 92effabee1fe7225709acdca4adb2783b78392d4
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Wed Jul 22 15:37:23 2015 +0900
+
+ glamor: Make our EGL context current before calling into GL in glamor_init
+
+ Without this, the context of another screen may be current, or no context
+ at all if glamor_egl_init failed for another screen.
+
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ Reviewed-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit 0a458a908ec071a4da5d22c760581e0c5ec885ce)
+
+commit a420301a8bc9376a174315bc32d3cd7e89dacd7f
+Author: Dave Airlie <airlied@redhat.com>
+Date: Wed Jul 15 17:56:11 2015 +1000
+
+ glamor: make current in prepare paths
+
+ Lots of the accel paths only make current once they start
+ doing someting, so a lot of them call the bail paths without
+ make current, which means on PRIME systems for example
+ we end up in the wrong context.
+
+ Add a prepare pixmap in the prepare fallback path.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90667
+ Signed-off-by: Dave Airlie <airlied@redhat.com>
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ Reviewed-and-Tested-by: Michel Dänzer <michel.daenzer@amd.com>
+ Reviewed-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit db5337afb248edf81087cf8d74006fc496d70589)
+
+commit fb17307b1bbb6842a2c76c0a934c4f50aaea69d1
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Fri Jul 10 15:28:52 2015 +0900
+
+ glamor: Use glamor_prepare_access_box() for PutImage/GetImage fallback
+
+ Fixes slow text display in xdvi.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91260
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+ Signed-off-by: Eric Anholt <eric@anholt.net>
+ Reviewed-by: Dave Airlie <airlied@redhat.com>
+ Reviewed-by: Eric Anholt <eric@anholt.net>
+ (cherry picked from commit 1a18513a4eb3fa22459dd9f7d8f0e275aff679ec)
+
+commit 8415eca0abc00ec96cb94cd656b58edbfa8f09a3
+Author: Michel Dänzer <michel.daenzer@amd.com>
+Date: Mon Jul 6 18:45:51 2015 -0700
+
+ glamor: Use a single glTexImage2D call for core font atlas texture data v2
+
+ Instead of one glTexSubImage2D call for each glyph.
+
+ This significantly reduces the amount of time it takes for xterm to start
+ up on a fresh X server with the radeonsi driver.
+
+ v2: Use GLYPHWIDTHBYTESPADDED instead of hardcoding 4 bytes glyph
+ alignment (Keith Packard)
+
+ [ajax 1.17: fix up summary as suggested by Michel]
+
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 732e3b9c08532f40656010eac9d128601cc88c3f)
+
+commit eb9dea1e25388a8fdc31b9b138bd5ece32a3eb54
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Sun Oct 18 23:01:53 2015 -0700
+
+ XQuartz: Cleanup formatting of DarwinEQInit that was butchered by automation a few years ago
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 27ad21254f257bac6c647315d749ee69f20c24e0)
+
+commit 5e7aaf5e93e51e79548da46381c91d0efc4d9885
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Sun Oct 18 23:03:23 2015 -0700
+
+ XQuartz: Make sure that darwin_all_modifier_mask_additions is 0-terminated
+
+ Found by ASan
+
+ X.Org X Server 1.17.99.901 Build Date: 20151018
+ ================================================================
+ ==40471==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000101fed7a4 at pc 0x000101584030 bp 0x70000029f920 sp 0x70000029f918
+ READ of size 4 at 0x000101fed7a4 thread T7
+ #0 0x10158402f in DarwinEQInit darwinEvents.c:377
+ #1 0x10157f3bc in InitInput darwin.c:566
+ #2 0x101be87ad in dix_main main.c:268
+ #3 0x10159131b in server_thread quartzStartup.c:66
+ #4 0x7fff8a535c12 in _pthread_body (/usr/lib/system/libsystem_pthread.dylib+0x3c12)
+ #5 0x7fff8a535b8f in _pthread_start (/usr/lib/system/libsystem_pthread.dylib+0x3b8f)
+ #6 0x7fff8a533374 in thread_start (/usr/lib/system/libsystem_pthread.dylib+0x1374)
+
+ 0x000101fed7a4 is located 0 bytes to the right of global variable 'darwin_all_modifier_mask_additions' defined in 'darwinEvents.c:181:12'
+ (0x101fed7a0) of size 4
+ SUMMARY: AddressSanitizer: global-buffer-overflow darwinEvents.c:377 DarwinEQInit
+ Shadow bytes around the buggy address:
+ 0x1000203fdaa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdac0: f9 f9 f9 f9 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9
+ 0x1000203fdad0: 00 00 00 00 00 00 00 00 f9 f9 f9 f9 00 00 00 00
+ 0x1000203fdae0: 00 00 f9 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9
+ =>0x1000203fdaf0: f9 f9 f9 f9[04]f9 f9 f9 f9 f9 f9 f9 00 00 00 00
+ 0x1000203fdb00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdb10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdb20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdb30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 0x1000203fdb40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ Shadow byte legend (one shadow byte represents 8 application bytes):
+ Addressable: 00
+ Partially addressable: 01 02 03 04 05 06 07
+ Heap left redzone: fa
+ Heap right redzone: fb
+ Freed heap region: fd
+ Stack left redzone: f1
+ Stack mid redzone: f2
+ Stack right redzone: f3
+ Stack partial redzone: f4
+ Stack after return: f5
+ Stack use after scope: f8
+ Global redzone: f9
+ Global init order: f6
+ Poisoned by user: f7
+ Container overflow: fc
+ Array cookie: ac
+ Intra object redzone: bb
+ ASan internal: fe
+ Left alloca redzone: ca
+ Right alloca redzone: cb
+ Thread T7 created by T0 here:
+ #0 0x10242ee99 in wrap_pthread_create
+ (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x37e99)
+ #1 0x101591089 in create_thread quartzStartup.c:78
+ #2 0x101590ed9 in QuartzInitServer quartzStartup.c:95
+ #3 0x1015697eb in X11ApplicationMain X11Application.m:1277
+ #4 0x101575dc0 in X11ControllerMain X11Controller.m:984
+ #5 0x10159171a in server_main quartzStartup.c:127
+ #6 0x101540fc0 in do_start_x11_server bundle-main.c:436
+ #7 0x101544869 in _Xstart_x11_server mach_startupServer.c:189
+ #8 0x101545c96 in mach_startup_server mach_startupServer.c:398
+ #9 0x7fff8d1b70f3 in mach_msg_server (/usr/lib/system/libsystem_kernel.dylib+0x110f3)
+ #10 0x1015416e7 in main bundle-main.c:774
+ #11 0x7fff8bd975ac in start (/usr/lib/system/libdyld.dylib+0x35ac)
+ #12 0x0 (<unknown module>)
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 3db7e332d374bf8cee581c31b7d50d7ac0509187)
+
+commit 52506f60b6680e11fa418f4e59e7159eb5b7ec39
+Author: Ken Thomases <ken@codeweavers.com>
+Date: Mon Oct 12 16:45:41 2015 -0700
+
+ XQuartz: Fix how we calculate the height of the OSX menu bar
+
+ +[NSScreen mainScreen] does not mean the primary display. It used to mean the
+ one with the key window. When "Displays have separate spaces" is enabled, it
+ means the active screen, the one whose menu bar is mostly opaque. As such, it
+ may not be the screen whose lower-left corner is located at (0, 0). That's
+ why its max-Y is not necessarily comparable to its height. That only works
+ for the primary display.
+
+ This code could use [[NSScreen screens] firstObject]. This is always the
+ primary display, the one whose lower-left corner is at (0, 0).
+
+ Once that's done, the above change should be reverted. The height of the
+ visible frame would be the full height of the screen minus the menu bar _and
+ the Dock_ if the Dock is along the bottom of the screen.
+
+ Actually, there's a theoretically-simpler approach: use
+ -[NSMenu menuBarHeight]. That replaces a long-deprecated method
+ +[NSMenuView menuBarHeight]. However, there was a bug in Tiger that led to
+ the former not working while the latter still worked. I haven't actually
+ checked recently.
+
+ CrossOver's still-kicking X server code uses this code, which tries all of
+ the above:
+
+ NSScreen* primaryScreen = [[NSScreen screens] objectAtIndex:0];
+ aquaMenuBarHeight = [[NSApp mainMenu] menuBarHeight];
+ if (!aquaMenuBarHeight) aquaMenuBarHeight = [NSMenuView menuBarHeight];
+ if (!aquaMenuBarHeight) aquaMenuBarHeight =
+ NSHeight([primaryScreen frame]) - NSMaxY([primaryScreen visibleFrame]);
+
+ Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ Signed-off-by: Ken Thomases <ken@codeweavers.com>
+ (cherry picked from commit 4513f924a7065edbd267cf96837af94ce5a58a6f)
+
+commit 3a7ed42d33d264f7151fa2ed9bef7a55bde1c0e2
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Mon Oct 12 02:06:10 2015 -0700
+
+ XQuartz: Remove InfoPlist.strings
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 6e6827aac33eddeacfb37ef3d7b0397b1446bf66)
+
+commit d939043594fe75c49f356e717f94195050f6d08c
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Mon Oct 12 02:04:11 2015 -0700
+
+ XQuartz: Relax App Transport Security for communicating with the update server
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit df80e2649aa47957986554928e6bf41b86c15240)
+
+commit ba00d8fe70cbb16e45e578437defaf3eed6d25f4
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Tue Jun 9 23:41:12 2015 -0700
+
+ XQuartz: Silence -Wformat-security for NSRunAlertPanel
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 9003a3e5c55903ce4e371b2d5cb5030b5f97ae0e)
+
+commit 434890171d5ab4ec61a05596cb33e469a61a870c
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Tue Jun 9 23:34:50 2015 -0700
+
+ XQuartz: Silence -Wunused-function
+
+ quartzKeyboard.c:741:1: warning: unused function 'macroman2ucs' [-Wunused-function,Unused Entity Issue]
+ macroman2ucs(unsigned char c)
+ ^
+ 1 warning generated.
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 3a6fa115759c787ec34483437021ad1e55c52423)
+
+commit 601e9b5f8c147ef4242b4bda76e9a16e3d635370
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Tue Jun 9 23:30:50 2015 -0700
+
+ XQuartz: Silence -Wunused-variable
+
+ X11Controller.m:939:9: warning: unused variable 'remain' [-Wunused-variable,Unused Entity Issue]
+ int remain;
+ ^
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 9fe7f5ccada37e2d2a2fa92064b92a0334a3fcdd)
+
+commit 414fc605a930c5baa7e65cc303b05f3977b86baf
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Tue Jun 9 23:29:40 2015 -0700
+
+ XQuartz: Silence -Wpointer-bool-conversion
+
+ X11Controller.m:417:17: error: address of function 'asl_log_descriptor' will always evaluate to 'true'
+ [-Werror,-Wpointer-bool-conversion,Value Conversion Issue]
+ if (asl_log_descriptor) {
+ ~~ ^~~~~~~~~~~~~~~~~~
+ X11Controller.m:417:17: note: prefix with the address-of operator to silence this warning [Semantic Issue]
+ if (asl_log_descriptor) {
+ ^
+ &
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 0b9c32489131a5723bd78decf5d2557b94207cf4)
+
+commit c15e48bb032514f1123f715719c25eaba7e043a7
+Author: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Sun Jun 1 04:29:19 2014 -0700
+
+ XQuartz: GLX: Use __glXEnableExtension to build extensions list
+
+ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+ (cherry picked from commit 3790001ea29658872aebda00a03170e392b47878)
+
+commit 061ff2621ccc8560d15fb804eff68a3e15c1b5d1
+Author: Adam Jackson <ajax@redhat.com>
+Date: Fri May 15 11:27:31 2015 -0400
+
+ glx/swrast: Do more GLX extension setup
+
+ This gets you nice things like core contexts when using Xvfb.
+
+ Also, no, MESA_copy_sub_buffer is not enabled automatically.
+
+ Reviewed-by: James Jones <jajones@nvidia.com>
+ Reviewed-by: Jon Turney <jon.turney@dronecode.org.uk>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit 2d7194334a9f84e417ec90e220b2fe476f704612)
+
+commit 9e744ac376396ef032f44fba69f7e34d78f04abc
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Jun 2 13:58:30 2015 -0400
+
+ fb: Make rootless-agnostic
+
+ Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ (cherry picked from commit 315661a425018a546f7bcc18ad3e5f4578473ca6)
+
+commit b46ff18b247f75b33408fe34118b8a86a0f77e45
+Author: Julien Cristau <jcristau@debian.org>
+Date: Thu Jul 2 20:16:21 2015 +0200
+
+ mi: fix typo in warning about overflowing queue
+
+ Debian bug#726041
+
+ Reported-by: Vincent Hobeïka <vincent.hobeika@gmail.com>
+ Signed-off-by: Julien Cristau <jcristau@debian.org>
+ Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit ac94cdb9df94dd26688de6d3d9143ac48f7b3c7b)
+
+commit df4f69d4624b60c9a463712a81cce4e48175e4ae
+Author: Peter Harris <pharris@opentext.com>
+Date: Tue May 12 14:19:15 2015 -0400
+
+ Fix border tile origin when background is ParentRelative
+
+ According to
+ http://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#requests:CreateWindow
+ "The border tile origin is always the same as the background tile
+ origin."
+
+ ChangeWindowAttributes goes to some effort to make sure it repaints
+ the border tile whenever the background origin may have changed, but
+ miPaintWindow was ignoring the background origin.
+
+ Found by xts XChangeWindowAttributes-3
+
+ Signed-off-by: Peter Harris <pharris@opentext.com>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit b4061cf5f76241157b2dc81dec053012075311c0)
+
+commit d23171754a6c4f7361ac5aed64eaa29222b32df2
+Author: Andrew Eikum <aeikum@codeweavers.com>
+Date: Thu Jun 4 13:24:53 2015 -0500
+
+ dix: Send KeyPress and KeyRelease events to the XACE_KEY_AVAIL hook
+
+ While it's documented in the XACE spec, the XACE_KEY_AVAIL hook is
+ currently never actually invoked by the xserver.
+
+ This hook was added in 13c6713c82 (25 Aug 2006), but as the keyboard
+ processing was moved into XKB, the hook was forgotten and silently
+ dropped. The code calling this hook was removed by 7af53799c (4 Jan
+ 2009), but it was probably already unused before that.
+
+ This patch re-adds support for this hook. The "count" hook parameter is
+ unused.
+
+ Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 990cf5b2828f73dc7a07f1e38f608af39acfd81d)
+
+commit 918032905433f64320dc4c222228c008bbd50cd2
+Author: Andrew Eikum <aeikum@codeweavers.com>
+Date: Thu Jun 4 13:23:19 2015 -0500
+
+ xace: Add XaceHookIsSet helper function
+
+ Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 5dc2a9aae46352f1f35d3ba122da04727789a15d)
+
+commit 3f26c837262c4d15f18a6974ea15660f24ce94c1
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:38:26 2014 -0800
+
+ dmx: include header for DMXExtensionInit() in dmx.c
+
+ Gets rid of gcc 4.8 warning:
+
+ dmx.c:1193:1: warning: no previous prototype for ‘DMXExtensionInit’ [-Wmissing-prototypes]
+ DMXExtensionInit(void)
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 4a758f59a8a65c313244e06852745c8e180ff247)
+
+commit cb7ee9808a18057f534d6b8025b950f5f7275749
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:33:54 2014 -0800
+
+ dmx: constify GCOps & GCFuncs pointers
+
+ Gets rid of 16 instances of gcc 4.8 warnings:
+
+ In file included from dmxgc.c:41:0:
+ dmx.h:327:23: warning: assignment discards ‘const’ qualifier from
+ pointer target type [enabled by default]
+ (_saved)->_entry = (_actual)->_entry; \
+ ^
+ dmxgc.h:80:5: note: in expansion of macro ‘DMX_WRAP’
+ DMX_WRAP(funcs, &dmxGCFuncs, _pGCPriv, (_pGC)); \
+ ^
+ dmxgc.c:192:5: note: in expansion of macro ‘DMX_GC_FUNC_EPILOGUE’
+ DMX_GC_FUNC_EPILOGUE(pGC);
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit a0e44ddfb0c641e7896a55abf26621ae3d17e337)
+
+commit 03dd982d2b28f5959d5dc31ec45bff3ee5a0c82c
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:20:24 2014 -0800
+
+ dmx: Mark glxIsExtensionSupported as a const char *
+
+ Gets rid of 9 instances of gcc 4.8 warning:
+
+ glxcmds.c: In function ‘CreateContext’:
+ glxcmds.c:378:13: warning: passing argument 1 of ‘glxIsExtensionSupported’
+ discards ‘const’ qualifier from pointer target type [enabled by default]
+ else if (glxIsExtensionSupported("GLX_SGIX_fbconfig")) {
+ ^
+ In file included from glxserver.h:49:0,
+ from glxcmds.c:41:
+ glxscreens.h:53:12: note: expected ‘char *’ but argument is of type
+ ‘const char *’
+ extern int glxIsExtensionSupported(char *ext);
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 9682c47e228962e4008855c4da7467748742685e)
+
+commit 78df8521cfd8a279da15c7d267de5c9fe1108d4a
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:16:49 2014 -0800
+
+ dmx: remove redundant redeclarations of variables from other headers
+
+ Gets rid of these gcc 4.8 warnings:
+
+ dmxcb.c:50:12: warning: redundant redeclaration of ‘PanoramiXPixWidth’
+ [-Wredundant-decls]
+ extern int PanoramiXPixWidth;
+ ^
+ In file included from dmxcb.c:49:0:
+ ../../Xext/panoramiXsrv.h:12:22: note: previous declaration of
+ ‘PanoramiXPixWidth’ was here
+ extern _X_EXPORT int PanoramiXPixWidth;
+ ^
+ dmxcb.c:51:12: warning: redundant redeclaration of ‘PanoramiXPixHeight’
+ [-Wredundant-decls]
+ extern int PanoramiXPixHeight;
+ ^
+ In file included from dmxcb.c:49:0:
+ ../../Xext/panoramiXsrv.h:13:22: note: previous declaration of
+ ‘PanoramiXPixHeight’ was here
+ extern _X_EXPORT int PanoramiXPixHeight;
+ ^
+ dmxcb.c:52:12: warning: redundant redeclaration of ‘PanoramiXNumScreens’
+ [-Wredundant-decls]
+ extern int PanoramiXNumScreens;
+ ^
+ In file included from dmxcb.c:49:0:
+ ../../Xext/panoramiXsrv.h:11:22: note: previous declaration of
+ ‘PanoramiXNumScreens’ was here
+ extern _X_EXPORT int PanoramiXNumScreens;
+ ^
+
+ dmxpict.c:60:12: warning: redundant redeclaration of ‘RenderErrBase’
+ [-Wredundant-decls]
+ extern int RenderErrBase;
+ ^
+ In file included from ../../render/glyphstr.h:29:0,
+ from ../../render/picturestr.h:28,
+ from dmx.h:65,
+ from dmxpict.c:42:
+ ../../render/picture.h:176:22: note: previous declaration of ‘RenderErrBase’
+ was here
+ extern _X_EXPORT int RenderErrBase;
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 45ec646d77086eeb5f94766b055a93b5c75bdef0)
+
+commit 3af41608228a796ff51698b9a6b6e74aa7cd67ba
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:13:28 2014 -0800
+
+ dmx: remove redundant declaration of dmxFontPrivateIndex from dmxfont.h
+
+ Gets rid of 8 instances of gcc 4.8 warning:
+
+ In file included from glxcmds.c:38:0:
+ ../../../hw/dmx/dmxfont.h:57:12: warning: redundant redeclaration of
+ ‘dmxFontPrivateIndex’ [-Wredundant-decls]
+ extern int dmxFontPrivateIndex;
+ ^
+ In file included from glxcmds.c:35:0:
+ ../../../hw/dmx/dmx.h:388:12: note: previous declaration of
+ ‘dmxFontPrivateIndex’ was here
+ extern int dmxFontPrivateIndex; /**< Private index for Fonts */
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 1033b85196e0f25877b4b9081993aff16bf32138)
+
+commit 649f37fa01f7a2d471858609d47f297cdb8615d0
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 22:09:14 2014 -0800
+
+ dmx: glxproxy prototype cleanup
+
+ Gets rid of 107 -Wmissing-prototypes & -Wredundant-decls warnings
+ from gcc 4.8
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit ac64a653fb4935a799baca7545ba6ca401e20fa1)
+
+commit 069180bd2a243a13328eeea61ec5f8df5622a5de
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 21:11:17 2014 -0800
+
+ dmx: more unshadowing of variables
+
+ Gets rid of gcc 4.8 warnings:
+
+ dmxinputinit.c: In function ‘dmxInputScanForExtensions’:
+ dmxinputinit.c:877:14: warning: declaration of ‘display’ shadows a global declaration [-Wshadow]
+ Display *display;
+ ^
+ In file included from ../../../include/windowstr.h:60:0,
+ from dmxinputinit.c:72:
+ ../../../include/opaque.h:52:30: warning: shadowed declaration is here [-Wshadow]
+ extern _X_EXPORT const char *display;
+ ^
+
+ glxcmds.c: In function ‘__glXCreatePbuffer’:
+ glxcmds.c:3397:21: warning: declaration of ‘pc’ shadows a parameter [-Wshadow]
+ CARD32 *pc = (CARD32 *) (be_req + 1);
+ ^
+ glxcmds.c:3314:52: warning: shadowed declaration is here [-Wshadow]
+ __glXCreatePbuffer(__GLXclientState * cl, GLbyte * pc)
+ ^
+
+ glxscreens.c: In function ‘CalcServerVersionAndExtensions’:
+ glxscreens.c:139:35: warning: declaration of ‘req’ shadows a previous local [-Wshadow]
+ xGLXQueryServerStringReq *req;
+ ^
+ glxscreens.c:68:26: warning: shadowed declaration is here [-Wshadow]
+ xGLXQueryVersionReq *req;
+ ^
+ glxscreens.c:140:36: warning: declaration of ‘reply’ shadows a previous local [-Wshadow]
+ xGLXQueryServerStringReply reply;
+ ^
+ glxscreens.c:69:27: warning: shadowed declaration is here [-Wshadow]
+ xGLXQueryVersionReply reply;
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit bd563fd48f909094d6660854e97811ad7e676ddf)
+
+commit 00a962261af856081a7505a95cd871f4af047071
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 21:07:12 2014 -0800
+
+ dmx: attempt to untangle nested loops using same index variable
+
+ This doesn't just make gcc sad, it makes my brain sad.
+
+ Change from:
+ for (i = 0; i < dmxNumScreens; i++) {
+ int i;
+ for (i = 0; i < nconfigs; i++) {
+ for (j = 0; j < dmxScreen->beNumVisuals; j++) {
+
+ to the easier to follow:
+ for (i = 0; i < dmxNumScreens; i++) {
+ for (j = 0; j < nconfigs; j++) {
+ for (k = 0; k < dmxScreen->beNumVisuals; k++) {
+
+ Gets rid of gcc 4.8 warning:
+
+ dmxinit.c: In function ‘InitOutput’:
+ dmxinit.c:765:17: warning: declaration of ‘i’ shadows a previous local [-Wshadow]
+ int i;
+ ^
+ dmxinit.c:608:9: warning: shadowed declaration is here [-Wshadow]
+ int i;
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 57e08fae82f733304200a473f55b86e689404c13)
+
+commit 25292a3bc1032aab8586d7311159e88acca7b689
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 20:53:33 2014 -0800
+
+ dmx: remove unused variables
+
+ Gets rid of gcc 4.8 warnings:
+
+ dmxscrinit.c: In function ‘dmxBEScreenInit’:
+ dmxscrinit.c:83:15: warning: unused variable ‘gcvals’ [-Wunused-variable]
+ XGCValues gcvals;
+ ^
+
+ dmxwindow.c: In function ‘dmxResizeWindow’:
+ dmxwindow.c:860:19: warning: variable ‘pSibPriv’ set but not used [-Wunused-but-set-variable]
+ dmxWinPrivPtr pSibPriv;
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 0fbebad72428abbc9fc3fa9f406f7a7e1b9d95b2)
+
+commit 43251c13d7cfaa5deb1146219e175b3fcd1cfffd
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 19:09:36 2014 -0800
+
+ dmx: fix printf format argument warnings
+
+ Gets rid of these gcc 4.8 warnings:
+
+ dmxinit.c: In function ‘dmxErrorHandler’:
+ dmxinit.c:167:16: warning: format ‘%x’ expects argument of type ‘unsigned int’,
+ but argument 3 has type ‘XID64’ [-Wformat=]
+ ev->resourceid);
+ ^
+ dmxinit.c:171:16: warning: format ‘%x’ expects argument of type ‘unsigned int’,
+ but argument 3 has type ‘XID64’ [-Wformat=]
+ ev->resourceid);
+ ^
+ dmxinit.c:175:16: warning: format ‘%x’ expects argument of type ‘unsigned int’,
+ but argument 3 has type ‘XID64’ [-Wformat=]
+ ev->resourceid);
+ ^
+ dmxinit.c:181:12: warning: format ‘%d’ expects argument of type ‘int’,
+ but argument 3 has type ‘long unsigned int’ [-Wformat=]
+ ev->serial);
+ ^
+ dmxinit.c:183:12: warning: format ‘%d’ expects argument of type ‘int’,
+ but argument 3 has type ‘long unsigned int’ [-Wformat=]
+ dpy->request);
+ ^
+ dmxinit.c: In function ‘InitOutput’:
+ dmxinit.c:637:9: warning: format ‘%d’ expects argument of type ‘int’,
+ but argument 3 has type ‘long unsigned int’ [-Wformat=]
+ dmxLog(dmxInfo, "Generation: %d\n", dmxGeneration);
+ ^
+
+ dmxprop.c: In function ‘dmxPropertyCheckOtherWindows’:
+ dmxprop.c:223:24: warning: format ‘%lu’ expects argument of type ‘long
+ unsigned int’, but argument 4 has type ‘Window’ [-Wformat=]
+ dmxScreen->name, win, tp.value);
+ ^
+ dmxprop.c: In function ‘dmxPropertyWindow’:
+ dmxprop.c:364:16: warning: format ‘%lu’ expects argument of type ‘long
+ unsigned int’, but argument 5 has type ‘Window’ [-Wformat=]
+ other->index, other->name, other->scrnWin);
+ ^
+ dmxprop.c:364:16: warning: format ‘%lu’ expects argument of type ‘long
+ unsigned int’, but argument 8 has type ‘Window’ [-Wformat=]
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit f358f0d50cadaf10f7d97e21da00419a4a37c4e1)
+
+commit d4b0ab833253493f0ea98b6faca6c17ed55b1c22
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 18:58:01 2014 -0800
+
+ dmx: move format strings inline so gcc can check
+
+ Gets rid of gcc 4.8 warnings:
+
+ dmxprint.c: In function ‘dmxConfigPrintPair’:
+ dmxprint.c:284:25: warning: format not a string literal,
+ argument types not checked [-Wformat-nonliteral]
+ p->ysign < 0 ? '-' : '+', p->y);
+ ^
+ dmxprint.c:289:9: warning: format not a string literal,
+ argument types not checked [-Wformat-nonliteral]
+ dmxConfigOutput(addSpace, 0, p->comment, format, p->x, p->y);
+ ^
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 11af200b004b4810c9267e3e16449c3175c64d4a)
+
+commit 904105166450fbcc76cf18392beb4d6d3238bee0
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri Dec 12 18:52:05 2014 -0800
+
+ dmx: Add _X_ATTRIBUTE_PRINTF to dmxConfigLog() & dmxConfigOutput()
+
+ Gets rid of gcc 4.8 warnings:
+
+ dmxparse.c: In function ‘dmxConfigLog’:
+ dmxparse.c:61:5: warning: function might be possible candidate for
+ ‘gnu_printf’ format attribute [-Wsuggest-attribute=format]
+ vprintf(format, args); /* RATS: All calls to dmxConfigLog from
+ ^
+
+ dmxprint.c: In function ‘dmxConfigOutput’:
+ dmxprint.c:149:9: warning: function might be possible candidate for
+ ‘gnu_printf’ format attribute [-Wsuggest-attribute=format]
+ pos += vfprintf(str, format, args); /* assumes no newlines! */
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Rémi Cardona <remi@gentoo.org>
+ Reviewed-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit 5e01eac10e915568324aff81b51d3af558757042)
+
+commit 838952c97e0ecb334fe4e84a17373fffde053ebe
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue Dec 9 18:27:11 2014 -0800
+
+ Get rid of const warnings in XSERVER_INPUT_EVENT dtrace probe calls
+
+ Use typedefs to work around dtrace dropping const qualifiers from probe
+ arguments when generating Xserver-dtrace.h. Add new probes.h header to
+ avoid having to replicate these typedefs in every file with dtrace probes.
+
+ Gets rid of these warnings from gcc 4.8:
+ getevents.c:1096:9:
+ warning: passing argument 6 of '__dtrace_Xserver___input__event' discards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1096:9:
+ warning: passing argument 7 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1651:9:
+ warning: passing argument 6 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1651:9:
+ warning: passing argument 7 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1791:9:
+ warning: passing argument 6 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1791:9:
+ warning: passing argument 7 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1921:9:
+ warning: passing argument 6 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+ getevents.c:1921:9:
+ warning: passing argument 7 of '__dtrace_Xserver___input__event' disards
+ 'const' qualifier from pointer target type [enabled by default]
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+ Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 9e002dfcd71439fd81563db1f70e8c1964d52fab)
+
commit 2123f7682d522619f101b05fb75efa75dabbe371
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Jun 16 11:42:47 2015 -0400
diff --git a/xserver/Makefile.in b/xserver/Makefile.in
index 3f54863cb..137070734 100644
--- a/xserver/Makefile.in
+++ b/xserver/Makefile.in
@@ -55,7 +55,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/xorg-server.pc.in \
$(srcdir)/xserver.ent.in $(top_srcdir)/configure COPYING \
ChangeLog INSTALL TODO config.guess config.sub depcomp \
- install-sh ltmain.sh missing
+ install-sh ltmain.sh missing ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
diff --git a/xserver/Xext/xace.c b/xserver/Xext/xace.c
index d77b3126a..b3c67f632 100644
--- a/xserver/Xext/xace.c
+++ b/xserver/Xext/xace.c
@@ -213,6 +213,21 @@ XaceHook(int hook, ...)
return prv ? *prv : Success;
}
+/* XaceHookIsSet
+ *
+ * Utility function to determine whether there are any callbacks listening on a
+ * particular XACE hook.
+ *
+ * Returns non-zero if there is a callback, zero otherwise.
+ */
+int
+XaceHookIsSet(int hook)
+{
+ if (hook < 0 || hook >= XACE_NUM_HOOKS)
+ return 0;
+ return XaceHooks[hook] != NULL;
+}
+
/* XaceCensorImage
*
* Called after pScreen->GetImage to prevent pieces or trusted windows from
diff --git a/xserver/Xext/xace.h b/xserver/Xext/xace.h
index 5e6cb0437..6a8d0c4bd 100644
--- a/xserver/Xext/xace.h
+++ b/xserver/Xext/xace.h
@@ -65,6 +65,9 @@ extern _X_EXPORT int XaceHook(int /*hook */ ,
... /*appropriate args for hook */
);
+/* determine whether any callbacks are present for the XACE hook */
+extern _X_EXPORT int XaceHookIsSet(int hook);
+
/* Special-cased hook functions
*/
extern _X_EXPORT int XaceHookDispatch(ClientPtr ptr, int major);
@@ -109,6 +112,7 @@ extern _X_EXPORT void XaceCensorImage(ClientPtr client,
#ifdef __GNUC__
#define XaceHook(args...) Success
+#define XaceHookIsSet(args...) 0
#define XaceHookDispatch(args...) Success
#define XaceHookPropertyAccess(args...) Success
#define XaceHookSelectionAccess(args...) Success
@@ -116,6 +120,7 @@ extern _X_EXPORT void XaceCensorImage(ClientPtr client,
#define XaceCensorImage(args...) { ; }
#else
#define XaceHook(...) Success
+#define XaceHookIsSet(...) 0
#define XaceHookDispatch(...) Success
#define XaceHookPropertyAccess(...) Success
#define XaceHookSelectionAccess(...) Success
diff --git a/xserver/Xext/xselinux_hooks.c b/xserver/Xext/xselinux_hooks.c
index 48219a9e0..e69bfe7ae 100644
--- a/xserver/Xext/xselinux_hooks.c
+++ b/xserver/Xext/xselinux_hooks.c
@@ -147,7 +147,7 @@ SELinuxLabelClient(ClientPtr client)
strncpy(subj->command, cmdname, COMMAND_LEN - 1);
if (!cached)
- free(cmdname); /* const char * */
+ free((void *) cmdname); /* const char * */
}
finish:
@@ -295,6 +295,9 @@ SELinuxAudit(void *auditdata,
}
static int
+SELinuxLog(int type, const char *fmt, ...) _X_ATTRIBUTE_PRINTF(2, 3);
+
+static int
SELinuxLog(int type, const char *fmt, ...)
{
va_list ap;
@@ -316,6 +319,7 @@ SELinuxLog(int type, const char *fmt, ...)
va_start(ap, fmt);
vsnprintf(buf, MAX_AUDIT_MESSAGE_LENGTH, fmt, ap);
rc = audit_log_user_avc_message(audit_fd, aut, buf, NULL, NULL, NULL, 0);
+ (void) rc;
va_end(ap);
LogMessageVerb(X_WARNING, 0, "%s", buf);
return 0;
@@ -476,7 +480,7 @@ SELinuxExtension(CallbackListPtr *pcbl, void *unused, void *calldata)
}
/* Perform the security check */
- auditdata.extension = rec->ext->name;
+ auditdata.extension = (char *) rec->ext->name;
rc = SELinuxDoCheck(subj, obj, SECCLASS_X_EXTENSION, rec->access_mode,
&auditdata);
if (rc != Success)
diff --git a/xserver/Xi/exevents.c b/xserver/Xi/exevents.c
index 0857bcee6..21fb69696 100644
--- a/xserver/Xi/exevents.c
+++ b/xserver/Xi/exevents.c
@@ -1730,6 +1730,18 @@ ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device)
break;
}
+ /* send KeyPress and KeyRelease events to XACE plugins */
+ if (XaceHookIsSet(XACE_KEY_AVAIL) &&
+ (event->type == ET_KeyPress || event->type == ET_KeyRelease)) {
+ xEvent *core;
+ int count;
+
+ if (EventToCore(ev, &core, &count) == Success && count > 0) {
+ XaceHook(XACE_KEY_AVAIL, core, device, 0);
+ free(core);
+ }
+ }
+
if (DeviceEventCallback && !syncEvents.playingEvents) {
DeviceEventInfoRec eventinfo;
SpritePtr pSprite = device->spriteInfo->sprite;
diff --git a/xserver/configure b/xserver/configure
index 1253b5884..057039bf7 100644
--- a/xserver/configure
+++ b/xserver/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xorg-server 1.17.2.
+# Generated by GNU Autoconf 2.69 for xorg-server 1.17.4.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -651,8 +651,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='xorg-server'
PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='1.17.2'
-PACKAGE_STRING='xorg-server 1.17.2'
+PACKAGE_VERSION='1.17.4'
+PACKAGE_STRING='xorg-server 1.17.4'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@@ -2059,7 +2059,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xorg-server 1.17.2 to adapt to many kinds of systems.
+\`configure' configures xorg-server 1.17.4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2129,7 +2129,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xorg-server 1.17.2:";;
+ short | recursive ) echo "Configuration of xorg-server 1.17.4:";;
esac
cat <<\_ACEOF
@@ -2578,7 +2578,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xorg-server configure 1.17.2
+xorg-server configure 1.17.4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3287,7 +3287,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xorg-server $as_me 1.17.2, which was
+It was created by xorg-server $as_me 1.17.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3635,8 +3635,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-RELEASE_DATE="2015-06-16"
-RELEASE_NAME="lambic"
+RELEASE_DATE="2015-10-28"
+RELEASE_NAME="Cider Donut"
am__api_version='1.12'
@@ -4115,7 +4115,7 @@ fi
# Define the identity of the package.
PACKAGE='xorg-server'
- VERSION='1.17.2'
+ VERSION='1.17.4'
cat >>confdefs.h <<_ACEOF
@@ -32644,7 +32644,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xorg-server $as_me 1.17.2, which was
+This file was extended by xorg-server $as_me 1.17.4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -32710,7 +32710,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-xorg-server config.status 1.17.2
+xorg-server config.status 1.17.4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/xserver/configure.ac b/xserver/configure.ac
index bd9aad523..1a0725df2 100644
--- a/xserver/configure.ac
+++ b/xserver/configure.ac
@@ -26,9 +26,9 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.17.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2015-06-16"
-RELEASE_NAME="lambic"
+AC_INIT([xorg-server], 1.17.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2015-10-28"
+RELEASE_NAME="Cider Donut"
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
diff --git a/xserver/dix/Xserver.d b/xserver/dix/Xserver.d
index 248d48e24..f4f229d84 100644
--- a/xserver/dix/Xserver.d
+++ b/xserver/dix/Xserver.d
@@ -31,6 +31,9 @@
#include <sys/types.h>
#endif
+typedef const uint8_t *const_uint8_p;
+typedef const double *const_double_p;
+
provider Xserver {
/* reqType, data, length, client id, request buffer */
probe request__start(string, uint8_t, uint16_t, int, void *);
@@ -49,7 +52,7 @@ provider Xserver {
/* client id, event type, event* */
probe send__event(int, uint8_t, void *);
/* deviceid, type, button/keycode/touchid, flags, nvalues, mask, values */
- probe input__event(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*);
+ probe input__event(int, int, uint32_t, uint32_t, int8_t, const_uint8_p, const_double_p);
};
#pragma D attributes Unstable/Unstable/Common provider Xserver provider
diff --git a/xserver/dix/dispatch.c b/xserver/dix/dispatch.c
index 9044ac786..17fa75e19 100644
--- a/xserver/dix/dispatch.c
+++ b/xserver/dix/dispatch.c
@@ -131,10 +131,7 @@ int ProcInitialConnection();
#ifdef XSERVER_DTRACE
#include "registry.h"
-#include <sys/types.h>
-typedef const char *string;
-
-#include "Xserver-dtrace.h"
+#include "probes.h"
#endif
#define mskcnt ((MAXCLIENTS + 31) / 32)
diff --git a/xserver/dix/dixfonts.c b/xserver/dix/dixfonts.c
index bc2732fb9..ddcb18bc1 100644
--- a/xserver/dix/dixfonts.c
+++ b/xserver/dix/dixfonts.c
@@ -314,8 +314,6 @@ doOpenFont(ClientPtr client, OFclosurePtr c)
if (err == Suspended) {
if (!ClientIsAsleep(client))
ClientSleep(client, (ClientSleepProcPtr) doOpenFont, c);
- else
- goto xinerama_sleep;
return TRUE;
}
break;
@@ -363,7 +361,6 @@ doOpenFont(ClientPtr client, OFclosurePtr c)
c->fontid, FontToXError(err));
}
ClientWakeup(c->client);
- xinerama_sleep:
for (i = 0; i < c->num_fpes; i++) {
FreeFPE(c->fpe_list[i]);
}
@@ -596,8 +593,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
if (!ClientIsAsleep(client))
ClientSleep(client,
(ClientSleepProcPtr) doListFontsAndAliases, c);
- else
- goto xinerama_sleep;
return TRUE;
}
@@ -623,8 +618,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
ClientSleep(client,
(ClientSleepProcPtr) doListFontsAndAliases,
c);
- else
- goto xinerama_sleep;
return TRUE;
}
if (err == Successful)
@@ -642,8 +635,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
ClientSleep(client,
(ClientSleepProcPtr) doListFontsAndAliases,
c);
- else
- goto xinerama_sleep;
return TRUE;
}
if (err == FontNameAlias) {
@@ -788,7 +779,6 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c)
bail:
ClientWakeup(client);
- xinerama_sleep:
for (i = 0; i < c->num_fpes; i++)
FreeFPE(c->fpe_list[i]);
free(c->fpe_list);
@@ -888,8 +878,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
if (!ClientIsAsleep(client))
ClientSleep(client,
(ClientSleepProcPtr) doListFontsWithInfo, c);
- else
- goto xinerama_sleep;
return TRUE;
}
if (err == Successful)
@@ -905,8 +893,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
if (!ClientIsAsleep(client))
ClientSleep(client,
(ClientSleepProcPtr) doListFontsWithInfo, c);
- else
- goto xinerama_sleep;
return TRUE;
}
}
@@ -1040,7 +1026,6 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c)
WriteSwappedDataToClient(client, length, &finalReply);
bail:
ClientWakeup(client);
- xinerama_sleep:
for (i = 0; i < c->num_fpes; i++)
FreeFPE(c->fpe_list[i]);
free(c->reply);
@@ -1297,8 +1282,6 @@ doPolyText(ClientPtr client, PTclosurePtr c)
client_state = START_SLEEP;
continue; /* on to steps 3 and 4 */
}
- else
- goto xinerama_sleep;
return TRUE;
}
else if (lgerr != Successful) {
@@ -1352,7 +1335,6 @@ doPolyText(ClientPtr client, PTclosurePtr c)
}
if (ClientIsAsleep(client)) {
ClientWakeup(c->client);
- xinerama_sleep:
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
/* Unreference the font from the scratch GC */
@@ -1477,8 +1459,6 @@ doImageText(ClientPtr client, ITclosurePtr c)
ClientSleep(client, (ClientSleepProcPtr) doImageText, c);
}
- else
- goto xinerama_sleep;
return TRUE;
}
else if (lgerr != Successful) {
@@ -1501,7 +1481,6 @@ doImageText(ClientPtr client, ITclosurePtr c)
}
if (ClientIsAsleep(client)) {
ClientWakeup(c->client);
- xinerama_sleep:
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
/* Unreference the font from the scratch GC */
diff --git a/xserver/dix/events.c b/xserver/dix/events.c
index 250061568..150620f59 100644
--- a/xserver/dix/events.c
+++ b/xserver/dix/events.c
@@ -125,13 +125,7 @@ Equipment Corporation.
#include <X11/extensions/XKBproto.h>
#include "xkbsrv.h"
#include "xace.h"
-
-#ifdef XSERVER_DTRACE
-#include <sys/types.h>
-typedef const char *string;
-
-#include "Xserver-dtrace.h"
-#endif
+#include "probes.h"
#include <X11/extensions/XIproto.h>
#include <X11/extensions/XI2proto.h>
diff --git a/xserver/dix/getevents.c b/xserver/dix/getevents.c
index 6fb12c5c1..bc7ffa63b 100644
--- a/xserver/dix/getevents.c
+++ b/xserver/dix/getevents.c
@@ -68,12 +68,7 @@
#include "exevents.h"
#include "extnsionst.h"
#include "listdev.h" /* for sizing up DeviceClassesChangedEvent */
-
-#if XSERVER_DTRACE
-#include <sys/types.h>
-typedef const char *string;
-#include <Xserver-dtrace.h>
-#endif
+#include "probes.h"
/* Number of motion history events to store. */
#define MOTION_HISTORY_SIZE 256
diff --git a/xserver/dix/main.c b/xserver/dix/main.c
index 09f9504b8..7c6ac943f 100644
--- a/xserver/dix/main.c
+++ b/xserver/dix/main.c
@@ -337,6 +337,7 @@ dix_main(int argc, char *argv[], char *envp[])
for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) {
ScreenPtr pScreen = screenInfo.gpuscreens[i];
FreeScratchPixmapsForScreen(pScreen);
+ dixFreeScreenSpecificPrivates(pScreen);
(*pScreen->CloseScreen) (pScreen);
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
free(pScreen);
diff --git a/xserver/dix/privates.c b/xserver/dix/privates.c
index e03b2255b..969d0141c 100644
--- a/xserver/dix/privates.c
+++ b/xserver/dix/privates.c
@@ -642,6 +642,15 @@ dixRegisterScreenSpecificPrivateKey(ScreenPtr pScreen, DevPrivateKey key,
void
dixFreeScreenSpecificPrivates(ScreenPtr pScreen)
{
+ DevPrivateType t;
+
+ for (t = PRIVATE_XSELINUX; t < PRIVATE_LAST; t++) {
+ DevPrivateKey key;
+
+ for (key = pScreen->screenSpecificPrivates[t].key; key; key = key->next) {
+ key->initialized = FALSE;
+ }
+ }
}
/* Initialize screen-specific privates in AddScreen */
diff --git a/xserver/dix/protocol.txt b/xserver/dix/protocol.txt
index c22379581..731844c15 100644
--- a/xserver/dix/protocol.txt
+++ b/xserver/dix/protocol.txt
@@ -6,20 +6,6 @@
#
# This is a security-sensitive file, please set permissions as appropriate.
#
-R001 Adobe-DPS-Extension:Init
-R002 Adobe-DPS-Extension:CreateContext
-R003 Adobe-DPS-Extension:CreateSpace
-R004 Adobe-DPS-Extension:GiveInput
-R005 Adobe-DPS-Extension:GetStatus
-R006 Adobe-DPS-Extension:DestroySpace
-R007 Adobe-DPS-Extension:Reset
-R008 Adobe-DPS-Extension:NotifyContext
-R009 Adobe-DPS-Extension:CreateContextFromID
-R010 Adobe-DPS-Extension:XIDFromContext
-R011 Adobe-DPS-Extension:ContextFromXID
-R012 Adobe-DPS-Extension:SetStatusMask
-R013 Adobe-DPS-Extension:CreateSecureContext
-R014 Adobe-DPS-Extension:NotifyWhenReady
R000 Apple-DRI:QueryVersion
R001 Apple-DRI:QueryDirectRenderingCapable
R002 Apple-DRI:CreateSurface
@@ -65,22 +51,6 @@ R003 DAMAGE:Subtract
R004 DAMAGE:Add
V000 DAMAGE:Notify
E000 DAMAGE:BadDamage
-R000 DEC-XTRAP:Reset
-R001 DEC-XTRAP:GetAvailable
-R002 DEC-XTRAP:Config
-R003 DEC-XTRAP:StartTrap
-R004 DEC-XTRAP:StopTrap
-R005 DEC-XTRAP:GetCurrent
-R006 DEC-XTRAP:GetStatistics
-R007 DEC-XTRAP:SimulateXEvent
-R008 DEC-XTRAP:GetVersion
-R009 DEC-XTRAP:GetLastInpTime
-V000 DEC-XTRAP:Event
-E002 DEC-XTRAP:BadIO
-E004 DEC-XTRAP:BadStatistics
-E005 DEC-XTRAP:BadDevices
-E007 DEC-XTRAP:BadScreen
-E008 DEC-XTRAP:BadSwapReq
R000 DMX:DMXQueryVersion
R001 DMX:DMXGetScreenCount
R002 DMX:DMXGetScreenInfoDEPRECATED
@@ -124,6 +94,19 @@ R004 DRI2:DestroyDrawable
R005 DRI2:GetBuffers
R006 DRI2:CopyRegion
R007 DRI2:GetBuffersWithFormat
+R008 DRI2:SwapBuffers
+R009 DRI2:GetMSC
+R010 DRI2:WaitMSC
+R011 DRI2:WaitSBC
+R012 DRI2:SwapInterval
+V000 DRI2:BufferSwapComplete
+V001 DRI2:InvalidateBuffers
+R000 DRI3:QueryVersion
+R001 DRI3:Open
+R002 DRI3:PixmapFromBuffer
+R003 DRI3:BufferFromPixmap
+R004 DRI3:FenceFromFD
+R005 DRI3:FDFromFence
R000 Extended-Visual-Information:QueryVersion
R001 Extended-Visual-Information:GetVisualInfo
R000 FontCache:QueryVersion
@@ -152,6 +135,20 @@ R017 GLX:VendorPrivateWithReply
R018 GLX:QueryExtensionsString
R019 GLX:QueryServerString
R020 GLX:ClientInfo
+R021 GLX:GetFBConfigs
+R022 GLX:CreatePixmap
+R023 GLX:DestroyPixmap
+R024 GLX:CreateNewContext
+R025 GLX:QueryContext
+R026 GLX:MakeContextCurrent
+R027 GLX:CreatePbuffer
+R028 GLX:DestroyPbuffer
+R029 GLX:GetDrawableAttributes
+R030 GLX:ChangeDrawableAttributes
+R031 GLX:CreateWindow
+R032 GLX:DeleteWindow
+R033 GLX:SetClientInfoARB
+R034 GLX:CreateContextAttribsARB
R101 GLX:NewList
R102 GLX:EndList
R103 GLX:DeleteLists
@@ -194,6 +191,26 @@ R139 GLX:GetTexLevelParameteriv
R140 GLX:IsEnabled
R141 GLX:IsList
R142 GLX:Flush
+R143 GLX:AreTexturesResident
+R144 GLX:DeleteTextures
+R145 GLX:GenTextures
+R146 GLX:IsTexture
+R147 GLX:GetColorTable
+R148 GLX:GetColorTableParameterfv
+R149 GLX:GetColorTableParameterfv
+R150 GLX:GetConvolutionFilter
+R151 GLX:GetConvolutionParameterfv
+R152 GLX:GetConvolutionParameteriv
+R153 GLX:GetSeparableFilter
+R154 GLX:GetHistogram
+R155 GLX:GetHistogramParameterfv
+R156 GLX:GetHistogramParameteriv
+R157 GLX:GetMinmax
+R158 GLX:GetMinmaxParameterfv
+R159 GLX:GetMinmaxParameteriv
+R160 GLX:GetCompressedTexImage
+V000 GLX:PbufferClobber
+V001 GLX:BufferSwapComplete
E000 GLX:BadContext
E001 GLX:BadContextState
E002 GLX:BadDrawable
@@ -203,51 +220,10 @@ E005 GLX:BadCurrentWindow
E006 GLX:BadRenderRequest
E007 GLX:BadLargeRequest
E008 GLX:UnsupportedPrivateRequest
-R000 LBX:QueryVersion
-R001 LBX:StartProxy
-R002 LBX:StopProxy
-R003 LBX:Switch
-R004 LBX:NewClient
-R005 LBX:CloseClient
-R006 LBX:ModifySequence
-R007 LBX:AllowMotion
-R008 LBX:IncrementPixel
-R009 LBX:Delta
-R010 LBX:GetModifierMapping
-R011 LBX:QueryTag
-R012 LBX:InvalidateTag
-R013 LBX:PolyPoint
-R014 LBX:PolyLine
-R015 LBX:PolySegment
-R016 LBX:PolyRectangle
-R017 LBX:PolyArc
-R018 LBX:FillPoly
-R019 LBX:PolyFillRectangle
-R020 LBX:PolyFillArc
-R021 LBX:GetKeyboardMapping
-R022 LBX:QueryFont
-R023 LBX:ChangeProperty
-R024 LBX:GetProperty
-R025 LBX:TagData
-R026 LBX:CopyArea
-R027 LBX:CopyPlane
-R028 LBX:PolyText8
-R029 LBX:PolyText16
-R030 LBX:ImageText8
-R031 LBX:ImageText16
-R032 LBX:QueryExtension
-R033 LBX:PutImage
-R034 LBX:GetImage
-R035 LBX:BeginLargeRequest
-R036 LBX:LargeRequestData
-R037 LBX:EndLargeRequest
-R038 LBX:InternAtoms
-R039 LBX:GetWinAttrAndGeom
-R040 LBX:GrabCmap
-R041 LBX:ReleaseCmap
-R042 LBX:AllocColor
-R043 LBX:Sync
-E000 LBX:BadLbxClient
+E009 GLX:BadFBConfig
+E010 GLX:BadPbuffer
+E011 GLX:BadCurrentDrawable
+E012 GLX:BadWindow
R000 MIT-SCREEN-SAVER:QueryVersion
R001 MIT-SCREEN-SAVER:QueryInfo
R002 MIT-SCREEN-SAVER:SelectInput
@@ -261,24 +237,17 @@ R002 MIT-SHM:Detach
R003 MIT-SHM:PutImage
R004 MIT-SHM:GetImage
R005 MIT-SHM:CreatePixmap
+R006 MIT-SHM:AttachFd
+R007 MIT-SHM:CreateSegment
V000 MIT-SHM:Completion
E000 MIT-SHM:BadShmSeg
R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
-R000 Multi-Buffering:GetBufferVersion
-R001 Multi-Buffering:CreateImageBuffers
-R002 Multi-Buffering:DestroyImageBuffers
-R003 Multi-Buffering:DisplayImageBuffers
-R004 Multi-Buffering:SetMBufferAttributes
-R005 Multi-Buffering:GetMBufferAttributes
-R006 Multi-Buffering:SetBufferAttributes
-R007 Multi-Buffering:GetBufferAttributes
-R008 Multi-Buffering:GetBufferInfo
-R009 Multi-Buffering:CreateStereoWindow
-R010 Multi-Buffering:ClearImageBufferArea
-V000 Multi-Buffering:ClobberNotify
-V001 Multi-Buffering:UpdateNotify
-E000 Multi-Buffering:BadBuffer
+R000 Present:QueryVersion
+R001 Present:Pixmap
+R002 Present:NotifyMSC
+R003 Present:SelectInput
+R004 Present:QueryCapabilities
R000 RANDR:QueryVersion
R001 RANDR:OldGetScreenInfo
R002 RANDR:SetScreenConfig
@@ -628,125 +597,6 @@ E014 X11:BadIDChoice
E015 X11:BadName
E016 X11:BadLength
E017 X11:BadImplementation
-R001 X3D-PEX:GetExtensionInfo
-R002 X3D-PEX:GetEnumeratedTypeInfo
-R003 X3D-PEX:GetImpDepConstants
-R004 X3D-PEX:CreateLookupTable
-R005 X3D-PEX:CopyLookupTable
-R006 X3D-PEX:FreeLookupTable
-R007 X3D-PEX:GetTableInfo
-R008 X3D-PEX:GetPredefinedEntries
-R009 X3D-PEX:GetDefinedIndices
-R010 X3D-PEX:GetTableEntry
-R011 X3D-PEX:GetTableEntries
-R012 X3D-PEX:SetTableEntries
-R013 X3D-PEX:DeleteTableEntries
-R014 X3D-PEX:CreatePipelineContext
-R015 X3D-PEX:CopyPipelineContext
-R016 X3D-PEX:FreePipelineContext
-R017 X3D-PEX:GetPipelineContext
-R018 X3D-PEX:ChangePipelineContext
-R019 X3D-PEX:CreateRenderer
-R020 X3D-PEX:FreeRenderer
-R021 X3D-PEX:ChangeRenderer
-R022 X3D-PEX:GetRendererAttributes
-R023 X3D-PEX:GetRendererDynamics
-R024 X3D-PEX:BeginRendering
-R025 X3D-PEX:EndRendering
-R026 X3D-PEX:BeginStructure
-R027 X3D-PEX:EndStructure
-R028 X3D-PEX:OutputCommands
-R029 X3D-PEX:Network
-R030 X3D-PEX:CreateStructure
-R031 X3D-PEX:CopyStructure
-R032 X3D-PEX:DestroyStructures
-R033 X3D-PEX:GetStructureInfo
-R034 X3D-PEX:GetElementInfo
-R035 X3D-PEX:GetStructuresInNetwork
-R036 X3D-PEX:GetAncestors
-R037 X3D-PEX:GetDescendants
-R038 X3D-PEX:FetchElements
-R039 X3D-PEX:SetEditingMode
-R040 X3D-PEX:SetElementPointer
-R041 X3D-PEX:SetElementPointerAtLabel
-R042 X3D-PEX:ElementSearch
-R043 X3D-PEX:StoreElements
-R044 X3D-PEX:DeleteElements
-R045 X3D-PEX:DeleteElementsToLabel
-R046 X3D-PEX:DeleteBetweenLabels
-R047 X3D-PEX:CopyElements
-R048 X3D-PEX:ChangeStructureRefs
-R049 X3D-PEX:CreateNameSet
-R050 X3D-PEX:CopyNameSet
-R051 X3D-PEX:FreeNameSet
-R052 X3D-PEX:GetNameSet
-R053 X3D-PEX:ChangeNameSet
-R054 X3D-PEX:CreateSearchContext
-R055 X3D-PEX:CopySearchContext
-R056 X3D-PEX:FreeSearchContext
-R057 X3D-PEX:GetSearchContext
-R058 X3D-PEX:ChangeSearchContext
-R059 X3D-PEX:SearchNetwork
-R060 X3D-PEX:CreatePhigsWks
-R061 X3D-PEX:FreePhigsWks
-R062 X3D-PEX:GetWksInfo
-R063 X3D-PEX:GetDynamics
-R064 X3D-PEX:GetViewRep
-R065 X3D-PEX:RedrawAllStructures
-R066 X3D-PEX:UpdateWorkstation
-R067 X3D-PEX:RedrawClipRegion
-R068 X3D-PEX:ExecuteDeferredActions
-R069 X3D-PEX:SetViewPriority
-R070 X3D-PEX:SetDisplayUpdateMode
-R071 X3D-PEX:MapDCtoWC
-R072 X3D-PEX:MapWCtoDC
-R073 X3D-PEX:SetViewRep
-R074 X3D-PEX:SetWksWindow
-R075 X3D-PEX:SetWksViewport
-R076 X3D-PEX:SetHlhsrMode
-R077 X3D-PEX:SetWksBufferMode
-R078 X3D-PEX:PostStructure
-R079 X3D-PEX:UnpostStructure
-R080 X3D-PEX:UnpostAllStructures
-R081 X3D-PEX:GetWksPostings
-R082 X3D-PEX:GetPickDevice
-R083 X3D-PEX:ChangePickDevice
-R084 X3D-PEX:CreatePickMeasure
-R085 X3D-PEX:FreePickMeasure
-R086 X3D-PEX:GetPickMeasure
-R087 X3D-PEX:UpdatePickMeasure
-R088 X3D-PEX:OpenFont
-R089 X3D-PEX:CloseFont
-R090 X3D-PEX:QueryFont
-R091 X3D-PEX:ListFonts
-R092 X3D-PEX:ListFontsWithInfo
-R093 X3D-PEX:QueryTextExtents
-R094 X3D-PEX:MatchRenderingTargets
-R095 X3D-PEX:Escape
-R096 X3D-PEX:EscapeWithReply
-R097 X3D-PEX:Elements
-R098 X3D-PEX:AccumulateState
-R099 X3D-PEX:BeginPickOne
-R100 X3D-PEX:EndPickOne
-R101 X3D-PEX:PickOne
-R102 X3D-PEX:BeginPickAll
-R103 X3D-PEX:EndPickAll
-R104 X3D-PEX:PickAll
-E000 X3D-PEX:ColorTypeError
-E001 X3D-PEX:erStateError
-E002 X3D-PEX:FloatingPointFormatError
-E003 X3D-PEX:LabelError
-E004 X3D-PEX:LookupTableError
-E005 X3D-PEX:NameSetError
-E006 X3D-PEX:PathError
-E007 X3D-PEX:FontError
-E008 X3D-PEX:PhigsWksError
-E009 X3D-PEX:PickMeasureError
-E010 X3D-PEX:PipelineContextError
-E011 X3D-PEX:erError
-E012 X3D-PEX:SearchContextError
-E013 X3D-PEX:StructureError
-E014 X3D-PEX:OutputCommandError
R000 XC-APPGROUP:QueryVersion
R001 XC-APPGROUP:Create
R002 XC-APPGROUP:Destroy
@@ -890,39 +740,6 @@ E003 XFree86-VidModeExtension:ModeUnsuitable
E004 XFree86-VidModeExtension:ExtensionDisabled
E005 XFree86-VidModeExtension:ClientNotLocal
E006 XFree86-VidModeExtension:ZoomLocked
-R001 XIE:QueryImageExtension
-R002 XIE:QueryTechniques
-R003 XIE:CreateColorList
-R004 XIE:DestroyColorList
-R005 XIE:PurgeColorList
-R006 XIE:QueryColorList
-R007 XIE:CreateLUT
-R008 XIE:DestroyLUT
-R009 XIE:CreatePhotomap
-R010 XIE:DestroyPhotomap
-R011 XIE:QueryPhotomap
-R012 XIE:CreateROI
-R013 XIE:DestroyROI
-R014 XIE:CreatePhotospace
-R015 XIE:DestroyPhotospace
-R016 XIE:ExecuteImmediate
-R017 XIE:CreatePhotoflo
-R018 XIE:DestroyPhotoflo
-R019 XIE:ExecutePhotoflo
-R020 XIE:ModifyPhotoflo
-R021 XIE:RedefinePhotoflo
-R022 XIE:PutClientData
-R023 XIE:GetClientData
-R024 XIE:QueryPhotoflo
-R025 XIE:Await
-R026 XIE:Abort
-E000 XIE:ColorListError
-E001 XIE:LUTError
-E002 XIE:PhotofloError
-E003 XIE:PhotomapError
-E004 XIE:PhotospaceError
-E005 XIE:ROIError
-E006 XIE:FloError
R000 XINERAMA:QueryVersion
R001 XINERAMA:GetState
R002 XINERAMA:GetScreenCount
diff --git a/xserver/dix/resource.c b/xserver/dix/resource.c
index 26debdb00..964f0b306 100644
--- a/xserver/dix/resource.c
+++ b/xserver/dix/resource.c
@@ -144,10 +144,7 @@ Equipment Corporation.
#include "gcstruct.h"
#ifdef XSERVER_DTRACE
-#include <sys/types.h>
-typedef const char *string;
-
-#include "Xserver-dtrace.h"
+#include "probes.h"
#define TypeNameString(t) LookupResourceName(t)
#endif
diff --git a/xserver/exa/exa_render.c b/xserver/exa/exa_render.c
index e3e552697..fc3ddea79 100644
--- a/xserver/exa/exa_render.c
+++ b/xserver/exa/exa_render.c
@@ -636,7 +636,7 @@ exaTryDriverComposite(CARD8 op,
RegionRec region;
BoxPtr pbox;
int nbox;
- int src_off_x, src_off_y, mask_off_x, mask_off_y, dst_off_x, dst_off_y;
+ int src_off_x, src_off_y, mask_off_x = 0, mask_off_y = 0, dst_off_x, dst_off_y;
PixmapPtr pSrcPix = NULL, pMaskPix = NULL, pDstPix;
ExaPixmapPrivPtr pSrcExaPix = NULL, pMaskExaPix = NULL, pDstExaPix;
diff --git a/xserver/fb/fb.h b/xserver/fb/fb.h
index ab110f327..c687aa7a0 100644
--- a/xserver/fb/fb.h
+++ b/xserver/fb/fb.h
@@ -472,13 +472,8 @@ typedef struct {
#define fbGetWindowPixmap(pWin) ((PixmapPtr)\
dixLookupPrivate(&((WindowPtr)(pWin))->devPrivates, fbGetWinPrivateKey(pWin)))
-#ifdef ROOTLESS
#define __fbPixDrawableX(pPix) ((pPix)->drawable.x)
#define __fbPixDrawableY(pPix) ((pPix)->drawable.y)
-#else
-#define __fbPixDrawableX(pPix) 0
-#define __fbPixDrawableY(pPix) 0
-#endif
#ifdef COMPOSITE
#define __fbPixOffXWin(pPix) (__fbPixDrawableX(pPix) - (pPix)->screen_x)
diff --git a/xserver/fb/fbpict.c b/xserver/fb/fbpict.c
index c8378ad90..5f6c88ec8 100644
--- a/xserver/fb/fbpict.c
+++ b/xserver/fb/fbpict.c
@@ -345,6 +345,11 @@ static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
int *xoff, int *yoff,
Bool is_alpha_map);
+static void image_destroy(pixman_image_t *image, void *data)
+{
+ fbFinishAccess((DrawablePtr)data);
+}
+
static void
set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
int *xoff, int *yoff, Bool is_alpha_map)
@@ -429,6 +434,10 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
break;
}
+ if (pict->pDrawable)
+ pixman_image_set_destroy_function(image, &image_destroy,
+ pict->pDrawable);
+
pixman_image_set_filter(image, filter,
(pixman_fixed_t *) pict->filter_params,
pict->filter_nparams);
@@ -481,8 +490,8 @@ image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
void
free_pixman_pict(PicturePtr pict, pixman_image_t * image)
{
- if (image && pixman_image_unref(image) && pict->pDrawable)
- fbFinishAccess(pict->pDrawable);
+ if (image)
+ pixman_image_unref(image);
}
Bool
diff --git a/xserver/glamor/glamor.c b/xserver/glamor/glamor.c
index a8cc810d1..6c2ff28d9 100644
--- a/xserver/glamor/glamor.c
+++ b/xserver/glamor/glamor.c
@@ -207,7 +207,6 @@ glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
if (fbo == NULL) {
fbDestroyPixmap(pixmap);
- free(pixmap_priv);
return fbCreatePixmap(screen, w, h, depth, usage);
}
@@ -379,6 +378,20 @@ glamor_init(ScreenPtr screen, unsigned int flags)
goto fail;
}
+ glamor_priv->saved_procs.close_screen = screen->CloseScreen;
+ screen->CloseScreen = glamor_close_screen;
+
+ /* If we are using egl screen, call egl screen init to
+ * register correct close screen function. */
+ if (flags & GLAMOR_USE_EGL_SCREEN) {
+ glamor_egl_screen_init(screen, &glamor_priv->ctx);
+ } else {
+ if (!glamor_glx_screen_init(&glamor_priv->ctx))
+ goto fail;
+ }
+
+ glamor_make_current(glamor_priv);
+
if (epoxy_is_desktop_gl())
glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP;
else
@@ -463,18 +476,6 @@ glamor_init(ScreenPtr screen, unsigned int flags)
glamor_set_debug_level(&glamor_debug_level);
- glamor_priv->saved_procs.close_screen = screen->CloseScreen;
- screen->CloseScreen = glamor_close_screen;
-
- /* If we are using egl screen, call egl screen init to
- * register correct close screen function. */
- if (flags & GLAMOR_USE_EGL_SCREEN) {
- glamor_egl_screen_init(screen, &glamor_priv->ctx);
- } else {
- if (!glamor_glx_screen_init(&glamor_priv->ctx))
- goto fail;
- }
-
glamor_priv->saved_procs.create_screen_resources =
screen->CreateScreenResources;
screen->CreateScreenResources = glamor_create_screen_resources;
diff --git a/xserver/glamor/glamor_font.c b/xserver/glamor/glamor_font.c
index cc0fecf7a..6b3a16abc 100644
--- a/xserver/glamor/glamor_font.c
+++ b/xserver/glamor/glamor_font.c
@@ -45,6 +45,7 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
unsigned char c[2];
CharInfoPtr glyph;
unsigned long count;
+ char *bits;
if (glamor_priv->glsl_version < 130)
return NULL;
@@ -62,8 +63,6 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
if (glamor_font->realized)
return glamor_font;
- glamor_font->realized = TRUE;
-
/* Figure out how many glyphs are in the font */
num_cols = font->info.lastCol - font->info.firstCol + 1;
num_rows = font->info.lastRow - font->info.firstRow + 1;
@@ -81,6 +80,10 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
overall_width = glyph_width_bytes * num_cols;
overall_height = glyph_height * num_rows;
+ bits = malloc(overall_width * overall_height);
+ if (!bits)
+ return NULL;
+
/* Check whether the font has a default character */
c[0] = font->info.lastRow + 1;
c[1] = font->info.lastCol + 1;
@@ -100,12 +103,6 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- /* Allocate storage */
- glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, overall_width, overall_height,
- 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, NULL);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-
/* Paint all of the glyphs */
for (row = 0; row < num_rows; row++) {
for (col = 0; col < num_cols; col++) {
@@ -114,13 +111,29 @@ glamor_font_get(ScreenPtr screen, FontPtr font)
(*font->get_glyphs)(font, 1, c, TwoD16Bit, &count, &glyph);
- if (count)
- glTexSubImage2D(GL_TEXTURE_2D, 0, col * glyph_width_bytes, row * glyph_height,
- GLYPHWIDTHBYTES(glyph), GLYPHHEIGHTPIXELS(glyph),
- GL_RED_INTEGER, GL_UNSIGNED_BYTE, glyph->bits);
+ if (count) {
+ char *dst = bits + row * glyph_height * overall_width +
+ col * glyph_width_bytes;
+ char *src = glyph->bits;
+ unsigned y;
+
+ for (y = 0; y < GLYPHHEIGHTPIXELS(glyph); y++) {
+ memcpy(dst, src, GLYPHWIDTHBYTES(glyph));
+ dst += overall_width;
+ src += GLYPHWIDTHBYTESPADDED(glyph);
+ }
+ }
}
}
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_R8UI, overall_width, overall_height,
+ 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, bits);
+
+ free(bits);
+
+ glamor_font->realized = TRUE;
+
return glamor_font;
}
diff --git a/xserver/glamor/glamor_image.c b/xserver/glamor/glamor_image.c
index b38b41212..90fda4079 100644
--- a/xserver/glamor/glamor_image.c
+++ b/xserver/glamor/glamor_image.c
@@ -88,7 +88,7 @@ static void
glamor_put_image_bail(DrawablePtr drawable, GCPtr gc, int depth, int x, int y,
int w, int h, int leftPad, int format, char *bits)
{
- if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RW))
+ if (glamor_prepare_access_box(drawable, GLAMOR_ACCESS_RW, x, y, w, h))
fbPutImage(drawable, gc, depth, x, y, w, h, leftPad, format, bits);
glamor_finish_access(drawable);
}
@@ -150,7 +150,7 @@ static void
glamor_get_image_bail(DrawablePtr drawable, int x, int y, int w, int h,
unsigned int format, unsigned long plane_mask, char *d)
{
- if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RO))
+ if (glamor_prepare_access_box(drawable, GLAMOR_ACCESS_RO, x, y, w, h))
fbGetImage(drawable, x, y, w, h, format, plane_mask, d);
glamor_finish_access(drawable);
}
diff --git a/xserver/glamor/glamor_prepare.c b/xserver/glamor/glamor_prepare.c
index fb85d9082..40b7b4feb 100644
--- a/xserver/glamor/glamor_prepare.c
+++ b/xserver/glamor/glamor_prepare.c
@@ -45,6 +45,8 @@ glamor_prep_pixmap_box(PixmapPtr pixmap, glamor_access_t access, BoxPtr box)
if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(priv))
return TRUE;
+ glamor_make_current(glamor_priv);
+
RegionInit(&region, box, 1);
/* See if it's already mapped */
diff --git a/xserver/glx/createcontext.c b/xserver/glx/createcontext.c
index cbeddec26..d06bc1f7f 100644
--- a/xserver/glx/createcontext.c
+++ b/xserver/glx/createcontext.c
@@ -87,6 +87,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
int minor_version = 0;
uint32_t flags = 0;
uint32_t render_type = GLX_RGBA_TYPE;
+#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
+ uint32_t flush = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
+#endif
__GLXcontext *ctx = NULL;
__GLXcontext *shareCtx = NULL;
__GLXscreen *glxScreen;
@@ -194,6 +197,15 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
break;
+#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
+ case GLX_CONTEXT_RELEASE_BEHAVIOR_ARB:
+ flush = attribs[2 * i + 1];
+ if (flush != GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB
+ && flush != GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB)
+ return BadValue;
+ break;
+#endif
+
default:
return BadValue;
}
@@ -333,6 +345,9 @@ __glXDisp_CreateContextAttribsARB(__GLXclientState * cl, GLbyte * pc)
ctx->drawPriv = NULL;
ctx->readPriv = NULL;
ctx->resetNotificationStrategy = reset;
+#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
+ ctx->releaseBehavior = flush;
+#endif
/* Add the new context to the various global tables of GLX contexts.
*/
diff --git a/xserver/glx/extension_string.c b/xserver/glx/extension_string.c
index 4bef96f0b..e881d2109 100644
--- a/xserver/glx/extension_string.c
+++ b/xserver/glx/extension_string.c
@@ -72,6 +72,7 @@ struct extension_info {
static const struct extension_info known_glx_extensions[] = {
/* GLX_ARB_get_proc_address is implemented on the client. */
/* *INDENT-OFF* */
+ { GLX(ARB_context_flush_control), VER(0,0), N, },
{ GLX(ARB_create_context), VER(0,0), N, },
{ GLX(ARB_create_context_profile), VER(0,0), N, },
{ GLX(ARB_create_context_robustness), VER(0,0), N, },
diff --git a/xserver/glx/extension_string.h b/xserver/glx/extension_string.h
index e7d393297..bac7b0624 100644
--- a/xserver/glx/extension_string.h
+++ b/xserver/glx/extension_string.h
@@ -36,7 +36,8 @@
enum {
/* GLX_ARB_get_proc_address is implemented on the client. */
- ARB_create_context_bit = 0,
+ ARB_context_flush_control_bit = 0,
+ ARB_create_context_bit,
ARB_create_context_profile_bit,
ARB_create_context_robustness_bit,
ARB_fbconfig_float_bit,
diff --git a/xserver/glx/glxcmds.c b/xserver/glx/glxcmds.c
index f5f2babb8..0416dac09 100644
--- a/xserver/glx/glxcmds.c
+++ b/xserver/glx/glxcmds.c
@@ -334,6 +334,19 @@ DoCreateContext(__GLXclientState * cl, GLXContextID gcId,
*/
glxc->resetNotificationStrategy = GLX_NO_RESET_NOTIFICATION_ARB;
+#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
+ /* The GLX_ARB_context_flush_control spec says:
+ *
+ * "The default value [for GLX_CONTEXT_RELEASE_BEHAVIOR] is
+ * CONTEXT_RELEASE_BEHAVIOR_FLUSH, and may in some cases be changed
+ * using platform-specific context creation extensions."
+ *
+ * Without using glXCreateContextAttribsARB, there is no way to specify a
+ * non-default release behavior.
+ */
+ glxc->releaseBehavior = GLX_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB;
+#endif
+
/* Add the new context to the various global tables of GLX contexts.
*/
if (!__glXAddContext(glxc)) {
@@ -626,7 +639,12 @@ DoMakeCurrent(__GLXclientState * cl,
/*
** Flush the previous context if needed.
*/
- if (prevglxc->hasUnflushedCommands) {
+ Bool need_flush = GL_TRUE;
+#ifdef GLX_CONTEXT_RELEASE_BEHAVIOR_ARB
+ if (prevglxc->releaseBehavior == GLX_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB)
+ need_flush = GL_FALSE;
+#endif
+ if (prevglxc->hasUnflushedCommands && need_flush) {
if (__glXForceCurrent(cl, tag, (int *) &error)) {
glFlush();
prevglxc->hasUnflushedCommands = GL_FALSE;
@@ -2164,7 +2182,7 @@ __glXDisp_RenderLarge(__GLXclientState * cl, GLbyte * pc)
__GLXrenderSizeData entry;
int extra = 0;
int left = (req->length << 2) - sz_xGLXRenderLargeReq;
- size_t cmdlen;
+ int cmdlen;
int err;
/*
diff --git a/xserver/glx/glxcontext.h b/xserver/glx/glxcontext.h
index 677898a67..0733281d7 100644
--- a/xserver/glx/glxcontext.h
+++ b/xserver/glx/glxcontext.h
@@ -108,6 +108,11 @@ struct __GLXcontext {
*/
GLenum resetNotificationStrategy;
+ /**
+ * Context release behavior
+ */
+ GLenum releaseBehavior;
+
/*
** Buffers for feedback and selection.
*/
diff --git a/xserver/glx/glxdri2.c b/xserver/glx/glxdri2.c
index bcd57a4a3..6fb3d9278 100644
--- a/xserver/glx/glxdri2.c
+++ b/xserver/glx/glxdri2.c
@@ -921,6 +921,13 @@ initializeExtensions(__GLXDRIscreen * screen)
"AIGLX: enabled GLX_ARB_create_context_robustness\n");
}
+#ifdef __DRI2_FLUSH_CONTROL
+ if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_ARB_context_flush_control\n");
+ }
+#endif
+
/* Ignore unknown extensions */
}
}
diff --git a/xserver/glx/glxdriswrast.c b/xserver/glx/glxdriswrast.c
index 5d9aa0437..e8e53bfdb 100644
--- a/xserver/glx/glxdriswrast.c
+++ b/xserver/glx/glxdriswrast.c
@@ -71,6 +71,8 @@ struct __GLXDRIscreen {
const __DRIcopySubBufferExtension *copySubBuffer;
const __DRItexBufferExtension *texBuffer;
const __DRIconfig **driConfigs;
+
+ unsigned char glx_enable_bits[__GLX_EXT_BYTES];
};
struct __GLXDRIcontext {
@@ -394,13 +396,29 @@ initializeExtensions(__GLXDRIscreen * screen)
const __DRIextension **extensions;
int i;
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_MESA_copy_sub_buffer");
+ LogMessage(X_INFO, "AIGLX: enabled GLX_MESA_copy_sub_buffer\n");
+
+ if (screen->swrast->base.version >= 3) {
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_ARB_create_context");
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_ARB_create_context_profile");
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_EXT_create_context_es2_profile");
+ }
+
+ /* these are harmless to enable unconditionally */
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_framebuffer_sRGB");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_fbconfig_float");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_SGI_make_current_read");
+
extensions = screen->core->getExtensions(screen->driScreen);
for (i = 0; extensions[i]; i++) {
if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
screen->copySubBuffer =
(const __DRIcopySubBufferExtension *) extensions[i];
- /* GLX_MESA_copy_sub_buffer is always enabled. */
}
if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) {
@@ -408,7 +426,13 @@ initializeExtensions(__GLXDRIscreen * screen)
/* GLX_EXT_texture_from_pixmap is always enabled. */
}
- /* Ignore unknown extensions */
+#ifdef __DRI2_FLUSH_CONTROL
+ if (strcmp(extensions[i]->name, __DRI2_FLUSH_CONTROL) == 0) {
+ __glXEnableExtension(screen->glx_enable_bits,
+ "GLX_ARB_context_flush_control\n");
+ }
+#endif
+
}
}
@@ -420,6 +444,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
{
const char *driverName = "swrast";
__GLXDRIscreen *screen;
+ size_t buffer_size;
screen = calloc(1, sizeof *screen);
if (screen == NULL)
@@ -431,6 +456,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
screen->base.swapInterval = NULL;
screen->base.pScreen = pScreen;
+ __glXInitExtensionEnableBits(screen->glx_enable_bits);
+
screen->driver = glxProbeDriver(driverName,
(void **) &screen->core,
__DRI_CORE, 1,
@@ -459,6 +486,19 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
__glXScreenInit(&screen->base, pScreen);
+ /* The first call simply determines the length of the extension string.
+ * This allows us to allocate some memory to hold the extension string,
+ * but it requires that we call __glXGetExtensionString a second time.
+ */
+ buffer_size = __glXGetExtensionString(screen->glx_enable_bits, NULL);
+ if (buffer_size > 0) {
+ free(screen->base.GLXextensions);
+
+ screen->base.GLXextensions = xnfalloc(buffer_size);
+ (void) __glXGetExtensionString(screen->glx_enable_bits,
+ screen->base.GLXextensions);
+ }
+
screen->base.GLXmajor = 1;
screen->base.GLXminor = 4;
diff --git a/xserver/hw/dmx/config/dmxparse.h b/xserver/hw/dmx/config/dmxparse.h
index 7d31b6309..cc2f0eb71 100644
--- a/xserver/hw/dmx/config/dmxparse.h
+++ b/xserver/hw/dmx/config/dmxparse.h
@@ -38,6 +38,7 @@
#define _DMXPARSE_H_
#include <stdio.h> /* For FILE */
+#include <X11/Xfuncproto.h> /* For _X_ATTRIBUTE_PRINTF */
/** Stores tokens not stored in other structures (e.g., keywords and ;) */
typedef struct _DMXConfigToken {
@@ -203,7 +204,7 @@ extern int yylex(void);
extern int yydebug;
extern void yyerror(const char *message);
-extern void dmxConfigLog(const char *format, ...);
+extern void dmxConfigLog(const char *format, ...) _X_ATTRIBUTE_PRINTF(1,0);
extern void *dmxConfigAlloc(unsigned long bytes);
extern void *dmxConfigRealloc(void *orig,
unsigned long orig_bytes, unsigned long bytes);
diff --git a/xserver/hw/dmx/config/dmxprint.c b/xserver/hw/dmx/config/dmxprint.c
index 9dec52b5c..c80e830e4 100644
--- a/xserver/hw/dmx/config/dmxprint.c
+++ b/xserver/hw/dmx/config/dmxprint.c
@@ -130,7 +130,7 @@ dmxConfigPopState(void)
dmxConfigNewline();
}
-static void
+static void _X_ATTRIBUTE_PRINTF(4, 5)
dmxConfigOutput(int addSpace, int doNewline, const char *comment,
const char *format, ...)
{
@@ -261,32 +261,20 @@ dmxConfigPrintString(DMXConfigStringPtr p, int quote)
static int
dmxConfigPrintPair(DMXConfigPairPtr p, int addSpace)
{
- const char *format = NULL;
-
if (!p)
return 0;
- switch (p->token) {
- case T_ORIGIN:
- format = "@%dx%d";
- break;
- case T_DIMENSION:
- format = "%dx%d";
- break;
- case T_OFFSET:
- format = "%c%d%c%d";
- break;
- }
if (p->token == T_OFFSET) {
if (!p->comment && !p->x && !p->y && p->xsign >= 0 && p->ysign >= 0)
return 0;
- dmxConfigOutput(addSpace, 0, p->comment, format,
+ dmxConfigOutput(addSpace, 0, p->comment, "%c%d%c%d",
p->xsign < 0 ? '-' : '+', p->x,
p->ysign < 0 ? '-' : '+', p->y);
}
else {
if (!p->comment && !p->x && !p->y)
return 0;
- dmxConfigOutput(addSpace, 0, p->comment, format, p->x, p->y);
+ dmxConfigOutput(addSpace, 0, p->comment, "%s%dx%d",
+ (p->token == T_ORIGIN) ? "@" : "", p->x, p->y);
}
return 1;
}
diff --git a/xserver/hw/dmx/dmx.c b/xserver/hw/dmx/dmx.c
index 99e970cb9..2988df33a 100644
--- a/xserver/hw/dmx/dmx.c
+++ b/xserver/hw/dmx/dmx.c
@@ -55,6 +55,7 @@
#include "extinit.h"
#include "opaque.h"
+#include "dmx.h"
#include "dmxextension.h"
#include <X11/extensions/dmxproto.h>
#include <X11/extensions/dmx.h>
diff --git a/xserver/hw/dmx/dmxcb.c b/xserver/hw/dmx/dmxcb.c
index 86015f395..cca5702ee 100644
--- a/xserver/hw/dmx/dmxcb.c
+++ b/xserver/hw/dmx/dmxcb.c
@@ -47,9 +47,6 @@ extern int connBlockScreenStart;
#ifdef PANORAMIX
#include "panoramiXsrv.h"
-extern int PanoramiXPixWidth;
-extern int PanoramiXPixHeight;
-extern int PanoramiXNumScreens;
#endif
int dmxGlobalWidth, dmxGlobalHeight;
diff --git a/xserver/hw/dmx/dmxfont.h b/xserver/hw/dmx/dmxfont.h
index 8575ca953..66c663377 100644
--- a/xserver/hw/dmx/dmxfont.h
+++ b/xserver/hw/dmx/dmxfont.h
@@ -54,6 +54,4 @@ extern Bool dmxUnrealizeFont(ScreenPtr pScreen, FontPtr pFont);
extern Bool dmxBELoadFont(ScreenPtr pScreen, FontPtr pFont);
extern Bool dmxBEFreeFont(ScreenPtr pScreen, FontPtr pFont);
-extern int dmxFontPrivateIndex;
-
#endif /* DMXFONT_H */
diff --git a/xserver/hw/dmx/dmxgc.c b/xserver/hw/dmx/dmxgc.c
index 234316797..ec15d27aa 100644
--- a/xserver/hw/dmx/dmxgc.c
+++ b/xserver/hw/dmx/dmxgc.c
@@ -49,7 +49,7 @@
#include "pixmapstr.h"
#include "migc.h"
-static GCFuncs dmxGCFuncs = {
+static const GCFuncs dmxGCFuncs = {
dmxValidateGC,
dmxChangeGC,
dmxCopyGC,
@@ -59,7 +59,7 @@ static GCFuncs dmxGCFuncs = {
dmxCopyClip,
};
-static GCOps dmxGCOps = {
+static const GCOps dmxGCOps = {
dmxFillSpans,
dmxSetSpans,
dmxPutImage,
diff --git a/xserver/hw/dmx/dmxgc.h b/xserver/hw/dmx/dmxgc.h
index c8ecb53a0..c5c6b7732 100644
--- a/xserver/hw/dmx/dmxgc.h
+++ b/xserver/hw/dmx/dmxgc.h
@@ -41,8 +41,8 @@
/** GC private area. */
typedef struct _dmxGCPriv {
- GCOps *ops;
- GCFuncs *funcs;
+ const GCOps *ops;
+ const GCFuncs *funcs;
XlibGC gc;
Bool msc;
} dmxGCPrivRec, *dmxGCPrivPtr;
diff --git a/xserver/hw/dmx/dmxinit.c b/xserver/hw/dmx/dmxinit.c
index fd2ade0ef..025dc8637 100644
--- a/xserver/hw/dmx/dmxinit.c
+++ b/xserver/hw/dmx/dmxinit.c
@@ -164,23 +164,23 @@ dmxErrorHandler(Display * dpy, XErrorEvent * ev)
switch (ev->error_code) {
case BadValue:
dmxLog(dmxWarning, " Value: 0x%x\n",
- ev->resourceid);
+ (unsigned int) ev->resourceid);
break;
case BadAtom:
dmxLog(dmxWarning, " AtomID: 0x%x\n",
- ev->resourceid);
+ (unsigned int) ev->resourceid);
break;
default:
dmxLog(dmxWarning, " ResourceID: 0x%x\n",
- ev->resourceid);
+ (unsigned int) ev->resourceid);
break;
}
/* Provide serial number information */
dmxLog(dmxWarning, " Failed serial number: %d\n",
- ev->serial);
+ (unsigned int) ev->serial);
dmxLog(dmxWarning, " Current serial number: %d\n",
- dpy->request);
+ (unsigned int) dpy->request);
return 0;
}
@@ -634,7 +634,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
if (major > 0 && minor > 0)
year += 2000;
- dmxLog(dmxInfo, "Generation: %d\n", dmxGeneration);
+ dmxLog(dmxInfo, "Generation: %lu\n", dmxGeneration);
dmxLog(dmxInfo, "DMX version: %d.%d.%02d%02d%02d (%s)\n",
major, minor, year, month, day, VENDOR_STRING);
@@ -762,7 +762,6 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
dmxGlxVisualPrivate **configprivs = NULL;
int nconfigs = 0;
int (*oldErrorHandler) (Display *, XErrorEvent *);
- int i;
/* Catch errors if when using an older GLX w/o FBconfigs */
oldErrorHandler = XSetErrorHandler(dmxNOPErrorHandler);
@@ -797,28 +796,29 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char *argv[])
configprivs = malloc(nconfigs * sizeof(dmxGlxVisualPrivate *));
if (configs != NULL && configprivs != NULL) {
+ int j;
/* Initialize our private info for each visual
* (currently only x_visual_depth and x_visual_class)
*/
- for (i = 0; i < nconfigs; i++) {
+ for (j = 0; j < nconfigs; j++) {
- configprivs[i] = (dmxGlxVisualPrivate *)
+ configprivs[j] = (dmxGlxVisualPrivate *)
malloc(sizeof(dmxGlxVisualPrivate));
- configprivs[i]->x_visual_depth = 0;
- configprivs[i]->x_visual_class = 0;
+ configprivs[j]->x_visual_depth = 0;
+ configprivs[j]->x_visual_class = 0;
/* Find the visual depth */
- if (configs[i].vid > 0) {
- int j;
-
- for (j = 0; j < dmxScreen->beNumVisuals; j++) {
- if (dmxScreen->beVisuals[j].visualid ==
- configs[i].vid) {
- configprivs[i]->x_visual_depth =
- dmxScreen->beVisuals[j].depth;
- configprivs[i]->x_visual_class =
- dmxScreen->beVisuals[j].class;
+ if (configs[j].vid > 0) {
+ int k;
+
+ for (k = 0; k < dmxScreen->beNumVisuals; k++) {
+ if (dmxScreen->beVisuals[k].visualid ==
+ configs[j].vid) {
+ configprivs[j]->x_visual_depth =
+ dmxScreen->beVisuals[k].depth;
+ configprivs[j]->x_visual_class =
+ dmxScreen->beVisuals[k].class;
break;
}
}
diff --git a/xserver/hw/dmx/dmxpict.c b/xserver/hw/dmx/dmxpict.c
index 64d0ae150..aaca178b9 100644
--- a/xserver/hw/dmx/dmxpict.c
+++ b/xserver/hw/dmx/dmxpict.c
@@ -57,7 +57,6 @@
#include "mipict.h"
#include "fbpict.h"
-extern int RenderErrBase;
extern int (*ProcRenderVector[RenderNumberRequests]) (ClientPtr);
static int (*dmxSaveRenderVector[RenderNumberRequests]) (ClientPtr);
diff --git a/xserver/hw/dmx/dmxprop.c b/xserver/hw/dmx/dmxprop.c
index 4be2dbd4c..5e306d286 100644
--- a/xserver/hw/dmx/dmxprop.c
+++ b/xserver/hw/dmx/dmxprop.c
@@ -220,7 +220,7 @@ dmxPropertyCheckOtherWindows(DMXScreenInfo * dmxScreen, Atom atom)
if (XGetTextProperty(dpy, win, &tp, atom) && tp.nitems) {
dmxLog(dmxDebug, "On %s/%lu: %s\n",
- dmxScreen->name, win, tp.value);
+ dmxScreen->name, (unsigned long) win, tp.value);
if (!strncmp((char *) tp.value, (char *) id,
strlen((char *) id))) {
int idx;
@@ -360,8 +360,8 @@ dmxPropertyWindow(DMXScreenInfo * dmxScreen)
dmxScreen->next = (other->next ? other->next : other);
other->next = (tmp ? tmp : dmxScreen);
dmxLog(dmxDebug, "%d/%s/%lu and %d/%s/%lu are on the same backend\n",
- dmxScreen->index, dmxScreen->name, dmxScreen->scrnWin,
- other->index, other->name, other->scrnWin);
+ dmxScreen->index, dmxScreen->name, (unsigned long) dmxScreen->scrnWin,
+ other->index, other->name, (unsigned long) other->scrnWin);
}
snprintf(buf, sizeof(buf), ".%d,%lu", dmxScreen->index,
diff --git a/xserver/hw/dmx/dmxscrinit.c b/xserver/hw/dmx/dmxscrinit.c
index 963d3a9de..097418d05 100644
--- a/xserver/hw/dmx/dmxscrinit.c
+++ b/xserver/hw/dmx/dmxscrinit.c
@@ -80,7 +80,6 @@ dmxBEScreenInit(ScreenPtr pScreen)
{
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
XSetWindowAttributes attribs;
- XGCValues gcvals;
unsigned long mask;
int i, j;
diff --git a/xserver/hw/dmx/dmxwindow.c b/xserver/hw/dmx/dmxwindow.c
index c75373534..c157e1099 100644
--- a/xserver/hw/dmx/dmxwindow.c
+++ b/xserver/hw/dmx/dmxwindow.c
@@ -857,13 +857,9 @@ dmxResizeWindow(WindowPtr pWindow, int x, int y,
ScreenPtr pScreen = pWindow->drawable.pScreen;
DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
dmxWinPrivPtr pWinPriv = DMX_GET_WINDOW_PRIV(pWindow);
- dmxWinPrivPtr pSibPriv;
unsigned int m;
XWindowChanges c;
- if (pSib)
- pSibPriv = DMX_GET_WINDOW_PRIV(pSib);
-
DMX_UNWRAP(ResizeWindow, dmxScreen, pScreen);
#if 1
if (pScreen->ResizeWindow)
diff --git a/xserver/hw/dmx/glxProxy/compsize.h b/xserver/hw/dmx/glxProxy/compsize.h
index 360966233..5e759b0a0 100644
--- a/xserver/hw/dmx/glxProxy/compsize.h
+++ b/xserver/hw/dmx/glxProxy/compsize.h
@@ -48,4 +48,11 @@ extern GLint __glTexGeniv_size(GLenum e);
extern GLint __glTexParameterfv_size(GLenum e);
extern GLint __glTexParameteriv_size(GLenum e);
+extern GLint __glCallLists_size(GLsizei n, GLenum type);
+extern GLint __glDrawPixels_size(GLenum format, GLenum type, GLsizei w, GLsizei h);
+extern GLint __glBitmap_size(GLsizei w, GLsizei h);
+extern GLint __glTexImage1D_size(GLenum format, GLenum type, GLsizei w);
+extern GLint __glTexImage2D_size(GLenum format, GLenum type, GLsizei w, GLsizei h);
+extern GLint __glTexImage3D_size(GLenum format, GLenum type, GLsizei w, GLsizei h, GLsizei d);
+
#endif /* !__compsize_h__ */
diff --git a/xserver/hw/dmx/glxProxy/g_disptab.h b/xserver/hw/dmx/glxProxy/g_disptab.h
index 530338798..783f87a54 100644
--- a/xserver/hw/dmx/glxProxy/g_disptab.h
+++ b/xserver/hw/dmx/glxProxy/g_disptab.h
@@ -655,7 +655,6 @@ extern void __glXDispSwap_CopyConvolutionFilter2D(GLbyte *);
extern void __glXDispSwap_SeparableFilter2D(GLbyte *);
extern void __glXDispSwap_TexImage3D(GLbyte *);
extern void __glXDispSwap_TexSubImage3D(GLbyte *);
-extern void __glXDispSwap_DrawArrays(GLbyte *);
extern void __glXDispSwap_PrioritizeTextures(GLbyte *);
extern void __glXDispSwap_CopyTexImage1D(GLbyte *);
extern void __glXDispSwap_CopyTexImage2D(GLbyte *);
@@ -663,6 +662,26 @@ extern void __glXDispSwap_CopyTexSubImage1D(GLbyte *);
extern void __glXDispSwap_CopyTexSubImage2D(GLbyte *);
extern void __glXDispSwap_CopyTexSubImage3D(GLbyte *);
+extern void __glXDispSwap_BindTexture(GLbyte *);
+extern void __glXDispSwap_BlendColor(GLbyte *);
+extern void __glXDispSwap_BlendEquation(GLbyte *);
+extern void __glXDispSwap_ColorTable(GLbyte *);
+extern void __glXDispSwap_ColorTableParameterfv(GLbyte *);
+extern void __glXDispSwap_ColorTableParameteriv(GLbyte *);
+extern void __glXDispSwap_CopyColorTable(GLbyte *);
+extern void __glXDispSwap_ConvolutionParameterf(GLbyte *);
+extern void __glXDispSwap_ConvolutionParameteri(GLbyte *);
+extern void __glXDispSwap_Histogram(GLbyte *);
+extern void __glXDispSwap_Minmax(GLbyte *);
+extern void __glXDispSwap_ResetHistogram(GLbyte *);
+extern void __glXDispSwap_ResetMinmax(GLbyte *);
+
+extern int __glXSwapCreateContextWithConfigSGIX(__GLXclientState *, GLbyte *);
+extern int __glXSwapBindSwapBarrierSGIX(__GLXclientState *, GLbyte *);
+extern int __glXSwapJoinSwapGroupSGIX(__GLXclientState *, GLbyte *);
+extern int __glXSwapQueryMaxSwapBarriersSGIX(__GLXclientState *, GLbyte *);
+extern int __glXSwapMakeCurrentReadSGI(__GLXclientState *, GLbyte *);
+
#define __GLX_MIN_GLXCMD_OPCODE 1
#define __GLX_MAX_GLXCMD_OPCODE 20
#define __GLX_MIN_RENDER_OPCODE 1
diff --git a/xserver/hw/dmx/glxProxy/glxcmds.c b/xserver/hw/dmx/glxProxy/glxcmds.c
index fb4d5acce..4c500c93d 100644
--- a/xserver/hw/dmx/glxProxy/glxcmds.c
+++ b/xserver/hw/dmx/glxProxy/glxcmds.c
@@ -61,7 +61,6 @@
extern __GLXFBConfig **__glXFBConfigs;
extern int __glXNumFBConfigs;
-extern int glxIsExtensionSupported(char *ext);
extern int __glXGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
#define BE_TO_CLIENT_ERROR(x) \
@@ -3394,11 +3393,11 @@ __glXCreatePbuffer(__GLXclientState * cl, GLbyte * pc)
/* Send attributes */
if (attr != NULL) {
- CARD32 *pc = (CARD32 *) (be_req + 1);
+ CARD32 *pca = (CARD32 *) (be_req + 1);
while (numAttribs-- > 0) {
- *pc++ = *attr++; /* token */
- *pc++ = *attr++; /* value */
+ *pca++ = *attr++; /* token */
+ *pca++ = *attr++; /* value */
}
}
diff --git a/xserver/hw/dmx/glxProxy/glxcmds.h b/xserver/hw/dmx/glxProxy/glxcmds.h
index b0745927e..689e33485 100644
--- a/xserver/hw/dmx/glxProxy/glxcmds.h
+++ b/xserver/hw/dmx/glxProxy/glxcmds.h
@@ -33,5 +33,11 @@ extern int __glXCreateContextWithConfigSGIX(__GLXclientState * cl, GLbyte * pc);
extern int __glXJoinSwapGroupSGIX(__GLXclientState * cl, GLbyte * pc);
extern int __glXMakeCurrentReadSGI(__GLXclientState * cl, GLbyte * pc);
extern int __glXQueryMaxSwapBarriersSGIX(__GLXclientState * cl, GLbyte * pc);
+extern int __glXDoSwapBuffers(__GLXclientState * cl, XID drawId,
+ GLXContextTag tag);
+
+extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
+extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
+ int s);
#endif /* !__GLX_cmds_h__ */
diff --git a/xserver/hw/dmx/glxProxy/glxcmdsswap.c b/xserver/hw/dmx/glxProxy/glxcmdsswap.c
index ab3e7edc1..5b1722d57 100644
--- a/xserver/hw/dmx/glxProxy/glxcmdsswap.c
+++ b/xserver/hw/dmx/glxProxy/glxcmdsswap.c
@@ -39,8 +39,6 @@
#include "glxext.h"
#include "glxvendor.h"
-extern int glxIsExtensionSupported(char *ext);
-
int __glXSwapGetFBConfigsSGIX(__GLXclientState * cl, GLbyte * pc);
/************************************************************************/
@@ -440,7 +438,7 @@ __glXSwapUseXFont(__GLXclientState * cl, GLbyte * pc)
int
__glXSwapQueryExtensionsString(__GLXclientState * cl, GLbyte * pc)
{
- xGLXQueryExtensionsStringReq *req = NULL;
+ xGLXQueryExtensionsStringReq *req = (xGLXQueryExtensionsStringReq *) pc;
__GLX_DECLARE_SWAP_VARIABLES;
diff --git a/xserver/hw/dmx/glxProxy/glxext.h b/xserver/hw/dmx/glxProxy/glxext.h
index 47cec15cf..b96ebc1f4 100644
--- a/xserver/hw/dmx/glxProxy/glxext.h
+++ b/xserver/hw/dmx/glxProxy/glxext.h
@@ -53,6 +53,7 @@ extern void __glXFlushContextCache(void);
extern void __glXFreeGLXWindow(__glXWindow * pGlxWindow);
extern void __glXFreeGLXPixmap(__GLXpixmap * pGlxPixmap);
+extern void __glXFreeGLXPbuffer(__glXPbuffer * pGlxPbuffer);
extern void __glXNoSuchRenderOpcode(GLbyte *);
extern int __glXNoSuchSingleOpcode(__GLXclientState *, GLbyte *);
diff --git a/xserver/hw/dmx/glxProxy/glxscreens.c b/xserver/hw/dmx/glxProxy/glxscreens.c
index 138afedf2..15bb1e862 100644
--- a/xserver/hw/dmx/glxProxy/glxscreens.c
+++ b/xserver/hw/dmx/glxProxy/glxscreens.c
@@ -65,8 +65,6 @@ static void
CalcServerVersionAndExtensions(void)
{
int s;
- xGLXQueryVersionReq *req;
- xGLXQueryVersionReply reply;
char **be_extensions;
char *ext;
char *denied_extensions;
@@ -80,6 +78,8 @@ CalcServerVersionAndExtensions(void)
for (s = 0; s < __glXNumActiveScreens; s++) {
DMXScreenInfo *dmxScreen = &dmxScreens[s];
Display *dpy = dmxScreen->beDisplay;
+ xGLXQueryVersionReq *req;
+ xGLXQueryVersionReply reply;
/* Send the glXQueryVersion request */
LockDisplay(dpy);
@@ -335,7 +335,7 @@ __glXGetServerString(unsigned int name)
}
int
-glxIsExtensionSupported(char *ext)
+glxIsExtensionSupported(const char *ext)
{
return (strstr(ExtensionsString, ext) != NULL);
}
diff --git a/xserver/hw/dmx/glxProxy/glxscreens.h b/xserver/hw/dmx/glxProxy/glxscreens.h
index a9fe2a9db..bb7477bc7 100644
--- a/xserver/hw/dmx/glxProxy/glxscreens.h
+++ b/xserver/hw/dmx/glxProxy/glxscreens.h
@@ -50,4 +50,6 @@ extern void __glXScreenReset(void);
extern char *__glXGetServerString(unsigned int name);
+extern int glxIsExtensionSupported(const char *ext);
+
#endif /* !__GLX_screens_h__ */
diff --git a/xserver/hw/dmx/glxProxy/glxserver.h b/xserver/hw/dmx/glxProxy/glxserver.h
index 754ad30a0..7aa5ad2f2 100644
--- a/xserver/hw/dmx/glxProxy/glxserver.h
+++ b/xserver/hw/dmx/glxProxy/glxserver.h
@@ -149,9 +149,7 @@ extern __GLXclientState *__glXClients[];
typedef void (*__GLXdispatchRenderProcPtr) (GLbyte *);
typedef int (*__GLXdispatchSingleProcPtr) (__GLXclientState *, GLbyte *);
typedef int (*__GLXdispatchVendorPrivProcPtr) (__GLXclientState *, GLbyte *);
-extern __GLXdispatchSingleProcPtr __glXSingleTable[];
extern __GLXdispatchVendorPrivProcPtr __glXVendorPrivTable_EXT[];
-extern __GLXdispatchSingleProcPtr __glXSwapSingleTable[];
extern __GLXdispatchVendorPrivProcPtr __glXSwapVendorPrivTable_EXT[];
extern __GLXdispatchRenderProcPtr __glXSwapRenderTable[];
@@ -193,9 +191,6 @@ extern RESTYPE __glXPbufferRes;
extern char *__glXcombine_strings(const char *, const char *);
-extern void __glXDisp_DrawArrays(GLbyte *);
-extern void __glXDispSwap_DrawArrays(GLbyte *);
-
/*
** Routines for sending swapped replies.
*/
@@ -287,9 +282,6 @@ extern int __glXConvolutionParameterfvSize(GLenum pname);
extern int __glXColorTableParameterfvSize(GLenum pname);
extern int __glXColorTableParameterivSize(GLenum pname);
-extern void __glXFreeGLXWindow(__glXWindow * pGlxWindow);
-extern void __glXFreeGLXPbuffer(__glXPbuffer * pGlxPbuffer);
-
extern int __glXVersionMajor;
extern int __glXVersionMinor;
diff --git a/xserver/hw/dmx/glxProxy/glxsingle.c b/xserver/hw/dmx/glxProxy/glxsingle.c
index 034497315..79d426bbf 100644
--- a/xserver/hw/dmx/glxProxy/glxsingle.c
+++ b/xserver/hw/dmx/glxProxy/glxsingle.c
@@ -45,6 +45,8 @@
/* #include "g_disptab_EXT.h" */
#include "unpack.h"
#include "glxutil.h"
+#include "glxcmds.h"
+#include "glxsingle.h"
#include "GL/glxproto.h"
@@ -81,10 +83,6 @@
#define X_GLXSingle 0 /* needed by GetReqExtra */
-extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
-extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
- int s);
-
static int swap_vec_element_size = 0;
static void
diff --git a/xserver/hw/dmx/glxProxy/glxsingle.h b/xserver/hw/dmx/glxProxy/glxsingle.h
index 32a9d4921..6126177fa 100644
--- a/xserver/hw/dmx/glxProxy/glxsingle.h
+++ b/xserver/hw/dmx/glxProxy/glxsingle.h
@@ -47,8 +47,4 @@ extern int __glXForwardAllWithReplySwapsv(__GLXclientState * cl, GLbyte * pc);
extern int __glXForwardAllWithReplySwapiv(__GLXclientState * cl, GLbyte * pc);
extern int __glXForwardAllWithReplySwapdv(__GLXclientState * cl, GLbyte * pc);
-extern int __glXDisp_ReadPixels(__GLXclientState * cl, GLbyte * pc);
-extern int __glXDispSwap_GetTexImage(__GLXclientState * cl, GLbyte * pc);
-extern int __glXDispSwap_GetColorTable(__GLXclientState * cl, GLbyte * pc);
-
#endif
diff --git a/xserver/hw/dmx/glxProxy/glxswap.c b/xserver/hw/dmx/glxProxy/glxswap.c
index 5f565010d..bc18e5518 100644
--- a/xserver/hw/dmx/glxProxy/glxswap.c
+++ b/xserver/hw/dmx/glxProxy/glxswap.c
@@ -39,9 +39,7 @@
#include "dmxwindow.h"
#include "glxserver.h"
#include "glxswap.h"
-
-extern int __glXDoSwapBuffers(__GLXclientState * cl, XID drawId,
- GLXContextTag tag);
+#include "glxcmds.h"
typedef struct _SwapGroup *SwapGroupPtr;
diff --git a/xserver/hw/dmx/glxProxy/glxvendor.c b/xserver/hw/dmx/glxProxy/glxvendor.c
index fc8aff0cc..52d70eb70 100644
--- a/xserver/hw/dmx/glxProxy/glxvendor.c
+++ b/xserver/hw/dmx/glxProxy/glxvendor.c
@@ -44,6 +44,8 @@
/* #include "g_disptab_EXT.h" */
#include "unpack.h"
#include "glxutil.h"
+#include "glxcmds.h"
+#include "glxvendor.h"
#include "GL/glxproto.h"
@@ -78,10 +80,6 @@
dpy->request++
#endif
-extern Display *GetBackEndDisplay(__GLXclientState * cl, int s);
-extern int GetCurrentBackEndTag(__GLXclientState * cl, GLXContextTag tag,
- int s);
-
static int swap_vec_element_size = 0;
static void
diff --git a/xserver/hw/dmx/input/dmxinputinit.c b/xserver/hw/dmx/input/dmxinputinit.c
index abb6a8551..56a39df8c 100644
--- a/xserver/hw/dmx/input/dmxinputinit.c
+++ b/xserver/hw/dmx/input/dmxinputinit.c
@@ -874,17 +874,17 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
{
XExtensionVersion *ext;
XDeviceInfo *devices;
- Display *display;
+ Display *dsp;
int num;
int i, j;
XextErrorHandler handler;
- if (!(display = XOpenDisplay(dmxInput->name)))
+ if (!(dsp = XOpenDisplay(dmxInput->name)))
return;
/* Print out information about the XInput Extension. */
handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
- ext = XGetExtensionVersion(display, INAME);
+ ext = XGetExtensionVersion(dsp, INAME);
XSetExtensionErrorHandler(handler);
if (!ext || ext == (XExtensionVersion *) NoSuchExtension) {
@@ -894,7 +894,7 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
dmxLogInput(dmxInput, "Locating devices on %s (%s version %d.%d)\n",
dmxInput->name, INAME,
ext->major_version, ext->minor_version);
- devices = XListInputDevices(display, &num);
+ devices = XListInputDevices(dsp, &num);
XFree(ext);
ext = NULL;
@@ -956,7 +956,7 @@ dmxInputScanForExtensions(DMXInputInfo * dmxInput, int doXI)
}
XFreeDeviceList(devices);
}
- XCloseDisplay(display);
+ XCloseDisplay(dsp);
}
/** Re-initialize all the devices described in \a dmxInput. Called from
diff --git a/xserver/hw/kdrive/ephyr/hostx.c b/xserver/hw/kdrive/ephyr/hostx.c
index 71c1691c4..e19f57b2c 100644
--- a/xserver/hw/kdrive/ephyr/hostx.c
+++ b/xserver/hw/kdrive/ephyr/hostx.c
@@ -1039,11 +1039,13 @@ hostx_paint_rect(KdScreenInfo *screen,
sx, sy, dx, dy, width, height, FALSE);
}
else {
- /* This is slow and could be done better */
- xcb_image_t *img = xcb_image_native (HostX.conn, scrpriv->ximg, 1);
- xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, 0, 0, 0);
- if (scrpriv->ximg != img)
+ xcb_image_t *subimg = xcb_image_subimage(scrpriv->ximg, sx, sy,
+ width, height, 0, 0, 0);
+ xcb_image_t *img = xcb_image_native(HostX.conn, subimg, 1);
+ xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, dx, dy, 0);
+ if (subimg != img)
xcb_image_destroy(img);
+ xcb_image_destroy(subimg);
}
xcb_aux_sync(HostX.conn);
diff --git a/xserver/hw/xfree86/dri2/dri2ext.c b/xserver/hw/xfree86/dri2/dri2ext.c
index 221ec530b..520b7cfb8 100644
--- a/xserver/hw/xfree86/dri2/dri2ext.c
+++ b/xserver/hw/xfree86/dri2/dri2ext.c
@@ -269,9 +269,11 @@ ProcDRI2GetBuffers(ClientPtr client)
int status, width, height, count;
unsigned int *attachments;
- REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * 4);
- if (stuff->count > (INT_MAX / 4))
+ REQUEST_AT_LEAST_SIZE(xDRI2GetBuffersReq);
+ /* stuff->count is a count of CARD32 attachments that follows */
+ if (stuff->count > (INT_MAX / sizeof(CARD32)))
return BadLength;
+ REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * sizeof(CARD32));
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
&pDrawable, &status))
@@ -297,7 +299,13 @@ ProcDRI2GetBuffersWithFormat(ClientPtr client)
int status, width, height, count;
unsigned int *attachments;
- REQUEST_FIXED_SIZE(xDRI2GetBuffersReq, stuff->count * (2 * 4));
+ REQUEST_AT_LEAST_SIZE(xDRI2GetBuffersReq);
+ /* stuff->count is a count of pairs of CARD32s (attachments & formats)
+ that follows */
+ if (stuff->count > (INT_MAX / (2 * sizeof(CARD32))))
+ return BadLength;
+ REQUEST_FIXED_SIZE(xDRI2GetBuffersReq,
+ stuff->count * (2 * sizeof(CARD32)));
if (!validDrawable(client, stuff->drawable, DixReadAccess | DixWriteAccess,
&pDrawable, &status))
return status;
diff --git a/xserver/hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h b/xserver/hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h
index 571e8633f..bcf15a186 100644
--- a/xserver/hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h
+++ b/xserver/hw/xfree86/dri2/pci_ids/radeonsi_pci_ids.h
@@ -63,6 +63,7 @@ CHIPSET(0x6608, OLAND_6608, OLAND)
CHIPSET(0x6610, OLAND_6610, OLAND)
CHIPSET(0x6611, OLAND_6611, OLAND)
CHIPSET(0x6613, OLAND_6613, OLAND)
+CHIPSET(0x6617, OLAND_6617, OLAND)
CHIPSET(0x6620, OLAND_6620, OLAND)
CHIPSET(0x6621, OLAND_6621, OLAND)
CHIPSET(0x6623, OLAND_6623, OLAND)
@@ -85,6 +86,7 @@ CHIPSET(0x6651, BONAIRE_6651, BONAIRE)
CHIPSET(0x6658, BONAIRE_6658, BONAIRE)
CHIPSET(0x665C, BONAIRE_665C, BONAIRE)
CHIPSET(0x665D, BONAIRE_665D, BONAIRE)
+CHIPSET(0x665F, BONAIRE_665F, BONAIRE)
CHIPSET(0x9830, KABINI_9830, KABINI)
CHIPSET(0x9831, KABINI_9831, KABINI)
@@ -155,3 +157,29 @@ CHIPSET(0x67B8, HAWAII_67B8, HAWAII)
CHIPSET(0x67B9, HAWAII_67B9, HAWAII)
CHIPSET(0x67BA, HAWAII_67BA, HAWAII)
CHIPSET(0x67BE, HAWAII_67BE, HAWAII)
+
+CHIPSET(0x6900, ICELAND_, ICELAND)
+CHIPSET(0x6901, ICELAND_, ICELAND)
+CHIPSET(0x6902, ICELAND_, ICELAND)
+CHIPSET(0x6903, ICELAND_, ICELAND)
+CHIPSET(0x6907, ICELAND_, ICELAND)
+
+CHIPSET(0x6920, TONGA_, TONGA)
+CHIPSET(0x6921, TONGA_, TONGA)
+CHIPSET(0x6928, TONGA_, TONGA)
+CHIPSET(0x6929, TONGA_, TONGA)
+CHIPSET(0x692B, TONGA_, TONGA)
+CHIPSET(0x692F, TONGA_, TONGA)
+CHIPSET(0x6930, TONGA_, TONGA)
+CHIPSET(0x6938, TONGA_, TONGA)
+CHIPSET(0x6939, TONGA_, TONGA)
+
+CHIPSET(0x9870, CARRIZO_, CARRIZO)
+CHIPSET(0x9874, CARRIZO_, CARRIZO)
+CHIPSET(0x9875, CARRIZO_, CARRIZO)
+CHIPSET(0x9876, CARRIZO_, CARRIZO)
+CHIPSET(0x9877, CARRIZO_, CARRIZO)
+
+CHIPSET(0x7300, FIJI_, FIJI)
+
+CHIPSET(0x98E4, STONEY_, STONEY)
diff --git a/xserver/hw/xfree86/modes/xf86EdidModes.c b/xserver/hw/xfree86/modes/xf86EdidModes.c
index 6fb0f9b92..f24294ee3 100644
--- a/xserver/hw/xfree86/modes/xf86EdidModes.c
+++ b/xserver/hw/xfree86/modes/xf86EdidModes.c
@@ -713,7 +713,7 @@ static const struct {
{1600, 1200, 75, 0},
{1600, 1200, 85, 0},
{1792, 1344, 60, 0},
- {1792, 1344, 85, 0},
+ {1792, 1344, 75, 0},
{1856, 1392, 60, 0},
{1856, 1392, 75, 0},
{1920, 1200, 60, 1},
diff --git a/xserver/hw/xfree86/modes/xf86RandR12.c b/xserver/hw/xfree86/modes/xf86RandR12.c
index 3e4d7011b..81b679dda 100644
--- a/xserver/hw/xfree86/modes/xf86RandR12.c
+++ b/xserver/hw/xfree86/modes/xf86RandR12.c
@@ -683,11 +683,9 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
Bool ret = FALSE;
int c;
- if (xf86RandR12Key) {
- if (randrp->virtualX == -1 || randrp->virtualY == -1) {
- randrp->virtualX = pScrn->virtualX;
- randrp->virtualY = pScrn->virtualY;
- }
+ if (randrp->virtualX == -1 || randrp->virtualY == -1) {
+ randrp->virtualX = pScrn->virtualX;
+ randrp->virtualY = pScrn->virtualY;
}
if (pRoot && pScrn->vtSema)
(*pScrn->EnableDisableFBAccess) (pScrn, FALSE);
@@ -730,7 +728,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
if (pRoot && pScrn->vtSema)
(*pScrn->EnableDisableFBAccess) (pScrn, TRUE);
#if RANDR_12_INTERFACE
- if (xf86RandR12Key && pScreen->root && ret)
+ if (pScreen->root && ret)
RRScreenSizeNotify(pScreen);
#endif
return ret;
@@ -827,9 +825,6 @@ xf86RandR12CreateScreenResources(ScreenPtr pScreen)
xf86ReconfigureLayout();
}
- if (xf86RandR12Key == NULL)
- return TRUE;
-
if (randrp->virtualX == -1 || randrp->virtualY == -1) {
randrp->virtualX = pScrn->virtualX;
randrp->virtualY = pScrn->virtualY;
diff --git a/xserver/hw/xfree86/os-support/linux/lnx_init.c b/xserver/hw/xfree86/os-support/linux/lnx_init.c
index 94853070d..4acaf33d1 100644
--- a/xserver/hw/xfree86/os-support/linux/lnx_init.c
+++ b/xserver/hw/xfree86/os-support/linux/lnx_init.c
@@ -62,18 +62,24 @@ drain_console(int fd, void *closure)
}
}
-static void
+static int
switch_to(int vt, const char *from)
{
int ret;
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt));
- if (ret < 0)
- FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
+ if (ret < 0) {
+ xf86Msg(X_WARNING, "%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
+ return 0;
+ }
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt));
- if (ret < 0)
- FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ if (ret < 0) {
+ xf86Msg(X_WARNING, "%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ return 0;
+ }
+
+ return 1;
}
#pragma GCC diagnostic push
@@ -208,7 +214,8 @@ xf86OpenConsole(void)
/*
* now get the VT. This _must_ succeed, or else fail completely.
*/
- switch_to(xf86Info.vtno, "xf86OpenConsole");
+ if (!switch_to(xf86Info.vtno, "xf86OpenConsole"))
+ FatalError("xf86OpenConsole: Switching VT failed\n");
SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT));
if (ret < 0)
@@ -269,7 +276,8 @@ xf86OpenConsole(void)
else { /* serverGeneration != 1 */
if (!xf86Info.ShareVTs && xf86Info.autoVTSwitch) {
/* now get the VT */
- switch_to(xf86Info.vtno, "xf86OpenConsole");
+ if (!switch_to(xf86Info.vtno, "xf86OpenConsole"))
+ FatalError("xf86OpenConsole: Switching VT failed\n");
}
}
}
diff --git a/xserver/hw/xfree86/os-support/shared/sigio.c b/xserver/hw/xfree86/os-support/shared/sigio.c
index 45949f7a3..c746d02fc 100644
--- a/xserver/hw/xfree86/os-support/shared/sigio.c
+++ b/xserver/hw/xfree86/os-support/shared/sigio.c
@@ -178,7 +178,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
}
sigemptyset(&sa.sa_mask);
sigaddset(&sa.sa_mask, SIGIO);
- sa.sa_flags = 0;
+ sa.sa_flags = SA_RESTART;
sa.sa_handler = xf86SIGIO;
sigaction(SIGIO, &sa, &osa);
xf86SigIOFuncs[i].fd = fd;
diff --git a/xserver/hw/xfree86/os-support/xf86_OSlib.h b/xserver/hw/xfree86/os-support/xf86_OSlib.h
index 6190fe6a0..95c3a7365 100644
--- a/xserver/hw/xfree86/os-support/xf86_OSlib.h
+++ b/xserver/hw/xfree86/os-support/xf86_OSlib.h
@@ -183,11 +183,7 @@ extern _X_HIDDEN char xf86SolarisFbDev[PATH_MAX];
#include <sys/types.h>
#include <assert.h>
-#ifdef __linux__
-#include <termio.h>
-#else /* __GLIBC__ */
#include <termios.h>
-#endif
#ifdef __sparc__
#include <sys/param.h>
#endif
diff --git a/xserver/hw/xfree86/x86emu/debug.c b/xserver/hw/xfree86/x86emu/debug.c
index cbea9947f..72a06ffb8 100644
--- a/xserver/hw/xfree86/x86emu/debug.c
+++ b/xserver/hw/xfree86/x86emu/debug.c
@@ -233,9 +233,7 @@ X86EMU_dump_memory(u16 seg, u16 off, u32 amt)
u32 start = off & 0xfffffff0;
u32 end = (off + 16) & 0xfffffff0;
u32 i;
- u32 current;
- current = start;
while (end <= off + amt) {
printk("%04x:%04x ", seg, start);
for (i = start; i < off; i++)
@@ -261,8 +259,6 @@ x86emu_single_step(void)
static int breakpoint;
static int noDecode = 1;
- char *p;
-
if (DEBUG_BREAK()) {
if (M.x86.saved_ip != breakpoint) {
return;
@@ -279,7 +275,7 @@ x86emu_single_step(void)
offset = M.x86.saved_ip;
while (!done) {
printk("-");
- p = fgets(s, 1023, stdin);
+ (void)fgets(s, 1023, stdin);
cmd = parse_line(s, ps, &ntok);
switch (cmd) {
case 'u':
diff --git a/xserver/hw/xquartz/GL/indirect.c b/xserver/hw/xquartz/GL/indirect.c
index 19b7d86e7..4e6ab3d13 100644
--- a/xserver/hw/xquartz/GL/indirect.c
+++ b/xserver/hw/xquartz/GL/indirect.c
@@ -52,6 +52,7 @@
#include "visualConfigs.h"
#include "dri.h"
+#include "extension_string.h"
#include "darwin.h"
#define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \
@@ -111,6 +112,10 @@ typedef struct __GLXAquaDrawable __GLXAquaDrawable;
*/
struct __GLXAquaScreen {
__GLXscreen base;
+
+ /* Supported GLX extensions */
+ unsigned char glx_enable_bits[__GLX_EXT_BYTES];
+
int index;
int num_vis;
};
@@ -541,13 +546,33 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
screen->base.GLXmajor = 1;
screen->base.GLXminor = 4;
- screen->base.GLXextensions = strdup("GLX_SGIX_fbconfig "
- "GLX_SGIS_multisample "
- "GLX_ARB_multisample "
- "GLX_EXT_visual_info "
- "GLX_EXT_import_context ");
- /*We may be able to add more GLXextensions at a later time. */
+ memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
+
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
+
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIS_multisample");
+ __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_multisample");
+
+ //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
+ //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
+
+ // Generate the GLX extensions string (overrides that set by __glXScreenInit())
+ {
+ unsigned int buffer_size =
+ __glXGetExtensionString(screen->glx_enable_bits, NULL);
+ if (buffer_size > 0) {
+ free(screen->base.GLXextensions);
+
+ screen->base.GLXextensions = xnfalloc(buffer_size);
+ __glXGetExtensionString(screen->glx_enable_bits,
+ screen->base.GLXextensions);
+ }
+ }
return &screen->base;
}
diff --git a/xserver/hw/xquartz/X11Application.m b/xserver/hw/xquartz/X11Application.m
index 2efbd658b..d2c5d3083 100644
--- a/xserver/hw/xquartz/X11Application.m
+++ b/xserver/hw/xquartz/X11Application.m
@@ -1069,12 +1069,12 @@ X11ApplicationCanEnterRandR(void)
if (!XQuartzIsRootless)
QuartzShowFullscreen(FALSE);
- switch (NSRunAlertPanel(title, msg,
+ switch (NSRunAlertPanel(title, @"%@",
NSLocalizedString(@"Allow",
@""),
NSLocalizedString(@"Cancel",
@""),
- NSLocalizedString(@"Always Allow", @""))) {
+ NSLocalizedString(@"Always Allow", @""), msg)) {
case NSAlertOtherReturn:
[X11App prefs_set_boolean:@PREFS_NO_RANDR_ALERT value:YES];
[X11App prefs_synchronize];
@@ -1122,10 +1122,10 @@ X11ApplicationFatalError(const char *f, va_list args)
*/
dispatch_sync(dispatch_get_main_queue(), ^{
if (NSAlertDefaultReturn ==
- NSRunAlertPanel (title, msg,
+ NSRunAlertPanel (title, @"%@",
NSLocalizedString (@"Quit", @""),
- NSLocalizedString (
- @"Report...", @""), nil)) {
+ NSLocalizedString (@"Report...", @""),
+ nil, msg)) {
exit (EXIT_FAILURE);
}
});
@@ -1160,9 +1160,8 @@ check_xinitrc(void)
@"Startup xinitrc dialog");
if (NSAlertDefaultReturn ==
- NSRunAlertPanel(nil, msg, NSLocalizedString(@"Yes", @""),
- NSLocalizedString(@"No",
- @""), nil)) {
+ NSRunAlertPanel(nil, @"%@", NSLocalizedString(@"Yes", @""),
+ NSLocalizedString(@"No", @""), nil, msg)) {
char buf2[1024];
int i = -1;
@@ -1239,8 +1238,16 @@ X11ApplicationMain(int argc, char **argv, char **envp)
QuartzModeBundleInit();
/* Calculate the height of the menubar so we can avoid it. */
- aquaMenuBarHeight = NSHeight([[NSScreen mainScreen] frame]) -
- NSMaxY([[NSScreen mainScreen] visibleFrame]);
+ aquaMenuBarHeight = [[NSApp mainMenu] menuBarHeight];
+#if ! __LP64__
+ if (!aquaMenuBarHeight) {
+ aquaMenuBarHeight = [NSMenuView menuBarHeight];
+ }
+#endif
+ if (!aquaMenuBarHeight) {
+ NSScreen* primaryScreen = [[NSScreen screens] objectAtIndex:0];
+ aquaMenuBarHeight = NSHeight([primaryScreen frame]) - NSMaxY([primaryScreen visibleFrame]);
+ }
#ifdef HAVE_LIBDISPATCH
eventTranslationQueue = dispatch_queue_create(
diff --git a/xserver/hw/xquartz/X11Controller.m b/xserver/hw/xquartz/X11Controller.m
index 022e83258..c75493c42 100644
--- a/xserver/hw/xquartz/X11Controller.m
+++ b/xserver/hw/xquartz/X11Controller.m
@@ -364,7 +364,7 @@ extern char *bundle_id_prefix;
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
- if (asl_log_descriptor) {
+ if (&asl_log_descriptor) {
char *asl_sender;
aslmsg amsg = asl_new(ASL_TYPE_MSG);
assert(amsg);
@@ -414,7 +414,7 @@ extern char *bundle_id_prefix;
case 0: /* child2 */
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
- if (asl_log_descriptor) {
+ if (&asl_log_descriptor) {
/* Replace our stdout/stderr */
dup2(stdout_pipe[1], STDOUT_FILENO);
dup2(stderr_pipe[1], STDERR_FILENO);
@@ -443,7 +443,7 @@ extern char *bundle_id_prefix;
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
- if (asl_log_descriptor) {
+ if (&asl_log_descriptor) {
/* Close the write ends of the pipe */
close(stdout_pipe[1]);
close(stderr_pipe[1]);
@@ -929,14 +929,13 @@ extern char *bundle_id_prefix;
* and then run the alert on a timer? It seems to work here, so..
*/
- return (NSRunAlertPanel(title, msg, NSLocalizedString(@"Quit", @""),
- NSLocalizedString(@"Cancel", @""), nil)
- == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
+ NSInteger result = NSRunAlertPanel(title, @"%@", NSLocalizedString(@"Quit", @""),
+ NSLocalizedString(@"Cancel", @""), nil, msg);
+ return (result == NSAlertDefaultReturn) ? NSTerminateNow : NSTerminateCancel;
}
- (void) applicationWillTerminate:(NSNotification *)aNotification _X_NORETURN
{
- int remain;
[X11App prefs_synchronize];
/* shutdown the X server, it will exit () for us. */
diff --git a/xserver/hw/xquartz/bundle/Info.plist.cpp b/xserver/hw/xquartz/bundle/Info.plist.cpp
index a0d9050ac..06e33f871 100644
--- a/xserver/hw/xquartz/bundle/Info.plist.cpp
+++ b/xserver/hw/xquartz/bundle/Info.plist.cpp
@@ -35,6 +35,19 @@
<string>sparkle.pem</string>
<key>SUFeedURL</key>
<string>http://xquartz.macosforge.org/downloads/sparkle/release.xml</string>
+ <key>NSAppTransportSecurity</key>
+ <dict>
+ <key>NSExceptionDomains</key>
+ <dict>
+ <key>macosforge.org</key>
+ <dict>
+ <key>NSIncludesSubdomains</key>
+ <true/>
+ <key>NSExceptionAllowsInsecureHTTPLoads</key>
+ <true/>
+ </dict>
+ </dict>
+ </dict>
#endif
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
diff --git a/xserver/hw/xquartz/bundle/Makefile.am b/xserver/hw/xquartz/bundle/Makefile.am
index 87392b423..074075209 100644
--- a/xserver/hw/xquartz/bundle/Makefile.am
+++ b/xserver/hw/xquartz/bundle/Makefile.am
@@ -30,153 +30,123 @@ EXTRA_DIST = \
Info.plist.cpp \
PkgInfo \
$(resource_DATA) \
- Resources/ar.lproj/InfoPlist.strings \
Resources/ar.lproj/Localizable.strings \
Resources/ar.lproj/locversion.plist \
Resources/ar.lproj/main.nib/designable.nib \
Resources/ar.lproj/main.nib/keyedobjects.nib \
- Resources/ca.lproj/InfoPlist.strings \
Resources/ca.lproj/Localizable.strings \
Resources/ca.lproj/locversion.plist \
Resources/ca.lproj/main.nib/designable.nib \
Resources/ca.lproj/main.nib/keyedobjects.nib \
- Resources/cs.lproj/InfoPlist.strings \
Resources/cs.lproj/Localizable.strings \
Resources/cs.lproj/locversion.plist \
Resources/cs.lproj/main.nib/designable.nib \
Resources/cs.lproj/main.nib/keyedobjects.nib \
- Resources/da.lproj/InfoPlist.strings \
Resources/da.lproj/Localizable.strings \
Resources/da.lproj/locversion.plist \
Resources/da.lproj/main.nib/designable.nib \
Resources/da.lproj/main.nib/keyedobjects.nib \
- Resources/Dutch.lproj/InfoPlist.strings \
Resources/Dutch.lproj/Localizable.strings \
Resources/Dutch.lproj/locversion.plist \
Resources/Dutch.lproj/main.nib/designable.nib \
Resources/Dutch.lproj/main.nib/keyedobjects.nib \
- Resources/el.lproj/InfoPlist.strings \
Resources/el.lproj/Localizable.strings \
Resources/el.lproj/locversion.plist \
Resources/el.lproj/main.nib/designable.nib \
Resources/el.lproj/main.nib/keyedobjects.nib \
- Resources/English.lproj/InfoPlist.strings \
Resources/English.lproj/Localizable.strings \
Resources/English.lproj/locversion.plist \
Resources/English.lproj/main.nib/designable.nib \
Resources/English.lproj/main.nib/keyedobjects.nib \
- Resources/fi.lproj/InfoPlist.strings \
Resources/fi.lproj/Localizable.strings \
Resources/fi.lproj/locversion.plist \
Resources/fi.lproj/main.nib/designable.nib \
Resources/fi.lproj/main.nib/keyedobjects.nib \
- Resources/French.lproj/InfoPlist.strings \
Resources/French.lproj/Localizable.strings \
Resources/French.lproj/locversion.plist \
Resources/French.lproj/main.nib/designable.nib \
Resources/French.lproj/main.nib/keyedobjects.nib \
- Resources/German.lproj/InfoPlist.strings \
Resources/German.lproj/Localizable.strings \
Resources/German.lproj/locversion.plist \
Resources/German.lproj/main.nib/designable.nib \
Resources/German.lproj/main.nib/keyedobjects.nib \
- Resources/he.lproj/InfoPlist.strings \
Resources/he.lproj/Localizable.strings \
Resources/he.lproj/locversion.plist \
Resources/he.lproj/main.nib/designable.nib \
Resources/he.lproj/main.nib/keyedobjects.nib \
- Resources/hr.lproj/InfoPlist.strings \
Resources/hr.lproj/Localizable.strings \
Resources/hr.lproj/locversion.plist \
Resources/hr.lproj/main.nib/designable.nib \
Resources/hr.lproj/main.nib/keyedobjects.nib \
- Resources/hu.lproj/InfoPlist.strings \
Resources/hu.lproj/Localizable.strings \
Resources/hu.lproj/locversion.plist \
Resources/hu.lproj/main.nib/designable.nib \
Resources/hu.lproj/main.nib/keyedobjects.nib \
- Resources/Italian.lproj/InfoPlist.strings \
Resources/Italian.lproj/Localizable.strings \
Resources/Italian.lproj/locversion.plist \
Resources/Italian.lproj/main.nib/designable.nib \
Resources/Italian.lproj/main.nib/keyedobjects.nib \
- Resources/Japanese.lproj/InfoPlist.strings \
Resources/Japanese.lproj/Localizable.strings \
Resources/Japanese.lproj/locversion.plist \
Resources/Japanese.lproj/main.nib/designable.nib \
Resources/Japanese.lproj/main.nib/keyedobjects.nib \
- Resources/ko.lproj/InfoPlist.strings \
Resources/ko.lproj/Localizable.strings \
Resources/ko.lproj/locversion.plist \
Resources/ko.lproj/main.nib/designable.nib \
Resources/ko.lproj/main.nib/keyedobjects.nib \
- Resources/no.lproj/InfoPlist.strings \
Resources/no.lproj/Localizable.strings \
Resources/no.lproj/locversion.plist \
Resources/no.lproj/main.nib/designable.nib \
Resources/no.lproj/main.nib/keyedobjects.nib \
- Resources/pl.lproj/InfoPlist.strings \
Resources/pl.lproj/Localizable.strings \
Resources/pl.lproj/locversion.plist \
Resources/pl.lproj/main.nib/designable.nib \
Resources/pl.lproj/main.nib/keyedobjects.nib \
- Resources/pt.lproj/InfoPlist.strings \
Resources/pt.lproj/Localizable.strings \
Resources/pt.lproj/locversion.plist \
Resources/pt.lproj/main.nib/designable.nib \
Resources/pt.lproj/main.nib/keyedobjects.nib \
- Resources/pt_PT.lproj/InfoPlist.strings \
Resources/pt_PT.lproj/Localizable.strings \
Resources/pt_PT.lproj/locversion.plist \
Resources/pt_PT.lproj/main.nib/designable.nib \
Resources/pt_PT.lproj/main.nib/keyedobjects.nib \
- Resources/ro.lproj/InfoPlist.strings \
Resources/ro.lproj/Localizable.strings \
Resources/ro.lproj/locversion.plist \
Resources/ro.lproj/main.nib/designable.nib \
Resources/ro.lproj/main.nib/keyedobjects.nib \
- Resources/ru.lproj/InfoPlist.strings \
Resources/ru.lproj/Localizable.strings \
Resources/ru.lproj/locversion.plist \
Resources/ru.lproj/main.nib/designable.nib \
Resources/ru.lproj/main.nib/keyedobjects.nib \
- Resources/sk.lproj/InfoPlist.strings \
Resources/sk.lproj/Localizable.strings \
Resources/sk.lproj/locversion.plist \
Resources/sk.lproj/main.nib/designable.nib \
Resources/sk.lproj/main.nib/keyedobjects.nib \
- Resources/Spanish.lproj/InfoPlist.strings \
Resources/Spanish.lproj/Localizable.strings \
Resources/Spanish.lproj/locversion.plist \
Resources/Spanish.lproj/main.nib/designable.nib \
Resources/Spanish.lproj/main.nib/keyedobjects.nib \
- Resources/sv.lproj/InfoPlist.strings \
Resources/sv.lproj/Localizable.strings \
Resources/sv.lproj/locversion.plist \
Resources/sv.lproj/main.nib/designable.nib \
Resources/sv.lproj/main.nib/keyedobjects.nib \
- Resources/th.lproj/InfoPlist.strings \
Resources/th.lproj/Localizable.strings \
Resources/th.lproj/locversion.plist \
Resources/th.lproj/main.nib/designable.nib \
Resources/th.lproj/main.nib/keyedobjects.nib \
- Resources/tr.lproj/InfoPlist.strings \
Resources/tr.lproj/Localizable.strings \
Resources/tr.lproj/locversion.plist \
Resources/tr.lproj/main.nib/designable.nib \
Resources/tr.lproj/main.nib/keyedobjects.nib \
- Resources/uk.lproj/InfoPlist.strings \
Resources/uk.lproj/Localizable.strings \
Resources/uk.lproj/locversion.plist \
Resources/uk.lproj/main.nib/designable.nib \
Resources/uk.lproj/main.nib/keyedobjects.nib \
Resources/X11.icns \
- Resources/zh_CN.lproj/InfoPlist.strings \
Resources/zh_CN.lproj/Localizable.strings \
Resources/zh_CN.lproj/locversion.plist \
Resources/zh_CN.lproj/main.nib/designable.nib \
Resources/zh_CN.lproj/main.nib/keyedobjects.nib \
- Resources/zh_TW.lproj/InfoPlist.strings \
Resources/zh_TW.lproj/Localizable.strings \
Resources/zh_TW.lproj/locversion.plist \
Resources/zh_TW.lproj/main.nib/designable.nib \
diff --git a/xserver/hw/xquartz/bundle/Makefile.in b/xserver/hw/xquartz/bundle/Makefile.in
index 9914fec7f..9825b84a8 100644
--- a/xserver/hw/xquartz/bundle/Makefile.in
+++ b/xserver/hw/xquartz/bundle/Makefile.in
@@ -498,153 +498,123 @@ EXTRA_DIST = \
Info.plist.cpp \
PkgInfo \
$(resource_DATA) \
- Resources/ar.lproj/InfoPlist.strings \
Resources/ar.lproj/Localizable.strings \
Resources/ar.lproj/locversion.plist \
Resources/ar.lproj/main.nib/designable.nib \
Resources/ar.lproj/main.nib/keyedobjects.nib \
- Resources/ca.lproj/InfoPlist.strings \
Resources/ca.lproj/Localizable.strings \
Resources/ca.lproj/locversion.plist \
Resources/ca.lproj/main.nib/designable.nib \
Resources/ca.lproj/main.nib/keyedobjects.nib \
- Resources/cs.lproj/InfoPlist.strings \
Resources/cs.lproj/Localizable.strings \
Resources/cs.lproj/locversion.plist \
Resources/cs.lproj/main.nib/designable.nib \
Resources/cs.lproj/main.nib/keyedobjects.nib \
- Resources/da.lproj/InfoPlist.strings \
Resources/da.lproj/Localizable.strings \
Resources/da.lproj/locversion.plist \
Resources/da.lproj/main.nib/designable.nib \
Resources/da.lproj/main.nib/keyedobjects.nib \
- Resources/Dutch.lproj/InfoPlist.strings \
Resources/Dutch.lproj/Localizable.strings \
Resources/Dutch.lproj/locversion.plist \
Resources/Dutch.lproj/main.nib/designable.nib \
Resources/Dutch.lproj/main.nib/keyedobjects.nib \
- Resources/el.lproj/InfoPlist.strings \
Resources/el.lproj/Localizable.strings \
Resources/el.lproj/locversion.plist \
Resources/el.lproj/main.nib/designable.nib \
Resources/el.lproj/main.nib/keyedobjects.nib \
- Resources/English.lproj/InfoPlist.strings \
Resources/English.lproj/Localizable.strings \
Resources/English.lproj/locversion.plist \
Resources/English.lproj/main.nib/designable.nib \
Resources/English.lproj/main.nib/keyedobjects.nib \
- Resources/fi.lproj/InfoPlist.strings \
Resources/fi.lproj/Localizable.strings \
Resources/fi.lproj/locversion.plist \
Resources/fi.lproj/main.nib/designable.nib \
Resources/fi.lproj/main.nib/keyedobjects.nib \
- Resources/French.lproj/InfoPlist.strings \
Resources/French.lproj/Localizable.strings \
Resources/French.lproj/locversion.plist \
Resources/French.lproj/main.nib/designable.nib \
Resources/French.lproj/main.nib/keyedobjects.nib \
- Resources/German.lproj/InfoPlist.strings \
Resources/German.lproj/Localizable.strings \
Resources/German.lproj/locversion.plist \
Resources/German.lproj/main.nib/designable.nib \
Resources/German.lproj/main.nib/keyedobjects.nib \
- Resources/he.lproj/InfoPlist.strings \
Resources/he.lproj/Localizable.strings \
Resources/he.lproj/locversion.plist \
Resources/he.lproj/main.nib/designable.nib \
Resources/he.lproj/main.nib/keyedobjects.nib \
- Resources/hr.lproj/InfoPlist.strings \
Resources/hr.lproj/Localizable.strings \
Resources/hr.lproj/locversion.plist \
Resources/hr.lproj/main.nib/designable.nib \
Resources/hr.lproj/main.nib/keyedobjects.nib \
- Resources/hu.lproj/InfoPlist.strings \
Resources/hu.lproj/Localizable.strings \
Resources/hu.lproj/locversion.plist \
Resources/hu.lproj/main.nib/designable.nib \
Resources/hu.lproj/main.nib/keyedobjects.nib \
- Resources/Italian.lproj/InfoPlist.strings \
Resources/Italian.lproj/Localizable.strings \
Resources/Italian.lproj/locversion.plist \
Resources/Italian.lproj/main.nib/designable.nib \
Resources/Italian.lproj/main.nib/keyedobjects.nib \
- Resources/Japanese.lproj/InfoPlist.strings \
Resources/Japanese.lproj/Localizable.strings \
Resources/Japanese.lproj/locversion.plist \
Resources/Japanese.lproj/main.nib/designable.nib \
Resources/Japanese.lproj/main.nib/keyedobjects.nib \
- Resources/ko.lproj/InfoPlist.strings \
Resources/ko.lproj/Localizable.strings \
Resources/ko.lproj/locversion.plist \
Resources/ko.lproj/main.nib/designable.nib \
Resources/ko.lproj/main.nib/keyedobjects.nib \
- Resources/no.lproj/InfoPlist.strings \
Resources/no.lproj/Localizable.strings \
Resources/no.lproj/locversion.plist \
Resources/no.lproj/main.nib/designable.nib \
Resources/no.lproj/main.nib/keyedobjects.nib \
- Resources/pl.lproj/InfoPlist.strings \
Resources/pl.lproj/Localizable.strings \
Resources/pl.lproj/locversion.plist \
Resources/pl.lproj/main.nib/designable.nib \
Resources/pl.lproj/main.nib/keyedobjects.nib \
- Resources/pt.lproj/InfoPlist.strings \
Resources/pt.lproj/Localizable.strings \
Resources/pt.lproj/locversion.plist \
Resources/pt.lproj/main.nib/designable.nib \
Resources/pt.lproj/main.nib/keyedobjects.nib \
- Resources/pt_PT.lproj/InfoPlist.strings \
Resources/pt_PT.lproj/Localizable.strings \
Resources/pt_PT.lproj/locversion.plist \
Resources/pt_PT.lproj/main.nib/designable.nib \
Resources/pt_PT.lproj/main.nib/keyedobjects.nib \
- Resources/ro.lproj/InfoPlist.strings \
Resources/ro.lproj/Localizable.strings \
Resources/ro.lproj/locversion.plist \
Resources/ro.lproj/main.nib/designable.nib \
Resources/ro.lproj/main.nib/keyedobjects.nib \
- Resources/ru.lproj/InfoPlist.strings \
Resources/ru.lproj/Localizable.strings \
Resources/ru.lproj/locversion.plist \
Resources/ru.lproj/main.nib/designable.nib \
Resources/ru.lproj/main.nib/keyedobjects.nib \
- Resources/sk.lproj/InfoPlist.strings \
Resources/sk.lproj/Localizable.strings \
Resources/sk.lproj/locversion.plist \
Resources/sk.lproj/main.nib/designable.nib \
Resources/sk.lproj/main.nib/keyedobjects.nib \
- Resources/Spanish.lproj/InfoPlist.strings \
Resources/Spanish.lproj/Localizable.strings \
Resources/Spanish.lproj/locversion.plist \
Resources/Spanish.lproj/main.nib/designable.nib \
Resources/Spanish.lproj/main.nib/keyedobjects.nib \
- Resources/sv.lproj/InfoPlist.strings \
Resources/sv.lproj/Localizable.strings \
Resources/sv.lproj/locversion.plist \
Resources/sv.lproj/main.nib/designable.nib \
Resources/sv.lproj/main.nib/keyedobjects.nib \
- Resources/th.lproj/InfoPlist.strings \
Resources/th.lproj/Localizable.strings \
Resources/th.lproj/locversion.plist \
Resources/th.lproj/main.nib/designable.nib \
Resources/th.lproj/main.nib/keyedobjects.nib \
- Resources/tr.lproj/InfoPlist.strings \
Resources/tr.lproj/Localizable.strings \
Resources/tr.lproj/locversion.plist \
Resources/tr.lproj/main.nib/designable.nib \
Resources/tr.lproj/main.nib/keyedobjects.nib \
- Resources/uk.lproj/InfoPlist.strings \
Resources/uk.lproj/Localizable.strings \
Resources/uk.lproj/locversion.plist \
Resources/uk.lproj/main.nib/designable.nib \
Resources/uk.lproj/main.nib/keyedobjects.nib \
Resources/X11.icns \
- Resources/zh_CN.lproj/InfoPlist.strings \
Resources/zh_CN.lproj/Localizable.strings \
Resources/zh_CN.lproj/locversion.plist \
Resources/zh_CN.lproj/main.nib/designable.nib \
Resources/zh_CN.lproj/main.nib/keyedobjects.nib \
- Resources/zh_TW.lproj/InfoPlist.strings \
Resources/zh_TW.lproj/Localizable.strings \
Resources/zh_TW.lproj/locversion.plist \
Resources/zh_TW.lproj/main.nib/designable.nib \
diff --git a/xserver/hw/xquartz/bundle/mk_bundke.sh b/xserver/hw/xquartz/bundle/mk_bundke.sh
index 288c6a9de..632e5f76b 100644
--- a/xserver/hw/xquartz/bundle/mk_bundke.sh
+++ b/xserver/hw/xquartz/bundle/mk_bundke.sh
@@ -12,7 +12,7 @@ for lang in ${localities} ; do
mkdir -p ${BUNDLE_ROOT}/Contents/Resources/${lang}.lproj/main.nib
[ -d ${BUNDLE_ROOT}/Contents/Resources/${lang}.lproj/main.nib ] || exit 1
- for f in InfoPlist.strings Localizable.strings main.nib/keyedobjects.nib ; do
+ for f in Localizable.strings main.nib/keyedobjects.nib ; do
install -m 644 ${SRCDIR}/Resources/${lang}.lproj/$f ${BUNDLE_ROOT}/Contents/Resources/${lang}.lproj/${f}
done
done
diff --git a/xserver/hw/xquartz/darwinEvents.c b/xserver/hw/xquartz/darwinEvents.c
index 5a5e4dad2..6964e2009 100644
--- a/xserver/hw/xquartz/darwinEvents.c
+++ b/xserver/hw/xquartz/darwinEvents.c
@@ -178,7 +178,7 @@ static int darwin_x11_modifier_mask_list[] = {
0
};
-static int darwin_all_modifier_mask_additions[] = { NX_SECONDARYFNMASK, };
+static int darwin_all_modifier_mask_additions[] = { NX_SECONDARYFNMASK, 0 };
static void
DarwinUpdateModifiers(int pressed, // KeyPress or KeyRelease
@@ -367,14 +367,12 @@ DarwinEQInit(void)
{
int *p;
- for (p = darwin_x11_modifier_mask_list, darwin_all_modifier_mask = 0; *p;
- p++) {
+ for (p = darwin_x11_modifier_mask_list; *p; p++) {
darwin_x11_modifier_mask |= *p;
}
- for (p = darwin_all_modifier_mask_additions,
- darwin_all_modifier_mask = darwin_x11_modifier_mask;
- *p; p++) {
+ darwin_all_modifier_mask = darwin_x11_modifier_mask;
+ for (p = darwin_all_modifier_mask_additions; *p; p++) {
darwin_all_modifier_mask |= *p;
}
@@ -387,7 +385,6 @@ DarwinEQInit(void)
*/
if (!darwinEvents) {
darwinEvents = InitEventList(GetMaximumEventsNum());
- ;
if (!darwinEvents)
FatalError("Couldn't allocate event buffer\n");
diff --git a/xserver/hw/xquartz/quartzKeyboard.c b/xserver/hw/xquartz/quartzKeyboard.c
index 84e34d916..2fed59306 100644
--- a/xserver/hw/xquartz/quartzKeyboard.c
+++ b/xserver/hw/xquartz/quartzKeyboard.c
@@ -737,6 +737,7 @@ LegalModifier(unsigned int key, DeviceIntPtr pDev)
return 1;
}
+#if !defined(__LP64__) || MAC_OS_X_VERSION_MIN_REQUIRED < 1050
static inline UniChar
macroman2ucs(unsigned char c)
{
@@ -782,6 +783,7 @@ macroman2ucs(unsigned char c)
if (c < 128) return c;
else return table[c - 128];
}
+#endif
static KeySym
make_dead_key(KeySym in)
diff --git a/xserver/hw/xwayland/xwayland-input.c b/xserver/hw/xwayland/xwayland-input.c
index 4639048d9..f4d8fabd4 100644
--- a/xserver/hw/xwayland/xwayland-input.c
+++ b/xserver/hw/xwayland/xwayland-input.c
@@ -565,8 +565,6 @@ create_input_device(struct xwl_screen *xwl_screen, uint32_t id)
void
xwl_seat_destroy(struct xwl_seat *xwl_seat)
{
- RemoveDevice(xwl_seat->pointer, FALSE);
- RemoveDevice(xwl_seat->keyboard, FALSE);
wl_seat_destroy(xwl_seat->seat);
wl_surface_destroy(xwl_seat->cursor);
if (xwl_seat->cursor_frame_cb)
diff --git a/xserver/hw/xwayland/xwayland-output.c b/xserver/hw/xwayland/xwayland-output.c
index 155cbc109..7e5484c7d 100644
--- a/xserver/hw/xwayland/xwayland-output.c
+++ b/xserver/hw/xwayland/xwayland-output.c
@@ -188,8 +188,6 @@ void
xwl_output_destroy(struct xwl_output *xwl_output)
{
wl_output_destroy(xwl_output->output);
- RRCrtcDestroy(xwl_output->randr_crtc);
- RROutputDestroy(xwl_output->randr_output);
free(xwl_output);
}
diff --git a/xserver/include/Makefile.am b/xserver/include/Makefile.am
index 6578038a5..168b00f70 100644
--- a/xserver/include/Makefile.am
+++ b/xserver/include/Makefile.am
@@ -71,6 +71,7 @@ EXTRA_DIST = \
busfault.h dbus-core.h \
dix-config-apple-verbatim.h \
dixfontstubs.h eventconvert.h eventstr.h inpututils.h \
+ probes.h \
protocol-versions.h \
systemd-logind.h \
xsha1.h
diff --git a/xserver/include/Makefile.in b/xserver/include/Makefile.in
index 9419d225e..0ffaccca2 100644
--- a/xserver/include/Makefile.in
+++ b/xserver/include/Makefile.in
@@ -549,6 +549,7 @@ EXTRA_DIST = \
busfault.h dbus-core.h \
dix-config-apple-verbatim.h \
dixfontstubs.h eventconvert.h eventstr.h inpututils.h \
+ probes.h \
protocol-versions.h \
systemd-logind.h \
xsha1.h
diff --git a/xserver/include/probes.h b/xserver/include/probes.h
new file mode 100644
index 000000000..e9cdd3e8e
--- /dev/null
+++ b/xserver/include/probes.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef XORG_PROBES_H
+#define XORG_PROBES_H
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+/* definitions needed to include Dtrace probes in a source file */
+
+#if XSERVER_DTRACE
+#include <sys/types.h>
+typedef const char *string;
+typedef const uint8_t *const_uint8_p;
+typedef const double *const_double_p;
+#include "../dix/Xserver-dtrace.h"
+#endif
+
+#endif /* XORG_PROBES_H */
diff --git a/xserver/man/Xserver.man b/xserver/man/Xserver.man
index 2908e52df..32b364858 100644
--- a/xserver/man/Xserver.man
+++ b/xserver/man/Xserver.man
@@ -238,7 +238,7 @@ turns off auto-repeat.
turns on auto-repeat.
.TP 8
.B -retro
-starts the stipple with the classic stipple and cursor visible. The default
+starts the server with the classic stipple and cursor visible. The default
is to start with a black root window, and to suppress display of the cursor
until the first time an application calls XDefineCursor(). For kdrive
servers, this implies -zap.
@@ -391,7 +391,7 @@ ends.
.B \-class \fIdisplay-class\fP
XDMCP has an additional display qualifier used in resource lookup for
display-specific options. This option sets that value, by default it
-is "MIT-Unspecified" (not a very useful value).
+is "MIT-unspecified" (not a very useful value).
.TP 8
.B \-cookie \fIxdm-auth-bits\fP
When testing XDM-AUTHENTICATION-1, a private key is shared between the
@@ -457,8 +457,8 @@ If no other authorization mechanism is being used,
this list initially consists of the host on which the server is running as
well as any machines listed in the file \fI/etc/X\fBn\fI.hosts\fR, where
\fBn\fP is the display number of the server. Each line of the file should
-contain either an Internet hostname (e.g. expo.lcs.mit.edu) or a DECnet
-hostname in double colon format (e.g. hydra::) or a complete name in the format
+contain either an Internet hostname (e.g. expo.lcs.mit.edu)
+or a complete name in the format
\fIfamily\fP:\fIname\fP as described in the \fIxhost\fP(1) manual page.
There should be no leading or trailing spaces on any lines. For example:
.sp
@@ -466,7 +466,6 @@ There should be no leading or trailing spaces on any lines. For example:
.nf
joesworkstation
corporate.company.com
-star::
inet:bigcpu
local:
.fi
diff --git a/xserver/mi/miarc.c b/xserver/mi/miarc.c
index e8bc87e3e..d26f67486 100644
--- a/xserver/mi/miarc.c
+++ b/xserver/mi/miarc.c
@@ -1712,7 +1712,7 @@ miGetArcPts(SppArcPtr parc, /* points to an arc */
y1 = y2;
}
/* adjust the last point */
- if (abs(parc->angle2) >= 360.0)
+ if (fabs(parc->angle2) >= 360.0)
poly[cpt + i - 1] = poly[0];
else {
poly[cpt + i - 1].x = (miDcos(st + et) * parc->width / 2.0 + xc);
diff --git a/xserver/mi/mieq.c b/xserver/mi/mieq.c
index 8907a6ea1..b7be193fe 100644
--- a/xserver/mi/mieq.c
+++ b/xserver/mi/mieq.c
@@ -599,7 +599,7 @@ mieqProcessInputEvents(void)
ErrorF("[mi] EQ processing has resumed after %lu dropped events.\n",
(unsigned long) miEventQueue.dropped);
ErrorF
- ("[mi] This may be caused my a misbehaving driver monopolizing the server's resources.\n");
+ ("[mi] This may be caused by a misbehaving driver monopolizing the server's resources.\n");
miEventQueue.dropped = 0;
}
diff --git a/xserver/mi/miexpose.c b/xserver/mi/miexpose.c
index fc4dbc071..3e49f15f4 100644
--- a/xserver/mi/miexpose.c
+++ b/xserver/mi/miexpose.c
@@ -478,14 +478,21 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
else {
PixmapPtr pixmap;
- tile_x_off = drawable->x;
- tile_y_off = drawable->y;
+ fill = pWin->border;
+ solid = pWin->borderIsPixel;
/* servers without pixmaps draw their own borders */
if (!pScreen->GetWindowPixmap)
return;
pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
drawable = &pixmap->drawable;
+
+ while (pWin->backgroundState == ParentRelative)
+ pWin = pWin->parent;
+
+ tile_x_off = pWin->drawable.x;
+ tile_y_off = pWin->drawable.y;
+
#ifdef COMPOSITE
draw_x_off = pixmap->screen_x;
draw_y_off = pixmap->screen_y;
@@ -495,8 +502,6 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
draw_x_off = 0;
draw_y_off = 0;
#endif
- fill = pWin->border;
- solid = pWin->borderIsPixel;
}
gcval[0].val = GXcopy;
diff --git a/xserver/mi/miwideline.c b/xserver/mi/miwideline.c
index 452d74fc1..6f0b9bcbd 100644
--- a/xserver/mi/miwideline.c
+++ b/xserver/mi/miwideline.c
@@ -1458,7 +1458,7 @@ miLineArc(DrawablePtr pDraw,
int xorgi = 0, yorgi = 0;
Spans spanRec;
int n;
- PolyEdgeRec edge1, edge2;
+ PolyEdgeRec edge1 = { 0 }, edge2 = { 0 };
int edgey1, edgey2;
Bool edgeleft1, edgeleft2;
diff --git a/xserver/miext/rootless/rootlessCommon.h b/xserver/miext/rootless/rootlessCommon.h
index fd9c941f4..7fdea22b3 100644
--- a/xserver/miext/rootless/rootlessCommon.h
+++ b/xserver/miext/rootless/rootlessCommon.h
@@ -70,8 +70,8 @@ extern DevPrivateKeyRec rootlessWindowOldPixmapPrivateKeyRec;
// RootlessGCRec: private per-gc data
typedef struct {
- GCFuncs *originalFuncs;
- GCOps *originalOps;
+ const GCFuncs *originalFuncs;
+ const GCOps *originalOps;
} RootlessGCRec;
// RootlessScreenRec: per-screen private data
@@ -194,19 +194,19 @@ extern RegionRec rootlessHugeRoot;
#define HUGE_ROOT(pWin) \
do { \
- WindowPtr w = pWin; \
- while (w->parent) \
- w = w->parent; \
- saveRoot = w->winSize; \
- w->winSize = rootlessHugeRoot; \
+ WindowPtr _w = pWin; \
+ while (_w->parent) \
+ _w = _w->parent; \
+ saveRoot = _w->winSize; \
+ _w->winSize = rootlessHugeRoot; \
} while (0)
#define NORMAL_ROOT(pWin) \
do { \
- WindowPtr w = pWin; \
- while (w->parent) \
- w = w->parent; \
- w->winSize = saveRoot; \
+ WindowPtr _w = pWin; \
+ while (_w->parent) \
+ _w = _w->parent; \
+ _w->winSize = saveRoot; \
} while (0)
// Returns TRUE if this window is a top-level window (i.e. child of the root)
diff --git a/xserver/miext/rootless/rootlessGC.c b/xserver/miext/rootless/rootlessGC.c
index 4fba26c8d..235b3ab7c 100644
--- a/xserver/miext/rootless/rootlessGC.c
+++ b/xserver/miext/rootless/rootlessGC.c
@@ -403,7 +403,7 @@ RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
#define GCOP_UNWRAP(pGC) \
RootlessGCRec *gcrec = (RootlessGCRec *) \
dixLookupPrivate(&(pGC)->devPrivates, rootlessGCPrivateKey); \
- GCFuncs *saveFuncs = pGC->funcs; \
+ const GCFuncs *saveFuncs = pGC->funcs; \
(pGC)->funcs = gcrec->originalFuncs; \
(pGC)->ops = gcrec->originalOps;
diff --git a/xserver/miext/rootless/rootlessValTree.c b/xserver/miext/rootless/rootlessValTree.c
index 0f7b76cb6..409e6a092 100644
--- a/xserver/miext/rootless/rootlessValTree.c
+++ b/xserver/miext/rootless/rootlessValTree.c
@@ -487,7 +487,7 @@ RootlessMiValidateTree(WindowPtr pRoot, /* Parent to validate */
if (RegionBroken(&pRoot->clipList) && !RegionBroken(&pRoot->borderClip)) {
// fixme this might not work, but hopefully doesn't happen anyway.
kind = VTBroken;
- RegionEmpty(&pRoot->clipList);
+ RegionNull(&pRoot->clipList);
ErrorF("ValidateTree: BUSTED!\n");
}
diff --git a/xserver/os/WaitFor.c b/xserver/os/WaitFor.c
index 431f1a6b6..993c14e52 100644
--- a/xserver/os/WaitFor.c
+++ b/xserver/os/WaitFor.c
@@ -158,6 +158,7 @@ WaitForSomething(int *pClientsReady)
Bool someReady = FALSE;
FD_ZERO(&clientsReadable);
+ FD_ZERO(&clientsWritable);
if (nready)
SmartScheduleStopTimer();
diff --git a/xserver/os/connection.c b/xserver/os/connection.c
index aaec1939c..52b4d760d 100644
--- a/xserver/os/connection.c
+++ b/xserver/os/connection.c
@@ -113,17 +113,11 @@ SOFTWARE.
#ifdef HAVE_GETPEERUCRED
#include <ucred.h>
#include <zone.h>
-#endif
-
-#ifdef XSERVER_DTRACE
-#include <sys/types.h>
-typedef const char *string;
-
-#ifndef HAVE_GETPEERUCRED
+#else
#define zoneid_t int
#endif
-#include "../dix/Xserver-dtrace.h"
-#endif
+
+#include "probes.h"
static int lastfdesc; /* maximum file descriptor */
diff --git a/xserver/os/utils.c b/xserver/os/utils.c
index df3924a0b..4e3434955 100644
--- a/xserver/os/utils.c
+++ b/xserver/os/utils.c
@@ -1229,26 +1229,57 @@ SmartScheduleTimer(int sig)
SmartScheduleTime += SmartScheduleInterval;
}
-void
-SmartScheduleInit(void)
+static int
+SmartScheduleEnable(void)
{
+ int ret = 0;
#ifdef SMART_SCHEDULE_POSSIBLE
struct sigaction act;
if (SmartScheduleDisable)
- return;
+ return 0;
memset((char *) &act, 0, sizeof(struct sigaction));
/* Set up the timer signal function */
+ act.sa_flags = SA_RESTART;
act.sa_handler = SmartScheduleTimer;
sigemptyset(&act.sa_mask);
sigaddset(&act.sa_mask, SIGALRM);
- if (sigaction(SIGALRM, &act, 0) < 0) {
+ ret = sigaction(SIGALRM, &act, 0);
+#endif
+ return ret;
+}
+
+static int
+SmartSchedulePause(void)
+{
+ int ret = 0;
+#ifdef SMART_SCHEDULE_POSSIBLE
+ struct sigaction act;
+
+ if (SmartScheduleDisable)
+ return 0;
+
+ memset((char *) &act, 0, sizeof(struct sigaction));
+
+ act.sa_handler = SIG_IGN;
+ sigemptyset(&act.sa_mask);
+ ret = sigaction(SIGALRM, &act, 0);
+#endif
+ return ret;
+}
+
+void
+SmartScheduleInit(void)
+{
+ if (SmartScheduleDisable)
+ return;
+
+ if (SmartScheduleEnable() < 0) {
perror("sigaction for smart scheduler");
SmartScheduleDisable = TRUE;
}
-#endif
}
#ifdef SIG_BLOCK
@@ -1423,8 +1454,6 @@ static struct pid {
int pid;
} *pidlist;
-OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */
-
void *
Popen(const char *command, const char *type)
{
@@ -1447,8 +1476,7 @@ Popen(const char *command, const char *type)
}
/* Ignore the smart scheduler while this is going on */
- old_alarm = OsSignal(SIGALRM, SIG_IGN);
- if (old_alarm == SIG_ERR) {
+ if (SmartSchedulePause() < 0) {
close(pdes[0]);
close(pdes[1]);
free(cur);
@@ -1461,7 +1489,7 @@ Popen(const char *command, const char *type)
close(pdes[0]);
close(pdes[1]);
free(cur);
- if (OsSignal(SIGALRM, old_alarm) == SIG_ERR)
+ if (SmartScheduleEnable() < 0)
perror("signal");
return NULL;
case 0: /* child */
@@ -1636,7 +1664,7 @@ Pclose(void *iop)
/* allow EINTR again */
OsReleaseSignals();
- if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) {
+ if (SmartScheduleEnable() < 0) {
perror("signal");
return -1;
}
diff --git a/xserver/os/xdmauth.c b/xserver/os/xdmauth.c
index f11cbb997..482bc67db 100644
--- a/xserver/os/xdmauth.c
+++ b/xserver/os/xdmauth.c
@@ -227,7 +227,7 @@ XdmClientAuthTimeout(long now)
prev = 0;
for (client = xdmClients; client; client = next) {
next = client->next;
- if (abs(now - client->time) > TwentyFiveMinutes) {
+ if (labs(now - client->time) > TwentyFiveMinutes) {
if (prev)
prev->next = next;
else
@@ -299,7 +299,7 @@ XdmAuthorizationValidate(unsigned char *plain, int length,
}
now += clockOffset;
XdmClientAuthTimeout(now);
- if (abs(client->time - now) > TwentyMinutes) {
+ if (labs(client->time - now) > TwentyMinutes) {
free(client);
if (reason)
*reason = "Excessive XDM-AUTHORIZATION-1 time offset";
diff --git a/xserver/os/xdmcp.c b/xserver/os/xdmcp.c
index b265db338..5bdcbe9c9 100644
--- a/xserver/os/xdmcp.c
+++ b/xserver/os/xdmcp.c
@@ -84,8 +84,6 @@ static int req_socklen;
static CARD32 SessionID;
static CARD32 timeOutTime;
static int timeOutRtx;
-static CARD32 defaultKeepaliveDormancy = XDM_DEF_DORMANCY;
-static CARD32 keepaliveDormancy = XDM_DEF_DORMANCY;
static CARD16 DisplayNumber;
static xdmcp_states XDM_INIT_STATE = XDM_OFF;
@@ -199,8 +197,6 @@ static void send_packet(void);
static void timeout(void);
-static void restart(void);
-
static void XdmcpBlockHandler(void *data ,
struct timeval **wt,
void *LastSelectMask);
@@ -634,6 +630,7 @@ XdmcpOpenDisplay(int sock)
if (state != XDM_AWAIT_MANAGE_RESPONSE)
return;
state = XDM_RUN_SESSION;
+ timeOutTime = GetTimeInMillis() + XDM_DEF_DORMANCY * 1000;
sessionSocket = sock;
}
@@ -691,7 +688,6 @@ XdmcpWakeupHandler(void *data, /* unused */
int i, void *pReadmask)
{
fd_set *last_select_mask = (fd_set *) pReadmask;
- fd_set devicesReadable;
if (state == XDM_OFF)
return;
@@ -706,15 +702,6 @@ XdmcpWakeupHandler(void *data, /* unused */
FD_CLR(xdmcpSocket6, last_select_mask);
}
#endif
- XFD_ANDSET(&devicesReadable, last_select_mask, &EnabledDevices);
- if (XFD_ANYSET(&devicesReadable)) {
- if (state == XDM_AWAIT_USER_INPUT)
- restart();
- else if (state == XDM_RUN_SESSION)
- keepaliveDormancy = defaultKeepaliveDormancy;
- }
- if (XFD_ANYSET(&AllClients) && state == XDM_RUN_SESSION)
- timeOutTime = GetTimeInMillis() + keepaliveDormancy * 1000;
}
else if (timeOutTime && (int) (GetTimeInMillis() - timeOutTime) >= 0) {
if (state == XDM_RUN_SESSION) {
@@ -936,14 +923,6 @@ timeout(void)
send_packet();
}
-static void
-restart(void)
-{
- state = XDM_INIT_STATE;
- timeOutRtx = 0;
- send_packet();
-}
-
static int
XdmcpCheckAuthentication(ARRAY8Ptr Name, ARRAY8Ptr Data, int packet_type)
{
@@ -1411,15 +1390,8 @@ recv_alive_msg(unsigned length)
if (XdmcpReadCARD8(&buffer, &SessionRunning) &&
XdmcpReadCARD32(&buffer, &AliveSessionID)) {
if (SessionRunning && AliveSessionID == SessionID) {
- /* backoff dormancy period */
state = XDM_RUN_SESSION;
- if ((GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds) >
- keepaliveDormancy * 1000) {
- keepaliveDormancy <<= 1;
- if (keepaliveDormancy > XDM_MAX_DORMANCY)
- keepaliveDormancy = XDM_MAX_DORMANCY;
- }
- timeOutTime = GetTimeInMillis() + keepaliveDormancy * 1000;
+ timeOutTime = GetTimeInMillis() + XDM_DEF_DORMANCY * 1000;
}
else {
XdmcpDeadSession("Alive response indicates session dead");
@@ -1427,6 +1399,7 @@ recv_alive_msg(unsigned length)
}
}
+_X_NORETURN
static void
XdmcpFatal(const char *type, ARRAY8Ptr status)
{
diff --git a/xserver/present/present.c b/xserver/present/present.c
index a6346015e..beb4ff03a 100644
--- a/xserver/present/present.c
+++ b/xserver/present/present.c
@@ -710,9 +710,9 @@ present_pixmap(WindowPtr window,
present_notify_ptr notifies,
int num_notifies)
{
- uint64_t ust;
+ uint64_t ust = 0;
uint64_t target_msc;
- uint64_t crtc_msc;
+ uint64_t crtc_msc = 0;
int ret;
present_vblank_ptr vblank, tmp;
ScreenPtr screen = window->drawable.pScreen;
@@ -734,13 +734,15 @@ present_pixmap(WindowPtr window,
target_crtc = present_get_crtc(window);
}
- present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc);
+ ret = present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc);
target_msc = present_window_to_crtc_msc(window, target_crtc, window_msc, crtc_msc);
- /* Stash the current MSC away in case we need it later
- */
- window_priv->msc = crtc_msc;
+ if (ret == Success) {
+ /* Stash the current MSC away in case we need it later
+ */
+ window_priv->msc = crtc_msc;
+ }
/* Adjust target_msc to match modulus
*/
@@ -931,7 +933,7 @@ present_notify_msc(WindowPtr window,
0, 0,
NULL,
NULL, NULL,
- PresentOptionAsync,
+ divisor == 0 ? PresentOptionAsync : 0,
target_msc, divisor, remainder, NULL, 0);
}
diff --git a/xserver/randr/rrcrtc.c b/xserver/randr/rrcrtc.c
index dca0691ac..349874514 100644
--- a/xserver/randr/rrcrtc.c
+++ b/xserver/randr/rrcrtc.c
@@ -1663,23 +1663,30 @@ Bool
RRReplaceScanoutPixmap(DrawablePtr pDrawable, PixmapPtr pPixmap, Bool enable)
{
rrScrPriv(pDrawable->pScreen);
- int i;
- Bool size_fits = FALSE;
- Bool changed = FALSE;
Bool ret = TRUE;
+ PixmapPtr *saved_scanout_pixmap;
+ int i;
+
+ saved_scanout_pixmap = malloc(sizeof(PixmapPtr)*pScrPriv->numCrtcs);
+ if (saved_scanout_pixmap == NULL)
+ return FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++) {
RRCrtcPtr crtc = pScrPriv->crtcs[i];
+ Bool size_fits;
+
+ saved_scanout_pixmap[i] = crtc->scanout_pixmap;
if (!crtc->mode && enable)
continue;
+ if (!crtc->scanout_pixmap && !enable)
+ continue;
- changed = FALSE;
- if (crtc->mode && crtc->x == pDrawable->x &&
- crtc->y == pDrawable->y &&
- crtc->mode->mode.width == pDrawable->width &&
- crtc->mode->mode.height == pDrawable->height)
- size_fits = TRUE;
+ size_fits = (crtc->mode &&
+ crtc->x == pDrawable->x &&
+ crtc->y == pDrawable->y &&
+ crtc->mode->mode.width == pDrawable->width &&
+ crtc->mode->mode.height == pDrawable->height);
/* is the pixmap already set? */
if (crtc->scanout_pixmap == pPixmap) {
@@ -1687,32 +1694,48 @@ RRReplaceScanoutPixmap(DrawablePtr pDrawable, PixmapPtr pPixmap, Bool enable)
if (enable == FALSE) {
/* set scanout to NULL */
crtc->scanout_pixmap = NULL;
- changed = TRUE;
- } else {
- /* if the size fits then we are already setup */
- if (size_fits)
- return TRUE;
+ }
+ else if (!size_fits) {
/* if the size no longer fits then drop off */
crtc->scanout_pixmap = NULL;
- changed = TRUE;
+ pScrPriv->rrCrtcSetScanoutPixmap(crtc, crtc->scanout_pixmap);
+
+ (*pScrPriv->rrCrtcSet) (pDrawable->pScreen, crtc, crtc->mode, crtc->x, crtc->y,
+ crtc->rotation, crtc->numOutputs, crtc->outputs);
+ saved_scanout_pixmap[i] = crtc->scanout_pixmap;
ret = FALSE;
}
- } else {
+ else {
+ /* if the size fits then we are already setup */
+ }
+ }
+ else {
if (!size_fits)
- return FALSE;
- if (enable) {
+ ret = FALSE;
+ else if (enable)
crtc->scanout_pixmap = pPixmap;
- pScrPriv->rrCrtcSetScanoutPixmap(crtc, pPixmap);
- changed = TRUE;
- }
+ else
+ /* reject an attempt to disable someone else's scanout_pixmap */
+ ret = FALSE;
}
+ }
+
+ for (i = 0; i < pScrPriv->numCrtcs; i++) {
+ RRCrtcPtr crtc = pScrPriv->crtcs[i];
+
+ if (crtc->scanout_pixmap == saved_scanout_pixmap[i])
+ continue;
- if (changed && pScrPriv->rrCrtcSet) {
+ if (ret) {
pScrPriv->rrCrtcSetScanoutPixmap(crtc, crtc->scanout_pixmap);
(*pScrPriv->rrCrtcSet) (pDrawable->pScreen, crtc, crtc->mode, crtc->x, crtc->y,
crtc->rotation, crtc->numOutputs, crtc->outputs);
}
+ else
+ crtc->scanout_pixmap = saved_scanout_pixmap[i];
}
+ free(saved_scanout_pixmap);
+
return ret;
}
diff --git a/xserver/randr/rrdispatch.c b/xserver/randr/rrdispatch.c
index b9346d3f9..7fee2bf9c 100644
--- a/xserver/randr/rrdispatch.c
+++ b/xserver/randr/rrdispatch.c
@@ -92,7 +92,9 @@ ProcRRSelectInput(ClientPtr client)
RRCrtcChangeNotifyMask |
RROutputChangeNotifyMask |
RROutputPropertyNotifyMask |
- RRProviderPropertyNotifyMask)) {
+ RRProviderChangeNotifyMask |
+ RRProviderPropertyNotifyMask |
+ RRResourceChangeNotifyMask)) {
ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen);
diff --git a/xserver/randr/rrtransform.c b/xserver/randr/rrtransform.c
index c8a27498f..f3f1b1e65 100644
--- a/xserver/randr/rrtransform.c
+++ b/xserver/randr/rrtransform.c
@@ -121,7 +121,7 @@ RRTransformRescale(struct pixman_f_transform *f_transform, double limit)
for (j = 0; j < 3; j++)
for (i = 0; i < 3; i++)
- if ((v = abs(f_transform->m[j][i])) > max)
+ if ((v = fabs(f_transform->m[j][i])) > max)
max = v;
scale = limit / max;
for (j = 0; j < 3; j++)
diff --git a/xserver/render/picture.c b/xserver/render/picture.c
index 6ff31ba02..6e23e2bbf 100644
--- a/xserver/render/picture.c
+++ b/xserver/render/picture.c
@@ -856,7 +856,11 @@ createSourcePicture(void)
{
PicturePtr pPicture;
- pPicture = dixAllocateScreenObjectWithPrivates(NULL, PictureRec, PRIVATE_PICTURE);
+ pPicture = dixAllocateScreenObjectWithPrivates(NULL, PictureRec,
+ PRIVATE_PICTURE);
+ if (!pPicture)
+ return 0;
+
pPicture->pDrawable = 0;
pPicture->pFormat = 0;
pPicture->pNext = 0;
@@ -896,7 +900,7 @@ CreateLinearGradientPicture(Picture pid, xPointFixed * p1, xPointFixed * p2,
{
PicturePtr pPicture;
- if (nStops < 2) {
+ if (nStops < 1) {
*error = BadValue;
return 0;
}
@@ -936,7 +940,7 @@ CreateRadialGradientPicture(Picture pid, xPointFixed * inner,
PicturePtr pPicture;
PictRadialGradient *radial;
- if (nStops < 2) {
+ if (nStops < 1) {
*error = BadValue;
return 0;
}
@@ -979,7 +983,7 @@ CreateConicalGradientPicture(Picture pid, xPointFixed * center, xFixed angle,
{
PicturePtr pPicture;
- if (nStops < 2) {
+ if (nStops < 1) {
*error = BadValue;
return 0;
}
@@ -1392,6 +1396,7 @@ FreePicture(void *value, XID pid)
if (--pPicture->refcnt == 0) {
free(pPicture->transform);
+ free(pPicture->filter_params);
if (pPicture->pSourcePict) {
if (pPicture->pSourcePict->type != SourcePictTypeSolidFill)
diff --git a/xserver/render/render.c b/xserver/render/render.c
index 723f380c2..93e43e7a3 100644
--- a/xserver/render/render.c
+++ b/xserver/render/render.c
@@ -2099,20 +2099,7 @@ SProcRenderComposite(ClientPtr client)
static int
SProcRenderScale(ClientPtr client)
{
- REQUEST(xRenderScaleReq);
- REQUEST_SIZE_MATCH(xRenderScaleReq);
- swaps(&stuff->length);
- swapl(&stuff->src);
- swapl(&stuff->dst);
- swapl(&stuff->colorScale);
- swapl(&stuff->alphaScale);
- swaps(&stuff->xSrc);
- swaps(&stuff->ySrc);
- swaps(&stuff->xDst);
- swaps(&stuff->yDst);
- swaps(&stuff->width);
- swaps(&stuff->height);
- return (*ProcRenderVector[stuff->renderReqType]) (client);
+ return BadImplementation;
}
static int