diff options
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(®ion, 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 |