--- xorg-server-1.11.4.orig/fix-region +++ xorg-server-1.11.4/fix-region @@ -0,0 +1,38 @@ +#!/bin/sh +sed -i \ + -e 's/REGION_NIL\b/RegionNil/g' \ + -e 's/REGION_NAR\b/RegionNar/g' \ + -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \ + -e 's/REGION_SIZE\b/RegionSize/g' \ + -e 's/REGION_RECTS\b/RegionRects/g' \ + -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \ + -e 's/REGION_BOX\b/RegionBox/g' \ + -e 's/REGION_TOP\b/RegionTop/g' \ + -e 's/REGION_END\b/RegionEnd/g' \ + -e 's/REGION_SZOF\b/RegionSizeof/g' \ + -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \ + -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \ + -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \ + -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \ + -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \ + -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \ + -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \ + -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \ + -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \ + -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \ + -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \ + -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \ + -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \ + -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \ + -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \ + -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \ + -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \ + -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \ + -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \ + -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \ + -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \ + -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \ + -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \ + -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \ + -e 's/REGION_NULL$/RegionNull/g' \ + "$@" --- xorg-server-1.11.4.orig/fix-patch-whitespace +++ xorg-server-1.11.4/fix-patch-whitespace @@ -0,0 +1,4 @@ +#!/bin/sh +git diff --check | +sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' | +sh --- xorg-server-1.11.4.orig/ChangeLog +++ xorg-server-1.11.4/ChangeLog @@ -1,59 +1,326 @@ -commit e597f0119cd69b6d9edf86d06d941468f90d8e6d -Author: Jeremy Huddleston -Date: Fri Jan 27 21:07:17 2012 -0800 +commit 0e7b1080415c85f55462ad863de36df7011bf869 +Author: Gaetan Nadon +Date: Sun Feb 26 17:51:50 2012 -0500 - configure.ac: 1.11.4 + test: add new test cases to .gitignore - Signed-off-by: Jeremy Huddleston + Reviewed-by: Peter Hutterer + Signed-off-by: Gaetan Nadon + Signed-off-by: Keith Packard + (cherry picked from commit e08ed0b757b9b48344a301f612fabb3e39ffec78) + + Conflicts: + + test/.gitignore + + Signed-off-by: Chase Douglas -commit 6c491463ee7a3637c8aae7ddae9625b36b792078 -Author: Jeremy Huddleston -Date: Fri Jan 20 23:54:58 2012 -0800 +commit ab03aafffdbad2966dc01334ecd5d328512acf90 +Author: Peter Hutterer +Date: Wed Feb 22 15:32:56 2012 +1000 - 1.11.3.902 (1.11.4 RC2) + dix: avoid NULL-pointer dereference on button-only devices (#38313) - Signed-off-by: Jeremy Huddleston + And for such devices simply take the last.valuators[] which must be valid at + all times anyway. UpdateSlaveDeviceCoords takes care of that. + + X.Org Bug 38313 + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 2416ee4a015068359807a10f433e8c54192c78a9) + + Signed-off-by: Chase Douglas -commit b747a91485184649c05aba6fa10734f70e926032 +commit b533a9bc374ddd863e29eafd9b30018a494b63aa Author: Jeremy Huddleston -Date: Wed Jan 18 11:47:21 2012 -0800 +Date: Tue Jan 31 11:06:21 2012 -0800 - XQuartz: Bump bundle version to 2.7.1 + Revert "dix: don't XWarpPointer through the last slave anymore (#38313)" - Signed-off-by: Jeremy Huddleston + This reverts commit 2bfb802839688ecf328119c4c6979390fc60348d. + + This commit caused a regression. + + See: http://xquartz.macosforge.org/trac/ticket/517#comment:10 + + Acked-by: Peter Hutterer + (cherry picked from commit 38000e7d1f958f5944e641de3e716944a5876d41) + + Signed-off-by: Chase Douglas + +commit ac98fb5a83b458ebecf1a2dfd2d35c9a9c8b1643 +Author: Keith Packard +Date: Wed Feb 22 18:07:20 2012 +1300 + + Merge remote-tracking branch 'whot/for-keith' + (cherry picked from commit 71594746c7da32e1c7986341a0da30f241a7a2be) + + Signed-off-by: Chase Douglas -commit a1ed67fa0551ee2b39d002d3b786a2017b37c7ac +commit 453020e435db12eca2a3f21c1944a6e855c2349d Author: Peter Hutterer -Date: Fri Jan 6 13:20:45 2012 +1000 +Date: Fri Jan 27 12:41:09 2012 +1000 - render: don't bother with animated cursors on floating slaves (#39989) + Xi: handle new XIAllowEvents request in inputproto 2.1.99.6 - X.Org Bug 39989 + grab_window and touchid were removed from the struct for ABI compatibility + reasons, we need to pull in the new, XI 2.2-specific struct. Signed-off-by: Peter Hutterer - Reviewed-by: Jeremy Huddleston - (cherry picked from commit bbb6b8c834e0e1491ca14403b5d0840dd14380d3) + Reviewed-by: Keith Packard + Signed-off-by: Keith Packard + (cherry picked from commit 7674d00b04da5cf73cfa5c7ed1d3a9f42b59960e) + + Conflicts: + + Xi/xiallowev.c + configure.ac + + Signed-off-by: Chase Douglas + +commit 4d7d1bd15a6a63f82f6075b2efe1e4596c41d322 +Author: Benjamin Otte +Date: Tue Feb 7 18:01:25 2012 +1000 + + dix: fix an out-of-memory crash + + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit b96275c4cdb164aa71f7aa9fbf88be18886d1936) + + Signed-off-by: Chase Douglas + +commit a569ffd93767f6b496eb9f0f3f87f1bf1d03fa3f +Author: Chase Douglas +Date: Fri Feb 3 16:19:11 2012 -0800 + + Implement touch early accept + + This doesn't really implement early accept as it should. Ideally, the + server should send end events to all subsequent touch clients as soon as + an early accept comes in. However, this implementation is still protocol + compliant. We can always improve it later. + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 6241b5e4fdbdb08d30cc8787d858ac27122d2d49) + + Signed-off-by: Chase Douglas + +commit d6f746e7177fa050e61f6d24e62fe060af829cca +Author: Chase Douglas +Date: Fri Feb 3 16:19:10 2012 -0800 + + Implement early touch reject + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit b0c54856df71f9cabf9dad176fdade960ef8c5d9) + + Signed-off-by: Chase Douglas + +commit 50f22a606cd101ece109c46173ba6edcead9e94e +Author: Chase Douglas +Date: Fri Feb 3 16:19:09 2012 -0800 + + Check for proper window ID when processing touch allow requests + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 656ab879f20892975510723ce8fe78faf64aadb4) + + Signed-off-by: Chase Douglas -commit f89c39e6c9e20ffc3c1ae228ee601c2ab9007ff4 +commit 5eb65eaf9c914322faa413746d9546ff70a1724f +Author: Chase Douglas +Date: Fri Feb 3 16:19:08 2012 -0800 + + Move AllowTouch to dix/touch.c, and rename to TouchAcceptReject + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 9a260e9af83feb5c53ffd3b2da2dc3adf06240a1) + + Signed-off-by: Chase Douglas + +commit f8c27e7765dbb0f08c160ed2f0b3ffedd0610906 +Author: Chase Douglas +Date: Fri Feb 3 16:19:07 2012 -0800 + + Export TouchEventRejected as TouchRejected + + This function is mostly correct for early reject usage. With a small + change to pass the client resource explicitly and making the + TouchOwnership event optional, it is usable for all rejection scenarios. + This change exports it for use outside Xi/exevents.c and modifies the + name accordingly. + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 192b2c9a2ec04522655675ddfe71de5cf974cc7b) + + Signed-off-by: Chase Douglas + +commit e6459ad03851a4d667186c863a4cb1d5b6a5471a +Author: Chase Douglas +Date: Fri Feb 3 16:19:06 2012 -0800 + + Factor out TouchEnd generation and delivery + + The server often needs to generate and deliver TouchEnd events for + circumstances including touch grab acceptance and rejection. This change + refactors the code so it can be used more easily. + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 19073425e5df1317f73f74ce0b95ab24e0e0da14) + + Signed-off-by: Chase Douglas + +commit 52d4b2fded097475fbe454d1433caa3f8b1b83dd +Author: Chase Douglas +Date: Fri Feb 3 16:19:05 2012 -0800 + + Store window pointer in touch listener record + + Signed-off-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit ab60cadc2afb9d8882144e30fde11c3ef0f999cd) + + Signed-off-by: Chase Douglas + +commit 5893d32d1114628fb09fc0caf9569e74966afe4f Author: Peter Hutterer -Date: Mon Jan 9 15:04:10 2012 +1000 +Date: Sat Feb 4 19:27:21 2012 +1000 - dix: Update pointer limits for floating devices too (#43635) + Revert "dix: deduplicate callers of DeliverDeviceEvents in DeliverGrabbedEvents" - When the screen is restructured, the pointer limits need to be reset for - floating slave devices as well, not just for master pointers. Only skip - devices that don't have a cursor (attached slaves and keyboard) + This call was supposed to have no functional changes but in some cases + DeliverDeviceEvents() was called with a uninitialised win variable. + Revert, safer than trying to sort this out otherwise. - Bug reproducer: float an absolute slave device, rotate the screen - the - device is now confined to a section of the screen only. + This reverts commit 6eff14a789341d366b3013c5aa020e959c954651. - X.Org Bug 43635 + Reported-by: Mathieu Taillefumier + Signed-off-by: Peter Hutterer + Reviewed-by: Keith Packard + (cherry picked from commit f92ba92adfce0e1975feb54ab0e1165b7c2a7bea) + + Signed-off-by: Chase Douglas + +commit 428aaf7252b2e341427a0cf36c22e0fea3ddcbe4 +Author: Keith Packard +Date: Mon Jan 9 13:17:37 2012 -0800 + + Merge remote-tracking branch 'whot/multitouch' + + (cherry picked from commit e476af417d83730b11054f4e5b127ab5540bb332) + + Conflicts: + + configure.ac + + Signed-off-by: Chase Douglas + +commit 03e15dc10aa7cec2d1db294beb0c006ea0e24e25 +Author: Chase Douglas +Date: Wed Jan 18 19:09:21 2012 -0800 + + Don't set X and Y valuators for indirect touch events + + For expediency, it made sense to always have the X and Y axes set for + direct touch device event propagation. The last X and Y values are + stored internally. However, indirect device touch event propagation + does not depend on the touch's X and Y values. Thus, we don't need to + set the values for every indirect touch event. + + On top of this, the previous X and Y values aren't stored for indirect + touches, so without this change the axes get erroneously set to 0. + Signed-off-by: Chase Douglas Signed-off-by: Peter Hutterer - Reviewed-by: Chase Douglas - (cherry picked from commit 35bd77e9d0701daae87d681900d749604fc6471f) + (cherry picked from commit e1085a0da0b9299f48b3dc41dee5e33bf022bea5) + + Signed-off-by: Chase Douglas + +commit 17e9669a686c5b943b6e22ed740c2e8ffcb39c27 +Author: Daniel Stone +Date: Thu Jan 19 22:40:32 2012 +1100 + + UngrabAllDevices: Don't kill clients if not told to + + The kill_client argument to UngrabAllClients specifies if we want to + kill the client holding the grab or just deactivate the grab. + + Signed-off-by: Daniel Stone + Reported-by: Julien Cristau + Reviewed-by: Cyril Brulebois + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit 5201310559fe8708ba8278bdef77cdc1673fff71) + + Signed-off-by: Chase Douglas + +commit 36d20ea69467e0a873a457078c5032d7447ac984 +Author: Chase Douglas +Date: Wed Jan 18 18:04:14 2012 -0800 + + Only update pointer motion data for pointer emulated touch events + + Signed-off-by: Chase Douglas + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit 9b1e18f42a05a79d9ebec372a37b47442e397ca9) + + Signed-off-by: Chase Douglas + +commit b6e21d8b973f46fe70517d37385342b5e2f47d22 +Author: Chase Douglas +Date: Wed Jan 18 18:04:13 2012 -0800 + + Only scale direct device touch coordinates + + Indirect touch devices provide valuator values in pure device + coordinates. They also don't need to be fixed up for screen crossings. + + Signed-off-by: Chase Douglas + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit f00e5b02f5d9928cd88961e761da91b5faff1b32) + + Signed-off-by: Chase Douglas + +commit ebf3e90cbb271b00dbe767ce848a9687390ec887 +Author: Peter Hutterer +Date: Mon Jan 16 12:53:39 2012 +1000 + + include: Fix comment typo + + Signed-off-by: Peter Hutterer + (cherry picked from commit 24dc0389da3970e83e4908039957567e55f9ea05) + + Signed-off-by: Chase Douglas + +commit 1fbd9c6f967484485f1e8b333f21a1dac0da7680 +Author: Jeremy Huddleston +Date: Wed Jan 18 11:47:21 2012 -0800 + + XQuartz: Bump bundle version to 2.7.1 + + Signed-off-by: Jeremy Huddleston + (cherry picked from commit b747a91485184649c05aba6fa10734f70e926032) + + Signed-off-by: Chase Douglas -commit dea9377a257a402b2c7fe4a96c958d951a7d4579 +commit 800d82ff45f150aa6680d8c3a0172a851d8a55ab Author: Zhigang Gong Date: Wed Jan 4 07:01:19 2012 +0000 @@ -68,8 +335,11 @@ Reviewed-by: Adam Jackson Signed-off-by: Keith Packard (cherry picked from commit f4956faab9ccf9aba6cf9603f4489f5dad19a347) + (cherry picked from commit dea9377a257a402b2c7fe4a96c958d951a7d4579) + + Signed-off-by: Chase Douglas -commit d2db5100b1bafeeea8c1febd390631c8f8abb094 +commit 8f40cad6e07065691799b54da37204747cb428fa Author: Alan Coopersmith Date: Fri Oct 28 21:29:50 2011 -0700 @@ -82,8 +352,11 @@ Signed-off-by: Alan Coopersmith Reviewed-by: Jeremy Huddleston (cherry picked from commit 780133f9ae7fada462714b47e79d26075bbd9abe) + (cherry picked from commit d2db5100b1bafeeea8c1febd390631c8f8abb094) + + Signed-off-by: Chase Douglas -commit 5b28bcb340e279e7f4e76617e86b439092367690 +commit 2538c43541a48bddc654eea645bd3408e741a49a Author: Adam Jackson Date: Tue Dec 13 21:23:12 2011 -0500 @@ -103,8 +376,11 @@ Reviewed-by: Alan Coopersmith Signed-off-by: Adam Jackson (cherry picked from commit 8f9bdfd293ad8e45755efe8d764b4dcc2a724f51) + (cherry picked from commit 5b28bcb340e279e7f4e76617e86b439092367690) + + Signed-off-by: Chase Douglas -commit e1ea93fec93b13d18df4451210aaaf322b769b6a +commit d0c6ccbfb61eb4b0e5c83b8ecf5ebcf3a4e90ba7 Author: Adam Jackson Date: Tue Dec 13 20:23:40 2011 -0500 @@ -123,8 +399,11 @@ Reviewed-by: Alan Coopersmith Signed-off-by: Adam Jackson (cherry picked from commit 83a98543b58c661a22574a6f8d8f9d777c0955b8) + (cherry picked from commit e1ea93fec93b13d18df4451210aaaf322b769b6a) + + Signed-off-by: Chase Douglas -commit 9eaa0b5c89f645c50ea90e07e8b49ebacf4349a0 +commit 33af6a8d422a6ba95883e448dbfe6fb8ff4ce2ec Author: Adam Jackson Date: Tue Dec 13 21:00:05 2011 -0500 @@ -144,8 +423,11 @@ Reviewed-by: Alan Coopersmith Signed-off-by: Adam Jackson (cherry picked from commit 11977fab546da35d579ebe285e3c26864007805e) + (cherry picked from commit 9eaa0b5c89f645c50ea90e07e8b49ebacf4349a0) + + Signed-off-by: Chase Douglas -commit a3b6ecc893e17028cfbe16d8d7981c9037fc0766 +commit eecdd1c758c3a610038384308e0f9ae558cc92fc Author: Peter Hutterer Date: Tue Jan 3 10:45:45 2012 +1000 @@ -160,8 +442,11 @@ Signed-off-by: Peter Hutterer Reviewed-by: Cyril Brulebois (cherry picked from commit 75953ccb9e9e5f1dbbaa44c714716a0049e22aae) + (cherry picked from commit a3b6ecc893e17028cfbe16d8d7981c9037fc0766) + + Signed-off-by: Chase Douglas -commit 4a339afc586d55a9a248b893f007219d79c72600 +commit f17bd8187cbce7f848c9613c51d0fcfe86c49489 Author: Julien Cristau Date: Fri Dec 30 20:41:25 2011 +0100 @@ -177,8 +462,11 @@ Reviewed-by: Cyril Brulebois Signed-off-by: Julien Cristau (cherry picked from commit 6269977c91071e0ea16ca5b4b8e15fd6db0b6fcf) + (cherry picked from commit 4a339afc586d55a9a248b893f007219d79c72600) + + Signed-off-by: Chase Douglas -commit 9a4be7e99f0e832df87b8e7fb548793dd4b52717 +commit 70130bf9e5feaefe9807a47d12c520b91baa5dca Author: Matthieu Herrb Date: Mon Jan 2 13:23:59 2012 +0000 @@ -190,8 +478,11 @@ Reviewed-by: Adam Jackson Signed-off-by: Keith Packard (cherry picked from commit 6d6d4cb6043905d850834946e9bfc526ed5a9ef7) + (cherry picked from commit 9a4be7e99f0e832df87b8e7fb548793dd4b52717) + + Signed-off-by: Chase Douglas -commit 8046717d720c1bbbf02ba986622bc96c6b52a36c +commit 364540f76e0c80ef26f301785214e6a9cb0e5a04 Author: Alan Coopersmith Date: Sat Dec 24 10:00:56 2011 -0800 @@ -209,89 +500,11 @@ Reviewed-by: Rami Ylimäki Signed-off-by: Keith Packard (cherry picked from commit cfc4c3d7fa8bd4da4c08b2ab8e6f85435f75353a) - -commit cea9f9f273cb525cb5daa2d2819d3f635582cb24 -Author: Jeremy Huddleston -Date: Fri Jan 6 22:01:03 2012 -0800 - - configure.ac: 1.11.3.901 (1.11.4 RC1) - - Signed-off-by: Jeremy Huddleston - -commit b15be8547d4d204f3e498f52d86713a76766e871 -Author: Jeremy Huddleston -Date: Fri Jan 6 22:12:14 2012 -0800 - - Xi: Fix mishandled git merge - - Signed-off-by: Jeremy Huddleston - -commit 82e0ae042379181eb143431e1413084432a17079 -Merge: f9b00c2 4e4bb31 -Author: Jeremy Huddleston -Date: Mon Jan 2 20:58:22 2012 -0500 - - Merge remote-tracking branch 'whot/server-1.11-branch' into server-1.11-branch - -commit 4e4bb319a4f9510277557f65676948cd1db10e93 -Author: Carlos Garnacho -Date: Tue Dec 13 15:41:23 2011 +0100 - - Xi: assign correct grab_mode/other_device_mode in XI2 passive grabs - - CreateGrab() expects the keyboard mode to be stored in grab_mode, and the - pointer mode in other_device_mode, so respect this in passive XI2 grabs, - and switch modes if needed. - - Signed-off-by: Carlos Garnacho - Signed-off-by: Peter Hutterer - Reviewed-by: Chase Douglas - (cherry picked from commit 5b169cb695bd450d7f64e3800f00c9237ee67f96) - -commit 8c73f6bcbdc04380cc41d9f6dc7e849c7c4f9298 -Author: Alan Coopersmith -Date: Thu Dec 8 21:52:07 2011 -0800 - - Change disable_clientpointer return type to void - - It doesn't return anything, nor does it's caller expect it to. + (cherry picked from commit 8046717d720c1bbbf02ba986622bc96c6b52a36c) - Fixes Solaris Studio compiler error: - "xichangehierarchy.c", line 214: Function has no return statement : disable_clientpointer - - Signed-off-by: Alan Coopersmith - Reviewed-by: Peter Hutterer - Signed-off-by: Keith Packard - (cherry picked from commit 372a6f10dc2d74d2d179e8b92449e9b8636a99ef) - -commit ae4272a5742119b10074a542d0dcd4c493cb83e4 -Author: Peter Hutterer -Date: Wed Nov 30 09:06:06 2011 +1000 - - xfixes: don't dereference a NULL cursor - - If the new cursor is the NULL cursor, don't dereference it and use zeros - instead. - - Signed-off-by: Peter Hutterer - Reviewed-by: Jeremy Huddleston - (cherry picked from commit 1ab50be938524dcd4a9e56d27e3b96a27c2db2c0) - -commit 20efd3c15829d8fbb3610d5af41b67a627e63d21 -Author: Peter Hutterer -Date: Tue Nov 29 16:15:37 2011 +1000 + Signed-off-by: Chase Douglas - Xi: when removing a device, reset ClientPointers where needed - - if a client had the to-be-removed device as ClientPointer, reset to NULL. - - Fixes #43165 - - Signed-off-by: Peter Hutterer - Reviewed-by: Jeremy Huddleston - (cherry picked from commit d2ebbcdaf6b13d70eee704b1764ff349e1be22a0) - -commit cf296f2eeffe4b438e9378268f84a1f63c555e52 +commit 2c973d2c078e8af01a06334a4a2ee8705e369bf2 Author: Peter Hutterer Date: Wed Nov 9 15:31:10 2011 +1000 @@ -312,165 +525,2105 @@ Conflicts: Xext/xselinux_ext.c + (cherry picked from commit cf296f2eeffe4b438e9378268f84a1f63c555e52) + + Signed-off-by: Chase Douglas -commit 4b386610243b1a30db7e4cdb89cb43012198407d -Author: Peter Hutterer -Date: Fri Dec 16 12:41:08 2011 +1000 +commit 7014cf0a6497f122bfa2b0e6e7794dc3e30c0c6f +Author: Chase Douglas +Date: Wed Jan 11 07:38:12 2012 -0800 - dix: button state must show the logical buttons, not physical buttons + Use event time instead of CurrentTime for grab times - If the device is mapped 3 2 1, a click on physical button 1 sends a button 3 - press, but the state was set for button 1. Fix this, the state must be set - for that button's logical mapping. + When {XI,X,}AllowEvents is called, the timestamp is compared against the + grab time to ensure that the request pertains to the current grab in the + server. While many clients may use CurrentTime (client-side), the + timestamp of the event causing the grab is also valid. - https://bugzilla.gnome.org/show_bug.cgi?id=655928 + This change ensures that the server's notion of the grab time is the + time of the event that activated the grab rather than the time that the + grab is actually activated. - Signed-off-by: Peter Hutterer - (cherry picked from commit 9567d21e85b99febe805263a4d93b15fd1f7ab42) + This bug was exposed through nested touch then pointer grabs. - Conflicts: + Signed-off-by: Chase Douglas + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit f9e6858d5c10be6a8439c0f18bfb2325fa0ee070) - dix/inpututils.c + Signed-off-by: Chase Douglas -commit f9b00c2aba496fe470c24d0f8d3e3d0e3b05aa65 +commit 4989bff6bfe2c0409127a523e56f177b3141b8d1 Author: Peter Hutterer -Date: Tue Nov 29 16:15:37 2011 +1000 +Date: Fri Jan 6 13:20:45 2012 +1000 - Xi: when removing a device, reset ClientPointers where needed - - if a client had the to-be-removed device as ClientPointer, reset to NULL. + render: don't bother with animated cursors on floating slaves (#39989) - Fixes #43165 + X.Org Bug 39989 Signed-off-by: Peter Hutterer Reviewed-by: Jeremy Huddleston - (cherry picked from commit d2ebbcdaf6b13d70eee704b1764ff349e1be22a0) + (cherry picked from commit bbb6b8c834e0e1491ca14403b5d0840dd14380d3) + + Signed-off-by: Chase Douglas -commit e4984b3023351b5fcc506f4a196ad699db8b0535 +commit b5f71a5f124eb44eab08f68d3c8ef946df05bb45 Author: Peter Hutterer -Date: Wed Nov 30 09:06:06 2011 +1000 +Date: Mon Jan 9 15:04:10 2012 +1000 - xfixes: don't dereference a NULL cursor + dix: Update pointer limits for floating devices too (#43635) + + When the screen is restructured, the pointer limits need to be reset for + floating slave devices as well, not just for master pointers. Only skip + devices that don't have a cursor (attached slaves and keyboard) + + Bug reproducer: float an absolute slave device, rotate the screen - the + device is now confined to a section of the screen only. - If the new cursor is the NULL cursor, don't dereference it and use zeros - instead. + X.Org Bug 43635 Signed-off-by: Peter Hutterer - Reviewed-by: Jeremy Huddleston - (cherry picked from commit 1ab50be938524dcd4a9e56d27e3b96a27c2db2c0) + Reviewed-by: Chase Douglas + (cherry picked from commit 35bd77e9d0701daae87d681900d749604fc6471f) + + Signed-off-by: Chase Douglas -commit 625d1088192a9ad972c20fbdbcb4bb9fda979157 -Author: Peter Hutterer -Date: Fri Dec 16 09:15:25 2011 -0500 +commit 0c292448ebcfcc6e5072efada55f8135b60b7795 +Author: Keith Packard +Date: Thu Dec 22 09:35:51 2011 -0800 - dmx: force -fno-strict-aliasing for xinput example + test/xi2: Fix infinite loop in test_convert_XITouchOwnershipEvent - Compiler warning: - xinput.c:272: warning: dereferencing pointer 'e' does break strict-aliasing - rules + The touchid test was using a loop like: - The code itself is the usual XInput client-side code: - XEvent event; - XDeviceMotionEvent *e = (XDeviceMotionEvent *)&event; - XNextEvent(display, &event); - printf("%d\n", e->type); + for(i = 1; i < 0xffffffff; i <<= 1) - Since XDeviceMotionEvent is not guaranteed the same size as XEvent, clients - must use pointer aliasing as above when using the XNextEvent API. Disable - strict aliasing for this example. + When 'i' is a 32-bit variable, this infinite loops as it goes from + 0x80000000 to 0. 'i' is declared as 'long', which is 32-bit in 32-bit mode. + + Signed-off-by: Keith Packard + (cherry picked from commit e7df42ab68e30588a5e32ed543b0711821daf009) + + Signed-off-by: Chase Douglas + +commit 738549e470ea1ae792840bbc50766a017de23cff +Author: Peter Hutterer +Date: Thu Dec 22 10:00:15 2011 +1000 + + test: fix grab mode value tests for new XIGrabModeTouch + + This test checks that last-valid-mode + 1 returns a BadValue. With the + addition of XIGrabModeTouch, that value has changed - sync it up again. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit f75bdf7fbe757f4603e39139acc3c90538a45e15) + + Signed-off-by: Chase Douglas + +commit bc282a9a1492137b44486e39f08b2e4cbc34f92b +Author: Peter Hutterer +Date: Wed Dec 21 14:45:27 2011 +1000 + + Xi: only activate the device grab if we don't already have one + + If the device is already grabbed, don't activate the passive grab, it screws + with our event masks. Just deliver to the grabbing client instead. + + Reported-by: Carlos Garnacho + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 2bb282cd45cb8149b39d72397ef5bbcfebca11d2) + + Signed-off-by: Chase Douglas + +commit 3fc68a253e8f45bedeebf6d6a5e885cc720b68cf +Author: Carlos Garnacho +Date: Wed Dec 21 01:08:40 2011 +0100 + + dix: fix xi2 mask/filter when delivering grabbed events + Signed-off-by: Carlos Garnacho Reviewed-by: Peter Hutterer - Reviewed-by: Gaetan Nadon Signed-off-by: Peter Hutterer - Signed-off-by: Gaetan Nadon - Signed-off-by: Keith Packard - (cherry picked from commit 3aca8199405cff5097ee5813605ec78b5ae44a43) + (cherry picked from commit 475ef5cc8339fac3696fe654ef683f92f0b0cc2c) + + Signed-off-by: Chase Douglas -commit 53e347b22bb79043243e25891cd7d6f374a8aa23 -Author: Keith Packard -Date: Tue Nov 8 10:13:15 2011 -0800 +commit a4d462fa2cdec99ae4444be843cd2eca8b7598ca +Author: Peter Hutterer +Date: Mon Dec 19 09:08:05 2011 +1000 - Save major/minor opcodes in ClientRec for RecordAReply + test: add a basic test for ownership event values - The record extension needs the major and minor opcodes in the reply - hook, but the request buffer may have been freed by the time the hook - is invoked. Saving the request major and minor codes as the request is - executed avoids fetching from the defunct request buffer. + Signed-off-by: Peter Hutterer + (cherry picked from commit 4551510f752624592f9201f73db89ac1325a234a) - This patch also eliminates the public MinorOpcodeOfRequest function, - inlining it into Dispatch. Usages of that function have been replaced - with direct access to the new ClientRec field. + Backported swap macros for test_values_XITouchOwnershipEvent. - Signed-off-by: Keith Packard - Reviewed-by: Jamey Sharp - (cherry picked from commit fb22a408c69a84f81905147de9e82cf66ffb6eb2) + Signed-off-by: Chase Douglas + +commit 4f18583067c194b6e484405752a85708e2a1a00b +Author: Peter Hutterer +Date: Mon Dec 19 08:31:37 2011 +1000 + + test: drop printfs from protocol-eventconvert.c + + The test outputs are noisy enough, no need having these here too. + + Signed-off-by: Peter Hutterer + (cherry picked from commit 0c661dc478b4b436a3e61066d31bc510c7a08456) + + Signed-off-by: Chase Douglas + +commit e3a9114e1e31378e96eaacf660e665ed6e50c428 +Author: Peter Hutterer +Date: Wed Dec 21 11:11:48 2011 +1000 + + dix: remove requirement for client_id be the first element + + Leftover code from an earlier version of GetTouchEvents. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 8080d785b2c1e5791312ed0975efd1b8aea58d98) + + Signed-off-by: Chase Douglas + +commit 717ac30a73beac953c6aa5d94ca8df1bce7bb97d +Author: Peter Hutterer +Date: Thu Dec 15 07:59:06 2011 +1000 + + mi: handle screen switching on pointer emulated touch events + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 8a32c39c00789c16006de61112627722ce548be1) + + Signed-off-by: Chase Douglas + +commit 0f9cfff4971ba9f2559312e4ab75fe576aec4b1c +Author: Peter Hutterer +Date: Thu Dec 15 07:57:47 2011 +1000 + + mi: split move to new screen logic to a helper function + + No functional changes. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 48547068b115b1f5e5f46a70110454a2175fb9a4) + + Signed-off-by: Chase Douglas + +commit 73d9c55a86bf1361fcaabb8780fd01ddf5fc5e57 +Author: Daniel Stone +Date: Thu Dec 15 07:52:28 2011 +1000 + + dix: Remove touch grabs if the grab disappears + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 3b1e2035cc4740711360c845cfcdff07f7b60558) + + Signed-off-by: Chase Douglas + +commit dcb3ee2ba3f533f2cabbce9c0c94b7acde4d5fa3 +Author: Peter Hutterer +Date: Thu Dec 15 07:48:49 2011 +1000 + + dix: hook up passive grabs and pointer emulated passive grabs + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit cd3de8324e8908955a2e4be3000c8ffee8684c68) + + Signed-off-by: Chase Douglas + +commit d87933d11530e056181bc13f0ee6724149c3d78c +Author: Carlos Garnacho +Date: Tue Dec 13 15:41:23 2011 +0100 + + Xi: assign correct grab_mode/other_device_mode in XI2 passive grabs + + CreateGrab() expects the keyboard mode to be stored in grab_mode, and the + pointer mode in other_device_mode, so respect this in passive XI2 grabs, + and switch modes if needed. + + Signed-off-by: Carlos Garnacho + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 5b169cb695bd450d7f64e3800f00c9237ee67f96) + + Signed-off-by: Chase Douglas + +commit 55e1e8691f2aa5f375a9c79bb469a3ad44ccd139 +Author: Peter Hutterer +Date: Thu Dec 15 07:42:12 2011 +1000 + + Xi: add the hooks for passive touch grabs + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 4469430b109fa2da7ba3d2fadf66eca78b7156a0) + + Signed-off-by: Chase Douglas + +commit 118d0e5841ea025f573df777491ff07abb3a616b +Author: Peter Hutterer +Date: Thu Dec 15 07:21:38 2011 +1000 + + Xi: handle grab accept/reject requests + + Consists mostly of generating an ownership event and processing it. + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit bb0af002dc9ad5b464dc6793aedb6d1ff65d001d) Conflicts: - include/extension.h + Xi/xiallowev.c + + Signed-off-by: Chase Douglas -commit b736f8c92bae7773ff6e1fca886f9ccc50156488 -Author: Julien Cristau -Date: Sat Nov 5 13:00:07 2011 +0100 +commit 9507e4e1f1562c37b1877f921e288124393d7a6e +Author: Peter Hutterer +Date: Tue Dec 20 16:34:43 2011 -0800 - Fix ShmPutImage for XYBitmap + Xi: hook up touch ownership handling - We can't call CopyArea in that case because the image has depth 1, which - might not match the target drawable, so we might overrun the shm - segment. Commit 11817a881cb93a89788105d1e575a468f2a8d27c apparently - fixed a similar bug for XYPixmap, but missed the bitmap case. + Ownership changes don't get processed directly when they happen, instead the + DIX submits an ownership event which goes through ProcessTouchEvents and + ProcessTouchOwnershipEvents. + Then on the required events are generated and sent to clients. - Fixes: http://bugs.debian.org/629611 + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + Reviewed-by: Chase Douglas + (cherry picked from commit 209b3d613a7bed126c81daedbad6461e4391e9e6) - Thanks to Alan Curry for diagnosing this and providing a test case. + Signed-off-by: Chase Douglas + +commit 151ecb96cbb5747aa9a58dbf0d5c5afaae553025 +Author: Peter Hutterer +Date: Tue Dec 20 16:33:33 2011 -0800 + + Xi: hook up pointer emulation for emulating touches - Reported-and-tested-by: Alan Curry - Reviewed-by: Peter Harris - Signed-off-by: Julien Cristau - (cherry picked from commit 08ec4da6a7617637914bee1636858474213cf39d) + Includes a hack for implicit grab activation, because integrating this + requires a larger rewrite and I'm not sleeping enough as it is. + Right now, we deliver the event and check before/after if there is an + implicit grab on. If one activated, then store the event in the grab and + switch the listener type to a grab listener. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + Reviewed-by: Chase Douglas + (cherry picked from commit 1894468c2b9788efa70ef4fb5fc911711402f3a7) + + Signed-off-by: Chase Douglas -commit b2a4c09507b267495ea5e4c2e05373b323c80edf -Author: Jeremy Huddleston -Date: Sat Dec 17 12:56:59 2011 -0800 +commit 4ef22a181992b7348757f84a49909a7f6a5d12e0 +Author: Peter Hutterer +Date: Wed Dec 14 17:04:38 2011 +1000 - kdrive/linux: Fix compilation with -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast + dix: add touch to pointer event conversion helper - Reported-by: Arkadiusz Miśkiewicz - Signed-off-by: Jeremy Huddleston - Reviewed-by: Jamey Sharp - (cherry picked from commit 1deede3c48d5ac91f50774c79f02afc6e036614e) + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 753c4dca1e42035e29fb21458a746e484ed93ca3) + + Signed-off-by: Chase Douglas -commit beaa7ad2ec45811e16722283a8b557a08e91ef18 -Author: Jeremy Huddleston -Date: Sat Dec 17 12:25:26 2011 -0800 +commit b3af3cbbd525d432f294c1ca2e0c458dd5c41a6d +Author: Peter Hutterer +Date: Wed Dec 14 17:02:30 2011 +1000 - configure.ac: Make Xephyr dependency error message more informative + dix: add real_event parameter to ActivatePassiveGrab - Signed-off-by: Jeremy Huddleston - Reviewed-by: Jamey Sharp - (cherry picked from commit d0170d54c71fc761b8f1ae7a0e555dc2ca23cf9c) + For touch events with pointer emulation, the event that triggers the grab + (the pointer event) is not the same as the actual event (the touch event). + For replaying, we need to store the real event then. + + No effective changes at this point, for the current caller event and + real_event are identical. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit c3843f5498a849920ab68cca3557411ad8ab3454) + + Signed-off-by: Chase Douglas -commit 41524dd61020f2a446ec54643fa17aa791338cac -Author: Jeremy Huddleston -Date: Fri Dec 16 17:47:46 2011 -0800 +commit a9b4de42cce42a4185365b449c95b7569b0f45db +Author: Peter Hutterer +Date: Tue Dec 20 16:32:52 2011 -0800 - configure.ac: 1.11.3 + Process and deliver touch events - Signed-off-by: Jeremy Huddleston + Does not include pointer emulation handling. + Does include partial ownership handling but not the actual processing of + ownership events. + + Note: this commit is a retroactive commit extracted from a series of ~50 + commits and may thus appear a bit more complicated than what you'd write out + from scratch. + + Pointer processing tree is roughly: + - ProcessOtherEvents + - ProcessTouchEvents + - DeliverTouchEvents + - DeliverTouchBeginEvent|DeliverTouchEndEvent|... + - DeliverOneTouchEvent + + Also hooks up the event history playing to the right function now. + + Co-authored-by: Daniel Stone + Co-authored-by: Chase Douglas + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + Reviewed-by: Chase Douglas + (cherry picked from commit e389a19a730055d4550ff708da83c78099a516fd) + + Signed-off-by: Chase Douglas -commit ee66474eb2009118a41539c6773e514a09d27e4d -Author: Gaetan Nadon -Date: Fri Dec 9 07:45:02 2011 -0500 +commit 0951b7cc0c573a06600a8b0cb8a8cb423a471d77 +Author: Peter Hutterer +Date: Thu Dec 15 07:53:19 2011 +1000 - dmx: fix distcheck failure, missing compsize.h in Makefile.am + dix: set core and button state based on the touch state - which was added in commit: - dmx: Build fix for -Werror=implicit-function-declaration + If a pointer-emulating touch caused a button to be logically down, set that + state in the input events. - Reviewed-by: Peter Hutterer - Signed-off-by: Gaetan Nadon - Signed-off-by: Keith Packard - (cherry picked from commit 2c1d0a539c0fb1860ac89a00d1fb609f1959e1b6) + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 634b0da9a83076d0e9e0fc44dc5dc77b0c368bc1) + + Signed-off-by: Chase Douglas + +commit 90814f2ea800c5fa3f7121d4185e47b406565119 +Author: Peter Hutterer +Date: Wed Dec 14 16:33:05 2011 +1000 + + Xi: make UpdateDeviceState aware of touch events + + Update the logical button state for pointer-emulating events. Button state + must be kept separate from the ButtonClassRec to avoid clearing the button + state on a touch end if there is a physical button still down. + + And obviously don't change the button state if we're currently replaying the + event history for some client. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit dbfd7b37a0ba21899d8ebb7e0b324301bd466c49) + + Signed-off-by: Chase Douglas + +commit 2636f32908aeefeabade64ba1b81b8430cfd6653 +Author: Peter Hutterer +Date: Wed Dec 14 16:30:05 2011 +1000 + + dix: add TouchResourceIsOwner helper function + + The first listener in the sequence is the owner of the touch sequence. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 593c3e2eb3da5c5fb957b68c8025dfdbe1139639) + + Signed-off-by: Chase Douglas + +commit 83ea5e519c7e233409bcc9a210d7ce74518138e6 +Author: Peter Hutterer +Date: Wed Dec 14 16:24:17 2011 +1000 + + dix: add helper functions for adding/removing touch listeners + + The DIX will call TouchSetupListeners once for a new touch. After that + the listener list remains static, with listeners only dropping out when they + either reject the grab or disappear. + + Exception: if grabs activate they are prefixed to the listeners. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 5d0260cc986e8c1f0907870b851d47fd73bb1b7d) + + Signed-off-by: Chase Douglas + +commit dbd4702466dfe0c7b6d5be3942294708dfa0df21 +Author: Chase Douglas +Date: Wed Dec 14 16:26:04 2011 +1000 + + dix: add TouchGetPointerEventType helper function + + Returns the respective pointer event type for a given touch event type. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 6a68f97ce6704dd2ff2a50f91acd2da72c9995bd) + + Signed-off-by: Chase Douglas + +commit 125fbadadcd8dbc3dfd88a1bf7f610a5baf7a975 +Author: Daniel Stone +Date: Wed Dec 14 16:53:04 2011 +1000 + + dix: when a window disappears, remove it from the touch sprite trace + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 8e58ce73c8b79cb86e890369d0216cdd850c52a5) + + Signed-off-by: Chase Douglas + +commit a02a40fd7ac661737d895dc1852c74a8a84e5b26 +Author: Daniel Stone +Date: Wed Dec 14 16:03:01 2011 +1000 + + dix: add helper functions to build up/verify the sprite trace + + Touch events' sprite trace stays the same for the duration of the touch + sequence. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + Reviewed-by: Chase Douglas + (cherry picked from commit c18a173cf5f53778356c5e8f25ab132956f8c27d) + + Signed-off-by: Chase Douglas + +commit 6ca95a9524b0ebd47eab7e0b8b016014ff65ed2f +Author: Peter Hutterer +Date: Wed Dec 14 15:56:05 2011 +1000 + + dix: add touch event history helper functions + + If touch client has not registered for ownership events and a grab above + that client is rejected, the client needs to receive the complete event + history. + + The history currently doesn't really do fancy overflow handling. We assume + that the first TOUCH_HISTORY_SIZE events are the important ones and anything + after that is dropped. If that is a problem, fix the client that takes > 100 + event to decide whether to accept or reject. + + Events marked with TOUCH_CLIENT_ID or TOUCH_REPLAYING must not be stored in + the history, they are events created by the DIX to comply with the protocol. + Any such event should already be in the history anyway. + + A fixme in this patch: we don't have a function to actually deliver the + event yet. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 40475261eacabb79a824db1138407a9d0f9fe37f) + + Signed-off-by: Chase Douglas + +commit 697dfd87140dac9c30d137631869287036bc938c +Author: Peter Hutterer +Date: Wed Oct 26 09:08:17 2011 +1000 + + Support XI 2.2 officially + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit b274c472a5ad700aea5fe651d677e8cb34ffc976) + + Signed-off-by: Chase Douglas + +commit 88280f374162c8cca3e494226826cbcc27cdec86 +Author: Daniel Stone +Date: Wed Dec 14 15:45:19 2011 +1000 + + Xi: allow selecting for touch events + + Selecting for any of XI_TouchBegin/Update/End/Ownership requires the three + bits for begin/update/end to be set. + + Only one client at a time may select for XI_TouchBegin event + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit d2af968cb65873780a6e61342d5d3c23b9654e2a) + + Signed-off-by: Chase Douglas + +commit 4bcad5fc184ef3c22a7e0f417dc87ccb453d0791 +Author: Peter Hutterer +Date: Wed Dec 14 16:45:04 2011 +1000 + + dix: handle DIX-submitted touch events + + The DIX needs to submit touch events for e.g. TouchEnd after an + acceptance/rejection. These have the TOUCH_CLIENT_ID flag set. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit f3df3ad668fcd417ffb5afa3bea79a73a348bc1a) + + Signed-off-by: Chase Douglas + +commit 61770844df70cffd9611e780f48396bbb929382a +Author: Daniel Stone +Date: Wed Dec 14 15:41:07 2011 +1000 + + dix: generate touchpoints from driver-submitted data + + The touchpoints are generated, enqueued but not processed since we don't + handle them in the event processing yet. + + Co-authored-by: Peter Hutterer + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 9ce8463a3334f76f128bb35b541aa6e67b4e4374) + + Signed-off-by: Chase Douglas + +commit c1846423c3f36f3760f733bef69f841ad6417c93 +Author: Daniel Stone +Date: Wed Dec 14 15:29:48 2011 +1000 + + dix: add GetTouchOwnership event API + + No callers yet. This API is not to be used by drivers, it's an API for the + DIX which will create ownership events mainly on touch acceptance/rejection. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit bec51f5ec6575a1971ae5371a4b6d8563933032c) + + Signed-off-by: Chase Douglas + +commit f63fb7517d9dc41abb6d666353f84f7b334b00ac +Author: Peter Hutterer +Date: Wed Dec 14 14:57:46 2011 +1000 + + dix: add DIX API to create touchpoints + + The DIX touchpoints are the ones used for event processing. + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 5c63dc6dbcbebbb19d79575a9f1ec9878e6537f1) + + Signed-off-by: Chase Douglas + +commit fc1f1f21580d76a2aacdf2fe8d3896e104d307f7 +Author: Peter Hutterer +Date: Wed Dec 14 14:53:52 2011 +1000 + + dix: if we run out of space for new touch events, resize the queue + + The SIGIO handler forces us to drop the current touch and schedule the + actual resize for later. Should not happen if the device sets up the + TouchClassRec with the correct number of touchpoints. + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 7f8127d203394cae45c3ded0d063030d7c5fdb70) + + Signed-off-by: Chase Douglas + +commit 5550bcd5b377bf67b2b79ce6f1447b86bdbd98f9 +Author: Peter Hutterer +Date: Wed Dec 14 14:48:56 2011 +1000 + + dix: add helper functions to create DDX touch recs + + DDX touch points are the ones that keep records of the driver-submitted + touchpoints. They're unaffected by the grab state and terminate on a + TouchEnd submitted by the driver. + + The client ID assigned is server-global. + + Since drivers usually submit in the SIGIO handler, we cannot allocate in the + these functions. + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 758bc57ba5a89f765d83f0b169aa09e79a89bf89) + + Conflicts: + + test/Makefile.am + + Signed-off-by: Chase Douglas + +commit 378fb64a547a6ad2be4451a7aa634a3c91038644 +Author: Peter Hutterer +Date: Thu Dec 15 08:30:02 2011 +1000 + + xfree86: bump the input ABI for the touch changes + + New additions to the API: + - InitTouchClassDeviceStruct + - xf86PostTouchEvent + + Changes to the ABI: + - DeviceIntRec now contains a TouchClassPtr + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 1a133eb8b1ddbe0da7c2fbf7f6a686ec4512373e) + + Conflicts: + + hw/xfree86/common/xf86Module.h + + Signed-off-by: Chase Douglas + +commit 508df2ddd779504c3fef213e2a2d1a1ed61104c1 +Author: Daniel Stone +Date: Wed Dec 14 12:46:40 2011 +1000 + + input: add a TouchClassRec to the devices + + These structs will be used to store touch-related data, events and + information. + + Drivers must call InitTouchClassDeviceStruct to set up a multi-touch capable + device. + + Touchpoints for the DDX and the DIX are handled separately - touchpoints + submitted by the driver/DDX will be stored in the DDXTouchPointInfoRec. Once + the touchpoints are processed by the DIX, new TouchPointInfoRecs are created + and stored. This process is already used for pointer events with the + last.valuators field. + + Note that this patch does not actually add the generation of touch events, + only the required structs. + + TouchListeners are (future) recipients of touch or emulated pointer events. + Each listener is in a state, depending which event they have already + received. The type of listener defines how the listener got to be one. + + Co-authored-by: Peter Hutterer + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 3fb258ca28850c998097b55884774cb95f476f69) + + Backported swap macros for SwapTouchInfo. + + Signed-off-by: Chase Douglas + +commit db04a6a8ea22c43daea1c26892694d89e7644c1c +Author: Daniel Stone +Date: Wed Dec 14 14:41:48 2011 +1000 + + Add the touch input API stubs + + xf86PostTouchEvent is the driver API to submit touch events to the server. + This API doesn't do anything yet though but now we can at least bump the + API. + + For valuators, drivers should use the existing xf86InitValuatorAxisStruct + function. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 098b837440e40bbc485368ec9658e12efd6ef581) + + Signed-off-by: Chase Douglas + +commit 2e040f9bb00c8dbeda5cfbf768c618e23c2a25b1 +Author: Peter Hutterer +Date: Wed Dec 14 13:51:12 2011 +1000 + + Hook up the ownership events + + This patch applies most of the protocol conversions and the internal event + type for ownership events. + + Note that ownership events are generated by the DIX only, they do not pass + through the event queue. + + Co-authored-by: Daniel Stone + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 93c2a1628a9f6e7480d834bf55c080997fd18911) + + Backported swap macros in STouchOwnershipEvent. + + Signed-off-by: Chase Douglas + +commit bb67773ce0ee49f80de8828777285780a64ea60d +Author: Peter Hutterer +Date: Wed Dec 14 13:21:59 2011 +1000 + + Xi: process raw touch events + + No-one can generated them yet, but if they could, we'd be processing them + like there was no tomorrow. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 3390d3fc0347947796aa245d70fefecf59b7bfe4) + + Signed-off-by: Chase Douglas + +commit e7298a1fefc4b6083d6c5a45bf1f992e4e6c2233 +Author: Peter Hutterer +Date: Wed Dec 14 12:45:28 2011 +1000 + + Hook up TouchBegin/Update/End events + + The are the same as device events internally but require the touch ID + separately from the detail.button field (the protocol uses the detail field + for the touch id). + For simpler integration of pointer emulation we need to set the + detail.button field while keeping the touchid around. + + Add the three new touch event types to the various places in the server + where they need to be handled. The actual handling of the events is somewhat + more complicated in most places. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 84db813b9db34975b5fe288a8a551bb98f0cc1c1) + + Signed-off-by: Chase Douglas + +commit 1274c19c51b08cb8ad42f1655cf13112c06ad7ca +Author: Peter Hutterer +Date: Wed Dec 14 15:00:33 2011 +1000 + + include: add a bunch of flags for GetTouchEvent processing + + TOUCH_CLIENT_ID is set if the touch was generated from a client ID instead + of a DDX/driver touch ID. i.e. submitted by the dix. + + TOUCH_END is a special flag that's required to force the touch to end. + Since the protocol with grab replaying and pointer emulation is rather + complex, it's quite hard to know otherwise when a touch sequence should + really die. + + The others do what it says on the imaginary box. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 92a5862d0c120b009a688237ec7142b7c21ae272) + + Signed-off-by: Chase Douglas + +commit 092f816c7f36fd22b5ec09a720327474c9ac5a16 +Author: Peter Hutterer +Date: Wed Dec 14 12:19:27 2011 +1000 + + include: RawTouchEnd is the last event now + + Plus, use the actual definition from the protocol instead of the numeric + values. Turns out not everyone knows the protocol event IDs by heart. + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 956a97487beada8cf5f354550ff779635cc64361) + + Signed-off-by: Chase Douglas + +commit 73c74a9b5ec4e22698a5ba1e31e84c7305160054 +Author: Peter Hutterer +Date: Wed Dec 14 12:15:29 2011 +1000 + + tests: update for touch support + + Touch event mask must be set for all three event types. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Chase Douglas + (cherry picked from commit 92c6c0c1d2d6a8882ed97b0e7f2952978ee5ce82) + + Signed-off-by: Chase Douglas + +commit 7452df21f4131365efd9fffd7dfff03bb1ad965a +Author: Peter Hutterer +Date: Wed Dec 14 10:41:17 2011 +1000 + + Require inputproto 2.1.99.3 + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Chase Douglas + (cherry picked from commit 731b1db2fcc82c0a8afd28d7f28363c1db0a20ce) + + Conflicts: + + configure.ac + + Signed-off-by: Chase Douglas + +commit cb61ae915cbfc34697ed527bb87f4eeb1f9b61da +Author: Peter Hutterer +Date: Wed Nov 2 10:38:26 2011 +1000 + + Xi: add a FIXME + + All the DeepCopy stuff really needs to be shared between the init calls the + drivers use and this code here. Too many bugs by not keeping the two in + sync. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Chase Douglas + (cherry picked from commit 4c825eae89063fdc2241f92ab4101ba682b5b4b7) + + Signed-off-by: Chase Douglas + +commit 5a9d46a4afdfb726185e437eb7f071e10b7ca5b6 +Author: Peter Hutterer +Date: Wed Dec 14 13:21:03 2011 +1000 + + Xi: split ProcessOtherEvent into ProcessDeviceEvent + + No functional changes. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Chase Douglas + (cherry picked from commit 0b9d2e426defabbf6df7e872e158b080a6a5e0be) + + Signed-off-by: Chase Douglas + +commit 01d34fb8bbeca48be09247a25fd54060da80725d +Author: Peter Hutterer +Date: Fri Dec 16 09:52:43 2011 +1000 + + dix: split positionSprite into scale_to_desktop and positionSprite + + For future touch points, we need positionSprite to calculate the coordinates + but we don't want to actually change the cursor position for non-emulating + touches. + + No functional changes at this point. + + Signed-off-by: Peter Hutterer + Reviewed-by: Jamey Sharp + Reviewed-by: Chase Douglas + (cherry picked from commit 190a6f45ee7412870b3d95c5db6c1079a285bc59) + + Signed-off-by: Chase Douglas + +commit a303ee4bb638e58f32ceb5f606db6879c1c16a77 +Author: Peter Hutterer +Date: Thu Dec 15 10:19:26 2011 +1000 + + include: fix BUG_WARN_MSG for constant messages only + + Previous declaration required the use of a message + printf varargs. We + obviously want to allow the use of just a message. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + (cherry picked from commit ff6d9c79c1aa502f1aef81d8063425e5fc002534) + + Signed-off-by: Chase Douglas + +commit 17d456955ca912ff6536b7cff2f491f8b951e35e +Merge: ce03688 625d108 +Author: Chase Douglas +Date: Wed Dec 21 12:30:03 2011 -0800 + + Merge remote-tracking branch 'upstream/server-1.11-branch' into upstream-1.11+input + +commit 625d1088192a9ad972c20fbdbcb4bb9fda979157 +Author: Peter Hutterer +Date: Fri Dec 16 09:15:25 2011 -0500 + + dmx: force -fno-strict-aliasing for xinput example + + Compiler warning: + xinput.c:272: warning: dereferencing pointer 'e' does break strict-aliasing + rules + + The code itself is the usual XInput client-side code: + XEvent event; + XDeviceMotionEvent *e = (XDeviceMotionEvent *)&event; + XNextEvent(display, &event); + printf("%d\n", e->type); + + Since XDeviceMotionEvent is not guaranteed the same size as XEvent, clients + must use pointer aliasing as above when using the XNextEvent API. Disable + strict aliasing for this example. + + Reviewed-by: Peter Hutterer + Reviewed-by: Gaetan Nadon + Signed-off-by: Peter Hutterer + Signed-off-by: Gaetan Nadon + Signed-off-by: Keith Packard + (cherry picked from commit 3aca8199405cff5097ee5813605ec78b5ae44a43) + +commit ce03688df5447e6634667a32785276105c31230e +Author: Peter Hutterer +Date: Fri Dec 16 12:41:08 2011 +1000 + + dix: button state must show the logical buttons, not physical buttons + + If the device is mapped 3 2 1, a click on physical button 1 sends a button 3 + press, but the state was set for button 1. Fix this, the state must be set + for that button's logical mapping. + + https://bugzilla.gnome.org/show_bug.cgi?id=655928 + + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit fcda98c48610fd507ca0b89c6006a5497d9dc1c9) + + Signed-off-by: Chase Douglas + +commit d2178c5f2931363c8626ee27352235aa5688931d +Author: Peter Hutterer +Date: Mon Dec 19 14:52:41 2011 +1000 + + dix: don't retrieve the syncEvents tail on an empty list + + An empty list points to itself but syncEvents has the list head only and is + of a different format than the elements. Thus, casting it to a QdEventPtr + gives us garbage. + + Segfaults with XTS test case Xlib13/XGrabKeyboard + + Introduced in 7af23259d88f4c28ed21140f82cc03b3724c06bb. + + Reported-by: Aaron Plattner + Signed-off-by: Peter Hutterer + Reviewed-by: Chase Douglas + (cherry picked from commit 47da6b6b2c2e9245422655f94770146fb8cd430b) + + Signed-off-by: Chase Douglas + +commit 53e347b22bb79043243e25891cd7d6f374a8aa23 +Author: Keith Packard +Date: Tue Nov 8 10:13:15 2011 -0800 + + Save major/minor opcodes in ClientRec for RecordAReply + + The record extension needs the major and minor opcodes in the reply + hook, but the request buffer may have been freed by the time the hook + is invoked. Saving the request major and minor codes as the request is + executed avoids fetching from the defunct request buffer. + + This patch also eliminates the public MinorOpcodeOfRequest function, + inlining it into Dispatch. Usages of that function have been replaced + with direct access to the new ClientRec field. + + Signed-off-by: Keith Packard + Reviewed-by: Jamey Sharp + (cherry picked from commit fb22a408c69a84f81905147de9e82cf66ffb6eb2) + + Conflicts: + + include/extension.h + +commit b736f8c92bae7773ff6e1fca886f9ccc50156488 +Author: Julien Cristau +Date: Sat Nov 5 13:00:07 2011 +0100 + + Fix ShmPutImage for XYBitmap + + We can't call CopyArea in that case because the image has depth 1, which + might not match the target drawable, so we might overrun the shm + segment. Commit 11817a881cb93a89788105d1e575a468f2a8d27c apparently + fixed a similar bug for XYPixmap, but missed the bitmap case. + + Fixes: http://bugs.debian.org/629611 + + Thanks to Alan Curry for diagnosing this and providing a test case. + + Reported-and-tested-by: Alan Curry + Reviewed-by: Peter Harris + Signed-off-by: Julien Cristau + (cherry picked from commit 08ec4da6a7617637914bee1636858474213cf39d) + +commit b2a4c09507b267495ea5e4c2e05373b323c80edf +Author: Jeremy Huddleston +Date: Sat Dec 17 12:56:59 2011 -0800 + + kdrive/linux: Fix compilation with -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast + + Reported-by: Arkadiusz Miśkiewicz + Signed-off-by: Jeremy Huddleston + Reviewed-by: Jamey Sharp + (cherry picked from commit 1deede3c48d5ac91f50774c79f02afc6e036614e) + +commit beaa7ad2ec45811e16722283a8b557a08e91ef18 +Author: Jeremy Huddleston +Date: Sat Dec 17 12:25:26 2011 -0800 + + configure.ac: Make Xephyr dependency error message more informative + + Signed-off-by: Jeremy Huddleston + Reviewed-by: Jamey Sharp + (cherry picked from commit d0170d54c71fc761b8f1ae7a0e555dc2ca23cf9c) + +commit 41524dd61020f2a446ec54643fa17aa791338cac +Author: Jeremy Huddleston +Date: Fri Dec 16 17:47:46 2011 -0800 + + configure.ac: 1.11.3 + + Signed-off-by: Jeremy Huddleston + +commit ee66474eb2009118a41539c6773e514a09d27e4d +Author: Gaetan Nadon +Date: Fri Dec 9 07:45:02 2011 -0500 + + dmx: fix distcheck failure, missing compsize.h in Makefile.am + + which was added in commit: + dmx: Build fix for -Werror=implicit-function-declaration + + Reviewed-by: Peter Hutterer + Signed-off-by: Gaetan Nadon + Signed-off-by: Keith Packard + (cherry picked from commit 2c1d0a539c0fb1860ac89a00d1fb609f1959e1b6) + +commit 3eaf942e727652db144d055a08ac2deb93c86105 +Author: Keith Packard +Date: Wed Dec 14 11:40:10 2011 -0800 + + Merge remote-tracking branch 'whot/for-keith' + (cherry picked from commit 7da7aa96a0acb895e1fe57a9d3f2d093479cf2a2) + + Signed-off-by: Chase Douglas + +commit 481c6f70eb9889fa52e9ac2cc2805101ff2b8777 +Author: Chase Douglas +Date: Tue Dec 13 17:39:20 2011 -0800 + + A few random fixes that are needed due to backport cherry-picking + + Signed-off-by: Chase Douglas + +commit a44c1d329d1284939f9948161838193e9de2ef4f +Author: Alan Coopersmith +Date: Thu Dec 8 21:52:07 2011 -0800 + + Change disable_clientpointer return type to void + + It doesn't return anything, nor does it's caller expect it to. + + Fixes Solaris Studio compiler error: + "xichangehierarchy.c", line 214: Function has no return statement : disable_clientpointer + + Signed-off-by: Alan Coopersmith + Reviewed-by: Peter Hutterer + Signed-off-by: Keith Packard + (cherry picked from commit 372a6f10dc2d74d2d179e8b92449e9b8636a99ef) + + Signed-off-by: Chase Douglas + +commit 77cae4b31f9e22210d3b98dfd2f413818915ffc3 +Author: Keith Packard +Date: Thu Dec 8 20:57:26 2011 -0800 + + Merge remote-tracking branch 'whot/for-keith' + (cherry picked from commit 522f8bcc0360d6a117e929a004bc956ab92037e9) + + Conflicts: + + hw/xfree86/common/xf86Module.h + include/input.h + + Signed-off-by: Chase Douglas + +commit 9963b023509a8ec3ff33700faf331994b14bbd84 +Author: Keith Packard +Date: Thu Dec 1 14:36:58 2011 +0000 + + Merge remote-tracking branch 'whot/for-keith' + (cherry picked from commit 3197b773c81e58cd4aa412eccaee49526012ed6f) + + Signed-off-by: Chase Douglas + +commit cec13888543742bed1bee9edad0e7ad96b911539 +Author: Alan Coopersmith +Date: Tue Nov 1 16:56:18 2011 -0700 + + Make XIGetKnownProperty take a const char * argument + + Now that MakeAtom takes const char *, so can XIGetKnownProperty. + Clears 71 warnings from gcc -Wwrite-strings of the form: + devices.c:145:5: warning: passing argument 1 of 'XIGetKnownProperty' discards qualifiers from pointer target type + ../include/exevents.h:128:23: note: expected 'char *' but argument is of type 'const char *' + + Signed-off-by: Alan Coopersmith + Reviewed-by: Peter Hutterer + (cherry picked from commit 5f285a30a1d6ffba82ebe5e08a0b68352bb51556) + + Signed-off-by: Chase Douglas + +commit 92f7f64c91c07ce5a74e5714166ce2372301e807 +Author: Alan Coopersmith +Date: Mon Oct 24 23:40:45 2011 -0700 + + Enable memory checking during unit testing + + If configure is generated with xorg-macros 1.16.0 or newer, and + an appropriate memory checking library is found for the platform, + use it when running unit tests. If not, then no harm is done. + + Signed-off-by: Alan Coopersmith + Reviewed-by: Jeremy Huddleston + (cherry picked from commit e47aa9475027ed6a255daefec85561c6b15789bd) + + Signed-off-by: Chase Douglas + +commit 3ea81b1d44befe9fa51bb3fefb51bba5b4a67454 +Author: Alan Coopersmith +Date: Tue Oct 25 00:12:48 2011 -0700 + + Don't require ld -wrap for tests that don't need it + + If configure is generated with xorg-macros 1.16 or later, this allows + builders to --enable-unit-test and run the tests other than the xi2 + tests which require ld -wrap (and are still wrapped in if HAVE_LD_WRAP + in tests/xi2/Makefile). If an older xorg-macros is used, the existing + behaviour is preserved of requiring ld -wrap for all unit tests, but + no side effects occur, so the minimum xorg-macros version is not raised. + + If unit testing is enabled without ld -wrap, then we create a bogus + "xi2-tests" script just to report that we're skipping them. + + Signed-off-by: Alan Coopersmith + Reviewed-by: Jeremy Huddleston + (cherry picked from commit 36670065bd74b870d0da7c6a69a9c0d222b21706) + + Signed-off-by: Chase Douglas + +commit 8eece5a0ef9547a247872419a63c81a9d6cf0223 +Author: Peter Hutterer +Date: Mon Aug 1 14:14:02 2011 +1000 + + input: replace remaining GetPairedDevice() with GetMaster() + + Wherever it's obvious which device we need (keyboard or pointer), use + GetMaster() instead of GetPairedDevice(). It is more reliable in actually + getting the device type we want. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 35ec24cf245e5ef676e98a0bf7c77296a3f1ff63) + + Signed-off-by: Chase Douglas + +commit 4b7dd4523c11ef4952b78e4164b2fa7b34588867 +Author: Peter Hutterer +Date: Tue Nov 1 12:17:50 2011 +1000 + + xfree86: duplicate name and driver from pInfo for NewInputDeviceRequest + + xorg.conf devices had the name and driver set in the DDX's InputInfoPtr list + but not in the option list for those devices. That information was lost when + passing the options into NewInputDeviceRequest. NIDR then refused to start + the devices. + + Introduced in xorg-server-1.11.0-250-ge4cd24e + + Signed-off-by: Peter Hutterer + Tested-by: James Cloos + (cherry picked from commit c643c2b7bf480f5c27ff8606bda087f8bff3b154) + + Signed-off-by: Chase Douglas + +commit cb5044370af84c760feeb32522d98e157f88fb6a +Author: Keith Packard +Date: Wed Nov 2 21:20:07 2011 -0700 + + Merge remote-tracking branch 'whot/two-screen-coordinates' + (cherry picked from commit d91aa0e6601bdf3e2cfa57b3412ab14ac486edc4) + + Conflicts: + + dix/dispatch.c + dix/inpututils.c + hw/xfree86/common/xf86Xinput.h + + Signed-off-by: Chase Douglas + +commit 5f6416463b2acb5e434eb1e2209f79b2040e9fae +Author: Dave Airlie +Date: Thu Oct 27 08:38:45 2011 +1000 + + test: fix two more failing FP3232 tests + + And put a comment in to explain why we're testing for a frac between .3 and + .6. We can't directly compare the frac since the floating/fixed point + conversion loses precision. + + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + (cherry picked from commit 005ab41986b0bb6a4e626aee7a7a542247f422e7) + + Signed-off-by: Chase Douglas + +commit 869bd27ab17d46f3982ea4930d861b616fc90330 +Author: Alexandr Shadchin +Date: Sat Oct 29 00:14:32 2011 +0600 + + Fix position _X_EXPORT + + Signed-off-by: Alexandr Shadchin + Reviewed-by: Alan Coopersmith + Signed-off-by: Keith Packard + (cherry picked from commit 91131037a2d2e07079de5d222d8a8c95300750cc) + + Signed-off-by: Chase Douglas + +commit c8e249e5bd0dee563effb7ae58d97b0e1d5865d1 +Author: Peter Hutterer +Date: Thu Oct 20 16:42:20 2011 +1000 + + Use new FP1616/FP3232 conversion functions + + Signed-off-by: Peter Hutterer + Reviewed-by: Jeremy Huddleston + (cherry picked from commit ffe20acedb3cdc4811eb52f8fc540ba6af7339fa) + + Signed-off-by: Chase Douglas + +commit 11b244ab6ea1dd2a8655d1fd5d1e2055531bf0fe +Author: Peter Hutterer +Date: Thu Oct 20 16:49:28 2011 +1000 + + test: fix test with new double -> fp3232 conversion functions + + Signed-off-by: Peter Hutterer + Tested-by: Dave Airlie + Reviewed-by: Dave Airlie + (cherry picked from commit 7500d841f4c709ae0edc6420332096d3b9ef9fcc) + + Signed-off-by: Chase Douglas + +commit dc06150807ecd57d13959fbfda87b0512efed91a +Author: Peter Hutterer +Date: Wed Oct 19 13:17:51 2011 +1000 + + Xi: send DeviceChangedEvents when the scroll valuators change value + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 4bb5d8fae4f9a70f12591315f0b267a2ea826a0c) + + Signed-off-by: Chase Douglas + +commit 1036c8b3233766a9a7e392a5c11d2972efcea81c +Author: Peter Hutterer +Date: Wed Oct 19 12:28:37 2011 +1000 + + dix: accept a NULL master for CreateClassesChangedEvent + + If a floating device changes, the master is NULL but we must still create a + DCE for it. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 1f4af6c12fb5d4c19f4eac3df768517c9132cc88) + + Signed-off-by: Chase Douglas + +commit a3e6b576402e02c5b03483f96c8eaf72ebcd73fb +Author: Peter Hutterer +Date: Wed Oct 19 12:11:16 2011 +1000 + + Xi: ensure the deviceid for DeviceChangedEvents is always the right one + + If we're sending the event for a given device, make sure the deviceid is + that of the device. + This allows callers to use the same DCE for slave and master without having + to fiddle the DCE's internal fields. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit d77dec6971e4a0b306c8dbd5adf627908d7972cb) + + Signed-off-by: Chase Douglas + +commit 740d7e37a1e2d3b2f955f95276f746afe43515ec +Author: Peter Hutterer +Date: Tue Oct 18 17:47:59 2011 +1000 + + dix: pass the flags into the CreateClassesChangedEvent + + No effective functional changes, prep work for future patches. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit e9dee21fa3213bfe87b2b728a38eb41d3ba0e664) + + Signed-off-by: Chase Douglas + +commit 4d7824db35c4121a6a3a9560981c8f6f3826f8bf +Author: Peter Hutterer +Date: Tue Oct 18 17:41:29 2011 +1000 + + dix: drop unused argument from XISendDeviceChangedEvent + + Instead of device and master (and just using master), drop the master + argument and let the callers pass in the device the event is to be sent for. + + No effective functional changes. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit fcdd2587a17437b643b4592aa7f65d11c05a4cd8) + + Signed-off-by: Chase Douglas + +commit 5647fd210d0d7d7c723689f95c84eeb968339b7e +Author: Peter Hutterer +Date: Tue Oct 18 17:11:27 2011 +1000 + + dix: add ScrollInfo to DeviceChangedEvents + + 3304bbff9b4ed63f1a47410a5320a136420ba2c6 added smooth scrolling support for + pointer events and for XIQueryDevice but didn't add the matching parts to + XIDeviceChangedEvents. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 8473e441b0f832775153281bc3df5e2d4feb2b36) + + Signed-off-by: Chase Douglas + +commit e3744f444174c63d0a297e2127c9437483a84546 +Author: Andreas Wettstein +Date: Thu Aug 11 16:33:33 2011 +1000 + + xkb: Support noLock and noUnlock flags for LockMods + + These flags are required by the XKB spec section 6.3. + + Signed-off-by: Andreas Wettstein + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit e3f6a76dd480717eae4b17ad8e2ff707de2ffe4c) + + Signed-off-by: Chase Douglas + +commit c6325a9d104029ae7e7045b7a8a0612b1da802f9 +Author: Peter Hutterer +Date: Fri Oct 21 09:09:55 2011 +1000 + + xfree86 doc: replace driver "keyboard" with "kbd" + + We've deprecated keyboard a long time ago + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + (cherry picked from commit 6f33593dc087d367d899d1cb6e6e30b282d922e2) + + Signed-off-by: Chase Douglas + +commit 7ee1621364d2b6230bb1c02bbdb5b6abb74ad2ff +Author: Peter Hutterer +Date: Fri Aug 5 14:48:02 2011 +1000 + + xfree86: use NewInputDeviceRequest for xorg.conf devices too + + Only use one init path for input devices - through NIDR. + + This requires that inp_driver and inp_identifier from the + XF86ConfInputRec are copied over into the options for NIDR to see them. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit e4cd24e717ef1059804b3f6bb483810b708cd56a) + + Signed-off-by: Chase Douglas + +commit 2d2cf90360126ddf9c3d404568bafacbc7456d84 +Author: Peter Hutterer +Date: Wed Aug 10 14:37:41 2011 +1000 + + dix: move #if statement to stop compiler warning + + ptrveloc.c: In function 'QueryTrackers': + ptrveloc.c:598:34: warning: variable 'used_offset' set but not used + [-Wunused-but-set-variable] + + used_offset is used, but only in the debugging code. Move the #if statement + to ignore that warning. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Daniel Stone + (cherry picked from commit 1ecc427a39d41e723912492b846512fd0ad9af2d) + + Signed-off-by: Chase Douglas + +commit 9c5d621fc6a6c0c067c0a7de8872771271985554 +Author: Peter Hutterer +Date: Fri Aug 5 14:05:58 2011 +1000 + + xfree86: Fix a comment, the old function doesn't exist anymore + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Daniel Stone + (cherry picked from commit f9067c1dd8ce9058eb48a20dfae52bc8cf3a1e55) + + Signed-off-by: Chase Douglas + +commit c3deb23e59a4d93899a8e9025fd0215a4a4d7723 +Author: Peter Hutterer +Date: Wed Aug 10 15:58:34 2011 +1000 + + xfree86: use xf86AddNewOption instead of xf86addNewOption + + The former strdups for us. If the strdup fails we miss out on the + CorePointer option (default on anyway) and we're likely to fall over soon + anyway, so let's pretend this is the same behaviour. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + Reviewed-by: Daniel Stone + (cherry picked from commit aeab26e9e1751e1e3514798fa53e9bd604b0d254) + + Signed-off-by: Chase Douglas + +commit 58c411bd0f5d867f21f98c965deb054404211780 +Author: Jeremy Huddleston +Date: Mon Oct 17 23:45:32 2011 -0700 + + test: Add unit test for mieq + + Signed-off-by: Jeremy Huddleston + Reviewed-by: Peter Hutterer + (cherry picked from commit 4597ac6fe0580323860080dae2576733acc49757) + + Conflicts: + + test/input.c + + Signed-off-by: Chase Douglas + +commit ab7c89d52bf043d7eaa1a5adecf2412fac048325 +Author: Jeremy Huddleston +Date: Mon Oct 17 21:16:37 2011 -0700 + + mieq: Reserve some space in EQ for release and other special events + + The last 64 events in the event queue will be reserved for release + events in order to help return the system to a cleaner state when + it comes back from a soft wedge. + + Signed-off-by: Jeremy Huddleston + Reviewed-by: Peter Hutterer + (cherry picked from commit ad450d76e468cd62406c4f09e71e131f7ff4555c) + + Signed-off-by: Chase Douglas + +commit 1ecb0b451bb622d22b4a34b0c60a5caee8ca5137 +Author: Jeremy Huddleston +Date: Sat Oct 15 22:51:30 2011 -0700 + + mieq: Provide better adaptability and diagnostics during mieq overflow + + This patch changes from a static length event queue (512) to one that + starts at 128 and grows to 4096 as it overflows, logging each time it + grows. + + This change also allows for multiple backtraces to be printed when the + server is wedged rather than just one. This increased sampling should + help identify the true hog in cases where one backtrace might be + insufficient. + + Signed-off-by: Jeremy Huddleston + Reviewed-by: Peter Hutterer + (cherry picked from commit 7d153f25be678acf500236ae422b33d17e6cb7a6) + + Signed-off-by: Chase Douglas + +commit 809ff8badee654467329182e21fc35db0f01704c +Author: Jeremy Huddleston +Date: Wed Oct 5 15:02:52 2011 -0700 + + test: Silence some debug lines from the input unit tests + + Signed-off-by: Jeremy Huddleston + Reviewed-by: Peter Hutterer + (cherry picked from commit a046d649e4c7e4d28f350382dcdd293e92a59aad) + + Signed-off-by: Chase Douglas + +commit 3c12875447cbe24664ae5578df832110e58fb76f +Author: Keith Packard +Date: Wed Oct 19 17:26:50 2011 -0700 + + Merge remote-tracking branch 'whot/for-keith' + (cherry picked from commit 15bbdc103b34b6b374815698946e6c409421a644) + + Signed-off-by: Chase Douglas + +commit e4b0c485ff3dafc90e0171ad49f88345193e3b7a +Author: Dave Airlie +Date: Wed Oct 12 09:59:38 2011 +0100 + + test: fix input test + + The test was memsetting the wrong thing, this fixes make check in my tinderbox. + + Signed-off-by: Dave Airlie + Reviewed-by: Daniel Stone + Reviewed-by: Jeremy Huddleston + (cherry picked from commit 1433103a49b97e356da0f20aa65046cdb2f5ece6) + + Signed-off-by: Chase Douglas + +commit 44431b35e6fe1e8ab3152b784a951d9c54b72242 +Author: Jeremy Huddleston +Date: Wed Oct 5 15:02:52 2011 -0700 + + dix: add utility functions for double to/fro FP1616/FP3232 conversion + + Co-authored-by: Jeremy Huddleston + Signed-off-by: Peter Hutterer + Reviewed-by: Peter Hutterer + Reviewed-by: Jeremy Huddleston + Reviewed-by: Mark Kettenis + (cherry picked from commit f9c6903d4a90b59c328f4fa05d2be9e0ce1c5189) + + Conflicts: + + test/input.c + + Signed-off-by: Chase Douglas + +commit ddf22daa6f7f4c7c01e95cd11218e7357fdda337 +Author: Keith Packard +Date: Mon Oct 17 13:50:25 2011 -0700 + + Merge remote-tracking branch 'whot/next' + (cherry picked from commit fb84be47db7cdaff406792c08e34670e8e0cbda9) + + Conflicts: + + dix/inpututils.c + include/input.h + + Signed-off-by: Chase Douglas + +commit cf4e91a4c8a9dd227dce2a9fe15e507b7ae844e4 +Author: Keith Packard +Date: Mon Oct 3 11:36:28 2011 -0700 + + Merge remote-tracking branch 'whot/next' + (cherry picked from commit f5d50b46ddeb039ab6564141f61261e94ee67637) + + Conflicts: + + hw/xfree86/common/xf86Xinput.h + test/xi2/protocol-eventconvert.c + + Signed-off-by: Chase Douglas + +commit a17c72bc0ed96441662a8d827220d389041bbafb +Author: vdb@picaros.org +Date: Wed Aug 31 07:23:01 2011 +0200 + + xfree86: .BI style: monitor section in xorg.conf man page + + The xorg.conf manual uses the following convention in most of its + sections: + + bold = text to be copied literally to the config file, + italic = a symbolic name to be substituted by a true value. + + Some configuration keywords seem to have been changed into generic + options. Prepending Option to the manual entry swapped the + bold-italic logic. This patch restores the convention in the monitor + section and consists of + + -.BI "Option " "\*qPreferredMode\*q " \*qstring\*q + +.BI "Option \*qPreferredMode\*q \*q" name \*q + + modifications. + + Plus a few minor changes (Modes → Mode) and a typo fix. + + Signed-off-by: Servaas Vandenberghe + Reviewed-by: Peter Hutterer + Signed-off-by: Peter Hutterer + (cherry picked from commit c7163fdd302f706a3d67f0fdf93eeb3396bb3332) + + Signed-off-by: Chase Douglas + +commit f5be70465e8125bb30596761207e16d5487161e2 +Author: Peter Hutterer +Date: Tue Sep 6 09:33:43 2011 +1000 + + xfree86: expose Option "TransformationMatrix" + + Recent changes to the server change the default absolute input device + behaviour on zaphods to span the whole desktop too. Since these setups + usually use an xorg.conf, allow the transformation matrix to be specified in + the config as well. + + Signed-off-by: Peter Hutterer + Reviewed-by: Simon Thum + (cherry picked from commit 4b4caecb7d2c8e0b7e4fedc95fba2a728bbc25e6) + + Signed-off-by: Chase Douglas + +commit 6f1775f76248561367cb908207f05b9e7ab74864 +Author: Peter Hutterer +Date: Tue Sep 6 09:39:01 2011 +1000 + + xfree86: use subheader for Pointer Acceleration parts in xorg.conf(5) + + Signed-off-by: Peter Hutterer + (cherry picked from commit cf51424a34fb2b567a867338ab44f83b5c43251c) + + Signed-off-by: Chase Douglas + +commit dee2412a68e04d43c86c2aa7a4e1f70ee98f4a60 +Author: Peter Hutterer +Date: Mon Sep 5 15:43:14 2011 +1000 + + xfree86: fix comment typo + + Signed-off-by: Peter Hutterer + (cherry picked from commit 9125952b407090b040bffb3d752288293137cf77) + + Signed-off-by: Chase Douglas + +commit e36277e9e31190d403e1ddb44539ab262cf0eea2 +Author: Peter Hutterer +Date: Mon Aug 8 15:21:46 2011 +1000 + + Add null-terminated list interface. + + This is a set of macros to provide a struct list-alike interface for classic + linked lists such as the XF86OptionRec or the DeviceIntRec. The typical + format for these is to have a "struct foo *next" pointer in each struct foo + and walk through those. These macros provide a few basic functions to add to, + remove from and iterate through these lists. + + While struct list is in some ways more flexible, switching legacy code to + use struct list is not alway viable. These macros at least reduce the amount + of open-coded lists. + + Signed-off-by: Peter Hutterer + Reviewed-by: Alan Coopersmith + (cherry picked from commit fcafe825751bef99f4c0b36250ca6f15f127502f) + + Signed-off-by: Chase Douglas + +commit 4cc88f2c59eb21689ecba221bc0eaeaa46e7374d +Author: Peter Hutterer +Date: Fri Aug 12 15:55:48 2011 +1000 + + xfree86: comment typo fix + + in synch → in sync + + Signed-off-by: Peter Hutterer + (cherry picked from commit 79ca7c0b5786a02a80a1c40ed475e928da7c82b3) + + Signed-off-by: Chase Douglas + +commit 95bc0b5705bb0e78a9cb2aaaf8d7ba61af21450c +Author: Peter Hutterer +Date: Fri Jul 29 16:33:54 2011 +1000 + + dix: don't XWarpPointer through the last slave anymore (#38313) + + This line was introduced pre-1.6 to fix Bug 19297. The effect of warping + through the VCP then was that if a device had custom valuator ranges, the + warp position would be wrong. The better device for this effect is the the + XTest device. + + This fixes a server crash where the lastSlave is a pointer device without + valuators (Bug 38313#0). + + And while we're at it, make sure the Xinerama code-path does the same. + + X.Org Bug 38313 + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 2bfb802839688ecf328119c4c6979390fc60348d) + + Signed-off-by: Chase Douglas + +commit 0bfa207c31ce962e7373a3e9c0d4e4764474c867 +Author: Peter Hutterer +Date: Thu Aug 11 10:59:07 2011 +1000 + + dix: use helper functions in EventIsDeliverable + + Proximity events don't have an XI2 type and caused error messages in the + log when trying to get the event filter. Use this opportunity to + clean up the code, instead of manually setting the fields that + GetEventFilter requires use EventTo(XI2|XI|Core) instead. + + Co-Authored-by: Keith Packard + Signed-off-by: Peter Hutterer + Reviewed-by: Keith Packard + (cherry picked from commit 3be379f5076566edaf92c27df5a4d447bcf5d015) + + Signed-off-by: Chase Douglas + +commit d6b224872b2a950c91cab3369a1d18015376e3a7 +Author: Peter Hutterer +Date: Thu Aug 11 10:57:05 2011 +1000 + + dix: abstract XI2 filter mask lookup + + Don't access the xi2mask bytes directly or calculate the offsets manually, + use a few helper functions instead. XI2 masks are a bit weird in the event + handling code since they slot onto the legacy code. For core/XI 1.x events, + the event mask is a CARD32. That mask is used together with the event filter + (also 32 bit) to determine if event delivery should be attempted. + XI2 masks are of arbitrary size and their mask is simply the byte of the + mask that contains the event mask. Likewise, the filter is a single byte + matching that mask. Provide helper functions get these bytes and masks in + the right order instead of accessing them manually. + + EventIsDeliverable should be part of this cleanup patch but it will be + gutted with the next patch. + + Co-Authored-by: Keith Packard + Signed-off-by: Peter Hutterer + Reviewed-by: Keith Packard + (cherry picked from commit 799879797505a5e891ccaec2bea73fd838c94b7a) + + Signed-off-by: Chase Douglas + +commit 3df4cf9f986a1758972d47e1a4955dd6148bb9bf +Author: Peter Hutterer +Date: Wed Aug 3 15:07:23 2011 +1000 + + input: provide a single function to init DeviceEvents to 0 + + getevents.c already had that function, but XKB was manually initializing it, + causing bugs when the event structure was updated in one place but not the + other. + + Signed-off-by: Peter Hutterer + (cherry picked from commit 3a077f246e9ac07a37c1b01c3d321e0f5ceb4153) + + Signed-off-by: Chase Douglas + +commit 93b29777be13d2d1055b6a4d191b4dd03e953961 +Author: Peter Hutterer +Date: Mon Aug 1 14:20:53 2011 +1000 + + dix: fix compiler warnings ("foo" set but not used) + + devices.c: In function 'AttachDevice': + devices.c:2409:18: warning: variable 'oldmaster' set but not used + [-Wunused-but-set-variable] + + events.c: In function 'ConfineToShape': + events.c:683:15: warning: variable 'pSprite' set but not used + [-Wunused-but-set-variable] + + events.c: In function 'ProcGrabPointer': + events.c:4759:15: warning: variable 'time' set but not used + [-Wunused-but-set-variable] + + getevents.c: In function 'GetMotionHistory': + getevents.c:425:9: warning: variable 'dflt' set but not used + [-Wunused-but-set-variable] + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 4b376ddeb4f3c9d9d279ffd2946d88edd5af4cfc) + + Signed-off-by: Chase Douglas + +commit af899fc57c08a3f7bbf033204b2fb0aacc5f0aa4 +Author: Peter Hutterer +Date: Mon Aug 1 14:27:54 2011 +1000 + + mi: fix compiler warnings ("foo" set but not used) + + misprite.c: In function 'miSpriteSaveUnderCursor': + misprite.c:940:12: warning: variable 'y' set but not used + [-Wunused-but-set-variable] + misprite.c:940:9: warning: variable 'x' set but not used + [-Wunused-but-set-variable] + + mivaltree.c: In function 'miComputeClips': + mivaltree.c:226:10: warning: variable 'resized' set but not used + [-Wunused-but-set-variable] + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 6fd2adc179141310e45a56ee90ef5b5f6115a1f6) + + Signed-off-by: Chase Douglas + +commit 2ad6d4c3abe3e3d4c517a50f30c73016c5e683d0 +Author: Peter Hutterer +Date: Tue Aug 2 09:21:00 2011 +1000 + + Xi: silence compiler warnings (set but not used) + + exevents.c: In function 'UpdateDeviceState': + exevents.c:719:9: warning: variable 'bit' set but not used + [-Wunused-but-set-variable] + + exevents.c: In function 'ProcessOtherEvent': + exevents.c:889:22: warning: variable 'v' set but not used + [-Wunused-but-set-variable] + exevents.c:888:17: warning: variable 'k' set but not used + [-Wunused-but-set-variable] + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 484cef5b29ef82402a15e155b3b8505b1e4a6830) + + Signed-off-by: Chase Douglas + +commit 4ce019c541c41bb5533a5a5a8b74db82049115a7 +Author: Peter Hutterer +Date: Mon Aug 1 13:52:13 2011 +1000 + + dix: add KEYBOARD_OR_FLOAT and POINTER_OR_FLOAT to GetMaster() + + GetMaster() currently requires an attached slave device as parameter, + resuling in many calls being IsFloating(dev) ? dev : GetMaster(...); + + Add two new parameters so GetMaster can be called unconditionally to get the + right device. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 98fe735ea1d756711019c3d90ed6abd9c06abebf) + + Signed-off-by: Chase Douglas + +commit 7127c6960d04dd681cd3de8852220d2f90513e82 +Author: Peter Hutterer +Date: Tue Aug 2 08:54:00 2011 +1000 + + test: add a test for GetMaster() behaviour + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit dbbe5735d1451bb32f43bce90f0bcfeff46f9743) + + Signed-off-by: Chase Douglas + +commit 7cea2bd9a921ae55d6d9f5072b8f9a6d7b761146 +Author: Peter Hutterer +Date: Mon Aug 1 11:54:17 2011 +1000 + + mi: fix comment typo, whitespace in miPointerSetPosition + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit b3c76b0c53ac42b70d12849da18465e8467e474c) + + Signed-off-by: Chase Douglas + +commit 82241760f5e738646d30253c08ec2e1c91bcf513 +Author: Peter Hutterer +Date: Mon Aug 1 09:52:38 2011 +1000 + + dix: rename mieqSwitchScreen argument fromDix → set_dequeue_screen, document + + fromDIX is neither exactly true nor particularly helpful in understanding + what this parameter triggers. Rename to set_dequeue_screen, because that's + exactly what happens. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit c9562bed0d5e26b7e3e55e26cf1ddc5086d61cc6) + + Signed-off-by: Chase Douglas + +commit e4e5c3806093da3c8d798da3771fadce30f8858a +Author: Peter Hutterer +Date: Tue Aug 9 11:21:06 2011 +1000 + + config: use add_option for '_source' too + + _source was being allocated manually, with all other options added to that + list through add_option. Skip the manual part, allocate the first option + _source with add_option too. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 20a61845d3c93c337bf3331a6bac30cf66c2a293) + + Signed-off-by: Chase Douglas + +commit 79289b346559876579be1cffc1d2fd35b33ccc2b +Author: Peter Hutterer +Date: Tue Aug 9 11:20:31 2011 +1000 + + config: return the new InputOption from add_option. + + Change add_option to return the new InputOption on success, or NULL + failure. This way we can at least check for errors in callers. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit d33652dad8838ab0a9175ca4613a3161ebc5676f) + + Signed-off-by: Chase Douglas + +commit 9d4324b005d177671827048b25e0314c6470cf8e +Author: Peter Hutterer +Date: Fri Jul 8 16:13:45 2011 +1000 + + Revert "Attempt to add the 'mouse' driver in more situations." + + This reverts commit 43d9edd31e31b33b9da4a50d8ab05004881c8d5a. + + This commit was introduced in the 1.2 cycle when hotplugging was less than + ideal (i.e. it didn't exist). From the commit message: + + Always add a mouse driver instance configured to send core events, unless + a core pointer already exists using either the mouse or void drivers. This + handles the laptop case where the config file only specifies, say, + synaptics, which causes the touchpad to work but not the pointing stick. + We don't double-instantiate the mouse driver to avoid the mouse moving twice + as fast, and we skip this logic when the user asked for a void core pointer + since that probably means they want to run with no pointer at all. + + To get this case above, a user would need to disable hotplugging _and_ have a + xorg.conf that only references one device. This is possible, but not a use-case + we should worry about too much now. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 1357cd725143c1a35e32f15df658de111b151692) + + Signed-off-by: Chase Douglas + +commit 94283b6b5b0d529041a061f96a90f357c5e091e3 +Author: Peter Hutterer +Date: Fri Jul 8 16:10:07 2011 +1000 + + xfree86: use xf86AllocateInput for implicit devices too + + Slowly merging the vastly different code-paths. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 95772598b57f6054fbf88683fa0a492c77605790) + + Signed-off-by: Chase Douglas + +commit 025dd499ae9c1190b8f6baef5bd50f9b26ae6d80 +Author: Peter Hutterer +Date: Mon Jul 4 15:02:20 2011 +1000 + + xfree86: factor out adding/removing a device from the input device array + + No functional changes, just readability improvements. This also gets rid of + the count variable. Count was just used for resizing the null-terminated + list. Since we're not in a time-critical path here at all we can afford to + loop the list multiple times instead of keeping an extra variable around. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit fa8f4652819b692faaf2789cf32d7fa99fbb34aa) + + Signed-off-by: Chase Douglas + +commit 22434f6706b9742ea9c350ae61324d7045a2e30e +Author: Peter Hutterer +Date: Mon Jul 4 14:14:11 2011 +1000 + + xfree86: update comment for InitInput + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 5b5477c05f691205064ca4d8034f8dd47ab975b7) + + Signed-off-by: Chase Douglas + +commit 8362af42e29add5d02c88712f49808bed072fbd0 +Author: Peter Hutterer +Date: Mon Jul 4 14:26:13 2011 +1000 + + xfree86: nest loops instead of 0x1 pointers. + + If we find the core device, move all other device pointers forward right + then and there. The break will jump out of the top loop. + + They had a special on braces today, so I added some for readability (and + fixed up tab vs space indentation. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 7354f607833c69626d8692bc5176b18ea1cf6263) + + Signed-off-by: Chase Douglas + +commit c5c869867c5fcc7b60cad3c69237624ad51162db +Author: Peter Hutterer +Date: Mon Jul 4 14:05:30 2011 +1000 + + xfree86: improve readability of synthesized device. + + No functional changes. + + The options we assign are the ones from the Pointer/Keyboard device so we + might as well use those readable names instead of dev[count-1]->options. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 5669aa2d24dff9ab276e5f74a09f97ec77b90e75) + + Signed-off-by: Chase Douglas + +commit 19cdfec1b49afcf9d00f486526f14aa0ac32e94a +Author: Peter Hutterer +Date: Mon Jul 4 13:52:11 2011 +1000 + + test: add a option duplication test + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 5aa826cdd1f2e768bedf23d399703a5d0b6302be) + + Signed-off-by: Chase Douglas + +commit eebfaa128b6b87012918545e19ee67acd0306433 +Author: Peter Hutterer +Date: Mon Jul 4 13:46:24 2011 +1000 + + xfree86: when implicitly choosing a core device, set the option to a value + + Devices are core pointers/keyboards by default now anyway, but let's set the + option to some value instead of just NULL. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 4527e2b776cfcdac2b189b5439b9a3d0b6433077) + + Signed-off-by: Chase Douglas + +commit 7a6b7fba273adf42b80fcb278db2a9dafcb9d2b6 +Author: Peter Hutterer +Date: Mon Jul 4 13:44:44 2011 +1000 + + xfree86: don't warn about duplicate core devices + + It doesn't matter. All devices are core pointer devices by default now + anyway. + + Signed-off-by: Peter Hutterer + Reviewed-by: Daniel Stone + (cherry picked from commit 44d53728a6a533fc0a6e0a10269d1cc99e9dad32) + + Signed-off-by: Chase Douglas commit 0ca8869e4537412f25bfd5610aba5e604952608c Author: Jeremy Huddleston --- xorg-server-1.11.4.orig/fix-miregion-private +++ xorg-server-1.11.4/fix-miregion-private @@ -0,0 +1,14 @@ +#!/bin/sh +sed -i \ +-e 's/miEmptyBox\b/RegionEmptyBox/g' \ +-e 's/miEmptyData\b/RegionEmptyData/g' \ +-e 's/miBrokenData\b/RegionBrokenData/g' \ +-e 's/miBrokenRegion\b/RegionBrokenRegion/g' \ +-e 's/miCoalesce\b/RegionCoalesce/g' \ +-e 's/miAppendNonO\b/RegionAppendNonO/g' \ +-e 's/miRegionOp\b/RegionOp/g' \ +-e 's/miSetExtents\b/RegionSetExtents/g' \ +-e 's/miIntersectO\b/RegionIntersectO/g' \ +-e 's/miUnionO\b/RegionUnionO/g' \ +-e 's/miSubtractO\b/RegionSubtractO/g' \ +"$@" --- xorg-server-1.11.4.orig/configure.ac +++ xorg-server-1.11.4/configure.ac @@ -26,8 +26,8 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.11.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2012-01-27" +AC_INIT([xorg-server], 1.11.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2011-12-16" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE @@ -45,7 +45,7 @@ XORG_WITH_FOP XORG_WITH_XSLTPROC XORG_ENABLE_UNIT_TESTS -XORG_LD_WRAP +XORG_LD_WRAP([optional]) m4_ifndef([XORG_FONT_MACROS_VERSION], [m4_fatal([must install fontutil 1.1 or later before running autoconf/autogen])]) XORG_FONT_MACROS_VERSION(1.1) @@ -785,7 +785,7 @@ APPLEWMPROTO="applewmproto >= 1.4" dnl Core modules for most extensions, et al. -SDK_REQUIRED_MODULES="[xproto >= 7.0.22] [randrproto >= 1.2.99.3] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 1.9.99.902] [kbproto >= 1.0.3] fontsproto" +SDK_REQUIRED_MODULES="[xproto >= 7.0.22] [randrproto >= 1.2.99.3] [renderproto >= 0.11] [xextproto >= 7.1.99] [inputproto >= 2.1.99.6] [kbproto >= 1.0.3] fontsproto" # Make SDK_REQUIRED_MODULES available for inclusion in xorg-server.pc AC_SUBST(SDK_REQUIRED_MODULES) --- xorg-server-1.11.4.orig/fix-miregion +++ xorg-server-1.11.4/fix-miregion @@ -0,0 +1,29 @@ +#!/bin/sh +sed -i \ +-e 's/miRegionCreate\b/RegionCreate/g' \ +-e 's/miRegionInit\b/RegionInit/g' \ +-e 's/miRegionDestroy\b/RegionDestroy/g' \ +-e 's/miRegionUninit\b/RegionUninit/g' \ +-e 's/miRegionCopy\b/RegionCopy/g' \ +-e 's/miIntersect\b/RegionIntersect/g' \ +-e 's/miUnion\b/RegionUnion/g' \ +-e 's/miRegionAppend\b/RegionAppend/g' \ +-e 's/miRegionValidate\b/RegionValidate/g' \ +-e 's/miRectsToRegion\b/RegionFromRects/g' \ +-e 's/miSubtract\b/RegionSubtract/g' \ +-e 's/miInverse\b/RegionInverse/g' \ +-e 's/miRectIn\b/RegionContainsRect/g' \ +-e 's/miTranslateRegion\b/RegionTranslate/g' \ +-e 's/miRegionReset\b/RegionReset/g' \ +-e 's/miRegionBreak\b/RegionBreak/g' \ +-e 's/miPointInRegion\b/RegionContainsPoint/g' \ +-e 's/miRegionEqual\b/RegionEqual/g' \ +-e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \ +-e 's/miRegionEmpty\b/RegionEmpty/g' \ +-e 's/miRegionExtents\b/RegionExtents/g' \ +-e 's/miPrintRegion\b/RegionPrint/g' \ +-e 's/miRectAlloc\b/RegionRectAlloc/g' \ +-e 's/miValidRegion\b/RegionIsValid/g' \ +-e 's/miRegionBroken\b/RegionBroken/g' \ +-e 's/miClipSpans\b/RegionClipSpans/g' \ +"$@" --- xorg-server-1.11.4.orig/include/input.h +++ xorg-server-1.11.4/include/input.h @@ -56,6 +56,8 @@ #include "window.h" /* for WindowPtr */ #include "xkbrules.h" #include "events.h" +#include "list.h" +#include #define DEVICE_INIT 0 #define DEVICE_ON 1 @@ -67,6 +69,16 @@ #define POINTER_ACCELERATE (1 << 3) #define POINTER_SCREEN (1 << 4) /* Data in screen coordinates */ #define POINTER_NORAW (1 << 5) /* Don't generate RawEvents */ +#define POINTER_EMULATED (1 << 6) /* Event was emulated from another event */ + +/* GetTouchEvent flags */ +#define TOUCH_ACCEPT (1 << 0) +#define TOUCH_REJECT (1 << 1) +#define TOUCH_PENDING_END (1 << 2) +#define TOUCH_CLIENT_ID (1 << 3) /* touch ID is the client-visible id */ +#define TOUCH_REPLAYING (1 << 4) /* event is being replayed */ +#define TOUCH_POINTER_EMULATED (1 << 5) /* touch event may be pointer emulated */ +#define TOUCH_END (1 << 6) /* really end this touch now */ /*int constants for pointer acceleration schemes*/ #define PtrAccelNoOp 0 @@ -99,6 +111,12 @@ #define RevertToFollowKeyboard 3 #endif +enum InputLevel { + CORE, + XI, + XI2, +}; + typedef unsigned long Leds; typedef struct _OtherClients *OtherClientsPtr; typedef struct _InputClients *InputClientsPtr; @@ -106,6 +124,9 @@ typedef struct _ValuatorClassRec *ValuatorClassPtr; typedef struct _ClassesRec *ClassesPtr; typedef struct _SpriteRec *SpritePtr; +typedef struct _TouchClassRec *TouchClassPtr; +typedef struct _TouchPointInfo *TouchPointInfoPtr; +typedef struct _DDXTouchPointInfo *DDXTouchPointInfoPtr; typedef union _GrabMask GrabMask; typedef struct _ValuatorMask ValuatorMask; @@ -207,6 +228,7 @@ char *value; struct _InputOption *next; } InputOption; +typedef struct _XI2Mask XI2Mask; typedef struct _InputAttributes { char *product; @@ -309,6 +331,12 @@ extern _X_EXPORT Bool InitFocusClassDeviceStruct( DeviceIntPtr /*device*/); +extern _X_EXPORT Bool InitTouchClassDeviceStruct( + DeviceIntPtr /*device*/, + unsigned int /*max_touches*/, + unsigned int /*mode*/, + unsigned int /*numAxes*/); + typedef void (*BellProcPtr)( int /*percent*/, DeviceIntPtr /*device*/, @@ -429,7 +457,8 @@ extern void CreateClassesChangedEvent(InternalEvent *event, DeviceIntPtr master, DeviceIntPtr slave, - int type); + int flags); + extern InternalEvent * UpdateFromMaster( InternalEvent *events, DeviceIntPtr pDev, @@ -464,6 +493,28 @@ int key_code, const ValuatorMask *mask); +extern int GetTouchEvents( + InternalEvent *events, + DeviceIntPtr pDev, + uint32_t ddx_touchid, + uint16_t type, + uint32_t flags, + const ValuatorMask *mask); + +void QueueTouchEvents(DeviceIntPtr device, + int type, + uint32_t ddx_touchid, + int flags, + const ValuatorMask *mask); + +extern int GetTouchOwnershipEvents( + InternalEvent *events, + DeviceIntPtr pDev, + TouchPointInfoPtr ti, + uint8_t mode, + XID resource, + uint32_t flags); + extern _X_EXPORT int GetProximityEvents( InternalEvent *events, DeviceIntPtr pDev, @@ -533,18 +584,71 @@ extern _X_EXPORT InputAttributes *DuplicateInputAttributes(InputAttributes *attrs); extern _X_EXPORT void FreeInputAttributes(InputAttributes *attrs); +enum TouchListenerState{ + LISTENER_AWAITING_BEGIN = 0, /**< Waiting for a TouchBegin event */ + LISTENER_AWAITING_OWNER, /**< Waiting for a TouchOwnership event */ + LISTENER_EARLY_ACCEPT, /**< Waiting for ownership, has already + accepted */ + LISTENER_IS_OWNER, /**< Is the current owner, hasn't accepted */ + LISTENER_HAS_ACCEPTED, /**< Is the current owner, has accepted */ + LISTENER_HAS_END, /**< Has already received the end event */ +}; + +enum TouchListenerType { + LISTENER_GRAB, + LISTENER_POINTER_GRAB, + LISTENER_REGULAR, + LISTENER_POINTER_REGULAR, +}; + +extern void TouchInitDDXTouchPoint(DeviceIntPtr dev, DDXTouchPointInfoPtr ddxtouch); +extern DDXTouchPointInfoPtr TouchBeginDDXTouch(DeviceIntPtr dev, uint32_t ddx_id); +extern void TouchEndDDXTouch(DeviceIntPtr dev, DDXTouchPointInfoPtr ti); +extern DDXTouchPointInfoPtr TouchFindByDDXID(DeviceIntPtr dev, + uint32_t ddx_id, + Bool create); +extern Bool TouchInitTouchPoint(TouchClassPtr touch, ValuatorClassPtr v, int index); +extern void TouchFreeTouchPoint(DeviceIntPtr dev, int index); +extern TouchPointInfoPtr TouchBeginTouch(DeviceIntPtr dev, int sourceid, + uint32_t touchid, Bool emulate_pointer); +extern TouchPointInfoPtr TouchFindByClientID(DeviceIntPtr dev, + uint32_t client_id); +extern void TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti); +extern Bool TouchEventHistoryAllocate(TouchPointInfoPtr ti); +extern void TouchEventHistoryFree(TouchPointInfoPtr ti); +extern void TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev); +extern void TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource); +extern Bool TouchResourceIsOwner(TouchPointInfoPtr ti, XID resource); +extern void TouchAddListener(TouchPointInfoPtr ti, XID resource, enum InputLevel level, + enum TouchListenerType type, enum TouchListenerState state, + WindowPtr window); +extern Bool TouchRemoveListener(TouchPointInfoPtr ti, XID resource); +extern void TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev); +extern Bool TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, + InternalEvent *ev); +extern Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite); +extern int TouchConvertToPointerEvent(const InternalEvent *ev, + InternalEvent *motion, InternalEvent *button); +extern int TouchGetPointerEventType(const InternalEvent *ev); +extern void TouchRemovePointerGrab(DeviceIntPtr dev); +extern void TouchListenerGone(XID resource); +extern int TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, + uint32_t touchid, Window grab_window, XID *error); + /* misc event helpers */ extern Mask GetEventMask(DeviceIntPtr dev, xEvent* ev, InputClientsPtr clients); extern Mask GetEventFilter(DeviceIntPtr dev, xEvent *event); -extern Mask GetWindowXI2Mask(DeviceIntPtr dev, WindowPtr win, xEvent* ev); +extern Bool WindowXI2MaskIsset(DeviceIntPtr dev, WindowPtr win, xEvent* ev); +extern int GetXI2MaskByte(XI2Mask *mask, DeviceIntPtr dev, int event_type); void FixUpEventFromWindow(SpritePtr pSprite, xEvent *xE, WindowPtr pWin, Window child, Bool calcChild); extern WindowPtr XYToWindow(SpritePtr pSprite, int x, int y); -extern int EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, - WindowPtr win); +extern int EventIsDeliverable(DeviceIntPtr dev, int evtype, WindowPtr win); +extern Bool ActivatePassiveGrab(DeviceIntPtr dev, GrabPtr grab, + InternalEvent *ev, InternalEvent *real_event); /** * Masks specifying the type of event to deliver for an InternalEvent; used * by EventIsDeliverable. @@ -557,6 +661,13 @@ #define EVENT_XI2_MASK (1 << 3) /**< XI2 mask set on window */ /* @} */ +enum EventDeliveryState { + EVENT_DELIVERED, /**< Event has been delivered to a client */ + EVENT_NOT_DELIVERED, /**< Event was not delivered to any client */ + EVENT_SKIP, /**< Event can be discarded by the caller */ + EVENT_REJECTED, /**< Event was rejected for delivery to the client */ +}; + /* Implemented by the DDX. */ extern _X_EXPORT int NewInputDeviceRequest( InputOption *options, @@ -586,6 +697,9 @@ extern _X_EXPORT void valuator_mask_set(ValuatorMask *mask, int valuator, int data); +extern _X_EXPORT void valuator_mask_set_double(ValuatorMask *mask, + int valuator, + double data); extern _X_EXPORT void valuator_mask_zero(ValuatorMask *mask); extern _X_EXPORT int valuator_mask_size(const ValuatorMask *mask); extern _X_EXPORT int valuator_mask_isset(const ValuatorMask *mask, int bit); @@ -594,5 +708,14 @@ extern _X_EXPORT void valuator_mask_copy(ValuatorMask *dest, const ValuatorMask *src); extern _X_EXPORT int valuator_mask_get(const ValuatorMask *mask, int valnum); +extern _X_EXPORT double valuator_mask_get_double(const ValuatorMask *mask, + int valnum); +extern _X_EXPORT Bool valuator_mask_fetch(const ValuatorMask *mask, + int valnum, int *val); +extern _X_EXPORT Bool valuator_mask_fetch_double(const ValuatorMask *mask, + int valnum, double *val); + +extern _X_HIDDEN Bool point_on_screen(ScreenPtr pScreen, int x, int y); +extern _X_HIDDEN void update_desktop_dimensions(void); #endif /* INPUT_H */ --- xorg-server-1.11.4.orig/include/ptrveloc.h +++ xorg-server-1.11.4/include/ptrveloc.h @@ -47,9 +47,9 @@ * profile * returns actual acceleration depending on velocity, acceleration control,... */ -typedef float (*PointerAccelerationProfileFunc) +typedef double (*PointerAccelerationProfileFunc) (DeviceIntPtr dev, struct _DeviceVelocityRec* vel, - float velocity, float threshold, float accelCoeff); + double velocity, double threshold, double accelCoeff); /** * a motion history, with just enough information to @@ -57,8 +57,8 @@ * a more or less straight line */ typedef struct _MotionTracker { - int dx, dy; /* accumulated delta for each axis */ - int time; /* time of creation */ + double dx, dy; /* accumulated delta for each axis */ + int time; /* time of creation */ int dir; /* initial direction bitfield */ } MotionTracker, *MotionTrackerPtr; @@ -69,17 +69,17 @@ MotionTrackerPtr tracker; int num_tracker; int cur_tracker; /* current index */ - float velocity; /* velocity as guessed by algorithm */ - float last_velocity; /* previous velocity estimate */ - int last_dx; /* last time-difference */ - int last_dy ; /* phase of last/current estimate */ - float corr_mul; /* config: multiply this into velocity */ - float const_acceleration; /* config: (recipr.) const deceleration */ - float min_acceleration; /* config: minimum acceleration */ + double velocity; /* velocity as guessed by algorithm */ + double last_velocity; /* previous velocity estimate */ + double last_dx; /* last time-difference */ + double last_dy; /* phase of last/current estimate */ + double corr_mul; /* config: multiply this into velocity */ + double const_acceleration; /* config: (recipr.) const deceleration */ + double min_acceleration; /* config: minimum acceleration */ short reset_time; /* config: reset non-visible state after # ms */ short use_softening; /* config: use softening of mouse values */ - float max_rel_diff; /* config: max. relative difference */ - float max_diff; /* config: max. difference */ + double max_rel_diff; /* config: max. relative difference */ + double max_diff; /* config: max. difference */ int initial_range; /* config: max. offset used as initial velocity */ Bool average_accel; /* config: average acceleration over velocity */ PointerAccelerationProfileFunc Profile; @@ -107,11 +107,11 @@ InitTrackers(DeviceVelocityPtr vel, int ntracker); extern _X_EXPORT BOOL -ProcessVelocityData2D(DeviceVelocityPtr vel, int dx, int dy, int time); +ProcessVelocityData2D(DeviceVelocityPtr vel, double dx, double dy, int time); -extern _X_EXPORT float +extern _X_EXPORT double BasicComputeAcceleration(DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, float threshold, float acc); + double velocity, double threshold, double acc); extern _X_EXPORT void FreeVelocityData(DeviceVelocityPtr vel); --- xorg-server-1.11.4.orig/include/inputstr.h +++ xorg-server-1.11.4/include/inputstr.h @@ -49,6 +49,8 @@ #ifndef INPUTSTRUCT_H #define INPUTSTRUCT_H +#include + #include #include "input.h" #include "window.h" @@ -57,7 +59,7 @@ #include "geext.h" #include "privates.h" -#define BitIsOn(ptr, bit) (!!(((BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))) +#define BitIsOn(ptr, bit) (!!(((const BYTE *) (ptr))[(bit)>>3] & (1 << ((bit) & 7)))) #define SetBit(ptr, bit) (((BYTE *) (ptr))[(bit)>>3] |= (1 << ((bit) & 7))) #define ClearBit(ptr, bit) (((BYTE *)(ptr))[(bit)>>3] &= ~(1 << ((bit) & 7))) extern _X_EXPORT int CountBits(const uint8_t *mask, int len); @@ -71,8 +73,18 @@ * events to the protocol, the server will not support these events until * this number here is bumped. */ -#define XI2LASTEVENT 17 /* XI_RawMotion */ -#define XI2MASKSIZE ((XI2LASTEVENT + 7)/8) /* no of bits for masks */ +#define XI2LASTEVENT XI_RawTouchEnd +#define XI2MASKSIZE ((XI2LASTEVENT >> 3) + 1) /* no of bytes for masks */ + +/** + * Scroll types for ::SetScrollValuator and the scroll type in the + * ::ScrollInfoPtr. + */ +enum ScrollType { + SCROLL_TYPE_NONE = 0, /**< Not a scrolling valuator */ + SCROLL_TYPE_VERTICAL = 8, + SCROLL_TYPE_HORIZONTAL = 9, +}; /** * This struct stores the core event mask for each client except the client @@ -108,7 +120,7 @@ XID resource; /**< id for putting into resource manager */ Mask mask[EMASKSIZE]; /**< Actual XI event mask, deviceid is index */ /** XI2 event masks. One per device, each bit is a mask of (1 << type) */ - unsigned char xi2mask[EMASKSIZE][XI2MASKSIZE]; + struct _XI2Mask *xi2mask; } InputClients; /** @@ -138,7 +150,7 @@ /** The clients that selected for events */ InputClientsPtr inputClients; /* XI2 event masks. One per device, each bit is a mask of (1 << type) */ - unsigned char xi2mask[EMASKSIZE][XI2MASKSIZE]; + struct _XI2Mask *xi2mask; } OtherInputMasks; /* @@ -157,16 +169,10 @@ Mask *pMask; } DetailRec; -typedef enum { - GRABTYPE_CORE, - GRABTYPE_XI, - GRABTYPE_XI2 -} GrabType; - union _GrabMask { Mask core; Mask xi; - char xi2mask[EMASKSIZE][XI2MASKSIZE]; + struct _XI2Mask *xi2mask; }; /** @@ -190,7 +196,7 @@ unsigned ownerEvents:1; unsigned keyboardMode:1; unsigned pointerMode:1; - GrabType grabtype; + enum InputLevel grabtype; CARD8 type; /* event type */ DetailRec modifiersDetail; DeviceIntPtr modifierDevice; @@ -200,7 +206,7 @@ Mask eventMask; Mask deviceMask; /* XI2 event masks. One per device, each bit is a mask of (1 << type) */ - unsigned char xi2mask[EMASKSIZE][XI2MASKSIZE]; + struct _XI2Mask *xi2mask; } GrabRec; /** @@ -252,6 +258,12 @@ struct _XkbSrvInfo *xkbInfo; } KeyClassRec, *KeyClassPtr; +typedef struct _ScrollInfo { + enum ScrollType type; + double increment; + int flags; +} ScrollInfo, *ScrollInfoPtr; + typedef struct _AxisInfo { int resolution; int min_resolution; @@ -260,6 +272,7 @@ int max_value; Atom label; CARD8 mode; + ScrollInfo scroll; } AxisInfo, *AxisInfoPtr; typedef struct _ValuatorAccelerationRec { @@ -283,8 +296,58 @@ unsigned short numAxes; double *axisVal; /* always absolute, but device-coord system */ ValuatorAccelerationRec accelScheme; + int h_scroll_axis; /* horiz smooth-scrolling axis */ + int v_scroll_axis; /* vert smooth-scrolling axis */ } ValuatorClassRec; +typedef struct _TouchPointInfo { + uint32_t client_id; /* touch ID as seen in client events */ + int sourceid; /* Source device's ID for this touchpoint */ + Bool active; /* whether or not the touch is active */ + Bool pending_finish; /* true if the touch is physically inactive + * but still owned by a grab */ + SpriteRec sprite; /* window trace for delivery */ + ValuatorMask *valuators; /* last recorded axis values */ + struct _TouchListener { + XID listener; /* grabs/event selection IDs receiving + * events for this touch */ + enum TouchListenerType type; + enum TouchListenerState state; + enum InputLevel level; /* matters only for emulating touches */ + WindowPtr window; + } *listeners; + int num_listeners; + int num_grabs; /* number of open grabs on this touch + * which have not accepted or rejected */ + Bool emulate_pointer; + DeviceEvent *history; /* History of events on this touchpoint */ + size_t history_elements; /* Number of current elements in history */ + size_t history_size; /* Size of history in elements */ +} TouchPointInfoRec; + +typedef struct _TouchListener TouchListener; + +typedef struct _DDXTouchPointInfo { + uint32_t client_id; /* touch ID as seen in client events */ + Bool active; /* whether or not the touch is active */ + uint32_t ddx_id; /* touch ID given by the DDX */ + Bool emulate_pointer; + + ValuatorMask* valuators; /* last recorded axis values */ +} DDXTouchPointInfoRec; + +typedef struct _TouchClassRec { + int sourceid; + TouchPointInfoPtr touches; + unsigned short num_touches; /* number of allocated touches */ + unsigned short max_touches; /* maximum number of touches, may be 0 */ + CARD8 mode; /* ::XIDirectTouch, XIDependentTouch */ + /* for pointer-emulation */ + CARD8 buttonsDown; /* number of buttons down */ + unsigned short state; /* logical button state */ + Mask motionMask; +} TouchClassRec; + typedef struct _ButtonClassRec { int sourceid; CARD8 numButtons; @@ -368,6 +431,7 @@ typedef struct _ClassesRec { KeyClassPtr key; ValuatorClassPtr valuator; + TouchClassPtr touch; ButtonClassPtr button; FocusClassPtr focus; ProximityClassPtr proximity; @@ -432,7 +496,7 @@ TimeStamp grabTime; Bool fromPassiveGrab; /* true if from passive grab */ Bool implicitGrab; /* implicit from ButtonPress */ - GrabRec activeGrab; + GrabPtr activeGrab; GrabPtr grab; CARD8 activatingKey; void (*ActivateGrab) ( @@ -472,13 +536,16 @@ #define MASTER_POINTER 1 #define MASTER_KEYBOARD 2 #define SLAVE 3 -#define MASTER_ATTACHED 4 /* special type for GetMaster */ +/* special types for GetMaster */ +#define MASTER_ATTACHED 4 /* Master for this device */ +#define KEYBOARD_OR_FLOAT 5 /* Keyboard master for this device or this device if floating */ +#define POINTER_OR_FLOAT 6 /* Pointer master for this device or this device if floating */ typedef struct _DeviceIntRec { DeviceRec public; DeviceIntPtr next; Bool startup; /* true if needs to be turned on at - server intialization time */ + server initialization time */ DeviceProc deviceProc; /* proc(DevicePtr, DEVICE_xx). It is used to initialize, turn on, or turn off the device */ @@ -492,6 +559,7 @@ int id; KeyClassPtr key; ValuatorClassPtr valuator; + TouchClassPtr touch; ButtonClassPtr button; FocusClassPtr focus; ProximityClassPtr proximity; @@ -512,16 +580,19 @@ DeviceIntPtr lastSlave; /* last slave device used */ /* last valuator values recorded, not posted to client; - * for slave devices, valuators is in device coordinates - * for master devices, valuators is in screen coordinates + * for slave devices, valuators is in device coordinates, mapped to the + * desktop + * for master devices, valuators is in desktop coordinates. * see dix/getevents.c * remainder supports acceleration */ struct { - int valuators[MAX_VALUATORS]; - float remainder[MAX_VALUATORS]; + double valuators[MAX_VALUATORS]; int numValuators; DeviceIntPtr slave; + ValuatorMask *scroll; + int num_touches; /* size of the touches array */ + DDXTouchPointInfoPtr touches; } last; /* Input device property handling. */ @@ -552,7 +623,7 @@ /* for keeping the events for devices grabbed synchronously */ typedef struct _QdEvent *QdEventPtr; typedef struct _QdEvent { - QdEventPtr next; + struct list next; DeviceIntPtr device; ScreenPtr pScreen; /* what screen the pointer was on */ unsigned long months; /* milliseconds is in the event */ @@ -568,8 +639,8 @@ * replayed and processed as if they would come from the device directly. */ typedef struct _EventSyncInfo { - QdEventPtr pending, /**< list of queued events */ - *pendtail; /**< last event in list */ + struct list pending; + /** The device to replay events for. Only set in AllowEvents(), in which * case it is set to the device specified in the request. */ DeviceIntPtr replayDev; /* kludgy rock to put flag for */ @@ -599,4 +670,10 @@ return sprite->spriteTrace[sprite->spriteTraceGood - 1]; } +struct _XI2Mask { + unsigned char **masks; /* event mask in masks[deviceid][event type byte] */ + size_t nmasks; /* number of masks */ + size_t mask_size; /* size of each mask in bytes */ +}; + #endif /* INPUTSTRUCT_H */ --- xorg-server-1.11.4.orig/include/scrnintstr.h +++ xorg-server-1.11.4/include/scrnintstr.h @@ -561,6 +561,10 @@ formats[MAXFORMATS]; int numScreens; ScreenPtr screens[MAXSCREENS]; + int x; /* origin */ + int y; /* origin */ + int width; /* total width of all screens together */ + int height; /* total height of all screens together */ } ScreenInfo; extern _X_EXPORT ScreenInfo screenInfo; --- xorg-server-1.11.4.orig/include/eventstr.h +++ xorg-server-1.11.4/include/eventstr.h @@ -50,6 +50,10 @@ ET_ButtonPress, ET_ButtonRelease, ET_Motion, + ET_TouchBegin, + ET_TouchUpdate, + ET_TouchEnd, + ET_TouchOwnership, ET_Enter, ET_Leave, ET_FocusIn, @@ -64,6 +68,9 @@ ET_RawButtonPress, ET_RawButtonRelease, ET_RawMotion, + ET_RawTouchBegin, + ET_RawTouchUpdate, + ET_RawTouchEnd, ET_XQuartz, ET_Internal = 0xFF /* First byte */ }; @@ -84,9 +91,11 @@ int deviceid; /**< Device to post this event for */ int sourceid; /**< The physical source device */ union { - uint32_t button; /**< Button number */ + uint32_t button; /**< Button number (also used in pointer emulating + touch events) */ uint32_t key; /**< Key code */ } detail; + uint32_t touchid; /**< Touch ID (client_id) */ int16_t root_x; /**< Pos relative to root window in integral data */ float root_x_frac; /**< Pos relative to root window in frac part */ int16_t root_y; /**< Pos relative to root window in integral part */ @@ -95,8 +104,7 @@ struct { uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */ uint8_t mode[(MAX_VALUATORS + 7)/8]; /**< Valuator mode (Abs or Rel)*/ - int32_t data[MAX_VALUATORS]; /**< Valuator data */ - int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */ + double data[MAX_VALUATORS]; /**< Valuator data */ } valuators; struct { uint32_t base; /**< XKB base modifiers */ @@ -113,8 +121,27 @@ Window root; /**< Root window of the event */ int corestate; /**< Core key/button state BEFORE the event */ int key_repeat; /**< Internally-generated key repeat event */ + uint32_t flags; /**< Flags to be copied into the generated event */ }; +/** + * Generated internally whenever a touch ownership chain changes - an owner + * has accepted or rejected a touch, or a grab/event selection in the delivery + * chain has been removed. + */ +struct _TouchOwnershipEvent +{ + unsigned char header; /**< Always ET_Internal */ + enum EventType type; /**< One of EventType */ + int length; /**< Length in bytes */ + Time time; /**< Time in ms */ + int deviceid; /**< Device to post this event for */ + int sourceid; /**< The physical source device */ + uint32_t touchid; /**< Touch ID (client_id) */ + uint8_t reason; /**< ::XIAcceptTouch, ::XIRejectTouch */ + uint32_t resource; /**< Provoking grab or event selection */ + uint32_t flags; /**< Flags to be copied into the generated event */ +}; /* Flags used in DeviceChangedEvent to signal if the slave has changed */ #define DEVCHANGE_SLAVE_SWITCH 0x2 @@ -153,6 +180,7 @@ uint32_t resolution; /**< Resolution counts/m */ uint8_t mode; /**< Relative or Absolute */ Atom name; /**< Axis name */ + ScrollInfo scroll; /**< Smooth scrolling info */ } valuators[MAX_VALUATORS]; struct { @@ -198,11 +226,10 @@ } detail; struct { uint8_t mask[(MAX_VALUATORS + 7)/8]; /**< Valuator mask */ - int32_t data[MAX_VALUATORS]; /**< Valuator data */ - int32_t data_frac[MAX_VALUATORS]; /**< Fractional part for data */ - int32_t data_raw[MAX_VALUATORS]; /**< Valuator data as posted */ - int32_t data_raw_frac[MAX_VALUATORS];/**< Fractional part for data_raw */ + double data[MAX_VALUATORS]; /**< Valuator data */ + double data_raw[MAX_VALUATORS]; /**< Valuator data as posted */ } valuators; + uint32_t flags; /**< Flags to be copied into the generated event */ }; #ifdef XQUARTZ @@ -230,6 +257,7 @@ } any; DeviceEvent device_event; DeviceChangedEvent changed_event; + TouchOwnershipEvent touch_ownership_event; #if XFreeXDGA DGAEvent dga_event; #endif --- xorg-server-1.11.4.orig/include/dixgrabs.h +++ xorg-server-1.11.4/include/dixgrabs.h @@ -31,12 +31,16 @@ extern void PrintDeviceGrabInfo(DeviceIntPtr dev); extern void UngrabAllDevices(Bool kill_client); +extern GrabPtr AllocGrab(void); +extern void FreeGrab(GrabPtr grab); +extern Bool CopyGrab(GrabPtr dst, const GrabPtr src); + extern GrabPtr CreateGrab( int /* client */, DeviceIntPtr /* device */, DeviceIntPtr /* modDevice */, WindowPtr /* window */, - GrabType /* grabtype */, + enum InputLevel /* grabtype */, GrabMask * /* mask */, struct _GrabParameters * /* param */, int /* type */, @@ -60,4 +64,6 @@ extern _X_EXPORT Bool DeletePassiveGrabFromList( GrabPtr /* pMinuendGrab */); +extern Bool GrabIsPointerGrab(GrabPtr grab); +extern Bool GrabIsKeyboardGrab(GrabPtr grab); #endif /* DIXGRABS_H */ --- xorg-server-1.11.4.orig/include/eventconvert.h +++ xorg-server-1.11.4/include/eventconvert.h @@ -27,14 +27,15 @@ #include #include "input.h" #include "events.h" +#include "eventstr.h" #define FP1616(integral, frac) ((integral) * (1 << 16) + (frac) * (1 << 16)) _X_EXPORT int EventToCore(InternalEvent *event, xEvent **core, int *count); _X_EXPORT int EventToXI(InternalEvent *ev, xEvent **xi, int *count); _X_EXPORT int EventToXI2(InternalEvent *ev, xEvent **xi); -_X_INTERNAL int GetCoreType(InternalEvent* ev); -_X_INTERNAL int GetXIType(InternalEvent* ev); -_X_INTERNAL int GetXI2Type(InternalEvent* ev); +_X_INTERNAL int GetCoreType(enum EventType type); +_X_INTERNAL int GetXIType(enum EventType type); +_X_INTERNAL int GetXI2Type(enum EventType type); #endif /* _EVENTCONVERT_H_ */ --- xorg-server-1.11.4.orig/include/inpututils.h +++ xorg-server-1.11.4/include/inpututils.h @@ -30,13 +30,38 @@ #define INPUTUTILS_H #include "input.h" +#include + +extern Mask event_filters[MAXDEVICES][MAXEVENTS]; struct _ValuatorMask { int8_t last_bit; /* highest bit set in mask */ uint8_t mask[(MAX_VALUATORS + 7)/8]; - int valuators[MAX_VALUATORS]; /* valuator data */ + double valuators[MAX_VALUATORS]; /* valuator data */ }; extern void verify_internal_event(const InternalEvent *ev); +extern void init_device_event(DeviceEvent *event, DeviceIntPtr dev, Time ms); +extern int event_get_corestate(DeviceIntPtr mouse, DeviceIntPtr kbd); +extern void event_set_state(DeviceIntPtr mouse, DeviceIntPtr kbd, DeviceEvent *event); +extern Mask event_get_filter_from_type(DeviceIntPtr dev, int evtype); +extern Mask event_get_filter_from_xi2type(int evtype); + +FP3232 double_to_fp3232(double in); +FP1616 double_to_fp1616(double in); +double fp1616_to_double(FP1616 in); +double fp3232_to_double(FP3232 in); + +XI2Mask* xi2mask_new(void); +XI2Mask* xi2mask_new_with_size(size_t, size_t); /* don't use it */ +void xi2mask_free(XI2Mask** mask); +Bool xi2mask_isset(XI2Mask* mask, const DeviceIntPtr dev, int event_type); +void xi2mask_set(XI2Mask *mask, int deviceid, int event_type); +void xi2mask_zero(XI2Mask *mask, int deviceid); +void xi2mask_merge(XI2Mask *dest, const XI2Mask *source); +size_t xi2mask_num_masks(const XI2Mask *mask); +size_t xi2mask_mask_size(const XI2Mask *mask); +void xi2mask_set_one_mask(XI2Mask *xi2mask, int deviceid, const unsigned char *mask, size_t mask_size); +const unsigned char* xi2mask_get_one_mask(const XI2Mask *xi2mask, int deviceid); #endif --- xorg-server-1.11.4.orig/include/dix.h +++ xorg-server-1.11.4/include/dix.h @@ -339,6 +339,7 @@ extern void EnqueueEvent( InternalEvent * /* ev */, DeviceIntPtr /* device */); +extern void PlayReleasedEvents(void); extern void ActivatePointerGrab( DeviceIntPtr /* mouse */, @@ -399,6 +400,17 @@ WindowPtr /* stopAt */, DeviceIntPtr /* dev */); +extern int DeliverOneGrabbedEvent( + InternalEvent* /* event*/, + DeviceIntPtr /* dev */, + enum InputLevel /* level */); + +extern void DeliverTouchEvents( + DeviceIntPtr /* dev */, + TouchPointInfoPtr /* ti */, + InternalEvent* /* ev */, + XID /* resource */); + extern void InitializeSprite( DeviceIntPtr /* pDev */, WindowPtr /* pWin */); @@ -571,9 +583,10 @@ extern int XItoCoreType(int xi_type); extern Bool DevHasCursor(DeviceIntPtr pDev); -extern Bool _X_EXPORT IsPointerDevice( DeviceIntPtr dev); -extern Bool _X_EXPORT IsKeyboardDevice(DeviceIntPtr dev); +extern _X_EXPORT Bool IsPointerDevice(DeviceIntPtr dev); +extern _X_EXPORT Bool IsKeyboardDevice(DeviceIntPtr dev); extern Bool IsPointerEvent(InternalEvent *event); +extern Bool IsTouchEvent(InternalEvent *event); extern _X_EXPORT Bool IsMaster(DeviceIntPtr dev); extern _X_EXPORT Bool IsFloating(DeviceIntPtr dev); --- xorg-server-1.11.4.orig/include/events.h +++ xorg-server-1.11.4/include/events.h @@ -26,6 +26,7 @@ #define EVENTS_H typedef struct _DeviceEvent DeviceEvent; typedef struct _DeviceChangedEvent DeviceChangedEvent; +typedef struct _TouchOwnershipEvent TouchOwnershipEvent; #if XFreeXDGA typedef struct _DGAEvent DGAEvent; #endif --- xorg-server-1.11.4.orig/include/misc.h +++ xorg-server-1.11.4/include/misc.h @@ -89,6 +89,8 @@ #define MAXFORMATS 8 #define MAXDEVICES 40 /* input devices */ +/* 128 event opcodes for core + extension events, excluding GE */ +#define MAXEVENTS 128 #define EXTENSION_EVENT_BASE 64 #define EXTENSION_BASE 128 @@ -317,4 +319,18 @@ extern _X_EXPORT unsigned long globalSerialNumber; extern _X_EXPORT unsigned long serverGeneration; +/* Don't use this directly, use BUG_WARN or BUG_WARN_MSG instead */ +#define __BUG_WARN_MSG(cond, with_msg, ...) \ + do { if (cond) { \ + ErrorF("BUG: triggered 'if (" #cond ")'\nBUG: %s:%d in %s()\n", \ + __FILE__, __LINE__, __func__); \ + if (with_msg) ErrorF(__VA_ARGS__); \ + xorg_backtrace(); \ + } } while(0) + +#define BUG_WARN_MSG(cond, ...) \ + __BUG_WARN_MSG(cond, 1, __VA_ARGS__) + +#define BUG_WARN(cond) __BUG_WARN_MSG(cond, 0, NULL) + #endif /* MISC_H */ --- xorg-server-1.11.4.orig/include/list.h +++ xorg-server-1.11.4/include/list.h @@ -28,6 +28,7 @@ /** * @file Classic doubly-link circular list implementation. + * For real usage examples of the linked list, see the file test/list.c * * Example: * We need to keep a list of struct foo in the parent struct bar, i.e. what @@ -35,16 +36,16 @@ * * struct bar { * ... - * struct foo *foos; -----> struct foo {}, struct foo {}, struct foo{} + * struct foo *list_of_foos; -----> struct foo {}, struct foo {}, struct foo{} * ... * } * - * We need one list head in bar and a list element in all foos (both are of + * We need one list head in bar and a list element in all list_of_foos (both are of * data type 'struct list'). * * struct bar { * ... - * struct list foos; + * struct list list_of_foos; * ... * } * @@ -58,27 +59,27 @@ * * struct bar bar; * ... - * list_init(&bar.foos); + * list_init(&bar.list_of_foos); * * Then we create the first element and add it to this list: * * struct foo *foo = malloc(...); * .... - * list_add(&foo->entry, &bar.foos); + * list_add(&foo->entry, &bar.list_of_foos); * * Repeat the above for each element you want to add to the list. Deleting * works with the element itself. * list_del(&foo->entry); * free(foo); * - * Note: calling list_del(&bar.foos) will set bar.foos to an empty + * Note: calling list_del(&bar.list_of_foos) will set bar.list_of_foos to an empty * list again. * * Looping through the list requires a 'struct foo' as iterator and the * name of the field the subnodes use. * * struct foo *iterator; - * list_for_each_entry(iterator, &bar.foos, entry) { + * list_for_each_entry(iterator, &bar.list_of_foos, entry) { * if (iterator->something == ...) * ... * } @@ -87,7 +88,7 @@ * loop. You need to run the safe for-each loop instead: * * struct foo *iterator, *next; - * list_for_each_entry_safe(iterator, next, &bar.foos, entry) { + * list_for_each_entry_safe(iterator, next, &bar.list_of_foos, entry) { * if (...) * list_del(&iterator->entry); * } @@ -96,14 +97,8 @@ /** * The linkage struct for list nodes. This struct must be part of your - * to-be-linked struct. - * - * Example: - * struct foo { - * int a; - * void *b; - * struct list *mylist; - * } + * to-be-linked struct. struct list is required for both the head of the + * list and for each list node. * * Position and name of the struct list field is irrelevant. * There are no requirements that elements of a list are of the same type. @@ -118,7 +113,7 @@ * Initialize the list as an empty list. * * Example: - * list_init(&foo->mylist); + * list_init(&bar->list_of_foos); * * @param The list to initialized. */ @@ -140,7 +135,8 @@ } /** - * Insert a new element after the given list head. + * Insert a new element after the given list head. The new element does not + * need to be initialised as empty list. * The list changes from: * head → some element → ... * to @@ -148,7 +144,7 @@ * * Example: * struct foo *newfoo = malloc(...); - * list_add(&newfoo->mylist, &foo->mylist); + * list_add(&newfoo->entry, &bar->list_of_foos); * * @param entry The new element to prepend to the list. * @param head The existing list. @@ -159,6 +155,28 @@ __list_add(entry, head, head->next); } +/** + * Append a new element to the end of the list given with this list head. + * + * The list changes from: + * head → some element → ... → lastelement + * to + * head → some element → ... → lastelement → new element + * + * Example: + * struct foo *newfoo = malloc(...); + * list_append(&newfoo->entry, &bar->list_of_foos); + * + * @param entry The new element to prepend to the list. + * @param head The existing list. + */ +static inline void +list_append(struct list *entry, struct list *head) +{ + __list_add(entry, head->prev, head); +} + + static inline void __list_del(struct list *prev, struct list *next) { @@ -176,7 +194,7 @@ * the list but rather reset the list as empty list. * * Example: - * list_del(&newfoo->mylist); + * list_del(&foo->entry); * * @param entry The element to remove. */ @@ -191,7 +209,7 @@ * Check if the list is empty. * * Example: - * list_is_empty(&foo->mylist); + * list_is_empty(&bar->list_of_foos); * * @return True if the list contains one or more elements or False otherwise. */ @@ -206,7 +224,7 @@ * * Example: * struct foo* f; - * f = container_of(&foo->mylist, struct foo, mylist); + * f = container_of(&foo->entry, struct foo, entry); * assert(f == foo); * * @param ptr Pointer to the struct list. @@ -230,7 +248,7 @@ * * Example: * struct foo *first; - * first = list_first_entry(&foo->mylist, struct foo, mylist); + * first = list_first_entry(&bar->list_of_foos, struct foo, list_of_foos); * * @param ptr The list head * @param type Data type of the list element to retrieve @@ -240,6 +258,21 @@ #define list_first_entry(ptr, type, member) \ list_entry((ptr)->next, type, member) +/** + * Retrieve the last list entry for the given listpointer. + * + * Example: + * struct foo *first; + * first = list_last_entry(&bar->list_of_foos, struct foo, list_of_foos); + * + * @param ptr The list head + * @param type Data type of the list element to retrieve + * @param member Member name of the struct list field in the list element. + * @return A pointer to the last list element. + */ +#define list_last_entry(ptr, type, member) \ + list_entry((ptr)->prev, type, member) + #define __container_of(ptr, sample, member) \ (void *)((char *)(ptr) \ - ((char *)&(sample)->member - (char *)(sample))) @@ -248,7 +281,7 @@ * * Example: * struct foo *iterator; - * list_for_each_entry(iterator, &foo->mylist, mylist) { + * list_for_each_entry(iterator, &bar->list_of_foos, entry) { * [modify iterator] * } * @@ -278,4 +311,164 @@ &pos->member != (head); \ pos = tmp, tmp = __container_of(pos->member.next, tmp, member)) + + +/* NULL-Terminated List Interface + * + * The interface below does _not_ use the struct list as described above. + * It is mainly for legacy structures that cannot easily be switched to + * struct list. + * + * This interface is for structs like + * struct foo { + * [...] + * struct foo *next; + * [...] + * }; + * + * The position and field name of "next" are arbitrary. + */ + +/** + * Init the element as null-terminated list. + * + * Example: + * struct foo *list = malloc(); + * nt_list_init(list, next); + * + * @param list The list element that will be the start of the list + * @param member Member name of the field pointing to next struct + */ +#define nt_list_init(_list, _member) \ + (_list)->_member = NULL + +/** + * Returns the next element in the list or NULL on termination. + * + * Example: + * struct foo *element = list; + * while ((element = nt_list_next(element, next)) { } + * + * This macro is not safe for node deletion. Use list_for_each_entry_safe + * instead. + * + * @param list The list or current element. + * @param member Member name of the field pointing to next struct. + */ +#define nt_list_next(_list, _member) \ + (_list)->_member + +/** + * Iterate through each element in the list. + * + * Example: + * struct foo *iterator; + * nt_list_for_each_entry(iterator, list, next) { + * [modify iterator] + * } + * + * @param entry Assigned to the current list element + * @param list The list to iterate through. + * @param member Member name of the field pointing to next struct. + */ +#define nt_list_for_each_entry(_entry, _list, _member) \ + for (_entry = _list; _entry; _entry = (_entry)->_member) + +/** + * Iterate through each element in the list, keeping a backup pointer to the + * element. This macro allows for the deletion of a list element while + * looping through the list. + * + * See nt_list_for_each_entry for more details. + * + * @param entry Assigned to the current list element + * @param tmp The pointer to the next element + * @param list The list to iterate through. + * @param member Member name of the field pointing to next struct. + */ +#define nt_list_for_each_entry_safe(_entry, _tmp, _list, _member) \ + for (_entry = _list, _tmp = (_entry) ? (_entry)->_member : NULL;\ + _entry; \ + _entry = _tmp, _tmp = (_tmp) ? (_tmp)->_member: NULL) + + +/** + * Append the element to the end of the list. This macro may be used to + * merge two lists. + * + * Example: + * struct foo *elem = malloc(...); + * nt_list_init(elem, next) + * nt_list_append(elem, list, struct foo, next); + * + * Resulting list order: + * list_item_0 -> list_item_1 -> ... -> elem_item_0 -> elem_item_1 ... + * + * @param entry An entry (or list) to append to the list + * @param list The list to append to. This list must be a valid list, not + * NULL. + * @param type The list type + * @param member Member name of the field pointing to next struct + */ +#define nt_list_append(_entry, _list, _type, _member) \ + do { \ + _type *__iterator = _list; \ + while (__iterator->_member) { __iterator = __iterator->_member;}\ + __iterator->_member = _entry; \ + } while (0) + +/** + * Insert the element at the next position in the list. This macro may be + * used to insert a list into a list. + * + * struct foo *elem = malloc(...); + * nt_list_init(elem, next) + * nt_list_insert(elem, list, struct foo, next); + * + * Resulting list order: + * list_item_0 -> elem_item_0 -> elem_item_1 ... -> list_item_1 -> ... + * + * @param entry An entry (or list) to append to the list + * @param list The list to insert to. This list must be a valid list, not + * NULL. + * @param type The list type + * @param member Member name of the field pointing to next struct + */ +#define nt_list_insert(_entry, _list, _type, _member) \ + do { \ + nt_list_append((_list)->_member, _entry, _type, _member); \ + (_list)->_member = _entry; \ + } while (0) + +/** + * Delete the entry from the list by iterating through the list and + * removing any reference from the list to the entry. + * + * Example: + * struct foo *elem = + * nt_list_del(elem, list, struct foo, next); + * + * @param entry The entry to delete from the list. entry is always + * re-initialized as a null-terminated list. + * @param list The list containing the entry, set to the new list without + * the removed entry. + * @param type The list type + * @param member Member name of the field pointing to the next entry + */ +#define nt_list_del(_entry, _list, _type, _member) \ + do { \ + _type *__e = _entry; \ + if (__e == NULL) break; \ + if ((_list) == __e) { \ + _list = __e->_member; \ + } else { \ + _type *__prev = _list; \ + while (__prev->_member && __prev->_member != __e) \ + __prev = nt_list_next(__prev, _member); \ + if (__prev->_member) \ + __prev->_member = __e->_member; \ + } \ + nt_list_init(__e, _member); \ + } while(0) + #endif --- xorg-server-1.11.4.orig/include/protocol-versions.h +++ xorg-server-1.11.4/include/protocol-versions.h @@ -127,7 +127,7 @@ /* X Input */ #define SERVER_XI_MAJOR_VERSION 2 -#define SERVER_XI_MINOR_VERSION 0 +#define SERVER_XI_MINOR_VERSION 2 /* XKB */ #define SERVER_XKB_MAJOR_VERSION 1 --- xorg-server-1.11.4.orig/include/exevents.h +++ xorg-server-1.11.4/include/exevents.h @@ -37,10 +37,26 @@ * Interface available to drivers * ***************************************************************/ +/** + * Scroll flags for ::SetScrollValuator. + */ +enum ScrollFlags { + SCROLL_FLAG_NONE = 0, + /** + * Do not emulate legacy button events for valuator events on this axis. + */ + SCROLL_FLAG_DONT_EMULATE = (1 << 1), + /** + * This axis is the preferred axis for valuator emulation for this axis' + * scroll type. + */ + SCROLL_FLAG_PREFERRED = (1 << 2) +}; + extern _X_EXPORT int InitProximityClassDeviceStruct( DeviceIntPtr /* dev */); -extern _X_EXPORT void InitValuatorAxisStruct( +extern _X_EXPORT Bool InitValuatorAxisStruct( DeviceIntPtr /* dev */, int /* axnum */, Atom /* label */, @@ -51,6 +67,13 @@ int /* max_res */, int /* mode */); +extern _X_EXPORT Bool SetScrollValuator( + DeviceIntPtr /* dev */, + int /* axnum */, + enum ScrollType /* type */, + double /* increment */, + int /* flags */); + /* Input device properties */ extern _X_EXPORT void XIDeleteAllDeviceProperties( DeviceIntPtr /* device */ @@ -69,7 +92,7 @@ int /* format*/, int /* mode*/, unsigned long /* len*/, - const pointer /* value*/, + const void* /* value*/, Bool /* sendevent*/ ); @@ -103,7 +126,7 @@ ); extern _X_EXPORT Atom XIGetKnownProperty( - char* name + const char* name ); extern _X_EXPORT DeviceIntPtr XIGetDevice(xEvent *ev); @@ -136,7 +159,7 @@ typedef struct _GrabParameters { - int grabtype; /* GRABTYPE_CORE, etc. */ + int grabtype; /* CORE, etc. */ unsigned int ownerEvents; unsigned int this_device_mode; unsigned int other_devices_mode; @@ -177,7 +200,7 @@ DeviceIntPtr /* modifier_device */, int /* button */, GrabParameters* /* param */, - GrabType /* grabtype */, + enum InputLevel /* grabtype */, GrabMask* /* eventMask */); extern int @@ -187,7 +210,7 @@ DeviceIntPtr /* modifier_device */, int /* key */, GrabParameters* /* param */, - GrabType /* grabtype */, + enum InputLevel /* grabtype */, GrabMask* /* eventMask */); extern int @@ -199,6 +222,14 @@ GrabMask* /* eventMask */); extern int +GrabTouch( + ClientPtr /* client */, + DeviceIntPtr /* dev */, + DeviceIntPtr /* mod_dev */, + GrabParameters* /* param */, + GrabMask* /* eventMask */); + +extern int SelectForWindow( DeviceIntPtr /* dev */, WindowPtr /* pWin */, @@ -222,6 +253,10 @@ WindowPtr /* pWin */, XID /* id */); +extern void +WindowGone( + WindowPtr /* win */); + extern int SendEvent ( ClientPtr /* client */, @@ -288,6 +323,13 @@ xEvent * /* ev */, int /* count */); +extern void +TouchRejected( + DeviceIntPtr /* sourcedev */, + TouchPointInfoPtr /* ti */, + XID /* resource */, + TouchOwnershipEvent * /* ev */); + extern _X_HIDDEN void XI2EventSwap( xGenericEvent * /* from */, xGenericEvent * /* to */); @@ -299,8 +341,7 @@ XIShouldNotify(ClientPtr client, DeviceIntPtr dev); extern void -XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, - DeviceChangedEvent *dce); +XISendDeviceChangedEvent(DeviceIntPtr device, DeviceChangedEvent *dce); extern int XISetEventMask(DeviceIntPtr dev, WindowPtr win, ClientPtr client, --- xorg-server-1.11.4.orig/include/xserver-properties.h +++ xorg-server-1.11.4/include/xserver-properties.h @@ -74,6 +74,8 @@ #define AXIS_LABEL_PROP_REL_DIAL "Rel Dial" #define AXIS_LABEL_PROP_REL_WHEEL "Rel Vert Wheel" #define AXIS_LABEL_PROP_REL_MISC "Rel Misc" +#define AXIS_LABEL_PROP_REL_VSCROLL "Rel Vert Scroll" +#define AXIS_LABEL_PROP_REL_HSCROLL "Rel Horiz Scroll" /* * Absolute axes --- xorg-server-1.11.4.orig/Xext/xtest.c +++ xorg-server-1.11.4/Xext/xtest.c @@ -121,6 +121,10 @@ rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); if (rc != Success) return rc; + + if (!ptr) + return BadAccess; + if (stuff->cursor == None) pCursor = NullCursor; else if (stuff->cursor == XTestCurrentCursor) @@ -321,9 +325,15 @@ return BadValue; } + /* Technically the protocol doesn't allow for BadAccess here but + * this can only happen when all MDs are disabled. */ + if (!dev) + return BadAccess; + dev = GetXTestDevice(dev); } + /* If the event has a time set, wait for it to pass */ if (ev->u.keyButtonPointer.time) { --- xorg-server-1.11.4.orig/Xi/grabdevb.c +++ xorg-server-1.11.4/Xi/grabdevb.c @@ -139,7 +139,7 @@ return ret; memset(¶m, 0, sizeof(param)); - param.grabtype = GRABTYPE_XI; + param.grabtype = XI; param.ownerEvents = stuff->ownerEvents; param.this_device_mode = stuff->this_device_mode; param.other_devices_mode = stuff->other_devices_mode; @@ -148,7 +148,7 @@ mask.xi = tmp[stuff->grabbed_device].mask; ret = GrabButton(client, dev, mdev, stuff->button, ¶m, - GRABTYPE_XI, &mask); + XI, &mask); return ret; } --- xorg-server-1.11.4.orig/Xi/extinit.c +++ xorg-server-1.11.4/Xi/extinit.c @@ -853,6 +853,24 @@ swaps(&to->valuators_len, n); } +static void STouchOwnershipEvent(xXITouchOwnershipEvent *from, + xXITouchOwnershipEvent *to) +{ + char n; + + *to = *from; + swaps(&to->sequenceNumber, n); + swapl(&to->length, n); + swaps(&to->evtype, n); + swaps(&to->deviceid, n); + swapl(&to->time, n); + swaps(&to->sourceid, n); + swapl(&to->touchid, n); + swapl(&to->flags, n); + swapl(&to->root, n); + swapl(&to->event, n); + swapl(&to->child, n); +} /** Event swapping function for XI2 events. */ void @@ -882,13 +900,23 @@ case XI_KeyRelease: case XI_ButtonPress: case XI_ButtonRelease: + case XI_TouchBegin: + case XI_TouchUpdate: + case XI_TouchEnd: SDeviceEvent((xXIDeviceEvent*)from, (xXIDeviceEvent*)to); break; + case XI_TouchOwnership: + STouchOwnershipEvent((xXITouchOwnershipEvent*)from, + (xXITouchOwnershipEvent*)to); + break; case XI_RawMotion: case XI_RawKeyPress: case XI_RawKeyRelease: case XI_RawButtonPress: case XI_RawButtonRelease: + case XI_RawTouchBegin: + case XI_RawTouchUpdate: + case XI_RawTouchEnd: SRawEvent((xXIRawEvent*)from, (xXIRawEvent*)to); break; default: --- xorg-server-1.11.4.orig/Xi/ungrdev.c +++ xorg-server-1.11.4/Xi/ungrdev.c @@ -104,7 +104,7 @@ time = ClientTimeToServerTime(stuff->time); if ((CompareTimeStamps(time, currentTime) != LATER) && (CompareTimeStamps(time, dev->deviceGrab.grabTime) != EARLIER) && - (grab) && SameClient(grab, client) && grab->grabtype == GRABTYPE_XI) + (grab) && SameClient(grab, client) && grab->grabtype == XI) (*dev->deviceGrab.DeactivateGrab) (dev); return Success; } --- xorg-server-1.11.4.orig/Xi/xigrabdev.c +++ xorg-server-1.11.4/Xi/xigrabdev.c @@ -41,6 +41,7 @@ #include "exglobals.h" /* BadDevice */ #include "exevents.h" #include "xigrabdev.h" +#include "inpututils.h" int SProcXIGrabDevice(ClientPtr client) @@ -66,7 +67,7 @@ xXIGrabDeviceReply rep; int ret = Success; uint8_t status; - GrabMask mask; + GrabMask mask = { 0 }; int mask_len; REQUEST(xXIGrabDeviceReq); @@ -83,9 +84,13 @@ stuff->mask_len * 4) != Success) return BadValue; - mask_len = min(sizeof(mask.xi2mask[stuff->deviceid]), stuff->mask_len * 4); - memset(mask.xi2mask, 0, sizeof(mask.xi2mask)); - memcpy(mask.xi2mask, (char*)&stuff[1], mask_len); + mask.xi2mask = xi2mask_new(); + if (!mask.xi2mask) + return BadAlloc; + + mask_len = min(xi2mask_mask_size(mask.xi2mask), stuff->mask_len * 4); + /* FIXME: I think the old code was broken here */ + xi2mask_set_one_mask(mask.xi2mask, dev->id, (unsigned char*)&stuff[1], mask_len); ret = GrabDevice(client, dev, stuff->grab_mode, stuff->paired_device_mode, @@ -93,11 +98,13 @@ stuff->owner_events, stuff->time, &mask, - GRABTYPE_XI2, + XI2, stuff->cursor, None /* confineTo */, &status); + xi2mask_free(&mask.xi2mask); + if (ret != Success) return ret; @@ -145,7 +152,7 @@ time = ClientTimeToServerTime(stuff->time); if ((CompareTimeStamps(time, currentTime) != LATER) && (CompareTimeStamps(time, dev->deviceGrab.grabTime) != EARLIER) && - (grab) && SameClient(grab, client) && grab->grabtype == GRABTYPE_XI2) + (grab) && SameClient(grab, client) && grab->grabtype == XI2) (*dev->deviceGrab.DeactivateGrab) (dev); return Success; --- xorg-server-1.11.4.orig/Xi/grabdev.c +++ xorg-server-1.11.4/Xi/grabdev.c @@ -132,7 +132,7 @@ rc = GrabDevice(client, dev, stuff->other_devices_mode, stuff->this_device_mode, stuff->grabWindow, stuff->ownerEvents, stuff->time, - &mask, GRABTYPE_XI, None, None, + &mask, XI, None, None, &rep.status); if (rc != Success) --- xorg-server-1.11.4.orig/Xi/xiwarppointer.c +++ xorg-server-1.11.4/Xi/xiwarppointer.c @@ -192,8 +192,6 @@ /* if we don't update the device, we get a jump next time it moves */ pDev->last.valuators[0] = x; pDev->last.valuators[1] = y; - pDev->last.remainder[0] = 0; - pDev->last.remainder[1] = 0; miPointerUpdateSprite(pDev); /* FIXME: XWarpPointer is supposed to generate an event. It doesn't do it --- xorg-server-1.11.4.orig/Xi/xiallowev.c +++ xorg-server-1.11.4/Xi/xiallowev.c @@ -35,10 +35,13 @@ #include "inputstr.h" /* DeviceIntPtr */ #include "windowstr.h" /* window structure */ +#include "mi.h" +#include "eventstr.h" #include #include #include "exglobals.h" /* BadDevice */ +#include "exevents.h" #include "xiallowev.h" int @@ -51,6 +54,12 @@ swaps(&stuff->length, n); swaps(&stuff->deviceid, n); swapl(&stuff->time, n); + if (stuff->length > 3) + { + xXI2_2AllowEventsReq *req_xi22 = (xXI2_2AllowEventsReq*)stuff; + swapl(&req_xi22->touchid, n); + swapl(&req_xi22->grab_window, n); + } return ProcXIAllowEvents(client); } @@ -61,9 +70,21 @@ TimeStamp time; DeviceIntPtr dev; int ret = Success; - - REQUEST(xXIAllowEventsReq); - REQUEST_SIZE_MATCH(xXIAllowEventsReq); + XIClientPtr xi_client; + Bool have_xi22 = FALSE; + REQUEST(xXI2_2AllowEventsReq); + + xi_client = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey); + + if (version_compare(xi_client->major_version, + xi_client->minor_version, 2, 2) >= 0) + { + REQUEST_AT_LEAST_SIZE(xXI2_2AllowEventsReq); + have_xi22 = TRUE; + } else + { + REQUEST_SIZE_MATCH(xXIAllowEventsReq); + } ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess); if (ret != Success) @@ -93,6 +114,23 @@ if (IsMaster(dev)) AllowSome(client, time, dev, THAWED_BOTH); break; + case XIRejectTouch: + case XIAcceptTouch: + { + int rc; + WindowPtr win; + + if (!have_xi22) + return BadValue; + + rc = dixLookupWindow(&win, stuff->grab_window, client, DixReadAccess); + if (rc != Success) + return rc; + + ret = TouchAcceptReject(client, dev, stuff->mode, stuff->touchid, + stuff->grab_window, &client->errorValue); + } + break; default: client->errorValue = stuff->mode; ret = BadValue; --- xorg-server-1.11.4.orig/Xi/xiquerydevice.c +++ xorg-server-1.11.4/Xi/xiquerydevice.c @@ -41,6 +41,7 @@ #include "xserver-properties.h" #include "exevents.h" #include "xace.h" +#include "inpututils.h" #include "xiquerydevice.h" @@ -233,7 +234,18 @@ } if (dev->valuator) - len += sizeof(xXIValuatorInfo) * dev->valuator->numAxes; + { + int i; + len += (sizeof(xXIValuatorInfo)) * dev->valuator->numAxes; + + for (i = 0; i < dev->valuator->numAxes; i++) { + if (dev->valuator->axes[i].scroll.type != SCROLL_TYPE_NONE) + len += sizeof(xXIScrollInfo); + } + } + + if (dev->touch) + len += sizeof(xXITouchInfo); return len; } @@ -348,8 +360,7 @@ info->min.frac = 0; info->max.integral = v->axes[axisnumber].max_value; info->max.frac = 0; - info->value.integral = (int)v->axisVal[axisnumber]; - info->value.frac = (int)(v->axisVal[axisnumber] * (1 << 16) * (1 << 16)); + info->value = double_to_fp3232(v->axisVal[axisnumber]); info->resolution = v->axes[axisnumber].resolution; info->number = axisnumber; info->mode = valuator_get_mode(dev, axisnumber); @@ -376,6 +387,84 @@ swaps(&info->sourceid, n); } +int +ListScrollInfo(DeviceIntPtr dev, xXIScrollInfo *info, int axisnumber) +{ + ValuatorClassPtr v = dev->valuator; + AxisInfoPtr axis = &v->axes[axisnumber]; + + if (axis->scroll.type == SCROLL_TYPE_NONE) + return 0; + + info->type = XIScrollClass; + info->length = sizeof(xXIScrollInfo)/4; + info->number = axisnumber; + switch(axis->scroll.type) + { + case SCROLL_TYPE_VERTICAL: + info->scroll_type = XIScrollTypeVertical; + break; + case SCROLL_TYPE_HORIZONTAL: + info->scroll_type = XIScrollTypeHorizontal; + break; + default: + ErrorF("[Xi] Unknown scroll type %d. This is a bug.\n", axis->scroll.type); + break; + } + info->increment = double_to_fp3232(axis->scroll.increment); + info->sourceid = v->sourceid; + + info->flags = 0; + + if (axis->scroll.flags & SCROLL_FLAG_DONT_EMULATE) + info->flags |= XIScrollFlagNoEmulation; + if (axis->scroll.flags & SCROLL_FLAG_PREFERRED) + info->flags |= XIScrollFlagPreferred; + + return info->length * 4; +} + +static void +SwapScrollInfo(DeviceIntPtr dev, xXIScrollInfo* info) +{ + char n; + + swaps(&info->type, n); + swaps(&info->length, n); + swaps(&info->number, n); + swaps(&info->sourceid, n); + swaps(&info->scroll_type, n); + swapl(&info->increment.integral, n); + swapl(&info->increment.frac, n); +} + +/** + * List multitouch information + * + * @return The number of bytes written into info. + */ +int +ListTouchInfo(DeviceIntPtr dev, xXITouchInfo *touch) +{ + touch->type = XITouchClass; + touch->length = sizeof(xXITouchInfo) >> 2; + touch->sourceid = touch->sourceid; + touch->mode = dev->touch->mode; + touch->num_touches = dev->touch->num_touches; + + return touch->length << 2; +} + +static void +SwapTouchInfo(DeviceIntPtr dev, xXITouchInfo* touch) +{ + char n; + + swaps(&touch->type, n); + swaps(&touch->length, n); + swaps(&touch->sourceid, n); +} + int GetDeviceUse(DeviceIntPtr dev, uint16_t *attachment) { DeviceIntPtr master = GetMaster(dev, MASTER_ATTACHED); @@ -465,6 +554,23 @@ total_len += len; } + for (i = 0; dev->valuator && i < dev->valuator->numAxes; i++) + { + len = ListScrollInfo(dev, (xXIScrollInfo*)any, i); + if (len) + (*nclasses)++; + any += len; + total_len += len; + } + + if (dev->touch) + { + (*nclasses)++; + len = ListTouchInfo(dev, (xXITouchInfo*)any); + any += len; + total_len += len; + } + return total_len; } @@ -492,6 +598,13 @@ case XIValuatorClass: SwapValuatorInfo(dev, (xXIValuatorInfo*)any); break; + case XIScrollClass: + SwapScrollInfo(dev, (xXIScrollInfo*)any); + break; + case XITouchClass: + SwapTouchInfo(dev, (xXITouchInfo*)any); + break; + } any += len * 4; --- xorg-server-1.11.4.orig/Xi/xipassivegrab.c +++ xorg-server-1.11.4/Xi/xipassivegrab.c @@ -44,6 +44,7 @@ #include "xipassivegrab.h" #include "dixgrabs.h" #include "misc.h" +#include "inpututils.h" int SProcXIPassiveGrabDevice(ClientPtr client) @@ -81,10 +82,9 @@ DeviceIntPtr dev, mod_dev; xXIPassiveGrabDeviceReply rep; int i, ret = Success; - uint8_t status; uint32_t *modifiers; xXIGrabModifierInfo *modifiers_failed; - GrabMask mask; + GrabMask mask = { 0 }; GrabParameters param; void *tmp; int mask_len; @@ -110,26 +110,39 @@ if (stuff->grab_type != XIGrabtypeButton && stuff->grab_type != XIGrabtypeKeycode && stuff->grab_type != XIGrabtypeEnter && - stuff->grab_type != XIGrabtypeFocusIn) + stuff->grab_type != XIGrabtypeFocusIn && + stuff->grab_type != XIGrabtypeTouchBegin) { client->errorValue = stuff->grab_type; return BadValue; } if ((stuff->grab_type == XIGrabtypeEnter || - stuff->grab_type == XIGrabtypeFocusIn) && stuff->detail != 0) + stuff->grab_type == XIGrabtypeFocusIn || + stuff->grab_type == XIGrabtypeTouchBegin) && stuff->detail != 0) { client->errorValue = stuff->detail; return BadValue; } + if (stuff->grab_type == XIGrabtypeTouchBegin && + (stuff->grab_mode != XIGrabModeTouch || + stuff->paired_device_mode != GrabModeAsync)) + { + client->errorValue = stuff->grab_mode; + return BadValue; + } + if (XICheckInvalidMaskBits(client, (unsigned char*)&stuff[1], stuff->mask_len * 4) != Success) return BadValue; - mask_len = min(sizeof(mask.xi2mask[stuff->deviceid]), stuff->mask_len * 4); - memset(mask.xi2mask, 0, sizeof(mask.xi2mask)); - memcpy(mask.xi2mask[stuff->deviceid], &stuff[1], mask_len * 4); + mask.xi2mask = xi2mask_new(); + if (!mask.xi2mask) + return BadAlloc; + + mask_len = min(xi2mask_mask_size(mask.xi2mask), stuff->mask_len * 4); + xi2mask_set_one_mask(mask.xi2mask, stuff->deviceid, (unsigned char*)&stuff[1], mask_len * 4); rep.repType = X_Reply; rep.RepType = X_XIPassiveGrabDevice; @@ -138,7 +151,7 @@ rep.num_modifiers = 0; memset(¶m, 0, sizeof(param)); - param.grabtype = GRABTYPE_XI2; + param.grabtype = XI2; param.ownerEvents = stuff->owner_events; param.grabWindow = stuff->grab_window; param.cursor = stuff->cursor; @@ -153,48 +166,55 @@ if (stuff->cursor != None) { - status = dixLookupResourceByType(&tmp, stuff->cursor, - RT_CURSOR, client, DixUseAccess); - if (status != Success) - { - client->errorValue = stuff->cursor; - return status; - } - } - - status = dixLookupWindow((WindowPtr*)&tmp, stuff->grab_window, client, DixSetAttrAccess); - if (status != Success) - return status; - - status = CheckGrabValues(client, ¶m); - if (status != Success) - return status; + ret = dixLookupResourceByType(&tmp, stuff->cursor, + RT_CURSOR, client, DixUseAccess); + if (ret != Success) + { + client->errorValue = stuff->cursor; + goto out; + } + } + + ret = dixLookupWindow((WindowPtr*)&tmp, stuff->grab_window, client, DixSetAttrAccess); + if (ret != Success) + goto out; + + ret = CheckGrabValues(client, ¶m); + if (ret != Success) + goto out; modifiers = (uint32_t*)&stuff[1] + stuff->mask_len; modifiers_failed = calloc(stuff->num_modifiers, sizeof(xXIGrabModifierInfo)); - if (!modifiers_failed) - return BadAlloc; + if (!modifiers_failed) { + ret = BadAlloc; + goto out; + } mod_dev = (IsFloating(dev)) ? dev : GetMaster(dev, MASTER_KEYBOARD); for (i = 0; i < stuff->num_modifiers; i++, modifiers++) { + uint8_t status = Success; + param.modifiers = *modifiers; switch(stuff->grab_type) { case XIGrabtypeButton: status = GrabButton(client, dev, mod_dev, stuff->detail, - ¶m, GRABTYPE_XI2, &mask); + ¶m, XI2, &mask); break; case XIGrabtypeKeycode: status = GrabKey(client, dev, mod_dev, stuff->detail, - ¶m, GRABTYPE_XI2, &mask); + ¶m, XI2, &mask); break; case XIGrabtypeEnter: case XIGrabtypeFocusIn: status = GrabWindow(client, dev, stuff->grab_type, ¶m, &mask); break; + case XIGrabtypeTouchBegin: + status = GrabTouch(client, dev, mod_dev, ¶m, &mask); + break; } if (status != GrabSuccess) @@ -216,6 +236,8 @@ WriteToClient(client, rep.length * 4, (char*)modifiers_failed); free(modifiers_failed); +out: + xi2mask_free(&mask.xi2mask); return ret; } @@ -260,7 +282,7 @@ { DeviceIntPtr dev, mod_dev; WindowPtr win; - GrabRec tempGrab; + GrabPtr tempGrab; uint32_t* modifiers; int i, rc; @@ -281,14 +303,16 @@ if (stuff->grab_type != XIGrabtypeButton && stuff->grab_type != XIGrabtypeKeycode && stuff->grab_type != XIGrabtypeEnter && - stuff->grab_type != XIGrabtypeFocusIn) + stuff->grab_type != XIGrabtypeFocusIn && + stuff->grab_type != XIGrabtypeTouchBegin) { client->errorValue = stuff->grab_type; return BadValue; } if ((stuff->grab_type == XIGrabtypeEnter || - stuff->grab_type == XIGrabtypeFocusIn) && stuff->detail != 0) + stuff->grab_type == XIGrabtypeFocusIn || + stuff->grab_type == XIGrabtypeTouchBegin) && stuff->detail != 0) { client->errorValue = stuff->detail; return BadValue; @@ -300,29 +324,37 @@ mod_dev = (IsFloating(dev)) ? dev : GetMaster(dev, MASTER_KEYBOARD); - tempGrab.resource = client->clientAsMask; - tempGrab.device = dev; - tempGrab.window = win; + + tempGrab = AllocGrab(); + if (!tempGrab) + return BadAlloc; + + tempGrab->resource = client->clientAsMask; + tempGrab->device = dev; + tempGrab->window = win; switch(stuff->grab_type) { - case XIGrabtypeButton: tempGrab.type = XI_ButtonPress; break; - case XIGrabtypeKeycode: tempGrab.type = XI_KeyPress; break; - case XIGrabtypeEnter: tempGrab.type = XI_Enter; break; - case XIGrabtypeFocusIn: tempGrab.type = XI_FocusIn; break; - } - tempGrab.grabtype = GRABTYPE_XI2; - tempGrab.modifierDevice = mod_dev; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.detail.exact = stuff->detail; - tempGrab.detail.pMask = NULL; + case XIGrabtypeButton: tempGrab->type = XI_ButtonPress; break; + case XIGrabtypeKeycode: tempGrab->type = XI_KeyPress; break; + case XIGrabtypeEnter: tempGrab->type = XI_Enter; break; + case XIGrabtypeFocusIn: tempGrab->type = XI_FocusIn; break; + case XIGrabtypeTouchBegin: tempGrab->type = XI_TouchBegin; break; + } + tempGrab->grabtype = XI2; + tempGrab->modifierDevice = mod_dev; + tempGrab->modifiersDetail.pMask = NULL; + tempGrab->detail.exact = stuff->detail; + tempGrab->detail.pMask = NULL; modifiers = (uint32_t*)&stuff[1]; for (i = 0; i < stuff->num_modifiers; i++, modifiers++) { - tempGrab.modifiersDetail.exact = *modifiers; - DeletePassiveGrabFromList(&tempGrab); + tempGrab->modifiersDetail.exact = *modifiers; + DeletePassiveGrabFromList(tempGrab); } + FreeGrab(tempGrab); + return Success; } --- xorg-server-1.11.4.orig/Xi/xiquerydevice.h +++ xorg-server-1.11.4/Xi/xiquerydevice.h @@ -44,4 +44,6 @@ int ListKeyInfo(DeviceIntPtr dev, xXIKeyInfo* info); int ListValuatorInfo(DeviceIntPtr dev, xXIValuatorInfo* info, int axisnumber, Bool reportState); +int ListScrollInfo(DeviceIntPtr dev, xXIScrollInfo* info, int axisnumber); +int ListTouchInfo(DeviceIntPtr dev, xXITouchInfo* info); #endif /* QUERYDEV_H */ --- xorg-server-1.11.4.orig/Xi/xiproperty.c +++ xorg-server-1.11.4/Xi/xiproperty.c @@ -52,11 +52,14 @@ } dev_properties[] = { {0, XI_PROP_ENABLED}, {0, XI_PROP_XTEST_DEVICE}, + {0, XATOM_FLOAT}, + {0, ACCEL_PROP_PROFILE_NUMBER}, {0, ACCEL_PROP_CONSTANT_DECELERATION}, {0, ACCEL_PROP_ADAPTIVE_DECELERATION}, {0, ACCEL_PROP_VELOCITY_SCALING}, + {0, AXIS_LABEL_PROP}, {0, AXIS_LABEL_PROP_REL_X}, {0, AXIS_LABEL_PROP_REL_Y}, @@ -68,6 +71,8 @@ {0, AXIS_LABEL_PROP_REL_DIAL}, {0, AXIS_LABEL_PROP_REL_WHEEL}, {0, AXIS_LABEL_PROP_REL_MISC}, + {0, AXIS_LABEL_PROP_REL_VSCROLL}, + {0, AXIS_LABEL_PROP_REL_HSCROLL}, {0, AXIS_LABEL_PROP_ABS_X}, {0, AXIS_LABEL_PROP_ABS_Y}, {0, AXIS_LABEL_PROP_ABS_Z}, @@ -381,7 +386,7 @@ * If name is NULL, None is returned. */ Atom -XIGetKnownProperty(char *name) +XIGetKnownProperty(const char *name) { int i; @@ -701,7 +706,7 @@ int XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type, int format, int mode, unsigned long len, - const pointer value, Bool sendevent) + const void *value, Bool sendevent) { XIPropertyPtr prop; int size_in_bytes; --- xorg-server-1.11.4.orig/Xi/xiquerypointer.c +++ xorg-server-1.11.4/Xi/xiquerypointer.c @@ -111,7 +111,7 @@ MaybeStopHint(pDev, client); if (IsMaster(pDev)) - kbd = GetPairedDevice(pDev); + kbd = GetMaster(pDev, MASTER_KEYBOARD); else kbd = (pDev->key) ? pDev : NULL; --- xorg-server-1.11.4.orig/Xi/ungrdevb.c +++ xorg-server-1.11.4/Xi/ungrdevb.c @@ -98,7 +98,7 @@ DeviceIntPtr dev; DeviceIntPtr mdev; WindowPtr pWin; - GrabRec temporaryGrab; + GrabPtr temporaryGrab; int rc; REQUEST(xUngrabDeviceButtonReq); @@ -128,17 +128,23 @@ (stuff->modifiers & ~AllModifiersMask)) return BadValue; - temporaryGrab.resource = client->clientAsMask; - temporaryGrab.device = dev; - temporaryGrab.window = pWin; - temporaryGrab.type = DeviceButtonPress; - temporaryGrab.grabtype = GRABTYPE_XI; - temporaryGrab.modifierDevice = mdev; - temporaryGrab.modifiersDetail.exact = stuff->modifiers; - temporaryGrab.modifiersDetail.pMask = NULL; - temporaryGrab.detail.exact = stuff->button; - temporaryGrab.detail.pMask = NULL; + temporaryGrab = AllocGrab(); + if (!temporaryGrab) + return BadAlloc; + + temporaryGrab->resource = client->clientAsMask; + temporaryGrab->device = dev; + temporaryGrab->window = pWin; + temporaryGrab->type = DeviceButtonPress; + temporaryGrab->grabtype = XI; + temporaryGrab->modifierDevice = mdev; + temporaryGrab->modifiersDetail.exact = stuff->modifiers; + temporaryGrab->modifiersDetail.pMask = NULL; + temporaryGrab->detail.exact = stuff->button; + temporaryGrab->detail.pMask = NULL; - DeletePassiveGrabFromList(&temporaryGrab); + DeletePassiveGrabFromList(temporaryGrab); + + FreeGrab(temporaryGrab); return Success; } --- xorg-server-1.11.4.orig/Xi/grabdevk.c +++ xorg-server-1.11.4/Xi/grabdevk.c @@ -137,7 +137,7 @@ memset(¶m, 0, sizeof(param)); - param.grabtype = GRABTYPE_XI; + param.grabtype = XI; param.ownerEvents = stuff->ownerEvents; param.this_device_mode = stuff->this_device_mode; param.other_devices_mode = stuff->other_devices_mode; @@ -145,7 +145,7 @@ param.modifiers = stuff->modifiers; mask.xi = tmp[stuff->grabbed_device].mask; - ret = GrabKey(client, dev, mdev, stuff->key, ¶m, GRABTYPE_XI, &mask); + ret = GrabKey(client, dev, mdev, stuff->key, ¶m, XI, &mask); return ret; } --- xorg-server-1.11.4.orig/Xi/xiselectev.c +++ xorg-server-1.11.4/Xi/xiselectev.c @@ -33,6 +33,7 @@ #include "exglobals.h" #include "exevents.h" #include +#include "inpututils.h" #include "xiselectev.h" @@ -145,13 +146,59 @@ BitIsOn(bits, XI_RawKeyRelease) || BitIsOn(bits, XI_RawButtonPress) || BitIsOn(bits, XI_RawButtonRelease) || - BitIsOn(bits, XI_RawMotion)) + BitIsOn(bits, XI_RawMotion) || + BitIsOn(bits, XI_RawTouchBegin) || + BitIsOn(bits, XI_RawTouchUpdate) || + BitIsOn(bits, XI_RawTouchEnd)) { client->errorValue = XI_RawKeyPress; return BadValue; } } + if (evmask->mask_len >= 1) + { + unsigned char *bits = (unsigned char*)&evmask[1]; + + /* All three touch events must be selected at once */ + if ((BitIsOn(bits, XI_TouchBegin) || + BitIsOn(bits, XI_TouchUpdate) || + BitIsOn(bits, XI_TouchOwnership) || + BitIsOn(bits, XI_TouchEnd)) && + (!BitIsOn(bits, XI_TouchBegin) || + !BitIsOn(bits, XI_TouchUpdate) || + !BitIsOn(bits, XI_TouchEnd))) + { + client->errorValue = XI_TouchBegin; + return BadValue; + } + + /* Only one client per window may select for touch events on the + * same devices, including master devices. + * XXX: This breaks if a device goes from floating to attached. */ + if (BitIsOn(bits, XI_TouchBegin)) + { + OtherInputMasks *inputMasks = wOtherInputMasks(win); + InputClients *iclient = NULL; + if (inputMasks) + iclient = inputMasks->inputClients; + for (; iclient; iclient = iclient->next) + { + DeviceIntPtr dummy; + + if (CLIENT_ID(iclient->resource) == client->index) + continue; + + dixLookupDevice(&dummy, evmask->deviceid, serverClient, DixReadAccess); + if (!dummy) + return BadImplementation; /* this shouldn't happen */ + + if (xi2mask_isset(iclient->xi2mask, dummy, XI_TouchBegin)) + return BadAccess; + } + } + } + if (XICheckInvalidMaskBits(client, (unsigned char*)&evmask[1], evmask->mask_len * 4) != Success) return BadValue; @@ -253,7 +300,7 @@ for (i = 0; i < MAXDEVICES; i++) { int j; - unsigned char *devmask = others->xi2mask[i]; + const unsigned char *devmask = xi2mask_get_one_mask(others->xi2mask, i); if (i > 2) { @@ -263,7 +310,7 @@ } - for (j = XI2MASKSIZE - 1; j >= 0; j--) + for (j = xi2mask_mask_size(others->xi2mask) - 1; j >= 0; j--) { if (devmask[j] != 0) { --- xorg-server-1.11.4.orig/Xi/ungrdevk.c +++ xorg-server-1.11.4/Xi/ungrdevk.c @@ -100,7 +100,7 @@ DeviceIntPtr dev; DeviceIntPtr mdev; WindowPtr pWin; - GrabRec temporaryGrab; + GrabPtr temporaryGrab; int rc; REQUEST(xUngrabDeviceKeyReq); @@ -135,17 +135,22 @@ (stuff->modifiers & ~AllModifiersMask)) return BadValue; - temporaryGrab.resource = client->clientAsMask; - temporaryGrab.device = dev; - temporaryGrab.window = pWin; - temporaryGrab.type = DeviceKeyPress; - temporaryGrab.grabtype = GRABTYPE_XI; - temporaryGrab.modifierDevice = mdev; - temporaryGrab.modifiersDetail.exact = stuff->modifiers; - temporaryGrab.modifiersDetail.pMask = NULL; - temporaryGrab.detail.exact = stuff->key; - temporaryGrab.detail.pMask = NULL; + temporaryGrab = AllocGrab(); + if (!temporaryGrab) + return BadAlloc; + + temporaryGrab->resource = client->clientAsMask; + temporaryGrab->device = dev; + temporaryGrab->window = pWin; + temporaryGrab->type = DeviceKeyPress; + temporaryGrab->grabtype = XI; + temporaryGrab->modifierDevice = mdev; + temporaryGrab->modifiersDetail.exact = stuff->modifiers; + temporaryGrab->modifiersDetail.pMask = NULL; + temporaryGrab->detail.exact = stuff->key; + temporaryGrab->detail.pMask = NULL; - DeletePassiveGrabFromList(&temporaryGrab); + DeletePassiveGrabFromList(temporaryGrab); + FreeGrab(temporaryGrab); return Success; } --- xorg-server-1.11.4.orig/Xi/exevents.c +++ xorg-server-1.11.4/Xi/exevents.c @@ -44,6 +44,32 @@ ********************************************************/ +/* + * Copyright © 2010 Collabora Ltd. + * Copyright © 2011 Red Hat, Inc. + * + * 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. + * + * Author: Daniel Stone + */ + /******************************************************************** * * Routines to register and initialize extension input devices. @@ -78,6 +104,7 @@ #include "eventconvert.h" #include "eventstr.h" #include "inpututils.h" +#include "mi.h" #include #include "xkbsrv.h" @@ -104,7 +131,7 @@ XIShouldNotify(ClientPtr client, DeviceIntPtr dev) { DeviceIntPtr current_ptr = PickPointer(client); - DeviceIntPtr current_kbd = GetPairedDevice(current_ptr); + DeviceIntPtr current_kbd = GetMaster(current_ptr, KEYBOARD_OR_FLOAT); if (dev == current_kbd || dev == current_ptr) return 1; @@ -128,6 +155,21 @@ return FALSE; } +Bool +IsTouchEvent(InternalEvent* event) +{ + switch(event->any.type) + { + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: + return TRUE; + default: + break; + } + return FALSE; +} + /** * @return the device matching the deviceid of the device set in the event, or * NULL if the event is not an XInput event. @@ -492,6 +534,8 @@ } +/* FIXME: this should really be shared with the InitValuatorAxisClassRec and + * similar */ static void DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) { @@ -624,6 +668,46 @@ classes->proximity = to->proximity; to->proximity = NULL; } + + if (from->touch) + { + TouchClassPtr t, f; + if (!to->touch) + { + classes = to->unused_classes; + to->touch = classes->touch; + if (!to->touch) + { + int i; + to->touch = calloc(1, sizeof(TouchClassRec)); + if (!to->touch) + FatalError("[Xi] no memory for class shift.\n"); + to->touch->num_touches = from->touch->num_touches; + to->touch->touches = calloc(to->touch->num_touches, + sizeof(TouchPointInfoRec)); + for (i = 0; i < to->touch->num_touches; i++) + TouchInitTouchPoint(to->touch, to->valuator, i); + if (!to->touch) + FatalError("[Xi] no memory for class shift.\n"); + } else + classes->touch = NULL; + } + + + t = to->touch; + f = from->touch; + t->sourceid = f->sourceid; + t->max_touches = f->max_touches; + t->mode = f->mode; + t->buttonsDown = f->buttonsDown; + t->state = f->state; + t->motionMask = f->motionMask; + /* to->touches and to->num_touches are separate on the master, + * don't copy */ + } + /* Don't remove touch class if from->touch is non-existent. The to device + * may have an active touch grab, so we need to keep the touch class record + * around. */ } /** @@ -651,7 +735,7 @@ * Send an XI2 DeviceChangedEvent to all interested clients. */ void -XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, DeviceChangedEvent *dce) +XISendDeviceChangedEvent(DeviceIntPtr device, DeviceChangedEvent *dce) { xXIDeviceChangedEvent *dcce; int rc; @@ -665,7 +749,7 @@ /* we don't actually swap if there's a NullClient, swapping is done * later when event is delivered. */ - SendEventToAllWindows(master, XI_DeviceChangedMask, (xEvent*)dcce, 1); + SendEventToAllWindows(device, XI_DeviceChangedMask, (xEvent*)dcce, 1); free(dcce); } @@ -699,7 +783,57 @@ /* FIXME: the classes may have changed since we generated the event. */ DeepCopyDeviceClasses(slave, device, dce); - XISendDeviceChangedEvent(slave, device, dce); + dce->deviceid = device->id; + XISendDeviceChangedEvent(device, dce); +} + +/** + * Add state and motionMask to the filter for this event. The protocol + * supports some extra masks for motion when a button is down: + * ButtonXMotionMask and the DeviceButtonMotionMask to trigger only when at + * least one button (or that specific button is down). These masks need to + * be added to the filters for core/XI motion events. + * + * @param device The device to update the mask for + * @param state The current button state mask + * @param motion_mask The motion mask (DeviceButtonMotionMask or 0) + */ +static void +UpdateDeviceMotionMask(DeviceIntPtr device, unsigned short state, + Mask motion_mask) +{ + Mask mask; + + mask = DevicePointerMotionMask | state | motion_mask; + SetMaskForEvent(device->id, mask, DeviceMotionNotify); + mask = PointerMotionMask | state | motion_mask; + SetMaskForEvent(device->id, mask, MotionNotify); +} + +static void +IncreaseButtonCount(DeviceIntPtr dev, int key, CARD8 *buttons_down, + Mask *motion_mask, unsigned short *state) +{ + if (dev->valuator) + dev->valuator->motionHintWindow = NullWindow; + + (*buttons_down)++; + *motion_mask = DeviceButtonMotionMask; + if (dev->button->map[key] <= 5) + *state |= (Button1Mask >> 1) << dev->button->map[key]; +} + +static void +DecreaseButtonCount(DeviceIntPtr dev, int key, CARD8 *buttons_down, + Mask *motion_mask, unsigned short *state) +{ + if (dev->valuator) + dev->valuator->motionHintWindow = NullWindow; + + if (*buttons_down >= 1 && !--(*buttons_down)) + *motion_mask = 0; + if (dev->button->map[key] <= 5) + *state &= ~((Button1Mask >> 1) << dev->button->map[key]); } /** @@ -716,12 +850,12 @@ { int i; int key = 0, - bit = 0, last_valuator; KeyClassPtr k = NULL; ButtonClassPtr b = NULL; ValuatorClassPtr v = NULL; + TouchClassPtr t = NULL; /* This event is always the first we get, before the actual events with * the data. However, the way how the DDX is set up, "device" will @@ -739,6 +873,9 @@ case ET_KeyRelease: case ET_ProximityIn: case ET_ProximityOut: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: break; default: /* other events don't update the device */ @@ -748,9 +885,9 @@ k = device->key; v = device->valuator; b = device->button; + t = device->touch; key = event->detail.key; - bit = 1 << (key & 7); /* Update device axis */ /* Check valuators first */ @@ -776,12 +913,9 @@ for (i = 0; i <= last_valuator && i < v->numAxes; i++) { + /* XXX: Relative/Absolute mode */ if (BitIsOn(&event->valuators.mask, i)) - { - /* XXX: Relative/Absolute mode */ v->axisVal[i] = event->valuators.data[i]; - v->axisVal[i] += (event->valuators.data_frac[i] * 1.0f / (1 << 16) / (1 << 16)); - } } if (event->type == ET_KeyPress) { @@ -805,7 +939,6 @@ device->valuator->motionHintWindow = NullWindow; set_key_up(device, key, KEY_PROCESSED); } else if (event->type == ET_ButtonPress) { - Mask mask; if (!b) return DONT_PROCESS; @@ -813,22 +946,13 @@ return DONT_PROCESS; set_button_down(device, key, BUTTON_PROCESSED); - if (device->valuator) - device->valuator->motionHintWindow = NullWindow; + if (!b->map[key]) return DONT_PROCESS; - b->buttonsDown++; - b->motionMask = DeviceButtonMotionMask; - if (b->map[key] <= 5) - b->state |= (Button1Mask >> 1) << b->map[key]; - - /* Add state and motionMask to the filter for this event */ - mask = DevicePointerMotionMask | b->state | b->motionMask; - SetMaskForEvent(device->id, mask, DeviceMotionNotify); - mask = PointerMotionMask | b->state | b->motionMask; - SetMaskForEvent(device->id, mask, MotionNotify); + + IncreaseButtonCount(device, key, &b->buttonsDown, &b->motionMask, &b->state); + UpdateDeviceMotionMask(device, b->state, b->motionMask); } else if (event->type == ET_ButtonRelease) { - Mask mask; if (!b) return DONT_PROCESS; @@ -854,108 +978,656 @@ } } set_button_up(device, key, BUTTON_PROCESSED); - if (device->valuator) - device->valuator->motionHintWindow = NullWindow; if (!b->map[key]) return DONT_PROCESS; - if (b->buttonsDown >= 1 && !--b->buttonsDown) - b->motionMask = 0; - if (b->map[key] <= 5) - b->state &= ~((Button1Mask >> 1) << b->map[key]); - - /* Add state and motionMask to the filter for this event */ - mask = DevicePointerMotionMask | b->state | b->motionMask; - SetMaskForEvent(device->id, mask, DeviceMotionNotify); - mask = PointerMotionMask | b->state | b->motionMask; - SetMaskForEvent(device->id, mask, MotionNotify); + + DecreaseButtonCount(device, key, &b->buttonsDown, &b->motionMask, &b->state); + UpdateDeviceMotionMask(device, b->state, b->motionMask); } else if (event->type == ET_ProximityIn) device->proximity->in_proximity = TRUE; else if (event->type == ET_ProximityOut) device->proximity->in_proximity = FALSE; + else if (event->type == ET_TouchBegin) { + BUG_WARN(!b || !v); + BUG_WARN(!t); + + if (!b || !t || !b->map[key]) + return DONT_PROCESS; + + if (!(event->flags & TOUCH_POINTER_EMULATED) || + (event->flags & TOUCH_REPLAYING)) + return DONT_PROCESS; + + IncreaseButtonCount(device, key, &t->buttonsDown, &t->motionMask, &t->state); + UpdateDeviceMotionMask(device, t->state, DeviceButtonMotionMask); + } else if (event->type == ET_TouchEnd) { + BUG_WARN(!b || !v); + BUG_WARN(!t); + + if (!b || !t || t->buttonsDown <= 0 || !b->map[key]) + return DONT_PROCESS; + + if (!(event->flags & TOUCH_POINTER_EMULATED)) + return DONT_PROCESS; + if (!(event->flags & TOUCH_END)) + return DONT_PROCESS; + + DecreaseButtonCount(device, key, &t->buttonsDown, &t->motionMask, &t->state); + UpdateDeviceMotionMask(device, t->state, DeviceButtonMotionMask); + } return DEFAULT; } /** - * Main device event processing function. - * Called from when processing the events from the event queue. + * A client that does not have the TouchOwnership mask set may not receive a + * TouchBegin event if there is at least one grab active. + * + * @return TRUE if the client selected for ownership events on the given + * window for this device, FALSE otherwise + */ +static inline Bool +TouchClientWantsOwnershipEvents(ClientPtr client, DeviceIntPtr dev, WindowPtr win) +{ + InputClients *iclient; + + nt_list_for_each_entry(iclient, wOtherInputMasks(win)->inputClients, next) + { + if (rClient(iclient) != client) + continue; + + return xi2mask_isset(iclient->xi2mask, dev, XI_TouchOwnership); + } + + return FALSE; +} + +static void +TouchSendOwnershipEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, int reason, XID resource) +{ + int nev, i; + InternalEvent *tel = InitEventList(GetMaximumEventsNum()); + + nev = GetTouchOwnershipEvents(tel, dev, ti, reason, resource, 0); + for (i = 0; i < nev; i++) + mieqProcessDeviceEvent(dev, tel + i, NULL); + + FreeEventList(tel, GetMaximumEventsNum()); +} + +/** + * Attempts to deliver a touch event to the given client. + */ +static Bool +DeliverOneTouchEvent(ClientPtr client, DeviceIntPtr dev, TouchPointInfoPtr ti, + GrabPtr grab, WindowPtr win, InternalEvent *ev) +{ + int err; + xEvent *xi2; + Mask filter; + Window child = DeepestSpriteWin(&ti->sprite)->drawable.id; + + /* FIXME: owner event handling */ + + /* If the client does not have the ownership mask set and is not + * the current owner of the touch, only pretend we delivered */ + if (!grab && ti->num_grabs != 0 && + !TouchClientWantsOwnershipEvents(client, dev,win)) + return TRUE; + + /* If we fail here, we're going to leave a client hanging. */ + err = EventToXI2(ev, &xi2); + if (err != Success) + FatalError("[Xi] %s: XI2 conversion failed in %s" + " (%d)\n", dev->name, __func__, err); + + FixUpEventFromWindow(&ti->sprite, xi2, win, child, FALSE); + filter = GetEventFilter(dev, xi2); + if (XaceHook(XACE_RECEIVE_ACCESS, client, win, xi2, 1) != Success) + return FALSE; + err = TryClientEvents(client, dev, xi2, 1, filter, filter, NullGrab); + free(xi2); + + /* Returning the value from TryClientEvents isn't useful, since all our + * resource-gone cleanups will update the delivery list anyway. */ + return TRUE; +} + +static void +ActivateEarlyAccept(DeviceIntPtr dev, TouchPointInfoPtr ti) +{ + int rc; + ClientPtr client; + XID error; + + rc = dixLookupClient(&client, ti->listeners[0].listener, serverClient, + DixSendAccess); + if (rc != Success) + { + ErrorF("[Xi] Failed to lookup early accepting client.\n"); + return; + } + + if (TouchAcceptReject(client, dev, XIAcceptTouch, ti->client_id, + ti->listeners[0].window->drawable.id, &error) != + Success) + ErrorF("[Xi] Failed to accept touch grab after early acceptance.\n"); +} + +/** + * Generate and deliver a TouchEnd event. + * + * @param dev The device to deliver the event for. + * @param ti The touch point record to deliver the event for. + * @param flags Internal event flags. The called does not need to provide + * TOUCH_CLIENT_ID and TOUCH_POINTER_EMULATED, this function will ensure + * they are set appropriately. + * @param resource The client resource to deliver to, or 0 for all clients. + */ +static void +EmitTouchEnd(DeviceIntPtr dev, TouchPointInfoPtr ti, int flags, XID resource) +{ + InternalEvent *tel = InitEventList(GetMaximumEventsNum()); + ValuatorMask *mask = valuator_mask_new(2); + int i, nev; + + valuator_mask_set_double(mask, 0, + valuator_mask_get_double(ti->valuators, 0)); + valuator_mask_set_double(mask, 1, + valuator_mask_get_double(ti->valuators, 1)); + + flags |= TOUCH_CLIENT_ID; + if (ti->emulate_pointer) + flags |= TOUCH_POINTER_EMULATED; + nev = GetTouchEvents(tel, dev, ti->client_id, XI_TouchEnd, flags, mask); + for (i = 0; i < nev; i++) + DeliverTouchEvents(dev, ti, tel + i, resource); + + valuator_mask_free(&mask); + FreeEventList(tel, GetMaximumEventsNum()); +} + +/** + * If the current owner has rejected the event, deliver the + * TouchOwnership/TouchBegin to the next item in the sprite stack. + */ +static void +TouchPuntToNextOwner(DeviceIntPtr dev, TouchPointInfoPtr ti, + TouchOwnershipEvent *ev) +{ + /* Deliver the ownership */ + if (ti->listeners[0].state == LISTENER_AWAITING_OWNER || + ti->listeners[0].state == LISTENER_EARLY_ACCEPT) + DeliverTouchEvents(dev, ti, (InternalEvent*)ev, ti->listeners[0].listener); + else if (ti->listeners[0].state == LISTENER_AWAITING_BEGIN) + TouchEventHistoryReplay(ti, dev, ti->listeners[0].listener); + + /* If we've just removed the last grab and the touch has physically + * ended, send a TouchEnd event too and finalise the touch. */ + if (ti->num_listeners == 1 && ti->num_grabs == 0 && + ti->pending_finish) + { + EmitTouchEnd(dev, ti, 0, 0); + TouchEndTouch(dev, ti); + return; + } + + if (ti->listeners[0].state == LISTENER_EARLY_ACCEPT) + ActivateEarlyAccept(dev, ti); +} + +/** + * Process a touch rejection. * + * @param sourcedev The source device of the touch sequence. + * @param ti The touchpoint info record. + * @param resource The resource of the client rejecting the touch. + * @param ev TouchOwnership event to send. Set to NULL if no event should be + * sent. */ void -ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device) +TouchRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, XID resource, + TouchOwnershipEvent *ev) +{ + Bool was_owner = (resource == ti->listeners[0].listener); + void *grab; + int i; + + /* Send a TouchEnd event to the resource being removed, but only if they + * haven't received one yet already */ + for (i = 0; i < ti->num_listeners; i++) + { + if (ti->listeners[i].listener == resource) + { + if (ti->listeners[i].state != LISTENER_HAS_END) + EmitTouchEnd(sourcedev, ti, TOUCH_REJECT, resource); + break; + } + } + + /* If there are no other listeners left, and the touchpoint is pending + * finish, then we can just kill it now. */ + if (ti->num_listeners == 1 && ti->pending_finish) + { + TouchEndTouch(sourcedev, ti); + return; + } + + /* Remove the resource from the listener list, updating + * ti->num_listeners, as well as ti->num_grabs if it was a grab. */ + if (TouchRemoveListener(ti, resource)) + { + if (dixLookupResourceByType(&grab, resource, RT_PASSIVEGRAB, + serverClient, DixGetAttrAccess) == Success) + ti->num_grabs--; + } + + /* If the current owner was removed and there are further listeners, deliver + * the TouchOwnership or TouchBegin event to the new owner. */ + if (ev && ti->num_listeners > 0 && was_owner) + TouchPuntToNextOwner(sourcedev, ti, ev); +} + +/** + * Processes a TouchOwnership event, indicating a grab has accepted the touch + * it currently owns, or a grab or selection has been removed. Will generate + * and send TouchEnd events to all clients removed from the delivery list, as + * well as possibly sending the new TouchOwnership event. May end the + * touchpoint if it is pending finish. + */ +static void +ProcessTouchOwnershipEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, + TouchOwnershipEvent *ev) +{ + + if (ev->reason == XIRejectTouch) + TouchRejected(dev, ti, ev->resource, ev); + else if (ev->reason == XIAcceptTouch) { + /* The touch owner has accepted the touch. Send TouchEnd events to + * everyone else, and truncate the list of listeners. */ + EmitTouchEnd(dev, ti, TOUCH_ACCEPT, 0); + + while (ti->num_listeners > 1) + TouchRemoveListener(ti, ti->listeners[1].listener); + /* Owner accepted after receiving end */ + if (ti->listeners[0].state == LISTENER_HAS_END) + TouchEndTouch(dev, ti); + else + ti->listeners[0].state = LISTENER_HAS_ACCEPTED; + } else { /* this is the very first ownership event for a grab */ + DeliverTouchEvents(dev, ti, (InternalEvent*)ev, ev->resource); + } +} + +/** + * Copy the event's valuator information into the touchpoint, we may need + * this for emulated TouchEnd events. + */ +static void +TouchCopyValuatorData(DeviceEvent *ev, TouchPointInfoPtr ti) +{ + int i; + for (i = 0; i < sizeof(ev->valuators.mask) * 8; i++) + if (BitIsOn(ev->valuators.mask, i)) + valuator_mask_set_double(ti->valuators, i, ev->valuators.data[i]); +} + +/** + * Given a touch event and a potential listener, retrieve info needed for + * processing the event. + * + * @param dev The device generating the touch event. + * @param ti The touch point info record for the touch event. + * @param ev The touch event to process. + * @param listener The touch event listener that may receive the touch event. + * @param[out] client The client that should receive the touch event. + * @param[out] win The window to deliver the event on. + * @param[out] grab The grab to deliver the event through, if any. + * @param[out] mask The XI 2.x event mask of the grab or selection, if any. + * @return TRUE if an event should be delivered to the listener, FALSE + * otherwise. + */ +static Bool +RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev, TouchListener *listener, + ClientPtr *client, WindowPtr *win, GrabPtr *grab, + XI2Mask **mask) +{ + int rc; + InputClients *iclients = NULL; + + if (listener->type == LISTENER_GRAB || + listener->type == LISTENER_POINTER_GRAB) + { + rc = dixLookupResourceByType((pointer*)grab, listener->listener, + RT_PASSIVEGRAB, + serverClient, DixSendAccess); + if (rc != Success) + { + /* the grab doesn't exist but we have a grabbing listener - this + * is an implicit/active grab */ + rc = dixLookupClient(client, listener->listener, serverClient, DixSendAccess); + if (rc != Success) + return FALSE; + + *grab = dev->deviceGrab.grab; + if (!*grab) + return FALSE; + } + + *client = rClient(*grab); + *win = (*grab)->window; + *mask = (*grab)->xi2mask; + } else { + if (listener->level == CORE) + rc = dixLookupWindow(win, listener->listener, + serverClient, DixSendAccess); + else + rc = dixLookupResourceByType((pointer*)win, listener->listener, + RT_INPUTCLIENT, + serverClient, DixSendAccess); + if (rc != Success) + return FALSE; + + + if (listener->level == XI2) + { + int evtype; + if (ti->emulate_pointer && listener->type == LISTENER_POINTER_REGULAR) + evtype = GetXI2Type(TouchGetPointerEventType(ev)); + else + evtype = GetXI2Type(ev->any.type); + + nt_list_for_each_entry(iclients, wOtherInputMasks(*win)->inputClients, next) + if (xi2mask_isset(iclients->xi2mask, dev, evtype)) + break; + BUG_WARN(!iclients); + if (!iclients) + return FALSE; + } else if (listener->level == XI) + { + int xi_type = GetXIType(TouchGetPointerEventType(ev)); + Mask xi_filter = event_get_filter_from_type(dev, xi_type); + nt_list_for_each_entry(iclients, wOtherInputMasks(*win)->inputClients, next) + if (iclients->mask[dev->id] & xi_filter) + break; + BUG_WARN(!iclients); + if (!iclients) + return FALSE; + } else + { + int coretype = GetCoreType(TouchGetPointerEventType(ev)); + Mask core_filter = event_get_filter_from_type(dev, coretype); + + /* all others */ + nt_list_for_each_entry(iclients, (InputClients*)wOtherClients(*win), next) + if (iclients->mask[XIAllDevices] & core_filter) + break; + /* if owner selected, iclients is NULL */ + } + + *client = iclients ? rClient(iclients) : wClient(*win); + *mask = iclients ? iclients->xi2mask : NULL; + *grab = NULL; + } + + return TRUE; +} + +static int +DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, + TouchListener *listener, ClientPtr client, + WindowPtr win, GrabPtr grab, XI2Mask *xi2mask) +{ + InternalEvent motion, button; + InternalEvent *ptrev = &motion; + int nevents; + DeviceIntPtr kbd; + + /* We don't deliver pointer events to non-owners */ + if (!TouchResourceIsOwner(ti, listener->listener)) + return Success; + + nevents = TouchConvertToPointerEvent(ev, &motion, &button); + BUG_WARN(nevents == 0); + if (nevents == 0) + return BadValue; + + if (nevents > 1) + ptrev = &button; + + kbd = GetMaster(dev, KEYBOARD_OR_FLOAT); + event_set_state(dev, kbd, &ptrev->device_event); + ptrev->device_event.corestate = event_get_corestate(dev, kbd); + + if (grab) + { + /* this side-steps the usual activation mechansims, but... */ + if (ev->any.type == ET_TouchBegin && !dev->deviceGrab.grab) + ActivatePassiveGrab(dev, grab, ptrev, ev); /* also delivers the event */ + else { + int deliveries = 0; + /* 'grab' is the passive grab, but if the grab isn't active, + * don't deliver */ + if (!dev->deviceGrab.grab) + return Success; + + if (grab->ownerEvents) + { + WindowPtr focus = NullWindow; + WindowPtr win = dev->spriteInfo->sprite->win; + deliveries = DeliverDeviceEvents(win, ptrev, grab, focus, dev); + } + + if (!deliveries) + DeliverOneGrabbedEvent(ptrev, dev, grab->grabtype); + + if (ev->any.type == ET_TouchEnd && + !dev->button->buttonsDown && + dev->deviceGrab.fromPassiveGrab && + GrabIsPointerGrab(grab)) + (*dev->deviceGrab.DeactivateGrab)(dev); + } + } else + { + GrabPtr devgrab = dev->deviceGrab.grab; + + DeliverDeviceEvents(win, ptrev, grab, win, dev); + /* FIXME: bad hack + * Implicit passive grab activated in response to this event. Store + * the event. + */ + if (!devgrab && dev->deviceGrab.grab && dev->deviceGrab.implicitGrab) + { + TouchListener *listener; + + devgrab = dev->deviceGrab.grab; + + *dev->deviceGrab.sync.event = ev->device_event; + + /* The listener array has a sequence of grabs and then one event + * selection. Implicit grab activation occurs through delivering an + * event selection. Thus, we update the last listener in the array. + */ + listener = &ti->listeners[ti->num_listeners - 1]; + listener->listener = devgrab->resource; + + if (devgrab->grabtype != XI2 || + devgrab->type != XI_TouchBegin) + listener->type = LISTENER_POINTER_GRAB; + else + listener->type = LISTENER_GRAB; + } + + } + if (ev->any.type == ET_TouchBegin) + listener->state = LISTENER_IS_OWNER; + else if (ev->any.type == ET_TouchEnd) + listener->state = LISTENER_HAS_END; + + return Success; +} + + + + +static void +DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev) +{ + InternalEvent motion; + + if (ti->num_listeners) + { + ClientPtr client; + WindowPtr win; + GrabPtr grab; + XI2Mask *mask; + + if (ti->listeners[0].type != LISTENER_POINTER_REGULAR || + ti->listeners[0].type != LISTENER_POINTER_GRAB) + return; + + motion = *ev; + motion.any.type = ET_TouchUpdate; + motion.device_event.detail.button = 0; + + if (!RetrieveTouchDeliveryData(dev, ti, &motion, + &ti->listeners[0], &client, &win, &grab, + &mask)) + return; + + /* There may be a pointer grab on the device */ + if (!grab) + { + grab = dev->deviceGrab.grab; + if (grab) + { + win = grab->window; + mask = grab->xi2mask; + client = rClient(grab); + } + } + + DeliverTouchEmulatedEvent(dev, ti, &motion, &ti->listeners[0], client, win, grab, mask); + } else { + InternalEvent button; + int converted; + converted = TouchConvertToPointerEvent(ev, &motion, &button); + + BUG_WARN(converted == 0); + if (converted) + ProcessOtherEvent(&motion, dev); + } +} + +/** + * Processes and delivers a TouchBegin, TouchUpdate, or a + * TouchEnd event. + * + * Due to having rather different delivery semantics (see the Xi 2.2 protocol + * spec for more information), this implements its own grab and event-selection + * delivery logic. + */ +static void +ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev) +{ + TouchClassPtr t = dev->touch; + TouchPointInfoPtr ti; + uint32_t touchid; + int type = ev->any.type; + int emulate_pointer = !!(ev->device_event.flags & TOUCH_POINTER_EMULATED); + + if (!t) + return; + + if (ev->any.type == ET_TouchOwnership) + touchid = ev->touch_ownership_event.touchid; + else + touchid = ev->device_event.touchid; + + if (type == ET_TouchBegin) { + ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid, + emulate_pointer); + } else + ti = TouchFindByClientID(dev, touchid); + + if (!ti) + { + DebugF("[Xi] %s: Failed to get event %d for touchpoint %d\n", + dev->name, type, touchid); + return; + } + + + /* if emulate_pointer is set, emulate the motion event right + * here, so we can ignore it for button event emulation. TouchUpdate + * events which _only_ emulate motion just work normally */ + if (emulate_pointer && ev->any.type != ET_TouchUpdate) + DeliverEmulatedMotionEvent(dev, ti, ev); + if (emulate_pointer && IsMaster(dev)) + CheckMotion(&ev->device_event, dev); + + /* Make sure we have a valid window trace for event delivery; must be + * called after event type mutation. */ + /* FIXME: check this */ + if (!TouchEnsureSprite(dev, ti, ev)) + return; + + /* TouchOwnership events are handled separately from the rest, as they + * have more complex semantics. */ + if (ev->any.type == ET_TouchOwnership) + ProcessTouchOwnershipEvent(dev, ti, &ev->touch_ownership_event); + else + { + TouchCopyValuatorData(&ev->device_event, ti); + /* WARNING: the event type may change to TouchUpdate in + * DeliverTouchEvents if a TouchEnd was delivered to a grabbing + * owner */ + DeliverTouchEvents(dev, ti, (InternalEvent *) ev, 0); + if (ev->any.type == ET_TouchEnd) + TouchEndTouch(dev, ti); + } +} + + +/** + * Process DeviceEvents and DeviceChangedEvents. + */ +static void +ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device) { GrabPtr grab; Bool deactivateDeviceGrab = FALSE; int key = 0, rootX, rootY; ButtonClassPtr b; - KeyClassPtr k; - ValuatorClassPtr v; int ret = 0; - int state, i; + int corestate; DeviceIntPtr mouse = NULL, kbd = NULL; DeviceEvent *event = &ev->device_event; - verify_internal_event(ev); - - if (ev->any.type == ET_RawKeyPress || - ev->any.type == ET_RawKeyRelease || - ev->any.type == ET_RawButtonPress || - ev->any.type == ET_RawButtonRelease || - ev->any.type == ET_RawMotion) - { - DeliverRawEvent(&ev->raw_event, device); - return; - } - if (IsPointerDevice(device)) { - kbd = GetPairedDevice(device); + kbd = GetMaster(device, KEYBOARD_OR_FLOAT); mouse = device; if (!kbd->key) /* can happen with floating SDs */ kbd = NULL; } else { - mouse = GetPairedDevice(device); + mouse = GetMaster(device, POINTER_OR_FLOAT); kbd = device; if (!mouse->valuator || !mouse->button) /* may be float. SDs */ mouse = NULL; } - /* State needs to be assembled BEFORE the device is updated. */ - state = (kbd && kbd->key) ? XkbStateFieldFromRec(&kbd->key->xkbInfo->state) : 0; - state |= (mouse && mouse->button) ? (mouse->button->state) : 0; - - for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) - if (BitIsOn(mouse->button->down, i)) - SetBit(event->buttons, mouse->button->map[i]); - - if (kbd && kbd->key) - { - XkbStatePtr state; - /* we need the state before the event happens */ - if (event->type == ET_KeyPress || event->type == ET_KeyRelease) - state = &kbd->key->xkbInfo->prev_state; - else - state = &kbd->key->xkbInfo->state; - - event->mods.base = state->base_mods; - event->mods.latched = state->latched_mods; - event->mods.locked = state->locked_mods; - event->mods.effective = state->mods; - - event->group.base = state->base_group; - event->group.latched = state->latched_group; - event->group.locked = state->locked_group; - event->group.effective = state->group; - } + corestate = event_get_corestate(mouse, kbd); + event_set_state(mouse, kbd, event); ret = UpdateDeviceState(device, event); if (ret == DONT_PROCESS) return; - v = device->valuator; b = device->button; - k = device->key; if (IsMaster(device) || IsFloating(device)) CheckMotion(event, device); @@ -973,7 +1645,7 @@ event->root_x = rootX; event->root_y = rootY; NoticeEventTime((InternalEvent*)event); - event->corestate = state; + event->corestate = corestate; key = event->detail.key; break; default: @@ -1004,17 +1676,13 @@ case ET_KeyRelease: if (grab && device->deviceGrab.fromPassiveGrab && (key == device->deviceGrab.activatingKey) && - (device->deviceGrab.grab->type == KeyPress || - device->deviceGrab.grab->type == DeviceKeyPress || - device->deviceGrab.grab->type == XI_KeyPress)) + GrabIsKeyboardGrab(device->deviceGrab.grab)) deactivateDeviceGrab = TRUE; break; case ET_ButtonPress: - event->detail.button = b->map[key]; - if (!event->detail.button) { /* there's no button 0 */ - event->detail.button = key; + if (b->map[key] == 0) /* there's no button 0 */ return; - } + event->detail.button = b->map[key]; if (!grab && CheckDeviceGrabs(device, event, 0)) { /* if a passive grab was activated, the event has been sent @@ -1023,16 +1691,12 @@ } break; case ET_ButtonRelease: - event->detail.button = b->map[key]; - if (!event->detail.button) { /* there's no button 0 */ - event->detail.button = key; + if (b->map[key] == 0) /* there's no button 0 */ return; - } + event->detail.button = b->map[key]; if (grab && !b->buttonsDown && device->deviceGrab.fromPassiveGrab && - (device->deviceGrab.grab->type == ButtonPress || - device->deviceGrab.grab->type == DeviceButtonPress || - device->deviceGrab.grab->type == XI_ButtonPress)) + GrabIsPointerGrab(device->deviceGrab.grab)) deactivateDeviceGrab = TRUE; default: break; @@ -1041,7 +1705,7 @@ if (grab) DeliverGrabbedEvent((InternalEvent*)event, device, deactivateDeviceGrab); - else if (device->focus && !IsPointerEvent((InternalEvent*)ev)) + else if (device->focus && !IsPointerEvent(ev)) DeliverFocusedEvent(device, (InternalEvent*)event, GetSpriteWindow(device)); else @@ -1053,6 +1717,211 @@ event->detail.key = key; } +/** + * Main device event processing function. + * Called from when processing the events from the event queue. + * + */ +void +ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device) +{ + verify_internal_event(ev); + + switch(ev->any.type) + { + case ET_RawKeyPress: + case ET_RawKeyRelease: + case ET_RawButtonPress: + case ET_RawButtonRelease: + case ET_RawMotion: + case ET_RawTouchBegin: + case ET_RawTouchUpdate: + case ET_RawTouchEnd: + DeliverRawEvent(&ev->raw_event, device); + break; + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchOwnership: + case ET_TouchEnd: + ProcessTouchEvent(ev, device); + break; + default: + ProcessDeviceEvent(ev, device); + break; + } +} + +static int +DeliverTouchBeginEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, + TouchListener *listener, ClientPtr client, + WindowPtr win, GrabPtr grab, XI2Mask *xi2mask) +{ + enum TouchListenerState state; + int rc = Success; + Bool has_ownershipmask; + + if (listener->type == LISTENER_POINTER_REGULAR || + listener->type == LISTENER_POINTER_GRAB) + { + rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win, + grab, xi2mask); + goto out; + } + + + has_ownershipmask = xi2mask_isset(xi2mask, dev, XI_TouchOwnership); + + if (TouchResourceIsOwner(ti, listener->listener) || has_ownershipmask) + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); + if (!TouchResourceIsOwner(ti, listener->listener)) + { + if (has_ownershipmask) + state = LISTENER_AWAITING_OWNER; + else + state = LISTENER_AWAITING_BEGIN; + } else + { + if (has_ownershipmask) + TouchSendOwnershipEvent(dev, ti, 0, listener->listener); + + if (!has_ownershipmask || listener->type == LISTENER_REGULAR) + state = LISTENER_HAS_ACCEPTED; + else + state = LISTENER_IS_OWNER; + } + listener->state = state; + +out: + return rc; +} + +static int +DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, + TouchListener *listener, ClientPtr client, + WindowPtr win, GrabPtr grab, XI2Mask *xi2mask) +{ + int rc = Success; + + if (listener->type == LISTENER_POINTER_REGULAR || + listener->type == LISTENER_POINTER_GRAB) + { + rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win, + grab, xi2mask); + goto out; + } + + /* Event in response to reject */ + if (ev->device_event.flags & TOUCH_REJECT) + { + if (listener->state != LISTENER_HAS_END) + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); + listener->state = LISTENER_HAS_END; + } else if (TouchResourceIsOwner(ti, listener->listener)) + { + Bool normal_end = !(ev->device_event.flags & TOUCH_ACCEPT); + + /* FIXME: what about early acceptance */ + if (normal_end && listener->state != LISTENER_HAS_END) + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); + + if ((ti->num_listeners > 1 || + listener->state != LISTENER_HAS_ACCEPTED) && + (ev->device_event.flags & (TOUCH_ACCEPT|TOUCH_REJECT)) == 0) + { + ev->any.type = ET_TouchUpdate; + ev->device_event.flags |= TOUCH_PENDING_END; + ti->pending_finish = TRUE; + } + + if (normal_end) + listener->state = LISTENER_HAS_END; + } + +out: + return rc; +} + +static int +DeliverTouchEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, + TouchListener *listener, ClientPtr client, + WindowPtr win, GrabPtr grab, XI2Mask *xi2mask) +{ + Bool has_ownershipmask = FALSE; + int rc = Success; + + if (xi2mask) + has_ownershipmask = xi2mask_isset(xi2mask, dev, XI_TouchOwnership); + + if (ev->any.type == ET_TouchOwnership) + { + ev->touch_ownership_event.deviceid = dev->id; + if (!TouchResourceIsOwner(ti, listener->listener)) + goto out; + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); + listener->state = LISTENER_IS_OWNER; + } else + ev->device_event.deviceid = dev->id; + + if (ev->any.type == ET_TouchBegin) + { + rc = DeliverTouchBeginEvent(dev, ti, ev, listener, client, win, grab, xi2mask); + } else if (ev->any.type == ET_TouchUpdate) + { + if (listener->type == LISTENER_POINTER_REGULAR || + listener->type == LISTENER_POINTER_GRAB) + DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win, grab, xi2mask); + else if (TouchResourceIsOwner(ti, listener->listener) || has_ownershipmask) + rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); + } else if (ev->any.type == ET_TouchEnd) + rc = DeliverTouchEndEvent(dev, ti, ev, listener, client, win, grab, xi2mask); + +out: + return rc; +} + +/** + * Delivers a touch events to all interested clients. For TouchBegin events, + * will update ti->listeners, ti->num_listeners, and ti->num_grabs. + * May also mutate ev (type and flags) upon successful delivery. If + * @resource is non-zero, will only attempt delivery to the owner of that + * resource. + * + * @return TRUE if the event was delivered at least once, FALSE otherwise + */ +void +DeliverTouchEvents(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev, XID resource) +{ + int i; + + if (ev->any.type == ET_TouchBegin && + !(ev->device_event.flags & (TOUCH_CLIENT_ID|TOUCH_REPLAYING))) + TouchSetupListeners(dev, ti, ev); + + TouchEventHistoryPush(ti, &ev->device_event); + + for (i = 0; i < ti->num_listeners; i++) + { + GrabPtr grab = NULL; + ClientPtr client; + WindowPtr win; + XI2Mask *mask; + TouchListener *listener = &ti->listeners[i]; + + if (resource && listener->listener != resource) + continue; + + if (!RetrieveTouchDeliveryData(dev, ti, ev, listener, &client, &win, + &grab, &mask)) + continue; + + DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask); + } + + if (ti->emulate_pointer) + UpdateDeviceState(dev, &ev->device_event); +} + int InitProximityClassDeviceStruct(DeviceIntPtr dev) { @@ -1076,16 +1945,16 @@ * * @see InitValuatorClassDeviceStruct */ -void +Bool InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval, int resolution, int min_res, int max_res, int mode) { AxisInfoPtr ax; - if (!dev || !dev->valuator || minval > maxval) - return; + if (!dev || !dev->valuator || (minval > maxval && mode == Absolute)) + return FALSE; if (axnum >= dev->valuator->numAxes) - return; + return FALSE; ax = dev->valuator->axes + axnum; @@ -1099,6 +1968,68 @@ if (mode & OutOfProximity) dev->proximity->in_proximity = FALSE; + + return SetScrollValuator(dev, axnum, SCROLL_TYPE_NONE, 0, SCROLL_FLAG_NONE); +} + +/** + * Set the given axis number as a scrolling valuator. + */ +Bool +SetScrollValuator(DeviceIntPtr dev, int axnum, enum ScrollType type, double increment, int flags) +{ + AxisInfoPtr ax; + int *current_ax; + InternalEvent dce; + DeviceIntPtr master; + + if (!dev || !dev->valuator || axnum >= dev->valuator->numAxes) + return FALSE; + + switch (type) + { + case SCROLL_TYPE_VERTICAL: + current_ax = &dev->valuator->v_scroll_axis; + break; + case SCROLL_TYPE_HORIZONTAL: + current_ax = &dev->valuator->h_scroll_axis; + break; + case SCROLL_TYPE_NONE: + ax = &dev->valuator->axes[axnum]; + ax->scroll.type = type; + return TRUE; + default: + return FALSE; + } + + if (increment == 0.0) + return FALSE; + + if (*current_ax != -1 && axnum != *current_ax) + { + ax = &dev->valuator->axes[*current_ax]; + if (ax->scroll.type == type && + (flags & SCROLL_FLAG_PREFERRED) && (ax->scroll.flags & SCROLL_FLAG_PREFERRED)) + return FALSE; + } + *current_ax = axnum; + + ax = &dev->valuator->axes[axnum]; + ax->scroll.type = type; + ax->scroll.increment = increment; + ax->scroll.flags = flags; + + master = GetMaster(dev, MASTER_ATTACHED); + CreateClassesChangedEvent(&dce, master, dev, DEVCHANGE_POINTER_EVENT | DEVCHANGE_DEVICE_CHANGE); + XISendDeviceChangedEvent(dev, &dce.changed_event); + + /* if the current slave is us, update the master. If not, we'll update + * whenever the next slave switch happens anyway. CMDC sends the event + * for us */ + if (master && master->lastSlave == dev) + ChangeMasterDeviceClasses(master, &dce.changed_event); + + return TRUE; } static void @@ -1297,7 +2228,7 @@ for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) if (BitIsOn(mouse->button->down, i)) - SetBit(&xi2event[1], i); + SetBit(&xi2event[1], mouse->button->map[i]); if (dev->key) { @@ -1338,26 +2269,28 @@ int CheckGrabValues(ClientPtr client, GrabParameters* param) { - if (param->grabtype != GRABTYPE_CORE && - param->grabtype != GRABTYPE_XI && - param->grabtype != GRABTYPE_XI2) + if (param->grabtype != CORE && + param->grabtype != XI && + param->grabtype != XI2) { ErrorF("[Xi] grabtype is invalid. This is a bug.\n"); return BadImplementation; } if ((param->this_device_mode != GrabModeSync) && - (param->this_device_mode != GrabModeAsync)) { + (param->this_device_mode != GrabModeAsync) && + (param->this_device_mode != XIGrabModeTouch)) { client->errorValue = param->this_device_mode; return BadValue; } if ((param->other_devices_mode != GrabModeSync) && - (param->other_devices_mode != GrabModeAsync)) { + (param->other_devices_mode != GrabModeAsync) && + (param->other_devices_mode != XIGrabModeTouch)) { client->errorValue = param->other_devices_mode; return BadValue; } - if (param->grabtype != GRABTYPE_XI2 && (param->modifiers != AnyModifier) && + if (param->grabtype != XI2 && (param->modifiers != AnyModifier) && (param->modifiers & ~AllModifiersMask)) { client->errorValue = param->modifiers; return BadValue; @@ -1372,7 +2305,7 @@ int GrabButton(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device, - int button, GrabParameters *param, GrabType grabtype, + int button, GrabParameters *param, enum InputLevel grabtype, GrabMask *mask) { WindowPtr pWin, confineTo; @@ -1412,9 +2345,9 @@ if (rc != Success) return rc; - if (grabtype == GRABTYPE_XI) + if (grabtype == XI) type = DeviceButtonPress; - else if (grabtype == GRABTYPE_XI2) + else if (grabtype == XI2) type = XI_ButtonPress; grab = CreateGrab(client->index, dev, modifier_device, pWin, grabtype, @@ -1425,12 +2358,12 @@ } /** - * Grab the given key. If grabtype is GRABTYPE_XI, the key is a keycode. If - * grabtype is GRABTYPE_XI2, the key is a keysym. + * Grab the given key. If grabtype is XI, the key is a keycode. If + * grabtype is XI2, the key is a keysym. */ int GrabKey(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device, - int key, GrabParameters *param, GrabType grabtype, GrabMask *mask) + int key, GrabParameters *param, enum InputLevel grabtype, GrabMask *mask) { WindowPtr pWin; GrabPtr grab; @@ -1443,7 +2376,7 @@ return rc; if ((dev->id != XIAllDevices && dev->id != XIAllMasterDevices) && k == NULL) return BadMatch; - if (grabtype == GRABTYPE_XI) + if (grabtype == XI) { if ((key > k->xkbInfo->desc->max_key_code || key < k->xkbInfo->desc->min_key_code) @@ -1452,7 +2385,7 @@ return BadValue; } type = DeviceKeyPress; - } else if (grabtype == GRABTYPE_XI2) + } else if (grabtype == XI2) type = XI_KeyPress; rc = dixLookupWindow(&pWin, param->grabWindow, client, DixSetAttrAccess); @@ -1507,7 +2440,7 @@ if (rc != Success) return rc; - grab = CreateGrab(client->index, dev, dev, pWin, GRABTYPE_XI2, + grab = CreateGrab(client->index, dev, dev, pWin, XI2, mask, param, (type == XIGrabtypeEnter) ? XI_Enter : XI_FocusIn, 0, NULL, cursor); @@ -1517,6 +2450,34 @@ return AddPassiveGrabToList(client, grab); } +/* Touch grab */ +int +GrabTouch(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr mod_dev, + GrabParameters *param, GrabMask *mask) +{ + WindowPtr pWin; + GrabPtr grab; + int rc; + + rc = CheckGrabValues(client, param); + if (rc != Success) + return rc; + + rc = dixLookupWindow(&pWin, param->grabWindow, client, DixSetAttrAccess); + if (rc != Success) + return rc; + rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixGrabAccess); + if (rc != Success) + return rc; + + grab = CreateGrab(client->index, dev, mod_dev, pWin, XI2, + mask, param, XI_TouchBegin, 0, NullWindow, NullCursor); + if (!grab) + return BadAlloc; + + return AddPassiveGrabToList(client, grab); +} + int SelectForWindow(DeviceIntPtr dev, WindowPtr pWin, ClientPtr client, Mask mask, Mask exclusivemasks) @@ -1574,6 +2535,20 @@ return Success; } +static void +FreeInputClient(InputClientsPtr *other) +{ + xi2mask_free(&(*other)->xi2mask); + free(*other); + *other = NULL; +} + +static InputClientsPtr +AllocInputClient(void) +{ + return calloc(1, sizeof(InputClients)); +} + int AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx) { @@ -1581,11 +2556,14 @@ if (!pWin->optional && !MakeWindowOptional(pWin)) return BadAlloc; - others = calloc(1, sizeof(InputClients)); + others = AllocInputClient(); if (!others) return BadAlloc; if (!pWin->optional->inputMasks && !MakeInputMasks(pWin)) goto bail; + others->xi2mask = xi2mask_new(); + if (!others->xi2mask) + goto bail; others->mask[mskidx] = mask; others->resource = FakeClientID(client->index); others->next = pWin->optional->inputMasks->inputClients; @@ -1595,7 +2573,7 @@ return Success; bail: - free(others); + FreeInputClient(&others); return BadAlloc; } @@ -1607,30 +2585,41 @@ imasks = calloc(1, sizeof(struct _OtherInputMasks)); if (!imasks) return FALSE; + imasks->xi2mask = xi2mask_new(); + if (!imasks->xi2mask) + { + free(imasks); + return FALSE; + } pWin->optional->inputMasks = imasks; return TRUE; } +static void +FreeInputMask(OtherInputMasks **imask) +{ + xi2mask_free(&(*imask)->xi2mask); + free(*imask); + *imask = NULL; +} + void RecalculateDeviceDeliverableEvents(WindowPtr pWin) { InputClientsPtr others; struct _OtherInputMasks *inputMasks; /* default: NULL */ WindowPtr pChild, tmp; - int i, j; + int i; pChild = pWin; while (1) { if ((inputMasks = wOtherInputMasks(pChild)) != 0) { - for (i = 0; i < EMASKSIZE; i++) - memset(inputMasks->xi2mask[i], 0, sizeof(inputMasks->xi2mask[i])); + xi2mask_zero(inputMasks->xi2mask, -1); for (others = inputMasks->inputClients; others; others = others->next) { for (i = 0; i < EMASKSIZE; i++) inputMasks->inputEvents[i] |= others->mask[i]; - for (i = 0; i < EMASKSIZE; i++) - for (j = 0; j < XI2MASKSIZE; j++) - inputMasks->xi2mask[i][j] |= others->xi2mask[i][j]; + xi2mask_merge(inputMasks->xi2mask, others->xi2mask); } for (i = 0; i < EMASKSIZE; i++) inputMasks->deliverableEvents[i] = inputMasks->inputEvents[i]; @@ -1667,14 +2656,15 @@ if (other->resource == id) { if (prev) { prev->next = other->next; - free(other); + FreeInputClient(&other); } else if (!(other->next)) { if (ShouldFreeInputMasks(pWin, TRUE)) { - wOtherInputMasks(pWin)->inputClients = other->next; - free(wOtherInputMasks(pWin)); + OtherInputMasks *mask = wOtherInputMasks(pWin); + mask->inputClients = other->next; + FreeInputMask(&mask); pWin->optional->inputMasks = (OtherInputMasks *) NULL; CheckWindowOptionalNeed(pWin); - free(other); + FreeInputClient(&other); } else { other->resource = FakeClientID(0); if (!AddResource(other->resource, RT_INPUTCLIENT, @@ -1683,7 +2673,7 @@ } } else { wOtherInputMasks(pWin)->inputClients = other->next; - free(other); + FreeInputClient(&other); } RecalculateDeviceDeliverableEvents(pWin); return Success; @@ -1693,6 +2683,36 @@ FatalError("client not on device event list"); } +/** + * Search for window in each touch trace for each device. Remove the window + * and all its subwindows from the trace when found. The initial window + * order is preserved. + */ +void WindowGone(WindowPtr win) +{ + DeviceIntPtr dev; + + for (dev = inputInfo.devices; dev; dev = dev->next) { + TouchClassPtr t = dev->touch; + int i; + + if (!t) + continue; + + for (i = 0; i < t->num_touches; i++) { + SpritePtr sprite = &t->touches[i].sprite; + int j; + + for (j = 0; j < sprite->spriteTraceGood; j++) { + if (sprite->spriteTrace[j] == win) { + sprite->spriteTraceGood = j; + break; + } + } + } + } +} + int SendEvent(ClientPtr client, DeviceIntPtr d, Window dest, Bool propagate, xEvent * ev, Mask mask, int count) @@ -1949,20 +2969,25 @@ dev->valuator->motionHintWindow = pWin; else if ((type == DeviceButtonPress) && (!grab) && (deliveryMask & DeviceButtonGrabMask)) { - GrabRec tempGrab; + GrabPtr tempGrab; - tempGrab.device = dev; - tempGrab.resource = client->clientAsMask; - tempGrab.window = pWin; - tempGrab.ownerEvents = + tempGrab = AllocGrab(); + if (!tempGrab) + return; + + tempGrab->device = dev; + tempGrab->resource = client->clientAsMask; + tempGrab->window = pWin; + tempGrab->ownerEvents = (deliveryMask & DeviceOwnerGrabButtonMask) ? TRUE : FALSE; - tempGrab.eventMask = deliveryMask; - tempGrab.keyboardMode = GrabModeAsync; - tempGrab.pointerMode = GrabModeAsync; - tempGrab.confineTo = NullWindow; - tempGrab.cursor = NullCursor; - tempGrab.next = NULL; - (*dev->deviceGrab.ActivateGrab) (dev, &tempGrab, currentTime, TRUE); + tempGrab->eventMask = deliveryMask; + tempGrab->keyboardMode = GrabModeAsync; + tempGrab->pointerMode = GrabModeAsync; + tempGrab->confineTo = NullWindow; + tempGrab->cursor = NullCursor; + tempGrab->next = NULL; + (*dev->deviceGrab.ActivateGrab) (dev, tempGrab, currentTime, TRUE); + FreeGrab(tempGrab); } } @@ -2108,14 +3133,12 @@ for (others = wOtherInputMasks(win)->inputClients; others; others = others->next) { if (SameClient(others, client)) { - memset(others->xi2mask[dev->id], 0, - sizeof(others->xi2mask[dev->id])); + xi2mask_zero(others->xi2mask, dev->id); break; } } } - len = min(len, sizeof(others->xi2mask[dev->id])); if (len && !others) { @@ -2124,11 +3147,14 @@ others= wOtherInputMasks(win)->inputClients; } - if (others) - memset(others->xi2mask[dev->id], 0, sizeof(others->xi2mask[dev->id])); + if (others) { + xi2mask_zero(others->xi2mask, dev->id); + len = min(len, xi2mask_mask_size(others->xi2mask)); + } - if (len) - memcpy(others->xi2mask[dev->id], mask, len); + if (len) { + xi2mask_set_one_mask(others->xi2mask, dev->id, mask, len); + } RecalculateDeviceDeliverableEvents(win); --- xorg-server-1.11.4.orig/doc/c-extensions +++ xorg-server-1.11.4/doc/c-extensions @@ -0,0 +1,61 @@ +First of all: C89 or better. If you don't have that, port gcc first. + +Use of C language extensions throughout the X server tree +--------------------------------------------------------- + +Optional extensions: +The server will still build if your toolchain does not support these +extensions, although the results may not be optimal. + + * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.: + void parseOptions(Option *options _X_SENTINEL(0)); + parseOptions("foo", "bar", NULL); /* this is OK */ + parseOptions("foo", "bar", "baz"); /* this is not */ + This definition comes from Xfuncproto.h in the core + protocol headers. + * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics; + check the format string when built with + -Wformat (gcc) or similar. + * _X_EXPORT: this function should appear in symbol tables. + * _X_HIDDEN: this function should not appear in the _dynamic_ symbol + table. + * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function + is never called from another module. + * _X_INLINE: inline this functon if possible (generally obeyed unless + disabling optimisations). + * _X_DEPRECATED: warn on use of this function. + +Mandatory extensions: +The server will not build if your toolchain does not support these extensions. + + * named initialisers: explicitly initialising structure members, e.g.: + struct foo bar = { .baz = quux, .brian = "dog" }; + * variadic macros: macros with a variable number of arguments, e.g.: + #define DebugF(x, ...) /**/ + * interleaved code and declarations: { foo = TRUE; int bar; do_stuff(); } + + +Use of OS and library facilities throughout the X server tree +------------------------------------------------------------- + +Non-OS-dependent code can assume facilities at least as good as +the non-OS-facility parts of POSIX-1.2001. Ideally this would +be C99, but even gcc+glibc doesn't implement that yet. + +Unix-like systems are assumed to be at least as good as UNIX03. + +Linux systems must be at least 2.4 or later. As a practical matter +though, 2.4 kernels never receive any testing. Use 2.6 already. + +TODO: Solaris. + +TODO: *BSD. + +Code that needs to be portable to Windows should be careful to, +well, be portable. Note that there are two Windows ports, cygwin and +mingw. Cygwin is more or less like Linux, but mingw is a bit more +restrictive. TODO: document which versions of Windows we actually care +about. + +OSX support is generally limited to the most recent version. Currently +that means 10.5. --- xorg-server-1.11.4.orig/xkb/XKM_file_format.txt +++ xorg-server-1.11.4/xkb/XKM_file_format.txt @@ -0,0 +1,684 @@ + XKM File Format Description + Version 15 + +1. Introduction + +The XKM file format is the exchange format for XKB keyboard descriptions +between the server and xkbcomp. Usually, the server forks off xkbcomp, +xkbcomp compiles the XKM format from the given parameters. +The resulting XKM file is put into a directory readable by the server and +then parsed. + +The XKM format is little more than a binary dump of various XKB-specific +structures and hence tied to the ABI of the server. + + ❧❧❧❧❧❧❧❧❧❧❧ + +1.1 About this file format description + +This description was produced by analyzing the XKM parsing code. Parts of +the file description present in the original format specification may be +missing. This description thus cannot be a reference document for XKM +implementations. + +No description of the meaning of the various fields is given here. Refer to +the XKB protocol specification for more details. + ❧❧❧❧❧❧❧❧❧❧❧ + +2. Notations used in this document + +Notation for structures: + +┌─── + Name of struct + name of field: type or fixed value of field + name of field: type or fixed value of field +└─── + +Data types are identical to those used in the X Protocol specification +except where noted otherwise. Structs specific to XKM are prefixed with XKM, +defines specific to the XKB protocol specification are prefixed with Xkb and +their value is equivalent to that in the protocol specification. + +Multiple instances of a given type are denoted in the following form: + name of field: LISTofFIELDTYPE + +Length specifiers for such fields are usually prefixed with num_. For +example, a struct containing a num_foo of 8 and a 'foo' field contains 8 +structures of type 'foo'. + +Variable length padding is specified as pad(x), where x is the length of the +data to be padded out to a multiple of 4 bytes. For example, given an x of +10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12 +bytes. + +A special notation is a variable content struct. In this case, the contents +of the struct depend on the value of one or more specific fields. +┌─── + Name of struct + field: type or fixed value of field + field: type or fixed value of field + ─── + field ⇒ value 1 + ⇒ + specific field: type + specific field: type + ─── + field ⇒ value 2 + ⇒ + specific field: type + specific field: type +└─── +This notation denotes that if field is of value 1, this struct contains the +specific fields listed underneath value 1. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3. XKM Format + +The XKM format is a binary format with structs usually being padded to a +multiple of 4 bytes. No provisions for endianess are provided, the parser is +left to guess the endianess of the XKM file. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.1 Common data types + +┌─── + XKMCountedString + count: CARD16 + string: count * CHAR + pad: pad(count + 2) +└─── + +XKMCountedString is used for user-readable identifiers. Prime example are +the level names and the section names ("complete", "evdev(inet)", etc.) + +┌─── + XKMGroupBits: CARD8 + group1 0x1 + group2 0x2 + group3 0x4 + group4 0x8 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.2 Header and Table of Contents + +┌─── + XKMHeader + version: CARD8 + identifier1: 'm' + identifier2: 'k' + idenfifier3: 'x' +└─── + +The XKM file format has a 4 byte header identifying the file and the XKM +version. The header is followed by the table of contents indicating the +sections present in this file. + +┌─── + XKMFileInfo + type: CARD8 + min_keycode: CARD8 + max_keycode: CARD8 + num_sectioninfo: CARD8 + present: CARD16 + pad: CARD16 + sectioninfo: LISTofXKMSectionInfo +└─── + +min_keycode and max_keycode specify the keycode range for this keyboard +descriptions. The core protocol requires min_keycode always be equal to or +greater than 8. + +┌─── + XKMSectionInfo + type: CARD16 + XkmTypesIndex 0 + XkmCompatMapIndex 1 + XkmSymbolsIndex 2 + XkmIndicatorsIndex 3 + XkmKeyNamesIndex 4 + XkmGeometryIndex 5 + XkmVirtualModsIndex 6 + format: CARD16 + size: CARD16 + offset: CARD16 +└─── + +Describes the section found in a chunk of a file. This struct is found +_twice_ in the file per section, once as part of the XKMFileInfo, once at +the beginning of the actual section (see offset). +The type specifies the type of the section, the section is to be parsed +according to this type. +Size and offset specify the size in bytes and the offset into the file in +bytes, respectively. + +3.3 Sections + +Each section resides at the offset specified in the XKMFileInfo sectioninfo. + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.1 XKMTypes + +An XKMTypes section describes the key types defined in a layout. Roughly +speaking, a key type defines how many levels a given key has and which +modifiers change to a particular level. + +┌─── + XKMTypesSection + section_info: XKMSectionInfo + name: XKMCountedString + num_types: CARD16 + pad: CARD16 + types: LISTofXKMKeyType +└─── + +┌─── + XKMKeyType + real_mods: CARD8 + num_levels: CARD8 + virt_mods: CARD16 + num_map_entries: CARD8 + num_level_names: CARD8 + perserve: CARD8 + pad: CARD8 + map_entries: LISTofXKMKTMapEntry + name: XKMCountedString + mods: LISTofXKMModsDesc + level_names: LISXTofXKMCountedString +└─── + +The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE. + +┌─── + XKMKTMapEntry + level: CARD8 + real_mods: CARD8 + virt_mods: CARD16 +└─── + +┌─── + XKMModsDesc + real_mods: CARD8 + pad: CARD8 + virt_mods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.2 XKMCompatMap + +An XKMCompatMap section describes the actions a keyboard may trigger. This +ranges from the TerminateServer action to simple modifier bits. + +┌─── + XKMCompatMap + section_info: XKMSectionInfo + name: XKMCountedString + num_si: CARD16 + group_mask: XKMGroupBits + pad: CARD8 + si: LISTofXKMSymInterpreterDesc + groups: LISTofXKMModsDesc +└─── + +One XKMModsDesc is present for each bit set in group_mask. + +┌─── + XKMSymInterpretDesc + sym: CARD32 + mods: CARD8 + match: CARD8 + virtual_mod: CARD8 + flags: CARD8 + action_type: CARD8 + action_data: XKMActionData +└─── + +Where the action is 7 bytes of CARD8 whose content is determined by +action_type. + +┌─── + XKMActionData: + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_SetMods || + action_type ⇒ XkbSA_LatchMods || + action_type ⇒ XkbSA_LockMods + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + vmods1: CARD8 + vmods2: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_SetGroup || + action_type ⇒ XkbSA_LatchGroup || + action_type ⇒ XkbSA_LockGroup + ⇒ + flags: CARD8 + group_XXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_MovePtr + ⇒ + flags: CARD8 + high_XXX: CARD8 + low_XXX: CARD8 + high_YYY: CARD8 + low_YYY: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_PtrBtn || + action_type ⇒ XkbSA_LockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + pad: CARD32 + ─── + action_type ⇒ XkbSA_DeviceBtn || + action_type ⇒ XkbSA_LockLockPtrBtn + ⇒ + flags: CARD8 + count: CARD8 + button: CARD8 + device: CARD8 + pad0: CARD8 + pad1: CARD16 + ─── + action_type ⇒ XkbSA_SetPtrDflt + ⇒ + flags: CARD8 + affect: CARD8 + valueXXX: CARD8 + pad0: CARD32 + ─── + action_type ⇒ XkbSA_ISOLock + ⇒ + flags: CARD8 + mask: CARD8 + real_mods: CARD8 + group_XXX: CARD8 + affect: CARD8 + vmods1: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_SwitchScreen + ⇒ + flags: CARD8 + screenXXX: CARD8 + pad0: CARD8 + pad1: CARD32 + ─── + action_type ⇒ XkbSA_SetControls || + action_type ⇒ XkbSA_LockControls + ⇒ + flags: CARD8 + ctrls3: CARD8 + ctrls2: CARD8 + ctrls1: CARD8 + ctrls0: CARD8 + pad: CARD16 + ─── + action_type ⇒ XkbSA_RedirectKey + ⇒ + new_key: CARD8 + mods_mask: CARD8 + mods: CARD8 + vmods_mask0: CARD8 + vmods_mask1: CARD8 + vmods0: CARD8 + vmods1: CARD8 + ─── + action_type ⇒ XkbSA_DeviceValuator + ⇒ + device: CARD8 + v1_what: CARD8 + v1_idx: CARD8 + v1_value: CARD8 + v2_what: CARD8 + v2_idx: CARD8 + v2_value: CARD8 + pad: CARD8 + ─── + action_type ⇒ XkbSA_XFree86Private || + action_type ⇒ XkbSA_Terminate + ⇒ + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + action_type ⇒ XkbSA_ActionMessage + ⇒ + press_msg: BOOL + release_msg: BOOL + gen_event: BOOL + message: 4 * CHAR +└─── + +Note: XkbSA_ActionMessage is currently unsupported and the contents are +ignored. + + ❧❧❧❧❧❧❧❧❧❧❧ +3.3.3 XkmSymbols + +The symbols in a keymap define the actual keysyms each key may produce. + +┌─── + XKMSymbols + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + group_names_mask: XKMGroupBits + num_vmod_maps: CARD8 + group_names: LISTofXKMCountedString + keysyms: XKMKeysymMapDesc + vmod_maps: XKMVModMapDesc +└─── +One group_name is present for each bit set in group_names_mask. +The number of keysyms present is max_keycode - min_keycode + 1. + +┌─── + XKMKeysymMapDesc + width: CARD8 + num_groups: CARD8 + modifier_map: CARD8 + flags: CARD8 + names: LISTofXKMCountedString + syms: LISTofCARD32 + behavior: XKMBehaviorDesc +└─── + +Presence of names is conditional on the XkmKeyHasTypes flag. The number of +strings is equal to the number of group bits in group_names_mask in the +preceeding XKMSymbols section. +The number of elements in syms is equal to width * num_groups. +Presence of behavior is conditional on the XkmKeyHasBehavior flag. + +┌─── + XKMKeyBehaviorDesc + type: CARD8 + data: CARD8 + pad: CARD16 +└─── + +┌─── + XKMVModMapDesc + key: CARD8 + pad: CARD8 + vmods: CARD16 +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.4 XKMIndicators + +┌─── + XKMIndicators + section_info: XKMSectionInfo + name: XKMCountedString + num_indicators: CARD8 + pad0: CARD8 + pad1: CARD16 + indicators: LISTofXKMIndicatorMapDesc +└─── + +┌─── + XKMIndicatorMapDesc + name: XKMCountedString + indicator: CARD8 + flags: CARD8 + which_mods: CARD8 + real_mods: CARD8 + vmods: CARD16 + which_groups: CARD8 + groups: CARD8 + ctrls: CARD32 +└─── + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMKeyNames + +┌─── + XKMKeyNames + section_info: XKMSectionInfo + name: XKMCountedString + min_keycode: CARD8 + max_keycode: CARD8 + num_aliases: CARD8 + pad: CARD8 + keynames: LISTofXKMKeyname + aliases: LISTofXKMKeyAlias +└─── + +keynames contains max_keycode - min_keycode + 1 entries. + +┌─── + XkmKeyname + name: 4 * CHAR8 +└─── + +┌─── + XkmKeyAlias + real: XkmKeyname + alias: XkmKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.5 XKMGeometry + +┌─── + XKMGeometry + section_info: XKMSectionInfo + name: XKMCountedString + width_mm: CARD16 + height_mm: CARD16 + base_color_ndx: CARD8 + label_color_ndx: CARD8 + num_properties: CARD16 + num_colors: CARD16 + num_shapes: CARD16 + num_sections: CARD16 + num_doodads: CARD16 + num_key_aliases: CARD16 + pad: CARD16 + label_font: XKMCountedString + properties: LISTofXKMGeomProperty + colors: LISTofXKMCountedString + shapes: LISTofXKMGeomShape + sections: LISTofXKMGeomSection + doodads: LISTofXKMGeomDoodad + key_aliases: LISTofXKMKeyAlias +└─── + +┌─── + XKMGeomProperty + name: XKMCountedString + value: XKMCountedString + +└─── + +┌─── + XKMGeomShape + name: XKMCountedString + num_outlines: CARD8 + primary_idx: CARD8 + approx_idx: CARD8 + pad: CARD8 + outlines: LISTofXKMOutlineDesc +└─── + +┌─── + XKMOutlineDesc + num_points: CARD8 + corner_radius: CARD8 + pad: CARD16 + points: LISTofXKMPointDesc +└─── + +┌─── + XKMPointDesc + x: INT16 + y: INT16 +└─── + +┌─── + XKMGeomSection + name: XKMCountedString + top: INT16 + left: INT16 + width: CARD16 + height: CARD16 + angle: INT16 + priority: CARD8 + num_rows: CARD8 + num_doodads: CARD8 + num_overlays: CARD8 + pad: CARD16 + rows: LISTofXKMRowDesc + doodads: LISTofXKMGeomDoodad + overlays: LISTofXKMGeomOverlay +└─── + +┌─── + XKMRowDesc + top: INT16 + left: INT16 + num_keys: CARD8 + vertical: BOOL + pad: CARD16 + keys: XKMKeyDesc +└─── + +┌─── + XKMKeyDesc + name: XKMKeyname + gap: INT16 + shape_idx: CARD8 + color_idx: CARD8 +└─── + +┌─── + XKMGeomDoodad + name: XKMCountedString + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + pad1: CARD16 + pad2: CARD32 + pad3: CARD32 + ─── + type ⇒ XkbOutlineDoodad || + type ⇒ XkbSolideDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + ─── + type ⇒ XkbTextDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + width: CARD16 + height: CARD16 + color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + text: XKMCountedString + font: XKMCountedString + ─── + type ⇒ XkbIndicatorDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + shape_idx: CARD8 + on_color_idx: CARD8 + off_color_idx: CARD8 + pad0: CARD8 + pad1: CARD16 + pad2: CARD32 + ─── + type ⇒ XkbLogoDoodad + ⇒ + type: CARD8 + priority: CARD8 + top: INT16 + left: INT16 + angle: INT16 + color_idx: CARD8 + shape_idx: CARD8 + pad0: CARD16 + pad1: CARD32 + logo_name: XKMCountedString +└─── + +WARNING: XKMGeomDoodad has variable length depending on the type. +NOTE: The current server implementation does not use all fields of all +structures. + +┌─── + XKMOverlayDesc + name: XKMCountedString + num_rows: CARD8 + pad0: CARD8 + pad1: CARD16 + rows: LISTofXKMOverlayRowDesc +└─── + +┌─── + XKMOverlayRowDesc + name: XKMCountedString + row_under: CARD8 + num_keys: CARD8 + pad: CARD16 + keys: LISTofXKMOverlayKeyDesc +└─── + +┌─── + XKMOverlayKeyDesc + over: XKMKeyname + under: XKMKeyname +└─── + + ❧❧❧❧❧❧❧❧❧❧❧ + +3.3.6 XKMVirtualMods + +┌─── + XKMOverlayRowDesc + section_info: XKMSectionInfo + name: XKMCountedString + bound_mask: SETofVMODBITS + named_mask: SETofVMODBITS + vmods: LISTofCARD8 + pad: pad(vmods) + names: LISTofXKMCountedString +└─── + + VMODBITS: CARD16 + +Number of elements in vmods is equal to the number of bits set in +bound_mask. The padding completes vmods to a multiple of 4 byte units. +Number of elements in names is equal to the number of bits set in +named_mask. --- xorg-server-1.11.4.orig/xkb/xkbAccessX.c +++ xorg-server-1.11.4/xkb/xkbAccessX.c @@ -37,6 +37,7 @@ #include #include "inputstr.h" #include "eventstr.h" +#include "inpututils.h" #include #if !defined(WIN32) #include @@ -124,15 +125,11 @@ Bool isRepeat) { DeviceEvent event; - memset(&event, 0, sizeof(DeviceEvent)); - event.header = ET_Internal; + + init_device_event(&event, keybd, GetTimeInMillis()); event.type = type; event.detail.key = keyCode; - event.time = GetTimeInMillis(); - event.length = sizeof(DeviceEvent); event.key_repeat = isRepeat; - event.sourceid = keybd->id; - event.deviceid = keybd->id; if (xkbDebugFlags&0x8) { DebugF("[xkb] AXKE: Key %d %s\n", keyCode, --- xorg-server-1.11.4.orig/xkb/xkbActions.c +++ xorg-server-1.11.4/xkb/xkbActions.c @@ -344,15 +344,18 @@ filter->keycode = keycode; filter->active = 1; filter->filterOthers = 0; - filter->priv = 0; + filter->priv = xkbi->state.locked_mods&pAction->mods.mask; filter->filter = _XkbFilterLockState; filter->upAction = *pAction; - xkbi->state.locked_mods^= pAction->mods.mask; + if (!(filter->upAction.mods.flags&XkbSA_LockNoLock)) + xkbi->state.locked_mods|= pAction->mods.mask; xkbi->setMods = pAction->mods.mask; } else if (filter->keycode==keycode) { filter->active = 0; xkbi->clearMods = filter->upAction.mods.mask; + if (!(filter->upAction.mods.flags&XkbSA_LockNoUnlock)) + xkbi->state.locked_mods&= ~filter->priv; } return 1; } @@ -781,7 +784,7 @@ filter->active= 0; return ((pMsg->flags&XkbSA_MessageGenKeyEvent)!=0); } - return 0; + return 1; } static int @@ -1200,7 +1203,7 @@ if (keyEvent) tmpdev = dev; else - tmpdev = GetPairedDevice(dev); + tmpdev = GetMaster(dev, POINTER_OR_FLOAT); UNWRAP_PROCESS_INPUT_PROC(tmpdev,xkbPrivPtr, backupproc); dev->public.processInputProc((InternalEvent*)event, tmpdev); --- xorg-server-1.11.4.orig/dix/dispatch.c +++ xorg-server-1.11.4/dix/dispatch.c @@ -3917,6 +3917,8 @@ return -1; } + update_desktop_dimensions(); + dixRegisterPrivateKey(&cursorScreenDevPriv[i], PRIVATE_CURSOR, 0); return i; --- xorg-server-1.11.4.orig/dix/extension.c +++ xorg-server-1.11.4/dix/extension.c @@ -61,7 +61,6 @@ #include "registry.h" #include "xace.h" -#define LAST_EVENT 128 #define LAST_ERROR 255 static ExtensionEntry **extensions = (ExtensionEntry **)NULL; @@ -82,7 +81,7 @@ if (!MainProc || !SwappedMainProc || !MinorOpcodeProc) return((ExtensionEntry *) NULL); - if ((lastEvent + NumEvents > LAST_EVENT) || + if ((lastEvent + NumEvents > MAXEVENTS) || (unsigned)(lastError + NumErrors > LAST_ERROR)) { LogMessage(X_ERROR, "Not enabling extension %s: maximum number of " "events or errors exceeded.\n", name); --- xorg-server-1.11.4.orig/dix/tables.c +++ xorg-server-1.11.4/dix/tables.c @@ -592,7 +592,7 @@ ProcBadRequest }; -EventSwapPtr EventSwapVector[128] = +EventSwapPtr EventSwapVector[MAXEVENTS] = { (EventSwapPtr)SErrorEvent, NotImplemented, --- xorg-server-1.11.4.orig/dix/eventconvert.c +++ xorg-server-1.11.4/dix/eventconvert.c @@ -43,10 +43,13 @@ #include "inputstr.h" #include "misc.h" #include "eventstr.h" +#include "exevents.h" #include "exglobals.h" #include "eventconvert.h" +#include "inpututils.h" #include "xiquerydevice.h" #include "xkbsrv.h" +#include "inpututils.h" static int countValuators(DeviceEvent *ev, int *first); @@ -55,6 +58,7 @@ static int eventToDeviceChanged(DeviceChangedEvent *ev, xEvent **dcce); static int eventToDeviceEvent(DeviceEvent *ev, xEvent **xi); static int eventToRawEvent(RawDeviceEvent *ev, xEvent **xi); +static int eventToTouchOwnershipEvent(TouchOwnershipEvent *ev, xEvent **xi); /* Do not use, read comments below */ BOOL EventIsKeyRepeat(xEvent *event); @@ -155,6 +159,13 @@ case ET_RawButtonPress: case ET_RawButtonRelease: case ET_RawMotion: + case ET_RawTouchBegin: + case ET_RawTouchUpdate: + case ET_RawTouchEnd: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: + case ET_TouchOwnership: ret = BadMatch; break; default: @@ -205,6 +216,13 @@ case ET_RawButtonPress: case ET_RawButtonRelease: case ET_RawMotion: + case ET_RawTouchBegin: + case ET_RawTouchUpdate: + case ET_RawTouchEnd: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: + case ET_TouchOwnership: *count = 0; *xi = NULL; return BadMatch; @@ -246,7 +264,12 @@ case ET_ButtonRelease: case ET_KeyPress: case ET_KeyRelease: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: return eventToDeviceEvent(&ev->device_event, xi); + case ET_TouchOwnership: + return eventToTouchOwnershipEvent(&ev->touch_ownership_event, xi); case ET_ProximityIn: case ET_ProximityOut: *xi = NULL; @@ -258,6 +281,9 @@ case ET_RawButtonPress: case ET_RawButtonRelease: case ET_RawMotion: + case ET_RawTouchBegin: + case ET_RawTouchUpdate: + case ET_RawTouchEnd: return eventToRawEvent(&ev->raw_event, xi); default: break; @@ -482,6 +508,40 @@ } static int +appendScrollInfo(DeviceChangedEvent *dce, xXIScrollInfo *info, int axisnumber) +{ + if (dce->valuators[axisnumber].scroll.type == SCROLL_TYPE_NONE) + return 0; + + info->type = XIScrollClass; + info->length = sizeof(xXIScrollInfo)/4; + info->number = axisnumber; + switch(dce->valuators[axisnumber].scroll.type) + { + case SCROLL_TYPE_VERTICAL: + info->scroll_type = XIScrollTypeVertical; + break; + case SCROLL_TYPE_HORIZONTAL: + info->scroll_type = XIScrollTypeHorizontal; + break; + default: + ErrorF("[Xi] Unknown scroll type %d. This is a bug.\n", dce->valuators[axisnumber].scroll.type); + break; + } + info->increment = double_to_fp3232(dce->valuators[axisnumber].scroll.increment); + info->sourceid = dce->sourceid; + + info->flags = 0; + + if (dce->valuators[axisnumber].scroll.flags & SCROLL_FLAG_DONT_EMULATE) + info->flags |= XIScrollFlagNoEmulation; + if (dce->valuators[axisnumber].scroll.flags & SCROLL_FLAG_PREFERRED) + info->flags |= XIScrollFlagPreferred; + + return info->length * 4; +} + +static int eventToDeviceChanged(DeviceChangedEvent *dce, xEvent **xi) { xXIDeviceChangedEvent *dcce; @@ -496,8 +556,16 @@ len += pad_to_int32(bits_to_bytes(dce->buttons.num_buttons)); } if (dce->num_valuators) + { + int i; + len += sizeof(xXIValuatorInfo) * dce->num_valuators; + for (i = 0; i < dce->num_valuators; i++) + if (dce->valuators[i].scroll.type != SCROLL_TYPE_NONE) + len += sizeof(xXIScrollInfo); + } + nkeys = (dce->keys.max_keycode > 0) ? dce->keys.max_keycode - dce->keys.min_keycode + 1 : 0; if (nkeys > 0) @@ -543,6 +611,15 @@ dcce->num_classes += dce->num_valuators; for (i = 0; i < dce->num_valuators; i++) ptr += appendValuatorInfo(dce, (xXIValuatorInfo*)ptr, i); + + for (i = 0; i < dce->num_valuators; i++) + { + if (dce->valuators[i].scroll.type != SCROLL_TYPE_NONE) + { + dcce->num_classes++; + ptr += appendScrollInfo(dce, (xXIScrollInfo*)ptr, i); + } + } } *xi = (xEvent*)dcce; @@ -593,10 +670,14 @@ xde = (xXIDeviceEvent*)*xi; xde->type = GenericEvent; xde->extension = IReqCode; - xde->evtype = GetXI2Type((InternalEvent*)ev); + xde->evtype = GetXI2Type(ev->type); xde->time = ev->time; xde->length = bytes_to_int32(len - sizeof(xEvent)); - xde->detail = ev->detail.button; + if (IsTouchEvent((InternalEvent*)ev)) + xde->detail = ev->touchid; + else + xde->detail = ev->detail.button; + xde->root = ev->root; xde->buttons_len = btlen; xde->valuators_len = vallen; @@ -605,6 +686,15 @@ xde->root_x = FP1616(ev->root_x, ev->root_x_frac); xde->root_y = FP1616(ev->root_y, ev->root_y_frac); + if (ev->type == ET_TouchUpdate) + xde->flags |= (ev->flags & TOUCH_PENDING_END) ? XITouchPendingEnd : 0; + else + xde->flags = ev->flags; + + if (IsTouchEvent((InternalEvent*)ev) && + ev->flags & TOUCH_POINTER_EMULATED) + xde->flags |= XITouchEmulatingPointer; + if (ev->key_repeat) xde->flags |= XIKeyRepeat; @@ -632,8 +722,7 @@ if (BitIsOn(ev->valuators.mask, i)) { SetBit(ptr, i); - axisval->integral = ev->valuators.data[i]; - axisval->frac = ev->valuators.data_frac[i]; + *axisval = double_to_fp3232(ev->valuators.data[i]); axisval++; } } @@ -642,13 +731,34 @@ } static int +eventToTouchOwnershipEvent(TouchOwnershipEvent *ev, xEvent **xi) +{ + int len = sizeof(xXITouchOwnershipEvent); + xXITouchOwnershipEvent *xtoe; + + *xi = calloc(1, len); + xtoe = (xXITouchOwnershipEvent*)*xi; + xtoe->type = GenericEvent; + xtoe->extension = IReqCode; + xtoe->length = bytes_to_int32(len - sizeof(xEvent)); + xtoe->evtype = GetXI2Type(ev->type); + xtoe->deviceid = ev->deviceid; + xtoe->time = ev->time; + xtoe->sourceid = ev->sourceid; + xtoe->touchid = ev->touchid; + xtoe->flags = 0; /* we don't have wire flags for ownership yet */ + + return Success; +} + +static int eventToRawEvent(RawDeviceEvent *ev, xEvent **xi) { xXIRawEvent* raw; int vallen, nvals; int i, len = sizeof(xXIRawEvent); char *ptr; - FP3232 *axisval; + FP3232 *axisval, *axisval_raw; nvals = count_bits(ev->valuators.mask, sizeof(ev->valuators.mask)); len += nvals * sizeof(FP3232) * 2; /* 8 byte per valuator, once @@ -660,25 +770,27 @@ raw = (xXIRawEvent*)*xi; raw->type = GenericEvent; raw->extension = IReqCode; - raw->evtype = GetXI2Type((InternalEvent*)ev); + raw->evtype = GetXI2Type(ev->type); raw->time = ev->time; raw->length = bytes_to_int32(len - sizeof(xEvent)); raw->detail = ev->detail.button; raw->deviceid = ev->deviceid; + raw->sourceid = ev->sourceid; raw->valuators_len = vallen; + raw->flags = ev->flags; ptr = (char*)&raw[1]; axisval = (FP3232*)(ptr + raw->valuators_len * 4); + axisval_raw = axisval + nvals; for (i = 0; i < sizeof(ev->valuators.mask) * 8; i++) { if (BitIsOn(ev->valuators.mask, i)) { SetBit(ptr, i); - axisval->integral = ev->valuators.data[i]; - axisval->frac = ev->valuators.data_frac[i]; - (axisval + nvals)->integral = ev->valuators.data_raw[i]; - (axisval + nvals)->frac = ev->valuators.data_raw_frac[i]; + *axisval = double_to_fp3232(ev->valuators.data[i]); + *axisval_raw = double_to_fp3232(ev->valuators.data_raw[i]); axisval++; + axisval_raw++; } } @@ -690,10 +802,10 @@ * equivalent exists. */ int -GetCoreType(InternalEvent *event) +GetCoreType(enum EventType type) { int coretype = 0; - switch(event->any.type) + switch(type) { case ET_Motion: coretype = MotionNotify; break; case ET_ButtonPress: coretype = ButtonPress; break; @@ -711,10 +823,10 @@ * equivalent exists. */ int -GetXIType(InternalEvent *event) +GetXIType(enum EventType type) { int xitype = 0; - switch(event->any.type) + switch(type) { case ET_Motion: xitype = DeviceMotionNotify; break; case ET_ButtonPress: xitype = DeviceButtonPress; break; @@ -734,11 +846,11 @@ * equivalent exists. */ int -GetXI2Type(InternalEvent *event) +GetXI2Type(enum EventType type) { int xi2type = 0; - switch(event->any.type) + switch(type) { case ET_Motion: xi2type = XI_Motion; break; case ET_ButtonPress: xi2type = XI_ButtonPress; break; @@ -754,8 +866,15 @@ case ET_RawButtonPress: xi2type = XI_RawButtonPress; break; case ET_RawButtonRelease: xi2type = XI_RawButtonRelease; break; case ET_RawMotion: xi2type = XI_RawMotion; break; + case ET_RawTouchBegin: xi2type = XI_RawTouchBegin; break; + case ET_RawTouchUpdate: xi2type = XI_RawTouchUpdate; break; + case ET_RawTouchEnd: xi2type = XI_RawTouchEnd; break; case ET_FocusIn: xi2type = XI_FocusIn; break; case ET_FocusOut: xi2type = XI_FocusOut; break; + case ET_TouchBegin: xi2type = XI_TouchBegin; break; + case ET_TouchEnd: xi2type = XI_TouchEnd; break; + case ET_TouchUpdate: xi2type = XI_TouchUpdate; break; + case ET_TouchOwnership: xi2type = XI_TouchOwnership; break; default: break; } --- xorg-server-1.11.4.orig/dix/inpututils.c +++ xorg-server-1.11.4/dix/inpututils.c @@ -37,6 +37,7 @@ #include "xkbstr.h" #include "inpututils.h" #include "eventstr.h" +#include "scrnintstr.h" /* Check if a button map change is okay with the device. * Returns -1 for BadValue, as it collides with MappingBusy. */ @@ -430,6 +431,9 @@ * flying-car future, when we can dynamically alloc the masks and are * not constrained by signals, we can start using num_valuators */ ValuatorMask *mask = calloc(1, sizeof(ValuatorMask)); + if (mask == NULL) + return NULL; + mask->last_bit = -1; return mask; } @@ -497,10 +501,10 @@ } /** - * Set the valuator to the given data. + * Set the valuator to the given floating-point data. */ void -valuator_mask_set(ValuatorMask *mask, int valuator, int data) +valuator_mask_set_double(ValuatorMask *mask, int valuator, double data) { mask->last_bit = max(valuator, mask->last_bit); SetBit(mask->mask, valuator); @@ -508,13 +512,69 @@ } /** - * Return the requested valuator value. If the mask bit is not set for the - * given valuator, the returned value is undefined. + * Set the valuator to the given integer data. + */ +void +valuator_mask_set(ValuatorMask *mask, int valuator, int data) +{ + valuator_mask_set_double(mask, valuator, data); +} + +/** + * Return the requested valuator value as a double. If the mask bit is not + * set for the given valuator, the returned value is undefined. + */ +double +valuator_mask_get_double(const ValuatorMask *mask, int valuator) +{ + return mask->valuators[valuator]; +} + +/** + * Return the requested valuator value as an integer, rounding towards zero. + * If the mask bit is not set for the given valuator, the returned value is + * undefined. */ int valuator_mask_get(const ValuatorMask *mask, int valuator) { - return mask->valuators[valuator]; + return trunc(valuator_mask_get_double(mask, valuator)); +} + +/** + * Set value to the requested valuator. If the mask bit is set for this + * valuator, value contains the requested valuator value and TRUE is + * returned. + * If the mask bit is not set for this valuator, value is unchanged and + * FALSE is returned. + */ +Bool +valuator_mask_fetch_double(const ValuatorMask *mask, int valuator, double *value) +{ + if (valuator_mask_isset(mask, valuator)) + { + *value = valuator_mask_get_double(mask, valuator); + return TRUE; + } else + return FALSE; +} + +/** + * Set value to the requested valuator. If the mask bit is set for this + * valuator, value contains the requested valuator value and TRUE is + * returned. + * If the mask bit is not set for this valuator, value is unchanged and + * FALSE is returned. + */ +Bool +valuator_mask_fetch(const ValuatorMask *mask, int valuator, int *value) +{ + if (valuator_mask_isset(mask, valuator)) + { + *value = valuator_mask_get(mask, valuator); + return TRUE; + } else + return FALSE; } /** @@ -527,7 +587,7 @@ int i, lastbit = -1; ClearBit(mask->mask, valuator); - mask->valuators[valuator] = 0; + mask->valuators[valuator] = 0.0; for (i = 0; i <= mask->last_bit; i++) if (valuator_mask_isset(mask, i)) @@ -568,7 +628,7 @@ if (ev && ev->any.header != ET_Internal) { int i; - unsigned char *data = (unsigned char*)ev; + const unsigned char *data = (const unsigned char*)ev; ErrorF("dix: invalid event type %d\n", ev->any.header); @@ -584,3 +644,355 @@ FatalError("Wrong event type %d. Aborting server\n", ev->any.header); } } + +/** + * Initializes the given event to zero (or default values), for the given + * device. + */ +void init_device_event(DeviceEvent *event, DeviceIntPtr dev, Time ms) +{ + memset(event, 0, sizeof(DeviceEvent)); + event->header = ET_Internal; + event->length = sizeof(DeviceEvent); + event->time = ms; + event->deviceid = dev->id; + event->sourceid = dev->id; +} + +int event_get_corestate(DeviceIntPtr mouse, DeviceIntPtr kbd) +{ + int corestate; + /* core state needs to be assembled BEFORE the device is updated. */ + corestate = (kbd && kbd->key) ? XkbStateFieldFromRec(&kbd->key->xkbInfo->state) : 0; + corestate |= (mouse && mouse->button) ? (mouse->button->state) : 0; + corestate |= (mouse && mouse->touch) ? (mouse->touch->state) : 0; + + return corestate; +} + +void event_set_state(DeviceIntPtr mouse, DeviceIntPtr kbd, DeviceEvent *event) +{ + int i; + + for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) + if (BitIsOn(mouse->button->down, i)) + SetBit(event->buttons, mouse->button->map[i]); + + if (mouse && mouse->touch && mouse->touch->buttonsDown > 0) + SetBit(event->buttons, mouse->button->map[1]); + + if (kbd && kbd->key) + { + XkbStatePtr state; + /* we need the state before the event happens */ + if (event->type == ET_KeyPress || event->type == ET_KeyRelease) + state = &kbd->key->xkbInfo->prev_state; + else + state = &kbd->key->xkbInfo->state; + + event->mods.base = state->base_mods; + event->mods.latched = state->latched_mods; + event->mods.locked = state->locked_mods; + event->mods.effective = state->mods; + + event->group.base = state->base_group; + event->group.latched = state->latched_group; + event->group.locked = state->locked_group; + event->group.effective = state->group; + } +} + +/** + * Return the event filter mask for the given device and the given core or + * XI1 protocol type. + */ +Mask +event_get_filter_from_type(DeviceIntPtr dev, int evtype) +{ + return event_filters[dev ? dev->id : 0][evtype]; +} + +/** + * Return the event filter mask for the given device and the given core or + * XI2 protocol type. + */ +Mask +event_get_filter_from_xi2type(int evtype) +{ + return (1 << (evtype % 8)); +} + +Bool +point_on_screen(ScreenPtr pScreen, int x, int y) +{ + return x >= pScreen->x && x < pScreen->x + pScreen->width && + y >= pScreen->y && y < pScreen->y + pScreen->height; +} + +/** + * Update desktop dimensions on the screenInfo struct. + */ +void +update_desktop_dimensions(void) +{ + int i; + int x1 = INT_MAX, y1 = INT_MAX; /* top-left */ + int x2 = INT_MIN, y2 = INT_MIN; /* bottom-right */ + + for (i = 0; i < screenInfo.numScreens; i++) { + ScreenPtr screen = screenInfo.screens[i]; + x1 = min(x1, screen->x); + y1 = min(y1, screen->y); + x2 = max(x2, screen->x + screen->width); + y2 = max(y2, screen->y + screen->height); + } + + screenInfo.x = x1; + screenInfo.y = y1; + screenInfo.width = x2 - x1; + screenInfo.height = y2 - y1; +} + + +/* FP1616/FP3232 conversion functions. + * Fixed point types are encoded as signed integral and unsigned frac. So any + * negative number -n.m is encoded as floor(n) + (1 - 0.m). + */ +double +fp1616_to_double(FP1616 in) +{ + double ret; + + ret = (double)(in >> 16); + ret += (double)(in & 0xffff) * (1.0 / (1UL << 16)); /* Optimized: ldexp((double)(in & 0xffff), -16); */ + return ret; +} + +double +fp3232_to_double(FP3232 in) +{ + double ret; + ret = (double)in.integral; + ret += (double)in.frac * (1.0 / (1ULL << 32)); /* Optimized: ldexp((double)in.frac, -32); */ + return ret; +} + + +FP1616 +double_to_fp1616(double in) +{ + FP1616 ret; + int32_t integral; + double tmp; + uint32_t frac_d; + + tmp = floor(in); + integral = (int32_t)tmp; + + tmp = (in - integral) * (1UL << 16); /* Optimized: ldexp(in - integral, 16) */ + frac_d = (uint16_t)tmp; + + ret = integral << 16; + ret |= frac_d & 0xffff; + return ret; +} + +FP3232 +double_to_fp3232(double in) +{ + FP3232 ret; + int32_t integral; + double tmp; + uint32_t frac_d; + + tmp = floor(in); + integral = (int32_t)tmp; + + tmp = (in - integral) * (1ULL << 32); /* Optimized: ldexp(in - integral, 32) */ + frac_d = (uint32_t)tmp; + + ret.integral = integral; + ret.frac = frac_d; + return ret; +} + +/** + * DO NOT USE THIS FUNCTION. It only exists for the test cases. Use + * xi2mask_new() instead to get the standard sized masks. + * + * @param nmasks The number of masks (== number of devices) + * @param size The size of the masks in bytes + * @return The new mask or NULL on allocation error. + */ +XI2Mask* +xi2mask_new_with_size(size_t nmasks, size_t size) +{ + int i; + + XI2Mask *mask = calloc(1, sizeof(*mask)); + if (!mask) + return NULL; + + + mask->nmasks = nmasks; + mask->mask_size = size; + + mask->masks = calloc(mask->nmasks, sizeof(*mask->masks)); + if (!mask->masks) + goto unwind; + + for (i = 0; i < mask->nmasks; i++) { + mask->masks[i] = calloc(1, mask->mask_size); + if (!mask->masks[i]) + goto unwind; + } + return mask; + +unwind: + xi2mask_free(&mask); + return NULL; +} + + +/** + * Create a new XI2 mask of the standard size, i.e. for all devices + fake + * devices and for the highest supported XI2 event type. + * + * @return The new mask or NULL on allocation error. + */ +XI2Mask* +xi2mask_new(void) +{ + return xi2mask_new_with_size(EMASKSIZE, XI2MASKSIZE); +} + +/** + * Frees memory associated with mask and resets mask to NULL. + */ +void +xi2mask_free(XI2Mask** mask) +{ + int i; + + if (!(*mask)) + return; + + for (i = 0; (*mask)->masks && i < (*mask)->nmasks; i++) + free((*mask)->masks[i]); + free((*mask)->masks); + free((*mask)); + *mask = NULL; +} + +/** + * Test if the bit for event type is set for this device, or the + * XIAllDevices/XIAllMasterDevices (if applicable) is set. + * + * @return TRUE if the bit is set, FALSE otherwise + */ +Bool +xi2mask_isset(XI2Mask* mask, const DeviceIntPtr dev, int event_type) +{ + int set = 0; + + BUG_WARN(dev->id < 0); + BUG_WARN(dev->id >= mask->nmasks); + BUG_WARN(bits_to_bytes(event_type + 1) > mask->mask_size); + + set = !!BitIsOn(mask->masks[XIAllDevices], event_type); + if (!set) + set = !!BitIsOn(mask->masks[dev->id], event_type); + if (!set && IsMaster(dev)) + set = !!BitIsOn(mask->masks[XIAllMasterDevices], event_type); + + return set; +} + +/** + * Set the mask bit for this event type for this device. + */ +void +xi2mask_set(XI2Mask *mask, int deviceid, int event_type) +{ + BUG_WARN(deviceid < 0); + BUG_WARN(deviceid >= mask->nmasks); + BUG_WARN(bits_to_bytes(event_type + 1) > mask->mask_size); + + SetBit(mask->masks[deviceid], event_type); +} + +/** + * Zero out the xi2mask, for the deviceid given. If the deviceid is < 0, all + * masks are zeroed. + */ +void +xi2mask_zero(XI2Mask *mask, int deviceid) +{ + int i; + + BUG_WARN(deviceid > 0 && deviceid >= mask->nmasks); + + if (deviceid >= 0) + memset(mask->masks[deviceid], 0, mask->mask_size); + else + for (i = 0; i < mask->nmasks; i++) + memset(mask->masks[i], 0, mask->mask_size); +} + +/** + * Merge source into dest, i.e. dest |= source. + * If the masks are of different size, only the overlapping section is merged. + */ +void +xi2mask_merge(XI2Mask *dest, const XI2Mask *source) +{ + int i, j; + + for (i = 0; i < min(dest->nmasks, source->nmasks); i++) + for (j = 0; j < min(dest->mask_size, source->mask_size); j++) + dest->masks[i][j] |= source->masks[i][j]; +} + +/** + * @return The number of masks in mask + */ +size_t +xi2mask_num_masks(const XI2Mask *mask) +{ + return mask->nmasks; +} + +/** + * @return The size of each mask in bytes + */ +size_t +xi2mask_mask_size(const XI2Mask *mask) +{ + return mask->mask_size; +} + +/** + * Set the mask for the given deviceid to the source mask. + * If the mask given is larger than the target memory, only the overlapping + * parts are copied. + */ +void +xi2mask_set_one_mask(XI2Mask *xi2mask, int deviceid, const unsigned char *mask, size_t mask_size) +{ + BUG_WARN(deviceid < 0); + BUG_WARN(deviceid >= xi2mask->nmasks); + + memcpy(xi2mask->masks[deviceid], mask, min(xi2mask->mask_size, mask_size)); +} + +/** + * Get a reference to the XI2mask for this particular device. + */ +const unsigned char* +xi2mask_get_one_mask(const XI2Mask *mask, int deviceid) +{ + BUG_WARN(deviceid < 0); + BUG_WARN(deviceid >= mask->nmasks); + + return mask->masks[deviceid]; +} --- xorg-server-1.11.4.orig/dix/window.c +++ xorg-server-1.11.4/dix/window.c @@ -131,6 +131,7 @@ #include "privates.h" #include "xace.h" +#include "exevents.h" #include /* must come after server includes */ @@ -2971,8 +2972,10 @@ if (!fromConfigure && pScreen->PostValidateTree) (*pScreen->PostValidateTree)(pLayerWin->parent, pWin, VTUnmap); } - if (wasRealized && !fromConfigure) + if (wasRealized && !fromConfigure) { WindowsRestructured (); + WindowGone(pWin); + } return Success; } @@ -3055,8 +3058,10 @@ if (anyMarked && pScreen->PostValidateTree) (*pScreen->PostValidateTree)(pLayerWin->parent, pHead, VTUnmap); } - if (wasRealized) + if (wasRealized) { WindowsRestructured (); + WindowGone(pWin); + } } --- xorg-server-1.11.4.orig/dix/grabs.c +++ xorg-server-1.11.4/dix/grabs.c @@ -60,6 +60,9 @@ #include "dixgrabs.h" #include "xace.h" #include "exevents.h" +#include "exglobals.h" +#include "inpututils.h" +#include "client.h" #define BITMASK(i) (((Mask)1) << ((i) & 31)) #define MASKIDX(i) ((i) >> 5) @@ -76,25 +79,41 @@ int i, j; GrabInfoPtr devGrab = &dev->deviceGrab; GrabPtr grab = devGrab->grab; + Bool clientIdPrinted = FALSE; - ErrorF("Active grab 0x%lx (%s) on device '%s' (%d):", + ErrorF("Active grab 0x%lx (%s) on device '%s' (%d):\n", (unsigned long) grab->resource, - (grab->grabtype == GRABTYPE_XI2) ? "xi2" : - ((grab->grabtype == GRABTYPE_CORE) ? "core" : "xi1"), + (grab->grabtype == XI2) ? "xi2" : + ((grab->grabtype == CORE) ? "core" : "xi1"), dev->name, dev->id); client = clients[CLIENT_ID(grab->resource)]; - if (client && GetLocalClientCreds(client, &lcc) != -1) + if (client) { - ErrorF(" client pid %ld uid %ld gid %ld\n", - (lcc->fieldsSet & LCC_PID_SET) ? (long) lcc->pid : 0, - (lcc->fieldsSet & LCC_UID_SET) ? (long) lcc->euid : 0, - (lcc->fieldsSet & LCC_GID_SET) ? (long) lcc->egid : 0); - FreeLocalClientCreds(lcc); + pid_t clientpid = GetClientPid(client); + const char *cmdname = GetClientCmdName(client); + const char *cmdargs = GetClientCmdArgs(client); + + if ((clientpid > 0) && (cmdname != NULL)) + { + ErrorF(" client pid %ld %s %s\n", + (long) clientpid, cmdname, cmdargs ? cmdargs : ""); + clientIdPrinted = TRUE; + } + else if (GetLocalClientCreds(client, &lcc) != -1) + { + ErrorF(" client pid %ld uid %ld gid %ld\n", + (lcc->fieldsSet & LCC_PID_SET) ? (long) lcc->pid : 0, + (lcc->fieldsSet & LCC_UID_SET) ? (long) lcc->euid : 0, + (lcc->fieldsSet & LCC_GID_SET) ? (long) lcc->egid : 0); + FreeLocalClientCreds(lcc); + clientIdPrinted = TRUE; + } } - else + if (!clientIdPrinted) { - ErrorF(" (no client information available)\n"); + ErrorF(" (no client information available for client %d)\n", + CLIENT_ID(grab->resource)); } /* XXX is this even correct? */ @@ -109,26 +128,28 @@ devGrab->sync.frozen ? "frozen" : "thawed", devGrab->sync.state); - if (grab->grabtype == GRABTYPE_CORE) + if (grab->grabtype == CORE) { ErrorF(" core event mask 0x%lx\n", (unsigned long) grab->eventMask); } - else if (grab->grabtype == GRABTYPE_XI) + else if (grab->grabtype == XI) { ErrorF(" xi1 event mask 0x%lx\n", devGrab->implicitGrab ? (unsigned long) grab->deviceMask : (unsigned long) grab->eventMask); } - else if (grab->grabtype == GRABTYPE_XI2) + else if (grab->grabtype == XI2) { - for (i = 0; i < EMASKSIZE; i++) + for (i = 0; i < xi2mask_num_masks(grab->xi2mask); i++) { + const unsigned char *mask; int print; print = 0; for (j = 0; j < XI2MASKSIZE; j++) { - if (grab->xi2mask[i][j]) + mask = xi2mask_get_one_mask(grab->xi2mask, i); + if (mask[j]) { print = 1; break; @@ -137,8 +158,8 @@ if (!print) continue; ErrorF(" xi2 event mask for device %d: 0x", dev->id); - for (j = 0; j < XI2MASKSIZE; j++) - ErrorF("%x", grab->xi2mask[i][j]); + for (j = 0; j < xi2mask_mask_size(grab->xi2mask); j++) + ErrorF("%x", mask[j]); ErrorF("\n"); } } @@ -174,19 +195,36 @@ client = clients[CLIENT_ID(dev->deviceGrab.grab->resource)]; if (!client || client->clientGone) dev->deviceGrab.DeactivateGrab(dev); - CloseDownClient(client); + if (kill_client) + CloseDownClient(client); } ErrorF("End list of ungrabbed devices\n"); } GrabPtr +AllocGrab(void) +{ + GrabPtr grab = calloc(1, sizeof(GrabRec)); + + if (grab) { + grab->xi2mask = xi2mask_new(); + if (!grab->xi2mask) { + free(grab); + grab = NULL; + } + } + + return grab; +} + +GrabPtr CreateGrab( int client, DeviceIntPtr device, DeviceIntPtr modDevice, WindowPtr window, - GrabType grabtype, + enum InputLevel grabtype, GrabMask *mask, GrabParameters *param, int type, @@ -196,7 +234,7 @@ { GrabPtr grab; - grab = calloc(1, sizeof(GrabRec)); + grab = AllocGrab(); if (!grab) return (GrabPtr)NULL; grab->resource = FakeClientID(client); @@ -218,26 +256,80 @@ grab->cursor = cursor; grab->next = NULL; - if (grabtype == GRABTYPE_XI2) - memcpy(grab->xi2mask, mask->xi2mask, sizeof(mask->xi2mask)); + if (grabtype == XI2) + xi2mask_merge(grab->xi2mask, mask->xi2mask); if (cursor) cursor->refcnt++; return grab; } -static void +void FreeGrab(GrabPtr pGrab) { + if (pGrab->grabtype == XI2 && pGrab->type == XI_TouchBegin) + TouchListenerGone(pGrab->resource); + free(pGrab->modifiersDetail.pMask); free(pGrab->detail.pMask); if (pGrab->cursor) FreeCursor(pGrab->cursor, (Cursor)0); + xi2mask_free(&pGrab->xi2mask); free(pGrab); } +Bool +CopyGrab(GrabPtr dst, const GrabPtr src) +{ + Mask *mdetails_mask = NULL; + Mask *details_mask = NULL; + XI2Mask *xi2mask; + + if (src->cursor) + src->cursor->refcnt++; + + if (src->modifiersDetail.pMask) { + int len = MasksPerDetailMask * sizeof(Mask); + mdetails_mask = malloc(len); + if (!mdetails_mask) + return FALSE; + memcpy(mdetails_mask, src->modifiersDetail.pMask, len); + } + + if (src->detail.pMask) { + int len = MasksPerDetailMask * sizeof(Mask); + details_mask = malloc(len); + if (!details_mask) { + free(mdetails_mask); + return FALSE; + } + memcpy(details_mask, src->detail.pMask, len); + } + + if (!dst->xi2mask) { + xi2mask = xi2mask_new(); + if (!xi2mask) { + free(mdetails_mask); + free(details_mask); + return FALSE; + } + } else { + xi2mask = dst->xi2mask; + xi2mask_zero(xi2mask, -1); + } + + *dst = *src; + dst->modifiersDetail.pMask = mdetails_mask; + dst->detail.pMask = details_mask; + dst->xi2mask = xi2mask; + + xi2mask_merge(dst->xi2mask, src->xi2mask); + + return TRUE; +} + int DeletePassiveGrab(pointer value, XID id) { @@ -339,7 +431,7 @@ static Bool GrabSupersedesSecond(GrabPtr pFirstGrab, GrabPtr pSecondGrab) { - unsigned int any_modifier = (pFirstGrab->grabtype == GRABTYPE_XI2) ? + unsigned int any_modifier = (pFirstGrab->grabtype == XI2) ? (unsigned int)XIAnyModifier : (unsigned int)AnyModifier; if (!DetailSupersedesSecond(pFirstGrab->modifiersDetail, @@ -370,14 +462,14 @@ Bool GrabMatchesSecond(GrabPtr pFirstGrab, GrabPtr pSecondGrab, Bool ignoreDevice) { - unsigned int any_modifier = (pFirstGrab->grabtype == GRABTYPE_XI2) ? + unsigned int any_modifier = (pFirstGrab->grabtype == XI2) ? (unsigned int)XIAnyModifier : (unsigned int)AnyModifier; if (pFirstGrab->grabtype != pSecondGrab->grabtype) return FALSE; - if (pFirstGrab->grabtype == GRABTYPE_XI2) + if (pFirstGrab->grabtype == XI2) { if (pFirstGrab->device == inputInfo.all_devices || pSecondGrab->device == inputInfo.all_devices) @@ -429,7 +521,7 @@ static Bool GrabsAreIdentical(GrabPtr pFirstGrab, GrabPtr pSecondGrab) { - unsigned int any_modifier = (pFirstGrab->grabtype == GRABTYPE_XI2) ? + unsigned int any_modifier = (pFirstGrab->grabtype == XI2) ? (unsigned int)XIAnyModifier : (unsigned int)AnyModifier; @@ -479,7 +571,7 @@ for (grab = wPassiveGrabs(pGrab->window); grab; grab = grab->next) { - if (GrabMatchesSecond(pGrab, grab, (pGrab->grabtype == GRABTYPE_CORE))) + if (GrabMatchesSecond(pGrab, grab, (pGrab->grabtype == CORE))) { if (CLIENT_BITS(pGrab->resource) != CLIENT_BITS(grab->resource)) { @@ -557,9 +649,9 @@ return FALSE; } - any_modifier = (pMinuendGrab->grabtype == GRABTYPE_XI2) ? + any_modifier = (pMinuendGrab->grabtype == XI2) ? (unsigned int)XIAnyModifier : (unsigned int)AnyModifier; - any_key = (pMinuendGrab->grabtype == GRABTYPE_XI2) ? + any_key = (pMinuendGrab->grabtype == XI2) ? (unsigned int)XIAnyKeycode : (unsigned int)AnyKey; ndels = nadds = nups = 0; ok = TRUE; @@ -569,7 +661,7 @@ { if ((CLIENT_BITS(grab->resource) != CLIENT_BITS(pMinuendGrab->resource)) || !GrabMatchesSecond(grab, pMinuendGrab, - (grab->grabtype == GRABTYPE_CORE))) + (grab->grabtype == CORE))) continue; if (GrabSupersedesSecond(pMinuendGrab, grab)) { @@ -667,3 +759,19 @@ #undef UPDATE } + +Bool +GrabIsPointerGrab(GrabPtr grab) +{ + return (grab->type == ButtonPress || + grab->type == DeviceButtonPress || + grab->type == XI_ButtonPress); +} + +Bool +GrabIsKeyboardGrab(GrabPtr grab) +{ + return (grab->type == KeyPress || + grab->type == DeviceKeyPress || + grab->type == XI_KeyPress); +} --- xorg-server-1.11.4.orig/dix/enterleave.c +++ xorg-server-1.11.4/dix/enterleave.c @@ -766,7 +766,7 @@ { WindowPtr P, stopAt; - P = PointerWin(GetPairedDevice(dev)); + P = PointerWin(GetMaster(dev, POINTER_OR_FLOAT)); if (!P) return; @@ -821,7 +821,7 @@ { WindowPtr P; - P = PointerWin(GetPairedDevice(dev)); + P = PointerWin(GetMaster(dev, POINTER_OR_FLOAT)); if (!P || P == exclude || (pwin_parent != P && !IsParent(pwin_parent, P))) return; @@ -1087,7 +1087,7 @@ for (i = 0; i < nscreens; i++) { root = screenInfo.screens[i]->root; - if (!HasOtherPointer(root, GetPairedDevice(dev)) && !FirstFocusChild(root)) + if (!HasOtherPointer(root, GetMaster(dev, POINTER_OR_FLOAT)) && !FirstFocusChild(root)) { /* If pointer was on PointerRootWin and changes to NoneWin, and * the pointer paired with dev is below the current root window, @@ -1095,7 +1095,7 @@ if (dev->focus && dev->focus->win == PointerRootWin && B != PointerRootWin) { - WindowPtr ptrwin = PointerWin(GetPairedDevice(dev)); + WindowPtr ptrwin = PointerWin(GetMaster(dev, POINTER_OR_FLOAT)); if (ptrwin && IsParent(root, ptrwin)) CoreFocusOutNotifyPointerEvents(dev, root, None, mode, TRUE); } @@ -1187,7 +1187,7 @@ if (dev->focus && dev->focus->win == PointerRootWin && B != PointerRootWin) { - WindowPtr ptrwin = PointerWin(GetPairedDevice(dev)); + WindowPtr ptrwin = PointerWin(GetMaster(dev, POINTER_OR_FLOAT)); if (ptrwin) CoreFocusOutNotifyPointerEvents(dev, root, None, mode, TRUE); } @@ -1292,14 +1292,17 @@ NotifyPointer); DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyNonlinear, from); /* next call catches the root too, if the screen changed */ - DeviceFocusOutEvents(dev, from->parent, NullWindow, mode, + DeviceFocusOutEvents(dev, from, NullWindow, mode, NotifyNonlinearVirtual); } /* Notify all the roots */ for (i = 0; i < nscreens; i++) DeviceFocusEvent(dev, XI_FocusIn, mode, in, screenInfo.screens[i]->root); if (to == PointerRootWin) + { DeviceFocusInEvents(dev, GetCurrentRootWindow(dev), sprite->win, mode, NotifyPointer); + DeviceFocusEvent(dev, XI_FocusIn, mode, NotifyPointer, sprite->win); + } } else { @@ -1321,7 +1324,7 @@ if (IsParent(to, from)) { DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyAncestor, from); - DeviceFocusOutEvents(dev, from->parent, to, mode, + DeviceFocusOutEvents(dev, from, to, mode, NotifyVirtual); DeviceFocusEvent(dev, XI_FocusIn, mode, NotifyInferior, to); if ((IsParent(to, sprite->win)) && @@ -1353,7 +1356,7 @@ NotifyPointer); DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyNonlinear, from); if (from->parent != NullWindow) - DeviceFocusOutEvents(dev, from->parent, common, mode, + DeviceFocusOutEvents(dev, from, common, mode, NotifyNonlinearVirtual); if (to->parent != NullWindow) DeviceFocusInEvents(dev, common, to, mode, NotifyNonlinearVirtual); --- xorg-server-1.11.4.orig/dix/touch.c +++ xorg-server-1.11.4/dix/touch.c @@ -0,0 +1,1044 @@ +/* + * Copyright © 2011 Collabra Ltd. + * Copyright © 2011 Red Hat, Inc. + * + * 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. + * + * Author: Daniel Stone + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include "inputstr.h" +#include "scrnintstr.h" +#include "dixgrabs.h" + +#include "eventstr.h" +#include "exevents.h" +#include "exglobals.h" +#include "inpututils.h" +#include "eventconvert.h" +#include "windowstr.h" +#include "mi.h" + +#define TOUCH_HISTORY_SIZE 100 + + +/* If a touch queue resize is needed, the device id's bit is set. */ +static unsigned char resize_waiting[(MAXDEVICES + 7)/8]; + +/** + * Some documentation about touch points: + * The driver submits touch events with it's own (unique) touch point ID. + * The driver may re-use those IDs, the DDX doesn't care. It just passes on + * the data to the DIX. In the server, the driver's ID is referred to as the + * DDX id anyway. + * + * On a TouchBegin, we create a DDXTouchPointInfo that contains the DDX id + * and the client ID that this touchpoint will have. The client ID is the + * one visible on the protocol. + * + * TouchUpdate and TouchEnd will only be processed if there is an active + * touchpoint with the same DDX id. + * + * The DDXTouchPointInfo struct is stored dev->last.touches. When the event + * being processed, it becomes a TouchPointInfo in dev->touch-touches which + * contains amongst other things the sprite trace and delivery information. + */ + +/** + * Check which devices need a bigger touch event queue and grow their + * last.touches by half it's current size. + * + * @param client Always the serverClient + * @param closure Always NULL + * + * @return Always True. If we fail to grow we probably will topple over soon + * anyway and re-executing this won't help. + */ +static Bool +TouchResizeQueue(ClientPtr client, pointer closure) +{ + int i; + + OsBlockSignals(); + + /* first two ids are reserved */ + for (i = 2; i < MAXDEVICES; i++) + { + DeviceIntPtr dev; + DDXTouchPointInfoPtr tmp; + size_t size; + + if (!BitIsOn(resize_waiting, i)) + continue; + + ClearBit(resize_waiting, i); + + /* device may have disappeared by now */ + dixLookupDevice(&dev, i, serverClient, DixWriteAccess); + if (!dev) + continue; + + /* Need to grow the queue means dropping events. Grow sufficiently so we + * don't need to do it often */ + size = dev->last.num_touches + dev->last.num_touches/2 + 1; + + tmp = realloc(dev->last.touches, size * sizeof(*dev->last.touches)); + if (tmp) + { + int i; + dev->last.touches = tmp; + for (i = dev->last.num_touches; i < size; i++) + TouchInitDDXTouchPoint(dev, &dev->last.touches[i]); + dev->last.num_touches = size; + } + + } + OsReleaseSignals(); + + return TRUE; +} + +/** + * Given the DDX-facing ID (which is _not_ DeviceEvent::detail.touch), find the + * associated DDXTouchPointInfoRec. + * + * @param dev The device to create the touch point for + * @param ddx_id Touch id assigned by the driver/ddx + * @param create Create the touchpoint if it cannot be found + */ +DDXTouchPointInfoPtr +TouchFindByDDXID(DeviceIntPtr dev, uint32_t ddx_id, Bool create) +{ + DDXTouchPointInfoPtr ti; + int i; + + if (!dev->touch) + return NULL; + + for (i = 0; i < dev->last.num_touches; i++) + { + ti = &dev->last.touches[i]; + if (ti->active && ti->ddx_id == ddx_id) + return ti; + } + + return create ? TouchBeginDDXTouch(dev, ddx_id) : NULL; +} + +/** + * Given a unique DDX ID for a touchpoint, create a touchpoint record and + * return it. + * + * If no other touch points are active, mark new touchpoint for pointer + * emulation. + * + * Returns NULL on failure (i.e. if another touch with that ID is already active, + * allocation failure). + */ +DDXTouchPointInfoPtr +TouchBeginDDXTouch(DeviceIntPtr dev, uint32_t ddx_id) +{ + static int next_client_id = 1; + int i; + TouchClassPtr t = dev->touch; + DDXTouchPointInfoPtr ti = NULL; + Bool emulate_pointer = (t->mode == XIDirectTouch); + + if (!t) + return NULL; + + /* Look for another active touchpoint with the same DDX ID. DDX + * touchpoints must be unique. */ + if (TouchFindByDDXID(dev, ddx_id, FALSE)) + return NULL; + + for (i = 0; i < dev->last.num_touches; i++) + { + /* Only emulate pointer events on the first touch */ + if (dev->last.touches[i].active) + emulate_pointer = FALSE; + else if (!ti) /* ti is now first non-active touch rec */ + ti = &dev->last.touches[i]; + + if (!emulate_pointer && ti) + break; + } + + if (ti) + { + int client_id; + ti->active = TRUE; + ti->ddx_id = ddx_id; + client_id = next_client_id; + next_client_id++; + if (next_client_id == 0) + next_client_id = 1; + ti->client_id = client_id; + ti->emulate_pointer = emulate_pointer; + return ti; + } + + /* If we get here, then we've run out of touches and we need to drop the + * event (we're inside the SIGIO handler here) schedule a WorkProc to + * grow the queue for us for next time. */ + ErrorF("%s: not enough space for touch events (max %d touchpoints). " + "Dropping this event.\n", dev->name, dev->last.num_touches); + if (!BitIsOn(resize_waiting, dev->id)) { + SetBit(resize_waiting, dev->id); + QueueWorkProc(TouchResizeQueue, serverClient, NULL); + } + + return NULL; +} + +void +TouchEndDDXTouch(DeviceIntPtr dev, DDXTouchPointInfoPtr ti) +{ + TouchClassPtr t = dev->touch; + + if (!t) + return; + + ti->active = FALSE; +} + +void +TouchInitDDXTouchPoint(DeviceIntPtr dev, DDXTouchPointInfoPtr ddxtouch) +{ + memset(ddxtouch, 0, sizeof(*ddxtouch)); + ddxtouch->valuators = valuator_mask_new(dev->valuator->numAxes); +} + + +Bool +TouchInitTouchPoint(TouchClassPtr t, ValuatorClassPtr v, int index) +{ + TouchPointInfoPtr ti; + + if (index >= t->num_touches) + return FALSE; + ti = &t->touches[index]; + + memset(ti, 0, sizeof(*ti)); + + ti->valuators = valuator_mask_new(v->numAxes); + if (!ti->valuators) + return FALSE; + + ti->sprite.spriteTrace = calloc(32, sizeof(*ti->sprite.spriteTrace)); + if (!ti->sprite.spriteTrace) + { + valuator_mask_free(&ti->valuators); + return FALSE; + } + ti->sprite.spriteTraceSize = 32; + ti->sprite.spriteTrace[0] = screenInfo.screens[0]->root; + ti->sprite.hot.pScreen = screenInfo.screens[0]; + ti->sprite.hotPhys.pScreen = screenInfo.screens[0]; + + ti->client_id = -1; + + return TRUE; +} + +void +TouchFreeTouchPoint(DeviceIntPtr device, int index) +{ + TouchPointInfoPtr ti; + + if (!device->touch || index >= device->touch->num_touches) + return; + ti = &device->touch->touches[index]; + + if (ti->active) + TouchEndTouch(device, ti); + + valuator_mask_free(&ti->valuators); + free(ti->sprite.spriteTrace); + ti->sprite.spriteTrace = NULL; + free(ti->listeners); + ti->listeners = NULL; + free(ti->history); + ti->history = NULL; + ti->history_size = 0; + ti->history_elements = 0; +} + +/** + * Given a client-facing ID (e.g. DeviceEvent::detail.touch), find the + * associated TouchPointInfoRec. + */ +TouchPointInfoPtr +TouchFindByClientID(DeviceIntPtr dev, uint32_t client_id) +{ + TouchClassPtr t = dev->touch; + TouchPointInfoPtr ti; + int i; + + if (!t) + return NULL; + + for (i = 0; i < t->num_touches; i++) + { + ti = &t->touches[i]; + if (ti->active && ti->client_id == client_id) + return ti; + } + + return NULL; +} + + +/** + * Given a unique ID for a touchpoint, create a touchpoint record in the + * server. + * + * Returns NULL on failure (i.e. if another touch with that ID is already active, + * allocation failure). + */ +TouchPointInfoPtr +TouchBeginTouch(DeviceIntPtr dev, int sourceid, uint32_t touchid, + Bool emulate_pointer) +{ + int i; + TouchClassPtr t = dev->touch; + TouchPointInfoPtr ti; + void *tmp; + + if (!t) + return NULL; + + /* Look for another active touchpoint with the same client ID. It's + * technically legitimate for a touchpoint to still exist with the same + * ID but only once the 32 bits wrap over and you've used up 4 billion + * touch ids without lifting that one finger off once. In which case + * you deserve a medal or something, but not error handling code. */ + if (TouchFindByClientID(dev, touchid)) + return NULL; + +try_find_touch: + for (i = 0; i < t->num_touches; i++) + { + ti = &t->touches[i]; + if (!ti->active) { + ti->active = TRUE; + ti->client_id = touchid; + ti->sourceid = sourceid; + ti->emulate_pointer = emulate_pointer; + return ti; + } + } + + /* If we get here, then we've run out of touches: enlarge dev->touch and + * try again. */ + tmp = realloc(t->touches, (t->num_touches + 1) * sizeof(*ti)); + if (tmp) + { + t->touches = tmp; + t->num_touches++; + if (TouchInitTouchPoint(t, dev->valuator, t->num_touches - 1)) + goto try_find_touch; + } + + return NULL; +} + +/** + * Releases a touchpoint for use: this must only be called after all events + * related to that touchpoint have been sent and finalised. Called from + * ProcessTouchEvent and friends. Not by you. + */ +void +TouchEndTouch(DeviceIntPtr dev, TouchPointInfoPtr ti) +{ + if (ti->emulate_pointer) + { + GrabPtr grab; + DeviceEvent ev; + memset(&ev, 0, sizeof(ev)); + ev.type = ET_TouchEnd; + ev.detail.button = 1; + ev.touchid = ti->client_id; + ev.flags = TOUCH_POINTER_EMULATED|TOUCH_END; + UpdateDeviceState(dev, &ev); + + if ((grab = dev->deviceGrab.grab)) + { + if (dev->deviceGrab.fromPassiveGrab && + !dev->button->buttonsDown && + !dev->touch->buttonsDown && + GrabIsPointerGrab(grab)) + (*dev->deviceGrab.DeactivateGrab)(dev); + } + } + + ti->active = FALSE; + ti->pending_finish = FALSE; + ti->sprite.spriteTraceGood = 0; + free(ti->listeners); + ti->listeners = NULL; + ti->num_listeners = 0; + ti->num_grabs = 0; + ti->client_id = 0; + + TouchEventHistoryFree(ti); + + valuator_mask_zero(ti->valuators); +} + +/** + * Allocate the event history for this touch pointer. Calling this on a + * touchpoint that already has an event history does nothing but counts as + * as success. + * + * @return TRUE on success, FALSE on allocation errors + */ +Bool +TouchEventHistoryAllocate(TouchPointInfoPtr ti) +{ + if (ti->history) + return TRUE; + + ti->history = calloc(TOUCH_HISTORY_SIZE, sizeof(*ti->history)); + ti->history_elements = 0; + if (ti->history) + ti->history_size = TOUCH_HISTORY_SIZE; + return ti->history != NULL; +} + +void +TouchEventHistoryFree(TouchPointInfoPtr ti) +{ + free(ti->history); + ti->history = NULL; + ti->history_size = 0; + ti->history_elements = 0; +} + +/** + * Store the given event on the event history (if one exists) + * A touch event history consists of one TouchBegin and several TouchUpdate + * events (if applicable) but no TouchEnd event. + * If more than one TouchBegin is pushed onto the stack, the push is + * ignored, calling this function multiple times for the TouchBegin is + * valid. + */ +void +TouchEventHistoryPush(TouchPointInfoPtr ti, const DeviceEvent *ev) +{ + if (!ti->history) + return; + + switch(ev->type) + { + case ET_TouchBegin: + /* don't store the same touchbegin twice */ + if (ti->history_elements > 0) + return; + break; + case ET_TouchUpdate: + break; + case ET_TouchEnd: + return; /* no TouchEnd events in the history */ + default: + return; + } + + /* We only store real events in the history */ + if (ev->flags & (TOUCH_CLIENT_ID|TOUCH_REPLAYING)) + return; + + ti->history[ti->history_elements++] = *ev; + /* FIXME: proper overflow fixes */ + if (ti->history_elements > ti->history_size - 1) + { + ti->history_elements = ti->history_size - 1; + DebugF("source device %d: history size %d overflowing for touch %u\n", + ti->sourceid, ti->history_size, ti->client_id); + } +} + +void +TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource) +{ + InternalEvent *tel = InitEventList(GetMaximumEventsNum()); + ValuatorMask *mask = valuator_mask_new(0); + int i, nev; + int flags; + + if (!ti->history) + return; + + valuator_mask_set_double(mask, 0, ti->history[0].valuators.data[0]); + valuator_mask_set_double(mask, 1, ti->history[0].valuators.data[1]); + + flags = TOUCH_CLIENT_ID|TOUCH_REPLAYING; + if (ti->emulate_pointer) + flags |= TOUCH_POINTER_EMULATED; + /* send fake begin event to next owner */ + nev = GetTouchEvents(tel, dev, ti->client_id, XI_TouchBegin, flags, mask); + for (i = 0; i < nev; i++) + DeliverTouchEvents(dev, ti, tel + i, resource); + + valuator_mask_free(&mask); + FreeEventList(tel, GetMaximumEventsNum()); + + /* First event was TouchBegin, already replayed that one */ + for (i = 1; i < ti->history_elements; i++) + { + DeviceEvent *ev = &ti->history[i]; + ev->flags |= TOUCH_REPLAYING; + DeliverTouchEvents(dev, ti, (InternalEvent*)ev, resource); + } +} + +Bool +TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite) +{ + int i; + TouchClassPtr t = dev->touch; + WindowPtr *trace; + SpritePtr srcsprite; + + /* All touches should have the same sprite trace, so find and reuse an + * existing touch's sprite if possible, else use the device's sprite. */ + for (i = 0; i < t->num_touches; i++) + if (!t->touches[i].pending_finish && + t->touches[i].sprite.spriteTraceGood > 0) + break; + if (i < t->num_touches) + srcsprite = &t->touches[i].sprite; + else if (dev->spriteInfo->sprite) + srcsprite = dev->spriteInfo->sprite; + else + return FALSE; + + if (srcsprite->spriteTraceGood > sprite->spriteTraceSize) + { + trace = realloc(sprite->spriteTrace, + srcsprite->spriteTraceSize * sizeof(*trace)); + if (!trace) + { + sprite->spriteTraceGood = 0; + return FALSE; + } + sprite->spriteTrace = trace; + sprite->spriteTraceSize = srcsprite->spriteTraceGood; + } + memcpy(sprite->spriteTrace, srcsprite->spriteTrace, + srcsprite->spriteTraceGood * sizeof(*trace)); + sprite->spriteTraceGood = srcsprite->spriteTraceGood; + + return TRUE; +} + +/** + * Ensure a window trace is present in ti->sprite, constructing one for + * TouchBegin events. + */ +Bool +TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, + InternalEvent *ev) +{ + TouchClassPtr t = sourcedev->touch; + SpritePtr sprite = &ti->sprite; + + /* We may not have a sprite if there are no applicable grabs or + * event selections, or if they've disappeared, or if all the grab + * owners have rejected the touch. Don't bother delivering motion + * events if not, but TouchEnd events still need to be processed so + * we can call FinishTouchPoint and release it for later use. */ + if (ev->any.type == ET_TouchEnd) + return TRUE; + else if (ev->any.type != ET_TouchBegin) + return (sprite->spriteTraceGood > 0); + + if (t->mode == XIDirectTouch) + { + /* Focus immediately under the touchpoint in direct touch mode. + * XXX: Do we need to handle crossing screens here? */ + sprite->spriteTrace[0] = + sourcedev->spriteInfo->sprite->hotPhys.pScreen->root; + XYToWindow(sprite, ev->device_event.root_x, ev->device_event.root_y); + } + else if (!TouchBuildDependentSpriteTrace(sourcedev, sprite)) + return FALSE; + + if (sprite->spriteTraceGood <= 0) + return FALSE; + + /* Mark which grabs/event selections we're delivering to: max one grab per + * window plus the bottom-most event selection. */ + ti->listeners = calloc(sprite->spriteTraceGood + 1, sizeof(*ti->listeners)); + if (!ti->listeners) + { + sprite->spriteTraceGood = 0; + return FALSE; + } + ti->num_listeners = 0; + + return TRUE; +} + +/** + * Copy the touch event into the pointer_event, switching the required + * fields to make it a correct pointer event. + * + * @param event The original touch event + * @param[in] motion_event The respective motion event + * @param[in] button_event The respective button event (if any) + * + * @returns The number of converted events. + * @retval 0 An error occured + * @retval 1 only the motion event is valid + * @retval 2 motion and button event are valid + */ +int +TouchConvertToPointerEvent(const InternalEvent *event, + InternalEvent *motion_event, + InternalEvent *button_event) +{ + int ptrtype; + int nevents = 0; + + BUG_WARN(!event); + BUG_WARN(!motion_event); + + switch(event->any.type) + { + case ET_TouchUpdate: + nevents = 1; + break; + case ET_TouchBegin: + nevents = 2; /* motion + press */ + ptrtype = ET_ButtonPress; + break; + case ET_TouchEnd: + nevents = 2; /* motion + release */ + ptrtype = ET_ButtonRelease; + break; + default: + BUG_WARN_MSG(1,"Invalid event type %d\n", event->any.type); + return 0; + } + + BUG_WARN_MSG(!(event->device_event.flags & TOUCH_POINTER_EMULATED), + "Non-emulating touch event\n"); + + *motion_event = *event; + motion_event->any.type = ET_Motion; + motion_event->device_event.detail.button = 0; + motion_event->device_event.flags = XIPointerEmulated; + + if (nevents > 1) + { + BUG_WARN(!button_event); + *button_event = *event; + button_event->any.type = ptrtype; + button_event->device_event.flags = XIPointerEmulated; + /* detail is already correct */ + } + + return nevents; +} + +/** + * Return the corresponding pointer emulation internal event type for the given + * touch event or 0 if no such event type exists. + */ +int +TouchGetPointerEventType(const InternalEvent *event) +{ + int type = 0; + + switch(event->any.type) + { + case ET_TouchBegin: type = ET_ButtonPress; break; + case ET_TouchUpdate: type = ET_Motion; break; + case ET_TouchEnd: type = ET_ButtonRelease; break; + default: + break; + } + return type; +} + + +/** + * @returns TRUE if the specified grab or selection is the current owner of + * the touch sequence. + */ +Bool +TouchResourceIsOwner(TouchPointInfoPtr ti, XID resource) +{ + return (ti->listeners[0].listener == resource); +} + +/** + * Add the resource to this touch's listeners. + */ +void +TouchAddListener(TouchPointInfoPtr ti, XID resource, enum InputLevel level, + enum TouchListenerType type, enum TouchListenerState state, + WindowPtr window) +{ + ti->listeners[ti->num_listeners].listener = resource; + ti->listeners[ti->num_listeners].level = level; + ti->listeners[ti->num_listeners].state = state; + ti->listeners[ti->num_listeners].type = type; + ti->listeners[ti->num_listeners].window = window; + ti->num_listeners++; +} + +/** + * Remove the resource from this touch's listeners. + * + * @return TRUE if the resource was removed, FALSE if the resource was not + * in the list + */ +Bool +TouchRemoveListener(TouchPointInfoPtr ti, XID resource) +{ + int i; + for (i = 0; i < ti->num_listeners; i++) + { + if (ti->listeners[i].listener == resource) + { + int j; + for (j = i; j< ti->num_listeners - 1; j++) + ti->listeners[j] = ti->listeners[j + 1]; + ti->num_listeners--; + ti->listeners[ti->num_listeners].listener = 0; + ti->listeners[ti->num_listeners].state = LISTENER_AWAITING_BEGIN; + return TRUE; + } + } + return FALSE; +} + +static void +TouchAddGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev, GrabPtr grab) +{ + enum TouchListenerType type = LISTENER_GRAB; + + /* FIXME: owner_events */ + + if (grab->grabtype == XI2) + { + if (!xi2mask_isset(grab->xi2mask, dev, XI_TouchOwnership)) + TouchEventHistoryAllocate(ti); + if (!xi2mask_isset(grab->xi2mask, dev, XI_TouchBegin)) + type = LISTENER_POINTER_GRAB; + } else if (grab->grabtype == XI || grab->grabtype == CORE) + { + TouchEventHistoryAllocate(ti); + type = LISTENER_POINTER_GRAB; + } + + TouchAddListener(ti, grab->resource, grab->grabtype, + type, LISTENER_AWAITING_BEGIN, grab->window); + ti->num_grabs++; +} + +/** + * Add one listener if there is a grab on the given window. + */ +static void +TouchAddPassiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + WindowPtr win, InternalEvent *ev) +{ + GrabPtr grab; + Bool check_core = IsMaster(dev) && ti->emulate_pointer; + + /* FIXME: make CheckPassiveGrabsOnWindow only trigger on TouchBegin */ + grab = CheckPassiveGrabsOnWindow(win, dev, ev, check_core, FALSE); + if (!grab) + return; + + TouchAddGrabListener(dev, ti, ev, grab); +} + +static Bool +TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + WindowPtr win, InternalEvent *ev) +{ + InputClients *iclients = NULL; + OtherInputMasks *inputMasks = NULL; + uint16_t evtype = 0; /* may be event type or emulated event type */ + enum TouchListenerType type = LISTENER_REGULAR; + int mask; + + evtype = GetXI2Type(ev->any.type); + mask = EventIsDeliverable(dev, ev->any.type, win); + if (!mask && !ti->emulate_pointer) + return FALSE; + else if (!mask)/* now try for pointer event */ + { + mask = EventIsDeliverable(dev, TouchGetPointerEventType(ev), win); + if (mask) + { + evtype = GetXI2Type(TouchGetPointerEventType(ev)); + type = LISTENER_POINTER_REGULAR; + } + } + if (!mask) + return FALSE; + + inputMasks = wOtherInputMasks(win); + + if (mask & EVENT_XI2_MASK) + { + nt_list_for_each_entry(iclients, inputMasks->inputClients, next) + { + if (!xi2mask_isset(iclients->xi2mask, dev, evtype)) + continue; + + if (!xi2mask_isset(iclients->xi2mask, dev, XI_TouchOwnership)) + TouchEventHistoryAllocate(ti); + + TouchAddListener(ti, iclients->resource, XI2, + type, LISTENER_AWAITING_BEGIN, win); + return TRUE; + } + } + + if (mask & EVENT_XI1_MASK) + { + int xitype = GetXIType(TouchGetPointerEventType(ev)); + Mask xi_filter = event_get_filter_from_type(dev, xitype); + nt_list_for_each_entry(iclients, inputMasks->inputClients, next) + { + if (!(iclients->mask[dev->id] & xi_filter)) + continue; + + TouchEventHistoryAllocate(ti); + TouchAddListener(ti, iclients->resource, XI, + LISTENER_POINTER_REGULAR, LISTENER_AWAITING_BEGIN, + win); + return TRUE; + } + } + + if (mask & EVENT_CORE_MASK) + { + int coretype = GetCoreType(TouchGetPointerEventType(ev)); + Mask core_filter = event_get_filter_from_type(dev, coretype); + + /* window owner */ + if (IsMaster(dev) && (win->eventMask & core_filter)) + { + TouchEventHistoryAllocate(ti); + TouchAddListener(ti, win->drawable.id, CORE, + LISTENER_POINTER_REGULAR, LISTENER_AWAITING_BEGIN, + win); + return TRUE; + } + + /* all others */ + nt_list_for_each_entry(iclients, (InputClients*)wOtherClients(win), next) + { + if (!(iclients->mask[XIAllDevices] & core_filter)) + continue; + + TouchEventHistoryAllocate(ti); + TouchAddListener(ti, iclients->resource, CORE, + type, LISTENER_AWAITING_BEGIN, win); + return TRUE; + } + } + + return FALSE; +} + +static void +TouchAddActiveGrabListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + InternalEvent *ev, GrabPtr grab) +{ + if (!ti->emulate_pointer && + (grab->grabtype == CORE || grab->grabtype == XI)) + return; + + if (!ti->emulate_pointer && + grab->grabtype == XI2 && + (grab->type != XI_TouchBegin && grab->type != XI_TouchEnd && grab->type != XI_TouchUpdate)) + return; + + TouchAddGrabListener(dev, ti, ev, grab); +} + +void +TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev) +{ + int i; + SpritePtr sprite = &ti->sprite; + WindowPtr win; + + if (dev->deviceGrab.grab) + TouchAddActiveGrabListener(dev, ti, ev, dev->deviceGrab.grab); + + /* First, find all grabbing clients from the root window down + * to the deepest child window. */ + for (i = 0; i < sprite->spriteTraceGood; i++) + { + win = sprite->spriteTrace[i]; + TouchAddPassiveGrabListener(dev, ti, win, ev); + } + + /* Find the first client with an applicable event selection, + * going from deepest child window back up to the root window. */ + for (i = sprite->spriteTraceGood - 1; i >= 0; i--) + { + Bool delivered; + + win = sprite->spriteTrace[i]; + delivered = TouchAddRegularListener(dev, ti, win, ev); + if (delivered) + return; + } +} + +/** + * Remove the touch pointer grab from the device. Called from AllowSome() + */ +void +TouchRemovePointerGrab(DeviceIntPtr dev) +{ + TouchPointInfoPtr ti; + GrabPtr grab; + DeviceEvent *ev; + + if (!dev->touch) + return; + + grab = dev->deviceGrab.grab; + if (!grab) + return; + + ev = dev->deviceGrab.sync.event; + if (!IsTouchEvent((InternalEvent*)ev)) + return; + + ti = TouchFindByClientID(dev, ev->touchid); + if (!ti) + return; +} + +/* As touch grabs don't turn into active grabs with their own resources, we + * need to walk all the touches and remove this grab from any delivery + * lists. */ +void +TouchListenerGone(XID resource) +{ + TouchPointInfoPtr ti; + DeviceIntPtr dev; + InternalEvent *events = InitEventList(GetMaximumEventsNum()); + int i, j, k, nev; + + if (!events) + FatalError("TouchListenerGone: couldn't allocate events\n"); + + for (dev = inputInfo.devices; dev; dev = dev->next) + { + if (!dev->touch) + continue; + + for (i = 0; i < dev->touch->num_touches; i++) + { + ti = &dev->touch->touches[i]; + if (!ti->active) + continue; + + for (j = 0; j < ti->num_listeners; j++) + { + if (ti->listeners[j].listener != resource) + continue; + + nev = GetTouchOwnershipEvents(events, dev, ti, XIRejectTouch, + resource, 0); + for (k = 0; k < nev; k++) + mieqProcessDeviceEvent(dev, events + k, NULL); + + break; + } + } + } + + FreeEventList(events, GetMaximumEventsNum()); +} + +int +TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, + uint32_t touchid, Window grab_window, XID *error) +{ + TouchPointInfoPtr ti; + int nev, i; + InternalEvent *events = InitEventList(GetMaximumEventsNum()); + + if (!events) + return BadAlloc; + + if (!dev->touch) + { + *error = dev->id; + return BadDevice; + } + + ti = TouchFindByClientID(dev, touchid); + if (!ti) + { + *error = touchid; + return BadValue; + } + + for (i = 0; i < ti->num_listeners; i++) + { + if (CLIENT_ID(ti->listeners[i].listener) == client->index && + ti->listeners[i].window->drawable.id == grab_window) + break; + } + if (i == ti->num_listeners) + return BadAccess; + + if (i > 0) + { + if (mode == XIRejectTouch) + TouchRejected(dev, ti, ti->listeners[i].listener, NULL); + else + ti->listeners[i].state = LISTENER_EARLY_ACCEPT; + + return Success; + } + + nev = GetTouchOwnershipEvents(events, dev, ti, mode, + ti->listeners[0].listener, 0); + if (nev == 0) + return BadAlloc; + for (i = 0; i < nev; i++) + mieqProcessDeviceEvent(dev, events + i, NULL); + + ProcessInputEvents(); + + FreeEventList(events, GetMaximumEventsNum()); + return Success; +} --- xorg-server-1.11.4.orig/dix/Makefile.am +++ xorg-server-1.11.4/dix/Makefile.am @@ -39,6 +39,7 @@ swaprep.c \ swapreq.c \ tables.c \ + touch.c \ window.c EXTRA_DIST = buildatoms BuiltInAtoms Xserver.d Xserver-dtrace.h.in --- xorg-server-1.11.4.orig/dix/events.c +++ xorg-server-1.11.4/dix/events.c @@ -152,6 +152,7 @@ #include "eventstr.h" #include "enterleave.h" #include "eventconvert.h" +#include "mi.h" /* Extension events type numbering starts at EXTENSION_EVENT_BASE. */ #define NoSuchEvent 0x80000000 /* so doesn't match NoEventMask */ @@ -190,7 +191,7 @@ static inline int xi2_get_type(const xEvent *event) { - xGenericEvent* e = (xGenericEvent*)event; + const xGenericEvent* e = (const xGenericEvent*)event; return (e->type != GenericEvent || e->extension != IReqCode) ? 0 : e->evtype; } @@ -367,9 +368,9 @@ * time a button is pressed, the filter is modified to also contain the * matching ButtonXMotion mask. */ -static Mask filters[MAXDEVICES][128]; +Mask event_filters[MAXDEVICES][MAXEVENTS]; -static const Mask default_filter[128] = +static const Mask default_filter[MAXEVENTS] = { NoSuchEvent, /* 0 */ NoSuchEvent, /* 1 */ @@ -429,32 +430,46 @@ int evtype = 0; if (event->u.u.type != GenericEvent) - return filters[dev ? dev->id : 0][event->u.u.type]; + return event_get_filter_from_type(dev, event->u.u.type); else if ((evtype = xi2_get_type(event))) - return (1 << (evtype % 8)); + return event_get_filter_from_xi2type(evtype); ErrorF("[dix] Unknown event type %d. No filter\n", event->u.u.type); return 0; } /** - * Return the windows complete XI2 mask for the given XI2 event type. + * Return the single byte of the device's XI2 mask that contains the mask + * for the event_type. */ -Mask -GetWindowXI2Mask(DeviceIntPtr dev, WindowPtr win, xEvent* ev) +int +GetXI2MaskByte(XI2Mask *mask, DeviceIntPtr dev, int event_type) +{ + /* we just return the matching filter because that's the only use + * for this mask anyway. + */ + if (xi2mask_isset(mask, dev, event_type)) + return event_get_filter_from_xi2type(event_type); + else + return 0; +} + + +/** + * @return TRUE if the mask is set for this event from this device on the + * window, or FALSE otherwise. + */ +Bool +WindowXI2MaskIsset(DeviceIntPtr dev, WindowPtr win, xEvent* ev) { OtherInputMasks *inputMasks = wOtherInputMasks(win); - int filter; int evtype; if (!inputMasks || xi2_get_type(ev) == 0) return 0; evtype = ((xGenericEvent*)ev)->evtype; - filter = GetEventFilter(dev, ev); - return ((inputMasks->xi2mask[dev->id][evtype/8] & filter) || - inputMasks->xi2mask[XIAllDevices][evtype/8] || - (inputMasks->xi2mask[XIAllMasterDevices][evtype/8] && IsMaster(dev))); + return xi2mask_isset(inputMasks->xi2mask, dev, evtype); } Mask @@ -465,10 +480,7 @@ /* XI2 filters are only ever 8 bit, so let's return a 8 bit mask */ if ((evtype = xi2_get_type(event))) { - int byte = evtype / 8; - return (other->xi2mask[dev->id][byte] | - other->xi2mask[XIAllDevices][byte] | - (IsMaster(dev)? other->xi2mask[XIAllMasterDevices][byte] : 0)); + return GetXI2MaskByte(other->xi2mask, dev, evtype); } else if (core_get_type(event) != 0) return other->mask[XIAllDevices]; else @@ -498,13 +510,6 @@ static void PostNewCursor(DeviceIntPtr pDev); static Bool -pointOnScreen(ScreenPtr pScreen, int x, int y) -{ - return x >= pScreen->x && x < pScreen->x + pScreen->width && - y >= pScreen->y && y < pScreen->y + pScreen->height; -} - -static Bool XineramaSetCursorPosition( DeviceIntPtr pDev, int x, @@ -523,13 +528,13 @@ x += screenInfo.screens[0]->x; y += screenInfo.screens[0]->y; - if(!pointOnScreen(pScreen, x, y)) + if(!point_on_screen(pScreen, x, y)) { FOR_NSCREENS(i) { if(i == pScreen->myNum) continue; - if(pointOnScreen(screenInfo.screens[i], x, y)) + if(point_on_screen(screenInfo.screens[i], x, y)) { pScreen = screenInfo.screens[i]; break; @@ -663,13 +668,13 @@ { if (deviceid < 0 || deviceid >= MAXDEVICES) FatalError("SetMaskForEvent: bogus device id"); - filters[deviceid][event] = mask; + event_filters[deviceid][event] = mask; } void SetCriticalEvent(int event) { - if (event >= 128) + if (event >= MAXEVENTS) FatalError("SetCriticalEvent: bogus event number"); criticalEvents[event >> 3] |= 1 << (event & 7); } @@ -680,9 +685,7 @@ BoxRec box; int x = *px, y = *py; int incx = 1, incy = 1; - SpritePtr pSprite; - pSprite = pDev->spriteInfo->sprite; if (RegionContainsPoint(shape, x, y, &box)) return; box = *RegionExtents(shape); @@ -1113,12 +1116,15 @@ void EnqueueEvent(InternalEvent *ev, DeviceIntPtr device) { - QdEventPtr tail = *syncEvents.pendtail; + QdEventPtr tail = NULL; QdEventPtr qe; SpritePtr pSprite = device->spriteInfo->sprite; int eventlen; DeviceEvent *event = &ev->device_event; + if (!list_is_empty(&syncEvents.pending)) + tail = list_last_entry(&syncEvents.pending, QdEventRec, next); + NoticeTime((InternalEvent*)event); /* Fix for key repeating bug. */ @@ -1177,15 +1183,13 @@ qe = malloc(sizeof(QdEventRec) + eventlen); if (!qe) return; - qe->next = (QdEventPtr)NULL; + list_init(&qe->next); qe->device = device; qe->pScreen = pSprite->hotPhys.pScreen; qe->months = currentTime.months; qe->event = (InternalEvent *)(qe + 1); memcpy(qe->event, event, eventlen); - if (tail) - syncEvents.pendtail = &tail->next; - *syncEvents.pendtail = qe; + list_append(&qe->next, &syncEvents.pending); } /** @@ -1197,22 +1201,20 @@ * If there is none, we're done. If there is at least one device that is not * frozen, then re-run from the beginning of the event queue. */ -static void +void PlayReleasedEvents(void) { - QdEventPtr *prev, qe; + QdEventPtr tmp; + QdEventPtr qe; DeviceIntPtr dev; DeviceIntPtr pDev; - prev = &syncEvents.pending; - while ( (qe = *prev) ) - { +restart: + list_for_each_entry_safe(qe, tmp, &syncEvents.pending, next) { if (!qe->device->deviceGrab.sync.frozen) { - *prev = qe->next; - pDev = qe->device; - if (*syncEvents.pendtail == *prev) - syncEvents.pendtail = prev; + list_del(&qe->next); + pDev = qe->device; if (qe->event->any.type == ET_Motion) CheckVirtualMotion(pDev, qe, NullWindow); syncEvents.time.months = qe->months; @@ -1249,12 +1251,11 @@ ; if (!dev) break; + /* Playing the event may have unfrozen another device. */ /* So to play it safe, restart at the head of the queue */ - prev = &syncEvents.pending; + goto restart; } - else - prev = &qe->next; } } @@ -1295,7 +1296,8 @@ for (dev = inputInfo.devices; dev; dev = dev->next) FreezeThaw(dev, dev->deviceGrab.sync.other || (dev->deviceGrab.sync.state >= FROZEN)); - if (syncEvents.playingEvents || (!replayDev && !syncEvents.pending)) + if (syncEvents.playingEvents || + (!replayDev && list_is_empty(&syncEvents.pending))) return; syncEvents.playingEvents = TRUE; if (replayDev) @@ -1308,7 +1310,17 @@ event->root_x, event->root_y); if (!CheckDeviceGrabs(replayDev, event, syncEvents.replayWin)) { - if (replayDev->focus && !IsPointerEvent((InternalEvent*)event)) + if (IsTouchEvent((InternalEvent*)event)) + { + InternalEvent *events = InitEventList(GetMaximumEventsNum()); + int i, nev; + TouchPointInfoPtr ti = TouchFindByClientID(replayDev, event->touchid); + BUG_WARN(!ti); + nev = GetTouchOwnershipEvents(events, replayDev, ti, XIRejectTouch, ti->listeners[0].listener, 0); + for (i = 0; i < nev; i++) + mieqProcessDeviceEvent(replayDev, events + i, NULL); + ProcessInputEvents(); + } else if (replayDev->focus && !IsPointerEvent((InternalEvent*)event)) DeliverFocusedEvent(replayDev, (InternalEvent*)event, w); else DeliverDeviceEvents(w, (InternalEvent*)event, NullGrab, @@ -1472,7 +1484,7 @@ Bool isPassive = autoGrab & ~ImplicitGrabMask; /* slave devices need to float for the duration of the grab. */ - if (grab->grabtype == GRABTYPE_XI2 && + if (grab->grabtype == XI2 && !(autoGrab & ImplicitGrabMask) && !IsMaster(mouse)) DetachFromMaster(mouse); @@ -1492,8 +1504,8 @@ grabinfo->grabTime = time; if (grab->cursor) grab->cursor->refcnt++; - grabinfo->activeGrab = *grab; - grabinfo->grab = &grabinfo->activeGrab; + CopyGrab(grabinfo->activeGrab, grab); + grabinfo->grab = grabinfo->activeGrab; grabinfo->fromPassiveGrab = isPassive; grabinfo->implicitGrab = autoGrab & ImplicitGrabMask; PostNewCursor(mouse); @@ -1513,6 +1525,8 @@ Bool wasImplicit = (mouse->deviceGrab.fromPassiveGrab && mouse->deviceGrab.implicitGrab); + TouchRemovePointerGrab(mouse); + mouse->valuator->motionHintWindow = NullWindow; mouse->deviceGrab.grab = NullGrab; mouse->deviceGrab.sync.state = NOT_GRABBED; @@ -1531,7 +1545,7 @@ if (grab->cursor) FreeCursor(grab->cursor, (Cursor)0); - if (!wasImplicit && grab->grabtype == GRABTYPE_XI2) + if (!wasImplicit && grab->grabtype == XI2) ReattachToOldMaster(mouse); ComputeFreezes(); @@ -1549,7 +1563,7 @@ WindowPtr oldWin; /* slave devices need to float for the duration of the grab. */ - if (grab->grabtype == GRABTYPE_XI2 && + if (grab->grabtype == XI2 && !(passive & ImplicitGrabMask) && !IsMaster(keybd)) DetachFromMaster(keybd); @@ -1569,8 +1583,8 @@ grabinfo->grabTime = syncEvents.time; else grabinfo->grabTime = time; - grabinfo->activeGrab = *grab; - grabinfo->grab = &grabinfo->activeGrab; + CopyGrab(grabinfo->activeGrab, grab); + grabinfo->grab = grabinfo->activeGrab; grabinfo->fromPassiveGrab = passive; grabinfo->implicitGrab = passive & ImplicitGrabMask; CheckGrabForSyncs(keybd, (Bool)grab->keyboardMode, (Bool)grab->pointerMode); @@ -1604,7 +1618,7 @@ } DoFocusEvents(keybd, grab->window, focusWin, NotifyUngrab); - if (!wasImplicit && grab->grabtype == GRABTYPE_XI2) + if (!wasImplicit && grab->grabtype == XI2) ReattachToOldMaster(keybd); ComputeFreezes(); @@ -1959,54 +1973,49 @@ ActivateImplicitGrab(DeviceIntPtr dev, ClientPtr client, WindowPtr win, xEvent *event, Mask deliveryMask) { - GrabRec tempGrab; + GrabPtr tempGrab; OtherInputMasks *inputMasks; CARD8 type = event->u.u.type; - GrabType grabtype; + enum InputLevel grabtype; if (type == ButtonPress) - grabtype = GRABTYPE_CORE; + grabtype = CORE; else if (type == DeviceButtonPress) - grabtype = GRABTYPE_XI; + grabtype = XI; else if ((type = xi2_get_type(event)) == XI_ButtonPress) - grabtype = GRABTYPE_XI2; + grabtype = XI2; else return FALSE; - memset(&tempGrab, 0, sizeof(GrabRec)); - tempGrab.next = NULL; - tempGrab.device = dev; - tempGrab.resource = client->clientAsMask; - tempGrab.window = win; - tempGrab.ownerEvents = (deliveryMask & OwnerGrabButtonMask) ? TRUE : FALSE; - tempGrab.eventMask = deliveryMask; - tempGrab.keyboardMode = GrabModeAsync; - tempGrab.pointerMode = GrabModeAsync; - tempGrab.confineTo = NullWindow; - tempGrab.cursor = NullCursor; - tempGrab.type = type; - tempGrab.grabtype = grabtype; + tempGrab = AllocGrab(); + if (!tempGrab) + return FALSE; + tempGrab->next = NULL; + tempGrab->device = dev; + tempGrab->resource = client->clientAsMask; + tempGrab->window = win; + tempGrab->ownerEvents = (deliveryMask & OwnerGrabButtonMask) ? TRUE : FALSE; + tempGrab->eventMask = deliveryMask; + tempGrab->keyboardMode = GrabModeAsync; + tempGrab->pointerMode = GrabModeAsync; + tempGrab->confineTo = NullWindow; + tempGrab->cursor = NullCursor; + tempGrab->type = type; + tempGrab->grabtype = grabtype; /* get the XI and XI2 device mask */ inputMasks = wOtherInputMasks(win); - tempGrab.deviceMask = (inputMasks) ? inputMasks->inputEvents[dev->id]: 0; + tempGrab->deviceMask = (inputMasks) ? inputMasks->inputEvents[dev->id]: 0; if (inputMasks) - memcpy(tempGrab.xi2mask, inputMasks->xi2mask, - sizeof(tempGrab.xi2mask)); + xi2mask_merge(tempGrab->xi2mask, inputMasks->xi2mask); - (*dev->deviceGrab.ActivateGrab)(dev, &tempGrab, + (*dev->deviceGrab.ActivateGrab)(dev, tempGrab, currentTime, TRUE | ImplicitGrabMask); + FreeGrab(tempGrab); return TRUE; } -enum EventDeliveryState { - EVENT_DELIVERED, /**< Event has been delivered to a client */ - EVENT_NOT_DELIVERED, /**< Event was not delivered to any client */ - EVENT_SKIP, /**< Event can be discarded by the caller */ - EVENT_REJECTED, /**< Event was rejected for delivery to the client */ -}; - /** * Attempt event delivery to the client owning the window. */ @@ -2057,7 +2066,7 @@ { OtherInputMasks *inputMasks = wOtherInputMasks(win); /* Has any client selected for the event? */ - if (!GetWindowXI2Mask(dev, win, events)) + if (!WindowXI2MaskIsset(dev, win, events)) goto out; *clients = inputMasks->inputClients; } else { @@ -2243,33 +2252,93 @@ return nondeliveries; } +/** + * Filter out raw events for XI 2.0 and XI 2.1 clients. + * + * If there is a grab on the device, 2.0 clients only get raw events if they + * have the grab. 2.1+ clients get raw events in all cases. + * + * @return TRUE if the event should be discarded, FALSE otherwise. + */ +static BOOL +FilterRawEvents(const ClientPtr client, const GrabPtr grab) +{ + XIClientPtr client_xi_version; + int cmp; + + /* device not grabbed -> don't filter */ + if (!grab) + return FALSE; + + client_xi_version = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey); + + cmp = version_compare(client_xi_version->major_version, + client_xi_version->minor_version, 2, 0); + /* XI 2.0: if device is grabbed, skip + XI 2.1: if device is grabbed by us, skip, we've already delivered */ + return (cmp == 0) ? TRUE : SameClient(grab, client); +} + +/** + * Deliver a raw event to the grab owner (if any) and to all root windows. + * + * Raw event delivery differs between XI 2.0 and XI 2.1. + * XI 2.0: events delivered to the grabbing client (if any) OR to all root + * windows + * XI 2.1: events delivered to all root windows, regardless of grabbing + * state. + */ void DeliverRawEvent(RawDeviceEvent *ev, DeviceIntPtr device) { GrabPtr grab = device->deviceGrab.grab; + xEvent *xi; + int i, rc; + int filter; + + rc = EventToXI2((InternalEvent*)ev, (xEvent**)&xi); + if (rc != Success) + { + ErrorF("[Xi] %s: XI2 conversion failed in %s (%d)\n", + __func__, device->name, rc); + return; + } if (grab) DeliverGrabbedEvent((InternalEvent*)ev, device, FALSE); - else { /* deliver to all root windows */ - xEvent *xi; - int i; - int filter; - i = EventToXI2((InternalEvent*)ev, (xEvent**)&xi); - if (i != Success) - { - ErrorF("[Xi] %s: XI2 conversion failed in %s (%d)\n", - __func__, device->name, i); - return; - } + filter = GetEventFilter(device, xi); + + for (i = 0; i < screenInfo.numScreens; i++) + { + WindowPtr root; + InputClients *inputclients; - filter = GetEventFilter(device, xi); + root = screenInfo.screens[i]->root; + if (!GetClientsForDelivery(device, root, xi, filter, &inputclients)) + continue; - for (i = 0; i < screenInfo.numScreens; i++) - DeliverEventsToWindow(device, screenInfo.screens[i]->root, xi, 1, - filter, NullGrab); - free(xi); + for (; inputclients; inputclients = inputclients->next) + { + ClientPtr c; /* unused */ + Mask m; /* unused */ + InputClients ic = *inputclients; + + /* Because we run through the list manually, copy the actual + * list, shorten the copy to only have one client and then pass + * that down to DeliverEventToInputClients. This way we avoid + * double events on XI 2.1 clients that have a grab on the + * device. + */ + ic.next = NULL; + + if (!FilterRawEvents(rClient(&ic), grab)) + DeliverEventToInputClients(device, &ic, root, xi, 1, + filter, NULL, &c, &m); + } } + + free(xi); } /* If the event goes to dontClient, don't send it and return 0. if @@ -2408,6 +2477,9 @@ case XI_RawButtonPress: case XI_RawButtonRelease: case XI_RawMotion: + case XI_RawTouchBegin: + case XI_RawTouchUpdate: + case XI_RawTouchEnd: case XI_DeviceChanged: case XI_HierarchyChanged: case XI_PropertyEvent: @@ -2418,6 +2490,13 @@ event->root = RootWindow(pSprite)->drawable.id; event->event = pWin->drawable.id; + + if (evtype == XI_TouchOwnership) + { + event->child = child; + return; + } + if (pSprite->hot.pScreen == pWin->drawable.pScreen) { event->event_x = event->root_x - FP1616(pWin->drawable.x, 0); @@ -2465,61 +2544,110 @@ * client. * * @param[in] dev The device this event is being sent for. - * @param[in] event The event that is to be sent. + * @param[in] evtype The event type of the event that is to be sent. * @param[in] win The current event window. * * @return Bitmask of ::EVENT_XI2_MASK, ::EVENT_XI1_MASK, ::EVENT_CORE_MASK, and * ::EVENT_DONT_PROPAGATE_MASK. */ int -EventIsDeliverable(DeviceIntPtr dev, InternalEvent* event, WindowPtr win) +EventIsDeliverable(DeviceIntPtr dev, int evtype, WindowPtr win) { int rc = 0; int filter = 0; int type; OtherInputMasks *inputMasks = wOtherInputMasks(win); - xEvent ev; - /* XXX: this makes me gag */ - type = GetXI2Type(event); - ev.u.u.type = GenericEvent; /* GetEventFilter only cares about type and evtype*/ - ((xGenericEvent*)&ev)->extension = IReqCode; - ((xGenericEvent*)&ev)->evtype = type; - filter = GetEventFilter(dev, &ev); - if (type && inputMasks && - ((inputMasks->xi2mask[XIAllDevices][type/8] & filter) || - ((inputMasks->xi2mask[XIAllMasterDevices][type/8] & filter) && IsMaster(dev)) || - (inputMasks->xi2mask[dev->id][type/8] & filter))) - rc |= EVENT_XI2_MASK; - - type = GetXIType(event); - ev.u.u.type = type; - filter = GetEventFilter(dev, &ev); - - /* Check for XI mask */ - if (type && inputMasks && - (inputMasks->deliverableEvents[dev->id] & filter) && - (inputMasks->inputEvents[dev->id] & filter)) - rc |= EVENT_XI1_MASK; - - /* Check for XI DontPropagate mask */ - if (type && inputMasks && - (inputMasks->dontPropagateMask[dev->id] & filter)) - rc |= EVENT_DONT_PROPAGATE_MASK; - - /* Check for core mask */ - type = GetCoreType(event); - if (type && (win->deliverableEvents & filter) && - ((wOtherEventMasks(win) | win->eventMask) & filter)) - rc |= EVENT_CORE_MASK; - - /* Check for core DontPropagate mask */ - if (type && (filter & wDontPropagateMask(win))) - rc |= EVENT_DONT_PROPAGATE_MASK; + if ((type = GetXI2Type(evtype)) != 0) + { + if (inputMasks && xi2mask_isset(inputMasks->xi2mask, dev, type)) + rc |= EVENT_XI2_MASK; + } + + if ((type = GetXIType(evtype)) != 0) + { + filter = event_get_filter_from_type(dev, type); + + /* Check for XI mask */ + if (inputMasks && + (inputMasks->deliverableEvents[dev->id] & filter) && + (inputMasks->inputEvents[dev->id] & filter)) + rc |= EVENT_XI1_MASK; + + /* Check for XI DontPropagate mask */ + if (inputMasks && (inputMasks->dontPropagateMask[dev->id] & filter)) + rc |= EVENT_DONT_PROPAGATE_MASK; + + } + + if ((type = GetCoreType(evtype)) != 0) + { + filter = event_get_filter_from_type(dev, type); + + /* Check for core mask */ + if ((win->deliverableEvents & filter) && + ((wOtherEventMasks(win) | win->eventMask) & filter)) + rc |= EVENT_CORE_MASK; + + /* Check for core DontPropagate mask */ + if (filter & wDontPropagateMask(win)) + rc |= EVENT_DONT_PROPAGATE_MASK; + } return rc; } +static int +DeliverEvent(DeviceIntPtr dev, xEvent *xE, int count, + WindowPtr win, Window child, GrabPtr grab) +{ + SpritePtr pSprite = dev->spriteInfo->sprite; + Mask filter; + int deliveries = 0; + + if (XaceHook(XACE_SEND_ACCESS, NULL, dev, win, xE, count) == Success) { + filter = GetEventFilter(dev, xE); + FixUpEventFromWindow(pSprite, xE, win, child, FALSE); + deliveries = DeliverEventsToWindow(dev, win, xE, count, + filter, grab); + } + + return deliveries; +} + +static int +DeliverOneEvent(InternalEvent *event, DeviceIntPtr dev, enum InputLevel level, + WindowPtr win, Window child, GrabPtr grab) +{ + xEvent *xE = NULL; + int count = 0; + int deliveries = 0; + int rc; + + switch(level) + { + case XI2: + rc = EventToXI2(event, &xE); + count = 1; + break; + case XI: + rc = EventToXI(event, &xE, &count); + break; + case CORE: + rc = EventToCore(event, &xE, &count); + break; + } + + if (rc == Success) + { + deliveries = DeliverEvent(dev, xE, count, win, child, grab); + free(xE); + } else + BUG_WARN_MSG(rc != BadMatch, "%s: conversion to level %d failed with rc %d\n", + dev->name, level, rc); + return deliveries; +} + /** * Deliver events caused by input devices. * @@ -2543,90 +2671,53 @@ DeliverDeviceEvents(WindowPtr pWin, InternalEvent *event, GrabPtr grab, WindowPtr stopAt, DeviceIntPtr dev) { - SpritePtr pSprite = dev->spriteInfo->sprite; Window child = None; - Mask filter; int deliveries = 0; - xEvent *xE = NULL, *core = NULL; - int rc, mask, count = 0; + int mask; verify_internal_event(event); while (pWin) { - if ((mask = EventIsDeliverable(dev, event, pWin))) + if ((mask = EventIsDeliverable(dev, event->any.type, pWin))) { /* XI2 events first */ if (mask & EVENT_XI2_MASK) { - xEvent *xi2 = NULL; - rc = EventToXI2(event, &xi2); - if (rc == Success) - { - /* XXX: XACE */ - filter = GetEventFilter(dev, xi2); - FixUpEventFromWindow(pSprite, xi2, pWin, child, FALSE); - deliveries = DeliverEventsToWindow(dev, pWin, xi2, 1, - filter, grab); - free(xi2); - if (deliveries > 0) - goto unwind; - } else if (rc != BadMatch) - ErrorF("[dix] %s: XI2 conversion failed in DDE (%d).\n", - dev->name, rc); + deliveries = DeliverOneEvent(event, dev, XI2, pWin, child, grab); + if (deliveries > 0) + break; } /* XI events */ if (mask & EVENT_XI1_MASK) { - rc = EventToXI(event, &xE, &count); - if (rc == Success) { - if (XaceHook(XACE_SEND_ACCESS, NULL, dev, pWin, xE, count) == Success) { - filter = GetEventFilter(dev, xE); - FixUpEventFromWindow(pSprite, xE, pWin, child, FALSE); - deliveries = DeliverEventsToWindow(dev, pWin, xE, count, - filter, grab); - if (deliveries > 0) - goto unwind; - } - } else if (rc != BadMatch) - ErrorF("[dix] %s: XI conversion failed in DDE (%d, %d). Skipping delivery.\n", - dev->name, event->any.type, rc); + deliveries = DeliverOneEvent(event, dev, XI, pWin, child, grab); + if (deliveries > 0) + break; } /* Core event */ if ((mask & EVENT_CORE_MASK) && IsMaster(dev) && dev->coreEvents) { - rc = EventToCore(event, &core, &count); - if (rc == Success) { - if (XaceHook(XACE_SEND_ACCESS, NULL, dev, pWin, core, count) == Success) { - filter = GetEventFilter(dev, core); - FixUpEventFromWindow(pSprite, core, pWin, child, FALSE); - deliveries = DeliverEventsToWindow(dev, pWin, core, - count, filter, grab); - if (deliveries > 0) - goto unwind; - } - } else if (rc != BadMatch) - ErrorF("[dix] %s: Core conversion failed in DDE (%d, %d).\n", - dev->name, event->any.type, rc); + deliveries = DeliverOneEvent(event, dev, CORE, pWin, child, grab); + if (deliveries > 0) + break; } - if ((deliveries < 0) || (pWin == stopAt) || - (mask & EVENT_DONT_PROPAGATE_MASK)) - { - deliveries = 0; - goto unwind; - } + } + + if ((deliveries < 0) || (pWin == stopAt) || + (mask & EVENT_DONT_PROPAGATE_MASK)) + { + deliveries = 0; + break; } child = pWin->drawable.id; pWin = pWin->parent; } -unwind: - free(core); - free(xE); return deliveries; } @@ -2911,6 +3002,9 @@ case ET_ButtonPress: case ET_ButtonRelease: case ET_Motion: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: break; default: /* all other events return FALSE */ @@ -3274,7 +3368,11 @@ void NewCurrentScreen(DeviceIntPtr pDev, ScreenPtr newScreen, int x, int y) { - SpritePtr pSprite = pDev->spriteInfo->sprite; + DeviceIntPtr ptr; + SpritePtr pSprite; + + ptr = IsFloating(pDev) ? pDev : GetXTestDevice(GetMaster(pDev, MASTER_POINTER)); + pSprite = ptr->spriteInfo->sprite; pSprite->hotPhys.x = x; pSprite->hotPhys.y = y; @@ -3286,15 +3384,15 @@ pSprite->screen = newScreen; /* Make sure we tell the DDX to update its copy of the screen */ if(pSprite->confineWin) - XineramaConfineCursorToWindow(pDev, + XineramaConfineCursorToWindow(ptr, pSprite->confineWin, TRUE); else - XineramaConfineCursorToWindow(pDev, screenInfo.screens[0]->root, TRUE); + XineramaConfineCursorToWindow(ptr, screenInfo.screens[0]->root, TRUE); /* if the pointer wasn't confined, the DDX won't get told of the pointer warp so we reposition it here */ if(!syncEvents.playingEvents) (*pSprite->screen->SetCursorPosition)( - pDev, + ptr, pSprite->screen, pSprite->hotPhys.x + screenInfo.screens[0]->x - pSprite->screen->x, @@ -3304,7 +3402,7 @@ } else #endif if (newScreen != pSprite->hotPhys.pScreen) - ConfineCursorToWindow(pDev, newScreen->root, TRUE, FALSE); + ConfineCursorToWindow(ptr, newScreen->root, TRUE, FALSE); } #ifdef PANORAMIX @@ -3546,6 +3644,276 @@ } /** + * Activate the given passive grab. If the grab is activated successfully, the + * event has been delivered to the client. + * + * @param device The device of the event to check. + * @param grab The grab to check. + * @param event The current device event. + * @param real_event The original event, in case of touch emulation. The + * real event is the one stored in the sync queue. + * + * @return Whether the grab has been activated. + */ +Bool +ActivatePassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event, + InternalEvent *real_event) + +{ + SpritePtr pSprite = device->spriteInfo->sprite; + GrabInfoPtr grabinfo = &device->deviceGrab; + xEvent *xE = NULL; + int count; + int rc; + + /* The only consumers of corestate are Xi 1.x and core events, which + * are guaranteed to come from DeviceEvents. */ + if (grab->grabtype == XI || grab->grabtype == CORE) + { + DeviceIntPtr gdev; + + event->device_event.corestate &= 0x1f00; + + if (grab->grabtype == CORE) + gdev = GetMaster(device, KEYBOARD_OR_FLOAT); + else + gdev = grab->modifierDevice; + + if (gdev && gdev->key && gdev->key->xkbInfo) + event->device_event.corestate |= + gdev->key->xkbInfo->state.grab_mods & (~0x1f00); + } + + if (grab->grabtype == CORE) + { + rc = EventToCore(event, &xE, &count); + if (rc != Success) + { + BUG_WARN_MSG(rc != BadMatch,"[dix] %s: core conversion failed" + "(%d, %d).\n", device->name, event->any.type, rc); + return FALSE; + } + } else if (grab->grabtype == XI2) + { + rc = EventToXI2(event, &xE); + if (rc != Success) + { + if (rc != BadMatch) + BUG_WARN_MSG(rc != BadMatch,"[dix] %s: XI2 conversion failed" + "(%d, %d).\n", device->name, event->any.type, rc); + return FALSE; + } + count = 1; + } else + { + rc = EventToXI(event, &xE, &count); + if (rc != Success) + { + if (rc != BadMatch) + BUG_WARN_MSG(rc != BadMatch,"[dix] %s: XI conversion failed" + "(%d, %d).\n", device->name, event->any.type, rc); + return FALSE; + } + } + + (*grabinfo->ActivateGrab)(device, grab, + ClientTimeToServerTime(event->any.time), TRUE); + + if (xE) + { + FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE); + + /* XXX: XACE? */ + TryClientEvents(rClient(grab), device, xE, count, + GetEventFilter(device, xE), + GetEventFilter(device, xE), grab); + } + + if (grabinfo->sync.state == FROZEN_NO_EVENT) + grabinfo->sync.state = FROZEN_WITH_EVENT; + *grabinfo->sync.event = real_event->device_event; + + free(xE); + return TRUE; +} + +static BOOL +CoreGrabInterferes(DeviceIntPtr device, GrabPtr grab) +{ + DeviceIntPtr other; + BOOL interfering = FALSE; + + for (other = inputInfo.devices; other; other = other->next) + { + GrabPtr othergrab = other->deviceGrab.grab; + if (othergrab && othergrab->grabtype == CORE && + SameClient(grab, rClient(othergrab)) && + ((IsPointerDevice(grab->device) && + IsPointerDevice(othergrab->device)) || + (IsKeyboardDevice(grab->device) && + IsKeyboardDevice(othergrab->device)))) + { + interfering = TRUE; + break; + } + } + + return interfering; +} + +enum MatchFlags { + NO_MATCH = 0x0, + CORE_MATCH = 0x1, + XI_MATCH = 0x2, + XI2_MATCH = 0x4, +}; + +/** + * Match the grab against the temporary grab on the given input level. + * Modifies the temporary grab pointer. + * + * @param grab The grab to match against + * @param tmp The temporary grab to use for matching + * @param level The input level we want to match on + * @param event_type Wire protocol event type + * + * @return The respective matched flag or 0 for no match + */ +static enum MatchFlags +MatchForType(const GrabPtr grab, GrabPtr tmp, enum InputLevel level, int event_type) +{ + enum MatchFlags match; + BOOL ignore_device = FALSE; + int grabtype; + int evtype; + + switch(level) + { + case XI2: + grabtype = XI2; + evtype = GetXI2Type(event_type); + BUG_WARN(!evtype); + match = XI2_MATCH; + break; + case XI: + grabtype = XI; + evtype = GetXIType(event_type); + match = XI_MATCH; + break; + case CORE: + grabtype = CORE; + evtype = GetCoreType(event_type); + match = CORE_MATCH; + ignore_device = TRUE; + break; + } + + tmp->grabtype = grabtype; + tmp->type = evtype; + + if (tmp->type && GrabMatchesSecond(tmp, grab, ignore_device)) + return match; + + return NO_MATCH; +} + +/** + * Check an individual grab against an event to determine if a passive grab + * should be activated. + * + * @param device The device of the event to check. + * @param grab The grab to check. + * @param event The current device event. + * @param checkCore Check for core grabs too. + * @param tempGrab A pre-allocated temporary grab record for matching. This + * must have the window and device values filled in. + * + * @return Whether the grab matches the event. + */ +static Bool +CheckPassiveGrab(DeviceIntPtr device, GrabPtr grab, InternalEvent *event, + Bool checkCore, GrabPtr tempGrab) +{ + DeviceIntPtr gdev; + XkbSrvInfoPtr xkbi = NULL; + enum MatchFlags match = 0; + int emulated_type = 0; + + gdev = grab->modifierDevice; + if (grab->grabtype == CORE) + { + gdev = GetMaster(device, KEYBOARD_OR_FLOAT); + } else if (grab->grabtype == XI2) + { + /* if the device is an attached slave device, gdev must be the + * attached master keyboard. Since the slave may have been + * reattached after the grab, the modifier device may not be the + * same. */ + if (!IsMaster(grab->device) && !IsFloating(device)) + gdev = GetMaster(device, MASTER_KEYBOARD); + } + + if (gdev && gdev->key) + xkbi= gdev->key->xkbInfo; + tempGrab->modifierDevice = grab->modifierDevice; + tempGrab->modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0; + + /* Check for XI2 and XI grabs first */ + match = MatchForType(grab, tempGrab, XI2, event->any.type); + + if (!match && IsTouchEvent(event) && (event->device_event.flags & TOUCH_POINTER_EMULATED)) + { + emulated_type = TouchGetPointerEventType(event); + match = MatchForType(grab, tempGrab, XI2, emulated_type); + } + + if (!match) + match = MatchForType(grab, tempGrab, XI, event->any.type); + + if (!match && emulated_type) + match = MatchForType(grab, tempGrab, XI, emulated_type); + + if (!match && checkCore) + { + match = MatchForType(grab, tempGrab, CORE, event->any.type); + if (!match && emulated_type) + match = MatchForType(grab, tempGrab, CORE, emulated_type); + } + + if (!match || (grab->confineTo && + (!grab->confineTo->realized || + !BorderSizeNotEmpty(device, grab->confineTo)))) + return FALSE; + + /* In some cases a passive core grab may exist, but the client + * already has a core grab on some other device. In this case we + * must not get the grab, otherwise we may never ungrab the + * device. + */ + + if (grab->grabtype == CORE) + { + /* A passive grab may have been created for a different device + than it is assigned to at this point in time. + Update the grab's device and modifier device to reflect the + current state. + Since XGrabDeviceButton requires to specify the + modifierDevice explicitly, we don't override this choice. + */ + if (grab->type < GenericEvent) + { + grab->device = device; + grab->modifierDevice = GetMaster(device, MASTER_KEYBOARD); + } + + if (CoreGrabInterferes(device, grab)) + return FALSE; + } + + return TRUE; +} + +/** * "CheckPassiveGrabsOnWindow" checks to see if the event passed in causes a * passive grab set on the window to be activated. * If activate is true and a passive grab is found, it will be activated, @@ -3566,219 +3934,51 @@ BOOL checkCore, BOOL activate) { - SpritePtr pSprite = device->spriteInfo->sprite; GrabPtr grab = wPassiveGrabs(pWin); - GrabRec tempGrab; - GrabInfoPtr grabinfo; -#define CORE_MATCH 0x1 -#define XI_MATCH 0x2 -#define XI2_MATCH 0x4 - int match = 0; + GrabPtr tempGrab; if (!grab) return NULL; + + tempGrab = AllocGrab(); + /* Fill out the grab details, but leave the type for later before * comparing */ switch (event->any.type) { case ET_KeyPress: case ET_KeyRelease: - tempGrab.detail.exact = event->device_event.detail.key; + tempGrab->detail.exact = event->device_event.detail.key; break; case ET_ButtonPress: case ET_ButtonRelease: - tempGrab.detail.exact = event->device_event.detail.button; + case ET_TouchBegin: + case ET_TouchEnd: + tempGrab->detail.exact = event->device_event.detail.button; break; default: - tempGrab.detail.exact = 0; + tempGrab->detail.exact = 0; break; } - tempGrab.window = pWin; - tempGrab.device = device; - tempGrab.detail.pMask = NULL; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.next = NULL; + tempGrab->window = pWin; + tempGrab->device = device; + tempGrab->detail.pMask = NULL; + tempGrab->modifiersDetail.pMask = NULL; + tempGrab->next = NULL; + for (; grab; grab = grab->next) { - DeviceIntPtr gdev; - XkbSrvInfoPtr xkbi = NULL; - xEvent *xE = NULL; - int count, rc; - - gdev= grab->modifierDevice; - if (grab->grabtype == GRABTYPE_CORE) - { - if (IsPointerDevice(device)) - gdev = GetPairedDevice(device); - else - gdev = device; - } else if (grab->grabtype == GRABTYPE_XI2) - { - /* if the device is an attached slave device, gdev must be the - * attached master keyboard. Since the slave may have been - * reattached after the grab, the modifier device may not be the - * same. */ - if (!IsMaster(grab->device) && !IsFloating(device)) - gdev = GetMaster(device, MASTER_KEYBOARD); - } - - - if (gdev && gdev->key) - xkbi= gdev->key->xkbInfo; - tempGrab.modifierDevice = grab->modifierDevice; - tempGrab.modifiersDetail.exact = xkbi ? xkbi->state.grab_mods : 0; - - /* Check for XI2 and XI grabs first */ - tempGrab.type = GetXI2Type(event); - tempGrab.grabtype = GRABTYPE_XI2; - if (GrabMatchesSecond(&tempGrab, grab, FALSE)) - match = XI2_MATCH; - - if (!match) - { - tempGrab.grabtype = GRABTYPE_XI; - if ((tempGrab.type = GetXIType(event)) && - (GrabMatchesSecond(&tempGrab, grab, FALSE))) - match = XI_MATCH; - } - - /* Check for a core grab (ignore the device when comparing) */ - if (!match && checkCore) - { - tempGrab.grabtype = GRABTYPE_CORE; - if ((tempGrab.type = GetCoreType(event)) && - (GrabMatchesSecond(&tempGrab, grab, TRUE))) - match = CORE_MATCH; - } - - if (!match || (grab->confineTo && - (!grab->confineTo->realized || - !BorderSizeNotEmpty(device, grab->confineTo)))) + if (!CheckPassiveGrab(device, grab, event, checkCore, tempGrab)) continue; - grabinfo = &device->deviceGrab; - /* In some cases a passive core grab may exist, but the client - * already has a core grab on some other device. In this case we - * must not get the grab, otherwise we may never ungrab the - * device. - */ - - if (grab->grabtype == GRABTYPE_CORE) - { - DeviceIntPtr other; - BOOL interfering = FALSE; - - /* A passive grab may have been created for a different device - than it is assigned to at this point in time. - Update the grab's device and modifier device to reflect the - current state. - Since XGrabDeviceButton requires to specify the - modifierDevice explicitly, we don't override this choice. - */ - if (tempGrab.type < GenericEvent) - { - grab->device = device; - grab->modifierDevice = GetMaster(device, MASTER_KEYBOARD); - } - - for (other = inputInfo.devices; other; other = other->next) - { - GrabPtr othergrab = other->deviceGrab.grab; - if (othergrab && othergrab->grabtype == GRABTYPE_CORE && - SameClient(grab, rClient(othergrab)) && - ((IsPointerDevice(grab->device) && - IsPointerDevice(othergrab->device)) || - (IsKeyboardDevice(grab->device) && - IsKeyboardDevice(othergrab->device)))) - { - interfering = TRUE; - break; - } - } - if (interfering) - continue; - } - - if (!activate) - { - return grab; - } - else if (!GetXIType(event) && !GetCoreType(event)) - { - ErrorF("Event type %d in CheckPassiveGrabsOnWindow is neither" - " XI 1.x nor core\n", event->any.type); - return NULL; - } - - /* The only consumers of corestate are Xi 1.x and core events, which - * are guaranteed to come from DeviceEvents. */ - if (match & (XI_MATCH | CORE_MATCH)) - { - event->device_event.corestate &= 0x1f00; - event->device_event.corestate |= tempGrab.modifiersDetail.exact & - (~0x1f00); - } - - if (match & CORE_MATCH) - { - rc = EventToCore(event, &xE, &count); - if (rc != Success) - { - if (rc != BadMatch) - ErrorF("[dix] %s: core conversion failed in CPGFW " - "(%d, %d).\n", device->name, event->any.type, rc); - continue; - } - } else if (match & XI2_MATCH) - { - rc = EventToXI2(event, &xE); - if (rc != Success) - { - if (rc != BadMatch) - ErrorF("[dix] %s: XI2 conversion failed in CPGFW " - "(%d, %d).\n", device->name, event->any.type, rc); - continue; - } - count = 1; - } else - { - rc = EventToXI(event, &xE, &count); - if (rc != Success) - { - if (rc != BadMatch) - ErrorF("[dix] %s: XI conversion failed in CPGFW " - "(%d, %d).\n", device->name, event->any.type, rc); - continue; - } - } - - (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE); - - if (xE) - { - FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE); - - /* XXX: XACE? */ - TryClientEvents(rClient(grab), device, xE, count, - GetEventFilter(device, xE), - GetEventFilter(device, xE), grab); - } - - if (grabinfo->sync.state == FROZEN_NO_EVENT) - { - if (!grabinfo->sync.event) - grabinfo->sync.event = calloc(1, sizeof(DeviceEvent)); - *grabinfo->sync.event = event->device_event; - grabinfo->sync.state = FROZEN_WITH_EVENT; - } + if (activate && !ActivatePassiveGrab(device, grab, event, event)) + continue; - free(xE); - return grab; + break; } - return NULL; -#undef CORE_MATCH -#undef XI_MATCH -#undef XI2_MATCH + + FreeGrab(tempGrab); + return grab; } /** @@ -3910,8 +4110,7 @@ } /* just deliver it to the focus window */ - ptr = GetPairedDevice(keybd); - + ptr = GetMaster(keybd, POINTER_OR_FLOAT); rc = EventToXI2(event, &xi2); if (rc == Success) @@ -3965,6 +4164,75 @@ return; } + +int +DeliverOneGrabbedEvent(InternalEvent *event, DeviceIntPtr dev, enum InputLevel level) +{ + SpritePtr pSprite = dev->spriteInfo->sprite; + int rc; + xEvent *xE = NULL; + int count = 0; + int deliveries = 0; + Mask mask; + GrabInfoPtr grabinfo = &dev->deviceGrab; + GrabPtr grab = grabinfo->grab; + Mask filter; + + switch(level) + { + case XI2: + rc = EventToXI2(event, &xE); + count = 1; + if (rc == Success) + { + int evtype = xi2_get_type(xE); + mask = GetXI2MaskByte(grab->xi2mask, dev, evtype); + filter = GetEventFilter(dev, xE); + } + break; + case XI: + if (grabinfo->fromPassiveGrab && grabinfo->implicitGrab) + mask = grab->deviceMask; + else + mask = grab->eventMask; + rc = EventToXI(event, &xE, &count); + if (rc == Success) + filter = GetEventFilter(dev, xE); + break; + case CORE: + rc = EventToCore(event, &xE, &count); + mask = grab->eventMask; + if (rc == Success) + filter = GetEventFilter(dev, xE); + break; + default: + BUG_WARN_MSG(1, "Invalid input level %d\n", level); + return 0; + } + + if (rc == Success) + { + FixUpEventFromWindow(pSprite, xE, grab->window, None, TRUE); + if (XaceHook(XACE_SEND_ACCESS, 0, dev, + grab->window, xE, count) || + XaceHook(XACE_RECEIVE_ACCESS, rClient(grab), + grab->window, xE, count)) + deliveries = 1; /* don't send, but pretend we did */ + else if (level != CORE || !IsInterferingGrab(rClient(grab), dev, xE)) + { + deliveries = TryClientEvents(rClient(grab), dev, + xE, count, mask, filter, + grab); + } + } else + BUG_WARN_MSG(rc != BadMatch, "%s: conversion to mode %d failed on %d with %d\n", + dev->name, level, event->any.type, rc); + + free(xE); + return deliveries; +} + + /** * Deliver an event from a device that is currently grabbed. Uses * DeliverDeviceEvents() for further delivery if a ownerEvents is set on the @@ -3984,10 +4252,6 @@ DeviceIntPtr dev; SpritePtr pSprite = thisDev->spriteInfo->sprite; BOOL sendCore = FALSE; - int rc, count = 0; - xEvent *xi = NULL; - xEvent *xi2 = NULL; - xEvent *core = NULL; grabinfo = &thisDev->deviceGrab; grab = grabinfo->grab; @@ -4023,90 +4287,27 @@ } if (!deliveries) { - Mask mask; - /* XXX: In theory, we could pass the internal events through to * everything and only convert just before hitting the wire. We can't * do that yet, so DGE is the last stop for internal events. From here * onwards, we deal with core/XI events. */ - mask = grab->eventMask; - sendCore = (IsMaster(thisDev) && thisDev->coreEvents); /* try core event */ - if (sendCore && grab->grabtype == GRABTYPE_CORE) + if (sendCore && grab->grabtype == CORE) { - rc = EventToCore(event, &core, &count); - if (rc == Success) - { - FixUpEventFromWindow(pSprite, core, grab->window, None, TRUE); - if (XaceHook(XACE_SEND_ACCESS, 0, thisDev, - grab->window, core, count) || - XaceHook(XACE_RECEIVE_ACCESS, rClient(grab), - grab->window, core, count)) - deliveries = 1; /* don't send, but pretend we did */ - else if (!IsInterferingGrab(rClient(grab), thisDev, core)) - { - deliveries = TryClientEvents(rClient(grab), thisDev, - core, count, mask, - GetEventFilter(thisDev, core), - grab); - } - } else if (rc != BadMatch) - ErrorF("[dix] DeliverGrabbedEvent. Core conversion failed.\n"); + deliveries = DeliverOneGrabbedEvent(event, thisDev, CORE); } if (!deliveries) { - rc = EventToXI2(event, &xi2); - if (rc == Success) - { - int evtype = xi2_get_type(xi2); - mask = grab->xi2mask[XIAllDevices][evtype/8] | - grab->xi2mask[XIAllMasterDevices][evtype/8] | - grab->xi2mask[thisDev->id][evtype/8]; - /* try XI2 event */ - FixUpEventFromWindow(pSprite, xi2, grab->window, None, TRUE); - /* XXX: XACE */ - deliveries = TryClientEvents(rClient(grab), thisDev, xi2, 1, mask, - GetEventFilter(thisDev, xi2), grab); - } else if (rc != BadMatch) - ErrorF("[dix] %s: XI2 conversion failed in DGE (%d, %d). Skipping delivery.\n", - thisDev->name, event->any.type, rc); + deliveries = DeliverOneGrabbedEvent(event, thisDev, XI2); } if (!deliveries) { - rc = EventToXI(event, &xi, &count); - if (rc == Success) - { - /* try XI event */ - if (grabinfo->fromPassiveGrab && - grabinfo->implicitGrab) - mask = grab->deviceMask; - else - mask = grab->eventMask; - - FixUpEventFromWindow(pSprite, xi, grab->window, None, TRUE); - - if (XaceHook(XACE_SEND_ACCESS, 0, thisDev, - grab->window, xi, count) || - XaceHook(XACE_RECEIVE_ACCESS, rClient(grab), - grab->window, xi, count)) - deliveries = 1; /* don't send, but pretend we did */ - else - { - deliveries = - TryClientEvents(rClient(grab), thisDev, - xi, count, - mask, - GetEventFilter(thisDev, xi), - grab); - } - } else if (rc != BadMatch) - ErrorF("[dix] %s: XI conversion failed in DGE (%d, %d). Skipping delivery.\n", - thisDev->name, event->any.type, rc); + deliveries = DeliverOneGrabbedEvent(event, thisDev, XI); } if (deliveries && (event->any.type == ET_Motion)) @@ -4132,17 +4333,11 @@ case FREEZE_NEXT_EVENT: grabinfo->sync.state = FROZEN_WITH_EVENT; FreezeThaw(thisDev, TRUE); - if (!grabinfo->sync.event) - grabinfo->sync.event = calloc(1, sizeof(InternalEvent)); *grabinfo->sync.event = event->device_event; break; } } - free(core); - free(xi); - free(xi2); - return deliveries; } @@ -4413,7 +4608,7 @@ GrabPtr grab = mouse->deviceGrab.grab; Mask mask; - keybd = GetPairedDevice(mouse); + keybd = GetMaster(mouse, KEYBOARD_OR_FLOAT); if ((pWin == mouse->valuator->motionHintWindow) && (detail != NotifyInferior)) @@ -4544,13 +4739,10 @@ if (grab) { Mask mask; - mask = grab->xi2mask[XIAllDevices][type/8] | - grab->xi2mask[XIAllMasterDevices][type/8] | - grab->xi2mask[mouse->id][type/8]; - TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask, - filter, grab); + mask = xi2mask_isset(grab->xi2mask, mouse, type); + TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask, 1, grab); } else { - if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event)) + if (!WindowXI2MaskIsset(mouse, pWin, (xEvent*)event)) goto out; DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter, NullGrab); @@ -4633,10 +4825,7 @@ } time = ClientTimeToServerTime(ctime); - if (IsKeyboardDevice(dev)) - keybd = dev; - else - keybd = GetPairedDevice(dev); + keybd = GetMaster(dev, KEYBOARD_OR_FLOAT); if ((focusID == None) || (focusID == PointerRoot)) focusWin = (WindowPtr)(long)focusID; @@ -4765,7 +4954,6 @@ WindowPtr confineTo; CursorPtr oldCursor; REQUEST(xGrabPointerReq); - TimeStamp time; int rc; REQUEST_SIZE_MATCH(xGrabPointerReq); @@ -4803,7 +4991,7 @@ rc = GrabDevice(client, device, stuff->pointerMode, stuff->keyboardMode, stuff->grabWindow, stuff->ownerEvents, stuff->time, - &mask, GRABTYPE_CORE, stuff->cursor, + &mask, CORE, stuff->cursor, stuff->confineTo, &rep.status); if (rc != Success) return rc; @@ -4811,7 +4999,6 @@ if (oldCursor && rep.status == GrabSuccess) FreeCursor (oldCursor, (Cursor)0); - time = ClientTimeToServerTime(stuff->time); rep.type = X_Reply; rep.sequenceNumber = client->sequence; rep.length = 0; @@ -5002,29 +5189,30 @@ *status = GrabFrozen; else { - GrabRec tempGrab; + GrabPtr tempGrab; - /* Otherwise segfaults happen on grabbed MPX devices */ - memset(&tempGrab, 0, sizeof(GrabRec)); + tempGrab = AllocGrab(); - tempGrab.next = NULL; - tempGrab.window = pWin; - tempGrab.resource = client->clientAsMask; - tempGrab.ownerEvents = ownerEvents; - tempGrab.keyboardMode = keyboard_mode; - tempGrab.pointerMode = pointer_mode; - if (grabtype == GRABTYPE_CORE) - tempGrab.eventMask = mask->core; - else if (grabtype == GRABTYPE_XI) - tempGrab.eventMask = mask->xi; + tempGrab->next = NULL; + tempGrab->window = pWin; + tempGrab->resource = client->clientAsMask; + tempGrab->ownerEvents = ownerEvents; + tempGrab->keyboardMode = keyboard_mode; + tempGrab->pointerMode = pointer_mode; + if (grabtype == CORE) + tempGrab->eventMask = mask->core; + else if (grabtype == XI) + tempGrab->eventMask = mask->xi; else - memcpy(tempGrab.xi2mask, mask->xi2mask, sizeof(tempGrab.xi2mask)); - tempGrab.device = dev; - tempGrab.cursor = cursor; - tempGrab.confineTo = confineTo; - tempGrab.grabtype = grabtype; - (*grabInfo->ActivateGrab)(dev, &tempGrab, time, FALSE); + xi2mask_merge(tempGrab->xi2mask, mask->xi2mask); + tempGrab->device = dev; + tempGrab->cursor = cursor; + tempGrab->confineTo = confineTo; + tempGrab->grabtype = grabtype; + (*grabInfo->ActivateGrab)(dev, tempGrab, time, FALSE); *status = GrabSuccess; + + FreeGrab(tempGrab); } return Success; } @@ -5050,7 +5238,7 @@ result = GrabDevice(client, keyboard, stuff->pointerMode, stuff->keyboardMode, stuff->grabWindow, stuff->ownerEvents, - stuff->time, &mask, GRABTYPE_CORE, None, None, + stuff->time, &mask, CORE, None, None, &rep.status); if (result != Success) @@ -5083,7 +5271,7 @@ time = ClientTimeToServerTime(stuff->id); if ((CompareTimeStamps(time, currentTime) != LATER) && (CompareTimeStamps(time, device->deviceGrab.grabTime) != EARLIER) && - (grab) && SameClient(grab, client) && grab->grabtype == GRABTYPE_CORE) + (grab) && SameClient(grab, client) && grab->grabtype == CORE) (*device->deviceGrab.DeactivateGrab)(device); return Success; } @@ -5113,7 +5301,7 @@ if (rc != Success && rc != BadAccess) return rc; - keyboard = GetPairedDevice(mouse); + keyboard = GetMaster(mouse, MASTER_KEYBOARD); pSprite = mouse->spriteInfo->sprite; if (mouse->valuator->motionHintWindow) @@ -5180,6 +5368,7 @@ InitEvents(void) { int i; + QdEventPtr qe, tmp; inputInfo.numDevices = 0; inputInfo.devices = (DeviceIntPtr)NULL; @@ -5188,18 +5377,15 @@ inputInfo.pointer = (DeviceIntPtr)NULL; for (i = 0; i < MAXDEVICES; i++) { - memcpy(&filters[i], default_filter, sizeof(default_filter)); + memcpy(&event_filters[i], default_filter, sizeof(default_filter)); } syncEvents.replayDev = (DeviceIntPtr)NULL; syncEvents.replayWin = NullWindow; - while (syncEvents.pending) - { - QdEventPtr next = syncEvents.pending->next; - free(syncEvents.pending); - syncEvents.pending = next; - } - syncEvents.pendtail = &syncEvents.pending; + if (syncEvents.pending.next) + list_for_each_entry_safe(qe, tmp, &syncEvents.pending, next) + free(qe); + list_init(&syncEvents.pending); syncEvents.playingEvents = FALSE; syncEvents.time.months = 0; syncEvents.time.milliseconds = 0; /* hardly matters */ @@ -5237,7 +5423,7 @@ WindowPtr pWin; WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */ DeviceIntPtr dev = PickPointer(client); - DeviceIntPtr keybd = GetPairedDevice(dev); + DeviceIntPtr keybd = GetMaster(dev, MASTER_KEYBOARD); SpritePtr pSprite = dev->spriteInfo->sprite; REQUEST(xSendEventReq); @@ -5345,7 +5531,7 @@ { REQUEST(xUngrabKeyReq); WindowPtr pWin; - GrabRec tempGrab; + GrabPtr tempGrab; DeviceIntPtr keybd = PickKeyboard(client); int rc; @@ -5367,21 +5553,27 @@ client->errorValue = stuff->modifiers; return BadValue; } - tempGrab.resource = client->clientAsMask; - tempGrab.device = keybd; - tempGrab.window = pWin; - tempGrab.modifiersDetail.exact = stuff->modifiers; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.modifierDevice = keybd; - tempGrab.type = KeyPress; - tempGrab.grabtype = GRABTYPE_CORE; - tempGrab.detail.exact = stuff->key; - tempGrab.detail.pMask = NULL; - tempGrab.next = NULL; + tempGrab = AllocGrab(); + if (!tempGrab) + return BadAlloc; + tempGrab->resource = client->clientAsMask; + tempGrab->device = keybd; + tempGrab->window = pWin; + tempGrab->modifiersDetail.exact = stuff->modifiers; + tempGrab->modifiersDetail.pMask = NULL; + tempGrab->modifierDevice = keybd; + tempGrab->type = KeyPress; + tempGrab->grabtype = CORE; + tempGrab->detail.exact = stuff->key; + tempGrab->detail.pMask = NULL; + tempGrab->next = NULL; - if (!DeletePassiveGrabFromList(&tempGrab)) - return BadAlloc; - return Success; + if (!DeletePassiveGrabFromList(tempGrab)) + rc = BadAlloc; + + FreeGrab(tempGrab); + + return rc; } /** @@ -5404,7 +5596,7 @@ REQUEST_SIZE_MATCH(xGrabKeyReq); memset(¶m, 0, sizeof(param)); - param.grabtype = GRABTYPE_CORE; + param.grabtype = CORE; param.ownerEvents = stuff->ownerEvents; param.this_device_mode = stuff->keyboardMode; param.other_devices_mode = stuff->pointerMode; @@ -5428,7 +5620,7 @@ mask.core = (KeyPressMask | KeyReleaseMask); - grab = CreateGrab(client->index, keybd, keybd, pWin, GRABTYPE_CORE, &mask, + grab = CreateGrab(client->index, keybd, keybd, pWin, CORE, &mask, ¶m, KeyPress, stuff->key, NullWindow, NullCursor); if (!grab) return BadAlloc; @@ -5510,7 +5702,7 @@ } ptr = PickPointer(client); - modifierDevice = GetPairedDevice(ptr); + modifierDevice = GetMaster(ptr, MASTER_KEYBOARD); if (stuff->pointerMode == GrabModeSync || stuff->keyboardMode == GrabModeSync) access_mode |= DixFreezeAccess; @@ -5519,7 +5711,7 @@ return rc; memset(¶m, 0, sizeof(param)); - param.grabtype = GRABTYPE_CORE; + param.grabtype = CORE; param.ownerEvents = stuff->ownerEvents; param.this_device_mode = stuff->keyboardMode; param.other_devices_mode = stuff->pointerMode; @@ -5528,7 +5720,7 @@ mask.core = stuff->eventMask; grab = CreateGrab(client->index, ptr, modifierDevice, pWin, - GRABTYPE_CORE, &mask, ¶m, ButtonPress, + CORE, &mask, ¶m, ButtonPress, stuff->button, confineTo, cursor); if (!grab) return BadAlloc; @@ -5545,7 +5737,7 @@ { REQUEST(xUngrabButtonReq); WindowPtr pWin; - GrabRec tempGrab; + GrabPtr tempGrab; int rc; DeviceIntPtr ptr; @@ -5562,21 +5754,26 @@ ptr = PickPointer(client); - tempGrab.resource = client->clientAsMask; - tempGrab.device = ptr; - tempGrab.window = pWin; - tempGrab.modifiersDetail.exact = stuff->modifiers; - tempGrab.modifiersDetail.pMask = NULL; - tempGrab.modifierDevice = GetPairedDevice(ptr); - tempGrab.type = ButtonPress; - tempGrab.detail.exact = stuff->button; - tempGrab.grabtype = GRABTYPE_CORE; - tempGrab.detail.pMask = NULL; - tempGrab.next = NULL; + tempGrab = AllocGrab(); + if (!tempGrab) + return BadAlloc; + tempGrab->resource = client->clientAsMask; + tempGrab->device = ptr; + tempGrab->window = pWin; + tempGrab->modifiersDetail.exact = stuff->modifiers; + tempGrab->modifiersDetail.pMask = NULL; + tempGrab->modifierDevice = GetMaster(ptr, MASTER_KEYBOARD); + tempGrab->type = ButtonPress; + tempGrab->detail.exact = stuff->button; + tempGrab->grabtype = CORE; + tempGrab->detail.pMask = NULL; + tempGrab->next = NULL; - if (!DeletePassiveGrabFromList(&tempGrab)) - return BadAlloc; - return Success; + if (!DeletePassiveGrabFromList(tempGrab)) + rc = BadAlloc; + + FreeGrab(tempGrab); + return rc; } /** @@ -5975,7 +6172,7 @@ for(it = inputInfo.devices; it; it = it->next) { GrabPtr grab = it->deviceGrab.grab; - if (grab && grab->grabtype == GRABTYPE_CORE && SameClient(grab, client)) + if (grab && grab->grabtype == CORE && SameClient(grab, client)) { it = GetMaster(it, MASTER_POINTER); return it; /* Always return a core grabbed device */ --- xorg-server-1.11.4.orig/dix/getevents.c +++ xorg-server-1.11.4/dix/getevents.c @@ -2,6 +2,7 @@ * Copyright © 2006 Nokia Corporation * Copyright © 2006-2007 Daniel Stone * Copyright © 2008 Red Hat, Inc. + * Copyright © 2011 The Chromium Authors * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -48,6 +49,7 @@ #include "eventconvert.h" #include "inpututils.h" #include "mi.h" +#include "windowstr.h" #include #include "xkbsrv.h" @@ -58,6 +60,7 @@ #endif #include +#include #include #include #include "exglobals.h" @@ -165,12 +168,32 @@ } static void +init_touch_ownership(DeviceIntPtr dev, TouchOwnershipEvent *event, Time ms) +{ + memset(event, 0, sizeof(TouchOwnershipEvent)); + event->header = ET_Internal; + event->type = ET_TouchOwnership; + event->length = sizeof(TouchOwnershipEvent); + event->time = ms; + event->deviceid = dev->id; +} + +static void init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail) { memset(event, 0, sizeof(RawDeviceEvent)); event->header = ET_Internal; event->length = sizeof(RawDeviceEvent); - event->type = ET_RawKeyPress - ET_KeyPress + type; + switch(type) { + case MotionNotify: event->type = ET_RawMotion; break; + case ButtonPress: event->type = ET_RawButtonPress; break; + case ButtonRelease: event->type = ET_RawButtonRelease; break; + case KeyPress: event->type = ET_RawKeyPress; break; + case KeyRelease: event->type = ET_RawKeyRelease; break; + case XI_TouchBegin: event->type = ET_RawTouchBegin; break; + case XI_TouchUpdate: event->type = ET_RawTouchUpdate; break; + case XI_TouchEnd: event->type = ET_RawTouchEnd; break; + } event->time = ms; event->deviceid = dev->id; event->sourceid = dev->id; @@ -178,7 +201,7 @@ } static void -set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, int32_t* data) +set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, double* data) { int i; @@ -187,7 +210,7 @@ if (valuator_mask_isset(mask, i)) { SetBit(event->valuators.mask, i); - data[i] = valuator_mask_get(mask, i); + data[i] = valuator_mask_get_double(mask, i); } } } @@ -207,9 +230,7 @@ SetBit(event->valuators.mask, i); if (valuator_get_mode(dev, i) == Absolute) SetBit(event->valuators.mode, i); - event->valuators.data[i] = valuator_mask_get(mask, i); - event->valuators.data_frac[i] = - dev->last.remainder[i] * (1 << 16) * (1 << 16); + event->valuators.data[i] = valuator_mask_get_double(mask, i); } else if (valuator_get_mode(dev, i) == Absolute) event->valuators.data[i] = dev->valuator->axisVal[i]; @@ -220,7 +241,7 @@ CreateClassesChangedEvent(InternalEvent* event, DeviceIntPtr master, DeviceIntPtr slave, - int type) + int flags) { int i; DeviceChangedEvent *dce; @@ -229,13 +250,12 @@ dce = &event->changed_event; memset(dce, 0, sizeof(DeviceChangedEvent)); dce->deviceid = slave->id; - dce->masterid = master->id; + dce->masterid = master ? master->id : 0; dce->header = ET_Internal; dce->length = sizeof(DeviceChangedEvent); dce->type = ET_DeviceChanged; dce->time = ms; - dce->flags = type; - dce->flags |= DEVCHANGE_SLAVE_SWITCH; + dce->flags = flags; dce->sourceid = slave->id; if (slave->button) @@ -254,6 +274,7 @@ dce->valuators[i].resolution = slave->valuator->axes[i].resolution; dce->valuators[i].mode = slave->valuator->axes[i].mode; dce->valuators[i].name = slave->valuator->axes[i].label; + dce->valuators[i].scroll = slave->valuator->axes[i].scroll; } } if (slave->key) @@ -266,39 +287,29 @@ /** * Rescale the coord between the two axis ranges. */ -static int -rescaleValuatorAxis(int coord, float remainder, float *remainder_return, AxisInfoPtr from, AxisInfoPtr to, - int defmax) +static double +rescaleValuatorAxis(double coord, AxisInfoPtr from, AxisInfoPtr to, + double defmin, double defmax) { - int fmin = 0, tmin = 0, fmax = defmax, tmax = defmax, coord_return; - float value; + double fmin = defmin, fmax = defmax; + double tmin = defmin, tmax = defmax; - if(from && from->min_value < from->max_value) { + if (from && from->min_value < from->max_value) { fmin = from->min_value; fmax = from->max_value; } - if(to && to->min_value < to->max_value) { + if (to && to->min_value < to->max_value) { tmin = to->min_value; tmax = to->max_value; } - if(fmin == tmin && fmax == tmax) { - if (remainder_return) - *remainder_return = remainder; + if (fmin == tmin && fmax == tmax) return coord; - } - if(fmax == fmin) { /* avoid division by 0 */ - if (remainder_return) - *remainder_return = 0.0; - return 0; - } + if (fmax == fmin) /* avoid division by 0 */ + return 0.0; - value = (coord + remainder - fmin) * (tmax - tmin) / (fmax - fmin) + tmin; - coord_return = lroundf(value); - if (remainder_return) - *remainder_return = value - coord_return; - return coord_return; + return (coord - fmin) * (tmax - tmin) / (fmax - fmin) + tmin; } /** @@ -312,27 +323,34 @@ static void updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev) { - ScreenPtr scr = miPointerGetScreen(pDev); int i; DeviceIntPtr lastSlave; - /* master->last.valuators[0]/[1] is in screen coords and the actual + /* master->last.valuators[0]/[1] is in desktop-wide coords and the actual * position of the pointer */ pDev->last.valuators[0] = master->last.valuators[0]; pDev->last.valuators[1] = master->last.valuators[1]; - pDev->last.remainder[0] = master->last.remainder[0]; - pDev->last.remainder[1] = master->last.remainder[1]; if (!pDev->valuator) return; /* scale back to device coordinates */ if(pDev->valuator->numAxes > 0) - pDev->last.valuators[0] = rescaleValuatorAxis(pDev->last.valuators[0], pDev->last.remainder[0], - &pDev->last.remainder[0], NULL, pDev->valuator->axes + 0, scr->width); + { + pDev->last.valuators[0] = rescaleValuatorAxis(pDev->last.valuators[0], + NULL, + pDev->valuator->axes + 0, + screenInfo.x, + screenInfo.width); + } if(pDev->valuator->numAxes > 1) - pDev->last.valuators[1] = rescaleValuatorAxis(pDev->last.valuators[1], pDev->last.remainder[1], - &pDev->last.remainder[1], NULL, pDev->valuator->axes + 1, scr->height); + { + pDev->last.valuators[1] = rescaleValuatorAxis(pDev->last.valuators[1], + NULL, + pDev->valuator->axes + 1, + screenInfo.y, + screenInfo.height); + } /* calculate the other axis as well based on info from the old * slave-device. If the old slave had less axes than this one, @@ -343,16 +361,15 @@ if (i >= lastSlave->valuator->numAxes) { pDev->last.valuators[i] = 0; - pDev->last.remainder[i] = 0; + valuator_mask_set_double(pDev->last.scroll, i, 0); } else { - pDev->last.valuators[i] = - rescaleValuatorAxis(pDev->last.valuators[i], - pDev->last.remainder[i], - &pDev->last.remainder[i], - lastSlave->valuator->axes + i, - pDev->valuator->axes + i, 0); + double val = pDev->last.valuators[i]; + val = rescaleValuatorAxis(val, lastSlave->valuator->axes + i, + pDev->valuator->axes + i, 0, 0); + pDev->last.valuators[i] = val; + valuator_mask_set_double(pDev->last.scroll, i, val); } } } @@ -414,7 +431,6 @@ Time current; /* The size of a single motion event. */ int size; - int dflt; AxisInfo from, *to; /* for scaling */ INT32 *ocbuf, *icbuf; /* pointer to coordinates for copying */ INT16 *corebuf; @@ -464,7 +480,7 @@ /* scale to screen coords */ to = &core_axis; to->max_value = pScreen->width; - coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, pScreen->width); + coord = rescaleValuatorAxis(coord, &from, to, 0, pScreen->width); memcpy(corebuf, &coord, sizeof(INT16)); corebuf++; @@ -475,7 +491,7 @@ memcpy(&coord, icbuf++, sizeof(INT32)); to->max_value = pScreen->height; - coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, pScreen->height); + coord = rescaleValuatorAxis(coord, &from, to, 0, pScreen->height); memcpy(corebuf, &coord, sizeof(INT16)); } else if (IsMaster(pDev)) @@ -502,15 +518,8 @@ else if (j == 1 && (from.max_value < from.min_value)) from.max_value = pScreen->height; - if (j == 0 && (to->max_value < to->min_value)) - dflt = pScreen->width; - else if (j == 1 && (to->max_value < to->min_value)) - dflt = pScreen->height; - else - dflt = 0; - /* scale from stored range into current range */ - coord = rescaleValuatorAxis(coord, 0.0, NULL, &from, to, 0); + coord = rescaleValuatorAxis(coord, &from, to, 0, 0); memcpy(ocbuf, &coord, sizeof(INT32)); ocbuf++; } @@ -544,7 +553,7 @@ */ static void updateMotionHistory(DeviceIntPtr pDev, CARD32 ms, ValuatorMask *mask, - int *valuators) + double *valuators) { char *buff = (char *) pDev->valuator->motion; ValuatorClassPtr v; @@ -566,6 +575,7 @@ for (i = 0; i < v->numAxes; i++) { + int val; /* XI1 doesn't support mixed mode devices */ if (valuator_get_mode(pDev, i) != valuator_get_mode(pDev, 0)) break; @@ -578,7 +588,8 @@ buff += sizeof(INT32); memcpy(buff, &v->axes[i].max_value, sizeof(INT32)); buff += sizeof(INT32); - memcpy(buff, &valuators[i], sizeof(INT32)); + val = valuators[i]; + memcpy(buff, &val, sizeof(INT32)); buff += sizeof(INT32); } } else @@ -594,12 +605,14 @@ for (i = 0; i < MAX_VALUATORS; i++) { + int val; if (valuator_mask_size(mask) <= i || !valuator_mask_isset(mask, i)) { buff += sizeof(INT32); continue; } - memcpy(buff, &valuators[i], sizeof(INT32)); + val = valuators[i]; + memcpy(buff, &val, sizeof(INT32)); buff += sizeof(INT32); } } @@ -626,8 +639,10 @@ /* One raw event * One device event * One possible device changed event + * Lots of possible separate button scroll events (horiz + vert) + * Lots of possible separate raw button scroll events (horiz + vert) */ - return 3; + return 100; } @@ -636,7 +651,7 @@ * InitValuatorAxisClassStruct. */ static void -clipAxis(DeviceIntPtr pDev, int axisNum, int *val) +clipAxis(DeviceIntPtr pDev, int axisNum, double *val) { AxisInfoPtr axis; @@ -666,9 +681,9 @@ for (i = 0; i < valuator_mask_size(mask); i++) if (valuator_mask_isset(mask, i)) { - int val = valuator_mask_get(mask, i); + double val = valuator_mask_get_double(mask, i); clipAxis(pDev, i, &val); - valuator_mask_set(mask, i, val); + valuator_mask_set_double(mask, i, val); } } @@ -693,7 +708,7 @@ if (master && master->last.slave != dev) { - CreateClassesChangedEvent(events, master, dev, type); + CreateClassesChangedEvent(events, master, dev, type | DEVCHANGE_SLAVE_SWITCH); if (IsPointerDevice(master)) { updateSlaveDeviceCoords(master, dev); @@ -709,85 +724,52 @@ /** * Move the device's pointer to the position given in the valuators. * - * @param dev The device which's pointer is to be moved. - * @param x Returns the x position of the pointer after the move. - * @param y Returns the y position of the pointer after the move. - * @param mask Bit mask of valid valuators. - * @param valuators Valuator data for each axis between @first and - * @first+@num. + * @param dev The device whose pointer is to be moved. + * @param mask Valuator data for this event. */ static void -moveAbsolute(DeviceIntPtr dev, int *x, int *y, ValuatorMask *mask) +clipAbsolute(DeviceIntPtr dev, ValuatorMask *mask) { int i; - if (valuator_mask_isset(mask, 0)) - *x = valuator_mask_get(mask, 0); - else - *x = dev->last.valuators[0]; - - if (valuator_mask_isset(mask, 1)) - *y = valuator_mask_get(mask, 1); - else - *y = dev->last.valuators[1]; - - clipAxis(dev, 0, x); - clipAxis(dev, 1, y); - - for (i = 2; i < valuator_mask_size(mask); i++) + for (i = 0; i < valuator_mask_size(mask); i++) { - if (valuator_mask_isset(mask, i)) - { - dev->last.valuators[i] = valuator_mask_get(mask, i); - clipAxis(dev, i, &dev->last.valuators[i]); - } + double val; + + if (!valuator_mask_isset(mask, i)) + continue; + val = valuator_mask_get_double(mask, i); + clipAxis(dev, i, &val); + valuator_mask_set_double(mask, i, val); } } /** * Move the device's pointer by the values given in @valuators. * - * @param dev The device which's pointer is to be moved. - * @param x Returns the x position of the pointer after the move. - * @param y Returns the y position of the pointer after the move. - * @param mask Bit mask of valid valuators. - * @param valuators Valuator data for each axis between @first and - * @first+@num. + * @param dev The device whose pointer is to be moved. + * @param[in,out] mask Valuator data for this event, modified in-place. */ static void -moveRelative(DeviceIntPtr dev, int *x, int *y, ValuatorMask *mask) +moveRelative(DeviceIntPtr dev, ValuatorMask *mask) { int i; - - *x = dev->last.valuators[0]; - *y = dev->last.valuators[1]; - - if (valuator_mask_isset(mask, 0)) - *x += valuator_mask_get(mask, 0); - - if (valuator_mask_isset(mask, 1)) - *y += valuator_mask_get(mask, 1); - - /* if attached, clip both x and y to the defined limits (usually - * co-ord space limit). If it is attached, we need x/y to go over the - * limits to be able to change screens. */ - if (dev->valuator && (IsMaster(dev) || !IsFloating(dev))) { - if (valuator_get_mode(dev, 0) == Absolute) - clipAxis(dev, 0, x); - if (valuator_get_mode(dev, 1) == Absolute) - clipAxis(dev, 1, y); - } + Bool clip_xy = IsMaster(dev) || !IsFloating(dev); /* calc other axes, clip, drop back into valuators */ - for (i = 2; i < valuator_mask_size(mask); i++) + for (i = 0; i < valuator_mask_size(mask); i++) { - if (valuator_mask_isset(mask, i)) - { - dev->last.valuators[i] += valuator_mask_get(mask, i); - if (valuator_get_mode(dev, i) == Absolute) - clipAxis(dev, i, &dev->last.valuators[i]); - valuator_mask_set(mask, i, dev->last.valuators[i]); - } + double val = dev->last.valuators[i]; + + if (!valuator_mask_isset(mask, i)) + continue; + val += valuator_mask_get_double(mask, i); + /* x & y need to go over the limits to cross screens if the SD + * isn't currently attached; otherwise, clip to screen bounds. */ + if (valuator_get_mode(dev, i) == Absolute && + ((i != 0 && i != 1) || clip_xy)) + clipAxis(dev, i, &val); + valuator_mask_set_double(mask, i, val); } } @@ -806,101 +788,158 @@ } /** - * If we have HW cursors, this actually moves the visible sprite. If not, we - * just do all the screen crossing, etc. + * Scale from absolute screen coordinates to absolute coordinates in the + * device's coordinate range. * - * We scale from device to screen coordinates here, call - * miPointerSetPosition() and then scale back into device coordinates (if - * needed). miPSP will change x/y if the screen was crossed. - * - * The coordinates provided are always absolute. The parameter mode whether - * it was relative or absolute movement that landed us at those coordinates. - * - * @param dev The device to be moved. - * @param mode Movement mode (Absolute or Relative) - * @param x Pointer to current x-axis value, may be modified. - * @param y Pointer to current y-axis value, may be modified. - * @param x_frac Fractional part of current x-axis value, may be modified. - * @param y_frac Fractional part of current y-axis value, may be modified. - * @param scr Screen the device's sprite is currently on. - * @param screenx Screen x coordinate the sprite is on after the update. - * @param screeny Screen y coordinate the sprite is on after the update. - * @param screenx_frac Fractional part of screen x coordinate, as above. - * @param screeny_frac Fractional part of screen y coordinate, as above. + * @param dev The device to scale for. + * @param[in, out] mask The mask in desktop coordinates, modified in place + * to contain device coordinate range. */ static void -positionSprite(DeviceIntPtr dev, int mode, - int *x, int *y, float x_frac, float y_frac, - ScreenPtr scr, int *screenx, int *screeny, float *screenx_frac, float *screeny_frac) -{ - int old_screenx, old_screeny; - - /* scale x&y to screen */ - if (dev->valuator && dev->valuator->numAxes > 0) { - *screenx = rescaleValuatorAxis(*x, x_frac, screenx_frac, - dev->valuator->axes + 0, NULL, scr->width); - } else { - *screenx = dev->last.valuators[0]; - *screenx_frac = dev->last.remainder[0]; - } - - if (dev->valuator && dev->valuator->numAxes > 1) { - *screeny = rescaleValuatorAxis(*y, y_frac, screeny_frac, - dev->valuator->axes + 1, NULL, scr->height); - } else { - *screeny = dev->last.valuators[1]; - *screeny_frac = dev->last.remainder[1]; - } +scale_from_screen(DeviceIntPtr dev, ValuatorMask *mask) +{ + double scaled; + ScreenPtr scr = miPointerGetScreen(dev); - /* Hit the left screen edge? */ - if (*screenx <= 0 && *screenx_frac < 0.0f) + if (valuator_mask_isset(mask, 0)) { - *screenx_frac = 0.0f; - x_frac = 0.0f; + scaled = valuator_mask_get_double(mask, 0) + scr->x; + scaled = rescaleValuatorAxis(scaled, + NULL, dev->valuator->axes + 0, + 0, scr->width); + valuator_mask_set_double(mask, 0, scaled); } - if (*screeny <= 0 && *screeny_frac < 0.0f) + if (valuator_mask_isset(mask, 1)) { - *screeny_frac = 0.0f; - y_frac = 0.0f; + scaled = valuator_mask_get_double(mask, 1) + scr->y; + scaled = rescaleValuatorAxis(scaled, + NULL, dev->valuator->axes + 1, + 0, scr->height); + valuator_mask_set_double(mask, 1, scaled); } +} - old_screenx = *screenx; - old_screeny = *screeny; - /* This takes care of crossing screens for us, as well as clipping - * to the current screen. */ - miPointerSetPosition(dev, mode, screenx, screeny); +/** + * Scale from (absolute) device to screen coordinates here, + * + * The coordinates provided are always absolute. see fill_pointer_events for + * information on coordinate systems. + * + * @param dev The device to be moved. + * @param mask Mask of axis values for this event + * @param[out] devx x desktop-wide coordinate in device coordinate system + * @param[out] devy y desktop-wide coordinate in device coordinate system + * @param[out] screenx x coordinate in desktop coordinate system + * @param[out] screeny y coordinate in desktop coordinate system + */ +static ScreenPtr +scale_to_desktop(DeviceIntPtr dev, ValuatorMask *mask, + double *devx, double *devy, + double *screenx, double *screeny) +{ + ScreenPtr scr = miPointerGetScreen(dev); + double x, y; - if(!IsMaster(dev) && !IsFloating(dev)) { - DeviceIntPtr master = GetMaster(dev, MASTER_POINTER); - master->last.valuators[0] = *screenx; - master->last.valuators[1] = *screeny; - master->last.remainder[0] = *screenx_frac; - master->last.remainder[1] = *screeny_frac; + BUG_WARN(!dev->valuator || dev->valuator->numAxes < 2); + if (!dev->valuator || dev->valuator->numAxes < 2) + { + /* if we have no axes, last.valuators must be in screen coords + * anyway */ + *devx = *screenx = dev->last.valuators[0]; + *devy = *screeny = dev->last.valuators[1]; + return scr; } - if (dev->valuator) - { - /* Crossed screen? Scale back to device coordiantes */ - if(*screenx != old_screenx) - { - scr = miPointerGetScreen(dev); - *x = rescaleValuatorAxis(*screenx, *screenx_frac, &x_frac, NULL, - dev->valuator->axes + 0, scr->width); - } - if(*screeny != old_screeny) - { - scr = miPointerGetScreen(dev); - *y = rescaleValuatorAxis(*screeny, *screeny_frac, &y_frac, NULL, - dev->valuator->axes + 1, scr->height); - } + if (valuator_mask_isset(mask, 0)) + x = valuator_mask_get_double(mask, 0); + else + x = dev->last.valuators[0]; + if (valuator_mask_isset(mask, 1)) + y = valuator_mask_get_double(mask, 1); + else + y = dev->last.valuators[1]; + + /* scale x&y to desktop coordinates */ + *screenx = rescaleValuatorAxis(x, dev->valuator->axes + 0, NULL, + screenInfo.x, screenInfo.width); + *screeny = rescaleValuatorAxis(y, dev->valuator->axes + 1, NULL, + screenInfo.y, screenInfo.height); + + *devx = x; + *devy = y; + + return scr; +} + +/** + * If we have HW cursors, this actually moves the visible sprite. If not, we + * just do all the screen crossing, etc. + * + * We use the screen coordinates here, call miPointerSetPosition() and then + * scale back into device coordinates (if needed). miPSP will change x/y if + * the screen was crossed. + * + * The coordinates provided are always absolute. The parameter mode + * specifies whether it was relative or absolute movement that landed us at + * those coordinates. see fill_pointer_events for information on coordinate + * systems. + * + * @param dev The device to be moved. + * @param mode Movement mode (Absolute or Relative) + * @param[out] mask Mask of axis values for this event, returns the + * per-screen device coordinates after confinement + * @param[in,out] devx x desktop-wide coordinate in device coordinate system + * @param[in,out] devy y desktop-wide coordinate in device coordinate system + * @param[in,out] screenx x coordinate in desktop coordinate system + * @param[in,out] screeny y coordinate in desktop coordinate system + */ +static ScreenPtr +positionSprite(DeviceIntPtr dev, int mode, ValuatorMask *mask, + double *devx, double *devy, + double *screenx, double *screeny) +{ + ScreenPtr scr = miPointerGetScreen(dev); + double tmpx, tmpy; + + if (!dev->valuator || dev->valuator->numAxes < 2) + return scr; + + tmpx = *screenx; + tmpy = *screeny; + + /* miPointerSetPosition takes care of crossing screens for us, as well as + * clipping to the current screen. Coordinates returned are in desktop + * coord system */ + scr = miPointerSetPosition(dev, mode, screenx, screeny); + + /* If we were constrained, rescale x/y from the screen coordinates so + * the device valuators reflect the correct position. For screen + * crossing this doesn't matter much, the coords would be 0 or max. + */ + if (tmpx != *screenx) + *devx = rescaleValuatorAxis(*screenx, NULL, dev->valuator->axes + 0, + screenInfo.x, screenInfo.width); + + if (tmpy != *screeny) + *devy = rescaleValuatorAxis(*screeny, NULL, dev->valuator->axes + 1, + screenInfo.y, screenInfo.height); + + /* Recalculate the per-screen device coordinates */ + if (valuator_mask_isset(mask, 0)) { + double x; + x = rescaleValuatorAxis(*screenx - scr->x, NULL, dev->valuator->axes + 0, + 0, scr->width); + valuator_mask_set_double(mask, 0, x); + } + if (valuator_mask_isset(mask, 1)) { + double y; + y = rescaleValuatorAxis(*screeny - scr->y, NULL, dev->valuator->axes + 1, + 0, scr->height); + valuator_mask_set_double(mask, 1, y); } - /* dropy x/y (device coordinates) back into valuators for next event */ - dev->last.valuators[0] = *x; - dev->last.valuators[1] = *y; - dev->last.remainder[0] = x_frac; - dev->last.remainder[1] = y_frac; + return scr; } /** @@ -933,6 +972,15 @@ mieqEnqueue(device, &events[i]); } +static void +event_set_root_coordinates(DeviceEvent* event, double x, double y) +{ + event->root_x = trunc(x); + event->root_y = trunc(y); + event->root_x_frac = x - trunc(x); + event->root_y_frac = y - trunc(y); +} + /** * Generate internal events representing this keyboard event and enqueue * them on the event queue. @@ -984,6 +1032,11 @@ (key_code < 8 || key_code > 255)) return 0; + if (mask_in && valuator_mask_size(mask_in) > 1) { + ErrorF("[dix] the server does not handle valuator masks with " + "keyboard events. This is a bug. You may fix it.\n"); + } + num_events = 1; events = UpdateFromMaster(events, pDev, DEVCHANGE_KEYBOARD_EVENT, &num_events); @@ -1014,7 +1067,7 @@ set_raw_valuators(raw, &mask, raw->valuators.data); event = &events->device_event; - init_event(pDev, event, ms); + init_device_event(event, pDev, ms); event->detail.key = key_code; if (type == KeyPress) { @@ -1030,6 +1083,13 @@ set_valuators(pDev, event, &mask); + if (!IsFloating(pDev)) { + DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER); + event_set_root_coordinates(event, + master->last.valuators[0], + master->last.valuators[1]); + } + return num_events; } @@ -1064,32 +1124,69 @@ * back into x/y. */ static void -transform(struct pixman_f_transform *m, int *x, int *y) +transform(struct pixman_f_transform *m, double *x, double *y) { struct pixman_f_vector p = {.v = {*x, *y, 1}}; pixman_f_transform_point(m, &p); - *x = lround(p.v[0]); - *y = lround(p.v[1]); + *x = p.v[0]; + *y = p.v[1]; } +/** + * Apply the device's transformation matrix to the valuator mask and replace + * the scaled values in mask. This transformation only applies to valuators + * 0 and 1, others will be untouched. + * + * @param dev The device the valuators came from + * @param[in,out] mask The valuator mask. + */ static void transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask) { - int x, y, ox, oy; + double x, y, ox, oy; + + if (valuator_mask_isset(mask, 0)) + ox = x = valuator_mask_get_double(mask, 0); + else + ox = x = dev->last.valuators[0]; - ox = x = valuator_mask_isset(mask, 0) ? valuator_mask_get(mask, 0) : - dev->last.valuators[0]; - oy = y = valuator_mask_isset(mask, 1) ? valuator_mask_get(mask, 1) : - dev->last.valuators[1]; + if (valuator_mask_isset(mask, 1)) + oy = y = valuator_mask_get_double(mask, 1); + else + oy = y = dev->last.valuators[1]; transform(&dev->transform, &x, &y); if (valuator_mask_isset(mask, 0) || ox != x) - valuator_mask_set(mask, 0, x); + valuator_mask_set_double(mask, 0, x); if (valuator_mask_isset(mask, 1) || oy != y) - valuator_mask_set(mask, 1, y); + valuator_mask_set_double(mask, 1, y); +} + +static void +storeLastValuators(DeviceIntPtr dev, ValuatorMask *mask, + int xaxis, int yaxis, + double devx, double devy) +{ + int i; + + /* store desktop-wide in last.valuators */ + if (valuator_mask_isset(mask, xaxis)) + dev->last.valuators[0] = devx; + if (valuator_mask_isset(mask, yaxis)) + dev->last.valuators[1] = devy; + + for (i = 0; i < valuator_mask_size(mask); i++) + { + if (i == xaxis || i == yaxis) + continue; + + if (valuator_mask_isset(mask, i)) + dev->last.valuators[i] = valuator_mask_get_double(mask, i); + } + } /** @@ -1116,45 +1213,66 @@ } /** - * Generate a series of InternalEvents representing pointer motion, or - * button presses. + * Helper function for GetPointerEvents, which only generates motion and + * raw motion events for the slave device: does not update the master device. * - * The DDX is responsible for allocating the events in the first - * place via InitEventList() and GetMaximumEventsNum(), and for freeing it. - * - * In the generated events rootX/Y will be in absolute screen coords and - * the valuator information in the absolute or relative device coords. - * - * last.valuators[x] of the device is always in absolute device coords. - * last.valuators[x] of the master device is in absolute screen coords. + * Should not be called by anyone other than GetPointerEvents. * - * master->last.valuators[x] for x > 2 is undefined. + * We use several different coordinate systems and need to switch between + * the three in fill_pointer_events, positionSprite and + * miPointerSetPosition. "desktop" refers to the width/height of all + * screenInfo.screens[n]->width/height added up. "screen" is ScreenRec, not + * output. + * + * Coordinate systems: + * - relative events have a mask_in in relative coordinates, mapped to + * pixels. These events are mapped to the current position±delta. + * - absolute events have a mask_in in absolute device coordinates in + * device-specific range. This range is mapped to the desktop. + * - POINTER_SCREEN absolute events (x86WarpCursor) are in screen-relative + * screen coordinate range. + * - rootx/rooty in events must be be relative to the current screen's + * origin (screen coordinate system) + * - XI2 valuators must be relative to the current screen's origin. On + * the protocol the device min/max range maps to the current screen. + * + * For screen switching we need to get the desktop coordinates for each + * event, then map that to the respective position on each screen and + * position the cursor there. + * The device's last.valuator[] stores the last position in desktop-wide + * coordinates (in device range for slave devices, desktop range for master + * devices). + * + * screen-relative device coordinates requires scaling: A device coordinate + * x/y of range [n..m] that maps to positions Sx/Sy on Screen S must be + * rescaled to match Sx/Sy for [n..m]. In the simplest example, x of (m/2-1) + * is the last coordinate on the first screen and must be rescaled for the + * event to be m. XI2 clients that do their own coordinate mapping would + * otherwise interpret the position of the device elsewere to the cursor. * * @return the number of events written into events. */ -int -GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons, - int flags, const ValuatorMask *mask_in) { +static int +fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, + int buttons, CARD32 ms, int flags, + const ValuatorMask *mask_in) +{ int num_events = 1; - CARD32 ms; DeviceEvent *event; - RawDeviceEvent *raw; - int x = 0, y = 0, /* device coords */ - cx, cy; /* only screen coordinates */ - float x_frac = 0.0, y_frac = 0.0, cx_frac, cy_frac; - ScreenPtr scr = miPointerGetScreen(pDev); + RawDeviceEvent *raw; + double screenx = 0.0, screeny = 0.0; /* desktop coordinate system */ + double devx = 0.0, devy = 0.0; /* desktop-wide in device coords */ ValuatorMask mask; - - /* refuse events from disabled devices */ - if (!pDev->enabled) - return 0; - - if (!scr) - return 0; + ScreenPtr scr; switch (type) { case MotionNotify: + if (!pDev->valuator) + { + ErrorF("[dix] motion events from device %d without valuators\n", pDev->id); + return 0; + } if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0) return 0; break; @@ -1162,15 +1280,16 @@ case ButtonRelease: if (!pDev->button || !buttons) return 0; + if (mask_in && valuator_mask_size(mask_in) > 0 && !pDev->valuator) + { + ErrorF("[dix] button event with valuator from device %d without valuators\n", pDev->id); + return 0; + } break; default: return 0; } - ms = GetTimeInMillis(); /* before pointer update to help precision */ - - events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); - valuator_mask_copy(&mask, mask_in); if ((flags & POINTER_NORAW) == 0) @@ -1180,63 +1299,52 @@ num_events++; init_raw(pDev, raw, ms, type, buttons); - set_raw_valuators(raw, &mask, raw->valuators.data_raw); + set_raw_valuators(raw, &mask, raw->valuators.data_raw); } + /* valuators are in driver-native format (rel or abs) */ + if (flags & POINTER_ABSOLUTE) { if (flags & POINTER_SCREEN) /* valuators are in screen coords */ - { - int scaled; - - if (valuator_mask_isset(&mask, 0)) - { - scaled = rescaleValuatorAxis(valuator_mask_get(&mask, 0), - 0.0, &x_frac, NULL, - pDev->valuator->axes + 0, - scr->width); - valuator_mask_set(&mask, 0, scaled); - } - if (valuator_mask_isset(&mask, 1)) - { - scaled = rescaleValuatorAxis(valuator_mask_get(&mask, 1), - 0.0, &y_frac, NULL, - pDev->valuator->axes + 1, - scr->height); - valuator_mask_set(&mask, 1, scaled); - } - } + scale_from_screen(pDev, &mask); transformAbsolute(pDev, &mask); - moveAbsolute(pDev, &x, &y, &mask); + clipAbsolute(pDev, &mask); + if ((flags & POINTER_NORAW) == 0) + set_raw_valuators(raw, &mask, raw->valuators.data); } else { - if (flags & POINTER_ACCELERATE) { + if (flags & POINTER_ACCELERATE) accelPointer(pDev, &mask, ms); - /* The pointer acceleration code modifies the fractional part - * in-place, so we need to extract this information first */ - x_frac = pDev->last.remainder[0]; - y_frac = pDev->last.remainder[1]; - } - moveRelative(pDev, &x, &y, &mask); + if ((flags & POINTER_NORAW) == 0) + set_raw_valuators(raw, &mask, raw->valuators.data); + + moveRelative(pDev, &mask); } - if ((flags & POINTER_NORAW) == 0) - set_raw_valuators(raw, &mask, raw->valuators.data); + /* valuators are in device coordinate system in absolute coordinates */ + scale_to_desktop(pDev, &mask, &devx, &devy, &screenx, &screeny); + scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative, + &mask, &devx, &devy, &screenx, &screeny); - positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative, - &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); + /* screenx, screeny are in desktop coordinates, + mask is in device coordinates per-screen (the event data) + devx/devy is in device coordinate desktop-wide */ updateHistory(pDev, &mask, ms); - /* Update the valuators with the true value sent to the client*/ - if (valuator_mask_isset(&mask, 0)) - valuator_mask_set(&mask, 0, x); - if (valuator_mask_isset(&mask, 1)) - valuator_mask_set(&mask, 1, y); - clipValuators(pDev, &mask); + storeLastValuators(pDev, &mask, 0, 1, devx, devy); + + /* Update the MD's co-ordinates, which are always in desktop space. */ + if (!IsMaster(pDev) && !IsFloating(pDev)) { + DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER); + master->last.valuators[0] = screenx; + master->last.valuators[1] = screeny; + } + event = &events->device_event; - init_event(pDev, event, ms); + init_device_event(event, pDev, ms); if (type == MotionNotify) { event->type = ET_Motion; @@ -1254,10 +1362,13 @@ event->detail.button = buttons; } - event->root_x = cx; /* root_x/y always in screen coords */ - event->root_y = cy; - event->root_x_frac = cx_frac; - event->root_y_frac = cy_frac; + /* root_x and root_y must be in per-screen co-ordinates */ + event_set_root_coordinates(event, screenx - scr->x, screeny - scr->y); + + if (flags & POINTER_EMULATED) { + raw->flags = XIPointerEmulated; + event->flags = XIPointerEmulated; + } set_valuators(pDev, event, &mask); @@ -1265,6 +1376,225 @@ } /** + * Generate events for each scroll axis that changed between before/after + * for the device. + * + * @param events The pointer to the event list to fill the events + * @param dev The device to generate the events for + * @param type The real type of the event + * @param axis The axis number to generate events for + * @param mask State before this event in absolute coords + * @param[in,out] last Last scroll state posted in absolute coords (modified + * in-place) + * @param ms Current time in ms + * @param max_events Max number of events to be generated + * @return The number of events generated + */ +static int +emulate_scroll_button_events(InternalEvent *events, + DeviceIntPtr dev, + int type, + int axis, + const ValuatorMask *mask, + ValuatorMask *last, + CARD32 ms, + int max_events) +{ + AxisInfoPtr ax; + double delta; + double incr; + int num_events = 0; + double total; + int b; + int flags = 0; + + if (dev->valuator->axes[axis].scroll.type == SCROLL_TYPE_NONE) + return 0; + + if (!valuator_mask_isset(mask, axis)) + return 0; + + ax = &dev->valuator->axes[axis]; + incr = ax->scroll.increment; + + if (type != ButtonPress && type != ButtonRelease) + flags |= POINTER_EMULATED; + + if (!valuator_mask_isset(last, axis)) + valuator_mask_set_double(last, axis, 0); + + delta = valuator_mask_get_double(mask, axis) - valuator_mask_get_double(last, axis); + total = delta; + b = (ax->scroll.type == SCROLL_TYPE_VERTICAL) ? 5 : 7; + + if ((incr > 0 && delta < 0) || + (incr < 0 && delta > 0)) + b--; /* we're scrolling up or left → button 4 or 6 */ + + while (fabs(delta) >= fabs(incr)) + { + int nev_tmp; + + if (delta > 0) + delta -= fabs(incr); + else if (delta < 0) + delta += fabs(incr); + + /* fill_pointer_events() generates four events: one normal and one raw + * event for button press and button release. + * We may get a bigger scroll delta than we can generate events + * for. In that case, we keep decreasing delta, but skip events. + */ + if (num_events + 4 < max_events) + { + if (type != ButtonRelease) + { + nev_tmp = fill_pointer_events(events, dev, ButtonPress, b, ms, + flags, NULL); + events += nev_tmp; + num_events += nev_tmp; + } + if (type != ButtonPress) + { + nev_tmp = fill_pointer_events(events, dev, ButtonRelease, b, ms, + flags, NULL); + events += nev_tmp; + num_events += nev_tmp; + } + } + } + + /* We emulated, update last.scroll */ + if (total != delta) + { + total -= delta; + valuator_mask_set_double(last, axis, + valuator_mask_get_double(last, axis) + total); + } + + return num_events; +} + + +/** + * Generate a complete series of InternalEvents (filled into the EventList) + * representing pointer motion, or button presses. If the device is a slave + * device, also potentially generate a DeviceClassesChangedEvent to update + * the master device. + * + * events is not NULL-terminated; the return value is the number of events. + * The DDX is responsible for allocating the event structure in the first + * place via InitEventList() and GetMaximumEventsNum(), and for freeing it. + * + * In the generated events rootX/Y will be in absolute screen coords and + * the valuator information in the absolute or relative device coords. + * + * last.valuators[x] of the device is always in absolute device coords. + * last.valuators[x] of the master device is in absolute screen coords. + * + * master->last.valuators[x] for x > 2 is undefined. + */ +int +GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, + int buttons, int flags, const ValuatorMask *mask_in) +{ + CARD32 ms = GetTimeInMillis(); + int num_events = 0, nev_tmp; + ValuatorMask mask; + ValuatorMask scroll; + int i; + int realtype = type; + + /* refuse events from disabled devices */ + if (!pDev->enabled) + return 0; + + if (!miPointerGetScreen(pDev)) + return 0; + + events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, + &num_events); + + valuator_mask_copy(&mask, mask_in); + + /* Turn a scroll button press into a smooth-scrolling event if + * necessary. This only needs to cater for the XIScrollFlagPreferred + * axis (if more than one scrolling axis is present) */ + if (type == ButtonPress) + { + double val, adj; + int axis; + int h_scroll_axis = -1; + int v_scroll_axis = -1; + + if (pDev->valuator) + { + h_scroll_axis = pDev->valuator->h_scroll_axis; + v_scroll_axis = pDev->valuator->v_scroll_axis; + } + + /* Up is negative on valuators, down positive */ + switch (buttons) { + case 4: + adj = -1.0; + axis = v_scroll_axis; + break; + case 5: + adj = 1.0; + axis = v_scroll_axis; + break; + case 6: + adj = -1.0; + axis = h_scroll_axis; + break; + case 7: + adj = 1.0; + axis = h_scroll_axis; + break; + default: + adj = 0.0; + axis = -1; + break; + } + + if (adj != 0.0 && axis != -1) + { + adj *= pDev->valuator->axes[axis].scroll.increment; + val = valuator_mask_get_double(&mask, axis) + adj; + valuator_mask_set_double(&mask, axis, val); + type = MotionNotify; + buttons = 0; + flags |= POINTER_EMULATED; + } + } + + /* First fill out the original event set, with smooth-scrolling axes. */ + nev_tmp = fill_pointer_events(events, pDev, type, buttons, ms, flags, + &mask); + events += nev_tmp; + num_events += nev_tmp; + + valuator_mask_zero(&scroll); + + /* Now turn the smooth-scrolling axes back into emulated button presses + * for legacy clients, based on the integer delta between before and now */ + for (i = 0; i < valuator_mask_size(&mask); i++) { + if (!valuator_mask_isset(&mask, i)) + continue; + + valuator_mask_set_double(&scroll, i, pDev->last.valuators[i]); + + nev_tmp = emulate_scroll_button_events(events, pDev, realtype, i, &scroll, + pDev->last.scroll, ms, + GetMaximumEventsNum() - num_events); + events += nev_tmp; + num_events += nev_tmp; + } + + return num_events; +} + +/** * Generate internal events representing this proximity event and enqueue * them on the event queue. * @@ -1329,7 +1659,7 @@ events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events); event = &events->device_event; - init_event(pDev, event, GetTimeInMillis()); + init_device_event(event, pDev, GetTimeInMillis()); event->type = (type == ProximityIn) ? ET_ProximityIn : ET_ProximityOut; clipValuators(pDev, &mask); @@ -1339,6 +1669,261 @@ return num_events; } +int +GetTouchOwnershipEvents(InternalEvent *events, DeviceIntPtr pDev, + TouchPointInfoPtr ti, uint8_t reason, XID resource, + uint32_t flags) +{ + TouchClassPtr t = pDev->touch; + TouchOwnershipEvent *event; + CARD32 ms = GetTimeInMillis(); + + if (!pDev->enabled || !t || !ti) + return 0; + + event = &events->touch_ownership_event; + init_touch_ownership(pDev, event, ms); + + event->touchid = ti->client_id; + event->sourceid = ti->sourceid; + event->resource = resource; + event->flags = flags; + event->reason = reason; + + return 1; +} + +/** + * Generate internal events representing this touch event and enqueue them + * on the event queue. + * + * This function is not reentrant. Disable signals before calling. + * + * @param device The device to generate the event for + * @param type Event type, one of XI_TouchBegin, XI_TouchUpdate, XI_TouchEnd + * @param touchid Touch point ID + * @param flags Event modification flags + * @param mask Valuator mask for valuators present for this event. + */ +void +QueueTouchEvents(DeviceIntPtr device, int type, + uint32_t ddx_touchid, int flags, const ValuatorMask *mask) +{ + int nevents; + + nevents = GetTouchEvents(InputEventList, device, ddx_touchid, type, flags, mask); + queueEventList(device, InputEventList, nevents); +} + +/** + * Get events for a touch. Generates a TouchBegin event if end is not set and + * the touch id is not active. Generates a TouchUpdate event if end is not set + * and the touch id is active. Generates a TouchEnd event if end is set and the + * touch id is active. + * + * events is not NULL-terminated; the return value is the number of events. + * The DDX is responsible for allocating the event structure in the first + * place via GetMaximumEventsNum(), and for freeing it. + * + * @param[out] events The list of events generated + * @param dev The device to generate the events for + * @param ddx_touchid The touch ID as assigned by the DDX + * @param type XI_TouchBegin, XI_TouchUpdate or XI_TouchEnd + * @param flags Event flags + * @param mask_in Valuator information for this event + */ +int +GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + uint16_t type, uint32_t flags, const ValuatorMask *mask_in) +{ + ScreenPtr scr = dev->spriteInfo->sprite->hotPhys.pScreen; + TouchClassPtr t = dev->touch; + ValuatorClassPtr v = dev->valuator; + DeviceEvent *event; + CARD32 ms = GetTimeInMillis(); + ValuatorMask mask; + double screenx = 0.0, screeny = 0.0; /* desktop coordinate system */ + double devx = 0.0, devy = 0.0; /* desktop-wide in device coords */ + int i; + int num_events = 0; + RawDeviceEvent *raw; + union touch { + TouchPointInfoPtr dix_ti; + DDXTouchPointInfoPtr ti; + } touchpoint; + int need_rawevent = TRUE; + Bool emulate_pointer = FALSE; + int client_id = 0; + + if (!dev->enabled || !t || !v) + return 0; + + /* Find and/or create the DDX touch info */ + + if (flags & TOUCH_CLIENT_ID) /* A DIX-submitted TouchEnd */ + { + touchpoint.dix_ti = TouchFindByClientID(dev, ddx_touchid); + BUG_WARN(!touchpoint.dix_ti); + + if (!touchpoint.dix_ti) + return 0; + + if (!mask_in || + !valuator_mask_isset(mask_in, 0) || + !valuator_mask_isset(mask_in, 1)) + { + ErrorF("[dix] dix-submitted events must have x/y valuator information.\n"); + return 0; + } + + need_rawevent = FALSE; + client_id = touchpoint.dix_ti->client_id; + } else /* a DDX-submitted touch */ + { + touchpoint.ti = TouchFindByDDXID(dev, ddx_touchid, (type == XI_TouchBegin)); + if (!touchpoint.ti) + { + ErrorF("[dix] %s: unable to %s touch point %x\n", dev->name, + type == XI_TouchBegin ? "begin" : "find", ddx_touchid); + return 0; + } + client_id = touchpoint.ti->client_id; + } + + if (!(flags & TOUCH_CLIENT_ID)) + emulate_pointer = touchpoint.ti->emulate_pointer; + else + emulate_pointer = !!(flags & TOUCH_POINTER_EMULATED); + + if (!IsMaster(dev)) + events = UpdateFromMaster(events, dev, DEVCHANGE_POINTER_EVENT, &num_events); + + valuator_mask_copy(&mask, mask_in); + + if (need_rawevent) + { + raw = &events->raw_event; + events++; + num_events++; + init_raw(dev, raw, ms, type, client_id); + set_raw_valuators(raw, &mask, raw->valuators.data_raw); + } + + event = &events->device_event; + num_events++; + + init_event(dev, event, ms); + /* if submitted for master device, get the sourceid from there */ + if (flags & TOUCH_CLIENT_ID) + { + event->sourceid = touchpoint.dix_ti->sourceid; + /* TOUCH_CLIENT_ID implies norawevent */ + } + + switch (type) { + case XI_TouchBegin: + event->type = ET_TouchBegin; + /* If we're starting a touch, we must have x & y co-ordinates. */ + if (!mask_in || + !valuator_mask_isset(mask_in, 0) || + !valuator_mask_isset(mask_in, 1)) + { + ErrorF("%s: Attempted to start touch without x/y (driver bug)\n", + dev->name); + return 0; + } + break; + case XI_TouchUpdate: + event->type = ET_TouchUpdate; + if (!mask_in || valuator_mask_num_valuators(mask_in) <= 0) + { + ErrorF("%s: TouchUpdate with no valuators? Driver bug\n", + dev->name); + } + break; + case XI_TouchEnd: + event->type = ET_TouchEnd; + /* We can end the DDX touch here, since we don't use the active + * field below */ + if (!(flags & TOUCH_CLIENT_ID)) + TouchEndDDXTouch(dev, touchpoint.ti); + break; + default: + return 0; + } + if (t->mode == XIDirectTouch && !(flags & TOUCH_CLIENT_ID)) + { + if (!valuator_mask_isset(&mask, 0)) + valuator_mask_set_double(&mask, 0, valuator_mask_get_double(touchpoint.ti->valuators, 0)); + if (!valuator_mask_isset(&mask, 1)) + valuator_mask_set_double(&mask, 1, valuator_mask_get_double(touchpoint.ti->valuators, 1)); + } + + /* Get our screen event co-ordinates (root_x/root_y/event_x/event_y): + * these come from the touchpoint in Absolute mode, or the sprite in + * Relative. */ + if (t->mode == XIDirectTouch) { + transformAbsolute(dev, &mask); + + if (!(flags & TOUCH_CLIENT_ID)) { + for (i = 0; i < valuator_mask_size(&mask); i++) { + double val; + if (valuator_mask_fetch_double(&mask, i, &val)) + valuator_mask_set_double(touchpoint.ti->valuators, i, val); + } + } + + clipAbsolute(dev, &mask); + } + else { + screenx = dev->spriteInfo->sprite->hotPhys.x; + screeny = dev->spriteInfo->sprite->hotPhys.y; + } + if (need_rawevent) + set_raw_valuators(raw, &mask, raw->valuators.data); + + /* Indirect device touch coordinates are not used for cursor positioning. + * They are merely informational, and are provided in device coordinates. + * The device sprite is used for positioning instead, and it is already + * scaled. */ + if (t->mode == XIDirectTouch) + scr = scale_to_desktop(dev, &mask, &devx, &devy, &screenx, &screeny); + if (emulate_pointer) + scr = positionSprite(dev, Absolute, &mask, + &devx, &devy, &screenx, &screeny); + + /* see fill_pointer_events for coordinate systems */ + if (emulate_pointer) + updateHistory(dev, &mask, ms); + + clipValuators(dev, &mask); + + if (emulate_pointer) + storeLastValuators(dev, &mask, 0, 1, devx, devy); + + event->root = scr->root->drawable.id; + + event_set_root_coordinates(event, screenx, screeny); + event->touchid = client_id; + event->flags = flags; + + if (emulate_pointer) + { + event->flags |= TOUCH_POINTER_EMULATED; + event->detail.button = 1; + } + + set_valuators(dev, event, &mask); + for (i = 0; i < v->numAxes; i++) + { + if (valuator_mask_isset(&mask, i)) + v->axisVal[i] = valuator_mask_get(&mask, i); + } + + return num_events; +} + + /** * Synthesize a single motion event for the core pointer. * @@ -1365,7 +1950,7 @@ #endif memset(&ev, 0, sizeof(DeviceEvent)); - init_event(pDev, &ev, time); + init_device_event(&ev, pDev, time); ev.root_x = x; ev.root_y = y; ev.type = ET_Motion; --- xorg-server-1.11.4.orig/dix/devices.c +++ xorg-server-1.11.4/dix/devices.c @@ -73,6 +73,7 @@ #include "dixevents.h" #include "mipointer.h" #include "eventstr.h" +#include "dixgrabs.h" #include #include @@ -260,6 +261,9 @@ offsetof(DeviceIntRec, devPrivates), PRIVATE_DEVICE); if (!dev) return (DeviceIntPtr)NULL; + + dev->last.scroll = NULL; + dev->last.touches = NULL; dev->id = devid; dev->public.processInputProc = ProcessOtherEvent; dev->public.realInputProc = ProcessOtherEvent; @@ -271,6 +275,8 @@ dev->deviceGrab.grabTime = currentTime; dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab; dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab; + dev->deviceGrab.activeGrab = AllocGrab(); + dev->deviceGrab.sync.event = calloc(1, sizeof(DeviceEvent)); XkbSetExtension(dev, ProcessKeyboardEvent); @@ -610,6 +616,7 @@ int i = 0; Atom btn_labels[NBUTTONS] = {0}; Atom axes_labels[NAXES] = {0}; + ScreenPtr scr = screenInfo.screens[0]; switch (what) { case DEVICE_INIT: @@ -636,10 +643,11 @@ pDev->name); return BadAlloc; /* IPDS only fails on allocs */ } - pDev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2; - pDev->last.valuators[0] = pDev->valuator->axisVal[0]; - pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2; - pDev->last.valuators[1] = pDev->valuator->axisVal[1]; + /* axisVal is per-screen, last.valuators is desktop-wide */ + pDev->valuator->axisVal[0] = scr->width / 2; + pDev->last.valuators[0] = pDev->valuator->axisVal[0] + scr->x; + pDev->valuator->axisVal[1] = scr->height / 2; + pDev->last.valuators[1] = pDev->valuator->axisVal[1] + scr->y; break; case DEVICE_CLOSE: @@ -754,6 +762,21 @@ free((*v)); break; } + case XITouchClass: + { + TouchClassPtr *t = (TouchClassPtr*)class; + int i; + + for (i = 0; i < (*t)->num_touches; i++) + { + free((*t)->touches[i].sprite.spriteTrace); + free((*t)->touches[i].listeners); + free((*t)->touches[i].valuators); + } + + free((*t)); + break; + } case FocusClass: { FocusClassPtr *f = (FocusClassPtr*)class; @@ -862,6 +885,7 @@ FreeDeviceClass(KeyClass, (pointer)&classes->key); FreeDeviceClass(ValuatorClass, (pointer)&classes->valuator); + FreeDeviceClass(XITouchClass, (pointer)&classes->touch); FreeDeviceClass(ButtonClass, (pointer)&classes->button); FreeDeviceClass(FocusClass, (pointer)&classes->focus); FreeDeviceClass(ProximityClass, (pointer)&classes->proximity); @@ -937,8 +961,13 @@ } } + FreeGrab(dev->deviceGrab.activeGrab); free(dev->deviceGrab.sync.event); free(dev->config_info); /* Allocated in xf86ActivateDevice. */ + free(dev->last.scroll); + for (j = 0; j < dev->last.num_touches; j++) + free(dev->last.touches[j].valuators); + free(dev->last.touches); dev->config_info = NULL; dixFreeObjectWithPrivates(dev, PRIVATE_DEVICE); } @@ -1281,10 +1310,19 @@ if (!valc) return FALSE; + dev->last.scroll = valuator_mask_new(numAxes); + if (!dev->last.scroll) + { + free(valc); + return FALSE; + } + valc->sourceid = dev->id; valc->motion = NULL; valc->first_motion = 0; valc->last_motion = 0; + valc->h_scroll_axis = -1; + valc->v_scroll_axis = -1; valc->numMotionEvents = numMotionEvents; valc->motionHintWindow = NullWindow; @@ -1401,7 +1439,6 @@ return TRUE; } - static LedCtrl defaultLedControl = { DEFAULT_LEDS, DEFAULT_LEDS_MASK, 0}; @@ -1524,6 +1561,72 @@ InitPtrFeedbackClassDeviceStruct(dev, controlProc)); } +/** + * Sets up multitouch capabilities on @device. + * + * @max_touches The maximum number of simultaneous touches, or 0 for unlimited. + * @mode The mode of the touch device (XIDirectTouch or XIDependentTouch). + * @num_axes The number of touch valuator axes. + */ +Bool +InitTouchClassDeviceStruct(DeviceIntPtr device, unsigned int max_touches, + unsigned int mode, unsigned int num_axes) +{ + TouchClassPtr touch; + int i; + + if (device->touch || !device->valuator) + return FALSE; + + /* Check the mode is valid, and at least X and Y axes. */ + if (mode != XIDirectTouch && mode != XIDependentTouch) + return FALSE; + if (num_axes < 2) + return FALSE; + + if (num_axes > MAX_VALUATORS) + { + LogMessage(X_WARNING, + "Device '%s' has %d touch axes, only using first %d.\n", + device->name, num_axes, MAX_VALUATORS); + num_axes = MAX_VALUATORS; + } + + touch = calloc(1, sizeof(*touch)); + if (!touch) + return FALSE; + + touch->max_touches = max_touches; + if (max_touches == 0) + max_touches = 5; /* arbitrary number plucked out of the air */ + touch->touches = calloc(max_touches, sizeof(*touch->touches)); + if (!touch->touches) + goto err; + touch->num_touches = max_touches; + for (i = 0; i < max_touches; i++) + TouchInitTouchPoint(touch, device->valuator, i); + + touch->mode = mode; + touch->sourceid = device->id; + + device->touch = touch; + device->last.touches = calloc(max_touches, sizeof(*device->last.touches)); + device->last.num_touches = touch->num_touches; + for (i = 0; i < touch->num_touches; i++) + TouchInitDDXTouchPoint(device, &device->last.touches[i]); + + return TRUE; + +err: + for (i = 0; i < touch->num_touches; i++) + TouchFreeTouchPoint(device, i); + + free(touch->touches); + free(touch); + + return FALSE; +} + /* * Check if the given buffer contains elements between low (inclusive) and * high (inclusive) only. @@ -2352,7 +2455,7 @@ event.keys.max_keycode = master->key->xkbInfo->desc->max_key_code; } - XISendDeviceChangedEvent(master, master, &event); + XISendDeviceChangedEvent(master, &event); } } @@ -2410,7 +2513,6 @@ AttachDevice(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr master) { ScreenPtr screen; - DeviceIntPtr oldmaster; if (!dev || IsMaster(dev)) return BadDevice; @@ -2429,7 +2531,6 @@ free(dev->spriteInfo->sprite); } - oldmaster = GetMaster(dev, MASTER_ATTACHED); dev->master = master; /* If device is set to floating, we need to create a sprite for it, @@ -2488,16 +2589,22 @@ /** - * Returns the right master for the type of event needed. If the event is a - * keyboard event. - * This function may be called with a master device as argument. If so, the - * returned master is either the device itself or the paired master device. - * If dev is a floating slave device, NULL is returned. + * Returns the requested master for this device. + * The return values are: + * - MASTER_ATTACHED: the master for this device or NULL for a floating + * slave. + * - MASTER_KEYBOARD: the master keyboard for this device or NULL for a + * floating slave + * - MASTER_POINTER: the master keyboard for this device or NULL for a + * floating slave + * - POINTER_OR_FLOAT: the master pointer for this device or the device for + * a floating slave + * - KEYBOARD_OR_FLOAT: the master keyboard for this device or the device for + * a floating slave * - * @type ::MASTER_KEYBOARD or ::MASTER_POINTER or ::MASTER_ATTACHED - * @return The requested master device. In the case of MASTER_ATTACHED, this - * is the directly attached master to this device, regardless of the type. - * Otherwise, it is either the master keyboard or pointer for this device. + * @param which ::MASTER_KEYBOARD or ::MASTER_POINTER, ::MASTER_ATTACHED, + * ::POINTER_OR_FLOAT or ::KEYBOARD_OR_FLOAT. + * @return The requested master device */ DeviceIntPtr GetMaster(DeviceIntPtr dev, int which) @@ -2506,12 +2613,15 @@ if (IsMaster(dev)) master = dev; - else + else { master = dev->master; + if (!master && (which == POINTER_OR_FLOAT || which == KEYBOARD_OR_FLOAT)) + return dev; + } if (master && which != MASTER_ATTACHED) { - if (which == MASTER_KEYBOARD) + if (which == MASTER_KEYBOARD || which == KEYBOARD_OR_FLOAT) { if (master->type != MASTER_KEYBOARD) master = GetPairedDevice(master); --- xorg-server-1.11.4.orig/dix/ptrveloc.c +++ xorg-server-1.11.4/dix/ptrveloc.c @@ -63,9 +63,9 @@ /* fwds */ int SetAccelerationProfile(DeviceVelocityPtr vel, int profile_num); -static float -SimpleSmoothProfile(DeviceIntPtr dev, DeviceVelocityPtr vel, float velocity, - float threshold, float acc); +static double +SimpleSmoothProfile(DeviceIntPtr dev, DeviceVelocityPtr vel, double velocity, + double threshold, double acc); static PointerAccelerationProfileFunc GetAccelerationProfile(DeviceVelocityPtr vel, int profile_num); static BOOL @@ -478,14 +478,10 @@ else dir = UNDEFINED; /* shouldn't happen */ } else { /* compute angle and set appropriate flags */ - float r; + double r; int i1, i2; -#ifdef _ISOC99_SOURCE - r = atan2f(dy, dx); -#else r = atan2(dy, dx); -#endif /* find direction. * * Add 360° to avoid r become negative since C has no well-defined @@ -524,8 +520,7 @@ GetDirection(int dx, int dy){ static int cache[DIRECTION_CACHE_SIZE][DIRECTION_CACHE_SIZE]; int dir; - if (abs(dx) <= DIRECTION_CACHE_RANGE && - abs(dy) <= DIRECTION_CACHE_RANGE) { + if (abs(dx) <= DIRECTION_CACHE_RANGE && abs(dy) <= DIRECTION_CACHE_RANGE) { /* cacheable */ dir = cache[DIRECTION_CACHE_RANGE+dx][DIRECTION_CACHE_RANGE+dy]; if(dir == 0) { @@ -553,7 +548,7 @@ * 0/0 and set it as the current one. */ static inline void -FeedTrackers(DeviceVelocityPtr vel, int dx, int dy, int cur_t) +FeedTrackers(DeviceVelocityPtr vel, double dx, double dy, int cur_t) { int n; for(n = 0; n < vel->num_tracker; n++){ @@ -561,8 +556,8 @@ vel->tracker[n].dy += dy; } n = (vel->cur_tracker + 1) % vel->num_tracker; - vel->tracker[n].dx = 0; - vel->tracker[n].dy = 0; + vel->tracker[n].dx = 0.0; + vel->tracker[n].dy = 0.0; vel->tracker[n].time = cur_t; vel->tracker[n].dir = GetDirection(dx, dy); DebugAccelF("(dix prtacc) motion [dx: %i dy: %i dir:%i diff: %i]\n", @@ -576,9 +571,9 @@ * velocity scaling. * This assumes linear motion. */ -static float +static double CalcTracker(const MotionTracker *tracker, int cur_t){ - float dist = sqrt(tracker->dx * tracker->dx + tracker->dy * tracker->dy); + double dist = sqrt(tracker->dx * tracker->dx + tracker->dy * tracker->dy); int dtime = cur_t - tracker->time; if(dtime > 0) return dist / dtime; @@ -593,16 +588,16 @@ * * @return The tracker's velocity or 0 if the above conditions are unmet */ -static float +static double QueryTrackers(DeviceVelocityPtr vel, int cur_t){ int offset, dir = UNDEFINED, used_offset = -1, age_ms; /* initial velocity: a low-offset, valid velocity */ - float initial_velocity = 0, result = 0, velocity_diff; - float velocity_factor = vel->corr_mul * vel->const_acceleration; /* premultiply */ + double initial_velocity = 0, result = 0, velocity_diff; + double velocity_factor = vel->corr_mul * vel->const_acceleration; /* premultiply */ /* loop from current to older data */ for(offset = 1; offset < vel->num_tracker; offset++){ MotionTracker *tracker = TRACKER(vel, offset); - float tracker_velocity; + double tracker_velocity; age_ms = cur_t - tracker->time; @@ -654,13 +649,13 @@ DebugAccelF("(dix prtacc) query: last tracker in effect\n"); used_offset = vel->num_tracker-1; } -#ifdef PTRACCEL_DEBUGGING if(used_offset >= 0){ +#ifdef PTRACCEL_DEBUGGING MotionTracker *tracker = TRACKER(vel, used_offset); DebugAccelF("(dix prtacc) result: offset %i [dx: %i dy: %i diff: %i]\n", used_offset, tracker->dx, tracker->dy, cur_t - tracker->time); - } #endif + } return result; } @@ -674,11 +669,11 @@ BOOL ProcessVelocityData2D( DeviceVelocityPtr vel, - int dx, - int dy, + double dx, + double dy, int time) { - float velocity; + double velocity; vel->last_velocity = vel->velocity; @@ -694,12 +689,12 @@ * this flattens significant ( > 1) mickeys a little bit for more steady * constant-velocity response */ -static inline float -ApplySimpleSoftening(int prev_delta, int delta) +static inline double +ApplySimpleSoftening(double prev_delta, double delta) { - float result = delta; + double result = delta; - if (delta < -1 || delta > 1) { + if (delta < -1.0 || delta > 1.0) { if (delta > prev_delta) result -= 0.5; else if (delta < prev_delta) @@ -718,8 +713,8 @@ static void ApplySoftening( DeviceVelocityPtr vel, - float* fdx, - float* fdy) + double* fdx, + double* fdy) { if (vel->use_softening) { *fdx = ApplySimpleSoftening(vel->last_dx, *fdx); @@ -728,7 +723,7 @@ } static void -ApplyConstantDeceleration(DeviceVelocityPtr vel, float *fdx, float *fdy) +ApplyConstantDeceleration(DeviceVelocityPtr vel, double *fdx, double *fdy) { *fdx *= vel->const_acceleration; *fdy *= vel->const_acceleration; @@ -737,15 +732,15 @@ /* * compute the acceleration for given velocity and enforce min_acceleartion */ -float +double BasicComputeAcceleration( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc){ + double velocity, + double threshold, + double acc){ - float result; + double result; result = vel->Profile(dev, vel, velocity, threshold, acc); /* enforce min_acceleration */ @@ -759,13 +754,13 @@ * If the velocity has changed, an average is taken of 6 velocity factors: * current velocity, last velocity and 4 times the average between the two. */ -static float +static double ComputeAcceleration( DeviceIntPtr dev, DeviceVelocityPtr vel, - float threshold, - float acc){ - float result; + double threshold, + double acc){ + double result; if(vel->velocity <= 0){ DebugAccelF("(dix ptracc) profile skipped\n"); @@ -808,13 +803,13 @@ /** * Polynomial function similar previous one, but with f(1) = 1 */ -static float +static double PolynomialAccelerationProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float ignored, - float acc) + double velocity, + double ignored, + double acc) { return pow(velocity, (acc - 1.0) * 0.5); } @@ -824,13 +819,13 @@ * returns acceleration for velocity. * This profile selects the two functions like the old scheme did */ -static float +static double ClassicProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { if (threshold > 0) { return SimpleSmoothProfile (dev, @@ -856,15 +851,15 @@ * This has the expense of overall response dependency on min-acceleration. * In effect, min_acceleration mimics const_acceleration in this profile. */ -static float +static double PowerProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { - float vel_dist; + double vel_dist; acc = (acc-1.0) * 0.1f + 1.0; /* without this, acc of 2 is unuseable */ @@ -882,11 +877,11 @@ * - starts faster than a sinoid * - smoothness C1 (Cinf if you dare to ignore endpoints) */ -static inline float -CalcPenumbralGradient(float x){ +static inline double +CalcPenumbralGradient(double x){ x *= 2.0f; x -= 1.0f; - return 0.5f + (x * sqrt(1.0f - x*x) + asin(x))/M_PI; + return 0.5f + (x * sqrt(1.0 - x*x) + asin(x))/M_PI; } @@ -894,13 +889,13 @@ * acceleration function similar to classic accelerated/unaccelerated, * but with smooth transition in between (and towards zero for adaptive dec.). */ -static float +static double SimpleSmoothProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { if(velocity < 1.0f) return CalcPenumbralGradient(0.5 + velocity*0.5) * 2.0f - 1.0f; @@ -920,15 +915,15 @@ * This profile uses the first half of the penumbral gradient as a start * and then scales linearly. */ -static float +static double SmoothLinearProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { - float res, nv; + double res, nv; if(acc > 1.0f) acc -= 1.0f; /*this is so acc = 1 is no acceleration */ @@ -955,15 +950,15 @@ * From 0 to threshold, the response graduates smoothly from min_accel to * acceleration. Beyond threshold it is exactly the specified acceleration. */ -static float +static double SmoothLimitedProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { - float res; + double res; if(velocity >= threshold || threshold == 0.0f) return acc; @@ -976,24 +971,24 @@ } -static float +static double LinearProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { return acc * velocity; } -static float +static double NoProfile( DeviceIntPtr dev, DeviceVelocityPtr vel, - float velocity, - float threshold, - float acc) + double velocity, + double threshold, + double acc) { return 1.0f; } @@ -1119,11 +1114,11 @@ ValuatorMask* val, CARD32 evtime) { - int dx = 0, dy = 0, tmpi; + double dx = 0, dy = 0; DeviceVelocityPtr velocitydata = GetDevicePredictableAccelData(dev); Bool soften = TRUE; - if (!velocitydata) + if (valuator_mask_num_valuators(val) == 0 || !velocitydata) return; if (velocitydata->statistics.profile_number == AccelProfileNone && @@ -1132,59 +1127,39 @@ } if (valuator_mask_isset(val, 0)) { - dx = valuator_mask_get(val, 0); + dx = valuator_mask_get_double(val, 0); } if (valuator_mask_isset(val, 1)) { - dy = valuator_mask_get(val, 1); + dy = valuator_mask_get_double(val, 1); } - if (dx || dy){ + if (dx != 0.0 || dy != 0.0) { /* reset non-visible state? */ if (ProcessVelocityData2D(velocitydata, dx , dy, evtime)) { soften = FALSE; } if (dev->ptrfeed && dev->ptrfeed->ctrl.num) { - float mult; + double mult; /* invoke acceleration profile to determine acceleration */ mult = ComputeAcceleration (dev, velocitydata, - dev->ptrfeed->ctrl.threshold, - (float)dev->ptrfeed->ctrl.num / - (float)dev->ptrfeed->ctrl.den); + dev->ptrfeed->ctrl.threshold, + (double)dev->ptrfeed->ctrl.num / + (double)dev->ptrfeed->ctrl.den); if(mult != 1.0f || velocitydata->const_acceleration != 1.0f) { - float fdx = dx, - fdy = dy; - if (mult > 1.0f && soften) - ApplySoftening(velocitydata, &fdx, &fdy); - ApplyConstantDeceleration(velocitydata, &fdx, &fdy); + ApplySoftening(velocitydata, &dx, &dy); + ApplyConstantDeceleration(velocitydata, &dx, &dy); - /* Calculate the new delta (with accel) and drop it back - * into the valuator masks */ - if (dx) { - float tmp; - tmp = mult * fdx + dev->last.remainder[0]; - /* Since it may not be apparent: lrintf() does not offer - * strong statements about rounding; however because we - * process each axis conditionally, there's no danger - * of a toggling remainder. Its lack of guarantees likely - * makes it faster on the average target. */ - tmpi = lrintf(tmp); - valuator_mask_set(val, 0, tmpi); - dev->last.remainder[0] = tmp - (float)tmpi; - } - if (dy) { - float tmp; - tmp = mult * fdy + dev->last.remainder[1]; - tmpi = lrintf(tmp); - valuator_mask_set(val, 1, tmpi); - dev->last.remainder[1] = tmp - (float)tmpi; - } - DebugAccelF("pos (%i | %i) remainders x: %.3f y: %.3f delta x:%.3f y:%.3f\n", - *px, *py, dev->last.remainder[0], dev->last.remainder[1], fdx, fdy); + if (dx != 0.0) + valuator_mask_set_double(val, 0, mult * dx); + if (dy != 0.0) + valuator_mask_set_double(val, 1, mult * dy); + DebugAccelF("pos (%i | %i) delta x:%.3f y:%.3f\n", mult * dx, + mult * dy); } } } @@ -1205,8 +1180,8 @@ ValuatorMask* val, CARD32 ignored) { - float mult = 0.0, tmpf; - int dx = 0, dy = 0, tmpi; + double mult = 0.0, tmpf; + double dx = 0.0, dy = 0.0; if (valuator_mask_isset(val, 0)) { dx = valuator_mask_get(val, 0); @@ -1216,53 +1191,35 @@ dy = valuator_mask_get(val, 1); } - if (!dx && !dy) + if (valuator_mask_num_valuators(val) == 0) return; if (dev->ptrfeed && dev->ptrfeed->ctrl.num) { /* modeled from xf86Events.c */ if (dev->ptrfeed->ctrl.threshold) { - if ((abs(dx) + abs(dy)) >= dev->ptrfeed->ctrl.threshold) { - tmpf = ((float)dx * - (float)(dev->ptrfeed->ctrl.num)) / - (float)(dev->ptrfeed->ctrl.den) + - dev->last.remainder[0]; - if (dx) { - tmpi = (int) tmpf; - valuator_mask_set(val, 0, tmpi); - dev->last.remainder[0] = tmpf - (float)tmpi; + if ((fabs(dx) + fabs(dy)) >= dev->ptrfeed->ctrl.threshold) { + if (dx != 0.0) { + tmpf = (dx * (double)(dev->ptrfeed->ctrl.num)) / + (double)(dev->ptrfeed->ctrl.den); + valuator_mask_set_double(val, 0, tmpf); } - tmpf = ((float)dy * - (float)(dev->ptrfeed->ctrl.num)) / - (float)(dev->ptrfeed->ctrl.den) + - dev->last.remainder[1]; - if (dy) { - tmpi = (int) tmpf; - valuator_mask_set(val, 1, tmpi); - dev->last.remainder[1] = tmpf - (float)tmpi; + if (dy != 0.0) { + tmpf = (dy * (double)(dev->ptrfeed->ctrl.num)) / + (double)(dev->ptrfeed->ctrl.den); + valuator_mask_set_double(val, 1, tmpf); } } } else { - mult = pow((float)dx * (float)dx + (float)dy * (float)dy, - ((float)(dev->ptrfeed->ctrl.num) / - (float)(dev->ptrfeed->ctrl.den) - 1.0) / + mult = pow(dx * dx + dy * dy, + ((double)(dev->ptrfeed->ctrl.num) / + (double)(dev->ptrfeed->ctrl.den) - 1.0) / 2.0) / 2.0; - if (dx) { - tmpf = mult * (float)dx + - dev->last.remainder[0]; - tmpi = (int) tmpf; - valuator_mask_set(val, 0, tmpi); - dev->last.remainder[0] = tmpf - (float)tmpi; - } - if (dy) { - tmpf = mult * (float)dy + - dev->last.remainder[1]; - tmpi = (int)tmpf; - valuator_mask_set(val, 1, tmpi); - dev->last.remainder[1] = tmpf - (float)tmpi; - } + if (dx != 0.0) + valuator_mask_set_double(val, 0, mult * dx); + if (dy != 0.0) + valuator_mask_set_double(val, 1, mult * dy); } } } --- xorg-server-1.11.4.orig/mi/mipointer.c +++ xorg-server-1.11.4/mi/mipointer.c @@ -569,64 +569,87 @@ * * @param pDev The device to move * @param mode Movement mode (Absolute or Relative) - * @param[in,out] x The x coordiante in screen coordinates (in regards to total - * desktop size) - * @param[in,out] y The y coordiante in screen coordinates (in regards to total - * desktop size) + * @param[in,out] screenx The x coordinate in desktop coordinates + * @param[in,out] screeny The y coordinate in desktop coordinates */ -void -miPointerSetPosition(DeviceIntPtr pDev, int mode, int *x, int *y) +ScreenPtr +miPointerSetPosition(DeviceIntPtr pDev, int mode, double *screenx, double *screeny) { miPointerScreenPtr pScreenPriv; ScreenPtr pScreen; ScreenPtr newScreen; + int x, y; + Bool switch_screen = FALSE; miPointerPtr pPointer; if (!pDev || !pDev->coreEvents) - return; + return NULL; pPointer = MIPOINTER(pDev); pScreen = pPointer->pScreen; if (!pScreen) - return; /* called before ready */ + return NULL; /* called before ready */ - if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height) + x = trunc(*screenx); + y = trunc(*screeny); + + switch_screen = !point_on_screen(pScreen, x, y); + + /* Switch to per-screen coordinates for CursorOffScreen and + * Pointer->limits */ + x -= pScreen->x; + y -= pScreen->y; + + if (switch_screen) { pScreenPriv = GetScreenPrivate (pScreen); if (!pPointer->confined) { newScreen = pScreen; - (*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, x, y); + (*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, &x, &y); if (newScreen != pScreen) { pScreen = newScreen; (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, FALSE); - /* Smash the confine to the new screen */ + /* Smash the confine to the new screen */ pPointer->limits.x2 = pScreen->width; pPointer->limits.y2 = pScreen->height; } } } /* Constrain the sprite to the current limits. */ - if (*x < pPointer->limits.x1) - *x = pPointer->limits.x1; - if (*x >= pPointer->limits.x2) - *x = pPointer->limits.x2 - 1; - if (*y < pPointer->limits.y1) - *y = pPointer->limits.y1; - if (*y >= pPointer->limits.y2) - *y = pPointer->limits.y2 - 1; + if (x < pPointer->limits.x1) + x = pPointer->limits.x1; + if (x >= pPointer->limits.x2) + x = pPointer->limits.x2 - 1; + if (y < pPointer->limits.y1) + y = pPointer->limits.y1; + if (y >= pPointer->limits.y2) + y = pPointer->limits.y2 - 1; if (pScreen->ConstrainCursorHarder) - pScreen->ConstrainCursorHarder(pDev, pScreen, mode, x, y); + pScreen->ConstrainCursorHarder(pDev, pScreen, mode, &x, &y); - if (pPointer->x == *x && pPointer->y == *y && - pPointer->pScreen == pScreen) - return; + if (pPointer->x != x || pPointer->y != y || + pPointer->pScreen != pScreen) + miPointerMoveNoEvent(pDev, pScreen, x, y); + + /* Convert to desktop coordinates again */ + x += pScreen->x; + y += pScreen->y; + + /* In the event we actually change screen or we get confined, we just + * drop the float component on the floor + * FIXME: only drop remainder for ConstrainCursorHarder, not for screen + * crossings */ + if (x != trunc(*screenx)) + *screenx = x; + if (y != trunc(*screeny)) + *screeny = y; - miPointerMoveNoEvent(pDev, pScreen, *x, *y); + return pScreen; } /** --- xorg-server-1.11.4.orig/mi/mieq.c +++ xorg-server-1.11.4/mi/mieq.c @@ -59,7 +59,12 @@ # include #endif -#define QUEUE_SIZE 512 +/* Maximum size should be initial size multiplied by a power of 2 */ +#define QUEUE_INITIAL_SIZE 256 +#define QUEUE_RESERVED_SIZE 64 +#define QUEUE_MAXIMUM_SIZE 4096 +#define QUEUE_DROP_BACKTRACE_FREQUENCY 100 +#define QUEUE_DROP_BACKTRACE_MAX 10 #define EnqueueScreen(dev) dev->spriteInfo->sprite->pEnqueueScreen #define DequeueScreen(dev) dev->spriteInfo->sprite->pDequeueScreen @@ -74,7 +79,9 @@ HWEventQueueType head, tail; /* long for SetInputCheck */ CARD32 lastEventTime; /* to avoid time running backwards */ int lastMotion; /* device ID if last event motion? */ - EventRec events[QUEUE_SIZE]; /* static allocation for signals */ + EventRec *events; /* our queue as an array */ + size_t nevents; /* the number of buckets in our queue */ + size_t dropped; /* counter for number of consecutive dropped events */ mieqHandler handlers[128]; /* custom event handler */ } EventQueueRec, *EventQueuePtr; @@ -99,25 +106,87 @@ } #endif +static size_t +mieqNumEnqueued(EventQueuePtr eventQueue) { + size_t n_enqueued = 0; + if (eventQueue->nevents) { + /* % is not well-defined with negative numbers... sigh */ + n_enqueued = eventQueue->tail - eventQueue->head + eventQueue->nevents; + if (n_enqueued >= eventQueue->nevents) + n_enqueued -= eventQueue->nevents; + } + return n_enqueued; +} + +/* Pre-condition: Called with miEventQueueMutex held */ +static Bool +mieqGrowQueue(EventQueuePtr eventQueue, size_t new_nevents) { + size_t i, n_enqueued, first_hunk; + EventRec *new_events; + + if (!eventQueue) { + ErrorF("[mi] mieqGrowQueue called with a NULL eventQueue\n"); + return FALSE; + } + + if (new_nevents <= eventQueue->nevents) + return FALSE; + + new_events = calloc(new_nevents, sizeof(EventRec)); + if (new_events == NULL) { + ErrorF("[mi] mieqGrowQueue memory allocation error.\n"); + return FALSE; + } + + n_enqueued = mieqNumEnqueued(eventQueue); + + /* We block signals, so an mieqEnqueue triggered by SIGIO does not + * write to our queue as we are modifying it. + */ + OsBlockSignals(); + + /* First copy the existing events */ + first_hunk = eventQueue->nevents - eventQueue->head; + memcpy(new_events, + &eventQueue->events[eventQueue->head], + first_hunk * sizeof(EventRec)); + memcpy(&new_events[first_hunk], + eventQueue->events, + eventQueue->head * sizeof(EventRec)); + + /* Initialize the new portion */ + for (i = eventQueue->nevents; i < new_nevents; i++) { + InternalEvent* evlist = InitEventList(1); + if (!evlist) { + size_t j; + for (j = 0; j < i; j++) + FreeEventList(new_events[j].events, 1); + free(new_events); + OsReleaseSignals(); + return FALSE; + } + new_events[i].events = evlist; + } + + /* And update our record */ + eventQueue->tail = n_enqueued; + eventQueue->head = 0; + eventQueue->nevents = new_nevents; + free(eventQueue->events); + eventQueue->events = new_events; + + OsReleaseSignals(); + return TRUE; +} + Bool mieqInit(void) { - int i; - - miEventQueue.head = miEventQueue.tail = 0; + memset(&miEventQueue, 0, sizeof(miEventQueue)); miEventQueue.lastEventTime = GetTimeInMillis (); - miEventQueue.lastMotion = FALSE; - for (i = 0; i < 128; i++) - miEventQueue.handlers[i] = NULL; - for (i = 0; i < QUEUE_SIZE; i++) - { - if (miEventQueue.events[i].events == NULL) { - InternalEvent* evlist = InitEventList(1); - if (!evlist) - FatalError("Could not allocate event queue.\n"); - miEventQueue.events[i].events = evlist; - } - } + + if(!mieqGrowQueue(&miEventQueue, QUEUE_INITIAL_SIZE)) + FatalError("Could not allocate event queue.\n"); SetInputCheck(&miEventQueue.head, &miEventQueue.tail); return TRUE; @@ -127,13 +196,34 @@ mieqFini(void) { int i; - for (i = 0; i < QUEUE_SIZE; i++) + for (i = 0; i < miEventQueue.nevents; i++) { if (miEventQueue.events[i].events != NULL) { FreeEventList(miEventQueue.events[i].events, 1); miEventQueue.events[i].events = NULL; } } + free(miEventQueue.events); +} + +/* This function will determine if the given event is allowed to used the reserved + * queue space. + */ +static Bool +mieqReservedCandidate(InternalEvent *e) { + switch(e->any.type) { + case ET_KeyRelease: + case ET_ButtonRelease: +#if XFreeXDGA + case ET_DGAEvent: +#endif + case ET_RawKeyRelease: + case ET_RawButtonRelease: + case ET_XQuartz: + return TRUE; + default: + return FALSE; + } } /* @@ -151,6 +241,7 @@ int isMotion = 0; int evlen; Time time; + size_t n_enqueued; #ifdef XQUARTZ wait_for_server_init(); @@ -159,32 +250,40 @@ verify_internal_event(e); + n_enqueued = mieqNumEnqueued(&miEventQueue); + /* avoid merging events from different devices */ if (e->any.type == ET_Motion) isMotion = pDev->id; if (isMotion && isMotion == miEventQueue.lastMotion && oldtail != miEventQueue.head) { - oldtail = (oldtail - 1) % QUEUE_SIZE; - } - else { - static int stuck = 0; + oldtail = (oldtail - 1) % miEventQueue.nevents; + } else if ((n_enqueued + 1 == miEventQueue.nevents) || + ((n_enqueued + 1 >= miEventQueue.nevents - QUEUE_RESERVED_SIZE) && !mieqReservedCandidate(e))) { /* Toss events which come in late. Usually this means your server's * stuck in an infinite loop somewhere, but SIGIO is still getting - * handled. */ - if (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) { - if (!stuck) { - ErrorF("[mi] EQ overflowing. The server is probably stuck " - "in an infinite loop.\n"); - xorg_backtrace(); - stuck = 1; + * handled. + */ + miEventQueue.dropped++; + if (miEventQueue.dropped == 1) { + ErrorF("[mi] EQ overflowing. Additional events will be discarded until existing events are processed.\n"); + xorg_backtrace(); + ErrorF("[mi] These backtraces from mieqEnqueue may point to a culprit higher up the stack.\n"); + ErrorF("[mi] mieq is *NOT* the cause. It is a victim.\n"); + } else if (miEventQueue.dropped % QUEUE_DROP_BACKTRACE_FREQUENCY == 0 && + miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY <= QUEUE_DROP_BACKTRACE_MAX) { + ErrorF("[mi] EQ overflow continuing. %lu events have been dropped.\n", miEventQueue.dropped); + if (miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY == QUEUE_DROP_BACKTRACE_MAX) { + ErrorF("[mi] No further overflow reports will be reported until the clog is cleared.\n"); } + xorg_backtrace(); + } + #ifdef XQUARTZ - pthread_mutex_unlock(&miEventQueueMutex); + pthread_mutex_unlock(&miEventQueueMutex); #endif - return; - } - stuck = 0; + return; } evlen = e->any.length; @@ -203,20 +302,35 @@ miEventQueue.events[oldtail].pDev = pDev; miEventQueue.lastMotion = isMotion; - miEventQueue.tail = (oldtail + 1) % QUEUE_SIZE; + miEventQueue.tail = (oldtail + 1) % miEventQueue.nevents; #ifdef XQUARTZ pthread_mutex_unlock(&miEventQueueMutex); #endif } +/** + * Changes the screen reference events are being enqueued from. + * Input events are enqueued with a screen reference and dequeued and + * processed with a (potentially different) screen reference. + * This function is called whenever a new event has changed screen but is + * still logically on the previous screen as seen by the client. + * This usually happens whenever the visible cursor moves across screen + * boundaries during event generation, before the same event is processed + * and sent down the wire. + * + * @param pDev The device that triggered a screen change. + * @param pScreen The new screen events are being enqueued for. + * @param set_dequeue_screen If TRUE, pScreen is set as both enqueue screen + * and dequeue screen. + */ void -mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool fromDIX) +mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool set_dequeue_screen) { #ifdef XQUARTZ pthread_mutex_lock(&miEventQueueMutex); #endif EnqueueScreen(pDev) = pScreen; - if (fromDIX) + if (set_dequeue_screen) DequeueScreen(pDev) = pScreen; #ifdef XQUARTZ pthread_mutex_unlock(&miEventQueueMutex); @@ -256,8 +370,14 @@ case ET_ProximityOut: case ET_Hierarchy: case ET_DeviceChanged: + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: event->device_event.deviceid = dev->id; break; + case ET_TouchOwnership: + event->touch_ownership_event.deviceid = dev->id; + break; #if XFreeXDGA case ET_DGAEvent: break; @@ -267,6 +387,9 @@ case ET_RawButtonPress: case ET_RawButtonRelease: case ET_RawMotion: + case ET_RawTouchBegin: + case ET_RawTouchEnd: + case ET_RawTouchUpdate: event->raw_event.deviceid = dev->id; break; default: @@ -348,6 +471,19 @@ } +static void +mieqMoveToNewScreen(DeviceIntPtr dev, ScreenPtr screen, DeviceEvent *event) +{ + if (dev && screen && screen != DequeueScreen(dev)) + { + int x = 0, y = 0; + DequeueScreen(dev) = screen; + x = event->root_x; + y = event->root_y; + NewCurrentScreen (dev, DequeueScreen(dev), x, y); + } +} + /** * Post the given @event through the device hierarchy, as appropriate. * Use this function if an event must be posted for a given device during the @@ -359,7 +495,6 @@ ScreenPtr screen) { mieqHandler handler; - int x = 0, y = 0; DeviceIntPtr master; InternalEvent mevent; /* master event */ @@ -376,12 +511,14 @@ case ET_KeyRelease: case ET_ButtonPress: case ET_ButtonRelease: - if (dev && screen && screen != DequeueScreen(dev) && !handler) { - DequeueScreen(dev) = screen; - x = event->device_event.root_x; - y = event->device_event.root_y; - NewCurrentScreen (dev, DequeueScreen(dev), x, y); - } + if (!handler) + mieqMoveToNewScreen(dev, screen, &event->device_event); + break; + case ET_TouchBegin: + case ET_TouchUpdate: + case ET_TouchEnd: + if (!handler && (event->device_event.flags & TOUCH_POINTER_EMULATED)) + mieqMoveToNewScreen(dev, screen, &event->device_event); break; default: break; @@ -422,11 +559,28 @@ static InternalEvent event; DeviceIntPtr dev = NULL, master = NULL; + size_t n_enqueued; #ifdef XQUARTZ pthread_mutex_lock(&miEventQueueMutex); #endif - + + /* Grow our queue if we are reaching capacity: < 2 * QUEUE_RESERVED_SIZE remaining */ + n_enqueued = mieqNumEnqueued(&miEventQueue); + if (n_enqueued >= (miEventQueue.nevents - (2 * QUEUE_RESERVED_SIZE)) && + miEventQueue.nevents < QUEUE_MAXIMUM_SIZE) { + ErrorF("[mi] Increasing EQ size to %lu to prevent dropped events.\n", miEventQueue.nevents << 1); + if (!mieqGrowQueue(&miEventQueue, miEventQueue.nevents << 1)) { + ErrorF("[mi] Increasing the size of EQ failed.\n"); + } + } + + if (miEventQueue.dropped) { + ErrorF("[mi] EQ processing has resumed after %lu dropped events.\n", miEventQueue.dropped); + ErrorF("[mi] This may be caused my a misbehaving driver monopolizing the server's resources.\n"); + miEventQueue.dropped = 0; + } + while (miEventQueue.head != miEventQueue.tail) { e = &miEventQueue.events[miEventQueue.head]; @@ -434,7 +588,7 @@ dev = e->pDev; screen = e->pScreen; - miEventQueue.head = (miEventQueue.head + 1) % QUEUE_SIZE; + miEventQueue.head = (miEventQueue.head + 1) % miEventQueue.nevents; #ifdef XQUARTZ pthread_mutex_unlock(&miEventQueueMutex); --- xorg-server-1.11.4.orig/mi/mipointer.h +++ xorg-server-1.11.4/mi/mipointer.h @@ -87,7 +87,7 @@ void (*NewEventScreen)( DeviceIntPtr /* pDev */, ScreenPtr /* pScr */, - Bool /* fromDIX */ + Bool /* set_dequeue_screen */ ); } miPointerScreenFuncRec, *miPointerScreenFuncPtr; @@ -131,11 +131,11 @@ /* Moves the cursor to the specified position. May clip the co-ordinates: * x and y are modified in-place. */ -extern _X_EXPORT void miPointerSetPosition( +extern _X_EXPORT ScreenPtr miPointerSetPosition( DeviceIntPtr pDev, int mode, - int *x, - int *y); + double *x, + double *y); extern _X_EXPORT void miPointerUpdateSprite( DeviceIntPtr pDev); --- xorg-server-1.11.4.orig/mi/misprite.c +++ xorg-server-1.11.4/mi/misprite.c @@ -937,8 +937,6 @@ miSpriteSaveUnderCursor(DeviceIntPtr pDev, ScreenPtr pScreen) { miSpriteScreenPtr pScreenPriv; - int x, y; - CursorPtr pCursor; miCursorInfoPtr pCursorInfo; if (IsFloating(pDev)) @@ -949,10 +947,7 @@ pCursorInfo = MISPRITE(pDev); miSpriteComputeSaved (pDev, pScreen); - pCursor = pCursorInfo->pCursor; - x = pCursorInfo->x - (int)pCursor->bits->xhot; - y = pCursorInfo->y - (int)pCursor->bits->yhot; miSpriteDisableDamage(pScreen, pScreenPriv); miDCSaveUnderCursor(pDev, --- xorg-server-1.11.4.orig/mi/mivaltree.c +++ xorg-server-1.11.4/mi/mivaltree.c @@ -223,7 +223,6 @@ RegionRec childUnion; Bool overlap; RegionPtr borderVisible; - Bool resized; /* * Figure out the new visibility of this window. * The extent of the universe should be the same as the extent of @@ -378,7 +377,6 @@ } borderVisible = pParent->valdata->before.borderVisible; - resized = pParent->valdata->before.resized; RegionNull(&pParent->valdata->after.borderExposed); RegionNull(&pParent->valdata->after.exposed); --- xorg-server-1.11.4.orig/mi/mi.h +++ xorg-server-1.11.4/mi/mi.h @@ -206,7 +206,7 @@ extern _X_EXPORT void mieqSwitchScreen( DeviceIntPtr /* pDev */, ScreenPtr /*pScreen*/, - Bool /*fromDIX*/ + Bool /*set_dequeue_screen*/ ); extern _X_EXPORT void mieqProcessDeviceEvent( --- xorg-server-1.11.4.orig/mi/mibstore.c +++ xorg-server-1.11.4/mi/mibstore.c @@ -0,0 +1,43 @@ +/* + * Copyright 2007 Red Hat, Inc. + * + * 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. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif +#include "scrnintstr.h" +#include "mibstore.h" + +/* + * There is no longer an mi implementation of backing store. This function + * is only for source compatibility with old drivers. + * + * Note though that you do get backing store for free if your server has + * Composite enabled, since the automatic redirection mechanism provides + * essentially the same functionality. See compChangeWindowAttributes() + * for the implementation. + */ + +void +miInitializeBackingStore (ScreenPtr pScreen) +{ +} --- xorg-server-1.11.4.orig/test/list.c +++ xorg-server-1.11.4/test/list.c @@ -29,6 +29,7 @@ #include #include #include +#include struct parent { int a; @@ -88,6 +89,42 @@ }; static void +test_list_append(void) +{ + struct parent parent = {0}; + struct child child[3]; + struct child *c; + int i; + + list_init(&parent.children); + + list_append(&child[0].node, &parent.children); + assert(!list_is_empty(&parent.children)); + + c = list_first_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[0], sizeof(struct child)) == 0); + c = list_last_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[0], sizeof(struct child)) == 0); + + list_append(&child[1].node, &parent.children); + c = list_first_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[0], sizeof(struct child)) == 0); + c = list_last_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[1], sizeof(struct child)) == 0); + + list_append(&child[2].node, &parent.children); + c = list_first_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[0], sizeof(struct child)) == 0); + c = list_last_entry(&parent.children, struct child, node); + assert(memcmp(c, &child[2], sizeof(struct child)) == 0); + + i = 0; + list_for_each_entry(c, &parent.children, node) { + assert(memcmp(c, &child[i++], sizeof(struct child)) == 0); + } +}; + +static void test_list_del(void) { struct parent parent = {0}; @@ -161,13 +198,177 @@ } } +struct foo { + char a; + struct foo *next; + char b; +}; + +static void +test_nt_list_init(void) +{ + struct foo foo; + + foo.a = 10; + foo.b = 20; + nt_list_init(&foo, next); + + assert(foo.a == 10); + assert(foo.b == 20); + assert(foo.next == NULL); + assert(nt_list_next(&foo, next) == NULL); +} + +static void +test_nt_list_append(void) +{ + int i; + struct foo *foo = calloc(10, sizeof(struct foo)); + struct foo *item; + + for (item = foo, i = 1; i <= 10; i++, item++) + { + item->a = i; + item->b = i * 2; + nt_list_init(item, next); + + if (item != foo) + nt_list_append(item, foo, struct foo, next); + } + + /* Test using nt_list_next */ + for (item = foo, i = 1; i <= 10; i++, item = nt_list_next(item, next)) + { + assert(item->a = i); + assert(item->b = i * 2); + } + + /* Test using nt_list_for_each_entry */ + i = 1; + nt_list_for_each_entry(item, foo, next) { + assert(item->a = i); + assert(item->b = i * 2); + i++; + } + assert(i == 11); +} + +static void +test_nt_list_insert(void) +{ + int i; + struct foo *foo = calloc(10, sizeof(struct foo)); + struct foo *item; + + foo->a = 10; + foo->b = 20; + nt_list_init(foo, next); + + for (item = &foo[1], i = 9; i > 0; i--, item++) + { + item->a = i; + item->b = i * 2; + nt_list_init(item, next); + nt_list_insert(item, foo, struct foo, next); + } + + /* Test using nt_list_next */ + for (item = foo, i = 10; i > 0; i--, item = nt_list_next(item, next)) + { + assert(item->a = i); + assert(item->b = i * 2); + } + + /* Test using nt_list_for_each_entry */ + i = 1; + nt_list_for_each_entry(item, foo, next) { + assert(item->a = i); + assert(item->b = i * 2); + i++; + } + assert(i == 11); +} + +static void +test_nt_list_delete(void) +{ + int i = 1; + struct foo *list = calloc(10, sizeof(struct foo)); + struct foo *foo = list; + struct foo *item, *tmp; + struct foo *empty_list = foo; + + nt_list_init(empty_list, next); + nt_list_del(empty_list, empty_list, struct foo, next); + assert(!empty_list); + + for (item = foo, i = 1; i <= 10; i++, item++) + { + item->a = i; + item->b = i * 2; + nt_list_init(item, next); + + if (item != foo) + nt_list_append(item, foo, struct foo, next); + } + + i = 0; + nt_list_for_each_entry(item, foo, next) { + i++; + } + assert(i == 10); + + /* delete last item */ + nt_list_del(&foo[9], foo, struct foo, next); + i = 0; + nt_list_for_each_entry(item, foo, next) { + assert(item->a != 10); /* element 10 is gone now */ + i++; + } + assert(i == 9); /* 9 elements left */ + + /* delete second item */ + nt_list_del(foo->next, foo, struct foo, next); + assert(foo->next->a == 3); + + i = 0; + nt_list_for_each_entry(item, foo, next) { + assert(item->a != 10); /* element 10 is gone now */ + assert(item->a != 2); /* element 2 is gone now */ + i++; + } + assert(i == 8); /* 9 elements left */ + + item = foo; + /* delete first item */ + nt_list_del(foo, foo, struct foo, next); + assert(item != foo); + assert(item->next == NULL); + assert(foo->a == 3); + assert(foo->next->a == 4); + + nt_list_for_each_entry_safe(item, tmp, foo, next) { + nt_list_del(item, foo, struct foo, next); + } + + assert(!foo); + assert(!item); + + free(list); +} int main(int argc, char** argv) { test_list_init(); test_list_add(); + test_list_append(); test_list_del(); test_list_for_each(); + test_nt_list_init(); + test_nt_list_append(); + test_nt_list_insert(); + test_nt_list_delete(); + return 0; } --- xorg-server-1.11.4.orig/test/xfree86.c +++ xorg-server-1.11.4/test/xfree86.c @@ -0,0 +1,80 @@ +/** + * Copyright © 2011 Red Hat, Inc. + * + * 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. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include + + +#include "xf86.h" + +static void +xfree86_option_list_duplicate(void) +{ + pointer options; + pointer duplicate; + const char *o1 = "foo", + *o2 = "bar", + *v1 = "one", + *v2 = "two"; + const char *o_null= "NULL"; + char *val1, *val2; + + duplicate = xf86OptionListDuplicate(NULL); + assert(!duplicate); + + options = xf86AddNewOption(NULL, o1, v1); + assert(options); + options = xf86AddNewOption(options, o2, v2); + assert(options); + options = xf86AddNewOption(options, o_null, NULL); + assert(options); + + duplicate = xf86OptionListDuplicate(options); + assert(duplicate); + + val1 = xf86CheckStrOption(options, o1, "1"); + val2 = xf86CheckStrOption(duplicate, o1, "2"); + + assert(strcmp(val1, v1) == 0); + assert(strcmp(val1, val2) == 0); + + val1 = xf86CheckStrOption(options, o2, "1"); + val2 = xf86CheckStrOption(duplicate, o2, "2"); + + assert(strcmp(val1, v2) == 0); + assert(strcmp(val1, val2) == 0); + + val1 = xf86FindOption(options, o_null); + val2 = xf86FindOption(duplicate, o_null); + assert(val1 && val2); +} + +int main(int argc, char** argv) +{ + xfree86_option_list_duplicate(); + + return 0; +} --- xorg-server-1.11.4.orig/test/misc.c +++ xorg-server-1.11.4/test/misc.c @@ -27,6 +27,9 @@ #include #include "misc.h" +#include "scrnintstr.h" + +ScreenInfo screenInfo; static void dix_version_compare(void) { @@ -54,9 +57,107 @@ assert(rc < 0); } +static void dix_update_desktop_dimensions(void) +{ + int i; + int x, y, w, h; + int w2, h2; + ScreenRec screens[MAXSCREENS]; + + for (i = 0; i < MAXSCREENS; i++) + screenInfo.screens[i] = &screens[i]; + + x = 0; + y = 0; + w = 10; + h = 5; + w2 = 35; + h2 = 25; + +#define assert_dimensions(_x, _y, _w, _h) \ + update_desktop_dimensions(); \ + assert(screenInfo.x == _x); \ + assert(screenInfo.y == _y); \ + assert(screenInfo.width == _w); \ + assert(screenInfo.height == _h); + +#define set_screen(idx, _x, _y, _w, _h) \ + screenInfo.screens[idx]->x = _x; \ + screenInfo.screens[idx]->y = _y; \ + screenInfo.screens[idx]->width = _w; \ + screenInfo.screens[idx]->height = _h; \ + + /* single screen */ + screenInfo.numScreens = 1; + set_screen(0, x, y, w, h); + assert_dimensions(x, y, w, h); + + /* dualhead rightof */ + screenInfo.numScreens = 2; + set_screen(1, w, 0, w2, h2); + assert_dimensions(x, y, w + w2, h2); + + /* dualhead belowof */ + screenInfo.numScreens = 2; + set_screen(1, 0, h, w2, h2); + assert_dimensions(x, y, w2, h + h2); + + /* triplehead L shape */ + screenInfo.numScreens = 3; + set_screen(1, 0, h, w2, h2); + set_screen(2, w2, h2, w, h); + assert_dimensions(x, y, w + w2, h + h2); + + /* quadhead 2x2 */ + screenInfo.numScreens = 4; + set_screen(1, 0, h, w, h); + set_screen(2, w, h, w, h2); + set_screen(3, w, 0, w2, h); + assert_dimensions(x, y, w + w2, h + h2); + + /* quadhead horiz line */ + screenInfo.numScreens = 4; + set_screen(1, w, 0, w, h); + set_screen(2, 2 * w, 0, w, h); + set_screen(3, 3 * w, 0, w, h); + assert_dimensions(x, y, 4 * w, h); + + /* quadhead vert line */ + screenInfo.numScreens = 4; + set_screen(1, 0, h, w, h); + set_screen(2, 0, 2 * h, w, h); + set_screen(3, 0, 3 * h, w, h); + assert_dimensions(x, y, w, 4 * h); + + + /* x overlap */ + screenInfo.numScreens = 2; + set_screen(0, 0, 0, w2, h2); + set_screen(1, w, 0, w2, h2); + assert_dimensions(x, y, w2 + w, h2); + + /* y overlap */ + screenInfo.numScreens = 2; + set_screen(0, 0, 0, w2, h2); + set_screen(1, 0, h, w2, h2); + assert_dimensions(x, y, w2, h2 + h); + + /* negative origin */ + screenInfo.numScreens = 1; + set_screen(0, -w2, -h2, w, h); + assert_dimensions(-w2, -h2, w, h); + + /* dualhead negative origin, overlap */ + screenInfo.numScreens = 2; + set_screen(0, -w2, -h2, w2, h2); + set_screen(1, -w, -h, w, h); + assert_dimensions(-w2, -h2, w2, h2); +} + int main(int argc, char** argv) { dix_version_compare(); + dix_update_desktop_dimensions(); return 0; } --- xorg-server-1.11.4.orig/test/input.c +++ xorg-server-1.11.4/test/input.c @@ -40,6 +40,7 @@ #include "dixgrabs.h" #include "eventstr.h" #include "inpututils.h" +#include "mi.h" #include "assert.h" /** @@ -52,6 +53,7 @@ { DeviceIntRec dev; ValuatorClassPtr val; + AxisInfoPtr axis; const int num_axes = 2; int i; Atom atoms[MAX_VALUATORS] = { 0 }; @@ -78,6 +80,62 @@ } assert(dev.last.numValuators == num_axes); + + /* invalid increment */ + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_VERTICAL, 0.0, SCROLL_FLAG_NONE) == FALSE); + /* invalid type */ + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_VERTICAL - 1, 1.0, SCROLL_FLAG_NONE) == FALSE); + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_HORIZONTAL + 1, 1.0, SCROLL_FLAG_NONE) == FALSE); + /* invalid axisnum */ + assert(SetScrollValuator(&dev, 2, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE) == FALSE); + + /* valid */ + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_VERTICAL, 3.0, SCROLL_FLAG_NONE) == TRUE); + axis = &dev.valuator->axes[0]; + assert(axis->scroll.increment == 3.0); + assert(axis->scroll.type == SCROLL_TYPE_VERTICAL); + assert(axis->scroll.flags == 0); + + /* valid */ + assert(SetScrollValuator(&dev, 1, SCROLL_TYPE_HORIZONTAL, 2.0, SCROLL_FLAG_NONE) == TRUE); + axis = &dev.valuator->axes[1]; + assert(axis->scroll.increment == 2.0); + assert(axis->scroll.type == SCROLL_TYPE_HORIZONTAL); + assert(axis->scroll.flags == 0); + + /* can add another non-preffered axis */ + assert(SetScrollValuator(&dev, 1, SCROLL_TYPE_VERTICAL, 5.0, SCROLL_FLAG_NONE) == TRUE); + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_HORIZONTAL, 5.0, SCROLL_FLAG_NONE) == TRUE); + + /* can overwrite with Preferred */ + assert(SetScrollValuator(&dev, 1, SCROLL_TYPE_VERTICAL, 5.5, SCROLL_FLAG_PREFERRED) == TRUE); + axis = &dev.valuator->axes[1]; + assert(axis->scroll.increment == 5.5); + assert(axis->scroll.type == SCROLL_TYPE_VERTICAL); + assert(axis->scroll.flags == SCROLL_FLAG_PREFERRED); + + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_HORIZONTAL, 8.8, SCROLL_FLAG_PREFERRED) == TRUE); + axis = &dev.valuator->axes[0]; + assert(axis->scroll.increment == 8.8); + assert(axis->scroll.type == SCROLL_TYPE_HORIZONTAL); + assert(axis->scroll.flags == SCROLL_FLAG_PREFERRED); + + /* can overwrite as none */ + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_NONE, 5.0, + SCROLL_FLAG_NONE) == TRUE); + axis = &dev.valuator->axes[0]; + assert(axis->scroll.type == SCROLL_TYPE_NONE); + + /* can overwrite axis with new settings */ + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_VERTICAL, 5.0, SCROLL_FLAG_NONE) == TRUE); + axis = &dev.valuator->axes[0]; + assert(axis->scroll.type == SCROLL_TYPE_VERTICAL); + assert(axis->scroll.increment == 5.0); + assert(axis->scroll.flags == SCROLL_FLAG_NONE); + assert(SetScrollValuator(&dev, 0, SCROLL_TYPE_VERTICAL, 3.0, SCROLL_FLAG_NONE) == TRUE); + assert(axis->scroll.type == SCROLL_TYPE_VERTICAL); + assert(axis->scroll.increment == 3.0); + assert(axis->scroll.flags == SCROLL_FLAG_NONE); } /* just check the known success cases, and that error cases set the client's @@ -90,7 +148,7 @@ memset(&client, 0, sizeof(client)); - param.grabtype = GRABTYPE_CORE; + param.grabtype = CORE; param.this_device_mode = GrabModeSync; param.other_devices_mode = GrabModeSync; param.modifiers = AnyModifier; @@ -103,22 +161,31 @@ rc = CheckGrabValues(&client, ¶m); assert(rc == Success); - param.this_device_mode = GrabModeAsync + 1; + param.this_device_mode = XIGrabModeTouch; + rc = CheckGrabValues(&client, ¶m); + assert(rc == Success); + + param.this_device_mode = XIGrabModeTouch + 1; rc = CheckGrabValues(&client, ¶m); assert(rc == BadValue); assert(client.errorValue == param.this_device_mode); - assert(client.errorValue == GrabModeAsync + 1); + assert(client.errorValue == XIGrabModeTouch + 1); param.this_device_mode = GrabModeSync; param.other_devices_mode = GrabModeAsync; rc = CheckGrabValues(&client, ¶m); + + param.this_device_mode = GrabModeSync; + param.other_devices_mode = XIGrabModeTouch; + rc = CheckGrabValues(&client, ¶m); + assert(rc == Success); assert(rc == Success); - param.other_devices_mode = GrabModeAsync + 1; + param.other_devices_mode = XIGrabModeTouch + 1; rc = CheckGrabValues(&client, ¶m); assert(rc == BadValue); assert(client.errorValue == param.other_devices_mode); - assert(client.errorValue == GrabModeAsync + 1); + assert(client.errorValue == XIGrabModeTouch + 1); param.other_devices_mode = GrabModeSync; @@ -473,22 +540,22 @@ memset(&b, 0, sizeof(b)); /* different grabtypes must fail */ - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_XI2; + a.grabtype = CORE; + b.grabtype = XI2; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI; + b.grabtype = XI2; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_CORE; + a.grabtype = XI; + b.grabtype = CORE; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); @@ -510,8 +577,8 @@ inputInfo.all_devices = &xi_all_devices; inputInfo.all_master_devices = &xi_all_master_devices; - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.device = &dev1; b.device = &dev2; @@ -540,8 +607,8 @@ assert(rc == FALSE); /* ignoreDevice FALSE must fail for different devices for CORE and XI */ - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.device = &dev1; b.device = &dev2; a.modifierDevice = &dev1; @@ -549,8 +616,8 @@ rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.device = &dev1; b.device = &dev2; a.modifierDevice = &dev1; @@ -560,8 +627,8 @@ /* ignoreDevice FALSE must fail for different modifier devices for CORE * and XI */ - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -569,8 +636,8 @@ rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -579,8 +646,8 @@ assert(rc == FALSE); /* different event type must fail */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -592,8 +659,8 @@ rc = GrabMatchesSecond(&a, &b, TRUE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -605,8 +672,8 @@ rc = GrabMatchesSecond(&a, &b, TRUE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -619,8 +686,8 @@ assert(rc == FALSE); /* different modifiers must fail */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.device = &dev1; b.device = &dev1; a.modifierDevice = &dev1; @@ -634,23 +701,23 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); /* AnyModifier must fail for XI2 */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.modifiersDetail.exact = AnyModifier; b.modifiersDetail.exact = 1; rc = GrabMatchesSecond(&a, &b, FALSE); @@ -659,8 +726,8 @@ assert(rc == FALSE); /* XIAnyModifier must fail for CORE and XI */ - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.modifiersDetail.exact = XIAnyModifier; b.modifiersDetail.exact = 1; rc = GrabMatchesSecond(&a, &b, FALSE); @@ -668,8 +735,8 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.modifiersDetail.exact = XIAnyModifier; b.modifiersDetail.exact = 1; rc = GrabMatchesSecond(&a, &b, FALSE); @@ -678,8 +745,8 @@ assert(rc == FALSE); /* different detail must fail */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.detail.exact = 1; b.detail.exact = 2; a.modifiersDetail.exact = 1; @@ -689,23 +756,23 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); /* detail of AnyModifier must fail */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.detail.exact = AnyModifier; b.detail.exact = 1; a.modifiersDetail.exact = 1; @@ -715,23 +782,23 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); /* detail of XIAnyModifier must fail */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.detail.exact = XIAnyModifier; b.detail.exact = 1; a.modifiersDetail.exact = 1; @@ -741,23 +808,23 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; rc = GrabMatchesSecond(&a, &b, FALSE); assert(rc == FALSE); rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == FALSE); /* XIAnyModifier or AnyModifer must succeed */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.detail.exact = 1; b.detail.exact = 1; a.modifiersDetail.exact = XIAnyModifier; @@ -767,8 +834,8 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == TRUE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.detail.exact = 1; b.detail.exact = 1; a.modifiersDetail.exact = AnyModifier; @@ -778,8 +845,8 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == TRUE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.detail.exact = 1; b.detail.exact = 1; a.modifiersDetail.exact = AnyModifier; @@ -790,8 +857,8 @@ assert(rc == TRUE); /* AnyKey or XIAnyKeycode must succeed */ - a.grabtype = GRABTYPE_XI2; - b.grabtype = GRABTYPE_XI2; + a.grabtype = XI2; + b.grabtype = XI2; a.detail.exact = XIAnyKeycode; b.detail.exact = 1; a.modifiersDetail.exact = 1; @@ -801,8 +868,8 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == TRUE); - a.grabtype = GRABTYPE_CORE; - b.grabtype = GRABTYPE_CORE; + a.grabtype = CORE; + b.grabtype = CORE; a.detail.exact = AnyKey; b.detail.exact = 1; a.modifiersDetail.exact = 1; @@ -812,8 +879,8 @@ rc = GrabMatchesSecond(&b, &a, FALSE); assert(rc == TRUE); - a.grabtype = GRABTYPE_XI; - b.grabtype = GRABTYPE_XI; + a.grabtype = XI; + b.grabtype = XI; a.detail.exact = AnyKey; b.detail.exact = 1; a.modifiersDetail.exact = 1; @@ -1089,12 +1156,16 @@ { ValuatorMask *mask = NULL, *copy; int nvaluators = MAX_VALUATORS; - int valuators[nvaluators]; + double valuators[nvaluators]; + int val_ranged[nvaluators]; int i; int first_val, num_vals; for (i = 0; i < nvaluators; i++) - valuators[i] = i; + { + valuators[i] = i + 0.5; + val_ranged[i] = i; + } mask = valuator_mask_new(nvaluators); assert(mask != NULL); @@ -1104,9 +1175,10 @@ for (i = 0; i < nvaluators; i++) { assert(!valuator_mask_isset(mask, i)); - valuator_mask_set(mask, i, valuators[i]); + valuator_mask_set_double(mask, i, valuators[i]); assert(valuator_mask_isset(mask, i)); - assert(valuator_mask_get(mask, i) == valuators[i]); + assert(valuator_mask_get(mask, i) == trunc(valuators[i])); + assert(valuator_mask_get_double(mask, i) == valuators[i]); assert(valuator_mask_size(mask) == i + 1); assert(valuator_mask_num_valuators(mask) == i + 1); } @@ -1132,17 +1204,24 @@ first_val = 5; num_vals = 6; - valuator_mask_set_range(mask, first_val, num_vals, valuators); + valuator_mask_set_range(mask, first_val, num_vals, val_ranged); assert(valuator_mask_size(mask) == first_val + num_vals); assert(valuator_mask_num_valuators(mask) == num_vals); for (i = 0; i < nvaluators; i++) { + double val; if (i < first_val || i >= first_val + num_vals) + { assert(!valuator_mask_isset(mask, i)); - else + assert(!valuator_mask_fetch_double(mask, i, &val)); + } else { assert(valuator_mask_isset(mask, i)); - assert(valuator_mask_get(mask, i) == valuators[i - first_val]); + assert(valuator_mask_get(mask, i) == val_ranged[i - first_val]); + assert(valuator_mask_get_double(mask, i) == + val_ranged[i - first_val]); + assert(valuator_mask_fetch_double(mask, i, &val)); + assert(val_ranged[i - first_val] == val); } } @@ -1154,8 +1233,18 @@ for (i = 0; i < nvaluators; i++) { + double a, b; assert(valuator_mask_isset(mask, i) == valuator_mask_isset(copy, i)); + + if (!valuator_mask_isset(mask, i)) + continue; + assert(valuator_mask_get(mask, i) == valuator_mask_get(copy, i)); + assert(valuator_mask_get_double(mask, i) == + valuator_mask_get_double(copy, i)); + assert(valuator_mask_fetch_double(mask, i, &a)); + assert(valuator_mask_fetch_double(copy, i, &b)); + assert(a == b); } valuator_mask_free(&mask); @@ -1234,8 +1323,348 @@ free(v); } +static void dix_get_master(void) +{ + DeviceIntRec vcp, vck; + DeviceIntRec ptr, kbd; + DeviceIntRec floating; + SpriteInfoRec vcp_sprite, vck_sprite; + SpriteInfoRec ptr_sprite, kbd_sprite; + SpriteInfoRec floating_sprite; + + memset(&vcp, 0, sizeof(vcp)); + memset(&vck, 0, sizeof(vck)); + memset(&ptr, 0, sizeof(ptr)); + memset(&kbd, 0, sizeof(kbd)); + memset(&floating, 0, sizeof(floating)); + + memset(&vcp_sprite, 0, sizeof(vcp_sprite)); + memset(&vck_sprite, 0, sizeof(vck_sprite)); + memset(&ptr_sprite, 0, sizeof(ptr_sprite)); + memset(&kbd_sprite, 0, sizeof(kbd_sprite)); + memset(&floating_sprite, 0, sizeof(floating_sprite)); + + vcp.type = MASTER_POINTER; + vck.type = MASTER_KEYBOARD; + ptr.type = SLAVE; + kbd.type = SLAVE; + floating.type = SLAVE; + + vcp.spriteInfo = &vcp_sprite; + vck.spriteInfo = &vck_sprite; + ptr.spriteInfo = &ptr_sprite; + kbd.spriteInfo = &kbd_sprite; + floating.spriteInfo = &floating_sprite; + + vcp_sprite.paired = &vck; + vck_sprite.paired = &vcp; + ptr_sprite.paired = &vcp; + kbd_sprite.paired = &vck; + floating_sprite.paired = &floating; + + vcp_sprite.spriteOwner = TRUE; + floating_sprite.spriteOwner = TRUE; + + ptr.master = &vcp; + kbd.master = &vck; + + assert(GetPairedDevice(&vcp) == &vck); + assert(GetPairedDevice(&vck) == &vcp); + assert(GetMaster(&ptr, MASTER_POINTER) == &vcp); + assert(GetMaster(&ptr, MASTER_KEYBOARD) == &vck); + assert(GetMaster(&kbd, MASTER_POINTER) == &vcp); + assert(GetMaster(&kbd, MASTER_KEYBOARD) == &vck); + assert(GetMaster(&ptr, MASTER_ATTACHED) == &vcp); + assert(GetMaster(&kbd, MASTER_ATTACHED) == &vck); + + assert(GetPairedDevice(&floating) == &floating); + assert(GetMaster(&floating, MASTER_POINTER) == NULL); + assert(GetMaster(&floating, MASTER_KEYBOARD) == NULL); + assert(GetMaster(&floating, MASTER_ATTACHED) == NULL); + + assert(GetMaster(&vcp, POINTER_OR_FLOAT) == &vcp); + assert(GetMaster(&vck, POINTER_OR_FLOAT) == &vcp); + assert(GetMaster(&ptr, POINTER_OR_FLOAT) == &vcp); + assert(GetMaster(&kbd, POINTER_OR_FLOAT) == &vcp); + + assert(GetMaster(&vcp, KEYBOARD_OR_FLOAT) == &vck); + assert(GetMaster(&vck, KEYBOARD_OR_FLOAT) == &vck); + assert(GetMaster(&ptr, KEYBOARD_OR_FLOAT) == &vck); + assert(GetMaster(&kbd, KEYBOARD_OR_FLOAT) == &vck); + + assert(GetMaster(&floating, KEYBOARD_OR_FLOAT) == &floating); + assert(GetMaster(&floating, POINTER_OR_FLOAT) == &floating); +} + + +static void +_test_double_fp16_values(double orig_d) +{ + FP1616 first_fp16, final_fp16; + double final_d; + + if (orig_d > 0x7FFF) { + printf("Test out of range\n"); + assert(0); + } + + first_fp16 = double_to_fp1616(orig_d); + final_d = fp1616_to_double(first_fp16); + final_fp16 = double_to_fp1616(final_d); + + /* { + * char first_fp16_s[64]; + * char final_fp16_s[64]; + * snprintf(first_fp16_s, sizeof(first_fp16_s), "%d + %u * 2^-16", (first_fp16 & 0xffff0000) >> 16, first_fp16 & 0xffff); + * snprintf(final_fp16_s, sizeof(final_fp16_s), "%d + %u * 2^-16", (final_fp16 & 0xffff0000) >> 16, final_fp16 & 0xffff); + * + * printf("FP16: original double: %f first fp16: %s, re-encoded double: %f, final fp16: %s\n", orig_d, first_fp16_s, final_d, final_fp16_s); + * } + */ + + /* since we lose precision, we only do rough range testing */ + assert(final_d > orig_d - 0.1); + assert(final_d < orig_d + 0.1); + + assert(memcmp(&first_fp16, &final_fp16, sizeof(FP1616)) == 0); + + if (orig_d > 0) + _test_double_fp16_values(-orig_d); +} + +static void +_test_double_fp32_values(double orig_d) +{ + FP3232 first_fp32, final_fp32; + double final_d; + + if (orig_d > 0x7FFFFFFF) { + printf("Test out of range\n"); + assert(0); + } + + first_fp32 = double_to_fp3232(orig_d); + final_d = fp3232_to_double(first_fp32); + final_fp32 = double_to_fp3232(final_d); + + /* { + * char first_fp32_s[64]; + * char final_fp32_s[64]; + * snprintf(first_fp32_s, sizeof(first_fp32_s), "%d + %u * 2^-32", first_fp32.integral, first_fp32.frac); + * snprintf(final_fp32_s, sizeof(final_fp32_s), "%d + %u * 2^-32", first_fp32.integral, final_fp32.frac); + * + * printf("FP32: original double: %f first fp32: %s, re-encoded double: %f, final fp32: %s\n", orig_d, first_fp32_s, final_d, final_fp32_s); + * } + */ + + /* since we lose precision, we only do rough range testing */ + assert(final_d > orig_d - 0.1); + assert(final_d < orig_d + 0.1); + + assert(memcmp(&first_fp32, &final_fp32, sizeof(FP3232)) == 0); + + if (orig_d > 0) + _test_double_fp32_values(-orig_d); +} + +static void +dix_double_fp_conversion(void) +{ + uint32_t i; + printf("Testing double to FP1616/FP3232 conversions\n"); + + _test_double_fp16_values(0); + for (i = 1; i < 0x7FFF; i <<= 1) { + double val; + + val = i; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + /* and some pseudo-random floating points */ + val = i - 0.00382; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.00382; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.05234; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.12342; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.27583; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.50535; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.72342; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + + val = i + 0.80408; + _test_double_fp16_values(val); + _test_double_fp32_values(val); + } + + for (i = 0x7FFFF; i < 0x7FFFFFFF; i <<= 1) { + _test_double_fp32_values(i); + /* and a few more random floating points, obtained + * by faceplanting into the numpad repeatedly */ + _test_double_fp32_values(i + 0.010177); + _test_double_fp32_values(i + 0.213841); + _test_double_fp32_values(i + 0.348720); + _test_double_fp32_values(i + 0.472020); + _test_double_fp32_values(i + 0.572020); + _test_double_fp32_values(i + 0.892929); + } +} + +/* The mieq test verifies that events added to the queue come out in the same + * order that they went in. + */ +static uint32_t mieq_test_event_last_processed; + +static void +mieq_test_event_handler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) { + RawDeviceEvent *e = (RawDeviceEvent *)ie; + + assert(e->type == ET_RawMotion); + assert(e->flags > mieq_test_event_last_processed); + mieq_test_event_last_processed = e->flags; +} + +static void _mieq_test_generate_events(uint32_t start, uint32_t count) { + count += start; + while (start < count) { + RawDeviceEvent e = {0}; + e.header = ET_Internal; + e.type = ET_RawMotion; + e.length = sizeof(e); + e.time = GetTimeInMillis(); + e.flags = start; + + mieqEnqueue(NULL, (InternalEvent*)&e); + + start++; + } +} + +#define mieq_test_generate_events(c) { _mieq_test_generate_events(next, c); next += c; } + +static void +mieq_test(void) { + uint32_t next = 1; + + mieq_test_event_last_processed = 0; + mieqInit(); + mieqSetHandler(ET_RawMotion, mieq_test_event_handler); + + /* Enough to fit the buffer but trigger a grow */ + mieq_test_generate_events(180); + + /* We should resize to 512 now */ + mieqProcessInputEvents(); + + /* Some should now get dropped */ + mieq_test_generate_events(500); + + /* Tell us how many got dropped, 1024 now */ + mieqProcessInputEvents(); + + /* Now make it 2048 */ + mieq_test_generate_events(900); + mieqProcessInputEvents(); + + /* Now make it 4096 (max) */ + mieq_test_generate_events(1950); + mieqProcessInputEvents(); + + /* Now overflow one last time with the maximal queue and reach the verbosity limit */ + mieq_test_generate_events(10000); + mieqProcessInputEvents(); + + mieqFini(); +} + +/* Simple check that we're replaying events in-order */ +static void +process_input_proc(InternalEvent *ev, DeviceIntPtr device) +{ + static int last_evtype = -1; + + if (ev->any.header == 0xac) + last_evtype = -1; + + assert(ev->any.type == ++last_evtype); +} + +static void +dix_enqueue_events(void) { +#define NEVENTS 5 + DeviceIntRec dev; + InternalEvent ev[NEVENTS]; + SpriteInfoRec spriteInfo; + SpriteRec sprite; + QdEventPtr qe; + int i; + + memset(&dev, 0, sizeof(dev)); + dev.public.processInputProc = process_input_proc; + + memset(&spriteInfo, 0, sizeof(spriteInfo)); + memset(&sprite, 0, sizeof(sprite)); + dev.spriteInfo = &spriteInfo; + spriteInfo.sprite = &sprite; + + InitEvents(); + assert(list_is_empty(&syncEvents.pending)); + + /* this way PlayReleasedEvents really runs through all events in the + * queue */ + inputInfo.devices = &dev; + + /* to reset process_input_proc */ + ev[0].any.header = 0xac; + + for (i = 0; i < NEVENTS; i++) + { + ev[i].any.length = sizeof(*ev); + ev[i].any.type = i; + EnqueueEvent(&ev[i], &dev); + assert(!list_is_empty(&syncEvents.pending)); + qe = list_last_entry(&syncEvents.pending, QdEventRec, next); + assert(memcmp(qe->event, &ev[i], ev[i].any.length) == 0); + qe = list_first_entry(&syncEvents.pending, QdEventRec, next); + assert(memcmp(qe->event, &ev[0], ev[i].any.length) == 0); + } + + /* calls process_input_proc */ + dev.deviceGrab.sync.frozen = 1; + PlayReleasedEvents(); + assert(!list_is_empty(&syncEvents.pending)); + + + dev.deviceGrab.sync.frozen = 0; + PlayReleasedEvents(); + assert(list_is_empty(&syncEvents.pending)); + + inputInfo.devices = NULL; +} + + int main(int argc, char** argv) { + dix_enqueue_events(); + dix_double_fp_conversion(); dix_input_valuator_masks(); dix_input_attributes(); dix_init_valuators(); @@ -1249,6 +1678,8 @@ include_bit_test_macros(); xi_unregister_handlers(); dix_valuator_alloc(); + dix_get_master(); + mieq_test(); return 0; } --- xorg-server-1.11.4.orig/test/touch.c +++ xorg-server-1.11.4/test/touch.c @@ -0,0 +1,270 @@ +/** + * Copyright © 2011 Red Hat, Inc. + * + * 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. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include +#include "inputstr.h" +#include "assert.h" +#include "scrnintstr.h" + +static void touch_grow_queue(void) +{ + DeviceIntRec dev; + ValuatorClassRec val; + TouchClassRec touch; + size_t size, new_size; + int i; + + memset(&dev, 0, sizeof(dev)); + dev.id = 2; + dev.valuator = &val; + val.numAxes = 5; + dev.touch = &touch; + inputInfo.devices = &dev; + + size = 5; + + dev.last.num_touches = size; + dev.last.touches = calloc(dev.last.num_touches, sizeof(*dev.last.touches)); + assert(dev.last.touches); + for (i = 0; i < size; i++) { + dev.last.touches[i].active = TRUE; + dev.last.touches[i].ddx_id = i; + dev.last.touches[i].client_id = i * 2; + } + + /* no more space, should've scheduled a workproc */ + assert(TouchBeginDDXTouch(&dev, 1234) == NULL); + ProcessWorkQueue(); + + new_size = size + size/2 + 1; + assert(dev.last.num_touches == new_size); + + /* make sure we haven't touched those */ + for (i = 0; i < size; i++) { + DDXTouchPointInfoPtr t = &dev.last.touches[i]; + assert(t->active == TRUE); + assert(t->ddx_id == i); + assert(t->client_id == i * 2); + } + + /* make sure those are zero-initialized */ + for (i = size; i < new_size; i++) { + DDXTouchPointInfoPtr t = &dev.last.touches[i]; + assert(t->active == FALSE); + assert(t->client_id == 0); + assert(t->ddx_id == 0); + } +} + +static void touch_find_ddxid(void) +{ + DeviceIntRec dev; + DDXTouchPointInfoPtr ti; + ValuatorClassRec val; + TouchClassRec touch; + int size = 5; + int i; + + memset(&dev, 0, sizeof(dev)); + dev.id = 2; + dev.valuator = &val; + val.numAxes = 5; + dev.touch = &touch; + dev.last.num_touches = size; + dev.last.touches = calloc(dev.last.num_touches, sizeof(*dev.last.touches)); + inputInfo.devices = &dev; + assert(dev.last.touches); + + + dev.last.touches[0].active = TRUE; + dev.last.touches[0].ddx_id = 10; + dev.last.touches[0].client_id = 20; + + + /* existing */ + ti = TouchFindByDDXID(&dev, 10, FALSE); + assert(ti == &dev.last.touches[0]); + + /* non-existing */ + ti = TouchFindByDDXID(&dev, 20, FALSE); + assert(ti == NULL); + + /* Non-active */ + dev.last.touches[0].active = FALSE; + ti = TouchFindByDDXID(&dev, 10, FALSE); + assert(ti == NULL); + + /* create on number 2*/ + dev.last.touches[0].active = TRUE; + + ti = TouchFindByDDXID(&dev, 20, TRUE); + assert(ti == &dev.last.touches[1]); + assert(ti->active); + assert(ti->ddx_id == 20); + + /* set all to active */ + for (i = 0; i < size; i++) + dev.last.touches[i].active = TRUE; + + /* Try to create more, fail */ + ti = TouchFindByDDXID(&dev, 30, TRUE); + assert(ti == NULL); + ti = TouchFindByDDXID(&dev, 30, TRUE); + assert(ti == NULL); + /* make sure we haven't resized, we're in the signal handler */ + assert(dev.last.num_touches == size); + + /* stop one touchpoint, try to create, succeed */ + dev.last.touches[2].active = FALSE; + ti = TouchFindByDDXID(&dev, 30, TRUE); + assert(ti == &dev.last.touches[2]); + /* but still grow anyway */ + ProcessWorkQueue(); + ti = TouchFindByDDXID(&dev, 40, TRUE); + assert(ti == &dev.last.touches[size]); +} + +static void touch_begin_ddxtouch(void) +{ + DeviceIntRec dev; + DDXTouchPointInfoPtr ti; + ValuatorClassRec val; + TouchClassRec touch; + int ddx_id = 123; + unsigned int last_client_id = 0; + int size = 5; + + memset(&dev, 0, sizeof(dev)); + dev.id = 2; + dev.valuator = &val; + val.numAxes = 5; + touch.mode = XIDirectTouch; + dev.touch = &touch; + dev.last.num_touches = size; + dev.last.touches = calloc(dev.last.num_touches, sizeof(*dev.last.touches)); + inputInfo.devices = &dev; + assert(dev.last.touches); + + ti = TouchBeginDDXTouch(&dev, ddx_id); + assert(ti); + assert(ti->ddx_id == ddx_id); + /* client_id == ddx_id can happen in real life, but not in this test */ + assert(ti->client_id != ddx_id); + assert(ti->active); + assert(ti->client_id > last_client_id); + assert(ti->emulate_pointer); + last_client_id = ti->client_id; + + ddx_id += 10; + ti = TouchBeginDDXTouch(&dev, ddx_id); + assert(ti); + assert(ti->ddx_id == ddx_id); + /* client_id == ddx_id can happen in real life, but not in this test */ + assert(ti->client_id != ddx_id); + assert(ti->active); + assert(ti->client_id > last_client_id); + assert(!ti->emulate_pointer); + last_client_id = ti->client_id; +} + +static void touch_begin_touch(void) +{ + DeviceIntRec dev; + TouchClassRec touch; + ValuatorClassRec val; + TouchPointInfoPtr ti; + int touchid = 12434; + int sourceid = 23; + SpriteInfoRec sprite; + ScreenRec screen; + + screenInfo.screens[0] = &screen; + + memset(&dev, 0, sizeof(dev)); + dev.id = 2; + + memset(&sprite, 0, sizeof(sprite)); + dev.spriteInfo = &sprite; + + memset(&touch, 0, sizeof(touch)); + touch.num_touches = 0; + + memset(&val, 0, sizeof(val)); + dev.valuator = &val; + val.numAxes = 2; + + ti = TouchBeginTouch(&dev, sourceid, touchid, TRUE); + assert(!ti); + + dev.touch = &touch; + ti = TouchBeginTouch(&dev, sourceid, touchid, TRUE); + assert(ti); + assert(ti->client_id == touchid); + assert(ti->active); + assert(ti->sourceid == sourceid); + assert(ti->emulate_pointer); + + assert(touch.num_touches == 1); +} + +static void touch_init(void) +{ + DeviceIntRec dev; + Atom labels[2] = {0}; + int rc; + SpriteInfoRec sprite; + ScreenRec screen; + + screenInfo.screens[0] = &screen; + + memset(&dev, 0, sizeof(dev)); + + memset(&sprite, 0, sizeof(sprite)); + dev.spriteInfo = &sprite; + + InitAtoms(); + rc = InitTouchClassDeviceStruct(&dev, 1, XIDirectTouch, 2); + assert(rc == FALSE); + + InitValuatorClassDeviceStruct(&dev, 2, labels, 10, Absolute); + rc = InitTouchClassDeviceStruct(&dev, 1, XIDirectTouch, 2); + assert(rc == TRUE); + assert(dev.touch); +} + + + +int main(int argc, char** argv) +{ + touch_grow_queue(); + touch_find_ddxid(); + touch_begin_ddxtouch(); + touch_init(); + touch_begin_touch(); + + return 0; +} --- xorg-server-1.11.4.orig/test/Makefile.am +++ xorg-server-1.11.4/test/Makefile.am @@ -1,10 +1,10 @@ if ENABLE_UNIT_TESTS -if HAVE_LD_WRAP SUBDIRS= . xi2 -noinst_PROGRAMS = xkb input xtest list misc fixes +noinst_PROGRAMS = xkb input xtest list misc fixes xfree86 touch check_LTLIBRARIES = libxservertest.la TESTS=$(noinst_PROGRAMS) +TESTS_ENVIRONMENT = $(XORG_MALLOC_DEBUG_ENV) AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ INCLUDES = $(XORG_INCS) -I$(top_srcdir)/hw/xfree86/parser \ @@ -23,6 +23,8 @@ list_LDADD=$(TEST_LDADD) misc_LDADD=$(TEST_LDADD) fixes_LDADD=$(TEST_LDADD) +xfree86_LDADD=$(TEST_LDADD) +touch_LDADD=$(TEST_LDADD) nodist_libxservertest_la_SOURCES = $(top_builddir)/hw/xfree86/sdksyms.c libxservertest_la_LIBADD = \ @@ -42,4 +44,3 @@ @XORG_LIBS@ libxservertest_la_DEPENDENCIES = $(libxservertest_la_LIBADD) endif -endif --- xorg-server-1.11.4.orig/test/xi2/protocol-xiselectevents.c +++ xorg-server-1.11.4/test/xi2/protocol-xiselectevents.c @@ -126,6 +126,28 @@ assert(rc == error); } +static void _set_bit(unsigned char *bits, int bit) +{ + SetBit(bits, bit); + if (bit >= XI_TouchBegin && bit <= XI_TouchOwnership) + { + SetBit(bits, XI_TouchBegin); + SetBit(bits, XI_TouchUpdate); + SetBit(bits, XI_TouchEnd); + } +} + +static void _clear_bit(unsigned char *bits, int bit) +{ + ClearBit(bits, bit); + if (bit >= XI_TouchBegin && bit <= XI_TouchOwnership) + { + ClearBit(bits, XI_TouchBegin); + ClearBit(bits, XI_TouchUpdate); + ClearBit(bits, XI_TouchEnd); + } +} + static void request_XISelectEvents_masks(xXISelectEventsReq *req) { int i, j; @@ -158,9 +180,9 @@ memset(bits, 0, mask->mask_len * 4); for (j = 0; j <= XI2LASTEVENT; j++) { - SetBit(bits, j); + _set_bit(bits, j); request_XISelectEvent(req, Success); - ClearBit(bits, j); + _clear_bit(bits, j); } /* Test 2: @@ -174,7 +196,7 @@ for (j = 0; j <= XI2LASTEVENT; j++) { - SetBit(bits, j); + _set_bit(bits, j); request_XISelectEvent(req, Success); } @@ -188,9 +210,9 @@ for (j = XI2LASTEVENT + 1; j < mask->mask_len * 4; j++) { - SetBit(bits, j); + _set_bit(bits, j); request_XISelectEvent(req, BadValue); - ClearBit(bits, j); + _clear_bit(bits, j); } /* Test 4: @@ -201,7 +223,7 @@ memset(bits, 0, mask->mask_len * 4); for (j = 0; j <= XI2LASTEVENT; j++) { - SetBit(bits, j); + _set_bit(bits, j); request_XISelectEvent(req, Success); } @@ -228,8 +250,8 @@ mask->mask_len = (nmasks + 3)/4; memset(bits, 0, mask->mask_len * 4); for (j = 0; j <= XI2LASTEVENT; j++) - SetBit(bits, j); - ClearBit(bits, XI_HierarchyChanged); + _set_bit(bits, j); + _clear_bit(bits, XI_HierarchyChanged); for (j = 1; j < 6; j++) { mask->deviceid = j; --- xorg-server-1.11.4.orig/test/xi2/protocol-common.c +++ xorg-server-1.11.4/test/xi2/protocol-common.c @@ -29,6 +29,8 @@ #include "extinit.h" /* for XInputExtensionInit */ #include "exglobals.h" #include "xkbsrv.h" /* for XkbInitPrivates */ +#include "xserver-properties.h" +#include #include "protocol-common.h" @@ -63,6 +65,66 @@ sprite->physLimits.y2 = screen.height; } +/* This is essentially CorePointerProc with ScrollAxes added */ +static int +TestPointerProc(DeviceIntPtr pDev, int what) +{ +#define NBUTTONS 10 +#define NAXES 4 + BYTE map[NBUTTONS + 1]; + int i = 0; + Atom btn_labels[NBUTTONS] = {0}; + Atom axes_labels[NAXES] = {0}; + + switch (what) { + case DEVICE_INIT: + for (i = 1; i <= NBUTTONS; i++) + map[i] = i; + + btn_labels[0] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_LEFT); + btn_labels[1] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_MIDDLE); + btn_labels[2] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_RIGHT); + btn_labels[3] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_UP); + btn_labels[4] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_WHEEL_DOWN); + btn_labels[5] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_LEFT); + btn_labels[6] = XIGetKnownProperty(BTN_LABEL_PROP_BTN_HWHEEL_RIGHT); + /* don't know about the rest */ + + axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_X); + axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y); + axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_VSCROLL); + axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_HSCROLL); + + if (!InitPointerDeviceStruct((DevicePtr)pDev, map, NBUTTONS, btn_labels, + (PtrCtrlProcPtr)NoopDDA, + GetMotionHistorySize(), NAXES, axes_labels)) + { + ErrorF("Could not initialize device '%s'. Out of memory.\n", + pDev->name); + return BadAlloc; + } + pDev->valuator->axisVal[0] = screenInfo.screens[0]->width / 2; + pDev->last.valuators[0] = pDev->valuator->axisVal[0]; + pDev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2; + pDev->last.valuators[1] = pDev->valuator->axisVal[1]; + + /* protocol-xiquerydevice.c relies on these increment */ + SetScrollValuator(pDev, 2, SCROLL_TYPE_VERTICAL, 2.4, SCROLL_FLAG_NONE); + SetScrollValuator(pDev, 3, SCROLL_TYPE_HORIZONTAL, 3.5, SCROLL_FLAG_PREFERRED); + break; + + case DEVICE_CLOSE: + break; + + default: + break; + } + + return Success; + +#undef NBUTTONS +#undef NAXES +} /** * Create and init 2 master devices (VCP + VCK) and two slave devices, one * default mouse, one default keyboard. @@ -84,7 +146,7 @@ EnableDevice(devices.vck, FALSE); AllocDevicePair(&client, "", &devices.mouse, &devices.kbd, - CorePointerProc, CoreKeyboardProc, FALSE); + TestPointerProc, CoreKeyboardProc, FALSE); ActivateDevice(devices.mouse, FALSE); ActivateDevice(devices.kbd, FALSE); EnableDevice(devices.mouse, FALSE); --- xorg-server-1.11.4.orig/test/xi2/protocol-xipassivegrabdevice.c +++ xorg-server-1.11.4/test/xi2/protocol-xipassivegrabdevice.c @@ -49,7 +49,7 @@ } testdata; int __wrap_GrabButton(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device, - int button, GrabParameters *param, GrabType grabtype, + int button, GrabParameters *param, enum InputLevel grabtype, GrabMask *mask); static void reply_XIPassiveGrabDevice_data(ClientPtr client, int len, char *data, void *userdata); @@ -69,7 +69,7 @@ } int __wrap_GrabButton(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device, - int button, GrabParameters *param, GrabType grabtype, + int button, GrabParameters *param, enum InputLevel grabtype, GrabMask *mask) { /* Fail every odd modifier */ @@ -183,7 +183,7 @@ request->deviceid = XIAllMasterDevices; printf("Testing invalid grab types\n"); - for (i = XIGrabtypeFocusIn + 1; i < 0xFF; i++) + for (i = XIGrabtypeTouchBegin + 1; i < 0xFF; i++) { request->grab_type = i; request_XIPassiveGrabDevice(&client_request, request, BadValue, request->grab_type); --- xorg-server-1.11.4.orig/test/xi2/xi2.c +++ xorg-server-1.11.4/test/xi2/xi2.c @@ -0,0 +1,129 @@ +/** + * Copyright © 2011 Red Hat, Inc. + * + * 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. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include +#endif + +#include +#include "inpututils.h" +#include "inputstr.h" +#include "assert.h" + +static void xi2mask_test(void) +{ + XI2Mask *xi2mask = NULL, + *mergemask = NULL; + unsigned char *mask; + DeviceIntRec dev; + int i; + + /* size >= nmasks * 2 for the test cases below */ + xi2mask = xi2mask_new_with_size(MAXDEVICES + 2, (MAXDEVICES + 2) * 2); + assert(xi2mask); + assert(xi2mask->nmasks > 0); + assert(xi2mask->mask_size > 0); + + assert(xi2mask_mask_size(xi2mask) == xi2mask->mask_size); + assert(xi2mask_num_masks(xi2mask) == xi2mask->nmasks); + + mask = calloc(1, xi2mask_mask_size(xi2mask)); + /* ensure zeros */ + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) { + const unsigned char *m = xi2mask_get_one_mask(xi2mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + } + + /* set various bits */ + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) { + const unsigned char *m; + xi2mask_set(xi2mask, i, i); + + dev.id = i; + assert(xi2mask_isset(xi2mask, &dev, i)); + + m = xi2mask_get_one_mask(xi2mask, i); + SetBit(mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + ClearBit(mask, i); + } + + /* ensure zeros one-by-one */ + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) { + const unsigned char *m = xi2mask_get_one_mask(xi2mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) != 0); + xi2mask_zero(xi2mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + } + + /* re-set, zero all */ + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) + xi2mask_set(xi2mask, i, i); + xi2mask_zero(xi2mask, -1); + + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) { + const unsigned char *m = xi2mask_get_one_mask(xi2mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + } + + for (i = 0; i < xi2mask_num_masks(xi2mask); i++) { + const unsigned char *m; + SetBit(mask, i); + xi2mask_set_one_mask(xi2mask, i, mask, xi2mask_mask_size(xi2mask)); + m = xi2mask_get_one_mask(xi2mask, i); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + ClearBit(mask, i); + } + + mergemask = xi2mask_new_with_size(MAXDEVICES + 2, (MAXDEVICES + 2) * 2); + for (i = 0; i < xi2mask_num_masks(mergemask); i++) { + dev.id = i; + xi2mask_set(mergemask, i, i * 2); + } + + /* xi2mask still has all i bits set, should now also have all i * 2 bits */ + xi2mask_merge(xi2mask, mergemask); + for (i = 0; i < xi2mask_num_masks(mergemask); i++) { + const unsigned char *m = xi2mask_get_one_mask(xi2mask, i); + SetBit(mask, i); + SetBit(mask, i * 2); + assert(memcmp(mask, m, xi2mask_mask_size(xi2mask)) == 0); + ClearBit(mask, i); + ClearBit(mask, i * 2); + } + + xi2mask_free(&xi2mask); + assert(xi2mask == NULL); + + xi2mask_free(&mergemask); + assert(mergemask == NULL); + free(mask); +} + + +int main(int argc, char** argv) +{ + xi2mask_test(); + + return 0; +} --- xorg-server-1.11.4.orig/test/xi2/protocol-xiquerydevice.c +++ xorg-server-1.11.4/test/xi2/protocol-xiquerydevice.c @@ -129,7 +129,7 @@ dev = devices.mouse; assert(info->use == XISlavePointer); assert(info->attachment == devices.vcp->id); - assert(info->num_classes == 3); /* 2 axes + button */ + assert(info->num_classes == 7); /* 4 axes + button + 2 scroll*/ break; case 5: /* keyboard */ dev = devices.kbd; @@ -185,11 +185,50 @@ } break; } - case 2: /* VCP and mouse have the same properties */ case 4: { assert(any->type == XIButtonClass || - any->type == XIValuatorClass); + any->type == XIValuatorClass || + any->type == XIScrollClass); + + if (any->type == XIScrollClass) + { + xXIScrollInfo *si = (xXIScrollInfo*)any; + + if (client->swapped) + { + char n; + + swaps(&si->number, n); + swaps(&si->scroll_type, n); + swapl(&si->increment.integral, n); + swapl(&si->increment.frac, n); + } + assert(si->length == 6); + assert(si->number == 2 || si->number == 3); + if (si->number == 2) { + assert(si->scroll_type == XIScrollTypeVertical); + assert(!si->flags); + } + if (si->number == 3) { + assert(si->scroll_type == XIScrollTypeHorizontal); + assert(si->flags & XIScrollFlagPreferred); + assert(!(si->flags & ~XIScrollFlagPreferred)); + } + + assert(si->increment.integral == si->number); + /* protocol-common.c sets up increments of 2.4 and 3.5 */ + assert(si->increment.frac > 0.3 * (1ULL << 32)); + assert(si->increment.frac < 0.6 * (1ULL << 32)); + } + + } + /* fall through */ + case 2: /* VCP and mouse have the same properties except for scroll */ + { + if (info->deviceid == 2 ) /* VCP */ + assert(any->type == XIButtonClass || + any->type == XIValuatorClass); if (any->type == XIButtonClass) { @@ -219,8 +258,10 @@ } assert(vi->length == 11); - assert(vi->number == 0 || - vi->number == 1); + assert(vi->number >= 0 && vi->number < 4); + if (info->deviceid == 2) /* VCP */ + assert(vi->number < 2); + assert(vi->mode == XIModeRelative); /* device was set up as relative, so standard * values here. */ --- xorg-server-1.11.4.orig/test/xi2/Makefile.am +++ xorg-server-1.11.4/test/xi2/Makefile.am @@ -10,9 +10,11 @@ protocol-xipassivegrabdevice \ protocol-xiquerypointer \ protocol-xiwarppointer \ - protocol-eventconvert + protocol-eventconvert \ + xi2 TESTS=$(noinst_PROGRAMS) +TESTS_ENVIRONMENT = $(XORG_MALLOC_DEBUG_ENV) AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ INCLUDES = @XORG_INCS@ @@ -33,6 +35,7 @@ protocol_xipassivegrabdevice_LDADD=$(TEST_LDADD) protocol_xiwarppointer_LDADD=$(TEST_LDADD) protocol_eventconvert_LDADD=$(TEST_LDADD) +xi2_LDADD=$(TEST_LDADD) protocol_xiqueryversion_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient protocol_xiquerydevice_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient @@ -43,6 +46,7 @@ protocol_xipassivegrabdevice_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,GrabButton -Wl,-wrap,dixLookupWindow -Wl,-wrap,WriteToClient protocol_xiquerypointer_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupWindow protocol_xiwarppointer_LDFLAGS=$(AM_LDFLAGS) -Wl,-wrap,WriteToClient -Wl,-wrap,dixLookupWindow +xi2_LDFLAGS=$(AM_LDFLAGS) protocol_xiqueryversion_SOURCES=$(COMMON_SOURCES) protocol-xiqueryversion.c protocol_xiquerydevice_SOURCES=$(COMMON_SOURCES) protocol-xiquerydevice.c @@ -53,5 +57,14 @@ protocol_xiquerypointer_SOURCES=$(COMMON_SOURCES) protocol-xiquerypointer.c protocol_xipassivegrabdevice_SOURCES=$(COMMON_SOURCES) protocol-xipassivegrabdevice.c protocol_xiwarppointer_SOURCES=$(COMMON_SOURCES) protocol-xiwarppointer.c +else +# Print that xi2-tests were skipped (exit code 77 for automake test harness) +TESTS = xi2-tests +CLEANFILES = $(TESTS) + +xi2-tests: + @echo 'echo "ld -wrap support required for xi2 unit tests, skipping"' > $@ + @echo 'exit 77' >> $@ + $(AM_V_GEN)chmod +x $@ endif endif --- xorg-server-1.11.4.orig/test/xi2/protocol-eventconvert.c +++ xorg-server-1.11.4/test/xi2/protocol-eventconvert.c @@ -30,6 +30,7 @@ #include "eventstr.h" #include "eventconvert.h" #include "exevents.h" +#include "inpututils.h" #include static void test_values_XIRawEvent(RawDeviceEvent *in, xXIRawEvent *out, @@ -41,6 +42,7 @@ int nvals = 0; int bits_set; int len; + uint32_t flagmask = 0; if (swap) { @@ -53,17 +55,28 @@ swapl(&out->time, n); swapl(&out->detail, n); swaps(&out->valuators_len, n); + swapl(&out->flags, n); } assert(out->type == GenericEvent); assert(out->extension == 0); /* IReqCode defaults to 0 */ - assert(out->evtype == GetXI2Type((InternalEvent*)in)); + assert(out->evtype == GetXI2Type(in->type)); assert(out->time == in->time); assert(out->detail == in->detail.button); assert(out->deviceid == in->deviceid); assert(out->valuators_len >= bytes_to_int32(bits_to_bytes(sizeof(in->valuators.mask)))); - assert(out->flags == 0); /* FIXME: we don't set the flags yet */ + + switch (in->type) { + case ET_RawMotion: + case ET_RawButtonPress: + case ET_RawButtonRelease: + flagmask = XIPointerEmulated; + break; + default: + flagmask = 0; + } + assert((out->flags & ~flagmask) == 0); ptr = (unsigned char*)&out[1]; bits_set = 0; @@ -94,8 +107,7 @@ value = (FP3232*)(((unsigned char*)&out[1]) + out->valuators_len * 4); value += nvals; - vi.integral = in->valuators.data[i]; - vi.frac = in->valuators.data_frac[i]; + vi = double_to_fp3232(in->valuators.data[i]); vo.integral = value->integral; vo.frac = value->frac; @@ -111,8 +123,7 @@ raw_value = value + bits_set; - vi.integral = in->valuators.data_raw[i]; - vi.frac = in->valuators.data_raw_frac[i]; + vi = double_to_fp3232(in->valuators.data_raw[i]); vo.integral = raw_value->integral; vo.frac = raw_value->frac; @@ -186,7 +197,6 @@ memset(&in, 0, sizeof(in)); - printf("Testing all event types\n"); in.header = ET_Internal; in.type = ET_RawMotion; test_XIRawEvent(&in); @@ -207,7 +217,6 @@ in.type = ET_RawButtonRelease; test_XIRawEvent(&in); - printf("Testing details and other fields\n"); in.detail.button = 1L; test_XIRawEvent(&in); in.detail.button = 1L << 8; @@ -239,7 +248,6 @@ in.deviceid = ~0 & 0xFF; test_XIRawEvent(&in); - printf("Testing valuator masks\n"); for (i = 0; i < MAX_VALUATORS; i++) { XISetMask(in.valuators.mask, i); @@ -251,10 +259,8 @@ { XISetMask(in.valuators.mask, i); - in.valuators.data[i] = i; - in.valuators.data_raw[i] = i + 10; - in.valuators.data_frac[i] = i + 20; - in.valuators.data_raw_frac[i] = i + 30; + in.valuators.data[i] = i + (i * 0.0010); + in.valuators.data_raw[i] = (i + 10) + (i * 0.0030); test_XIRawEvent(&in); XIClearMask(in.valuators.mask, i); } @@ -302,7 +308,7 @@ } assert(out->extension == 0); /* IReqCode defaults to 0 */ - assert(out->evtype == GetXI2Type((InternalEvent*)in)); + assert(out->evtype == GetXI2Type(in->type)); assert(out->time == in->time); assert(out->detail == in->detail.button); assert(out->length >= 12); @@ -311,6 +317,11 @@ assert(out->sourceid == in->sourceid); switch (in->type) { + case ET_ButtonPress: + case ET_Motion: + case ET_ButtonRelease: + flagmask = XIPointerEmulated; + break; case ET_KeyPress: flagmask = XIKeyRepeat; break; @@ -381,9 +392,7 @@ { FP3232 vi, vo; - vi.integral = in->valuators.data[i]; - vi.frac = in->valuators.data_frac[i]; - + vi = double_to_fp3232(in->valuators.data[i]); vo = *values; if (swap) @@ -427,7 +436,6 @@ memset(&in, 0, sizeof(in)); - printf("Testing simple field values\n"); in.header = ET_Internal; in.type = ET_Motion; in.length = sizeof(DeviceEvent); @@ -451,7 +459,6 @@ test_XIDeviceEvent(&in); - printf("Testing field ranges\n"); /* 32 bit */ in.detail.button = 1L; test_XIDeviceEvent(&in); @@ -599,7 +606,6 @@ in.mods.effective = ~0 & 0xFF; test_XIDeviceEvent(&in); - printf("Testing button masks\n"); for (i = 0; i < sizeof(in.buttons) * 8; i++) { XISetMask(in.buttons, i); @@ -613,7 +619,6 @@ test_XIDeviceEvent(&in); } - printf("Testing valuator masks\n"); for (i = 0; i < MAX_VALUATORS; i++) { XISetMask(in.valuators.mask, i); @@ -625,8 +630,7 @@ { XISetMask(in.valuators.mask, i); - in.valuators.data[i] = i; - in.valuators.data_frac[i] = i + 20; + in.valuators.data[i] = i + (i * 0.0020); test_XIDeviceEvent(&in); XIClearMask(in.valuators.mask, i); } @@ -660,7 +664,7 @@ assert(out->type == GenericEvent); assert(out->extension == 0); /* IReqCode defaults to 0 */ - assert(out->evtype == GetXI2Type((InternalEvent*)in)); + assert(out->evtype == GetXI2Type(in->type)); assert(out->time == in->time); assert(out->deviceid == in->deviceid); assert(out->sourceid == in->sourceid); @@ -748,6 +752,26 @@ } break; + case XIScrollClass: + { + xXIScrollInfo *s = (xXIScrollInfo*)any; + assert(s->length == + bytes_to_int32(sizeof(xXIScrollInfo))); + + assert(s->sourceid == in->sourceid); + assert(s->number < in->num_valuators); + switch(s->type) + { + case XIScrollTypeVertical: + assert(in->valuators[s->number].scroll.type == SCROLL_TYPE_VERTICAL); + break; + case XIScrollTypeHorizontal: + assert(in->valuators[s->number].scroll.type == SCROLL_TYPE_HORIZONTAL); + break; + } + if (s->flags & XIScrollFlagPreferred) + assert(in->valuators[s->number].scroll.flags & SCROLL_FLAG_PREFERRED); + } default: printf("Invalid class type.\n\n"); assert(1); @@ -782,7 +806,6 @@ DeviceChangedEvent in; int i; - printf("Testing simple field values\n"); memset(&in, 0, sizeof(in)); in.header = ET_Internal; in.type = ET_DeviceChanged; @@ -906,12 +929,110 @@ } } +static void +test_values_XITouchOwnershipEvent(TouchOwnershipEvent *in, + xXITouchOwnershipEvent *out, + BOOL swap) +{ + if (swap) + { + char n; + + swaps(&out->sequenceNumber, n); + swapl(&out->length, n); + swaps(&out->evtype, n); + swaps(&out->deviceid, n); + swaps(&out->sourceid, n); + swapl(&out->time, n); + swapl(&out->touchid, n); + swapl(&out->root, n); + swapl(&out->event, n); + swapl(&out->child, n); + swapl(&out->time, n); + } + + assert(out->type == GenericEvent); + assert(out->extension == 0); /* IReqCode defaults to 0 */ + assert(out->evtype == GetXI2Type(in->type)); + assert(out->time == in->time); + assert(out->deviceid == in->deviceid); + assert(out->sourceid == in->sourceid); + assert(out->touchid == in->touchid); + assert(out->flags == in->reason); +} + +static void +test_XITouchOwnershipEvent(TouchOwnershipEvent *in) +{ + xXITouchOwnershipEvent *out, *swapped; + int rc; + + rc = EventToXI2((InternalEvent*)in, (xEvent**)&out); + assert(rc == Success); + + test_values_XITouchOwnershipEvent(in, out, FALSE); + + swapped = calloc(1, sizeof(xEvent) + out->length * 4); + XI2EventSwap((xGenericEvent*)out, (xGenericEvent*)swapped); + test_values_XITouchOwnershipEvent(in, swapped, TRUE); + free(out); + free(swapped); +} + +static void +test_convert_XITouchOwnershipEvent(void) +{ + TouchOwnershipEvent in; + long i; + + memset(&in, 0, sizeof(in)); + in.header = ET_Internal; + in.type = ET_TouchOwnership; + in.length = sizeof(in); + in.time = 0; + in.deviceid = 1; + in.sourceid = 2; + in.touchid = 0; + in.reason = 0; + in.resource = 0; + in.flags = 0; + + test_XITouchOwnershipEvent(&in); + + in.flags = XIAcceptTouch; + test_XITouchOwnershipEvent(&in); + + in.flags = XIRejectTouch; + test_XITouchOwnershipEvent(&in); + + for (i = 1; i <= 0xFFFF; i <<= 1) + { + in.deviceid = i; + test_XITouchOwnershipEvent(&in); + } + + for (i = 1; i <= 0xFFFF; i <<= 1) + { + in.sourceid = i; + test_XITouchOwnershipEvent(&in); + } + + for (i = 1; ; i <<= 1) + { + in.touchid = i; + test_XITouchOwnershipEvent(&in); + if (i == ((long)1 << 31)) + break; + } +} + int main(int argc, char** argv) { test_convert_XIRawEvent(); test_convert_XIFocusEvent(); test_convert_XIDeviceEvent(); test_convert_XIDeviceChangedEvent(); + test_convert_XITouchOwnershipEvent(); return 0; } --- xorg-server-1.11.4.orig/hw/kdrive/Xkdrive.man +++ xorg-server-1.11.4/hw/kdrive/Xkdrive.man @@ -0,0 +1,57 @@ +.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $ +.\" +.TH Xkdrive 1 __vendorversion__ +.SH NAME +Xkdrive \- tiny X server +.SH SYNOPSIS +.B Xvesa +.RI [ :display ] +.RI [ option ...] + +.B Xfbdev +.RI [ :display ] +.RI [ option ...] +.SH DESCRIPTION +.B Xkdrive +is a family of X servers designed to be particularly small. This +manual page describes the common functionality of the +.B Xkdrive +servers; for information on a specific X server, please refer to the +relevant manual page. +.SH OPTIONS +In addition to the standard options accepted by all X servers (see +Xserver(1)), all the +.B Xkdrive +servers accept the following options: +.TP 8 +.B -card \fIpcmcia\fP +use pcmcia card as additional screen. +.TP 8 +.B -dumb +disable hardware acceleration. +.TP 8 +.B -origin \fIX\fP,\fIY\fP +Locates the next screen in the Xinerama virtual screen. +.TP 8 +.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB +use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values). +.TP 8 +.B -softCursor +disable the hardware cursor. +.TP 8 +.B -videoTest +start the server, pause momentarily, and exit. +.TP 8 +.B -zaphod +disable switching screens by moving the pointer across a screen boundary. +.TP 8 +.B -2button +enable emulation of a middle mouse button by chording. +.TP 8 +.B -3button +disable emulation of a middle mouse button by chording. +.SH SEE ALSO +X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1). +.SH AUTHORS +The Xkdrive common core was written by Keith Packard, +and is based on the Sample Implementation of X. --- xorg-server-1.11.4.orig/hw/kdrive/ephyr/ephyrhostproxy.c +++ xorg-server-1.11.4/hw/kdrive/ephyr/ephyrhostproxy.c @@ -0,0 +1,94 @@ +/* + * Xephyr - A kdrive X server thats runs in a host X window. + * Authored by Matthew Allum + * + * Copyright © 2007 OpenedHand Ltd + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of OpenedHand Ltd not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. OpenedHand Ltd makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Authors: + * Dodji Seketeli + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#define _HAVE_XALLOC_DECLS +#include "ephyrlog.h" +#include "ephyrhostproxy.h" +#include "hostx.h" + +/* byte swap a short */ +#define swaps(x, n) { \ + n = ((char *) (x))[0];\ + ((char *) (x))[0] = ((char *) (x))[1];\ + ((char *) (x))[1] = n; } + +#define GetXReq(req) \ + WORD64ALIGN ;\ + if ((dpy->bufptr + SIZEOF(xReq)) > dpy->bufmax)\ + _XFlush(dpy);\ + req = (xReq *)(dpy->last_req = dpy->bufptr);\ + dpy->bufptr += SIZEOF(xReq);\ + dpy->request++ + + +Bool +ephyrHostProxyDoForward (pointer a_request_buffer, + struct XReply *a_reply, + Bool a_do_swap) +{ + Bool is_ok = FALSE ; + int n=0 ; + Display *dpy=hostx_get_display () ; + xReq *in_req = (xReq*) a_request_buffer ; + xReq *forward_req=NULL ; + struct XReply reply ; + + EPHYR_RETURN_VAL_IF_FAIL (in_req && dpy, FALSE) ; + + EPHYR_LOG ("enter\n") ; + + if (a_do_swap) { + swaps (&in_req->length, n) ; + } + EPHYR_LOG ("Req {type:%d, data:%d, length:%d}\n", + in_req->reqType, in_req->data, in_req->length) ; + GetXReq (forward_req) ; + memmove (forward_req, in_req, 4) ; + + if (!_XReply (dpy, (xReply*) &reply, 0, FALSE)) { + EPHYR_LOG_ERROR ("failed to get reply\n") ; + goto out; + } + EPHYR_LOG ("XReply{type:%d, foo:%d, seqnum:%d, length:%d}\n", + reply.type, reply.foo, reply.sequence_number, reply.length) ; + + if (a_reply) { + memmove (a_reply, &reply, sizeof (reply)) ; + } + is_ok = TRUE ; + +out: + EPHYR_LOG ("leave\n") ; + return is_ok ; +} + --- xorg-server-1.11.4.orig/hw/kdrive/ephyr/ephyrhostproxy.h +++ xorg-server-1.11.4/hw/kdrive/ephyr/ephyrhostproxy.h @@ -0,0 +1,51 @@ +/* + * Xephyr - A kdrive X server thats runs in a host X window. + * Authored by Matthew Allum + * + * Copyright © 2007 OpenedHand Ltd + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of OpenedHand Ltd not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. OpenedHand Ltd makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Authors: + * Dodji Seketeli + */ + +#ifndef __EPHYRHOSTPROXY_H__ +#define __EPHYRHOSTPROXY_H__ + +struct XReply { + int8_t type ;/*X_Reply*/ + int8_t foo; + int16_t sequence_number ; + int32_t length ; + /*following is some data up to 32 bytes lenght*/ + int32_t pad0 ; + int32_t pad1 ; + int32_t pad2 ; + int32_t pad3 ; + int32_t pad4 ; + int32_t pad5 ; +}; + +Bool +ephyrHostProxyDoForward (pointer a_request_buffer, + struct XReply *a_reply, + Bool a_do_swap) ; + +#endif /*__EPHYRHOSTPROXY_H__*/ --- xorg-server-1.11.4.orig/hw/kdrive/ephyr/ephyrproxyext.c +++ xorg-server-1.11.4/hw/kdrive/ephyr/ephyrproxyext.c @@ -0,0 +1,119 @@ +/* + * Xephyr - A kdrive X server thats runs in a host X window. + * Authored by Matthew Allum + * + * Copyright © 2007 OpenedHand Ltd + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of OpenedHand Ltd not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. OpenedHand Ltd makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Authors: + * Dodji Seketeli + */ + +/* + * \file + * This file defines a proxy extension that forwards requests. + * When a request to extension FOO is sent to Xephyr, that request is forwared + * to the host X, without even trying to know what the request means. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "misc.h" +#include "dixstruct.h" +#include "extnsionst.h" +#include "ephyrproxyext.h" +#define _HAVE_XALLOC_DECLS +#include "ephyrlog.h" +#include "ephyrhostproxy.h" +#include "hostx.h" + +static Bool ephyrProxyGetHostExtensionInfo (const char *a_ext_name, + int *a_major_opcode, + int *a_first_event, + int *a_first_error) ; + +static int ephyrProxyProcDispatch (ClientPtr client) ; + +static Bool +ephyrProxyGetHostExtensionInfo (const char *a_ext_name, + int *a_major_opcode, + int *a_first_event, + int *a_first_error) +{ + return hostx_get_extension_info (a_ext_name, a_major_opcode, + a_first_event, a_first_error) ; +} + +static int +ephyrProxyProcDispatch (ClientPtr a_client) +{ + int res=BadImplementation ; + struct XReply reply ; + + if (!ephyrHostProxyDoForward (a_client->requestBuffer, &reply, FALSE)) { + EPHYR_LOG_ERROR ("forwarding failed\n") ; + goto out ; + } + reply.sequence_number = a_client->sequence; + res = Success ; + + WriteToClient(a_client, 32, (char *)&reply); + +out: + return res ; +} + +static void +ephyrProxyProcReset (ExtensionEntry *a_entry) +{ +} + +Bool +ephyrProxyExtensionInit (const char *a_extension_name) +{ + Bool is_ok = FALSE ; + int major_opcode=0, first_event=0, first_error=0; + ExtensionEntry *ext=NULL ; + + if (!ephyrProxyGetHostExtensionInfo (a_extension_name, + &major_opcode, + &first_event, + &first_error)) { + EPHYR_LOG ("failed to query extension %s from host\n", a_extension_name) ; + goto out; + } + ext = AddExtension ((char*)a_extension_name, 0, 0, + ephyrProxyProcDispatch, + ephyrProxyProcDispatch, + ephyrProxyProcReset, + StandardMinorOpcode) ; + if (!ext) { + EPHYR_LOG_ERROR ("failed to add the extension\n") ; + goto out ; + } + is_ok = TRUE ; + +out: + EPHYR_LOG ("leave\n") ; + return is_ok ; +} + --- xorg-server-1.11.4.orig/hw/kdrive/ephyr/ephyrproxyext.h +++ xorg-server-1.11.4/hw/kdrive/ephyr/ephyrproxyext.h @@ -0,0 +1,34 @@ +/* + * Xephyr - A kdrive X server thats runs in a host X window. + * Authored by Matthew Allum + * + * Copyright © 2007 OpenedHand Ltd + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of OpenedHand Ltd not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. OpenedHand Ltd makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Authors: + * Dodji Seketeli + */ +#ifndef __EPHYRPROXYEXT_H__ +#define __EPHYRPROXYEXT_H__ + +Bool ephyrProxyExtensionInit (const char *a_extension_name) ; + +#endif /*__EPHYRPROXYEXT_H__*/ + --- xorg-server-1.11.4.orig/hw/kdrive/fbdev/Xfbdev.man +++ xorg-server-1.11.4/hw/kdrive/fbdev/Xfbdev.man @@ -0,0 +1,28 @@ +.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $ +.\" +.TH Xfbdev 1 __vendorversion__ +.SH NAME +Xfbdev \- Linux framebuffer device tiny X server +.SH SYNOPSIS +.B Xfbdev +.RI [ :display ] +.RI [ option ...] +.SH DESCRIPTION +.B Xfbdev +is a generic X server for Linux. +.B Xfbdev +doesn't know about any particular hardware, and uses the framebuffer +provided by the Linux framebuffer device. +.SH OPTIONS +.B Xfbdev +accepts the common options of the Xkdrive family of servers. Please +see Xkdrive(1). +.SH KEYBOARD +To be written. +.SH SEE ALSO +X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1). +.SH AUTHORS +The +.B Xfbdev +server was written by Keith Packard. + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Dutch.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + nl + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Dutch.lproj/main.nib/designable.nib @@ -0,0 +1,3666 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Over X11 + + 2147483647 + + + + + + Voorkeuren... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Voorzieningen + + 1048576 + 2147483647 + + + submenuAction: + + Voorzieningen + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Schermvullende weergave aan/uit + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Verberg X11 + h + 1048576 + 2147483647 + + + 42 + + + + Verberg andere + h + 1572864 + 2147483647 + + + + + + Toon alles + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Stop X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Programma's + + 1048576 + 2147483647 + + + submenuAction: + + Programma's + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Pas aan... + + 1048576 + 2147483647 + + + + + + + + + Wijzig + + 1048576 + 2147483647 + + + submenuAction: + + Wijzig + + + + Kopieer + c + 1048576 + 2147483647 + + + + + + + + + Venster + + 1048576 + 2147483647 + + + submenuAction: + + Venster + + + + Sluit + w + 1048576 + 2147483647 + + + + + + Minimaliseer + m + 1048576 + 2147483647 + + + + + + Vergroot/verklein + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Blader door vensters + ` + 1048576 + 2147483647 + + + + + + Blader omgekeerd door vensters + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Alles op voorgrond + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + + + X11 Help + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364.0390625}, {564, 341}} + 1350041600 + X11-voorkeuren + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {538, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emuleer drieknopsmuis + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {480, 30}} + + + YES + + 67239424 + 4194304 + Als u deze optie inschakelt, kan het gebruik van toetscombinaties voor menucommado's conflicteren met X11-programma's die de Meta-modifier gebruiken. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 209}, {468, 30}} + + + YES + + 67239424 + 4194304 + SG91ZCB0aWpkZW5zIGhldCBrbGlra2VuIGRlIE9wdGlvbi0gb2YgQ29tbWFuZC10b2V0cyBpbmdlZHJ1 +a3Qgb20gZGUgbWlkZGVsc3RlIG11aXNrbm9wIG9mIGRlIHJlY2h0ZXJtdWlza25vcCB0ZSBhY3RpdmVy +ZW4uCg + + + + + + + + + + 256 + {{18, 127}, {402, 18}} + + + YES + + 67239424 + 0 + Activeer toetscombinaties onder X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 151}, {468, 30}} + + + YES + + 67239424 + 4194304 + Maakt het mogelijk dat wijzigingen in het invoermenu de X11-toetsenbordindeling overschrijven. + + + + + + + + + + 256 + {{18, 185}, {402, 18}} + + + YES + + 67239424 + 0 + Volg toetsenbordindeling van systeem + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 35}, {468, 30}} + + + YES + + 67239424 + 4194304 + Indien ingeschakeld, worden met de Option-toetsen de X11-toetssymbolen Alt_L en Alt_R verstuurd in plaats van Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Option-toetsen versturen Alt_L en Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 11}, {418, 18}} + + + YES + + 67239424 + 0 + Scrol altijd in de richting van de vingerbeweging + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {518, 279}} + + + + Invoer + + + + + + 2 + + + + 256 + + + + 256 + {{77, 234}, {168, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Van beeldscherm + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 kleuren + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Duizenden + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Miljoenen + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {58, 20}} + + + YES + + 67239424 + 4194304 + Kleuren: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Deze instelling wordt actief wanneer X11 opnieuw wordt gestart. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Schermvullende weergave + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + Maak menubalk toegankelijk in schermvullende weergave + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 147}, {468, 31}} + + + YES + + 67239424 + 4194304 + Schakelt het X11-rootvenster in. Gebruik de toetscombinatie Command + Option + A om de schermvullende weergave te starten en te stoppen. + + + + + + + + + + 256 + {{54, 81}, {362, 31}} + + + YES + + 67239424 + 4194304 + De menubalk wordt zichtbaar als de muis aan de bovenkant van het primaire beeldscherm wordt geplaatst. + + + + + + + + {{10, 33}, {518, 279}} + + + Uitvoer + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Schakel synchronisatie in + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 207}, {473, 42}} + + + YES + + 67239424 + 4194304 + Schakelt het menuonderdeel 'kopieer' in en maakt synchronisatie mogelijk tussen het klembord van OS X en de CLIPBOARD- en PRIMARY-buffer van X11. + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + Werk CLIPBOARD bij als plakbord wordt gewijzigd + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {409, 23}} + + + YES + + 67239424 + 0 + Werk PRIMARY (middenklik) bij als plakbord wordt gewijzigd + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {486, 18}} + + + YES + + 67239424 + 0 + Werk plakbord onmiddellijk bij wanneer nieuwe tekst wordt geselecteerd + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + Werk plakbord bij als CLIPBOARD wordt gewijzigd + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {461, 28}} + + + YES + + 67239424 + 4194304 + Schakel deze optie uit als u xclipboard, klipper of een ander programma voor X11-klembordbeheer wilt gebruiken. + + + + + + + + + 256 + {{48, 47}, {461, 28}} + + + YES + + 67239424 + 4194304 + Vanwege beperkingen in het X11-protocol werkt deze optie mogelijk niet altijd in alle programma's. + + + + + + + + {{10, 33}, {518, 279}} + + + Plakbord + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Klik in inactieve vensters + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 210}, {481, 31}} + + + YES + + 67239424 + 4194304 + Indien ingeschakeld, wordt een muisklik in een inactief venster toegepast in dat venster en wordt het venster geactiveerd. + + + + + + + + + 256 + {{15, 186}, {402, 18}} + + + YES + + 67239424 + 0 + Focus volgt muis + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 166}, {481, 16}} + + + YES + + 67239424 + 4194304 + Focus van het X11-venster volgt de aanwijzer. Dit heeft ongewenste effecten. + + + + + + + + + 256 + {{15, 142}, {402, 18}} + + + YES + + 67239424 + 0 + Focus op nieuwe vensters + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 96}, {481, 42}} + + + YES + + 67239424 + 4194304 + Indien ingeschakeld, wordt bij aanmaak van een nieuw X11-venster X11.app op de voorgrond geplaatst (in plaats van Finder.app, Terminal.app, enz.). + + + + + + + + {{10, 33}, {518, 279}} + + + Vensters + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Voer identiteitscontrole uit voor verbindingen + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 168}, {402, 18}} + + + YES + + 67239424 + 0 + Sta verbindingen van netwerkclients toe + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 183}, {468, 56}} + + + YES + + 67239424 + 4194304 + Wanneer u X11 start, worden er Xauthority-toegangscontrolesleutels aangemaakt. Als het IP-adres van het systeem wordt gewijzigd, worden deze toetsen ongeldig waardoor het mogelijk is dat X11-programma's niet kunnen worden gestart. + + + + + + + + + + 256 + {{36, 107}, {468, 56}} + + + YES + + 67239424 + 4194304 + Als u deze optie inschakelt, moet 'Voer identiteitscontrole uit voor verbindingen' ook worden ingeschakeld ter beveiliging van het systeem. Als deze optie is uitgeschakeld, worden verbindingen van externe programma's niet toegestaan. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Deze instellingen worden actief wanneer X11 opnieuw wordt gestart. + + + + + + + + + {{10, 33}, {518, 279}} + + + Beveiliging + + + + + + + 0 + YES + YES + + + + + + {564, 341} + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {454, 271}} + 1350041600 + X11-programmamenu + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {100, 32}} + + YES + + 67239424 + 137887744 + Dupliceer + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {100, 32}} + + YES + + 67239424 + 137887744 + Verwijder + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Naam + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Tekstcel + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 99 + 40 + 1000 + + 75628096 + 2048 + Commando + + + + + + 338820672 + 1024 + Tekstcel + + + + + + + 3 + YES + YES + + + + 71 + 10 + 1000 + + 75628096 + 2048 + Toetsen + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Tekstcel + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {100, 32}} + + YES + + -2080244224 + 137887744 + Voeg toe + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Programma's + + 1048576 + 2147483647 + + + submenuAction: + + Programma's + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Pas aan… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{893, 777}, {564, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{893, 777}, {564, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + {{982, 977}, {183, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{21, 1012}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pt.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + pt + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pt.lproj/main.nib/designable.nib @@ -0,0 +1,3668 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Sobre o X11 + + 2147483647 + + + + + + Preferências... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Serviços + + 1048576 + 2147483647 + + + submenuAction: + + Serviços + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Alternar Tela Cheia + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Ocultar X11 + h + 1048576 + 2147483647 + + + 42 + + + + Ocultar Outros + h + 1572864 + 2147483647 + + + + + + Mostrar Tudo + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Encerrar X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Aplicativos + + 1048576 + 2147483647 + + + submenuAction: + + Aplicativos + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar... + + 1048576 + 2147483647 + + + + + + + + + Editar + + 1048576 + 2147483647 + + + submenuAction: + + Editar + + + + Copiar + c + 1048576 + 2147483647 + + + + + + + + + Janela + + 1048576 + 2147483647 + + + submenuAction: + + Janela + + + + Fechar + w + 1048576 + 2147483647 + + + + + + Minimizar + m + 1048576 + 2147483647 + + + + + + Reduzir/Ampliar + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Percorrer Janelas + ` + 1048576 + 2147483647 + + + + + + Percorrer Janelas no Sentido Inverso + ` + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Trazer Todas Para a Frente + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Ajuda + + 1048576 + 2147483647 + + + submenuAction: + + Ajuda + + + + Ajuda X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364.0390625}, {644, 341}} + 1350041600 + Preferências X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {618, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 253}, {402, 18}} + + + YES + + 67239424 + 0 + Emular mouse de três botões + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {555, 31}} + + + YES + + 67239424 + 4194304 + Se ativadas, as teclas equivalentes da barra de menus podem interferir com os aplicativos do X11 que usem o modificador Meta. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 205}, {555, 42}} + + + YES + + 67239424 + 4194304 + TWFudGVuaGEgcHJlc3Npb25hZGFzIGFzIHRlY2xhcyBPcMOnw6NvIG91IENvbWFuZG8gYW8gY2xpY2Fy +IHBhcmEgYXRpdmFyIG8gYm90w6NvIGRhIGRpcmVpdGEgb3UgbyBib3TDo28gY2VudHJhbCBkbyBtb3Vz +ZS4KA + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + Ativar as teclas equivalentes sob X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 153}, {555, 28}} + + + YES + + 67239424 + 4194304 + Permite que as alterações feitas no menu de leiautes de teclado sobrescrevam o mapa de teclado atual do X11. + + + + + + + + + + 256 + {{18, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Seguir o leiaute de teclado do sistema + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {555, 31}} + + + YES + + 67239424 + 4194304 + Quando esta opção está marcada, as teclas opção enviam os símbolos de tecla do X11 Alt_L e Alt_R em vez de Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + As teclas Opção enviam Alt_L e Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Sempre rolar na direção do movimento do dedo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {598, 279}} + + + + Entrada + + + + + + 2 + + + + 256 + + + + 256 + {{64, 241}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Da Tela + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 Cores + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Milhares + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Milhões + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 244}, {45, 20}} + + + YES + + 67239424 + 4194304 + Cores: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Esta opção passa a funcionar quando o X11 é executado novamente. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Modo de tela cheia + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + Permitir acesso à barra de menus no modo tela cheia + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {543, 34}} + + + YES + + 67239424 + 4194304 + Ativa a janela raiz do X11. Usar o toque Comando-Opção-A para digitar e sair do modo tela cheia. + + + + + + + + + + 256 + {{54, 79}, {525, 31}} + + + YES + + 67239424 + 4194304 + A barra de menus ficará visível quando o cursor do mouse for posicionado sobre a sua tela principal. + + + + + + + + {{10, 33}, {598, 279}} + + + Saída + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Ativar sincronização + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 207}, {548, 42}} + + + YES + + 67239424 + 4194304 + Ativa o item de menu "copiar" e permite a sincronização entre a Área de Colagem do OSX e a ÁREA DE TRANSFERÊNCIA e os buffers PRINCIPAIS do X11. + + + + + + + + + 256 + {{34, 115}, {511, 23}} + + + YES + + 67239424 + 0 + Atualizar a ÁREA DE TRANSFERÊNCIA quando a Área de Colagem for alterada + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 90}, {501, 23}} + + + YES + + 67239424 + 0 + Atualizar PRINCIPAL (clique central) quando a Área de Colagem for alterada + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 65}, {553, 23}} + + + YES + + 67239424 + 0 + Atualizar a Área de Colagem imediatamente quando um novo texto for selecionado + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 178}, {511, 23}} + + + YES + + 67239424 + 0 + Atualizar a Área de Colagem quando a ÁREA DE TRANSFERÊNCIA for alterada + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 144}, {529, 28}} + + + YES + + 67239424 + 4194304 + Desative esta opção quando quiser usar o xclipboard, o klipper ou qualquer outro gerenciador de área de transferência do X11. + + + + + + + + + 256 + {{48, 33}, {526, 28}} + + + YES + + 67239424 + 4194304 + Devido a limitações no protocolo do X11, talvez esta opção nem sempre funcione em alguns aplicativos. + + + + + + + + {{10, 33}, {598, 279}} + + + Área de Colagem + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Clicar em Janelas Inativas + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {542, 31}} + + + YES + + 67239424 + 4194304 + Quando esta opção está selecionada, a ação de clicar em uma janela inativa faz com que o clique do mouse seja ativado para essa janela, a qual também é ativada. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + O Foco Segue o Mouse + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {441, 17}} + + + YES + + 67239424 + 4194304 + O foco da janela do X11 segue o cursor. Esta opção tem alguns inconvenientes. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Foco nas Novas Janelas + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {542, 28}} + + + YES + + 67239424 + 4194304 + Quando esta opção está ativada, a criação de uma nova janela do X11 move o X11.app para o segundo plano (em vez do Finder.app, Terminal.app, etc.) + + + + + + + + {{10, 33}, {598, 279}} + + + Janelas + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Autenticar conexões + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Permitir conexões de clientes da rede + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {539, 35}} + + + YES + + 67239424 + 4194304 + A execução do X11 criará as chaves de controle de acesso Xauthority. Se mudar o endereço de IP do sistema, essas chaves tornam-se inválidas, o que pode impedir a execução dos aplicativos do X11. + + + + + + + + + + 256 + {{36, 118}, {555, 42}} + + + YES + + 67239424 + 4194304 + Se ativadas, as conexões Autenticar também podem ser ativadas para garantir a segurança do sistema. Se desativadas, as conexões dos aplicativos remotos não são permitidas. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Estas opções passam a funcionar quanto o X11 é executado em seguida. + + + + + + + + + {{10, 33}, {598, 279}} + + + Segurança + + + + + + + 0 + YES + YES + + + + + + {644, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {519, 271}} + 1350041600 + Menu de Aplicativos do X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{372, 191}, {132, 32}} + + YES + + 67239424 + 137887744 + Duplicar + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{372, 159}, {132, 32}} + + YES + + 67239424 + 137887744 + Remover + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {333, 198} + + YES + + + 256 + {333, 17} + + + + + + 256 + {{334, 0}, {16, 17}} + + + + + 132.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nome + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 110 + 40 + 1000 + + 75628096 + 2048 + Comando + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 81 + 10 + 1000 + + 75628096 + 2048 + Atalho + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {333, 198}} + + + + + 4 + + + + 256 + {{334, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {333, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {333, 17}} + + + + + 4 + + + + {{20, 20}, {350, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{372, 223}, {132, 32}} + + YES + + -2080244224 + 137887744 + Adicionar Item + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {519, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Aplicativos + + 1048576 + 2147483647 + + + submenuAction: + + Aplicativos + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{615, 464}, {644, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{615, 464}, {644, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{684, 490}, {519, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{684, 490}, {519, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAw1UAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCEAAAw2sAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{0, 801}, {140, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/German.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/German.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106 + LprojLocale + de + LprojRevisionLevel + 1 + LprojVersion + 106 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/German.lproj/main.nib/designable.nib @@ -0,0 +1,3615 @@ + + + + 1040 + 11A289 + 903 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 903 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Über X11 + + 2147483647 + + + + + + Einstellungen … + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Dienste + + 1048576 + 2147483647 + + + submenuAction: + + Dienste + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Vollbildmodus ein-/ausschalten + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 ausblenden + h + 1048576 + 2147483647 + + + 42 + + + + Andere ausblenden + h + 1572864 + 2147483647 + + + + + + Alle einblenden + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 beenden + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Programme + + 1048576 + 2147483647 + + + submenuAction: + + Programme + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Anpassen … + + 1048576 + 2147483647 + + + + + + + + + Bearbeiten + + 1048576 + 2147483647 + + + submenuAction: + + Bearbeiten + + + + Kopieren + c + 1048576 + 2147483647 + + + + + + + + + Fenster + + 1048576 + 2147483647 + + + submenuAction: + + Fenster + + + + Schließen + w + 1048576 + 2147483647 + + + + + + Im Dock ablegen + m + 1048576 + 2147483647 + + + + + + Zoomen + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Vorwärts blättern + < + 1048576 + 2147483647 + + + + + + Rückwärts blättern + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Alle nach vorne bringen + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Hilfe + + 1048576 + 2147483647 + + + submenuAction: + + Hilfe + + + + X11 Hilfe + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{2350, 1291.0391}, {550, 341}} + 1350041600 + X11 Einstellungen + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {524, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Drei Maustasten nachbilden + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {461, 28}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung können die Tastenentsprechungen für die Menüleiste die X11-Programme stören, die Meta-Sondertasten verwenden. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 203}, {461, 34}} + + + YES + + 67239424 + 4194304 + SGFsdGVuIFNpZSBiZWltIEtsaWNrZW4gZGllIFdhaGx0YXN0ZSBvZGVyIGRpZSBCZWZlaGxzdGFzdGUg +Z2VkcsO8Y2t0LCB1bSBkaWUgbWl0dGxlcmUgb2RlciBkaWUgcmVjaHRlIE1hdXN0YXN0ZSB6dSBha3Rp +dmllcmVuLgo + + + + + + + + + + 256 + {{18, 127}, {402, 18}} + + + YES + + 67239424 + 0 + Tastenentsprechungen unter X11 aktivieren + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 151}, {461, 28}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung kann Ihre aktuelle X11-Keymap durch Änderungen des Tastaturmenüs überschrieben werden. + + + + + + + + + + 256 + {{18, 185}, {402, 18}} + + + YES + + 67239424 + 0 + Tastaturbelegung des Systems verwenden + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {461, 31}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung entsprechen die Wahltasten Alt_L und Alt_R X11-Tastensymbolen anstatt „Mode_switch“. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Wahltasten entsprechen Alt_L und Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Immer in Bewegungsrichtung der Finger scrollen + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {504, 279}} + + + Eingabe + + + + + + 2 + + + + 256 + + + + 256 + {{74, 235}, {197, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Vom Monitor + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 Farben + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + 32768 Farben + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + 16,7 Millionen Farben + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {55, 20}} + + + YES + + 67239424 + 4194304 + Farben: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Diese Option wird beim nächsten Start von X11 wirksam. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Vollbildmodus + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + Zugriff auf Menüleiste im Vollbildmodus erlauben + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {461, 42}} + + + YES + + 67239424 + 4194304 + Hiermit wird das X11-Hauptfenster aktiviert. Verwenden Sie die Tastenkombination Befehl+Wahl+A, um den Vollbildmodus ein- oder auszuschalten. + + + + + + + + + + 256 + {{54, 79}, {436, 31}} + + + YES + + 67239424 + 4194304 + Die Menüleiste wird sichtbar, sobald Sie den Mauszeiger in den oberen Bereich Ihres primären Display bewegen. + + + + + + + + {{10, 33}, {504, 279}} + + + Ausgabe + + + + + + 2 + + + + 256 + + + + 256 + {{11, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Synchronisierung aktivieren + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{29, 221}, {464, 28}} + + + YES + + 67239424 + 4194304 + Aktiviert das Menüobjekt „Kopieren“ und ermöglicht die Synchronisierung zwischen dem „OSX Pasteboard“ und den Pufferspeichern „CLIPBOARD“ und „PRIMARY“ von X11. + + + + + + + + + 256 + {{27, 129}, {436, 18}} + + + YES + + 67239424 + 0 + CLIPBOARD aktualisieren, wenn Pasteboard geändert wird + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{27, 104}, {463, 18}} + + + YES + + 67239424 + 0 + PRIMARY (Mittel-Klick) aktualisieren, wenn Pasteboard geändert wird + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{27, 81}, {498, 18}} + + + YES + + 67239424 + 0 + Pasteboard sofort aktualisieren, wenn Text ausgewählt wird + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{27, 192}, {438, 18}} + + + YES + + 67239424 + 0 + Pasteboard aktualisieren, wenn CLIPBOARD geändert wird + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{41, 158}, {452, 28}} + + + YES + + 67239424 + 4194304 + Deaktivieren Sie diese Option, wenn Sie „xclipboard“, „klipper“ oder einen beliebigen anderen X11-Zwischenablage-Manager verwenden möchten. + + + + + + + + + 256 + {{41, 47}, {450, 28}} + + + YES + + 67239424 + 4194304 + Aufgrund von Einschränkungen im X11-Protokoll funktioniert diese Option in manchen Programmen u. U. nicht immer. + + + + + + + + {{10, 33}, {504, 279}} + + + + Zwischenablage + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {213, 18}} + + + YES + + 67239424 + 0 + Durch inaktive Fenster klicken + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 211}, {456, 28}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung wird beim Klicken auf ein inaktives Fenster der Mausklick zusätzlich an dieses Fenster weitergegeben. + + + + + + + + + 256 + {{15, 184}, {155, 18}} + + + YES + + 67239424 + 0 + Fokus folgt der Maus + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {442, 17}} + + + YES + + 67239424 + 4194304 + Der Fokus des X11-Fensters folgt dem Cursor. Dies hat einige nachteilige Effekte. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus auf neuem Fenster + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 92}, {456, 42}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung wird beim Erzeugen eines neuen X11-Fensters das „X11.app“ in den Vordergrund gebracht (anstelle von „Finder.app“, „Terminal.app“ usw.). + + + + + + + + {{10, 33}, {504, 279}} + + + Fenster + + + + + + + 256 + + + + 256 + {{18, 243}, {215, 18}} + + + YES + + 67239424 + 0 + Verbindungen authentifizieren + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {312, 18}} + + + YES + + 67239424 + 0 + Verbindungen von Netzwerk-Clients erlauben + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 189}, {463, 48}} + + + YES + + 67239424 + 4194304 + Beim Starten von X11 werden Xauthority-Schlüssel zur Zugriffskontrolle erstellt. Wenn sich die IP-Adresse des Systems ändert, sind diese Schlüssel nicht mehr gültig. Möglicherweise können die X11-Programme dann nicht mehr gestartet werden. + + + + + + + + + + 256 + {{36, 104}, {463, 56}} + + + YES + + 67239424 + 4194304 + Bei Aktivierung muss „Verbindungen authentifizieren“ ebenfalls aktiviert sein, damit die Sicherheit des System gewährleistet ist. Bei Deaktivierung sind Verbindungen von entfernten Programmen nicht erlaubt. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Diese Optionen werden beim nächsten Start von X11 wirksam. + + + + + + + + + {{10, 33}, {504, 279}} + + + Sicherheit + + + + + + + 0 + YES + YES + + + + + + {550, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{360, 400}, {512, 271}} + 1350041600 + X11-Programmmenü + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {512, 240} + + + 256 + + + + 265 + {{340, 191}, {158, 32}} + + YES + + 67239424 + 137887744 + Duplizieren + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {158, 32}} + + YES + + 67239424 + 137887744 + Entfernen + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 122.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Name + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Textzelle + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 100 + 40 + 1000 + + 75628096 + 2048 + Befehl + + + + + + 338820672 + 1024 + Textzelle + + + + + + + 3 + YES + YES + + + + 69 + 10 + 1000 + + 75628096 + 2048 + Kurzbefehl + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Textzelle + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {158, 32}} + + YES + + -2080244224 + 137887744 + Objekt hinzufügen + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {512, 271} + + {{0, 0}, {1920, 1178}} + {512, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Menü + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Programme + + 1048576 + 2147483647 + + + submenuAction: + + Programme + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Anpassen … + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{329, 408}, {550, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{329, 408}, {550, 341}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {512, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAwr4AAA + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/no.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/no.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106 + LprojLocale + no + LprojRevisionLevel + 1 + LprojVersion + 106 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/no.lproj/main.nib/designable.nib @@ -0,0 +1,3875 @@ + + + + 1040 + 11A289 + 902 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 902 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Om X11 + + 2147483647 + + + + + + Valg... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tjenester + + 1048576 + 2147483647 + + + submenuAction: + + Tjenester + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Slå fullskjermmodus på/av + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Skjul X11 + h + 1048576 + 2147483647 + + + 42 + + + + Skjul andre + h + 1572864 + 2147483647 + + + + + + Vis alle + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Avslutt X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Programmer + + 1048576 + 2147483647 + + + submenuAction: + + Programmer + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tilpass... + + 1048576 + 2147483647 + + + + + + + + + Rediger + + 1048576 + 2147483647 + + + submenuAction: + + Rediger + + + + Kopier + c + 1048576 + 2147483647 + + + + + + + + + Vindu + + 1048576 + 2147483647 + + + submenuAction: + + Vindu + + + + Lukk + w + 1048576 + 2147483647 + + + + + + Minimer + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bla gjennom vinduer + < + 1048576 + 2147483647 + + + + + + Bla baklengs gjennom vinduer + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Legg alle øverst + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Hjelp + + 1048576 + 2147483647 + + + submenuAction: + + Hjelp + + + + X11-hjelp + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364}, {484, 341.0390625}} + 1350041600 + X11-valg + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emuler mus med tre knapper + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {385, 28}} + + + YES + + 67239424 + 4194304 + Når aktivert, kan tastaturkommandoer for menylinjen komme i konflikt med X11-programmer som bruker metatasten. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + SG9sZCBuZWRlIFRpbHZhbGctIGVsbGVyIEtvbW1hbmRvLXRhc3RlbiBtZW5zIGR1IGtsaWtrZXIgZm9y +IMOlIGFrdGl2ZXJlIGRlbiBtaWR0cmUgZWxsZXIgaMO4eXJlIG11c2VrbmFwcGVuLgo + + + + + + + + + + 256 + {{18, 127}, {402, 18}} + + + YES + + 67239424 + 0 + Aktiver tastaturkommandoer i X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 151}, {385, 28}} + + + YES + + 67239424 + 4194304 + Gir deg mulighet til å legge inn menyendringer som overskriver den nåværende X11-tastaturlayouten. + + + + + + + + + + 256 + {{18, 185}, {402, 18}} + + + YES + + 67239424 + 0 + Følg systemets tastaturlayout + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {385, 31}} + + + YES + + 67239424 + 4194304 + Når dette er aktivert, sender Tilvalg-tastene Alt_L og Alt_R X11-nøkkelsymboler i stedet for Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Tilvalg-tastene sender Alt_L og Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Rull alltid i samme retning som fingerbevegelsene + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + Inndata + + + + + + 2 + + + + 256 + + + + 256 + {{68, 235}, {134, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Fra skjerm + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 farger + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tusener + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Millioner + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 241}, {49, 17}} + + + YES + + 67239424 + 4194304 + Farger: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Denne innstillingen trer i kraft neste gang X11 startes. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Fullskjermmodus + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {373, 23}} + + + YES + + 67239424 + 0 + Gi tilgang til menylinjen i fullskjermmodus + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {375, 28}} + + + YES + + 67239424 + 4194304 + Aktiverer X11-rotvinduet. Slå fullskjermmodus på og av ved å trykke på Kommando-Tilvalg-A samtidig. + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + Menylinjen blir synlig når musemarkøren plasseres øverst på hovedskjermen. + + + + + + + + {{10, 33}, {438, 279}} + + + Utdata + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Aktiver synkronisering + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {385, 28}} + + + YES + + 67239424 + 4194304 + Aktiverer «kopier»-menyobjektet og gjør det mulig å synkronisere mellom bufrene i OSX Pasteboard, X11 CLIPBOARD og PRIMARY. + + + + + + + + + 256 + {{34, 129}, {383, 23}} + + + YES + + 67239424 + 0 + Oppdater CLIPBOARD når Utklipp endres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {383, 23}} + + + YES + + 67239424 + 0 + Oppdater PRIMARY (midtklikk) når Utklipp endres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {383, 23}} + + + YES + + 67239424 + 0 + Oppdater Utklipp umiddelbart når ny tekst markeres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {383, 23}} + + + YES + + 67239424 + 0 + Oppdater Utklipp når CLIPBOARD endres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {370, 28}} + + + YES + + 67239424 + 4194304 + Deaktiver dette valget hvis du vil bruke xclipboard, klipper eller andre X11-utklippshåndterere. + + + + + + + + + 256 + {{48, 47}, {370, 28}} + + + YES + + 67239424 + 4194304 + På grunn av begrensninger i X11-protokollen, er det mulig at dette valget ikke fungerer i alle programmer. + + + + + + + + {{10, 33}, {438, 279}} + + + Utklipp + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Registrer klikk i inaktive vinduer + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {385, 31}} + + + YES + + 67239424 + 4194304 + Når denne funksjonen er aktivert, registreres museklikk i inaktive vinduer når du klikker i dem, i tillegg til at vinduene aktiveres. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus følger musen + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {385, 17}} + + + YES + + 67239424 + 4194304 + X11-vindufokus følger markøren. Kan være upraktisk i bruk. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Fokuser på nye vinduer + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {385, 28}} + + + YES + + 67239424 + 4194304 + Når denne funksjonen er aktivert, legges X11.app øverst (i stedet for Finder.app, Terminal.app osv.) når du oppretter et nytt X11-vindu. + + + + + + + + {{10, 33}, {438, 279}} + + + Vinduer + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Godkjenn tilkoblinger + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Tillat tilkoblinger fra nettverksklienter + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {383, 42}} + + + YES + + 67239424 + 4194304 + Når du starter X11, opprettes det Xauthority-tilgangskontrolltaster. Hvis maskinens IP-adresse endres, kan ikke disse tastene brukes, noe som kan hindre X11-programmer fra å starte. + + + + + + + + + + 256 + {{36, 118}, {364, 42}} + + + YES + + 67239424 + 4194304 + Hvis dette er aktivert, må du for å sikre systemet, også aktivere Godkjenn tilkoblinger. Når dette ikke er aktivert, er tilkoblinger fra eksterne programmer ikke tillatt. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Disse innstillingene trer i kraft neste gang X11 startes. + + + + + + + + + {{10, 33}, {438, 279}} + + + Sikkerhet + + + + + + + 0 + YES + YES + + + + + + {{7, 11}, {484, 341}} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {485, 271}} + 1350041600 + X11-programmeny + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {131, 32}} + + YES + + 67239424 + 137887744 + Dupliser + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {131, 32}} + + YES + + 67239424 + 137887744 + Fjern + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Navn + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Tekstrute + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 99 + 40 + 1000 + + 75628096 + 2048 + Kommando + + + + + + 338820672 + 1024 + Tekstrute + + + + + + + 3 + YES + YES + + + + 71 + 10 + 1000 + + 75628096 + 2048 + Snarvei + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Tekstrute + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {131, 32}} + + YES + + -2080244224 + 137887744 + Legg til objekt + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {485, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Meny + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Programmer + + 1048576 + 2147483647 + + + submenuAction: + + Programmer + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tilpass… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + {{507, 565}, {484, 308}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + + + X11Controller + NSObject + + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + apps_table_delete: + id + + + apps_table_done: + id + + + apps_table_duplicate: + id + + + apps_table_new: + id + + + apps_table_show: + id + + + bring_to_front: + id + + + close_window: + id + + + enable_fullscreen_changed: + id + + + minimize_window: + id + + + next_window: + id + + + prefs_changed: + id + + + prefs_show: + id + + + previous_window: + id + + + quit: + id + + + toggle_fullscreen: + id + + + x11_help: + id + + + zoom_window: + id + + + + NSMenuItem + NSTableView + NSButton + NSMenuItem + NSPopUpButton + NSMenu + NSMenu + NSMenuItem + NSButton + NSButton + NSButton + NSTextField + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSPanel + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSTextField + NSMenuItem + NSButton + NSMenuItem + NSMenuItem + + + + apps_separator + NSMenuItem + + + apps_table + NSTableView + + + click_through + NSButton + + + copy_menu_item + NSMenuItem + + + depth + NSPopUpButton + + + dock_apps_menu + NSMenu + + + dock_menu + NSMenu + + + dock_window_separator + NSMenuItem + + + enable_auth + NSButton + + + enable_fullscreen + NSButton + + + enable_fullscreen_menu + NSButton + + + enable_fullscreen_menu_text + NSTextField + + + enable_keyequivs + NSButton + + + enable_tcp + NSButton + + + fake_buttons + NSButton + + + focus_follows_mouse + NSButton + + + focus_on_new_window + NSButton + + + option_sends_alt + NSButton + + + prefs_panel + NSPanel + + + scroll_in_device_direction + NSButton + + + sync_clipboard_to_pasteboard + NSButton + + + sync_keymap + NSButton + + + sync_pasteboard + NSButton + + + sync_pasteboard_to_clipboard + NSButton + + + sync_pasteboard_to_primary + NSButton + + + sync_primary_immediately + NSButton + + + sync_text1 + NSTextField + + + sync_text2 + NSTextField + + + toggle_fullscreen_item + NSMenuItem + + + use_sysbeep + NSButton + + + window_separator + NSMenuItem + + + x11_about_item + NSMenuItem + + + + IBDocumentRelativeSource + ../../../X11Controller.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Italian.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + it + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Italian.lproj/main.nib/designable.nib @@ -0,0 +1,3666 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Informazioni su X11 + + 2147483647 + + + + + + Preferenze... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Servizi + + 1048576 + 2147483647 + + + submenuAction: + + Servizi + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Alterna A tutto schermo + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Nascondi X11 + h + 1048576 + 2147483647 + + + 42 + + + + Nascondi altre + h + 1572864 + 2147483647 + + + + + + Mostra tutte + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Esci da X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Applicazioni + + 1048576 + 2147483647 + + + submenuAction: + + Applicazioni + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizza... + + 1048576 + 2147483647 + + + + + + + + + Composizione + + 1048576 + 2147483647 + + + submenuAction: + + Composizione + + + + Copia + c + 1048576 + 2147483647 + + + + + + + + + Finestra + + 1048576 + 2147483647 + + + submenuAction: + + Finestra + + + + Chiudi + w + 1048576 + 2147483647 + + + + + + Contrai + m + 1048576 + 2147483647 + + + + + + Ridimensiona + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Naviga tra le finestre + < + 1048576 + 2147483647 + + + + + + Inverti navigazione tra le finestre + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Porta tutto in primo piano + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Aiuto + + 1048576 + 2147483647 + + + submenuAction: + + Aiuto + + + + Aiuto X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{345, 450.03906}, {600, 341}} + 1350041600 + Preferenze X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {574, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emula mouse a tre pulsanti + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {511, 31}} + + + YES + + 67239424 + 4194304 + Se abilitati, gli equivalenti da tastiera della barra dei menu potrebbero interferire con le applicazioni X11 che utilizzano il modificatore Meta. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {511, 42}} + + + YES + + 67239424 + 4194304 + UGVyIGF0dGl2YXJlIGlsIHB1bHNhbnRlIGRlc3RybyBvIHF1ZWxsbyBjZW50cmFsZSBkZWwgbW91c2Us +IGZhaSBjbGljIHRlbmVuZG8gcHJlbXV0byBpbCBwdWxzYW50ZSBPcHppb25lIG8gaWwgcHVsc2FudGUg +Q29tYW5kby4KA + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + Abilita equivalenti da tastiera con X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 155}, {453, 17}} + + + YES + + 67239424 + 4194304 + Consente le modifiche del menu tastiera per riscrivere l'attuale mappa dei tasti X11. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + Segui layout di tastiera di sistema + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 46}, {497, 17}} + + + YES + + 67239424 + 4194304 + Se abilitati, i tasti Opzione inviano i simboli dei tasti X11 Alt_L e Alt_R anziché Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + I tasti Opzione inviano Alt_L e Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 23}, {435, 18}} + + + YES + + 67239424 + 0 + Scorri sempre contenuto nella direzione del movimento delle dita + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {554, 279}} + + + + Ingresso + + + + + + 2 + + + + 256 + + + + 256 + {{70, 234}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Dal monitor + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 Colori + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Migliaia + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Milioni + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {51, 20}} + + + YES + + 67239424 + 4194304 + Colori: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Queste opzioni diventeranno effettive al successivo riavvio di X11. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Modalità a tutto schermo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {474, 18}} + + + YES + + 67239424 + 0 + Consenti accesso alla barra dei menu in modalità a tutto schermo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {504, 31}} + + + YES + + 67239424 + 4194304 + Abilita la finestra root di X11. Utilizza la combinazione di tasti Comando-Opzione-A per attivare e disattivare la modalità a tutto schermo. + + + + + + + + + + 256 + {{54, 79}, {491, 31}} + + + YES + + 67239424 + 4194304 + La barra dei menu diventa visibile quando il cursore del mouse viene posizionato nella parte superiore dello schermo principale. + + + + + + + + {{10, 33}, {554, 279}} + + + Uscita + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Abilita sincronizzazione + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {512, 28}} + + + YES + + 67239424 + 4194304 + Abilita l'elemento “copia” del menu e consenti la sincronizzazione degli appunti di OSX e i buffer CLIPBOARD e PRIMARY di X11. + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + Aggiorna CLIPBOARD quando gli appunti cambiano + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {513, 23}} + + + YES + + 67239424 + 0 + Aggiorna PRIMARY (clic con il pulsante centrale) quando gli appunti cambiano + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {470, 18}} + + + YES + + 67239424 + 0 + Aggiorna immediatamente gli appunti quando si seleziona nuovo testo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + Aggiorna gli appunti quando CLIPBOARD cambia + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{50, 158}, {500, 28}} + + + YES + + 67239424 + 4194304 + Se desideri utilizzare xclipboard, klipper o qualsiasi altro gestore di appunti di X11, disabilita questa opzione. + + + + + + + + + 256 + {{48, 47}, {500, 28}} + + + YES + + 67239424 + 4194304 + A causa delle limitazioni del protocollo di X11, questa opzione in alcune applicazioni potrebbe non funzionare sempre. + + + + + + + + {{10, 33}, {554, 279}} + + + Appunti + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Clic finestre inattive + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {517, 31}} + + + YES + + 67239424 + 4194304 + Quando il riquadro è attivato, facendo clic su una finestra inattiva, il clic del mouse passerà a tale finestra e la attiverà. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Messa a fuoco mediante il mouse + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 150}, {523, 28}} + + + YES + + 67239424 + 4194304 + La messa a fuoco della finestra di X11 avviene mediante il cursore. Questo può avere effetti controproducenti. + + + + + + + + + 256 + {{15, 125}, {402, 18}} + + + YES + + 67239424 + 0 + Messa a fuoco sulle nuove finestre + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 77}, {517, 42}} + + + YES + + 67239424 + 4194304 + Quando il riquadro è attivato, la creazione di una nuova finestra di X11 farà spostare X11.app in primo piano (invece di Finder.app, Terminal.app, etc.) + + + + + + + + {{10, 33}, {554, 279}} + + + Finestre + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Autentica connessioni + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Consente le connessioni da client network + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 181}, {510, 56}} + + + YES + + 67239424 + 4194304 + All'avvio di X11 verranno create le chiavi Xauthority per il controllo d'accesso. Se l'indirizzo IP del sistema cambia, tali chiavi non sono più valide. Questa situazione potrebbe bloccare l'avvio delle applicazioni X11. + + + + + + + + + + 256 + {{36, 104}, {510, 56}} + + + YES + + 67239424 + 4194304 + Se possibile, per garantire la sicurezza del sistema deve essere inoltre abilitata la funzione Autentica connessioni. Quando questa funzione non è attiva, non sono consentite le connessioni dalle applicazioni remote. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Queste opzioni diventeranno effettive al successivo riavvio di X11. + + + + + + + + + {{10, 33}, {554, 279}} + + + Protezione + + + + + + + 0 + YES + YES + + + + + + {600, 341} + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_prefs + + + 11 + 2 + {{302, 440}, {546, 271}} + 1350041600 + Menu applicazioni X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 265 + {{372, 191}, {160, 32}} + + YES + + 67239424 + 137887744 + Duplica + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{372, 159}, {160, 32}} + + YES + + 67239424 + 137887744 + Rimuovi + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {333, 198} + + YES + + + 256 + {333, 17} + + + + + + 256 + {{334, 0}, {16, 17}} + + + + + 132.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nome + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Cella di testo + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 110 + 40 + 1000 + + 75628096 + 2048 + Comando + + + + + + 338820672 + 1024 + Cella di testo + + + + + + + 3 + YES + YES + + + + + 81 + 10 + 1000 + + 75628096 + 2048 + Abbreviazione + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Cella di testo + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {333, 198}} + + + + + 4 + + + + 256 + {{334, 17}, {15, 198}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {333, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {333, 17}} + + + + + 4 + + + + {{20, 20}, {350, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{372, 223}, {160, 32}} + + YES + + -2080244224 + 137887744 + Aggiungi elemento + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {546, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Applicazioni + + 1048576 + 2147483647 + + + submenuAction: + + Applicazioni + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizza… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{216, 370}, {600, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{216, 370}, {600, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Spanish.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + es + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Spanish.lproj/main.nib/designable.nib @@ -0,0 +1,3678 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Acerca de X11 + + 2147483647 + + + + + + Preferencias... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Servicios + + 1048576 + 2147483647 + + + submenuAction: + + Servicios + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Activar/desactivar pantalla completa + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Ocultar X11 + h + 1048576 + 2147483647 + + + 42 + + + + Ocultar otros + h + 1572864 + 2147483647 + + + + + + Mostrar todo + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Salir de X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Aplicaciones + + 1048576 + 2147483647 + + + submenuAction: + + Aplicaciones + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar... + + 1048576 + 2147483647 + + + + + + + + + Edición + + 1048576 + 2147483647 + + + submenuAction: + + Edición + + + + Copiar + c + 1048576 + 2147483647 + + + + + + + + + Ventana + + 1048576 + 2147483647 + + + submenuAction: + + Ventana + + + + Cerrar + w + 1048576 + 2147483647 + + + + + + Minimizar + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Recorrer ventanas + < + 1048576 + 2147483647 + + + + + + Recorrer ventanas al revés + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Traer todo al frente + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Ayuda + + 1048576 + 2147483647 + + + submenuAction: + + Ayuda + + + + Ayuda X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{345, 450.03906}, {619, 341}} + 1350041600 + Preferencias de X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {593, 325}} + + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + + YES + + 67239424 + 0 + Simular ratón de tres botones + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {501, 28}} + + + + YES + + 67239424 + 4194304 + Cuando esta opción está activada, puede que los equivalentes de teclado de la barra de menús interfieran con las aplicaciones X11 que usen el modificador Meta. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 209}, {501, 28}} + + + + YES + + 67239424 + 4194304 + TWFudGVuZ2EgcHVsc2FkYXMgbGFzIHRlY2xhcyBPcGNpw7NuIG8gQ29tYW5kbyBhbCBoYWNlciBjbGlj +IHBhcmEgYWN0aXZhciBlbCBib3TDs24gY2VudHJhbCBvIGRlcmVjaG8gZGVsIHJhdMOzbi4KA + + + + + + + + + + 256 + {{18, 127}, {402, 18}} + + + + YES + + 67239424 + 0 + Activar equivalentes de teclado en X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 151}, {501, 28}} + + + + YES + + 67239424 + 4194304 + Permite que los cambios en el menú de teclado reemplacen la distribución de teclas actual de X11. + + + + + + + + + + 256 + {{18, 185}, {402, 18}} + + + + YES + + 67239424 + 0 + Seguir la distribución de teclado del sistema + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 35}, {501, 28}} + + + + YES + + 67239424 + 4194304 + Si esta opción está seleccionada, las teclas Opción envían los símbolos de tecla de X11 Alt_L y Alt_R en vez de Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + + YES + + 67239424 + 0 + Las teclas Opción envían Alt_L y Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 11}, {459, 18}} + + + + YES + + 67239424 + 0 + Permitir desplazamiento en la dirección del movimiento de los dedos + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {573, 279}} + + + + + Entrada + + + + + + 2 + + + + 256 + + + + 256 + {{77, 234}, {168, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + De la pantalla + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 colores + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Miles + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Millones + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {58, 20}} + + + YES + + 67239424 + 4194304 + Colores: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Esta opción será efectiva la próxima vez que se inicie X11. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Modalidad de pantalla completa + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {533, 18}} + + + YES + + 67239424 + 0 + Permitir acceso a la barra de menús en la modalidad de pantalla completa + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {511, 31}} + + + YES + + 67239424 + 4194304 + Activa la ventana raíz de X11. Use la combinación de teclas Comando + Opción + A para entrar o salir de la modalidad de pantalla completa. + + + + + + + + + + 256 + {{54, 79}, {493, 31}} + + + YES + + 67239424 + 4194304 + La barra de menús estará visible cuando el cursor del ratón se sitúe en la parte superior de la pantalla principal. + + + + + + + + {{10, 33}, {573, 279}} + + + Salida + + + + + + 2 + + + + 256 + + + + 256 + {{18, 238}, {409, 23}} + + + YES + + 67239424 + 0 + Activar sincronización + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 204}, {501, 28}} + + + YES + + 67239424 + 4194304 + Activa el ítem de menú “copiar” y permite sincronizar el portapapeles de OSX y los búfers CLIPBOARD y PRIMARY de X11. + + + + + + + + + 256 + {{34, 112}, {409, 23}} + + + YES + + 67239424 + 0 + Actualizar el CLIPBOARD cuando cambie el portapapeles + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 87}, {529, 23}} + + + YES + + 67239424 + 0 + Actualizar el PRIMARY (clic con el botón central) cuando cambie el portapapeles + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 62}, {495, 18}} + + + YES + + 67239424 + 0 + Actualizar el portapapeles de inmediato cuando se seleccione texto nuevo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 175}, {409, 23}} + + + YES + + 67239424 + 0 + Actualizar el portapapeles cuando cambie el CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 141}, {485, 28}} + + + YES + + 67239424 + 4194304 + Desactive esta opción si desea usar xclipboard, klipper o cualquier otro gestor de portapapeles de X11. + + + + + + + + + 256 + {{48, 30}, {485, 28}} + + + YES + + 67239424 + 4194304 + A causa de las limitaciones del protocolo de X11, puede que esta opción no funcione siempre en algunas aplicaciones. + + + + + + + + {{10, 33}, {573, 279}} + + + Portapapeles + + + + + + 2 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Hacer clic para pasar de una ventana inactiva a otra + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{26, 206}, {523, 31}} + + + YES + + 67239424 + 4194304 + Cuando está activada, al hacer clic en una ventana inactiva, la ventana se activa y además el clic del ratón se transmite a ella. + + + + + + + + + 256 + {{18, 182}, {402, 18}} + + + YES + + 67239424 + 0 + Enfocar la posición del ratón + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{26, 162}, {523, 14}} + + + YES + + 67239424 + 4194304 + El punto de enfoque de la ventana de X11 sigue el cursor. Esto conlleva algunos inconvenientes. + + + + + + + + + 256 + {{18, 138}, {402, 18}} + + + YES + + 67239424 + 0 + Enfocar las ventanas nuevas + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{26, 90}, {523, 42}} + + + YES + + 67239424 + 4194304 + Cuando está activada, al crear una nueva ventana de X11 el archivo X11.app se sitúa en primer plano (por encima de Finder.app, Terminal.app, etc.) + + + + + + + + {{10, 33}, {573, 279}} + + + Ventanas + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Autenticar conexiones + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Permitir conexiones de clientes de red + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {501, 42}} + + + YES + + 67239424 + 4194304 + Al iniciar X11 se crearán unas claves de control de acceso Xauthority. Si la dirección IP del sistema cambia, estas claves dejarán de ser válidas, lo que impediría que pudiesen ejecutarse las aplicaciones X11. + + + + + + + + + + 256 + {{36, 104}, {501, 56}} + + + YES + + 67239424 + 4194304 + Si esta opción está activada, la opción “Autenticar conexiones” también debe estarlo para garantizar la seguridad del sistema. Si está desactivada, las conexiones de aplicaciones remotas no están permitidas. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Estas opciones serán efectivas la próxima vez que se inicie X11. + + + + + + + + + {{10, 33}, {573, 279}} + + + Seguridad + + + + + + + 0 + YES + YES + + + + + + {619, 341} + + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_prefs + + + 11 + 2 + {{302, 440}, {454, 271}} + 1350041600 + Menú de aplicaciones X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {110, 32}} + + YES + + 67239424 + 137887744 + Duplicar + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {110, 32}} + + YES + + 67239424 + 137887744 + Eliminar + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {316, 213} + + YES + + + 256 + {316, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 110 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nombre + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Celda de texto + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 93 + 40 + 1000 + + 75628096 + 2048 + Comando + + + + + + 338820672 + 1024 + Celda de texto + + + + + + + 3 + YES + YES + + + + + 104 + 10 + 1000 + + 75628096 + 2048 + Función rápida + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Celda de texto + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {316, 213}} + + + + 4 + + + + 256 + {{302, 17}, {15, 213}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {316, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + 4 + + + + {{20, 20}, {318, 231}} + + 133170 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {110, 32}} + + YES + + -2080244224 + 137887744 + Añadir ítem + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_apps + + + Menú + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Aplicaciones + + 1048576 + 2147483647 + + + submenuAction: + + Aplicaciones + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {619, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 565}, {619, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{0, 992}, {151, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{151, 982}, {163, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pl.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + pl + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pl.lproj/main.nib/designable.nib @@ -0,0 +1,3691 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + X11… + + 2147483647 + + + + + + Preferencje… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Usługi + + 1048576 + 2147483647 + + + submenuAction: + + Usługi + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Przełączaj pełny ekran + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Ukryj X11 + h + 1048576 + 2147483647 + + + 42 + + + + Ukryj pozostałe + h + 1572864 + 2147483647 + + + + + + Pokaż wszystkie + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Zakończ X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Programy + + 1048576 + 2147483647 + + + submenuAction: + + Programy + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Dostosuj… + + 1048576 + 2147483647 + + + + + + + + + Edycja + + 1048576 + 2147483647 + + + submenuAction: + + Edycja + + + + Kopiuj + c + 1048576 + 2147483647 + + + + + + + + + Okno + + 1048576 + 2147483647 + + + submenuAction: + + Okno + + + + Zamknij + w + 1048576 + 2147483647 + + + + + + Minimalizuj okno + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Przełączaj między oknami + ` + 1048576 + 2147483647 + + + + + + Przełączaj wstecz pomiędzy oknami + ` + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Umieść wszystko na wierzchu + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Pomoc + + 1048576 + 2147483647 + + + submenuAction: + + Pomoc + + + + Pomoc X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{288, 302.03906}, {600, 341}} + 1350041600 + Preferencje X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {574, 325}} + + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + + YES + + 67239424 + 0 + Emuluj mysz z trzema przyciskami + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {495, 31}} + + + + YES + + 67239424 + 4194304 + Równoważniki klawiszowe paska menu będą mogły kolidować z programami X11 używającymi modyfikatora Meta. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 203}, {495, 34}} + + + + YES + + 67239424 + 4194304 + S2xpa25pxJljaWUgeiBwcnp5dHJ6eW1hbnltIGtsYXdpc3plbSBPcGNqYSBsdWIgQ29tbWFuZCBlbXVs +dWplIMWbcm9ka293eSBsdWIgcHJhd3kgcHJ6eWNpc2sgbXlzenkuCg + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + + YES + + 67239424 + 0 + Włącz równoważniki klawiszowe w środowisku X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 144}, {495, 31}} + + + + YES + + 67239424 + 4194304 + Umożliwia zastąpienie bieżącej mapy klawiszy X11 zmianami w menu wejścia. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + + YES + + 67239424 + 0 + Stosuj systemowy układ klawiatury + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {495, 31}} + + + + YES + + 67239424 + 4194304 + Naciśnięcie klawisza Opcja spowoduje wysłanie symboli klawiszy X11 Alt_L i Alt_R X11, a nie Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + + YES + + 67239424 + 0 + Klawisze Opcja działają jak prawy i lewy klawisz Alt + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + + YES + + 67239424 + 0 + Zawsze przewijaj zgodnie z kierunkiem ruchu palca + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {554, 279}} + + + + + Wejście + + + + + + 2 + + + + 256 + + + + 256 + {{74, 235}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Z monitora + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 kolorów + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tysiące + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Miliony + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {55, 20}} + + + YES + + 67239424 + 4194304 + Kolory: + + + + + + + + + + 256 + {{36, 216}, {369, 14}} + + + YES + + 67239424 + 4194304 + Opcja będzie aktywna po ponownym uruchomieniu X11. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Tryb pełnego ekranu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {390, 23}} + + + YES + + 67239424 + 0 + Włącz dostęp z paska menu w trybie pełnoekranowym + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {486, 31}} + + + YES + + 67239424 + 4194304 + Włącza okno główne X11. Do włączania i wyłączania trybu pełnego ekranu służą klawisze Command-Opcja-A. + + + + + + + + + + 256 + {{54, 79}, {468, 31}} + + + YES + + 67239424 + 4194304 + Pasek menu będzie pojawiał się, gdy kursor myszy znajdzie się u góry głównego monitora. + + + + + + + + {{10, 33}, {554, 279}} + + + Wyjście + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Włącz synchronizację + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{40, 221}, {483, 28}} + + + YES + + 67239424 + 4194304 + Aktywuje menu kopiowania i umożliwia synchronizowanie schowka OS X z buforami X11 (CLIPBOARD i PRIMARY). + + + + + + + + + 256 + {{38, 129}, {409, 23}} + + + YES + + 67239424 + 0 + Uaktualniaj bufor CLIPBOARD zmianami Schowka + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{38, 104}, {489, 18}} + + + YES + + 67239424 + 0 + Uaktualniaj bufor PRIMARY (środkowy przycisk myszy) zmianami Schowka + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{38, 79}, {432, 18}} + + + YES + + 67239424 + 0 + Uaktualniaj Schowek natychmiast po zaznaczeniu nowego tekstu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{38, 192}, {409, 23}} + + + YES + + 67239424 + 0 + Uaktualniaj Schowek zmianami bufora CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{57, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + Wyłączenie opcji pozwala korzystać z menedżerów schowka X11 takich jak np. xclipboard lub, klipper. + + + + + + + + + 256 + {{52, 47}, {476, 28}} + + + YES + + 67239424 + 4194304 + Z powodu ograniczeń protokołu X11 funkcja może czasami nie działać w niektórych programach. + + + + + + + + {{10, 33}, {554, 279}} + + + Schowek + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus w nieaktywnym oknie jednym kliknięciem + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {517, 31}} + + + YES + + 67239424 + 4194304 + Kliknięcie nieaktywnego okna będzie powodowało jego uaktywnienie i przeniesienie do niego fokusu. + + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus podąża za myszą + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {401, 17}} + + + YES + + 67239424 + 4194304 + Fokus okien X11 podąża za kursorem (ma to pewne niekorzystne skutki). + + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus w nowych oknach + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 92}, {517, 42}} + + + YES + + 67239424 + 4194304 + Otwarcie nowego okna X11 będzie powodowało umieszczenie programu X11.app na wierzchu (zamiast Finder.app, Terminal.app itd.). + + + + + + + + + {{10, 33}, {554, 279}} + + + Okna + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Uwierzytelniaj połączenia + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Pozwalaj na połączenia od klientów sieciowych + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {452, 42}} + + + YES + + 67239424 + 4194304 + Uruchomienie X11 utworzy klucze kontroli dostępu Xauthority. Jeśli adres IP systemu zmieni się, klucze te stracą ważność, co może uniemożliwić uruchamianie programów X11. + + + + + + + + + + 256 + {{36, 118}, {504, 42}} + + + YES + + 67239424 + 4194304 + Gdy pole jest zaznaczone, dla bezpieczeństwa włączona musi być także opcja Uwierzytelniaj połączenia. Gdy pole nie jest zaznaczone, połączenia ze zdalnych programów nie są dozwolone. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Te opcje będą aktywne po następnym uruchomieniu X11. + + + + + + + + + {{10, 33}, {554, 279}} + + + Zabezpieczenia + + + + + + + 0 + YES + YES + + + + + + {600, 341} + + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_prefs + + + 11 + 2 + {{333, 380}, {454, 271}} + 1350041600 + Menu programów X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {104, 32}} + + + YES + + 67239424 + 137887744 + Powiel + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {104, 32}} + + + YES + + 67239424 + 137887744 + Usuń + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {316, 213} + + + YES + + + 256 + {316, 17} + + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + + 127.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nazwa + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Komórka tekstowa + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 105 + 40 + 1000 + + 75628096 + 2048 + Polecenie + + + + + + 338820672 + 1024 + Komórka tekstowa + + + + + + + 3 + YES + YES + + + + + 74 + 10 + 1000 + + 75628096 + 2048 + Skrót + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Komórka tekstowa + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {316, 213}} + + + + + + 4 + + + + 256 + {{302, 17}, {15, 213}} + + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {316, 15}} + + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + + 133170 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {104, 32}} + + + YES + + -2080244224 + 137887744 + Dodaj rzecz + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Programy + + 1048576 + 2147483647 + + + submenuAction: + + Programy + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Dostosuj… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{536, 476}, {600, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{536, 476}, {600, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Japanese.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + ja + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/Japanese.lproj/main.nib/designable.nib @@ -0,0 +1,3620 @@ + + + + 1040 + 11A289 + 903 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 903 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + X11 について + + 2147483647 + + + + + + 環境設定... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + サービス + + 1048576 + 2147483647 + + + submenuAction: + + サービス + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + フルスクリーンを切り替える + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 を隠す + h + 1048576 + 2147483647 + + + 42 + + + + ほかを隠す + h + 1572864 + 2147483647 + + + + + + すべてを表示 + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 を終了 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + アプリケーション + + 1048576 + 2147483647 + + + submenuAction: + + アプリケーション + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + カスタマイズ... + + 1048576 + 2147483647 + + + + + + + + + 編集 + + 1048576 + 2147483647 + + + submenuAction: + + 編集 + + + + コピー + c + 1048576 + 2147483647 + + + + + + + + + ウインドウ + + 1048576 + 2147483647 + + + submenuAction: + + ウインドウ + + + + 閉じる + w + 1048576 + 2147483647 + + + + + + しまう + m + 1048576 + 2147483647 + + + + + + 拡大/縮小 + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + ウインドウを巡回 + + 1048576 + 2147483647 + + + + + + ウインドウを逆方向に巡回 + + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + すべてを手前に移動 + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + ヘルプ + + 1048576 + 2147483647 + + + submenuAction: + + ヘルプ + + + + X11 ヘルプ + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{319, 328.03906000000001}, {584, 341}} + 1350041600 + X11 の環境設定 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {558, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {505, 18}} + + + YES + + 67239424 + 0 + 3 ボタンマウスをエミュレート + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 96}, {488, 28}} + + + YES + + 67239424 + 4194304 + 有効にすると、メニューバーの代替キーによって X11 アプリケーションのメタ修飾キーを使用できなくなる場合があります。 + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 209}, {488, 28}} + + + YES + + 67239424 + 4194304 + T3B0aW9uIOOCreODvOOCkuaKvOOBl+OBn+OBvuOBvuOCr+ODquODg+OCr+OBmeOCi+OBqOODnuOCpuOC +ueOBruS4reODnOOCv+ODs+aTjeS9nOOBq+OBquOCiuOAgUNvbW1hbmQg44Kt44O844KS5oq844GX44Gf +44G+44G+44Kv44Oq44OD44Kv44GZ44KL44Go44Oe44Km44K544Gu5Y+z44Oc44K/44Oz5pON5L2c44Gr +44Gq44KK44G+44GZ44CCCg + + + + + + + + + + 256 + {{18, 130}, {505, 18}} + + + YES + + 67239424 + 0 + X11 の代替キーを有効にする + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 156}, {488, 17}} + + + YES + + 67239424 + 4194304 + 入力メニューを変更して現在の X11 キーマップを上書きすることを許可します。 + + + + + + + + + + 256 + {{18, 179}, {505, 18}} + + + YES + + 67239424 + 0 + システムのキーボードレイアウトに従う + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {488, 31}} + + + YES + + 67239424 + 4194304 + 有効にすると、option キー で Mode_switch の代わりに X11 キーシンボルの Alt_L と Alt_R が送信されます。 + + + + + + + + + 256 + {{18, 69}, {505, 18}} + + + YES + + 67239424 + 0 + Option キーで Alt_L と Alt_R を送信 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {505, 18}} + + + YES + + 67239424 + 0 + 常に指を動かした方向にスクロール + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {538, 279}} + + + + 入力 + + + + + + 2 + + + + 256 + + + + 256 + {{75, 234}, {163, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + ディスプレイから + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + 約 32000 色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + 約 1670 万色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {56, 19}} + + + YES + + 67239424 + 4194304 + カラー: + + + + + + + + + + 256 + {{36, 216}, {488, 14}} + + + YES + + 67239424 + 4194304 + このオプションは、次回 X11 を起動したときに有効になります。 + + + + + + + + + + 256 + {{18, 182}, {505, 23}} + + + YES + + 67239424 + 0 + フルスクリーンモード + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 118}, {492, 23}} + + + YES + + 67239424 + 0 + フルスクリーンモード時のメニューバーへのアクセスを許可 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 147}, {494, 28}} + + + YES + + 67239424 + 4194304 + X11 のルートウインドウを有効にします。フルスクリーンモードに切り替えたり、フルスクリーンモードを終了するときは、コマンド + Option + A キーを押します。 + + + + + + + + + + 256 + {{54, 70}, {476, 42}} + + + YES + + 67239424 + 4194304 + マウスカーソルが主ディスプレイの一番上に置かれたときにメニューバーが表示されます。 + + + + + + + + {{10, 33}, {538, 279}} + + + 出力 + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {505, 23}} + + + YES + + 67239424 + 0 + 同期を有効にする + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {488, 28}} + + + YES + + 67239424 + 4194304 + “コピー”メニュー項目を有効にして、OSX のペーストボードと X11 の CLIPBOARD バッファおよび PRIMARY バッファを同期できるようにします。 + + + + + + + + + 256 + {{34, 129}, {489, 18}} + + + YES + + 67239424 + 0 + ペーストボードが変更されたときに CLIPBOARD をアップデート + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {489, 18}} + + + YES + + 67239424 + 0 + ペーストボードが変更されたときに PRIMARY (中クリック)をアップデート + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {489, 18}} + + + YES + + 67239424 + 0 + 新しいテキストが選択されたら、すぐにペーストボードをアップデート + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {489, 18}} + + + YES + + 67239424 + 0 + CLIPBOARD が変更されたときにペーストボードをアップデート + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {476, 28}} + + + YES + + 67239424 + 4194304 + xclipboard、klipper、その他の X11 クリップボードマネージャを使用したい場合は、このオプションを無効にしてください。 + + + + + + + + + 256 + {{48, 47}, {476, 28}} + + + YES + + 67239424 + 4194304 + X11 プロトコルの制限により、このオプションは、一部のアプリケーションで機能しない場合があります。 + + + + + + + + {{10, 33}, {538, 279}} + + + ペーストボード + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {508, 18}} + + + YES + + 67239424 + 0 + 選択されていないウインドウを直接クリック + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 211}, {501, 28}} + + + YES + + 67239424 + 4194304 + 有効にした場合、選択されていないウインドウをクリックしたときに、そのウインドウを一番手前に表示するだけでなく、ウインドウ内の項目を直接クリックします。 + + + + + + + + + + 256 + {{15, 184}, {508, 18}} + + + YES + + 67239424 + 0 + フォーカスをマウスと一緒に移動 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 164}, {501, 14}} + + + YES + + 67239424 + 4194304 + X11 ウインドウのフォーカスがカーソルと一緒に移動します。逆効果になる場合もあります。 + + + + + + + + + + 256 + {{15, 140}, {508, 18}} + + + YES + + 67239424 + 0 + 新規ウインドウにフォーカス + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {501, 28}} + + + YES + + 67239424 + 4194304 + 有効にした場合、新しい X11 ウインドウを作成すると、Finder.app や ターミナル.app などの代わりに、X11.app が前面に移動します。 + + + + + + + + + {{10, 33}, {538, 279}} + + + ウインドウ + + + + + + + 256 + + + + 256 + {{18, 243}, {482, 18}} + + + YES + + 67239424 + 0 + 接続を認証 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 180}, {402, 18}} + + + YES + + 67239424 + 0 + ネットワーク・クライアントからの接続を許可 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 209}, {488, 28}} + + + YES + + 67239424 + 4194304 + X11 の起動時に、Xauthority アクセス制御キーを作成します。システムの IP アドレスが変更されると、これらのキーが無効になり、X11 アプリケーションが起動しなくなることがあります。 + + + + + + + + + + 256 + {{36, 132}, {488, 42}} + + + YES + + 67239424 + 4194304 + 有効にする場合は、システムのセキュリティを維持するために、“接続を認証”も有効にしてください。無効にすると、リモートアプリケーションからの接続は拒否されます。 + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + これらのオプションは、次回 X11 を起動したときに有効になります。 + + + + + + + + + {{10, 33}, {538, 279}} + + + セキュリティ + + + + + + + 0 + YES + YES + + + + + + {584, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{360, 402}, {454, 271}} + 1350041600 + X11 アプリケーションメニュー + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {454, 271} + + + 256 + + + + 265 + {{340, 191}, {105, 32}} + + YES + + 67239424 + 137887744 + 複製 + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {105, 32}} + + YES + + 67239424 + 137887744 + 削除 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 103 + 43 + 1000 + + 75628096 + 2048 + 名前 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + テキストセル + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 100 + 40 + 1000 + + 75628096 + 2048 + コマンド + + + + + + 338820672 + 1024 + テキストセル + + + + + + + 3 + YES + YES + + + + + 89 + 30 + 1000 + + 75628096 + 2048 + ショートカット + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + テキストセル + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {105, 32}} + + YES + + -2080244224 + 137887744 + 項目を追加 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {454, 293} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + メニュー + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + アプリケーション + + 1048576 + 2147483647 + + + submenuAction: + + アプリケーション + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + カスタマイズ... + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 515}, {584, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 515}, {584, 341}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {454, 271} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/da.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/da.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + da + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/da.lproj/main.nib/designable.nib @@ -0,0 +1,3662 @@ + + + + 1040 + 11A444d + 905 + 1119.1 + 555.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 905 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Om X11 + + 2147483647 + + + + + + Indstillinger... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tjenester + + 1048576 + 2147483647 + + + submenuAction: + + Tjenester + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Slå Fuld skærm til og fra + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Skjul X11 + h + 1048576 + 2147483647 + + + 42 + + + + Skjul andre + h + 1572864 + 2147483647 + + + + + + Vis alle + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Slut X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Programmer + + 1048576 + 2147483647 + + + submenuAction: + + Programmer + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tilpas... + + 1048576 + 2147483647 + + + + + + + + + Rediger + + 1048576 + 2147483647 + + + submenuAction: + + Rediger + + + + Kopier + c + 1048576 + 2147483647 + + + + + + + + + Vindue + + 1048576 + 2147483647 + + + submenuAction: + + Vindue + + + + Luk + w + 1048576 + 2147483647 + + + + + + Minimer + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Gennemgå vinduer + < + 1048576 + 2147483647 + + + + + + Gennemgå vinduer modsat + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Anbring alle forrest + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Hjælp + + 1048576 + 2147483647 + + + submenuAction: + + Hjælp + + + + X11-hjælp + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{319, 328}, {484, 341.0390625}} + 1350041600 + X11-indstillinger + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emuler mus med tre knapper + + LucidaGrande + 13 + 1040 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 96}, {355, 28}} + + + YES + + 67239424 + 4194304 + Når tastaturgenveje på menulinjen er slået til, kan de hindre X11-programmer, der bruger "Meta modifier", i at fungere. + + LucidaGrande + 11 + 3088 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + SG9sZCBBbHRlcm5hdGl2LSBlbGxlciBLb21tYW5kb3Rhc3RlbiBuZWRlLCBtZW5zIGR1IGtsaWtrZXIs +IGZvciBhdCBha3RpdmVyZSBkZW4gbWlkdGVyc3RlIGVsbGVyIGRlbiBow7hqcmUga25hcCBww6UgbXVz +ZW4uCg + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + Slå tastaturgenveje til under X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 159}, {385, 14}} + + + YES + + 67239424 + 4194304 + Sikrer, at ændringer kan overskrive den aktuelle X11-tastoversigt. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + Følg systemets tastaturlayout + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {385, 31}} + + + YES + + 67239424 + 4194304 + Når det er slået til, sender Alternativtasterne Alt_L og Alt_R X11-nøglesymboler i stedet for Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Alternativtaster sender Alt_L og Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Rul altid i den samme retning som fingerens bevægelse + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + Indtastning + + + + + + 2 + + + + 256 + + + + 256 + {{69, 234}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Fra skærm + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 farver + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tusinder + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Millioner + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {55, 20}} + + + YES + + 67239424 + 4194304 + Farver: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Denne indstilling træder i kraft, når X11 startes igen. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Fuld skærm + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {383, 23}} + + + YES + + 67239424 + 0 + Tillad adgang til menulinjen ved fuld skærm + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {351, 28}} + + + YES + + 67239424 + 4194304 + Slår X11 root-vinduet til. Brug Kommando-Alternativ-A til at slå funktionen fuld skærm til og fra. + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + Menulinjen bliver synlig, når musens markør anbringes øverst på den primære skærm. + + + + + + + + {{10, 33}, {438, 279}} + + + Resultat + + + + + + 2 + + + + 256 + + + + 256 + {{13, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Slå synkronisering til + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{31, 221}, {392, 28}} + + + YES + + 67239424 + 4194304 + Slår kommandoen "kopier" til og gør det muligt at synkronisere mellem OSX-opslagstavlen og X11-UDKLIPSHOLDEREN og de PRIMÆRE buffere. + + + + + + + + + 256 + {{29, 129}, {398, 23}} + + + YES + + 67239424 + 0 + Opdater CLIPBOARD, når opslagstavlen ændres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{29, 104}, {400, 23}} + + + YES + + 67239424 + 0 + Opdater PRIMARY (klik i midten), når opslagstavlen ændres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{29, 84}, {404, 18}} + + + YES + + 67239424 + 0 + Opdater opslagstavlen med det samme, når ny tekst er valgt + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{29, 192}, {398, 23}} + + + YES + + 67239424 + 0 + Opdater opslagstavlen, når CLIPBOARD ændres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{43, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + Slå denne indstilling fra, hvis du ikke vil bruge xclipboard, klipper eller andre X11-værktøjer til administration af udklipsholderen. + + + + + + + + + 256 + {{43, 47}, {385, 28}} + + + YES + + 67239424 + 4194304 + Pga. begrænsninger i X11-protokollen virker denne indstilling måske ikke i nogle programmer. + + + + + + + + {{10, 33}, {438, 279}} + + + Opslagstavle + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Klik igennem passive vinduer + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {390, 31}} + + + YES + + 67239424 + 4194304 + Når denne mulighed er slået til, vil musen, når du klikker på et passivt vindue, klikke igennem vinduet ud over at gøre det aktivt. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus følger musen + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {385, 17}} + + + YES + + 67239424 + 4194304 + Fokus i X11-vinduet følger markøren. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus på nye vinduer + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 92}, {390, 42}} + + + YES + + 67239424 + 4194304 + Når denne mulighed er slået til, vil programmet X11, når der oprettes et nyt X11-vindue, anbringes forrest (i stedet for Finder, Terminal osv.). + + + + + + + + {{10, 33}, {438, 279}} + + + Vinduer + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Godkend forbindelser + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Tillad forbindelser fra netværksklienter + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {379, 42}} + + + YES + + 67239424 + 4194304 + Når X11 startes, oprettes Xauthority-taster til adgangskontrol. Hvis systemets IP-adresse ændres, bliver disse taster ugyldige, og det kan forhindre X11-programmer i at starte. + + + + + + + + + + 256 + {{36, 118}, {380, 42}} + + + YES + + 67239424 + 4194304 + Hvis de er slået til, skal Godkend forbindelser også slås til for at sikre systemets sikkerhed. Når de er slået fra, tillades forbindelser fra eksterne programmer ikke. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Disse indstillinger træder i kraft, når X11 startes igen. + + + + + + + + + {{10, 33}, {438, 279}} + + + Sikkerhed + + + + + + + 0 + YES + YES + + + + + + {484, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + YES + + + 11 + 2 + {{360, 400}, {454, 271}} + 1350041600 + X11-programmenu + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {112, 32}} + + YES + + 67239424 + 137887744 + Dubler + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {112, 32}} + + YES + + 67239424 + 137887744 + Fjern + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {316, 213} + + YES + + + 256 + {316, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 127.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Navn + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 105 + 40 + 1000 + + 75628096 + 2048 + Kommando + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 74 + 10 + 1000 + + 75628096 + 2048 + Genvej + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {316, 213}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 213}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {316, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {112, 32}} + + YES + + -2080244224 + 137887744 + Tilføj emne + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + YES + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Programmer + + 1048576 + 2147483647 + + + submenuAction: + + Programmer + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Indstil… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 515}, {484, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{507, 515}, {484, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/el.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/el.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 105 + LprojLocale + el + LprojRevisionLevel + 1 + LprojVersion + 105 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/el.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/el.lproj/main.nib/designable.nib @@ -0,0 +1,3521 @@ + + + + 1040 + 11A444d + 905 + 1119.1 + 555.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 905 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Πληροφορίες για το X11 + + 2147483647 + + + + + + Προτιμήσεις... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Υπηρεσίες + + 1048576 + 2147483647 + + + submenuAction: + + Υπηρεσίες + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Εναλλαγή πλήρους οθόνης + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Απόκρυψη X11 + h + 1048576 + 2147483647 + + + 42 + + + + Απόκρυψη άλλων + h + 1572864 + 2147483647 + + + + + + Εμφάνιση όλων + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Τερματισμός X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Εφαρμογές + + 1048576 + 2147483647 + + + submenuAction: + + Εφαρμογές + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Προσαρμογή… + + 1048576 + 2147483647 + + + + + + + + + Επεξεργασία + + 1048576 + 2147483647 + + + submenuAction: + + Επεξεργασία + + + + Αντιγραφή + c + 1048576 + 2147483647 + + + + + + + + + Παράθυρο + + 1048576 + 2147483647 + + + submenuAction: + + Παράθυρο + + + + Κλείσιμο + w + 1048576 + 2147483647 + + + + + + Ελαχιστοποίηση + m + 1048576 + 2147483647 + + + + + + Ζουμ + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Κυκλική μετακίνηση στα παράθυρα + ` + 1048576 + 2147483647 + + + + + + Κυκλική αντίστροφη μετακίνηση στα παράθυρα + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Μεταφορά όλων σε πρώτο πλάνο + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Βοήθεια + + 1048576 + 2147483647 + + + submenuAction: + + Βοήθεια + + + + Βοήθεια για το X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364}, {640, 308}} + 1350041600 + Προτιμήσεις X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 256 + {{13, 10}, {613.03906, 292}} + + + + + + 1 + + + + 256 + + + + 256 + {{18, 217}, {402, 18}} + + YES + + 67239424 + 0 + Προσομοίωση ποντικιού τριών κουμπιών + + LucidaGrande + 13 + 1040 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 56}, {543.03906, 42}} + + YES + + 67239424 + 4194304 + Όταν ενεργοποιηθεί, τα ισοδύναμα πλήκτρα της γραμμής μενού ίσως να παρεμβαίνουν με εφαρμογές X11 που χρησιμοποιούν τον μετατροποποιητή. + + LucidaGrande + 11 + 3088 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 177}, {543.03906, 34}} + + YES + + 67239424 + 4194304 + zqDOsc+Ezq7Pg8+EzrUgz4DOsc+BzrHPhM61z4TOsc68zq3Ovc6xIM+Ezr8gz4DOu86uzrrPhM+Bzr8g +T3B0aW9uIM6uIENvbW1hbmQgzrXOvc+OIM66zqzOvc61z4TOtSDOus67zrnOuiDOs865zrEgzr3OsSDO +tc69zrXPgc6zzr/PgM6/zrnOrs+DzrXPhM61IM+Ezr8gzrzOtc+DzrHOr86/IM6uIM+Ezr8gzrTOtc6+ +zrnPjCDOus6/z4XOvM+Azq8gz4TOv8+FIM+Azr/Ovc+EzrnOus65zr/PjS4KA + + + + + + + + + 256 + {{18, 104}, {402, 18}} + + YES + + 67239424 + 0 + Ενεργοποίηση ισοδύναμων πλήκτρων υπό το X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 127}, {543.03906, 28}} + + YES + + 67239424 + 4194304 + Επιτρέπει την αντικατάσταση του τρέχοντος χάρτη πλήκτρων X11 από τις αλλαγές μενού εισαγωγής. + + + + + + + + + 256 + {{18, 158}, {402, 18}} + + YES + + 67239424 + 0 + Ακολουθία διάταξης πληκτρολογίου συστήματος + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 6}, {543.03906, 31}} + + YES + + 67239424 + 4194304 + Όταν ενεργοποιηθεί, τα πλήκτρα Option στέλνουν τα σύμβολα πλήκτρων X11 Alt_L και Alt_R αντί για Mode_switch. + + + + + + + + + 256 + {{18, 43}, {402, 18}} + + YES + + 67239424 + 0 + Αποστολή Alt_L και Alt_R από πλήκτρα Option + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {593.03906, 246}} + + Είσοδος + + + + + + 2 + + + + 256 + + + + 256 + {{88, 201}, {175, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + + + 400 + 75 + + + Από την προβολή + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 χρώματα + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Χιλιάδες + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Εκατομμύρια + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 208}, {70, 17}} + + + YES + + 67239424 + 4194304 + Χρώματα: + + + + + + + + + 256 + {{36, 183}, {392, 14}} + + + YES + + 67239424 + 4194304 + Αυτή η επιλογή θα ισχύει όταν εκκινηθεί ξανά το X11. + + + + + + + + + 256 + {{18, 149}, {409, 23}} + + + YES + + 67239424 + 0 + Λειτουργία πλήρους οθόνης + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 77}, {552, 18}} + + + YES + + 67239424 + 0 + Γραμμή μενού αυτόματης εμφάνισης σε κατάσταση λειτουργίας πλήρους οθόνης + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 101}, {543.03906, 42}} + + + YES + + 67239424 + 4194304 + Ενεργοποιεί το παράθυρο ρίζας X11. Χρησιμοποιήστε την κίνηση πλήκτρων Command-Option-A για να εισέλθετε και να εξέλθετε από τη λειτουργία πλήρους οθόνης. + + + + + + + + {{10, 33}, {593.03906, 246}} + + + + Έξοδος + + + + + + 2 + + + + 256 + + + + 256 + {{18, 222}, {409, 23}} + + YES + + 67239424 + 0 + Ενεργοποίηση συγχρονισμού + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 174}, {543.03906, 42}} + + YES + + 67239424 + 4194304 + Ενεργοποιεί το στοιχείο μενού «αντιγραφή» και επιτρέπει το συγχρονισμό μεταξύ του Πίνακα επικόλλησης OSX και των ενδιάμεσων μνημών CLIPBOARD και PRIMARY του X11. + + + + + + + + + 256 + {{34, 101}, {421, 18}} + + YES + + 67239424 + 0 + Ενημέρωση CLIPBOARD όταν αλλάζει ο Πίνακας επικόλλησης + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 76}, {493, 18}} + + YES + + 67239424 + 0 + Ενημέρωση PRIMARY (μεσαίο κλικ) όταν αλλάζει ο Πίνακας επικόλλησης + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 51}, {458, 18}} + + YES + + 67239424 + 0 + Ενημέρωση Πίνακα επικόλλησης αμέσως όταν επιλεγεί νέο κείμενο + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 164}, {420, 18}} + + YES + + 67239424 + 0 + Ενημέρωση Πίνακα επικόλλησης όταν αλλάζει το CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 130}, {531.03906, 28}} + + YES + + 67239424 + 4194304 + Απενεργοποιήστε αυτή την επιλογή αν θέλετε να χρησιμοποιήσετε xclipboard, klipper ή οποιονδήποτε άλλο διαχειριστή πρόχειρου X11. + + + + + + + + + 256 + {{48, 19}, {536.125, 28}} + + YES + + 67239424 + 4194304 + Εξαιτίας περιορισμών στο πρωτόκολλο X11, αυτή η επιλογή ίσως να μη λειτουργεί πάντα σε ορισμένες εφαρμογές. + + + + + + + + {{10, 33}, {593.03906, 246}} + + Πίνακας επικόλλησης + + + + + + 2 + + + + 256 + + + + 256 + {{15, 212}, {402, 18}} + + YES + + 67239424 + 0 + Κλικ μετάβασης σε ανενεργά παράθυρα + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 164}, {546.38672, 42}} + + YES + + 67239424 + 4194304 + Όταν ενεργοποιηθεί, αν κάνετε κλικ σε μη ενεργό παράθυρο, θα προκαλέσει αυτό το κλικ ποντικιού να διαβιβαστεί στο συγκεκριμένο παράθυρο επιπλέον της ενεργοποίησής του. + + + + + + + + + 256 + {{15, 151}, {402, 18}} + + YES + + 67239424 + 0 + Εστίαση ακολουθεί ποντίκι + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 117}, {546.38672, 28}} + + YES + + 67239424 + 4194304 + Η εστίαση παραθύρου X11 ακολουθεί το δρομέα. Αυτό έχει ορισμένες δυσμενείς επιπτώσεις. + + + + + + + + + 256 + {{15, 107}, {402, 18}} + + YES + + 67239424 + 0 + Εστίαση σε νέα παράθυρα + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 59}, {556.03906, 42}} + + YES + + 67239424 + 4194304 + Όταν ενεργοποιηθεί, η δημιουργία νέου παραθύρου X11 θα μετακινήσει το X11.app στο προσκήνιο (αντί για το Finder.app, Terminal.app, κτλ.) + + + + + + + + {{10, 33}, {593.03906, 246}} + + Παράθυρα + + + + + + + 256 + + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 0 + Έλεγχος ταυτότητας συνδέσεων + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 133}, {402, 18}} + + YES + + 67239424 + 0 + Να επιτρέπονται συνδέσεις από πελάτες δικτύου + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {543.03906, 56}} + + YES + + 67239424 + 4194304 + Η εκκίνηση X11 θα δημιουργήσει πλήκτρα ελέγχου πρόσβασης Xauthority. Αν αλλάξει η διεύθυνση IP του συστήματος, αυτά τα πλήκτρα καθίστανται μη έγκυρα, γεγονός που ίσως να αποτρέψει την εκκίνηση των εφαρμογών X11. + + + + + + + + + 256 + {{36, 71}, {537, 56}} + + YES + + 67239424 + 4194304 + Αν ενεργοποιηθεί, πρέπει επίσης να ενεργοποιηθούν οι συνδέσεις ελέγχου ταυτότητας για να διασφαλιστεί η ασφάλεια συστήματος. Όταν απενεργοποιηθούν, δεν επιτρέπονται οι συνδέσεις από απομακρυσμένες εφαρμογές. + + + + + + + + + 256 + {{20, -16}, {404, 14}} + + YES + + 67239424 + 4194304 + Αυτές οι επιλογές θα ισχύσουν την επόμενη φορά που γίνει εκκίνηση του X11. + + + + + + + + {{10, 33}, {593.03906, 246}} + + Ασφάλεια + + + + + + + 0 + YES + YES + + + + + + {640, 308} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_prefs + YES + + + 11 + 2 + {{302, 440}, {530, 271}} + 1350041600 + Μενού εφαρμογών X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 265 + {{344, 191}, {113, 32}} + + + YES + + 67239424 + 137887744 + Διπλότυπο + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{344, 159}, {113, 32}} + + + YES + + 67239424 + 137887744 + Αφαίρεση + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {316, 213} + + + YES + + + 256 + {316, 17} + + + + + + + 256 + {{302, 0}, {16, 17}} + + + + 126.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Όνομα + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Κελί κειμένου + + + + 3 + MQA + + + + 3 + YES + YES + + + + 104 + 40 + 1000 + + 75628096 + 2048 + Command + + + + + + 338820672 + 1024 + Κελί κειμένου + + + + + + 3 + YES + YES + + + + 76 + 10 + 1000 + + 75628096 + 2048 + Συντόμευση + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Κελί κειμένου + + LucidaGrande + 12 + 16 + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {316, 213}} + + + + + + 4 + + + + 256 + {{302, 17}, {15, 207}} + + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {310, 15}} + + + 1 + + _doScroller: + 0.99646645784378052 + + + + 2304 + + + + {{1, 0}, {316, 17}} + + + + + + 4 + + + {{20, 20}, {318, 231}} + + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{344, 223}, {172, 32}} + + + YES + + -2080244224 + 137887744 + Προσθήκη στοιχείου + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {530, 271} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_apps + YES + + + Μενού + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Εφαρμογές + + 1048576 + 2147483647 + + + submenuAction: + + Εφαρμογές + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Προσαρμογή… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{366, 359}, {640, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + {{366, 359}, {640, 308}} + + {{184, 290}, {481, 345}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{517, 325}, {530, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{517, 325}, {530, 271}} + + {{433, 406}, {486, 327}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCEAAAwvoAAA + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300481 + + + + + FirstResponder + NSObject + + IBUserSource + + + + + NSFormatter + NSObject + + IBUserSource + + + + + X11Controller + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + ../X11.xcodeproj + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/ko.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + ko + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/ko.lproj/main.nib/designable.nib @@ -0,0 +1,3623 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + X11에 관하여 + + 2147483647 + + + + + + 환경설정... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 서비스 + + 1048576 + 2147483647 + + + submenuAction: + + 서비스 + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 전체 화면 토글 + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 가리기 + h + 1048576 + 2147483647 + + + 42 + + + + 기타 가리기 + h + 1572864 + 2147483647 + + + + + + 모두 보기 + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + X11 종료 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + 응용 프로그램 + + 1048576 + 2147483647 + + + submenuAction: + + 응용 프로그램 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 사용자화... + + 1048576 + 2147483647 + + + + + + + + + 편집 + + 1048576 + 2147483647 + + + submenuAction: + + 편집 + + + + 복사하기 + c + 1048576 + 2147483647 + + + + + + + + + 윈도우 + + 1048576 + 2147483647 + + + submenuAction: + + 윈도우 + + + + 닫기 + w + 1048576 + 2147483647 + + + + + + 최소화 + m + 1048576 + 2147483647 + + + + + + 확대/축소 + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 윈도우 순환 + ` + 1048576 + 2147483647 + + + + + + 윈도우 역순환 + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 모두 앞으로 가져오기 + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + 도움말 + + 1048576 + 2147483647 + + + submenuAction: + + 도움말 + + + + X11 도움말 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364}, {484, 341.0390625}} + 1350041600 + X11 환경설정 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 3중 버튼 마우스 동작 모방하기 + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 96}, {383, 28}} + + + YES + + 67239424 + 4194304 + 활성화되면, 메뉴 막대와 동등한 키가 메타 조합을 사용하는 X11 응용 프로그램에 간섭할 수 있습니다. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + 66eI7Jqw7IqkIOykkeqwhCDrmJDripQg7Jik66W47Kq9IOuyhO2KvOydhCDtmZzshLHtmZTtlZjroKTr +qbQsIO2BtOumre2VmOuKlCDrj5nslYggT3B0aW9uIOuYkOuKlCBDb21tYW5kIO2CpOulvCDtlajqu5gg +64iE66W06rOgIOyeiOycvOyLreyLnOyYpC4KA + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + X11에서 동등한 키 활성화하기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 159}, {385, 14}} + + + YES + + 67239424 + 4194304 + 입력 메뉴 변경사항이 현재 X11 키맵을 덮어쓰도록 허용합니다. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + 시스템 키보드 레이아웃 따르기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {385, 31}} + + + YES + + 67239424 + 4194304 + 활성화하면, Option 키는 Mode_switch 대신에 Alt_L 및 Alt_R X11 키 기호를 보냅니다. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Option 키로 Alt_L 및 Alt_R 보내기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + 항상 손가락이 움직이는 방향으로 스크롤하기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + 입력 + + + + + + 2 + + + + 256 + + + + 256 + {{58, 235}, {129, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + 모니터에서 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 색상 + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + 수만 색상 + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + 수백만 색상 + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {39, 20}} + + + YES + + 67239424 + 4194304 + 색상: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + 이 옵션은 X11을 다시 실행하면 적용됩니다. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + 전체 화면 모드 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + 전체 화면 모드에서 메뉴 막대 접근 허용하기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {357, 28}} + + + YES + + 67239424 + 4194304 + X11 루트 윈도우를 활성화합니다. 전체 화면 모드를 시작하거나 종료하려면, Command-Option-A 키를 사용하십시오. + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + 마우스 커서가 주 모니터 상단에 있을 때 메뉴 막대가 표시됩니다. + + + + + + + + {{10, 33}, {438, 279}} + + + 출력 + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + 동기화 활성화 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {385, 28}} + + + YES + + 67239424 + 4194304 + "복사하기" 메뉴 항목을 활성화하고 OSX 붙이기 보드, X11 클립보드 및 PRIMARY 버퍼 간의 동기화를 허용합니다. + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + 붙이기 보드가 변경되면 CLIPBOARD 업데이트 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {409, 23}} + + + YES + + 67239424 + 0 + 붙이기 보드가 변경되면 PRIMARY(중간 클릭) 업데이트 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {409, 23}} + + + YES + + 67239424 + 0 + 새로운 텍스트가 선택되면 바로 붙이기 보드 업데이트 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + CLIPBOARD가 변경되면 붙이기 보드 업데이트 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + xclipboard, klipper 또는 기타 다른 X11 클립보드 관리자를 사용하려면 이 옵션을 비활성화하십시오. + + + + + + + + + 256 + {{48, 47}, {370, 28}} + + + YES + + 67239424 + 4194304 + X11 프로토콜 제한 때문에 이 옵션은 일부 응용 프로그램에서 항상 작동하지 않을 수도 있습니다. + + + + + + + + {{10, 33}, {438, 279}} + + + 붙이기 보드 + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + 비활성 윈도우 클릭 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {385, 31}} + + + YES + + 67239424 + 4194304 + 활성화되었을 때 비활성 윈도우를 클릭하면 마우스 클릭이 비활성 윈도우로 통과될 뿐만 아니라 비활성 윈도우가 활성화됩니다. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + 마우스를 따라 초점 이동 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {412, 17}} + + + YES + + 67239424 + 4194304 + X11 윈도우 초점은 해당 커서를 따릅니다. 이것은 일부 역기능을 가지고 있습니다. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + 새로운 윈도우에 초점 두기 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {385, 28}} + + + YES + + 67239424 + 4194304 + 활성화되었을 때 새로운 X11 윈도우를 생성하면 (Finder.app 및 터미널.app 등 대신) X11.app이 맨 앞으로 이동됩니다. + + + + + + + + {{10, 33}, {438, 279}} + + + 윈도우 + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 연결 인증 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + 네트워크 클라이언트에서의 연결을 허용 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + X11을 실행하면 Xauthority 연결 제어 키를 생성합니다. 시스템의 IP 주소를 변경하면, 이 키들이 유효하지 않게 되어 X11 응용 프로그램이 실행되지 않을 수 있습니다. + + + + + + + + + + 256 + {{36, 132}, {380, 28}} + + + YES + + 67239424 + 4194304 + 활성화되면, 시스템 보안을 확인하기 위해 연결 인증도 활성화되어야 합니다. 비활성화되면, 원격 응용 프로그램 연결이 허용되지 않습니다. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + 이들 옵션은 X11을 다음에 실행하면 적용됩니다. + + + + + + + + + {{10, 33}, {438, 279}} + + + 보안 + + + + + + + 0 + YES + YES + + + + + + {484, 341} + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {454, 271}} + 1350041600 + X11 응용 프로그램 메뉴 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {100, 32}} + + YES + + 67239424 + 137887744 + 복제 + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {100, 32}} + + YES + + 67239424 + 137887744 + 제거 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + 이름 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 99 + 40 + 1000 + + 75628096 + 2048 + 명령 + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 71 + 10 + 1000 + + 75628096 + 2048 + 단축키 + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {100, 32}} + + YES + + -2080244224 + 137887744 + 항목 추가 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + 메뉴 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 응용 프로그램 + + 1048576 + 2147483647 + + + submenuAction: + + 응용 프로그램 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 사용자화… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 515}, {484, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 515}, {484, 341}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/sk.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/sk.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 105 + LprojLocale + sk + LprojRevisionLevel + 1 + LprojVersion + 105 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/sk.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/sk.lproj/main.nib/designable.nib @@ -0,0 +1,3522 @@ + + + + 1040 + 11A444d + 905 + 1119.1 + 555.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 905 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + O X11 + + 2147483647 + + + + + + Nastavenia… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Služby + + 1048576 + 2147483647 + + + submenuAction: + + Služby + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Prepnúť celú obrazovku + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Skryť X11 + h + 1048576 + 2147483647 + + + 42 + + + + Skryť ostatné + h + 1572864 + 2147483647 + + + + + + Zobraziť všetko + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Zrušiť X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Aplikácie + + 1048576 + 2147483647 + + + submenuAction: + + Aplikácie + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Prispôsobiť... + + 1048576 + 2147483647 + + + + + + + + + Upraviť + + 1048576 + 2147483647 + + + submenuAction: + + Upraviť + + + + Kopírovať + c + 1048576 + 2147483647 + + + + + + + + + Okno + + 1048576 + 2147483647 + + + submenuAction: + + Okno + + + + Zatvoriť + w + 1048576 + 2147483647 + + + + + + Minimalizovať + m + 1048576 + 2147483647 + + + + + + Zväčšiť + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Prechádzať oknami + ` + 1048576 + 2147483647 + + + + + + Prechádzať oknami smerom dozadu + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Presunúť všetky do popredia + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Pomocník + + 1048576 + 2147483647 + + + submenuAction: + + Pomocník + + + + Pomocník pre X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364}, {484, 308}} + 1350041600 + Nastavenie X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 256 + {{13, 10}, {458, 292}} + + + + + + 1 + + + + 256 + + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 0 + Emulovať myš s troma tlačidlami + + LucidaGrande + 13 + 1040 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 60}, {385, 31}} + + YES + + 67239424 + 4194304 + Po povolení môžu klávesové ekvivalenty lišty narušiť X11 aplikácie užívajúce Meta modifikátor. + + LucidaGrande + 11 + 3088 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 162}, {385, 42}} + + YES + + 67239424 + 4194304 + UG9kcsW+dGUgcG/EjWFzIGtsaWtudXRpYSBPcHRpb24gYWxlYm8gQ29tbWFuZCBwcmUgYWt0aXbDoWNp +dSBzdHJlZG7DqWhvIGFsZWJvIHByYXbDqWhvIHRsYcSNaWRsYSBtecWhaS4KA + + + + + + + + + 256 + {{18, 97}, {402, 18}} + + YES + + 67239424 + 0 + Povoliť ekvivalenty klávesu s X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 126}, {385, 14}} + + YES + + 67239424 + 4194304 + Povoliť vstupné menu zmien na prepísanie aktuálnej X11 mapy klávesnice. + + + + + + + + + 256 + {{18, 146}, {402, 18}} + + YES + + 67239424 + 0 + Riadiť sa systémovým rozložením klávesnice + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, -1}, {385, 31}} + + YES + + 67239424 + 4194304 + Keď je povolené, klávesy možnosti posielajú symboly klávesov Alt_L a Alt_R X11 namiesto Mode_switch. + + + + + + + + + 256 + {{18, 36}, {402, 18}} + + YES + + 67239424 + 0 + Klávesy možnosti posielajú Alt_L a Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 246}} + + Vstup + + + + + + 2 + + + + 256 + + + + 256 + {{62, 202}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + + + 400 + 75 + + + Z displeja + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 farieb + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tisíce + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Milióny + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 208}, {43, 17}} + + + YES + + 67239424 + 4194304 + Farby: + + + + + + + + + 256 + {{36, 183}, {392, 14}} + + + YES + + 67239424 + 4194304 + Táto možnosť bude zavedená pri ďalšom spustení X11. + + + + + + + + + 256 + {{18, 149}, {409, 23}} + + + YES + + 67239424 + 0 + Režim celej obrazovky + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 83}, {409, 23}} + + + YES + + 67239424 + 0 + Automaticky zobraziť lištu v režime celej obrazovky + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 112}, {385, 31}} + + + YES + + 67239424 + 4194304 + Povoľuje X11 koreňové okno. Použite klávesovú sekvenciu Command-Option-A pre aktivovanie a deaktivovanie režimu celej obrazovky. + + + + + + + + {{10, 33}, {438, 246}} + + + + Výstup + + + + + + 2 + + + + 256 + + + + 256 + {{0, 222}, {353.51171875, 23}} + + YES + + 67239424 + 0 + Povoliť synchronizáciu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, 188}, {351.51171875, 28}} + + YES + + 67239424 + 4194304 + Povoľuje položku menu „kopírovať“ a povoľuje synchronizáciu Pasteboardu OSX s X11 SCHRÁNKOU a PRIMÁRNYMI buffermi. + + + + + + + + + 256 + {{15, 101}, {346.25390625, 23}} + + YES + + 67239424 + 0 + Aktualizovať SCHRÁNKU pri zmenách Pasteboardu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 59.2578125}, {318.51171875, 43.23046875}} + + YES + + 67239424 + 0 + Aktualizovať PRIMÁRNE (stredné kliknutie) pri
zmene Pasteboardu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 36}, {352.51171875, 23}} + + YES + + 67239424 + 0 + Aktualizovať Pasteboard okamžite po vybratí textu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 159}, {338, 23}} + + YES + + 67239424 + 0 + Aktualizovať Pasteboard pri zmenách SCHRÁNKY + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{29, 127}, {356.25390625, 28}} + + YES + + 67239424 + 4194304 + Zakážte túto možnosť ak chcete použiť xschránku, klipper, alebo iného X11 manažéra schránky. + + + + + + + + + 256 + {{29, 4}, {370, 28}} + + YES + + 67239424 + 4194304 + Kvôli obmedzeniam v X11 protokole, táto možnosť možno nebude fungovať v niektorých aplikáciách. + + + + + + + + {{10, 33}, {438, 246}} + + Pasteboard + + + + + + 2 + + + + 256 + + + + 256 + {{15, 212}, {402, 18}} + + YES + + 67239424 + 0 + Preklikať neaktívne okná + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 175}, {385, 31}} + + YES + + 67239424 + 4194304 + Keď je povolené, kliknutím na neaktívne okno posunie kliknutie myši do daného okna a aktivuje ho. + + + + + + + + + 256 + {{15, 151}, {402, 18}} + + YES + + 67239424 + 0 + Sledovanie myši + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 128}, {385, 17}} + + YES + + 67239424 + 4194304 + X11 okno sleduje kurzor myši. Toto má nežiadúce účinky. + + + + + + + + + 256 + {{15, 107}, {402, 18}} + + YES + + 67239424 + 0 + Sústrediť sa na nové okná + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 73}, {385, 28}} + + YES + + 67239424 + 4194304 + Keď je povolené, vytvorenie nového X11 okna spôsobí posunutie X11.app do popredia (namiesto Finder.app, Terminal.app, atď.) + + + + + + + + {{10, 33}, {438, 246}} + + Windows + + + + + + + 256 + + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 0 + Autentifikovať spojenia + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 133}, {402, 18}} + + YES + + 67239424 + 0 + Povoliť pripojenia od sieťových klientov + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 162}, {385, 42}} + + YES + + 67239424 + 4194304 + Spustenie X11 vytvorí klávesy ochrany prístupu Xautority. Tieto klávesy sa stanú neplatnými ak sa zmení systémová IP adresa, čo môže zabrániť spusteniu X11 aplikácií. + + + + + + + + + 256 + {{36, 85}, {385, 42}} + + YES + + 67239424 + 4194304 + Ak je povolené, musí byť povolená aj funkcia Autentifikácia spojení, aby bola zaistená bezpečnosť systému. Ak nie je povolené, pripojenia zo vzdialených aplikácií nie sú povolené. + + + + + + + + + 256 + {{20, -16}, {404, 14}} + + YES + + 67239424 + 4194304 + Zmeny týchto možností budú zavedené pri ďalšom spustení X11. + + + + + + + + {{10, 33}, {438, 246}} + + Zabezpečenie + + + + + + + 0 + YES + YES + + + + + + {484, 308} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + YES + + + 11 + 2 + {{302, 440}, {454, 271}} + 1350041600 + Aplikačné menu X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{324, 191}, {124, 32}} + + + YES + + 67239424 + 137887744 + Duplikovať + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{324, 159}, {124, 32}} + + + YES + + 67239424 + 137887744 + Odstrániť + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {285, 198} + + + YES + + + 256 + {285, 17} + + + + + + + 256 + {{286, 0}, {16, 17}} + + + + + + 93.215374999999995 + 62.731000000000002 + 1000 + + 75628096 + 2048 + Meno + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + 3 + MQA + + + + 3 + YES + YES + + + + 80.484375 + 40 + 1000 + + 75628096 + 2048 + Command + + + + + + 338820672 + 1024 + Text Cell + + + + + + 3 + YES + YES + + + + 103 + 10 + 1000 + + 75628096 + 2048 + Klávesová skratka + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {285, 198}} + + + + + + 4 + + + + 256 + {{286, 17}, {15, 198}} + + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {285, 15}} + + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {285, 17}} + + + + + + 4 + + + + {{20, 20}, {302, 231}} + + + + 133170 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{324, 223}, {124, 32}} + + + YES + + -2080244224 + 137887744 + Pridať položku + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + YES + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Aplikácie + + 1048576 + 2147483647 + + + submenuAction: + + Aplikácie + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Prispôsobiť… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{283, 988}, {141, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{350, 868}, {337, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 565}, {484, 308}} + + {{184, 290}, {481, 345}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{203, 978}, {156, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {357, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{405, 988}, {190, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{157, 808}, {251, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300481 + + + + + FirstResponder + NSObject + + IBUserSource + + + + + NSFormatter + NSObject + + IBUserSource + + + + + X11Controller + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + ../X11.xcodeproj + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/sv.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + sv + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/sv.lproj/main.nib/designable.nib @@ -0,0 +1,3881 @@ + + + + 1040 + 11A289 + 904 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 904 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Om X11 + + 2147483647 + + + + + + Inställningar... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tjänster + + 1048576 + 2147483647 + + + submenuAction: + + Tjänster + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Växla helskärmsläge + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Göm X11 + h + 1048576 + 2147483647 + + + 42 + + + + Göm övriga + h + 1572864 + 2147483647 + + + + + + Visa alla + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Avsluta X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Program + + 1048576 + 2147483647 + + + submenuAction: + + Program + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Anpassa... + + 1048576 + 2147483647 + + + + + + + + + Redigera + + 1048576 + 2147483647 + + + submenuAction: + + Redigera + + + + Kopiera + c + 1048576 + 2147483647 + + + + + + + + + Fönster + + 1048576 + 2147483647 + + + submenuAction: + + Fönster + + + + Stäng + w + 1048576 + 2147483647 + + + + + + Minimera + m + 1048576 + 2147483647 + + + + + + Zooma + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bläddra genom fönster + < + 1048576 + 2147483647 + + + + + + Bläddra genom fönster baklänges + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Lägg alla överst + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Hjälp + + 1048576 + 2147483647 + + + submenuAction: + + Hjälp + + + + X11 Hjälp + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{288, 302}, {484, 341.0390625}} + 1350041600 + X11-inställningar + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emulera treknappsmus + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 89}, {385, 31}} + + + YES + + 67239424 + 4194304 + Om de är aktiverade kan tangenter som motsvarar menyraden hamna i konflikt med X11-program som använder metamodifieraren. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + SMOlbGwgbmVkIGFsdGVybmF0aXYtIGVsbGVyIGtvbW1hbmRvdGFuZ2VudGVuIG7DpHIgZHUga2xpY2th +ciBzw6UgYWt0aXZlcmFzIG11c2VucyBtaXR0LSByZXNwZWt0aXZlIGjDtmdlcmtuYXBwLgo + + + + + + + + + + 256 + {{18, 124}, {402, 18}} + + + YES + + 67239424 + 0 + Aktivera tangentmotsvarigheter i X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 149}, {400, 29}} + + + YES + + 67239424 + 4194304 + Tillåter att ändringar i inmatningsmenyn skriver över de befintliga X11-tangentkopplingarna. + + + + + + + + + + 256 + {{18, 182}, {402, 18}} + + + YES + + 67239424 + 0 + Följ datorns tangentbordslayout + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {385, 31}} + + + YES + + 67239424 + 4194304 + När aktiverad kommer alt-tangenterna att skicka X11-tangentsymboler Alt_L och Alt_R istället för Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Alt-tangenter sänder Alt_L och Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Rulla alltid i samma riktning som fingerrörelsen + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + Indata + + + + + + 2 + + + + 256 + + + + 256 + {{74, 235}, {154, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Från bildskärm + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 färger + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tusentals + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Miljontals + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {55, 20}} + + + YES + + 67239424 + 4194304 + Färger: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Alternativet börjar gälla nästa gång X11 öppnas. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Helskärmsläge + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + Tillåt åtkomst till menyraden i helskärmsläge + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {385, 31}} + + + YES + + 67239424 + 4194304 + Aktiverar X11:s rotfönster. Tryck ned kommando-alt-A för att växla till och från helskärmsläge. + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + Menyraden visas när musmarkören placeras högst upp på huvudskärmen. + + + + + + + + {{10, 33}, {438, 279}} + + + Utdata + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Aktivera synkronisering + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {397, 28}} + + + YES + + 67239424 + 4194304 + Aktiverar menyalternativet ”Kopiera” och gör det möjligt att synkronisera mellan urklipp i OSX och CLIPBOARD- och PRIMARY-buffertarna i X11. + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + Uppdatera CLIPBOARD när urklipp ändras + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {409, 23}} + + + YES + + 67239424 + 0 + Uppdatera PRIMARY (mellanklick) när urklipp ändras + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {409, 23}} + + + YES + + 67239424 + 0 + Uppdatera urklipp så snart ny text markeras + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + Uppdatera urklipp när CLIPBOARD ändras + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + Avaktivera det här alternativet om du vill använda xclipboard, klipper, eller någon annan urklippshanterare i X11. + + + + + + + + + 256 + {{48, 47}, {370, 28}} + + + YES + + 67239424 + 4194304 + På grund av begränsningar i X11-protokollet kanske det här alternativet inte fungerar i vissa program. + + + + + + + + {{10, 33}, {438, 279}} + + + Urklipp + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Klicka igenom inaktiva fönster + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {385, 31}} + + + YES + + 67239424 + 4194304 + Med det här alternativet kommer ett klick på ett inaktivt fönster både aktivera fönstret och låta musklicket påverka innehållet. + + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus följer mus + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {385, 17}} + + + YES + + 67239424 + 4194304 + Fönsterfokus i X11 följer pekaren. Det här har några bieffekter. + + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Fokus på nya fönster + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {385, 28}} + + + YES + + 67239424 + 4194304 + Med det här alternativet kommer skapandet av ett nytt X11-fönster att lägga X11 överst (istället för Finder, Terminal, etc.) + + + + + + + + + {{10, 33}, {438, 279}} + + + Fönster + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Autentisera anslutningar + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Tillåt anslutningar från nätverksklienter + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + När du öppnar X11 skapas Xauthority-nycklar som kontrollerar åtkomst. Om datorns IP-adress ändras blir nycklarna ogiltiga vilket kan förhindra att X11-program öppnas. + + + + + + + + + + 256 + {{36, 118}, {385, 42}} + + + YES + + 67239424 + 4194304 + Om det är aktiverat måste Autentisera anslutningar också vara aktiverat för att säkerställa säkerheten i systemet. Om det är avaktiverat tillåts inte anslutningar från fjärrprogram. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Alternativen börjar gälla nästa gång X11 öppnas. + + + + + + + + + {{10, 33}, {438, 279}} + + + Säkerhet + + + + + + + 0 + YES + YES + + + + + + {{7, 11}, {484, 341}} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {496, 271}} + 1350041600 + X11 Programmeny + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {142, 32}} + + YES + + 67239424 + 137887744 + Duplicera + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {142, 32}} + + YES + + 67239424 + 137887744 + Ta bort + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 122.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Namn + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 100 + 40 + 1000 + + 75628096 + 2048 + Kommando + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + + 69 + 10 + 1000 + + 75628096 + 2048 + Kortkom. + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {142, 32}} + + YES + + -2080244224 + 137887744 + Lägg till objekt + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {496, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Meny + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Program + + 1048576 + 2147483647 + + + submenuAction: + + Program + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Anpassa… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + {{507, 565}, {484, 308}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + + + X11Controller + NSObject + + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + apps_table_delete: + id + + + apps_table_done: + id + + + apps_table_duplicate: + id + + + apps_table_new: + id + + + apps_table_show: + id + + + bring_to_front: + id + + + close_window: + id + + + enable_fullscreen_changed: + id + + + minimize_window: + id + + + next_window: + id + + + prefs_changed: + id + + + prefs_show: + id + + + previous_window: + id + + + quit: + id + + + toggle_fullscreen: + id + + + x11_help: + id + + + zoom_window: + id + + + + NSMenuItem + NSTableView + NSButton + NSMenuItem + NSPopUpButton + NSMenu + NSMenu + NSMenuItem + NSButton + NSButton + NSButton + NSTextField + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSPanel + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSTextField + NSMenuItem + NSButton + NSMenuItem + NSMenuItem + + + + apps_separator + NSMenuItem + + + apps_table + NSTableView + + + click_through + NSButton + + + copy_menu_item + NSMenuItem + + + depth + NSPopUpButton + + + dock_apps_menu + NSMenu + + + dock_menu + NSMenu + + + dock_window_separator + NSMenuItem + + + enable_auth + NSButton + + + enable_fullscreen + NSButton + + + enable_fullscreen_menu + NSButton + + + enable_fullscreen_menu_text + NSTextField + + + enable_keyequivs + NSButton + + + enable_tcp + NSButton + + + fake_buttons + NSButton + + + focus_follows_mouse + NSButton + + + focus_on_new_window + NSButton + + + option_sends_alt + NSButton + + + prefs_panel + NSPanel + + + scroll_in_device_direction + NSButton + + + sync_clipboard_to_pasteboard + NSButton + + + sync_keymap + NSButton + + + sync_pasteboard + NSButton + + + sync_pasteboard_to_clipboard + NSButton + + + sync_pasteboard_to_primary + NSButton + + + sync_primary_immediately + NSButton + + + sync_text1 + NSTextField + + + sync_text2 + NSTextField + + + toggle_fullscreen_item + NSMenuItem + + + use_sysbeep + NSButton + + + window_separator + NSMenuItem + + + x11_about_item + NSMenuItem + + + + IBDocumentRelativeSource + ../../../X11Controller.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/zh_CN.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + zh_CN + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/zh_CN.lproj/main.nib/designable.nib @@ -0,0 +1,3880 @@ + + + + 1040 + 11A444d + 905 + 1119.1 + 555.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 905 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + 关于 X11 + + 2147483647 + + + + + + 偏好设置… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 服务 + + 1048576 + 2147483647 + + + submenuAction: + + 服务 + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 开关全屏幕 + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 隐藏 X11 + h + 1048576 + 2147483647 + + + 42 + + + + 隐藏其他 + h + 1572864 + 2147483647 + + + + + + 全部显示 + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 退出 X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + 应用程序 + + 1048576 + 2147483647 + + + submenuAction: + + 应用程序 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 自定… + + 1048576 + 2147483647 + + + + + + + + + 编辑 + + 1048576 + 2147483647 + + + submenuAction: + + 编辑 + + + + 拷贝 + c + 1048576 + 2147483647 + + + + + + + + + 窗口 + + 1048576 + 2147483647 + + + submenuAction: + + 窗口 + + + + 关闭 + w + 1048576 + 2147483647 + + + + + + 最小化 + m + 1048576 + 2147483647 + + + + + + 缩放 + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 循环显示窗口 + ` + 1048576 + 2147483647 + + + + + + 反向循环显示窗口 + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 前置全部窗口 + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + 帮助 + + 1048576 + 2147483647 + + + submenuAction: + + 帮助 + + + + X11 帮助 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{240, 335}, {484, 341.0390625}} + 1350041600 + X11 偏好设置 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 模拟三按键鼠标 + + LucidaGrande + 13 + 1040 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 78}, {385, 31}} + + + YES + + 67239424 + 4194304 + 启用时,菜单栏等效键可能会干扰使用元修饰键的 X11 应用程序。 + + LucidaGrande + 11 + 3088 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + 6K+35oyJ5L2PIE9wdGlvbiDmiJYgQ29tbWFuZCDngrnmjInku6Xmv4DmtLvkuK3pl7TmiJblj7Povrnn +moTpvKDmoIfmjInplK7jgIIKA + + + + + + + + + + 256 + {{18, 115}, {402, 18}} + + + YES + + 67239424 + 0 + 在 X11 环境下启用等效键 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 159}, {385, 14}} + + + YES + + 67239424 + 4194304 + 允许进行输入菜单更改以覆盖当前的 X11 键盘映射。 + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + 依照系统键盘布局 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {385, 31}} + + + YES + + 67239424 + 4194304 + 如果已启用,则 Option 键会发送 Alt_L 和 Alt_R X11 键符号,而不是发送 Mode_switch。 + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Option 键会发送 Alt_L 和 Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + 始终按手指移动方向滚动 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + 输入 + + + + + + 2 + + + + 256 + + + + 256 + {{59, 235}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + 来自显示器 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 种颜色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + 上万种 + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + 上千万种 + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 239}, {43, 20}} + + + YES + + 67239424 + 4194304 + 颜色: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + 此选项会在再次开启 X11 时生效。 + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + 全屏幕模式 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + 允许在全屏幕模式下访问菜单栏 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {405, 31}} + + + YES + + 67239424 + 4194304 + 启用 X11 根窗口。使用 Command-Option-A 击键来进入和离开全屏幕模式。 + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + 当鼠标光标置于主要显示器顶部时将显示菜单栏。 + + + + + + + + {{10, 33}, {438, 279}} + + + 输出 + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + 启用同步 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {385, 28}} + + + YES + + 67239424 + 4194304 + 启用“拷贝”菜单项并允许 OSX“粘贴板”与 X11 CLIPBOARD 和 PRIMARY 缓冲区之间同步。 + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + 粘贴板改变时更新 CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {409, 23}} + + + YES + + 67239424 + 0 + 粘贴板改变时更新 PRIMARY(点按鼠标中间键) + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {409, 23}} + + + YES + + 67239424 + 0 + 选定新文本时立即更新粘贴板 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + CLIPBOARD 改变时更新粘贴板 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + 如果您想要使用 xclipboard、klipper 或其他任何 X11 剪贴板管理程序,请停用此选项。 + + + + + + + + + 256 + {{48, 47}, {370, 28}} + + + YES + + 67239424 + 4194304 + 由于 X11 协议中的限制,此选项在某些应用程序中可能无法工作。 + + + + + + + + {{10, 33}, {438, 279}} + + + 粘贴板 + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + 点按各个不活跃窗口 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {385, 31}} + + + YES + + 67239424 + 4194304 + 启用时,点按不活跃窗口会激活窗口,除此以外,还将导致鼠标点按传递到该窗口。 + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + 焦点跟随鼠标 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {385, 17}} + + + YES + + 67239424 + 4194304 + X11 窗口焦点跟随光标。这会产生一些不好的效果。 + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + 聚焦新窗口 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {395, 28}} + + + YES + + 67239424 + 4194304 + 启用时,创建新 X11 窗口将导致 X11.app 移到最前面(而不是 Finder.app、终端.app 等应用程序移到最前面)。 + + + + + + + + {{10, 33}, {438, 279}} + + + 窗口 + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 鉴定连接 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + 允许从网络客户端连接 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {385, 42}} + + + YES + + 67239424 + 4194304 + 开启 X11 将创建 Xauthority 访问控制按键。如果系统的 IP 地址已更改,这些按键会变成无效的,这可能会阻止 X11 应用程序开启。 + + + + + + + + + + 256 + {{36, 118}, {385, 42}} + + + YES + + 67239424 + 4194304 + 如果已启用,则必须也启用鉴定连接以确保系统安全。停用时,不允许远程应用程序的连接。 + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + 这些选项会在下一次开启 X11 时生效。 + + + + + + + + + {{10, 33}, {438, 279}} + + + 安全性 + + + + + + + 0 + YES + YES + + + + + + {{7, 11}, {484, 341}} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + YES + + + 11 + 2 + {{279, 416}, {454, 271}} + 1350041600 + X11 应用程序菜单 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {100, 32}} + + YES + + 67239424 + 137887744 + 复制 + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {100, 32}} + + YES + + 67239424 + 137887744 + 移除 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + 名称 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 99 + 40 + 1000 + + 75628096 + 2048 + 命令 + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + + 71 + 10 + 1000 + + 75628096 + 2048 + 快捷 + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {100, 32}} + + YES + + -2080244224 + 137887744 + 添加项目 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + YES + + + 菜单 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 应用程序 + + 1048576 + 2147483647 + + + submenuAction: + + 应用程序 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 自定… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 565}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + {{507, 565}, {484, 308}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + + + X11Controller + NSObject + + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + apps_table_delete: + id + + + apps_table_done: + id + + + apps_table_duplicate: + id + + + apps_table_new: + id + + + apps_table_show: + id + + + bring_to_front: + id + + + close_window: + id + + + enable_fullscreen_changed: + id + + + minimize_window: + id + + + next_window: + id + + + prefs_changed: + id + + + prefs_show: + id + + + previous_window: + id + + + quit: + id + + + toggle_fullscreen: + id + + + x11_help: + id + + + zoom_window: + id + + + + NSMenuItem + NSTableView + NSButton + NSMenuItem + NSPopUpButton + NSMenu + NSMenu + NSMenuItem + NSButton + NSButton + NSButton + NSTextField + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSPanel + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSButton + NSTextField + NSTextField + NSMenuItem + NSButton + NSMenuItem + NSMenuItem + + + + apps_separator + NSMenuItem + + + apps_table + NSTableView + + + click_through + NSButton + + + copy_menu_item + NSMenuItem + + + depth + NSPopUpButton + + + dock_apps_menu + NSMenu + + + dock_menu + NSMenu + + + dock_window_separator + NSMenuItem + + + enable_auth + NSButton + + + enable_fullscreen + NSButton + + + enable_fullscreen_menu + NSButton + + + enable_fullscreen_menu_text + NSTextField + + + enable_keyequivs + NSButton + + + enable_tcp + NSButton + + + fake_buttons + NSButton + + + focus_follows_mouse + NSButton + + + focus_on_new_window + NSButton + + + option_sends_alt + NSButton + + + prefs_panel + NSPanel + + + scroll_in_device_direction + NSButton + + + sync_clipboard_to_pasteboard + NSButton + + + sync_keymap + NSButton + + + sync_pasteboard + NSButton + + + sync_pasteboard_to_clipboard + NSButton + + + sync_pasteboard_to_primary + NSButton + + + sync_primary_immediately + NSButton + + + sync_text1 + NSTextField + + + sync_text2 + NSTextField + + + toggle_fullscreen_item + NSMenuItem + + + use_sysbeep + NSButton + + + window_separator + NSMenuItem + + + x11_about_item + NSMenuItem + + + + IBDocumentRelativeSource + ../../../X11Controller.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/French.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/French.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106 + LprojLocale + fr + LprojRevisionLevel + 1 + LprojVersion + 106 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/French.lproj/main.nib/designable.nib @@ -0,0 +1,3672 @@ + + + + 1040 + 11A289 + 900 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 900 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + À propos d’X11 + + 2147483647 + + + + + + Préférences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Basculer en mode plein écran + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Masquer X11 + h + 1048576 + 2147483647 + + + 42 + + + + Masquer les autres + h + 1572864 + 2147483647 + + + + + + Tout afficher + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quitter X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Applications + + 1048576 + 2147483647 + + + submenuAction: + + Applications + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personnaliser… + + 1048576 + 2147483647 + + + + + + + + + Édition + + 1048576 + 2147483647 + + + submenuAction: + + Édition + + + + Copier + c + 1048576 + 2147483647 + + + + + + + + + Fenêtre + + 1048576 + 2147483647 + + + submenuAction: + + Fenêtre + + + + Fermer + w + 1048576 + 2147483647 + + + + + + Placer dans le Dock + m + 1048576 + 2147483647 + + + + + + Réduire/agrandir + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Faire défiler les fenêtres + ` + 1048576 + 2147483647 + + + + + + Faire défiler les fenêtres en sens inverse + ` + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tout ramener au premier plan + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Aide + + 1048576 + 2147483647 + + + submenuAction: + + Aide + + + + Aide X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{414, 417.03906000000001}, {580, 341}} + 1350041600 + Préférences d’X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {554, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Émuler une souris à trois boutons + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 82}, {484, 42}} + + + YES + + 67239424 + 4194304 + Quand cette option est activée, les touches équivalentes de la barre des menus peuvent perturber les applications X11 qui utilisent le modificateur d’instructions virtuelles. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 203}, {484, 34}} + + + YES + + 67239424 + 4194304 + TWFpbnRlbmV6IGxhIHRvdWNoZSBPcHRpb24gb3UgQ29tbWFuZGUgZW5mb25jw6llIHRvdXQgZW4gY2xp +cXVhbnQgcG91ciBhY3RpdmVyIGxlIGJvdXRvbiBkcm9pdCBvdSBjZW50cmFsIGRlIGxhIHNvdXJpcy4K +A + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + Activer les touches équivalentes sous X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 144}, {484, 29}} + + + YES + + 67239424 + 4194304 + Autorise les modifications du menu d’entrée pour remplacer la disposition des touches du clavier X11. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + Utiliser la disposition des touches du clavier du système + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 35}, {484, 28}} + + + YES + + 67239424 + 4194304 + Une fois activées, les touches option envoient les symboles Alt_L et Alt_R au lieu de Mode_switch. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Les touches option envoient Alt_L et Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Faire toujours défiler dans le sens du mouvement des doigts + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {534, 279}} + + + + Entrée + + + + + + 2 + + + + 256 + + + + 256 + {{90, 234}, {128, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + du moniteur + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 couleurs + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + milliers + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + millions + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {71, 20}} + + + YES + + 67239424 + 4194304 + Couleurs : + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Cette option prend effet au prochain lancement d’X11. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Mode plein écran + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {468, 18}} + + + YES + + 67239424 + 0 + Autoriser un accès à la barre des menus en mode plein écran + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 145}, {484, 31}} + + + YES + + 67239424 + 4194304 + Active la fenêtre root X11. Utilisez le raccourci clavier Commande + Option + A pour ouvrir et fermer le mode plein écran. + + + + + + + + + + 256 + {{54, 79}, {466, 31}} + + + YES + + 67239424 + 4194304 + La barre des menus sera visible lorsque le curseur de souris est placé en haut de votre affichage principal. + + + + + + + + {{10, 33}, {534, 279}} + + + Sortie + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Activer la synchronisation + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 207}, {494, 42}} + + + YES + + 67239424 + 4194304 + Active la commande de menu « Copier » et permet la synchronisation entre le presse-papiers de OSX, celui de X11 (CLIPBOARD) et les mémoires tampons principales (PRIMARY). + + + + + + + + + 256 + {{34, 129}, {458, 18}} + + + YES + + 67239424 + 0 + Mettre à jour CLIPBOARD lorsque le presse-papiers est modifié + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {495, 18}} + + + YES + + 67239424 + 0 + Mettre à jour PRIMARY (clic central) lorsque le presse-papiers est modifié + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {437, 18}} + + + YES + + 67239424 + 0 + Mettre à jour le presse-papiers dès la sélection de nouveau texte + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {474, 18}} + + + YES + + 67239424 + 0 + Mettre à jour le presse-papiers lorsque CLIPBOARD est modifié + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {482, 28}} + + + YES + + 67239424 + 4194304 + Désactivez cette option si vous voulez utiliser xclipboard, klipper, ou tout autre gestionnaire de presse-papiers X11. + + + + + + + + + 256 + {{48, 47}, {482, 28}} + + + YES + + 67239424 + 4194304 + En raison de limitations du protocole X11, cette option ne fonctionnera pas toujours dans certaines applications. + + + + + + + + {{10, 33}, {534, 279}} + + + Presse-papiers + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Activation des fenêtres inactives en un clic + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {505, 31}} + + + YES + + 67239424 + 4194304 + En cas d’activation de cette option, si vous cliquez sur une fenêtre inactive, celle-ci deviendra active et le clic sera effectif. + + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Activation des fenêtres survolées par la souris + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 150}, {505, 28}} + + + YES + + 67239424 + 4194304 + L’activation des fenêtres X11 suit le curseur. Ceci comporte des effets adverses. + + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Activation des nouvelles fenêtres + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 92}, {505, 42}} + + + YES + + 67239424 + 4194304 + Lorsque cette option est activée, la création d’une nouvelle fenêtre X11 fait passer X11.app au premier plan (au lieu de Finder.app, Terminal.app, etc.) + + + + + + + + + {{10, 33}, {534, 279}} + + + Fenêtres + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Authentifier les connexions + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Autoriser les connexions de clients réseau + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {484, 42}} + + + YES + + 67239424 + 4194304 + Le lancement d’X11 créera des touches de contrôle d’accès Xauthority. Si l’adresse IP du système change, ces touches ne seront plus valides, ce qui risquera d’empêcher le lancement des applications X11. + + + + + + + + + + 256 + {{36, 104}, {484, 56}} + + + YES + + 67239424 + 4194304 + En cas d’activation de cette option, « Authentifier les connexions » doit aussi être activée pour garantir la sécurité du système. En cas de désactivation, les connexions à partir d’applications distantes sont interdites. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Ces options prennent effet au prochain lancement d’X11. + + + + + + + + + {{10, 33}, {534, 279}} + + + Sécurité + + + + + + + 0 + YES + YES + + + + + + {580, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {548, 271}} + 1350041600 + Menu de l’application X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{372, 191}, {162, 32}} + + YES + + 67239424 + 137887744 + Dupliquer + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{372, 159}, {162, 32}} + + YES + + 67239424 + 137887744 + Supprimer + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {333, 198} + + YES + + + 256 + {333, 17} + + + + + + 256 + {{334, 0}, {16, 17}} + + + + + 155 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nom + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + + 100 + 40 + 1000 + + 75628096 + 2048 + Commande + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + + 69 + 10 + 1000 + + 75628096 + 2048 + Raccourci + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {333, 198}} + + + + + 4 + + + + 256 + {{334, 17}, {15, 198}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {333, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {333, 17}} + + + + + 4 + + + + {{20, 20}, {350, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{372, 223}, {162, 32}} + + YES + + -2080244224 + 137887744 + Ajouter un élément + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {548, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Applications + + 1048576 + 2147483647 + + + submenuAction: + + Applications + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personnaliser… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{127, 515}, {580, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{127, 515}, {580, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBUAAAw6aAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pt_PT.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + pt_PT + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/pt_PT.lproj/main.nib/designable.nib @@ -0,0 +1,3662 @@ + + + + 1040 + 11A289 + 900 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 900 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Acerca do X11 + + 2147483647 + + + + + + Preferências... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Serviços + + 1048576 + 2147483647 + + + submenuAction: + + Serviços + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Alternar ecrã completo + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Ocultar o X11 + h + 1048576 + 2147483647 + + + 42 + + + + Ocultar outras aplicações + h + 1572864 + 2147483647 + + + + + + Mostrar tudo + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Sair do X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Aplicações + + 1048576 + 2147483647 + + + submenuAction: + + Aplicações + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar... + + 1048576 + 2147483647 + + + + + + + + + Edição + + 1048576 + 2147483647 + + + submenuAction: + + Edição + + + + Copiar + c + 1048576 + 2147483647 + + + + + + + + + Janela + + 1048576 + 2147483647 + + + submenuAction: + + Janela + + + + Fechar + w + 1048576 + 2147483647 + + + + + + Minimizar + m + 1048576 + 2147483647 + + + + + + Ampliar + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Percorrer janelas + ) + 1048576 + 2147483647 + + + + + + Percorrer janelas no sentido inverso + ( + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Passar tudo para a frente + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Ajuda + + 1048576 + 2147483647 + + + submenuAction: + + Ajuda + + + + Ajuda do X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{319, 328.0390625}, {660, 341}} + 1350041600 + Preferências do X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {634, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Simular rato de três botões + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 93}, {564, 28}} + + + YES + + 67239424 + 4194304 + Se estiverem activas, as teclas equivalentes da barra de menus podem interferir nas aplicações X11 que utilizam o modificador Meta. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {564, 42}} + + + YES + + 67239424 + 4194304 + QW8gY2xpY2FyLCBtYW50ZW5oYSBwcmVtaWRhcyBhcyB0ZWNsYXMgT3DDp8OjbyBvdSBDb21hbmRvIHBh +cmEgYWN0aXZhciBvcyBib3TDtWVzIGNlbnRyYWwgb3UgZGlyZWl0byBkbyByYXRvLgo + + + + + + + + + + 256 + {{18, 127}, {402, 18}} + + + YES + + 67239424 + 0 + Activar as equivalências de teclado para X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 151}, {564, 19}} + + + YES + + 67239424 + 4194304 + Permite que alterações do menu de entrada se sobreponham ao actual mapa de teclas do X11. + + + + + + + + + + 256 + {{18, 176}, {402, 18}} + + + YES + + 67239424 + 0 + Seguir a disposição do teclado do sistema + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {564, 31}} + + + YES + + 67239424 + 4194304 + Quando activadas, as teclas de opção enviam símbolos de teclas X11 Alt_L e Alt_R em vez de alternar_modo. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + As teclas de opção enviam Alt_L e Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Permitir deslocação na direcção do movimento do dedo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {614, 279}} + + + + Entrada + + + + + + 2 + + + + 256 + + + + 256 + {{69, 235}, {131, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Do monitor + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 cores + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Milhares + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Milhões + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {48, 20}} + + + YES + + 67239424 + 4194304 + Cores: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Esta opção terá efeito quando voltar a abrir o X11. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Modo ecrã completo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {476, 18}} + + + YES + + 67239424 + 0 + Permitir acesso à barra de menus em modo de ecrã completo + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {539, 28}} + + + YES + + 67239424 + 4194304 + Activa a janela raiz do X11. Utilize a combinação de teclas Comando-Opção-A para entrar e sair do modo de ecrã completo. + + + + + + + + + + 256 + {{54, 79}, {521, 31}} + + + YES + + 67239424 + 4194304 + A barra de menus ficará visível quando o cursor do rato for colocado na parte superior do monitor principal. + + + + + + + + {{10, 33}, {614, 279}} + + + Saída + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Activar sincronização + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {540, 28}} + + + YES + + 67239424 + 4194304 + Activa o elemento de menu "copiar" e permite a sincronização entre a área de colagem do OS X e os buffers CLIPBOARD e PRIMARY do X11. + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + Actualizar CLIPBOARD quando a área de colagem for alterada + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {560, 18}} + + + YES + + 67239424 + 0 + Actualizar PRIMARY (clique no botão do meio) quando a área de colagem for alterada + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {544, 22}} + + + YES + + 67239424 + 0 + Actualizar área de colagem assim que for seleccionado novo texto + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {410, 18}} + + + YES + + 67239424 + 0 + Actualizar a área de colagem quando CLIPBOARD for alterado + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {509, 28}} + + + YES + + 67239424 + 4194304 + Desactive esta opção se pretender utilizar o xclipboard, o klipper ou qualquer outro gestor de clipboard X11. + + + + + + + + + 256 + {{48, 47}, {534, 28}} + + + YES + + 67239424 + 4194304 + Devido a limitações do protocolo X11, esta opção nem sempre funcionará em algumas aplicações. + + + + + + + + {{10, 33}, {614, 279}} + + + Área de colagem + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + Clique atravessa janelas inactivas + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {557, 31}} + + + YES + + 67239424 + 4194304 + Se assinalar esta opção, ao clicar numa janela inactiva, o clique não só a traz para a frente como activa a janela completamente. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Foco segue o rato + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 158}, {490, 20}} + + + YES + + 67239424 + 4194304 + O foco da janela do X11 segue o cursor. Isto tem alguns efeitos adversos. + + + + + + + + + 256 + {{15, 137}, {402, 18}} + + + YES + + 67239424 + 0 + Foco em janelas novas + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 103}, {577, 28}} + + + YES + + 67239424 + 4194304 + A criação de uma nova janela X11 faz com que X11.app venha para primeiro plano (em vez de Finder.app, Terminal.app, etc.). + + + + + + + + {{10, 33}, {614, 279}} + + + Janelas + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Autenticar ligações + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Permitir ligações de clientes da rede + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {564, 42}} + + + YES + + 67239424 + 4194304 + Lançar o X11 cria chaves Xauthority de controlo de acesso. Se o endereço IP do sistema for alterado, estas chaves perdem a validade, podendo, assim, impossibilitar a execução das aplicações X11. + + + + + + + + + + 256 + {{36, 104}, {564, 56}} + + + YES + + 67239424 + 4194304 + Se activar esta opção, precisa igualmente de activar a opção “Autenticar ligações” para garantir a segurança do sistema. Se não activar esta opção, não são permitidas ligações a partir de aplicações remotas. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Estas opções terão efeito da próxima vez que abrir o X11. + + + + + + + + + {{10, 33}, {614, 279}} + + + Segurança + + + + + + + 0 + YES + YES + + + + + + {660, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{360, 400}, {477, 271}} + 1350041600 + Menu Aplicação do X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{318, 191}, {155, 32}} + + YES + + 67239424 + 137887744 + Duplicar + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{318, 159}, {155, 32}} + + YES + + 67239424 + 137887744 + Remover + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {279, 198} + + YES + + + 256 + {279, 17} + + + + + + 256 + {{280, 0}, {16, 17}} + + + + + 99.731002807617188 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nome + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Célula de texto + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 101 + 40 + 1000 + + 75628096 + 2048 + Comando + + + + + + 338820672 + 1024 + Célula de texto + + + + + + + 3 + YES + YES + + + + 69 + 10 + 1000 + + 75628096 + 2048 + Atalho + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Célula de texto + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {279, 198}} + + + + + 4 + + + + 256 + {{280, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {279, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {279, 17}} + + + + + 4 + + + + {{20, 20}, {296, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{318, 223}, {155, 32}} + + YES + + -2080244224 + 137887744 + Adicionar elemento + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {477, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Menu + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Aplicações + + 1048576 + 2147483647 + + + submenuAction: + + Aplicações + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Personalizar… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{172, 419}, {660, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{172, 419}, {660, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCEAAAwu4AAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/he.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/he.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 105 + LprojLocale + he + LprojRevisionLevel + 1 + LprojVersion + 105 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/he.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/he.lproj/main.nib/designable.nib @@ -0,0 +1,3523 @@ + + + + 1040 + 11A444d + 905 + 1119.1 + 555.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 905 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + אודות X11 + + 2147483647 + + + + + + העדפות... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + שירותים + + 1048576 + 2147483647 + + + submenuAction: + + שירותים + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + הפעל/בטל מסך מלא + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + הסתר את X11 + h + 1048576 + 2147483647 + + + 42 + + + + הסתר אחרים + h + 1572864 + 2147483647 + + + + + + הצג הכל + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + סיים את X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + ‏יישומים + + 1048576 + 2147483647 + + + submenuAction: + + ‏יישומים + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + התאמה אישית... + + 1048576 + 2147483647 + + + + + + + + + ערוך + + 1048576 + 2147483647 + + + submenuAction: + + ערוך + + + + העתק + c + 1048576 + 2147483647 + + + + + + + + + חלון + + 1048576 + 2147483647 + + + submenuAction: + + חלון + + + + סגור + w + 1048576 + 2147483647 + + + + + + מזער + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + דפדף בין חלונות + ` + 1048576 + 2147483647 + + + + + + הפוך סדר דפדוף בין חלונות + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + הבא הכל לחזית + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + עזרה + + 1048576 + 2147483647 + + + submenuAction: + + עזרה + + + + עזרה עבור X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364}, {484, 308}} + 1350041600 + העדפות X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 256 + {{13, 10}, {458, 292}} + + + + + + + 256 + + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 67108992 + אמת חיבורים + + LucidaGrande + 13 + 1040 + + + 1210864127 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{18, 133}, {402, 18}} + + YES + + 67239424 + 67108992 + אפשר חיבורים מלקוחות הרשת + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, 162}, {385, 42}} + + YES + + 67239424 + 71303296 + הפעלה של X11 תיצור מקשי בקרת גישה של Xauthority. אם כתובת ה-IP של המערכת משתנה, מקשים אלו הופכים לבלתי תקינים. דבר זה עלול למנוע הפעלה של יישומי X11. + + LucidaGrande + 11 + 3088 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{17, 85}, {385, 42}} + + YES + + 67239424 + 71303296 + כאשר התכונה פעילה, יש להפעיל גם אימות חיבורים כדי להבטיח את אבטחת המערכת. כאשר התכונה מבוטלת, חיבורים מיישומים מרוחקים אינם מורשים. + + + + + + + + + 256 + {{14, -16}, {404, 14}} + + YES + + 67239424 + 71303296 + אפשרויות אלו נכנסות לתוקפן בהפעלה הבאה של X11. + + + + + + + + {{10, 33}, {438, 246}} + + אבטחה + + + + + + 2 + + + + 256 + + + + 256 + {{21, 212}, {402, 18}} + + YES + + 67239424 + 67108992 + לחיצת הפעלה של חלונות לא פעילים + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{30, 175}, {385, 31}} + + YES + + 67239424 + 71303296 + כאשר תכונה זו פעילה, לחיצה בתוך חלון שאינו פעיל תגרום ללחיצת העכבר לעבור לחלון זה ובנוסף גם להפעילו. + + + + + + + + + 256 + {{21, 151}, {402, 18}} + + YES + + 67239424 + 67108992 + מיקוד עוקב-עכבר + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{30, 128}, {385, 17}} + + YES + + 67239424 + 71303296 + מיקוד החלון של X11 עוקב אחר הסמן. לתכונה זו ישנן כמה תופעות לוואי. + + + + + + + + + 256 + {{21, 107}, {402, 18}} + + YES + + 67239424 + 67108992 + מיקוד בחלונות חדשים + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{30, 73}, {385, 28}} + + YES + + 67239424 + 71303296 + כאשר תכונה זו פעילה, היצירה של חלון X11 חדש תגרום ל-X11.app לעבור לחזית (במקום Finder.app, ‏Terminal.app וכדומה). + + + + + + + + {{10, 33}, {438, 246}} + + ‏Windows + + + + + + 2 + + + + 256 + + + + 256 + {{25, 222}, {409, 23}} + + YES + + 67239424 + 67108992 + הפעל סינכרון + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 188}, {385, 28}} + + YES + + 67239424 + 71303296 + מפעיל את פריט התפריט ״העתק״ ומאפשר סינכרון בין לוח ההדבקה של OSX לבין החוצצים של X11 CLIPBOARD ו-PRIMARY. + + + + + + + + + 256 + {{15, 96}, {409, 23}} + + YES + + 67239424 + 67108992 + עדכן את CLIPBOARD כאשר לוח ההדבקה משתנה + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{1, 76}, {423, 18}} + + YES + + 67239424 + 67108992 + עדכן את PRIMARY (לחיצת עכבר אמצעית) כאשר לוח ההדבקה משתנה + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 46}, {409, 23}} + + YES + + 67239424 + 67108992 + עדכן את לוח ההדבקה מיידית לאחר בחירה בקטע מלל חדש + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 159}, {409, 23}} + + YES + + 67239424 + 67108992 + עדכן את לוח ההדבקה כאשר CLIPBOARD משתנה + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{25, 125}, {385, 28}} + + YES + + 67239424 + 71303296 + בטל/י אפשרות זו אם ברצונך להשתמש ב-xclipboard, ב-klipper, או בכל מנהל לוח אחר של X11. + + + + + + + + + 256 + {{40, 14}, {370, 28}} + + YES + + 67239424 + 71303296 + עקב מגבלות בפרוטוקול X11, יתכן שאפשרות זו לא תמיד תפעל ביישומים מסוימים. + + + + + + + + {{10, 33}, {438, 246}} + + לוח הדבקה + + + + + + 2 + + + + 256 + + + + 256 + {{246, 202}, {128, 26}} + + + YES + + -2076049856 + 67110016 + + + 111821055 + 1 + + LucidaGrande + 13 + 16 + + + + + + + + 400 + 75 + + + מהצג + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + ‭?‬256‮ ‬צבעים + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + ‏אלפים + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + ‏מיליונים + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{376, 205}, {45, 20}} + + + YES + + 67239424 + 71303296 + צבעים: + + + + + + + + + 256 + {{10, 183}, {392, 14}} + + + YES + + 67239424 + 71303296 + אפשרות זו נכנסת לתוקפה בהפעלה הבאה של X11. + + + + + + + + + 256 + {{11, 149}, {409, 23}} + + + YES + + 67239424 + 67108992 + מצב מסך מלא + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{-8, 83}, {409, 23}} + + + YES + + 67239424 + 67108992 + סרגל תפריט מוצג אוטומטית במצב מסך מלא + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, 112}, {385, 31}} + + + YES + + 67239424 + 71303296 + מפעיל את חלון השורש של X11. השתמש/י בשילוב המקשים של Command-Option-A כדי להיכנס ולצאת ממצב מסך מלא. + + + + + + + + {{10, 33}, {438, 246}} + + + + פלט + + + + + + 1 + + + + 256 + + + + 256 + {{18, 210}, {402, 18}} + + YES + + 67239424 + 67108992 + אמולציית עכבר בעל שלושה כפתורים + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, 60}, {385, 31}} + + YES + + 67239424 + 71303296 + כאשר תכונה זו פעילה, שווי הערך של מקשי סרגל התפריט עלולים להפריע ליישומי X11 העושים שימוש במשנה מצב מטה. + + + + + + + + + 256 + {{17, 162}, {385, 42}} + + YES + + 67239424 + 71303296 + 15TXl9eW16cv15kg15DXqiDXnten16kgT3B0aW9uINeQ15UgQ29tbWFuZCDXqteV15og15vXk9eZINec +15fXmdem15Qg15vXk9eZINec15TXpNei15nXnCDXkNeqINeb16TXqteV16gg15TXoteb15HXqCDXlNeQ +157Xptei15kg15DXlSDXlNeZ157XoNeZLgo + + + + + + + + + 256 + {{18, 97}, {402, 18}} + + YES + + 67239424 + 67108992 + הפעל שווי ערך של מקשים עבור X11 + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, 126}, {385, 14}} + + YES + + 67239424 + 71303296 + מאפשר לשינויי תפריט קלט להחליף את מפת המקשים הקיימת של X11. + + + + + + + + + 256 + {{18, 146}, {402, 18}} + + YES + + 67239424 + 67108992 + בצע לפי פריסת מקלדת המערכת + + + 1210864127 + 2 + + + + + 200 + 25 + + + + + 256 + {{17, -1}, {385, 31}} + + YES + + 67239424 + 71303296 + כאשר הם פעילים, מקשי Option שולחים סמלי מקשים של Alt_L ו-Alt_R במקום Mode_switch. + + + + + + + + + 256 + {{18, 36}, {402, 18}} + + YES + + 67239424 + 67108992 + מקשי Option שולחים Alt_L ו-Alt_R + + + 1210864127 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 246}} + + קלט + + + + + + + 0 + YES + YES + + + + + + {484, 308} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_prefs + YES + + + 11 + 2 + {{302, 440}, {454, 271}} + 1350041600 + תפריט יישומים של X11 + NSPanel + + View + + + {3.4028235e+38, 3.4028235e+38} + {320, 240} + + + 256 + + + + 268 + {{14, 191}, {100, 32}} + + + YES + + 67239424 + 137887872 + שכפל + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 268 + {{14, 159}, {100, 32}} + + + YES + + 67239424 + 137887872 + הסר + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + + YES + + + 256 + {301, 17} + + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + + 71 + 10 + 1000 + + 75628096 + 67110912 + קיצור + + + 6 + System + headerColor + + 3 + MQA + + + + 6 + System + headerTextColor + + + + + 338820672 + 67110016 + תא מלל + + LucidaGrande + 12 + 16 + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 99 + 40 + 1000 + + 75628096 + 67110912 + ‏Command + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 338820672 + 67110016 + תא מלל + + + + + + 3 + YES + YES + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 67110912 + ‏שם + + + + + + 338820672 + 67110016 + תא מלל + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {301, 15}} + + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + + 4 + + + + {{116, 20}, {318, 231}} + + + + 133170 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{14, 223}, {100, 32}} + + + YES + + -2080244224 + 137887872 + הוסף פריט + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + + + {{0, 0}, {1280, 938}} + {320, 262} + {3.4028235e+38, 3.4028235e+38} + x11_apps + YES + + + ‏תפריט + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + ‏יישומים + + 1048576 + 2147483647 + + + submenuAction: + + ‏יישומים + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + ‏התאמה אישית… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 548}, {484, 308}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 548}, {484, 308}} + + {{184, 290}, {481, 345}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + + {3.40282e+38, 3.40282e+38} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{63, 721}, {114, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300481 + + + + + FirstResponder + NSObject + + IBUserSource + + + + + NSFormatter + NSObject + + IBUserSource + + + + + X11Controller + NSObject + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + ../X11.xcodeproj + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/ar.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/ar.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + ar + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/English.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/English.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 105 + LprojLocale + en + LprojRevisionLevel + 1 + LprojVersion + 105 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/zh_TW.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + zh_TW + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/zh_TW.lproj/main.nib/designable.nib @@ -0,0 +1,3612 @@ + + + + 1040 + 11A289 + 900 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 900 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + 關於 X11 + + 2147483647 + + + + + + 偏好設定⋯ + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 服務 + + 1048576 + 2147483647 + + + submenuAction: + + 服務 + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 切換全螢幕 + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 隱藏 X11 + h + 1048576 + 2147483647 + + + 42 + + + + 隱藏其他 + h + 1572864 + 2147483647 + + + + + + 顯示全部 + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 結束 X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + 應用程式 + + 1048576 + 2147483647 + + + submenuAction: + + 應用程式 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 自定⋯ + + 1048576 + 2147483647 + + + + + + + + + 編輯 + + 1048576 + 2147483647 + + + submenuAction: + + 編輯 + + + + 拷貝 + c + 1048576 + 2147483647 + + + + + + + + + 視窗 + + 1048576 + 2147483647 + + + submenuAction: + + 視窗 + + + + 關閉 + w + 1048576 + 2147483647 + + + + + + 縮到最小 + m + 1048576 + 2147483647 + + + + + + 縮放 + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 循環檢視視窗 + ` + 1048576 + 2147483647 + + + + + + 反向循環檢視視窗 + ~ + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 將此程式所有視窗移至最前 + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + 輔助說明 + + 1048576 + 2147483647 + + + submenuAction: + + 輔助說明 + + + + X11 輔助說明 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{319, 329}, {484, 341.0390625}} + 1350041600 + X11 偏好設定 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {458, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 模擬三鍵滑鼠 + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 125}, {399, 14}} + + + YES + + 67239424 + 4194304 + 當啟用時,選單列按鍵的對應鍵可能會阻礙使用 Meta 變更鍵的 X11 應用程式。 + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 209}, {385, 28}} + + + YES + + 67239424 + 4194304 + 5oyJ5L2PIE9wdGlvbiDmiJYgQ29tbWFuZCDnmoTlkIzmmYLmjInkuIDkuIvvvIzku6XllZ/nlKjmu5Hp +vKDnmoTkuK3plpPmiJblj7PpgormjInpiJXjgIIKA + + + + + + + + + + 256 + {{18, 145}, {402, 18}} + + + YES + + 67239424 + 0 + 啟用 X11 下的按鍵對應鍵 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 174}, {385, 14}} + + + YES + + 67239424 + 4194304 + 允許輸入法選單的更動覆寫目前的 X11 按鍵對應。 + + + + + + + + + + 256 + {{18, 194}, {402, 18}} + + + YES + + 67239424 + 0 + 依照系統鍵盤佈局 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 59}, {385, 31}} + + + YES + + 67239424 + 4194304 + 當啟用時,option 鍵會傳送 Alt_L 和 Alt_R X11 按鍵符號,而不是 Mode_switch。 + + + + + + + + + 256 + {{18, 96}, {402, 18}} + + + YES + + 67239424 + 0 + 讓 Option 鍵傳送 Alt_L 和 Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 35}, {418, 18}} + + + YES + + 67239424 + 0 + 永遠依照手指移動的方向捲視 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {438, 279}} + + + + 輸入 + + + + + + 2 + + + + 256 + + + + 256 + {{55, 235}, {136, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + 來自螢幕 + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 種顏色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + 數萬種顏色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + 千萬種顏色 + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {44, 20}} + + + YES + + 67239424 + 4194304 + 顏色: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + 此選項將會在 X11 再次啟動後生效。 + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + 全螢幕模式 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + 允許在全螢幕模式中取用選單列 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {382, 28}} + + + YES + + 67239424 + 4194304 + 啟用 X11 root 視窗。使用 Command + Option + A 鍵盤組合來進入和離開全螢幕模式。 + + + + + + + + + + 256 + {{54, 79}, {362, 31}} + + + YES + + 67239424 + 4194304 + 將滑鼠游標置於主要顯示器的上方時將顯示選單列。 + + + + + + + + {{10, 33}, {438, 279}} + + + 輸出 + + + + + + 2 + + + + 256 + + + + 256 + {{18, 255}, {409, 23}} + + + YES + + 67239424 + 0 + 啟用同步功能 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 221}, {385, 28}} + + + YES + + 67239424 + 4194304 + 啟用“拷貝”選單項目,並允許 OSX“剪貼板”與 X11 CLIPBOARD 之間的同步,以及 PRIMARY 緩衝。 + + + + + + + + + 256 + {{34, 129}, {409, 23}} + + + YES + + 67239424 + 0 + 當“剪貼板”更改時更新 CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 104}, {409, 23}} + + + YES + + 67239424 + 0 + 當“剪貼板”更改時更新 PRIMARY(中間點按) + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 79}, {409, 23}} + + + YES + + 67239424 + 0 + 當選取新文字時,立即更新“剪貼板” + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{34, 192}, {409, 23}} + + + YES + + 67239424 + 0 + 當 CLIPBOARD 更改時更新“剪貼板” + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{48, 158}, {385, 28}} + + + YES + + 67239424 + 4194304 + 若您想使用 xclipboard、klipper 或任何其他 X11 剪貼板管理程式,請停用此選項。 + + + + + + + + + 256 + {{48, 47}, {370, 28}} + + + YES + + 67239424 + 4194304 + 由於 X11 通訊協定的限制,此選項可能無法在某些應用程式裡使用。 + + + + + + + + {{10, 33}, {438, 279}} + + + 剪貼板 + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {402, 18}} + + + YES + + 67239424 + 0 + 穿透至未啟用的視窗 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {385, 31}} + + + YES + + 67239424 + 4194304 + 當啟用時,按一下未啟用的視窗將會使滑鼠按鍵穿透至該視窗並將其啟用。 + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + 焦點隨著滑鼠移動 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {385, 17}} + + + YES + + 67239424 + 4194304 + X11 視窗焦點會跟隨游標移動。這樣會有一些相反的效果。 + + + + + + + + + 256 + {{15, 123}, {402, 18}} + + + YES + + 67239424 + 0 + 讓新視窗取得焦點 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 89}, {409, 28}} + + + YES + + 67239424 + 4194304 + 當啟用時,新增的 X11 視窗將會使 X11.app(而不是 Finder.app、終端機.app 等)移至最前。 + + + + + + + + {{10, 33}, {438, 279}} + + + 視窗 + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + 認證連線 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + 允許從網路用戶端連線 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 209}, {385, 28}} + + + YES + + 67239424 + 4194304 + 啟動 X11 將會製作 Xauthority 取用控制按鍵。若系統的 IP 位址更動,這些鍵將會無效,這可能會令 X11 應用程式無法啟動。 + + + + + + + + + + 256 + {{36, 132}, {388, 28}} + + + YES + + 67239424 + 4194304 + 若啟用,“認證連線”必須也被啟用來確保系統安全。當停用時,不會允許來自遠端應用程式的連線。 + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + 這些選項將會在 X11 下次啟動後生效。 + + + + + + + + + {{10, 33}, {438, 279}} + + + 安全性 + + + + + + + 0 + YES + YES + + + + + + {484, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{360, 400}, {454, 271}} + 1350041600 + X11 應用程式選單 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{340, 191}, {100, 32}} + + YES + + 67239424 + 137887744 + 複製 + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {100, 32}} + + YES + + 67239424 + 137887744 + 移除 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 122.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + 名稱 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 100 + 40 + 1000 + + 75628096 + 2048 + 指令 + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 69 + 10 + 1000 + + 75628096 + 2048 + 快速鍵 + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {100, 32}} + + YES + + -2080244224 + 137887744 + 加入項目 + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {454, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + 選單 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 應用程式 + + 1048576 + 2147483647 + + + submenuAction: + + 應用程式 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + 自定⋯ + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{507, 515}, {484, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{507, 515}, {484, 341}} + + {{184, 290}, {481, 345}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/ru.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + ru + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/ru.lproj/main.nib/designable.nib @@ -0,0 +1,3696 @@ + + + + 1040 + 11A289 + 851 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + О программе X11 + + 2147483647 + + + + + + Настройки… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Службы + + 1048576 + 2147483647 + + + submenuAction: + + Службы + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Переключение полноэкранного режима + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Скрыть X11 + h + 1048576 + 2147483647 + + + 42 + + + + Скрыть остальные + h + 1572864 + 2147483647 + + + + + + Показать все + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Завершить X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Программы + + 1048576 + 2147483647 + + + submenuAction: + + Программы + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Настроить… + + 1048576 + 2147483647 + + + + + + + + + Правка + + 1048576 + 2147483647 + + + submenuAction: + + Правка + + + + Копировать + c + 1048576 + 2147483647 + + + + + + + + + Окно + + 1048576 + 2147483647 + + + submenuAction: + + Окно + + + + Закрыть + w + 1048576 + 2147483647 + + + + + + Убрать в Dock + m + 1048576 + 2147483647 + + + + + + Изменить масштаб + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Круговое переключение окон + ` + 1048576 + 2147483647 + + + + + + Обратное круговое переключение окон + ` + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Все окна — на передний план + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Справка + + 1048576 + 2147483647 + + + submenuAction: + + Справка + + + + Справка X11 + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 364.0390625}, {600, 341}} + 1350041600 + Настройки X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {574, 325}} + + + + + + 1 + + + + 256 + + + + 256 + {{15, 243}, {402, 18}} + + YES + + 67239424 + 0 + Эмулировать трехкнопочную мышь + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{33, 105}, {504, 28}} + + YES + + 67239424 + 4194304 + Если включено, эквиваленты клавиш строки меню могут пересекаться с эквивалентами в программах X11, использующих мета-модификатор. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{33, 200}, {495, 42}} + + YES + + 67239424 + 4194304 + 0KPQtNC10YDQttC40LLQsNC50YLQtSDQvdCw0LbQsNGC0YvQvNC4INC60L3QvtC/0LrQuCBPcHRpb24g +0LjQu9C4IENvbW1hbmQg0L/RgNC4INCw0LrRgtC40LLQsNGG0LjQuCDRgdGA0LXQtNC90LXQuSDQuNC7 +0Lgg0L/RgNCw0LLQvtC5INC60L3QvtC/0L7QuiDQvNGL0YjQuC4KA + + + + + + + + + + 256 + {{15, 137}, {402, 18}} + + YES + + 67239424 + 0 + Включить эквиваленты клавиш в X11 + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 166}, {504, 14}} + + YES + + 67239424 + 4194304 + Разрешать изменения меню ввода для перезаписи текущей X11-карты ключей. + + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + YES + + 67239424 + 0 + Следовать системной раскладке клавиатуры + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 41}, {504, 31}} + + YES + + 67239424 + 4194304 + Если включено, клавиши Option отправляют символы X11 клавиш Alt_L и Alt_R X11, вместо Mode_switch. + + + + + + + + + 256 + {{15, 76}, {402, 18}} + + YES + + 67239424 + 0 + Клавиши Option отправляют Alt_L и Alt_R + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 12}, {418, 18}} + + YES + + 67239424 + 0 + Всегда прокручивать в сторону движения пальца + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {554, 279}} + + Вход + + + + + + 2 + + + + 256 + + + + 256 + {{57, 234}, {132, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + С экрана + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 цветов + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Тысячи + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Миллионы + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{9, 241}, {46, 17}} + + + YES + + 67239424 + 4194304 + Цвета: + + + + + + + + + + 256 + {{33, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Этот параметр вступит в силу при следующем запуске X11. + + + + + + + + + + 256 + {{15, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Полноэкранный режим + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 103}, {338, 34}} + + + YES + + 67239424 + 0 + 0KDQsNC30YDQtdGI0LjRgtGMINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INC00L7RgdGC0YPQvyDQ +uiDRgdGC0YDQvtC60LUg0LzQtdC90Y4K0LIg0L/QvtC70L3QvtGN0LrRgNCw0L3QvdC+0Lwg0YDQtdC2 +0LjQvNC1A + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 148}, {487, 28}} + + + YES + + 67239424 + 4194304 + Включает корневое окно X11. Используйте сочетание клавиш «Command-Option-A» для включения и выключения полноэкранного режима. + + + + + + + + + + 256 + {{33, 66}, {487, 31}} + + + YES + + 67239424 + 4194304 + Строка меню будет видимой, когда указатель мыши переведен в верхнюю часть первичного экрана. + + + + + + + + {{10, 33}, {554, 279}} + + + Выход + + + + + + 2 + + + + 256 + + + + 256 + {{2, 255}, {409, 23}} + + + + YES + + 67239424 + 0 + Включить синхронизацию + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{20, 221}, {522, 28}} + + + + YES + + 67239424 + 4194304 + Включает объект меню «Копировать» и разрешает синхронизацию между буфером обмена OS X и буферами X11 CLIPBOARD/PRIMARY. + + + + + + + + + 256 + {{21, 129}, {409, 23}} + + + + YES + + 67239424 + 0 + Обновлять CLIPBOARD при изменениях в буфере обмена + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{21, 102}, {539, 23}} + + + + YES + + 67239424 + 0 + Обновлять PRIMARY (средняя кнопка мыши) при изменениях в буфере обмена + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{21, 80}, {419, 18}} + + + + YES + + 67239424 + 0 + Обновлять буфер обмена сразу после выбора нового текста + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{21, 192}, {409, 23}} + + + + YES + + 67239424 + 0 + Обновлять буфер обмена при изменениях в CLIPBOARD + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 158}, {501, 28}} + + + + YES + + 67239424 + 4194304 + Отключите этот параметр, если хотите использовать xclipboard, klipper или иную другую программу-менеджер буфера обмена X11. + + + + + + + + + 256 + {{36, 31}, {501, 43}} + + + + YES + + 67239424 + 4194304 + В связи с ограничениями в протоколе X11 этот параметр, возможно, в некоторых программах иногда работать не будет. + + + + + + + + {{10, 33}, {554, 279}} + + + + + Буфер обмена + + + + + + 2 + + + + 256 + + + + 256 + {{17, 245}, {402, 18}} + + YES + + 67239424 + 0 + Сквозное нажатие неактивных окон + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{35, 208}, {491, 31}} + + YES + + 67239424 + 4194304 + Если включено, нажатие неактивного окна повлечет за собой не только его активацию, но и сквозное прохождение мыши к этому окну. + + + + + + + + + 256 + {{17, 179}, {402, 18}} + + YES + + 67239424 + 0 + Фокус следует за мышью + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{35, 145}, {491, 28}} + + YES + + 67239424 + 4194304 + Фокус окна X11 следует за движением курсора, что имеет некоторые отрицательные последствия. + + + + + + + + + 256 + {{15, 116}, {402, 18}} + + YES + + 67239424 + 0 + Фокус – на новые окна + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{35, 68}, {491, 42}} + + YES + + 67239424 + 4194304 + Если включено, создание нового окна X11 повлечет за собой перемещение на передний план X11.app (вместо Finder.app, Terminal.app и т. д.) + + + + + + + + {{10, 33}, {554, 279}} + + Окна + + + + + + + 256 + + + + 256 + {{15, 243}, {402, 18}} + + YES + + 67239424 + 0 + Проверять аутентификации подключений + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 166}, {402, 18}} + + YES + + 67239424 + 0 + Разрешать подключения из клиентских сетей + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 195}, {504, 42}} + + YES + + 67239424 + 4194304 + Запуск X11 создаст ключи доступа-контроля Xauthority. Если системный IP-адрес изменяется, эти ключи становятся недействительными, что может препятствовать запуску программ X11. + + + + + + + + + + 256 + {{33, 112}, {504, 48}} + + YES + + 67239424 + 4194304 + Если включено, проверка аутентификации подключений должна быть также включена для гарантии работы системы безопасности. Если выключено, подключения из удаленных программ недоступны. + + + + + + + + + + 256 + {{17, 17}, {404, 14}} + + YES + + 67239424 + 4194304 + Эти параметры вступят в силу при следующем запуске X11. + + + + + + + + + {{10, 33}, {554, 279}} + + Безопасность + + + + + + + 0 + YES + YES + + + + + + {600, 341} + + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {504, 271}} + 1350041600 + Программное меню X11 + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 265 + {{380, 191}, {118, 32}} + + YES + + 67239424 + 137887744 + Дублировать + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{380, 159}, {118, 32}} + + YES + + 67239424 + 137887744 + Удалить + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {351, 198} + + YES + + + 256 + {351, 17} + + + + + + 256 + {{352, 0}, {16, 17}} + + + + + 138.73101806640625 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Имя + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 116 + 40 + 1000 + + 75628096 + 2048 + Команда + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 86.999969482421875 + 10 + 1000 + + 75628096 + 2048 + Соч. кл. + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {351, 198}} + + + + + 4 + + + + 256 + {{352, 17}, {15, 198}} + + + _doScroller: + 0.99492380000000002 + + + + 256 + {{1, 215}, {351, 15}} + + 1 + + _doScroller: + 0.68852460000000004 + + + + 2304 + + + + {{1, 0}, {351, 17}} + + + + + 4 + + + + {{10, 20}, {368, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{380, 223}, {118, 32}} + + YES + + -2080244224 + 137887744 + Доб. объект + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {504, 271} + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Меню + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Программы + + 1048576 + 2147483647 + + + submenuAction: + + Программы + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Настроить… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{480, 511}, {600, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{480, 511}, {600, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 1011}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADClAAAw20AAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADCeAAAwyAAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABAAAAAws4AAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADDMgAAw3cAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAwxYAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBcAAAwvAAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCCAAAw1UAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADCbAAAwzgAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADCCAAAwr4AAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADC4gAAwkwAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBUAAAw6aAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAADB8AAAwvQAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCEAAAwysAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBwAAAw2sAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + {{563, 711}, {145, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAAAAAAAAwyQAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/fi.lproj/locversion.plist @@ -0,0 +1,14 @@ + + + + + LprojCompatibleVersion + 106.3 + LprojLocale + fi + LprojRevisionLevel + 1 + LprojVersion + 106.3 + + --- xorg-server-1.11.4.orig/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib +++ xorg-server-1.11.4/hw/xquartz/bundle/Resources/fi.lproj/main.nib/designable.nib @@ -0,0 +1,3671 @@ + + + + 1040 + 11A289 + 900 + 1094.2 + 521.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 900 + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + X11 + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + X11 + + + + Tietoja: X11 + + 2147483647 + + + + + + Asetukset... + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Palvelut + + 1048576 + 2147483647 + + + submenuAction: + + Palvelut + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Vaihda koko näytön tila + a + 1572864 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Kätke X11 + h + 1048576 + 2147483647 + + + 42 + + + + Kätke muut + h + 1572864 + 2147483647 + + + + + + Näytä kaikki + + 1048576 + 2147483647 + + + 42 + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Lopeta X11 + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + Ohjelmat + + 1048576 + 2147483647 + + + submenuAction: + + Ohjelmat + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Muokkaa... + + 1048576 + 2147483647 + + + + + + + + + Muokkaa + + 1048576 + 2147483647 + + + submenuAction: + + Muokkaa + + + + Kopioi + c + 1048576 + 2147483647 + + + + + + + + + Ikkuna + + 1048576 + 2147483647 + + + submenuAction: + + Ikkuna + + + + Sulje + w + 1048576 + 2147483647 + + + + + + Pienennä + m + 1048576 + 2147483647 + + + + + + Zoomaa + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Käy ikkunoita läpi + < + 1048576 + 2147483647 + + + + + + Käy ikkunoita läpi käänteisessä järjestyksessä + > + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Tuo kaikki eteen + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Ohje + + 1048576 + 2147483647 + + + submenuAction: + + Ohje + + + + X11-ohje + + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + X11Controller + + + 3 + 2 + {{266, 349.03906000000001}, {625, 341}} + 1350041600 + X11-asetukset + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + + + 256 + + + + 274 + {{13, 10}, {599, 325}} + + + + + 1 + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Emuloi kolmenäppäimistä hiirtä + + LucidaGrande + 13 + 1044 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{36, 96}, {540, 28}} + + + YES + + 67239424 + 4194304 + Kun käytössä, valikkorivin näppäinvastineet saattavat häiritä X11-ohjelmia, jotka käyttävät Meta-muuntonäppäintä. + + LucidaGrande + 11 + 3100 + + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 256 + {{36, 195}, {540, 42}} + + + YES + + 67239424 + 4194304 + QWt0aXZvaSBoaWlyZW4ga2Vza2ktIHRhaSBvaWtlYSBwYWluaWtlIHBpdMOkbcOkbGzDpCBPcHRpby0g +dGFpIEtvbWVudG8tbsOkcHDDpGltacOkIHBhaW5ldHR1bmEgb3NvaXRldHRhZXNzYS4KA + + + + + + + + + + 256 + {{18, 130}, {402, 18}} + + + YES + + 67239424 + 0 + Ota käyttöön näppäinvastineet X11:ssä + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 159}, {385, 14}} + + + YES + + 67239424 + 4194304 + Salli syöttövalikon muutosten korvata nykyinen X11-näppäinkartta. + + + + + + + + + + 256 + {{18, 179}, {402, 18}} + + + YES + + 67239424 + 0 + Noudata järjestelmän näppäinasettelua + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 32}, {540, 31}} + + + YES + + 67239424 + 4194304 + Kun käytössä, Optio-näppäimet lähettävät Alt_L- ja Alt_R X11 -näppäinsymbolit Mode_switchin sijaan. + + + + + + + + + 256 + {{18, 69}, {402, 18}} + + + YES + + 67239424 + 0 + Optio-näppäimet lähettävät Alt_L:n ja Alt_R:n + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 8}, {418, 18}} + + + YES + + 67239424 + 0 + Vieritä aina sormen kulkemaan suuntaan + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{10, 33}, {579, 279}} + + + + Syöte + + + + + + 2 + + + + 256 + + + + 256 + {{58, 234}, {118, 26}} + + + YES + + -2076049856 + 1024 + + + 109199615 + 1 + + LucidaGrande + 13 + 16 + + + + + + 400 + 75 + + + Näytöltä + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + -1 + + + YES + + + OtherViews + + + + + + 256 väriä + + 1048576 + 2147483647 + + + _popUpItemAction: + 8 + + + + + Tuhansia + + 1048576 + 2147483647 + + + _popUpItemAction: + 15 + + + + + Miljoonia + + 1048576 + 2147483647 + + + _popUpItemAction: + 24 + + + + + 3 + YES + YES + 1 + + + + + 256 + {{17, 238}, {45, 20}} + + + YES + + 67239424 + 4194304 + Värit: + + + + + + + + + + 256 + {{36, 216}, {392, 14}} + + + YES + + 67239424 + 4194304 + Tämä valinta tulee voimaan, kun X11 avataan seuraavan kerran. + + + + + + + + + + 256 + {{18, 182}, {409, 23}} + + + YES + + 67239424 + 0 + Koko näytön tila + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{37, 116}, {409, 23}} + + + YES + + 67239424 + 0 + Salli valikkorivin käyttö koko näytön tilassa + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 148}, {529, 28}} + + + YES + + 67239424 + 4194304 + Ottaa käyttöön X11:n juuri-ikkunan. Voit siirtyä koko näytön tilaan ja siitä pois painamalla Komento-Optio-A. + + + + + + + + + + 256 + {{54, 79}, {511, 31}} + + + YES + + 67239424 + 4194304 + Valikkorivi tulee näkyviin, kun hiiren osoitin on ensisijaisen näytön yläosassa. + + + + + + + + {{10, 33}, {579, 279}} + + + Tuloste + + + + + + 2 + + + + 256 + + + + 256 + {{3, 255}, {409, 23}} + + + YES + + 67239424 + 0 + Ota synkronointi käyttöön + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{21, 213}, {554, 42}} + + + YES + + 67239424 + 4194304 + Ottaa käyttöön Kopioi-valikkokohteen ja mahdollistaa synkronoinnin Mac OS X:n leikepöydän ja X11:n leikepöydän ja ensisijaisen valinnan puskurin välillä. + + + + + + + + + 256 + {{19, 129}, {410, 18}} + + + YES + + 67239424 + 0 + Päivitä X11:n leikepöytä, kun Mac OS X:n leikepöytä muuttuu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{19, 88}, {555, 34}} + + + YES + + 67239424 + 0 + Päivitä X11:n ensisijainen valinta (keskiosoitus), kun Mac OS X:n leikepöytä muuttuu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{19, 61}, {409, 23}} + + + YES + + 67239424 + 0 + Päivitä Mac OS X:n leikepöytä heti, kun uutta tekstiä valitaan + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{19, 192}, {438, 18}} + + + YES + + 67239424 + 0 + Päivitä Mac OS X:n leikepöytä, kun X11:n leikepöytä muuttuu + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{33, 158}, {542, 28}} + + + YES + + 67239424 + 4194304 + Poista tämä valinta käytöstä, jos haluat käyttää xclipboardia, klipperiä tai muuta X11-leikepöytäohjelmaa. + + + + + + + + + 256 + {{33, 29}, {542, 28}} + + + YES + + 67239424 + 4194304 + X11-protokollan rajoitusten vuoksi tämä valinta ei välttämättä aina toimi kaikissa ohjelmissa. + + + + + + + + {{10, 33}, {579, 279}} + + + Leikepöytä + + + + + + 2 + + + + 256 + + + + 256 + {{15, 245}, {318, 18}} + + + YES + + 67239424 + 0 + Huomioi osoitukset ei-aktiivisiin ikkunoihin + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 208}, {542, 31}} + + + YES + + 67239424 + 4194304 + Kun käytössä, ei-aktiivisen ikkunan osoittaminen saa hiiren osoituksen kulkemaan kyseiselle ikkunalle sen aktivoimisen lisäksi. + + + + + + + + + 256 + {{15, 184}, {402, 18}} + + + YES + + 67239424 + 0 + Kohdistus seuraa hiirtä + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 161}, {407, 17}} + + + YES + + 67239424 + 4194304 + X11:n ikkunakohdistus seuraa osoitinta. Tällä on joitakin haittavaikutuksia. + + + + + + + + + 256 + {{15, 140}, {402, 18}} + + + YES + + 67239424 + 0 + Kohdista uusiin ikkunoihin + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{23, 106}, {542, 28}} + + + YES + + 67239424 + 4194304 + Kun käytössä, uuden X11-ikkunan luominen saa X11.appin siirtymään etualalle (Finder.appin, Pääte.appin jne. sijasta). + + + + + + + + {{10, 33}, {579, 279}} + + + Ikkunat + + + + + + + 256 + + + + 256 + {{18, 243}, {402, 18}} + + + YES + + 67239424 + 0 + Todenna yhteydet + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{18, 166}, {402, 18}} + + + YES + + 67239424 + 0 + Salli yhteydet verkkoasiakkailta + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{36, 195}, {529, 42}} + + + YES + + 67239424 + 4194304 + X11:n avaaminen luo Xauthority-pääsynhallinta-avaimia. Jos järjestelmän IP-osoite muuttuu, näistä avaimista tulee virheellisiä, mikä saattaa estää X11-ohjelmia avautumasta. + + + + + + + + + + 256 + {{36, 118}, {529, 42}} + + + YES + + 67239424 + 4194304 + Jos tämä otetaan käyttöön, ”Todenna yhteydet” pitää myös ottaa käyttöön järjestelmän turvallisuuden varmistamiseksi. Kun tämä on pois käytöstä, yhteyksiä etäohjelmista ei sallita. + + + + + + + + + + 256 + {{17, 17}, {363, 17}} + + YES + + 67239424 + 4194304 + Nämä valinnat tulevat voimaan, kun X11 avataan seuraavan kerran. + + + + + + + + + {{10, 33}, {579, 279}} + + + Suojaus + + + + + + + 0 + YES + YES + + + + + + {625, 341} + + + {{0, 0}, {1920, 1178}} + {320, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_prefs + + + 11 + 2 + {{302, 440}, {469, 271}} + 1350041600 + X11-ohjelmavalikko + NSPanel + + View + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {450, 240} + + + 256 + + + + 265 + {{340, 191}, {115, 32}} + + YES + + 67239424 + 137887744 + Monista + + + -2038284033 + 1 + + Helvetica + 13 + 16 + + + + + + 200 + 25 + + + + + 265 + {{340, 159}, {115, 32}} + + YES + + 67239424 + 137887744 + Poista + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + + + 2304 + + + + 256 + {301, 198} + + YES + + + 256 + {301, 17} + + + + + + 256 + {{302, 0}, {16, 17}} + + + + + 121.73100280761719 + 62.730998992919922 + 1000 + + 75628096 + 2048 + Nimi + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 338820672 + 1024 + Text Cell + + + + + 3 + MQA + + + + 3 + YES + YES + + + + 99 + 40 + 1000 + + 75628096 + 2048 + Komento + + + + + + 338820672 + 1024 + Text Cell + + + + + + + 3 + YES + YES + + + + 71 + 10 + 1000 + + 75628096 + 2048 + Oikotie + + + 6 + System + headerColor + + + + + + 338820672 + 1024 + Text Cell + + LucidaGrande + 12 + 16 + + + + YES + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + 1379958784 + + + 1 + -1 + 0 + YES + 0 + 1 + + + {{1, 17}, {301, 198}} + + + + + 4 + + + + 256 + {{302, 17}, {15, 198}} + + + _doScroller: + 0.99492377042770386 + + + + 256 + {{1, 215}, {301, 15}} + + 1 + + _doScroller: + 0.68852460384368896 + + + + 2304 + + + + {{1, 0}, {301, 17}} + + + + + 4 + + + + {{20, 20}, {318, 231}} + + + 133170 + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 265 + {{340, 223}, {115, 32}} + + YES + + -2080244224 + 137887744 + Lisää kohde + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {469, 271} + + {{0, 0}, {1920, 1178}} + {450, 262} + {1.7976931348623157e+308, 1.7976931348623157e+308} + x11_apps + + + Valikko + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Ohjelmat + + 1048576 + 2147483647 + + + submenuAction: + + Ohjelmat + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Muokkaa… + + 1048576 + 2147483647 + + + + + + + + + + + + + + + copy: + + + + 181 + + + + minimize_window: + + + + 202 + + + + close_window: + + + + 205 + + + + zoom_window: + + + + 206 + + + + bring_to_front: + + + + 207 + + + + hideOtherApplications: + + + + 263 + + + + apps_separator + + + + 273 + + + + apps_table + + + + 301 + + + + apps_table_delete: + + + + 303 + + + + apps_table_duplicate: + + + + 304 + + + + apps_table_show: + + + + 308 + + + + apps_table_new: + + + + 311 + + + + prefs_show: + + + + 318 + + + + x11_about_item + + + + 321 + + + + enable_auth + + + + 387 + + + + enable_tcp + + + + 388 + + + + depth + + + + 389 + + + + fake_buttons + + + + 391 + + + + sync_keymap + + + + 392 + + + + enable_keyequivs + + + + 393 + + + + prefs_changed: + + + + 394 + + + + prefs_changed: + + + + 395 + + + + prefs_changed: + + + + 396 + + + + prefs_changed: + + + + 398 + + + + prefs_changed: + + + + 399 + + + + prefs_changed: + + + + 401 + + + + prefs_panel + + + + 402 + + + + x11_help: + + + + 422 + + + + dockMenu + + + + 426 + + + + dock_menu + + + + 428 + + + + delegate + + + + 429 + + + + hide: + + + + 430 + + + + unhideAllApplications: + + + + 431 + + + + orderFrontStandardAboutPanel: + + + + 433 + + + + dock_apps_menu + + + + 530 + + + + dock_window_separator + + + + 531 + + + + apps_table_show: + + + + 534 + + + + next_window: + + + + 539 + + + + previous_window: + + + + 540 + + + + enable_fullscreen + + + + 546 + + + + enable_fullscreen_changed: + + + + 547 + + + + toggle_fullscreen: + + + + 548 + + + + toggle_fullscreen_item + + + + 549 + + + + menu + + + + 300334 + + + + terminate: + + + + 300336 + + + + prefs_changed: + + + + 300389 + + + + prefs_changed: + + + + 300390 + + + + prefs_changed: + + + + 300391 + + + + click_through + + + + 300392 + + + + focus_follows_mouse + + + + 300393 + + + + focus_on_new_window + + + + 300394 + + + + copy_menu_item + + + + 300443 + + + + sync_pasteboard + + + + 300444 + + + + sync_clipboard_to_pasteboard + + + + 300461 + + + + sync_pasteboard_to_clipboard + + + + 300462 + + + + sync_pasteboard_to_primary + + + + 300463 + + + + sync_primary_immediately + + + + 300464 + + + + prefs_changed: + + + + 300465 + + + + prefs_changed: + + + + 300466 + + + + prefs_changed: + + + + 300467 + + + + prefs_changed: + + + + 300468 + + + + prefs_changed: + + + + 300469 + + + + sync_text1 + + + + 300470 + + + + sync_text2 + + + + 300471 + + + + enable_fullscreen_menu + + + + 300474 + + + + prefs_changed: + + + + 300475 + + + + prefs_changed: + + + + 300480 + + + + option_sends_alt + + + + 300481 + + + + prefs_changed: + + + + 300484 + + + + enable_fullscreen_menu_text + + + + 300489 + + + + scroll_in_device_direction + + + + 300490 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 203 + + + + + 204 + + + + + 536 + + + + + 537 + + + + + 538 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 544 + + + + + 545 + + + + + 163 + + + + + + + + 169 + + + + + + + + 157 + + + + + 269 + + + + + + + + 270 + + + + + + + + + 272 + + + + + 305 + + + + + 419 + + + + + + + + 420 + + + + + + + + 421 + + + + + 196 + + + X11Controller + + + 244 + + + + + + PrefsPanel + + + 245 + + + + + + + + 348 + + + + + + + + + + + + 349 + + + + + + + + 351 + + + + + + + + + + + + + + + + 363 + + + + + + + + 364 + + + + + + + + 365 + + + + + + + + 368 + + + + + + + + 369 + + + + + + + + 370 + + + + + + + + 352 + + + + + + + + 350 + + + + + + + + + + + + + + 382 + + + + + + + + 385 + + + + + + + + 386 + + + + + + + + 541 + + + + + + + + 543 + + + + + + + + 353 + + + + + + + + 354 + + + + + + + + + + + + 374 + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + 377 + + + + + + + + 379 + + + + + + + + 285 + + + + + + EditPrograms + + + 286 + + + + + + + + + + + 423 + + + + + + + DockMenu + + + 524 + + + + + 526 + + + + + + + + 527 + + + + + + + + + 532 + + + + + 533 + + + + + 100363 + + + + + 100364 + + + + + 100365 + + + + + 100368 + + + + + 100369 + + + + + 100370 + + + + + 100382 + + + + + + + + 100385 + + + + + 100386 + + + + + 100541 + + + + + 100543 + + + + + 100374 + + + + + 100375 + + + + + 100376 + + + + + 100377 + + + + + 100379 + + + + + 380 + + + + + + + + + + + 435 + + + + + 384 + + + + + 383 + + + + + 381 + + + + + 295 + + + + + + + + + + + 300295 + + + + + 200295 + + + + + 100295 + + + + + 296 + + + + + + + + + + 535 + + + + + + + + 575 + + + + + 298 + + + + + + + + 573 + + + + + 297 + + + + + + + + 574 + + + + + 310 + + + + + + + + 100310 + + + + + 292 + + + + + + + + 100292 + + + + + 293 + + + + + + + + 100293 + + + + + 300337 + + + + + + + + 300338 + + + + + + + + + + + + + 300358 + + + + + + + + 300359 + + + + + + + + 300360 + + + + + 300361 + + + + + 300362 + + + + + + + + 300363 + + + + + 300364 + + + + + + + + 300365 + + + + + 300368 + + + + + + + + 300369 + + + + + 300370 + + + + + + + + 300371 + + + + + 300421 + + + + + + + + 300422 + + + + + + + + + + + + + + + 300423 + + + + + + + + 300424 + + + + + + + + 300440 + + + + + 300441 + + + + + 300447 + + + + + + + + 300450 + + + + + 300451 + + + + + + + + 300452 + + + + + 300453 + + + + + + + + 300454 + + + + + 300455 + + + + + + + + 300456 + + + + + 300457 + + + + + + + + 300458 + + + + + 300459 + + + + + + + + 300460 + + + + + 300472 + + + + + + + + 300473 + + + + + 300476 + + + + + + + + 300477 + + + + + + + + 300478 + + + + + 300479 + + + + + 300482 + + + + + + + + 300483 + + + + + 300487 + + + + + + + + 300488 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{168, 821}, {113, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{202, 626}, {154, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{349, 868}, {315, 143}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{271, 666}, {301, 153}} + {{232, 184}, {625, 341}} + com.apple.InterfaceBuilder.CocoaPlugin + {{232, 184}, {625, 341}} + + {{184, 290}, {481, 345}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {320, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + {{58, 803}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{100, 746}, {155, 33}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{68, 585}, {454, 271}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{68, 585}, {454, 271}} + + {{433, 406}, {486, 327}} + IBBuiltInLabel-Red + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {450, 240} + com.apple.InterfaceBuilder.CocoaPlugin + + {{772, 836}, {344, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{67, 819}, {336, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBmAAAwvAAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBUAAAw6aAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCEAAAw2sAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCgAAAw4EAAA + + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + IBBuiltInLabel-Red + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{20, 641}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{79, 616}, {218, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 300490 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + + 3 + + {9, 8} + {7, 2} + {15, 15} + + + --- xorg-server-1.11.4.orig/hw/xquartz/GL/glcontextmodes.h +++ xorg-server-1.11.4/hw/xquartz/GL/glcontextmodes.h @@ -0,0 +1,54 @@ +/* + * (C) Copyright IBM Corporation 2003 + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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. + */ + +/** + * \file glcontextmodes.h + * \author Ian Romanick + */ + +#ifndef GLCONTEXTMODES_H +#define GLCONTEXTMODES_H + +#include "GL/internal/glcore.h" + +#if !defined(IN_MINI_GLX) +extern GLint _gl_convert_from_x_visual_type( int visualType ); +extern GLint _gl_convert_to_x_visual_type( int visualType ); +extern void _gl_copy_visual_to_context_mode( __GLcontextModes * mode, + const __GLXvisualConfig * config ); +extern int _gl_get_context_mode_data( const __GLcontextModes *mode, + int attribute, int *value_return ); +#endif /* !defined(IN_MINI_GLX) */ + +extern __GLcontextModes * _gl_context_modes_create( unsigned count, + size_t minimum_size ); +extern void _gl_context_modes_destroy( __GLcontextModes * modes ); +extern __GLcontextModes * + _gl_context_modes_find_visual(__GLcontextModes *modes, int vid); +extern __GLcontextModes * + _gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid); +extern GLboolean _gl_context_modes_are_same( const __GLcontextModes * a, + const __GLcontextModes * b ); + +#endif /* GLCONTEXTMODES_H */ --- xorg-server-1.11.4.orig/hw/xquartz/GL/glcontextmodes.c +++ xorg-server-1.11.4/hw/xquartz/GL/glcontextmodes.c @@ -0,0 +1,550 @@ +/* + * (C) Copyright IBM Corporation 2003 + * 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 + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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. + */ + +/** + * \file glcontextmodes.c + * Utility routines for working with \c __GLcontextModes structures. At + * some point most or all of these functions will be moved to the Mesa + * code base. + * + * \author Ian Romanick + */ + +#if defined(IN_MINI_GLX) +#include +#else +#if defined(HAVE_DIX_CONFIG_H) +# include +#endif +#include +#include +#include "GL/glxint.h" +#endif + +/* Memory macros */ +#if defined(IN_MINI_GLX) +# include +# include +# define _mesa_malloc(b) malloc(b) +# define _mesa_free(m) free(m) +# define _mesa_memset memset +#else +# ifdef XFree86Server +# include +# include +# define _mesa_malloc(b) malloc(b) +# define _mesa_free(m) free(m) +# define _mesa_memset memset +# else +# include +# define _mesa_memset memset +# define _mesa_malloc(b) Xmalloc(b) +# define _mesa_free(m) free(m) +# endif /* XFree86Server */ +#endif /* !defined(IN_MINI_GLX) */ + +#include "glcontextmodes.h" + +#if !defined(IN_MINI_GLX) +#define NUM_VISUAL_TYPES 6 + +/** + * Convert an X visual type to a GLX visual type. + * + * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.) + * to be converted. + * \return If \c visualType is a valid X visual type, a GLX visual type will + * be returned. Otherwise \c GLX_NONE will be returned. + */ +GLint +_gl_convert_from_x_visual_type( int visualType ) +{ + static const int glx_visual_types[ NUM_VISUAL_TYPES ] = { + GLX_STATIC_GRAY, GLX_GRAY_SCALE, + GLX_STATIC_COLOR, GLX_PSEUDO_COLOR, + GLX_TRUE_COLOR, GLX_DIRECT_COLOR + }; + + return ( (unsigned) visualType < NUM_VISUAL_TYPES ) + ? glx_visual_types[ visualType ] : GLX_NONE; +} + + +/** + * Convert a GLX visual type to an X visual type. + * + * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR, + * \c GLX_STATIC_GRAY, etc.) to be converted. + * \return If \c visualType is a valid GLX visual type, an X visual type will + * be returned. Otherwise -1 will be returned. + */ +GLint +_gl_convert_to_x_visual_type( int visualType ) +{ + static const int x_visual_types[ NUM_VISUAL_TYPES ] = { + TrueColor, DirectColor, + PseudoColor, StaticColor, + GrayScale, StaticGray + }; + + return ( (unsigned) (visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES ) + ? x_visual_types[ visualType - GLX_TRUE_COLOR ] : -1; +} + + +/** + * Copy a GLX visual config structure to a GL context mode structure. All + * of the fields in \c config are copied to \c mode. Additional fields in + * \c mode that can be derrived from the fields of \c config (i.e., + * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode + * that cannot be derived are set to default values. + * + * \param mode Destination GL context mode. + * \param config Source GLX visual config. + * + * \note + * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes + * structure will be set to the \c vid of the \c __GLXvisualConfig structure. + */ +void +_gl_copy_visual_to_context_mode( __GLcontextModes * mode, + const __GLXvisualConfig * config ) +{ + __GLcontextModes * const next = mode->next; + + (void) _mesa_memset( mode, 0, sizeof( __GLcontextModes ) ); + mode->next = next; + + mode->visualID = config->vid; + mode->visualType = _gl_convert_from_x_visual_type( config->class ); + mode->xRenderable = GL_TRUE; + mode->fbconfigID = config->vid; + mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT; + + mode->rgbMode = (config->rgba != 0); + mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT; + + mode->colorIndexMode = !(mode->rgbMode); + mode->doubleBufferMode = (config->doubleBuffer != 0); + mode->stereoMode = (config->stereo != 0); + + mode->haveAccumBuffer = ((config->accumRedSize + + config->accumGreenSize + + config->accumBlueSize + + config->accumAlphaSize) > 0); + mode->haveDepthBuffer = (config->depthSize > 0); + mode->haveStencilBuffer = (config->stencilSize > 0); + + mode->redBits = config->redSize; + mode->greenBits = config->greenSize; + mode->blueBits = config->blueSize; + mode->alphaBits = config->alphaSize; + mode->redMask = config->redMask; + mode->greenMask = config->greenMask; + mode->blueMask = config->blueMask; + mode->alphaMask = config->alphaMask; + mode->rgbBits = mode->rgbMode ? config->bufferSize : 0; + mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0; + + mode->accumRedBits = config->accumRedSize; + mode->accumGreenBits = config->accumGreenSize; + mode->accumBlueBits = config->accumBlueSize; + mode->accumAlphaBits = config->accumAlphaSize; + mode->depthBits = config->depthSize; + mode->stencilBits = config->stencilSize; + + mode->numAuxBuffers = config->auxBuffers; + mode->level = config->level; + + mode->visualRating = config->visualRating; + mode->transparentPixel = config->transparentPixel; + mode->transparentRed = config->transparentRed; + mode->transparentGreen = config->transparentGreen; + mode->transparentBlue = config->transparentBlue; + mode->transparentAlpha = config->transparentAlpha; + mode->transparentIndex = config->transparentIndex; + mode->samples = config->multiSampleSize; + mode->sampleBuffers = config->nMultiSampleBuffers; + /* mode->visualSelectGroup = config->visualSelectGroup; ? */ + + mode->swapMethod = GLX_SWAP_UNDEFINED_OML; + + mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE; + mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ? + GL_TRUE : GL_FALSE; + mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE; + mode->bindToTextureTargets = mode->rgbMode ? + GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT | + GLX_TEXTURE_RECTANGLE_BIT_EXT : 0; + mode->yInverted = GL_FALSE; +} + + +/** + * Get data from a GL context mode. + * + * \param mode GL context mode whose data is to be returned. + * \param attribute Attribute of \c mode that is to be returned. + * \param value_return Location to store the data member of \c mode. + * \return If \c attribute is a valid attribute of \c mode, zero is + * returned. Otherwise \c GLX_BAD_ATTRIBUTE is returned. + */ +int +_gl_get_context_mode_data(const __GLcontextModes *mode, int attribute, + int *value_return) +{ + switch (attribute) { + case GLX_USE_GL: + *value_return = GL_TRUE; + return 0; + case GLX_BUFFER_SIZE: + *value_return = mode->rgbBits; + return 0; + case GLX_RGBA: + *value_return = mode->rgbMode; + return 0; + case GLX_RED_SIZE: + *value_return = mode->redBits; + return 0; + case GLX_GREEN_SIZE: + *value_return = mode->greenBits; + return 0; + case GLX_BLUE_SIZE: + *value_return = mode->blueBits; + return 0; + case GLX_ALPHA_SIZE: + *value_return = mode->alphaBits; + return 0; + case GLX_DOUBLEBUFFER: + *value_return = mode->doubleBufferMode; + return 0; + case GLX_STEREO: + *value_return = mode->stereoMode; + return 0; + case GLX_AUX_BUFFERS: + *value_return = mode->numAuxBuffers; + return 0; + case GLX_DEPTH_SIZE: + *value_return = mode->depthBits; + return 0; + case GLX_STENCIL_SIZE: + *value_return = mode->stencilBits; + return 0; + case GLX_ACCUM_RED_SIZE: + *value_return = mode->accumRedBits; + return 0; + case GLX_ACCUM_GREEN_SIZE: + *value_return = mode->accumGreenBits; + return 0; + case GLX_ACCUM_BLUE_SIZE: + *value_return = mode->accumBlueBits; + return 0; + case GLX_ACCUM_ALPHA_SIZE: + *value_return = mode->accumAlphaBits; + return 0; + case GLX_LEVEL: + *value_return = mode->level; + return 0; + case GLX_TRANSPARENT_TYPE_EXT: + *value_return = mode->transparentPixel; + return 0; + case GLX_TRANSPARENT_RED_VALUE: + *value_return = mode->transparentRed; + return 0; + case GLX_TRANSPARENT_GREEN_VALUE: + *value_return = mode->transparentGreen; + return 0; + case GLX_TRANSPARENT_BLUE_VALUE: + *value_return = mode->transparentBlue; + return 0; + case GLX_TRANSPARENT_ALPHA_VALUE: + *value_return = mode->transparentAlpha; + return 0; + case GLX_TRANSPARENT_INDEX_VALUE: + *value_return = mode->transparentIndex; + return 0; + case GLX_X_VISUAL_TYPE: + *value_return = mode->visualType; + return 0; + case GLX_CONFIG_CAVEAT: + *value_return = mode->visualRating; + return 0; + case GLX_VISUAL_ID: + *value_return = mode->visualID; + return 0; + case GLX_DRAWABLE_TYPE: + *value_return = mode->drawableType; + return 0; + case GLX_RENDER_TYPE: + *value_return = mode->renderType; + return 0; + case GLX_X_RENDERABLE: + *value_return = mode->xRenderable; + return 0; + case GLX_FBCONFIG_ID: + *value_return = mode->fbconfigID; + return 0; + case GLX_MAX_PBUFFER_WIDTH: + *value_return = mode->maxPbufferWidth; + return 0; + case GLX_MAX_PBUFFER_HEIGHT: + *value_return = mode->maxPbufferHeight; + return 0; + case GLX_MAX_PBUFFER_PIXELS: + *value_return = mode->maxPbufferPixels; + return 0; + case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX: + *value_return = mode->optimalPbufferWidth; + return 0; + case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX: + *value_return = mode->optimalPbufferHeight; + return 0; + case GLX_SWAP_METHOD_OML: + *value_return = mode->swapMethod; + return 0; + case GLX_SAMPLE_BUFFERS_SGIS: + *value_return = mode->sampleBuffers; + return 0; + case GLX_SAMPLES_SGIS: + *value_return = mode->samples; + return 0; + case GLX_BIND_TO_TEXTURE_RGB_EXT: + *value_return = mode->bindToTextureRgb; + return 0; + case GLX_BIND_TO_TEXTURE_RGBA_EXT: + *value_return = mode->bindToTextureRgba; + return 0; + case GLX_BIND_TO_MIPMAP_TEXTURE_EXT: + *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE : + GL_FALSE; + return 0; + case GLX_BIND_TO_TEXTURE_TARGETS_EXT: + *value_return = mode->bindToTextureTargets; + return 0; + case GLX_Y_INVERTED_EXT: + *value_return = mode->yInverted; + return 0; + + /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX. + * It is ONLY for communication between the GLX client and the GLX + * server. + */ + case GLX_VISUAL_SELECT_GROUP_SGIX: + default: + return GLX_BAD_ATTRIBUTE; + } +} +#endif /* !defined(IN_MINI_GLX) */ + + +/** + * Allocate a linked list of \c __GLcontextModes structures. The fields of + * each structure will be initialized to "reasonable" default values. In + * most cases this is the default value defined by table 3.4 of the GLX + * 1.3 specification. This means that most values are either initialized to + * zero or \c GLX_DONT_CARE (which is -1). As support for additional + * extensions is added, the new values will be initialized to appropriate + * values from the extension specification. + * + * \param count Number of structures to allocate. + * \param minimum_size Minimum size of a structure to allocate. This allows + * for differences in the version of the + * \c __GLcontextModes stucture used in libGL and in a + * DRI-based driver. + * \returns A pointer to the first element in a linked list of \c count + * stuctures on success, or \c NULL on failure. + * + * \warning Use of \c minimum_size does \b not guarantee binary compatibility. + * The fundamental assumption is that if the \c minimum_size + * specified by the driver and the size of the \c __GLcontextModes + * structure in libGL is the same, then the meaning of each byte in + * the structure is the same in both places. \b Be \b careful! + * Basically this means that fields have to be added in libGL and + * then propagated to drivers. Drivers should \b never arbitrarilly + * extend the \c __GLcontextModes data-structure. + */ +__GLcontextModes * +_gl_context_modes_create( unsigned count, size_t minimum_size ) +{ + const size_t size = (minimum_size > sizeof( __GLcontextModes )) + ? minimum_size : sizeof( __GLcontextModes ); + __GLcontextModes * base = NULL; + __GLcontextModes ** next; + unsigned i; + + next = & base; + for ( i = 0 ; i < count ; i++ ) { + *next = (__GLcontextModes *) _mesa_malloc( size ); + if ( *next == NULL ) { + _gl_context_modes_destroy( base ); + base = NULL; + break; + } + + (void) _mesa_memset( *next, 0, size ); + (*next)->visualID = GLX_DONT_CARE; + (*next)->visualType = GLX_DONT_CARE; + (*next)->visualRating = GLX_NONE; + (*next)->transparentPixel = GLX_NONE; + (*next)->transparentRed = GLX_DONT_CARE; + (*next)->transparentGreen = GLX_DONT_CARE; + (*next)->transparentBlue = GLX_DONT_CARE; + (*next)->transparentAlpha = GLX_DONT_CARE; + (*next)->transparentIndex = GLX_DONT_CARE; + (*next)->xRenderable = GLX_DONT_CARE; + (*next)->fbconfigID = GLX_DONT_CARE; + (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML; + (*next)->bindToTextureRgb = GLX_DONT_CARE; + (*next)->bindToTextureRgba = GLX_DONT_CARE; + (*next)->bindToMipmapTexture = GLX_DONT_CARE; + (*next)->bindToTextureTargets = GLX_DONT_CARE; + (*next)->yInverted = GLX_DONT_CARE; + + next = & ((*next)->next); + } + + return base; +} + + +/** + * Destroy a linked list of \c __GLcontextModes structures created by + * \c _gl_context_modes_create. + * + * \param modes Linked list of structures to be destroyed. All structres + * in the list will be freed. + */ +void +_gl_context_modes_destroy( __GLcontextModes * modes ) +{ + while ( modes != NULL ) { + __GLcontextModes * const next = modes->next; + + _mesa_free( modes ); + modes = next; + } +} + + +/** + * Find a context mode matching a Visual ID. + * + * \param modes List list of context-mode structures to be searched. + * \param vid Visual ID to be found. + * \returns A pointer to a context-mode in \c modes if \c vid was found in + * the list, or \c NULL if it was not. + */ + +__GLcontextModes * +_gl_context_modes_find_visual(__GLcontextModes *modes, int vid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->visualID == vid) + return m; + + return NULL; +} + +__GLcontextModes * +_gl_context_modes_find_fbconfig(__GLcontextModes *modes, int fbid) +{ + __GLcontextModes *m; + + for (m = modes; m != NULL; m = m->next) + if (m->fbconfigID == fbid) + return m; + + return NULL; +} + +/** + * Determine if two context-modes are the same. This is intended to be used + * by libGL implementations to compare to sets of driver generated FBconfigs. + * + * \param a Context-mode to be compared. + * \param b Context-mode to be compared. + * \returns \c GL_TRUE if the two context-modes are the same. \c GL_FALSE is + * returned otherwise. + */ +GLboolean +_gl_context_modes_are_same( const __GLcontextModes * a, + const __GLcontextModes * b ) +{ + return( (a->rgbMode == b->rgbMode) && + (a->floatMode == b->floatMode) && + (a->colorIndexMode == b->colorIndexMode) && + (a->doubleBufferMode == b->doubleBufferMode) && + (a->stereoMode == b->stereoMode) && + (a->redBits == b->redBits) && + (a->greenBits == b->greenBits) && + (a->blueBits == b->blueBits) && + (a->alphaBits == b->alphaBits) && +#if 0 /* For some reason these don't get set on the client-side in libGL. */ + (a->redMask == b->redMask) && + (a->greenMask == b->greenMask) && + (a->blueMask == b->blueMask) && + (a->alphaMask == b->alphaMask) && +#endif + (a->rgbBits == b->rgbBits) && + (a->indexBits == b->indexBits) && + (a->accumRedBits == b->accumRedBits) && + (a->accumGreenBits == b->accumGreenBits) && + (a->accumBlueBits == b->accumBlueBits) && + (a->accumAlphaBits == b->accumAlphaBits) && + (a->depthBits == b->depthBits) && + (a->stencilBits == b->stencilBits) && + (a->numAuxBuffers == b->numAuxBuffers) && + (a->level == b->level) && + (a->pixmapMode == b->pixmapMode) && + (a->visualRating == b->visualRating) && + + (a->transparentPixel == b->transparentPixel) && + + ((a->transparentPixel != GLX_TRANSPARENT_RGB) || + ((a->transparentRed == b->transparentRed) && + (a->transparentGreen == b->transparentGreen) && + (a->transparentBlue == b->transparentBlue) && + (a->transparentAlpha == b->transparentAlpha))) && + + ((a->transparentPixel != GLX_TRANSPARENT_INDEX) || + (a->transparentIndex == b->transparentIndex)) && + + (a->sampleBuffers == b->sampleBuffers) && + (a->samples == b->samples) && + ((a->drawableType & b->drawableType) != 0) && + (a->renderType == b->renderType) && + (a->maxPbufferWidth == b->maxPbufferWidth) && + (a->maxPbufferHeight == b->maxPbufferHeight) && + (a->maxPbufferPixels == b->maxPbufferPixels) && + (a->optimalPbufferWidth == b->optimalPbufferWidth) && + (a->optimalPbufferHeight == b->optimalPbufferHeight) && + (a->swapMethod == b->swapMethod) && + (a->bindToTextureRgb == b->bindToTextureRgb) && + (a->bindToTextureRgba == b->bindToTextureRgba) && + (a->bindToMipmapTexture == b->bindToMipmapTexture) && + (a->bindToTextureTargets == b->bindToTextureTargets) && + (a->yInverted == b->yInverted) ); +} --- xorg-server-1.11.4.orig/hw/xwin/XWin.exe.manifest +++ xorg-server-1.11.4/hw/xwin/XWin.exe.manifest @@ -0,0 +1,16 @@ + + + The XWin X Windows server for Cygwin. + + + + + + --- xorg-server-1.11.4.orig/hw/xwin/winglobals.h +++ xorg-server-1.11.4/hw/xwin/winglobals.h @@ -0,0 +1,88 @@ +/* + File: winglobals.h + Purpose: declarations for global variables + + 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 WINGLOBALS_H +#define WINGLOBALS_H + +/* + * References to external symbols + */ + +extern int g_iNumScreens; +extern int g_iLastScreen; +extern char * g_pszCommandLine; +extern Bool g_fSilentFatalError; +extern const char * g_pszLogFile; +#ifdef RELOCATE_PROJECTROOT +extern Bool g_fLogFileChanged; +#endif +extern int g_iLogVerbose; +extern Bool g_fLogInited; + +extern Bool g_fAuthEnabled; +extern Bool g_fXdmcpEnabled; + +extern Bool g_fNoHelpMessageBox; +extern Bool g_fSilentDupError; +extern Bool g_fNativeGl; + +extern HWND g_hDlgDepthChange; +extern HWND g_hDlgExit; +extern HWND g_hDlgAbout; + +extern Bool g_fSoftwareCursor; +extern Bool g_fCursor; + +#ifdef XWIN_CLIPBOARD + +/* Typedef for DIX wrapper functions */ +typedef int (*winDispatchProcPtr) (ClientPtr); + +/* + * Wrapped DIX functions + */ +extern winDispatchProcPtr winProcEstablishConnectionOrig; +extern winDispatchProcPtr winProcQueryTreeOrig; +extern winDispatchProcPtr winProcSetSelectionOwnerOrig; +#endif + +/* The global X default icons */ +#if defined(XWIN_MULTIWINDOW) +extern HICON g_hIconX; +extern HICON g_hSmallIconX; +#endif + +#ifdef XWIN_MULTIWINDOW +extern DWORD g_dwCurrentThreadID; +#endif + +extern Bool g_fKeyboardHookLL; +extern Bool g_fButton[3]; + +#ifdef XWIN_MULTIWINDOWEXTWM +extern Bool g_fNoConfigureWindow; +#endif + +#endif /* WINGLOBALS_H */ --- xorg-server-1.11.4.orig/hw/xwin/winmonitors.h +++ xorg-server-1.11.4/hw/xwin/winmonitors.h @@ -0,0 +1,14 @@ + +/* data returned for monitor information */ +struct GetMonitorInfoData { + int requestedMonitor; + int monitorNum; + Bool bUserSpecifiedMonitor; + Bool bMonitorSpecifiedExists; + int monitorOffsetX; + int monitorOffsetY; + int monitorHeight; + int monitorWidth; +}; + +Bool QueryMonitor(int index, struct GetMonitorInfoData *data); --- xorg-server-1.11.4.orig/hw/xwin/glx/wgl_ext_api.h +++ xorg-server-1.11.4/hw/xwin/glx/wgl_ext_api.h @@ -0,0 +1,87 @@ +/* + * File: wgl_ext_api.h + * Purpose: Wrapper functions for Win32 OpenGL wgl extension functions + * + * Authors: Jon TURNEY + * + * Copyright (c) Jon TURNEY 2009 + * + * + * 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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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 wgl_ext_api_h +#define wgl_ext_api_h + +#include + +void wglResolveExtensionProcs(void); + +/* + Prototypes for wrapper functions we actually use + XXX: should be automatically generated as well +*/ + +const char *wglGetExtensionsStringARBWrapper(HDC hdc); +BOOL wglMakeContextCurrentARBWrapper(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +HDC wglGetCurrentReadDCARBWrapper(VOID); + +BOOL wglGetPixelFormatAttribivARBWrapper(HDC hdc, + int iPixelFormat, + int iLayerPlane, + UINT nAttributes, + const int *piAttributes, + int *piValues); + +BOOL wglGetPixelFormatAttribfvARBWrapper(HDC hdc, + int iPixelFormat, + int iLayerPlane, + UINT nAttributes, + const int *piAttributes, + FLOAT *pfValues); + +BOOL wglChoosePixelFormatARBWrapper(HDC hdc, + const int *piAttribIList, + const FLOAT *pfAttribFList, + UINT nMaxFormats, + int *piFormats, + UINT *nNumFormats); + +HPBUFFERARB wglCreatePbufferARBWrapper(HDC hDC, + int iPixelFormat, + int iWidth, + int iHeight, + const int *piAttribList); + +HDC wglGetPbufferDCARBWrapper(HPBUFFERARB hPbuffer); + +int wglReleasePbufferDCARBWrapper(HPBUFFERARB hPbuffer, + HDC hDC); + +BOOL wglDestroyPbufferARBWrapper(HPBUFFERARB hPbuffer); + +BOOL wglQueryPbufferARBWrapper(HPBUFFERARB hPbuffer, + int iAttribute, + int *piValue); + +BOOL wglSwapIntervalEXTWrapper(int interval); + +int wglGetSwapIntervalEXTWrapper(void); + +#endif /* wgl_ext_api_h */ --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Module.h +++ xorg-server-1.11.4/hw/xfree86/common/xf86Module.h @@ -83,7 +83,7 @@ */ #define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4) #define ABI_VIDEODRV_VERSION SET_ABI_VERSION(11, 0) -#define ABI_XINPUT_VERSION SET_ABI_VERSION(13, 0) +#define ABI_XINPUT_VERSION SET_ABI_VERSION(16, 0) #define ABI_EXTENSION_VERSION SET_ABI_VERSION(6, 0) #define ABI_FONT_VERSION SET_ABI_VERSION(0, 6) --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Init.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86Init.c @@ -806,11 +806,10 @@ return dup; } -/* - * InitInput -- - * Initialize all supported input devices. +/** + * Initialize all supported input devices present and referenced in the + * xorg.conf. */ - void InitInput(int argc, char **argv) { --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Option.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86Option.c @@ -297,7 +297,7 @@ return LookupPercentOption(optlist, name, deflt, FALSE); } /* - * addNewOption() has the required property of replacing the option value + * xf86AddNewOption() has the required property of replacing the option value * if the option is already present. */ pointer --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86DGA.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86DGA.c @@ -1016,7 +1016,7 @@ { KeyClassPtr keyc = keybd->key; DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen); - DeviceIntPtr pointer = GetPairedDevice(keybd); + DeviceIntPtr pointer = GetMaster(keybd, POINTER_OR_FLOAT); DeviceEvent ev; memset(&ev, 0, sizeof(ev)); @@ -1037,7 +1037,7 @@ if (pScreenPriv->client) { dgaEvent de; - de.u.u.type = *XDGAEventBase + GetCoreType((InternalEvent*)&ev); + de.u.u.type = *XDGAEventBase + GetCoreType(ev.type); de.u.u.detail = event->detail; de.u.event.time = event->time; de.u.event.dx = event->dx; @@ -1091,7 +1091,7 @@ dgaEvent de; int coreEquiv; - coreEquiv = GetCoreType((InternalEvent*)&ev); + coreEquiv = GetCoreType(ev.type); de.u.u.type = *XDGAEventBase + coreEquiv; de.u.u.detail = event->detail; --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86RandR.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86RandR.c @@ -313,6 +313,9 @@ return FALSE; } + + update_desktop_dimensions(); + /* * Move the cursor back where it belongs; SwitchMode repositions it * FIXME: duplicated code, see modes/xf86RandR12.c --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Xinput.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86Xinput.c @@ -266,6 +266,34 @@ } } +static void +ApplyTransformationMatrix(DeviceIntPtr dev) +{ + InputInfoPtr pInfo = (InputInfoPtr)dev->public.devicePrivate; + char *str; + int rc; + float matrix[9] = {0}; + + if (!dev->valuator) + return; + + str = xf86SetStrOption(pInfo->options, "TransformationMatrix", NULL); + if (!str) + return; + + rc = sscanf(str, "%f %f %f %f %f %f %f %f %f", &matrix[0], &matrix[1], &matrix[2], + &matrix[3], &matrix[4], &matrix[5], &matrix[6], &matrix[7], &matrix[8]); + if (rc != 9) { + xf86Msg(X_ERROR, "%s: invalid format for transformation matrix. Ignoring configuration.\n", + pInfo->name); + return; + } + + XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM), + XIGetKnownProperty(XATOM_FLOAT), 32, + PropModeReplace, 9, matrix, FALSE); +} + /*********************************************************************** * * xf86ProcessCommonOptions -- @@ -746,7 +774,7 @@ } /* - * Apply backend-specific initialization. Invoked after ActiveteDevice(), + * Apply backend-specific initialization. Invoked after ActivateDevice(), * i.e. after the driver successfully completed DEVICE_INIT and the device * is advertised. * @param dev the device @@ -755,6 +783,7 @@ static int xf86InputDevicePostInit(DeviceIntPtr dev) { ApplyAccelerationSettings(dev); + ApplyTransformationMatrix(dev); return Success; } @@ -1244,7 +1273,7 @@ DeviceIntPtr pointer; /* Some pointers send key events, paired device is wrong then. */ - pointer = IsPointerDevice(device) ? device : GetPairedDevice(device); + pointer = GetMaster(device, POINTER_OR_FLOAT); if (miPointerGetScreen(pointer)) { int index = miPointerGetScreen(pointer)->myNum; @@ -1318,38 +1347,19 @@ return X; } -/* - * This function checks the given screen against the current screen and - * makes changes if appropriate. It should be called from an XInput driver's - * ReadInput function before any events are posted, if the device is screen - * specific like a touch screen. - */ -void -xf86XInputSetScreen(InputInfoPtr pInfo, - int screen_number, - int x, - int y) -{ - if (miPointerGetScreen(pInfo->dev) != - screenInfo.screens[screen_number]) { - miPointerSetScreen(pInfo->dev, screen_number, x, y); - } -} - - -void +Bool xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval, int resolution, int min_res, int max_res, int mode) { if (!dev || !dev->valuator) - return; + return FALSE; - InitValuatorAxisStruct(dev, axnum, label, minval, maxval, resolution, min_res, - max_res, mode); + return InitValuatorAxisStruct(dev, axnum, label, minval, maxval, resolution, min_res, + max_res, mode); } /* - * Set the valuator values to be in synch with dix/event.c + * Set the valuator values to be in sync with dix/event.c * DefineInitialRootWindow(). */ void @@ -1399,4 +1409,28 @@ EnableDevice(dev, TRUE); } +/** + * Post a touch event with optional valuators. If this is the first touch in + * the sequence, at least x & y valuators must be provided. The driver is + * responsible for maintaining the correct event sequence (TouchBegin, TouchUpdate, + * TouchEnd). Submitting an update or end event for a unregistered touchid will + * result in errors. + * Touch IDs may be reused by the driver but only after a TouchEnd has been + * submitted for that touch ID. + * + * @param dev The device to post the event for + * @param touchid The touchid of the current touch event. Must be an + * existing ID for TouchUpdate or TouchEnd events + * @param type One of XI_TouchBegin, XI_TouchUpdate, XI_TouchEnd + * @param flags Flags for this event + * @param The valuator mask with all valuators set for this event. + */ +void +xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid, uint16_t type, + uint32_t flags, const ValuatorMask *mask) +{ + + QueueTouchEvents(dev, type, touchid, flags, mask); +} + /* end of xf86Xinput.c */ --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Cursor.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86Cursor.c @@ -838,6 +838,8 @@ FillOutEdge(pLayout->down, pScreen->width); } } + + update_desktop_dimensions(); } void --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Xinput.h +++ xorg-server-1.11.4/hw/xfree86/common/xf86Xinput.h @@ -141,11 +141,13 @@ const int *valuators); extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code, int is_down); +extern _X_EXPORT void xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid, + uint16_t type, uint32_t flags, + const ValuatorMask *mask); extern _X_EXPORT InputInfoPtr xf86FirstLocalDevice(void); extern _X_EXPORT int xf86ScaleAxis(int Cx, int to_max, int to_min, int from_max, int from_min); -extern _X_EXPORT void xf86XInputSetScreen(InputInfoPtr pInfo, int screen_number, int x, int y); extern _X_EXPORT void xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer options); -extern _X_EXPORT void xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, +extern _X_EXPORT Bool xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval, int resolution, int min_res, int max_res, int mode); extern _X_EXPORT void xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum); --- xorg-server-1.11.4.orig/hw/xfree86/common/xf86Config.c +++ xorg-server-1.11.4/hw/xfree86/common/xf86Config.c @@ -1068,6 +1068,45 @@ return xf86Info.dri2; } +/** + * Search for the pInfo in the null-terminated list given and remove (and + * free) it if present. All other devices are moved forward. + */ +static void +freeDevice(InputInfoPtr *list, InputInfoPtr pInfo) +{ + InputInfoPtr *devs; + + for (devs = list; devs && *devs; devs++) { + if (*devs == pInfo) { + free(*devs); + for (; devs && *devs; devs++) + devs[0] = devs[1]; + break; + } + } +} + +/** + * Append pInfo to the null-terminated list, allocating space as necessary. + * pInfo is used as the last element. + */ +static InputInfoPtr* +addDevice(InputInfoPtr *list, InputInfoPtr pInfo) +{ + InputInfoPtr *devs; + int count = 1; + + for (devs = list; devs && *devs; devs++) + count++; + + list = xnfrealloc(list, (count + 1) * sizeof(InputInfoPtr)); + list[count] = NULL; + + list[count - 1] = pInfo; + return list; +} + /* * Locate the core input devices. These can be specified/located in * the following ways, in order of priority: @@ -1091,12 +1130,10 @@ const char *pointerMsg = NULL, *keyboardMsg = NULL; InputInfoPtr *devs, /* iterator */ indp; - InputInfoRec Pointer = {}, Keyboard = {}; + InputInfoPtr Pointer, Keyboard; XF86ConfInputPtr confInput; XF86ConfInputRec defPtr, defKbd; - int count = 0; MessageType from = X_DEFAULT; - int found = 0; const char *mousedrivers[] = { "mouse", "synaptics", "evdev", "vmmouse", "void", NULL }; @@ -1111,25 +1148,14 @@ xf86CheckBoolOption(indp->options, "CorePointer", FALSE)) { if (!corePointer) { corePointer = indp; - } else { - xf86ReplaceBoolOption(indp->options, "CorePointer", FALSE); - xf86Msg(X_WARNING, "Duplicate core pointer devices. " - "Removing core pointer attribute from \"%s\"\n", - indp->name); } } if (indp->options && xf86CheckBoolOption(indp->options, "CoreKeyboard", FALSE)) { if (!coreKeyboard) { coreKeyboard = indp; - } else { - xf86ReplaceBoolOption(indp->options, "CoreKeyboard", FALSE); - xf86Msg(X_WARNING, "Duplicate core keyboard devices. " - "Removing core keyboard attribute from \"%s\"\n", - indp->name); } } - count++; } confInput = NULL; @@ -1149,18 +1175,9 @@ * removed. */ if (corePointer) { - for (devs = servlayoutp->inputs; devs && *devs; devs++) - if (*devs == corePointer) - { - free(*devs); - *devs = (InputInfoPtr)0x1; /* ensure we dont skip next loop*/ - break; - } - for (; devs && *devs; devs++) - devs[0] = devs[1]; - count--; + freeDevice(servlayoutp->inputs, corePointer); + corePointer = NULL; } - corePointer = NULL; foundPointer = TRUE; } @@ -1216,67 +1233,23 @@ /* Add the core pointer device to the layout, and set it to Core. */ if (foundPointer && confInput) { - foundPointer = configInput(&Pointer, confInput, from); - if (foundPointer) { - count++; - devs = xnfrealloc(servlayoutp->inputs, - (count + 1) * sizeof(InputInfoPtr)); - devs[count - 1] = xnfalloc(sizeof(InputInfoRec)); - Pointer.fd = -1; - *devs[count - 1] = Pointer; - devs[count - 1]->options = - xf86addNewOption(devs[count -1]->options, - xnfstrdup("CorePointer"), NULL); - devs[count] = NULL; - servlayoutp->inputs = devs; + Pointer = xf86AllocateInput(); + if (Pointer) + foundPointer = configInput(Pointer, confInput, from); + if (foundPointer) { + Pointer->options = xf86AddNewOption(Pointer->options, + "CorePointer", "on"); + servlayoutp->inputs = addDevice(servlayoutp->inputs, Pointer); } } if (!foundPointer && xf86Info.forceInputDevices) { /* This shouldn't happen. */ xf86Msg(X_ERROR, "Cannot locate a core pointer device.\n"); + xf86DeleteInput(Pointer, 0); return FALSE; } - /* - * always synthesize a 'mouse' section configured to send core - * events, unless a 'void' section is found, in which case the user - * probably wants to run footless. - * - * If you're using an evdev keyboard and expect a default mouse - * section ... deal. - */ - for (devs = servlayoutp->inputs; devs && *devs; devs++) { - const char **driver = mousedrivers; - while(*driver) { - if (!strcmp((*devs)->driver, *driver)) { - found = 1; - break; - } - driver++; - } - } - if (!found && xf86Info.forceInputDevices) { - xf86Msg(X_INFO, "No default mouse found, adding one\n"); - memset(&defPtr, 0, sizeof(defPtr)); - defPtr.inp_identifier = strdup(""); - defPtr.inp_driver = strdup("mouse"); - confInput = &defPtr; - foundPointer = configInput(&Pointer, confInput, from); - if (foundPointer) { - count++; - devs = xnfrealloc(servlayoutp->inputs, - (count + 1) * sizeof(InputInfoPtr)); - devs[count - 1] = xnfalloc(sizeof(InputInfoRec)); - Pointer.fd = -1; - *devs[count - 1] = Pointer; - devs[count - 1]->options = - xf86addNewOption(NULL, xnfstrdup("AlwaysCore"), NULL); - devs[count] = NULL; - servlayoutp->inputs = devs; - } - } - confInput = NULL; /* 1. Check for the -keyboard command line option. */ @@ -1294,18 +1267,9 @@ * removed. */ if (coreKeyboard) { - for (devs = servlayoutp->inputs; devs && *devs; devs++) - if (*devs == coreKeyboard) - { - free(*devs); - *devs = (InputInfoPtr)0x1; /* ensure we dont skip next loop */ - break; - } - for (; devs && *devs; devs++) - devs[0] = devs[1]; - count--; + freeDevice(servlayoutp->inputs, coreKeyboard); + coreKeyboard = NULL; } - coreKeyboard = NULL; foundKeyboard = TRUE; } @@ -1359,25 +1323,20 @@ /* Add the core keyboard device to the layout, and set it to Core. */ if (foundKeyboard && confInput) { - foundKeyboard = configInput(&Keyboard, confInput, from); - if (foundKeyboard) { - count++; - devs = xnfrealloc(servlayoutp->inputs, - (count + 1) * sizeof(InputInfoPtr)); - devs[count - 1] = xnfalloc(sizeof(InputInfoRec)); - Keyboard.fd = -1; - *devs[count - 1] = Keyboard; - devs[count - 1]->options = - xf86addNewOption(devs[count - 1]->options, - xnfstrdup("CoreKeyboard"), NULL); - devs[count] = NULL; - servlayoutp->inputs = devs; + Keyboard = xf86AllocateInput(); + if (Keyboard) + foundKeyboard = configInput(Keyboard, confInput, from); + if (foundKeyboard) { + Keyboard->options = xf86AddNewOption(Keyboard->options, + "CoreKeyboard", "on"); + servlayoutp->inputs = addDevice(servlayoutp->inputs, Keyboard); } } if (!foundKeyboard && xf86Info.forceInputDevices) { /* This shouldn't happen. */ xf86Msg(X_ERROR, "Cannot locate a core keyboard device.\n"); + xf86DeleteInput(Keyboard, 0); return FALSE; } --- xorg-server-1.11.4.orig/hw/xfree86/xaa/xaalocal.h +++ xorg-server-1.11.4/hw/xfree86/xaa/xaalocal.h @@ -2,6 +2,10 @@ #ifndef _XAALOCAL_H #define _XAALOCAL_H +#ifdef HAVE_XORG_CONFIG_H +#include +#endif + /* This file is very unorganized ! */ --- xorg-server-1.11.4.orig/hw/xfree86/doc/ddxDesign.xml +++ xorg-server-1.11.4/hw/xfree86/doc/ddxDesign.xml @@ -189,7 +189,7 @@ Keyboard &k.identifier; "Implicit Core Keyboard" - &k.driver; "keyboard" + &k.driver; "kbd" Pointer @@ -206,7 +206,7 @@ is no &k.serverlayout; section, if the command line options is used, or if the &k.serverlayout; section doesn't reference any &k.inputdevice; sections. In this case, the first - sections with drivers "keyboard" and "mouse" are used as the core + sections with drivers "kbd" and "mouse" are used as the core keyboard and pointer respectively. --- xorg-server-1.11.4.orig/hw/xfree86/man/xorg.conf.man +++ xorg-server-1.11.4/hw/xfree86/man/xorg.conf.man @@ -948,7 +948,18 @@ This option controls the startup behavior only, a device may be reattached or set floating at runtime. -.PP +.TP 7 +.BI "Option \*qTransformationMatrix\*q \*q" a " " b " " c " " d " " e " " f " " g " " h " " i \*q +Specifies the 3x3 transformation matrix for absolute input devices. The +input device will be bound to the area given in the matrix. In most +configurations, "a" and "e" specify the width and height of the area the +device is bound to, and "c" and "f" specify the x and y offset of the area. +The value range is 0 to 1, where 1 represents the width or height of all +root windows together, 0.5 represents half the area, etc. The values +represent a 3x3 matrix, with the first, second and third group of three +values representing the first, second and third row of the matrix, +respectively. The identity matrix is "1 0 0 0 1 0 0 0 1". +.SS POINTER ACCELERATION For pointing devices, the following options control how the pointer is accelerated or decelerated with respect to physical device motion. Most of these can be adjusted at runtime, see the xinput(1) man page for details. Only @@ -1438,7 +1449,7 @@ section with an output by adding an option to the Device section in the following format: -.B Option \*qMonitor-outputname\*q \*qmonitorsection\*q +.BI "Option \*qMonitor-" outputname "\*q \*q" monitorsection \*q (for example, .B Option \*qMonitor-VGA\*q \*qVGA monitor\*q @@ -1454,7 +1465,7 @@ When modes are specified explicitly in the .B Monitor section (with the -.BR Modes , +.BR Mode , .BR ModeLine , or .B UseModes @@ -1603,7 +1614,7 @@ This entry is a more compact version of the .B Mode entry, and it also can be used to specify video modes for the monitor. -is a single line format for specifying video modes. +This is a single line format for specifying video modes. In most cases this isn't necessary because the built\-in set of VESA standard modes will be sufficient. .PP @@ -1658,61 +1669,61 @@ and .B VScan options mentioned above in the -.B Modes +.B Mode entry description can also be used here. .RE .TP 7 -.BI "Option " "\*qDPMS\*q " \*qbool\*q +.BI "Option \*qDPMS\*q \*q" bool \*q This option controls whether the server should enable the DPMS extension for power management for this screen. The default is to enable the extension. .TP 7 -.BI "Option " "\*qSyncOnGreen\*q " \*qbool\*q +.BI "Option \*qSyncOnGreen\*q \*q" bool \*q This option controls whether the video card should drive the sync signal on the green color pin. Not all cards support this option, and most monitors do not require it. The default is off. .TP 7 -.BI "Option " "\*qPrimary\*q " \*qbool\*q +.BI "Option \*qPrimary\*q \*q" bool \*q This optional entry specifies that the monitor should be treated as the primary monitor. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qPreferredMode\*q " \*qstring\*q +.BI "Option \*qPreferredMode\*q \*q" name \*q This optional entry specifies a mode to be marked as the preferred initial mode of the monitor. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qPosition\*q " "\*qx y\*q" +.BI "Option \*qPosition\*q \*q" x " " y \*q This optional entry specifies the position of the monitor within the X screen. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qLeftOf\*q " \*qoutput\*q +.BI "Option \*qLeftOf\*q \*q" output \*q This optional entry specifies that the monitor should be positioned to the left of the output (not monitor) of the given name. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qRightOf\*q " \*qoutput\*q +.BI "Option \*qRightOf\*q \*q" output \*q This optional entry specifies that the monitor should be positioned to the right of the output (not monitor) of the given name. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qAbove\*q " \*qoutput\*q +.BI "Option \*qAbove\*q \*q" output \*q This optional entry specifies that the monitor should be positioned above the output (not monitor) of the given name. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qBelow\*q " \*qoutput\*q +.BI "Option \*qBelow\*q \*q" output \*q This optional entry specifies that the monitor should be positioned below the output (not monitor) of the given name. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qEnable\*q " \*qbool\*q +.BI "Option \*qEnable\*q \*q" bool \*q This optional entry specifies whether the monitor should be turned on at startup. By default, the server will attempt to enable all connected monitors. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qDefaultModes\*q " \*qbool\*q +.BI "Option \*qDefaultModes\*q \*q" bool \*q This optional entry specifies whether the server should add supported default modes to the list of modes offered on this monitor. By default, the server will add default modes; you should only disable this if you can guarantee @@ -1720,21 +1731,21 @@ which the server can use. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qMinClock\*q " \*qfrequency\*q +.BI "Option \*qMinClock\*q \*q" frequency \*q This optional entry specifies the minimum dot clock, in kHz, that is supported by the monitor. .TP 7 -.BI "Option " "\*qMaxClock\*q " \*qfrequency\*q +.BI "Option \*qMaxClock\*q \*q" frequency \*q This optional entry specifies the maximum dot clock, in kHz, that is supported by the monitor. .TP 7 -.BI "Option " "\*qIgnore\*q " \*qbool\*q +.BI "Option \*qIgnore\*q \*q" bool \*q This optional entry specifies that the monitor should be ignored entirely, and not reported through RandR. This is useful if the hardware reports the presence of outputs that don't exist. (RandR 1.2-supporting drivers only) .TP 7 -.BI "Option " "\*qRotate\*q " \*qrotation\*q +.BI "Option \*qRotate\*q \*q" rotation \*q This optional entry specifies the initial rotation of the given monitor. Valid values for rotation are \*qnormal\*q, \*qleft\*q, \*qright\*q, and \*qinverted\*q. --- xorg-server-1.11.4.orig/hw/xfree86/modes/xf86RandR12.c +++ xorg-server-1.11.4/hw/xfree86/modes/xf86RandR12.c @@ -736,6 +736,8 @@ xf86SetViewport (pScreen, 0, 0); finish: + update_desktop_dimensions(); + if (pRoot && pScrn->vtSema) (*pScrn->EnableDisableFBAccess) (pScreen->myNum, TRUE); #if RANDR_12_INTERFACE --- xorg-server-1.11.4.orig/config/udev.c +++ xorg-server-1.11.4/config/udev.c @@ -81,13 +81,7 @@ return; } - options = calloc(sizeof(*options), 1); - if (!options) - return; - - options->key = strdup("_source"); - options->value = strdup("server/udev"); - if (!options->key || !options->value) + if (!add_option(&options, "_source", "server/udev")) goto unwind; parent = udev_device_get_parent(udev_device); --- xorg-server-1.11.4.orig/config/hal.c +++ xorg-server-1.11.4/config/hal.c @@ -205,15 +205,7 @@ free(parent); } - options = calloc(sizeof(*options), 1); - if (!options){ - LogMessage(X_ERROR, "config/hal: couldn't allocate space for input options!\n"); - goto unwind; - } - - options->key = strdup("_source"); - options->value = strdup("server/hal"); - if (!options->key || !options->value) { + if (!add_option(&options, "_source", "server/hal")) { LogMessage(X_ERROR, "config/hal: couldn't allocate first key/value pair\n"); goto unwind; } --- xorg-server-1.11.4.orig/config/config.c +++ xorg-server-1.11.4/config/config.c @@ -122,18 +122,25 @@ return FALSE; } -void +/** + * Allocate a new option and append to the list. + * + * @return A pointer to the newly allocated InputOption struct. + */ +InputOption* add_option(InputOption **options, const char *key, const char *value) { if (!value || *value == '\0') - return; + return NULL; for (; *options; options = &(*options)->next) ; *options = calloc(sizeof(**options), 1); if (!*options) /* Yeesh. */ - return; + return NULL; (*options)->key = strdup(key); (*options)->value = strdup(value); (*options)->next = NULL; + + return *options; } --- xorg-server-1.11.4.orig/config/dbus-api +++ xorg-server-1.11.4/config/dbus-api @@ -0,0 +1,40 @@ +D-BUS Configuration API v2 +---------------------------- + +The X server will register the bus name org.x.config.displayN, and the +object /org/x/config/N, where N is the display number. + +Currently only hotplugging of input devices is supported. + +org.x.config.input: + org.x.config.input.version: + Returns one unsigned int32, which is the API version. + + org.x.config.input.add: + Takes an argument of key/value option pairs in arrays, e.g.: + [ss][ss][ss][ss] + is the signature for four options. These options will be passed + to the input driver as with any others. + Option names beginning with _ are not allowed; they are reserved + for internal use. + + Returns a number of signed int32s. Positive integers are the + device IDs of new devices; negative numbers are X error codes, + as defined in X.h. BadMatch will be returned if the options + given do not match any device. BadValue is returned for a malformed + message. (Example: 8 is new device ID 8; -8 is BadMatch.) + + Notably, BadAlloc is never returned: the server internally signals + to D-BUS that the attempt failed for lack of memory. + + org.x.config.input.remove: + Takes one uint32 argument, which is the device ID to remove, i.e.: + u + is the signature. + + Returns one signed int32 which represents an X status as defined in + X.h. See org.x.config.input.add. Error codes are negative numbers. + + org.x.config.input.listDevices: + Lists the currently active devices. No argument. + Return value is sequence of [ ] [ ] ..., i.e. [us]. --- xorg-server-1.11.4.orig/config/dbus.c +++ xorg-server-1.11.4/config/dbus.c @@ -80,15 +80,7 @@ MALFORMED_MESSAGE(); } - options = calloc(sizeof(*options), 1); - if (!options) { - ErrorF("[config/dbus] couldn't allocate option\n"); - return BadAlloc; - } - - options->key = strdup("_source"); - options->value = strdup("client/dbus"); - if (!options->key || !options->value) { + if (!add_option(&options, "_source", "client/dbus")) { ErrorF("[config/dbus] couldn't allocate first key/value pair\n"); ret = BadAlloc; goto unwind; --- xorg-server-1.11.4.orig/config/config-backends.h +++ xorg-server-1.11.4/config/config-backends.h @@ -30,7 +30,7 @@ void remove_devices(const char *backend, const char *config_info); BOOL device_is_duplicate(const char *config_info); -void add_option(InputOption **options, const char *key, const char *value); +InputOption* add_option(InputOption **options, const char *key, const char *value); #ifdef CONFIG_UDEV int config_udev_init(void); --- xorg-server-1.11.4.orig/debian/xserver-common.install +++ xorg-server-1.11.4/debian/xserver-common.install @@ -0,0 +1,2 @@ +main/usr/lib/xorg/protocol.txt usr/lib/xorg +main/usr/share/man/man1/Xserver.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/xnest.install +++ xorg-server-1.11.4/debian/xnest.install @@ -0,0 +1,2 @@ +main/usr/bin/Xnest usr/bin +main/usr/share/man/man1/Xnest.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/control +++ xorg-server-1.11.4/debian/control @@ -0,0 +1,345 @@ +Source: xorg-server +Section: x11 +Priority: optional +Maintainer: Ubuntu X-SWAT +XSBC-Original-Maintainer: Debian X Strike Force +Uploaders: Drew Parsons , Cyril Brulebois +# all the Build-Depends up to x11proto-xf86-dri-dev are for the normal Xorg +# server, and common dependencies for the DIX. +# x11proto-xf86dri-dev and libdrm-dev are for DRI support for the Xorg server. +# x11proto-print-dev and libfreetype6-dev are for Xprint +# everything on is for the DMX and Xnest servers. +Build-Depends: + debhelper (>= 7), + quilt, + lsb-release, + pkg-config, + bison, + flex, + automake, + libtool, + xauth, + xutils-dev (>= 1:7.6+4), + xfonts-utils (>= 1:7.5+1), + x11proto-bigreqs-dev (>= 1:1.1.0), + x11proto-composite-dev (>= 1:0.4), + x11proto-core-dev (>= 7.0.22), + x11proto-damage-dev (>= 1.1), + x11proto-fixes-dev (>= 1:5.0-2ubuntu1), + x11proto-kb-dev (>= 1.0.3), + x11proto-xinerama-dev, + x11proto-randr-dev (>= 1.2.99.3), + x11proto-record-dev (>= 1.13.99.1), + x11proto-render-dev (>= 2:0.11), + x11proto-resource-dev, + x11proto-scrnsaver-dev, + x11proto-video-dev, + x11proto-xcmisc-dev (>= 1.2.0), + x11proto-xext-dev (>= 7.1.99), + x11proto-xf86bigfont-dev (>= 1.2.0), + x11proto-xf86dga-dev (>= 2.0.99.1), + x11proto-xf86vidmode-dev (>= 2.2.99.1), + xtrans-dev (>= 1.2.2), + libxau-dev (>= 1:1.0.5-2), + x11proto-input-dev (>= 2.1.99.6), + x11proto-dri2-dev (>= 2.6), + libxdmcp-dev (>= 1:0.99.1), + libxfont-dev (>= 1:1.4.2), + libxkbfile-dev (>= 1:0.99.1), + libpixman-1-dev (>= 0.21.8), + libpciaccess-dev (>= 0.11.0-2), + libgcrypt-dev, + nettle-dev, + libdbus-1-dev [kfreebsd-any], + libhal-dev [kfreebsd-any], + libudev-dev (>= 151-3), + libselinux1-dev (>= 2.0.80), + x11proto-xf86dri-dev (>= 2.1.0), + libdrm-dev (>= 2.4.3) [!hurd-i386], + x11proto-gl-dev (>= 1.4.14), + mesa-common-dev (>= 7.10.3-0ubuntu1), + libgl1-mesa-dev (>= 7.8), + libxmuu-dev (>= 1:0.99.1), + libxext-dev (>= 1:0.99.1), + libx11-dev (>= 1:0.99.2), + libxrender-dev (>= 1:0.9.0), + libxi-dev (>= 2:1.2.99.1), + x11proto-dmx-dev (>= 1:2.2.99.1), + libdmx-dev (>= 1:1.0.1), + libxpm-dev (>= 1:3.5.3), + libxaw7-dev (>= 1:0.99.1), + libxt-dev (>= 1:0.99.1), + libxmu-dev (>= 1:0.99.1), + libxtst-dev (>= 1:0.99.1), + libxres-dev (>= 1:0.99.1), + libxfixes-dev (>= 1:3.0.0), + libxv-dev, + libxinerama-dev, +# unit tests + xkb-data, + x11-xkb-utils, +Standards-Version: 3.9.3 +Vcs-Git: git://git.debian.org/git/pkg-xorg/xserver/xorg-server +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/xserver/xorg-server.git + +Package: xserver-xorg-core +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + keyboard-configuration [linux-any kfreebsd-any], + udev (>= 149) [linux-any], + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.10.2-4) +Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable +Breaks: + xserver-xorg-video, + xserver-xorg-video-1.0, + xserver-xorg-video-1.9, + xserver-xorg-video-2, + xserver-xorg-video-4, + xserver-xorg-video-5, + xserver-xorg-video-6, + xserver-xorg-input, + xserver-xorg-input-2, + xserver-xorg-input-2.1, + xserver-xorg-input-4, + xserver-xorg-input-7, + xserver-xorg-input-wacom (<< 0.7.8), + xserver-xorg-input-joystick (<= 1:1.5.0-3), + xserver-xorg-input-synaptics (<= 1.2.2-1ubuntu4), + xserver-xorg-input-tslib (<= 0.0.6-3), + xserver-xorg-input-vmmouse (<= 1:12.6.5-4ubuntu2), + xserver-xorg-input-wacom (<= 0.10.5+20100415-1), + xserver-xorg-video-cyrix (<= 1:1.1.0-8), + xserver-xorg-video-i810 (<< 2:2.4), + xserver-xorg-video-imstt (<= 1:1.1.0-7), + xserver-xorg-video-nsc (<= 1:2.8.3-4), + xserver-xorg-video-sunbw2 (<= 1:1.1.0-5), + xserver-xorg-video-v4l (<< 1:0.2.0), + xserver-xorg-video-vga (<= 1:4.1.0-8), + libgl1-mesa-dri (<< 7.10.2-4), + libgl1-mesa-dri-experimental (<< 7.10.2-4), + qt4-x11 (<< 4:4.8.0-1ubuntu2), + utouch-geis (<< 2.2.3), + utouch-frame (<< 2.1.0), + unity (<< 5.0.0), +Provides: + ${videoabi}, + ${inputabi}, +Description: Xorg X server - core server + The Xorg X server is an X server for several architectures and operating + systems, which is derived from the XFree86 4.x series of X servers. + . + The Xorg server supports most modern graphics hardware from most vendors, + and supersedes all XFree86 X servers. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xorg-core-udeb +XC-Package-Type: udeb +Section: debian-installer +# exclude sparc because of linker errors +Architecture: alpha amd64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc powerpcspe s390 +Depends: +# merged: xserver-common (>= ${source:Version}), + xkb-data-udeb, + x11-xkb-utils-udeb, +# disabled: keyboard-configuration [linux-any kfreebsd-any], + udev-udeb (>= 149) [linux-any], + ${shlibs:Depends}, + ${misc:Depends}, +Provides: + ${videoabi}, + ${inputabi}, +Description: Xorg X server - core server + This is a udeb, or a microdeb, for the debian-installer. + +Package: xserver-xorg-dev +Architecture: any +Depends: + libpixman-1-dev (>= 0.21.8), + x11proto-core-dev (>= 7.0.22), + x11proto-input-dev (>= 2.1.99.6), + x11proto-xext-dev (>= 7.1.99), + x11proto-video-dev, + x11proto-randr-dev (>= 1.2.99.3), + x11proto-render-dev (>= 2:0.11), + x11proto-dri2-dev (>= 2.6), + x11proto-fonts-dev, + x11proto-xinerama-dev, + x11proto-kb-dev, + libxkbfile-dev, + libpciaccess-dev, + ${misc:Depends}, +Description: Xorg X server - development files + This package provides development files for the X.Org ('Xorg') X server. + This is not quite the same as the DDK (Driver Development Kit) from the + XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides + headers and a pkg-config file for drivers using autotools to build + against. + . + Unless you are developing or building a driver, you probably want + xserver-xorg and/or xserver-xorg-core instead. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Description: distributed multihead X server + Xdmx is a proxy X server that uses one or more other X servers as its + display device(s). It provides multi-head X functionality for displays that + might be located on different machines. Xdmx functions as a front-end X server + that acts as a proxy to a set of back-end X servers. All of the visible + rendering is passed to the back-end X servers. Clients connect to the Xdmx + front-end, and everything appears as it would in a regular multi-head + configuration. If Xinerama is enabled (e.g., with +xinerama on the command + line), the clients see a single large screen. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xdmx-tools +Architecture: any +Depends: + xdmx, + ${shlibs:Depends}, + ${misc:Depends}, +Description: Distributed Multihead X tools + This package provides a collection of tools used for administration of + the Xdmx server; see the xdmx package for more information. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xnest +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: Nested X server + Xnest is a nested X server that simply relays all its requests to another + X server, where it runs as a client. This means that it appears as another + window in your current X session. Xnest relies upon its parent X server + for font services. + . + Use of the Xephyr X server instead of Xnest is recommended. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xvfb +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, + xauth, + x11-xkb-utils +Recommends: libgl1-mesa-dri +Provides: xserver +Description: Virtual Framebuffer 'fake' X server + Xvfb provides an X server that can run on machines with no display hardware + and no physical input devices. It emulates a dumb framebuffer using virtual + memory. The primary use of this server was intended to be server testing, + but other novel uses for it have been found, including testing clients + against unusual depths and screen configurations, doing batch processing with + Xvfb as a background rendering engine, load testing, as an aid to porting the + X server to a new platform, and providing an unobtrusive way to run + applications that don't really need an X server but insist on having one + anyway. + . + This package also contains a convenience script called xvfb-run which + simplifies the automated execution of X clients in a virtual server + environment. This convenience script requires the use of the xauth + program. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xephyr +Architecture: any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Recommends: libgl1-mesa-dri (>= 7.1~rc1) +Provides: xserver +Description: nested X server + Xephyr is an X server that can be run inside another X server, + much like Xnest. It is based on the kdrive X server, and as a + result it supports newer extensions than Xnest, including render and + composite. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xfbdev +Architecture: linux-any +Depends: + xserver-common (>= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, +Provides: xserver +Description: Linux framebuffer device tiny X server + xserver-xfbdev is a Linux framebuffer device tiny X server based on the + kdrive X server. + . + More information about X.Org can be found at: + + . + This package is built from the X.org xserver module. + +Package: xserver-xorg-core-dbg +Architecture: any +Depends: + xserver-xorg-core (= ${binary:Version}), + ${misc:Depends}, +Priority: extra +Section: debug +Description: Xorg - the X.Org X server (debugging symbols) + The Xorg X server is an X server for several architectures and operating + systems, which is derived from the XFree86 4.x series of X servers. + . + The Xorg server supports most modern graphics hardware from most vendors, + and supersedes all XFree86 X servers. + . + This package provides debugging symbols for the Xorg X server and associated + modules. + +Package: xserver-common +Architecture: all +Depends: + x11-common, + xkb-data, + x11-xkb-utils, + ${misc:Depends}, +Recommends: + xfonts-base, + xauth, +Replaces: xserver-xorg-core (<< 2:1.5.2) +Description: common files used by various X servers + This package provides files necessary for all X.Org based X servers. --- xorg-server-1.11.4.orig/debian/xserver-xorg-core.lintian-overrides +++ xorg-server-1.11.4/debian/xserver-xorg-core.lintian-overrides @@ -0,0 +1,3 @@ +# That's OK, they were virtual packages: +breaks-without-version xserver-xorg-input-7 +breaks-without-version xserver-xorg-video-6 --- xorg-server-1.11.4.orig/debian/compat +++ xorg-server-1.11.4/debian/compat @@ -0,0 +1 @@ +5 --- xorg-server-1.11.4.orig/debian/xserver-xorg-dev.install +++ xorg-server-1.11.4/debian/xserver-xorg-dev.install @@ -0,0 +1,6 @@ +main/usr/include/xorg usr/include +main/usr/lib/pkgconfig/xorg-server.pc usr/lib/pkgconfig +main/usr/share/aclocal usr/share + +../../debian/local/dh_xsf_substvars usr/bin +../../debian/local/xsf.pm /usr/share/perl5/Debian/Debhelper/Sequence/ --- xorg-server-1.11.4.orig/debian/xserver-xephyr.install +++ xorg-server-1.11.4/debian/xserver-xephyr.install @@ -0,0 +1,2 @@ +main/usr/bin/Xephyr usr/bin +main/usr/share/man/man1/Xephyr.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/xdmx.install +++ xorg-server-1.11.4/debian/xdmx.install @@ -0,0 +1,2 @@ +main/usr/bin/Xdmx usr/bin +main/usr/share/man/man1/Xdmx.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/xdmx-tools.install +++ xorg-server-1.11.4/debian/xdmx-tools.install @@ -0,0 +1,6 @@ +main/usr/bin/dmx* usr/bin +main/usr/bin/vdltodmx usr/bin +main/usr/bin/xdmxconfig usr/bin +main/usr/share/man/man1/vdltodmx.1 usr/share/man/man1 +main/usr/share/man/man1/dmxtodmx.1 usr/share/man/man1 +main/usr/share/man/man1/xdmxconfig.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/README.source +++ xorg-server-1.11.4/debian/README.source @@ -0,0 +1,66 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. + +---------------------------------------------- +Updating xorg-server to a new upstream release +---------------------------------------------- + +* The abibumpcheck target helps us notice any ABI bump: + - A major ABI bump means drivers have to be rebuilt. + - A minor ABI bump means the version in serverminver has to be + bumped. + Reference documentation about dependencies is available at: + http://pkg-xorg.alioth.debian.org/reference/dependencies.html +* We have to keep track of the SDK_REQUIRED_MODULES variable in + configure.ac. It is used to determine xorg-server.pc's dependencies + so xserver-xorg-dev's dependencies have to be adjusted when this + variable changes. This variable is set to a list of modules, but is + updated a few times. It's probably a good idea to use: + git grep SDK_REQUIRED_MODULES= -- configure.ac --- xorg-server-1.11.4.orig/debian/copyright +++ xorg-server-1.11.4/debian/copyright @@ -0,0 +1,1822 @@ +The following is the 'standard copyright' agreed upon by most contributors, +and is currently the canonical license preferred by the X.Org Foundation. +This is a slight variant of the common MIT license form published by the +Open Source Initiative at http://www.opensource.org/licenses/mit-license.php + +Copyright holders of new code should use this license statement where +possible, and insert their name to this list. Please sort by surname +for people, and by the full name for other entities (e.g. Juliusz +Chroboczek sorts before Intel Corporation sorts before Daniel Stone). + +Copyright © 2000-2001 Juliusz Chroboczek +Copyright © 1998 Egbert Eich +Copyright © 2006-2007 Intel Corporation +Copyright © 2006 Nokia Corporation +Copyright © 2006-2008 Peter Hutterer +Copyright © 2006 Adam Jackson +Copyright © 2009-2010 NVIDIA Corporation +Copyright © 1987, 2003-2006, 2008-2010 Oracle and/or its affiliates. +Copyright © 1999 Keith Packard +Copyright © 2007-2009 Red Hat, Inc. +Copyright © 2005-2008 Daniel Stone +Copyright © 2006-2009 Simon Thum +Copyright © 2006 Luc Verhaegen + +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. + + + + +The following licenses are 'legacy': usually MIT/X11 licenses with the name +of the copyright holder(s) in the license statement, but also some BSD-like +licenses. + + +Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 + +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 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, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +XFREE86 PROJECT 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. + +Except as contained in this notice, the name of the XFree86 Project shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the XFree86 Project. + + +Copyright 1997 by The XFree86 Project, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the XFree86 Project, Inc. +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The Xfree86 +Project, Inc. makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1985-1998, 2001 The Open Group +Copyright 2002 Red Hat Inc., Durham, North Carolina. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice 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 +OPEN GROUP 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. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright (c) 1987, 1989-1990, 1992-1995 X Consortium + +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 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 +X CONSORTIUM 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. + +Except as contained in this notice, the name of the X Consortium shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. + + +Copyright © 1999-2000 SuSE, Inc. +Copyright © 2007 Red Hat, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts. +Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts. +Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, +Copyright 1994 Quarterdeck Office Systems. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Digital and +Quarterdeck not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997 Digital Equipment Corporation. +All rights reserved. + +This software is furnished under license and may be used and copied only in +accordance with the following terms and conditions. Subject to these +conditions, you may download, copy, install, use, modify and distribute +this software in source and/or binary form. No title or ownership is +transferred hereby. + +1) Any source code used, modified or distributed must reproduce and retain + this copyright notice and list of conditions as they appear in the + source file. + +2) No right is granted to use any trade name, trademark, or logo of Digital + Equipment Corporation. Neither the "Digital Equipment Corporation" + name nor any trademark or logo of Digital Equipment Corporation may be + used to endorse or promote products derived from this software without + the prior written permission of Digital Equipment Corporation. + +3) This software is provided "AS-IS" and any express or implied warranties, + including but not limited to, any implied warranties of merchantability, + fitness for a particular purpose, or non-infringement are disclaimed. + In no event shall DIGITAL be liable for any damages whatsoever, and in + particular, DIGITAL shall not be liable for special, indirect, + consequential, or incidental damages or damages for lost profits, loss + of revenue or loss of use, whether such damages arise in contract, + negligence, tort, under statute, in equity, at law or otherwise, even + if advised of the possibility of such damage. + + +Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts. + +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. + +The above copyright notice and this permission notice 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 +DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING, +BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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. + +Except as contained in this notice, the name of Digital Equipment Corporation +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Digital +Equipment Corporation. + + +SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008) +Copyright (C) 1991-2000 Silicon Graphics, Inc. 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 including the dates of first publication and +either this permission notice or a reference to +http://oss.sgi.com/projects/FreeB/ +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 +SILICON GRAPHICS, INC. 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. + + +Copyright (c) 1994, 1995 Hewlett-Packard Company + +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 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 HEWLETT-PACKARD COMPANY 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. + +Except as contained in this notice, the name of the Hewlett-Packard +Company shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the Hewlett-Packard Company. + + +Copyright 1989 by Hewlett-Packard Company, Palo Alto, California. +All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Hewlett-Packard not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 2001-2004 Red Hat Inc., Durham, North Carolina. +Copyright (c) 2003 by the XFree86 Project, Inc. +Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina. +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 on 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 +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS +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. + + +Copyright © 2008 Red Hat, Inc. +Partly based on code Copyright © 2000 SuSE, Inc. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without +fee, provided that the above copyright notice appear in all copies +and that both that copyright notice and this permission notice +appear in supporting documentation, and that the name of Red Hat +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. Red +Hat makes no representations about the suitability of this software +for any purpose. It is provided "as is" without express or implied +warranty. + +Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN +NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of SuSE not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. SuSE makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE +BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2006 Red Hat, Inc. +(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +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, sub license, +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 NON-INFRINGEMENT. IN NO EVENT SHALL +RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS 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. + + +Copyright (c) 1995 X Consortium +Copyright 2004 Red Hat Inc., Durham, North Carolina. +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 on 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 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 +NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM, +AND/OR THEIR SUPPLIERS 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. + +Except as contained in this notice, the name of the X Consortium +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written +authorization from the X Consortium. + + +Copyright 1998-2000 Precision Insight, Inc., Cedar Park, Texas. +Copyright 2000 VA Linux Systems, Inc. +Copyright (c) 2002, 2008, 2009 Apple Computer, Inc. +Copyright (c) 2003-2004 Torrey T. Lyons. +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, sub license, 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 NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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. + + +(C) Copyright IBM Corporation 2003 +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 +on the rights to use, copy, modify, merge, publish, distribute, sub +license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL +VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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. + + +(C) Copyright IBM Corporation 2004-2005 +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, sub license, +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 NON-INFRINGEMENT. IN NO EVENT SHALL +IBM, +AND/OR THEIR SUPPLIERS 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. + + +Copyright (c) 1997 Metro Link Incorporated + +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 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 X CONSORTIUM 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. + +Except as contained in this notice, the name of the Metro Link shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from Metro Link. + + +Copyright 1995-1998 by Metro Link, Inc. +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Metro Link, Inc. not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Metro Link, Inc. makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL METRO LINK, INC. BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Metro Link Incorporated + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Metro Link +Incorporated not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Metro Link Incorporated makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com) + +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 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 +CONECTIVA LINUX 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. + +Except as contained in this notice, the name of Conectiva Linux shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +Conectiva Linux. + + +Copyright (c) 2001, Andy Ritger aritger@nvidia.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. +o Neither the name of NVIDIA nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +Copyright 1992 Vrije Universiteit, The Netherlands + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the Vrije Universiteit not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The Vrije Universiteit makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL The Vrije Universiteit BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Concurrent Computer Corporation + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Concurrent Computer +Corporation not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. Concurrent Computer Corporation makes no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2004 Nokia + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Nokia not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Nokia makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL NOKIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +(c)Copyright 1988,1991 Adobe Systems Incorporated. +All rights reserved. + +Permission to use, copy, modify, distribute, and sublicense this software and its +documentation for any purpose and without fee is hereby granted, provided that +the above copyright notices appear in all copies and that both those copyright +notices and this permission notice appear in supporting documentation and that +the name of Adobe Systems Incorporated not be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission. No trademark license to use the Adobe trademarks is hereby +granted. If the Adobe trademark "Display PostScript"(tm) is used to describe +this software, its functionality or for any other purpose, such use shall be +limited to a statement that this software works in conjunction with the Display +PostScript system. Proper trademark attribution to reflect Adobe's ownership +of the trademark shall be given whenever any such reference to the Display +PostScript system is made. + +ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY +PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ADOBE +DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON- +INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE TO YOU +OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT +LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER +SUPPORT FOR THE SOFTWARE. + +Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems +Incorporated which may be registered in certain jurisdictions. + + +Copyright 1989 Network Computing Devices, Inc., Mountain View, California. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of N.C.D. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. N.C.D. makes no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + + +Copyright (c) 1987 by the Regents of the University of California + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies. The University of California +makes no representations about the suitability of this +software for any purpose. It is provided "as is" without +express or implied warranty. + + +Copyright 1992, 1993 Data General Corporation; +Copyright 1992, 1993 OMRON Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that the +above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and that +neither the name OMRON or DATA GENERAL be used in advertising or publicity +pertaining to distribution of the software without specific, written prior +permission of the party whose name is to be used. Neither OMRON or +DATA GENERAL make any representation about the suitability of this software +for any purpose. It is provided "as is" without express or implied warranty. + +OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL OMRON OR DATA GENERAL BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright © 1998-2004, 2006 Keith Packard +Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc. +Copyright (c) 2002 Apple Computer, Inc. +Copyright (c) 2003 Torrey T. Lyons. +All Rights Reserved. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 1999 Keith Packard +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 MontaVista Software Inc. +Copyright © 2005 OpenedHand Ltd. +Copyright © 2006 Nokia Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the authors and/or copyright holders +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. The authors and/or +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1993 by Davor Matic + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation. Davor Matic makes no representations about +the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved. +Copyright (C) Colin Harrison 2005-2008 + +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 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 HAROLD L HUNT II 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. + +Except as contained in this notice, the name of Harold L Hunt II +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Harold L Hunt II. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Thomas Roell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Thomas Roell makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THOMAS ROELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Thomas Roell and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Thomas Roell and +David Wexelblat makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1990,91,92,93 by Thomas Roell, Germany. +Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Thomas Roell nor +SGCS be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Thomas Roell nor SGCS makes no representations about the suitability +of this software for any purpose. It is provided "as is" without +express or implied warranty. + +THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998 by Alan Hourihane, Wigan, England. +Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Alan Hourihane not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Alan Hourihane makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995 Kaleb S. KEITHLEY + +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 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 Kaleb S. KEITHLEY 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. + +Except as contained in this notice, the name of Kaleb S. KEITHLEY +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +from Kaleb S. KEITHLEY + + +Copyright (c) 1997 Matthieu Herrb + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Matthieu Herrb not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Matthieu Herrb makes no +representations about the suitability of this software for any purpose. + It is provided "as is" without express or implied warranty. + +MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL MATTHIEU HERRB BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2004, Egbert Eich + +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 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 +EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON- +NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of Egbert Eich shall not +be used in advertising or otherwise to promote the sale, use or other deal- +ings in this Software without prior written authorization from Egbert Eich. + + +Copyright 1993 by David Wexelblat +Copyright 2005 by Kean Johnston +Copyright 1993 by David McCullough + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of David Wexelblat not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. David Wexelblat makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Orest Zborowski +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Orest Zborowski and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Orest Zborowski +and David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1995-1999 by Frederic Lepied, France. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Frederic Lepied not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Frederic Lepied makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Wexelblat + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Wexelblat +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Wexelblat make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1992 by Rich Murphey +Copyright 1993 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Rich Murphey and David Dawes +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. Rich Murphey and +David Dawes make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Anders Carlsson + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Anders Carlsson not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Anders Carlsson makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ANDERS CARLSSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2003 Anders Carlsson +Copyright © 2003-2004 Eric Anholt +Copyright © 2004 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Eric Anholt not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Eric Anholt makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1998 Todd C. Miller + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright © 2003-2004 Philip Blundell + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Philip Blundell not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Philip Blundell makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL PHILIP BLUNDELL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + + +Copyright (c) 1994-2003 by The XFree86 Project, Inc. +Copyright 1997 by Metro Link, Inc. +Copyright 2003 by David H. Dawes. +Copyright 2003 by X-Oz Technologies. +Copyright (c) 2004, X.Org Foundation + +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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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. + +Except as contained in this notice, the name of the copyright holder(s) +and author(s) shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Software without prior written +authorization from the copyright holder(s) and author(s). + + +Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany +Copyright 1993 by David Wexelblat +Copyright 1999 by David Holland +Copyright © 2000 Compaq Computer Corporation +Copyright © 2002 Hewlett-Packard Company +Copyright © 2004, 2005 Red Hat, Inc. +Copyright © 2004 Nicholas Miell +Copyright © 2005 Trolltech AS +Copyright © 2006 Intel Corporation +Copyright © 2006-2007 Keith Packard +Copyright © 2008 Red Hat, Inc +Copyright © 2008 George Sapountzis + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of the copyright holders not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. The copyright holders make no representations +about the suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + 2005 Lars Knoll & Zack Rusin, Trolltech + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +Copyright 1987, 1998 The Open Group +Copyright © 1998-1999, 2001 The XFree86 Project, Inc. +Copyright © 2000 VA Linux Systems, Inc. +Copyright (c) 2000, 2001 Nokia Home Communications +Copyright © 2007, 2008 Red Hat, Inc. +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, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +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 +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + + +Copyright 1996 by Thomas E. Dickey + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the above listed +copyright holder(s) not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright (c) 2001 Andreas Monitzer. +Copyright (c) 2001-2004 Greg Parker. +Copyright (c) 2001-2004 Torrey T. Lyons +Copyright (c) 2002-2003 Apple Computer, Inc. +Copyright (c) 2004-2005 Alexander Gottwald +Copyright (c) 2002-2009 Apple Inc. +Copyright (c) 2007 Jeremy Huddleston +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 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 ABOVE LISTED COPYRIGHT HOLDER(S) 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. + +Except as contained in this notice, the name(s) of the above copyright +holders shall not be used in advertising or otherwise to promote the sale, +use or other dealings in this Software without prior written authorization. + + +Copyright (C) 1999,2000 by Eric Sunshine +Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN +NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net + +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 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 +AUTHOR 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. + +Except as contained in this notice, the name of the author shall not be used in +advertising or otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the author. + + +Copyright © 2002 David Dawes + +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 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 AUTHOR(S) 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. + +Except as contained in this notice, the name of the author(s) shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from +the author(s). + + +Copyright (C) 1996-1999 SciTech Software, Inc. +Copyright (C) David Mosberger-Tang +Copyright (C) 1999 Egbert Eich +Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the authors not be used +in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. The authors makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2005-2006 Luc Verhaegen. + +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 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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. + + +Copyright 1995 by Robin Cutshaw +Copyright 2000 by Egbert Eich +Copyright 2002 by David Dawes + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holder(s) +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holder(s) make(s) no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and +that the name of Marc Aurele La France not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. Marc Aurele La France makes no representations +about the suitability of this software for any purpose. It is provided +"as-is" without express or implied warranty. + +MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany +Copyright 1992 by David Dawes +Copyright 1992 by Jim Tsillas +Copyright 1992 by Rich Murphey +Copyright 1992 by Robert Baron +Copyright 1992 by Orest Zborowski +Copyright 1993 by Vrije Universiteit, The Netherlands +Copyright 1993 by David Wexelblat +Copyright 1994, 1996 by Holger Veit +Copyright 1997 by Takis Psarogiannakopoulos +Copyright 1994-2003 by The XFree86 Project, Inc + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of the above listed copyright holders +not be used in advertising or publicity pertaining to distribution of +the software without specific, written prior permission. The above listed +copyright holders make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Copyright 2001-2005 by J. Kean Johnston + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name J. Kean Johnston not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. J. Kean Johnston makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL J. KEAN JOHNSTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com) + +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 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 +JAKUB JELINEK 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. + + +Copyright 1997,1998 by UCHIYAMA Yasushi + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of UCHIYAMA Yasushi not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. UCHIYAMA Yasushi makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL UCHIYAMA YASUSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (C) 2000 Keith Packard + 2004 Eric Anholt + 2005 Zack Rusin + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of copyright holders not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Copyright holders make no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + +(C) Copyright IBM Corporation 2002-2007 +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 +on the rights to use, copy, modify, merge, publish, distribute, sub +license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL +THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS 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. + + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +this permission notice appear in supporting documentation. This permission +notice 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 +AUTHOR 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. + + +Copyright © 2007 OpenedHand Ltd + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of OpenedHand Ltd not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. OpenedHand Ltd makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL OpenedHand Ltd BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +Copyright (c) 1989, 1990, 1993, 1994 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Chris Torek. + +This code is derived from software contributed to Berkeley by +Michael Rendell of Memorial University of Newfoundland. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. --- xorg-server-1.11.4.orig/debian/serverminver +++ xorg-server-1.11.4/debian/serverminver @@ -0,0 +1,3 @@ +2:1.10.99.901 +ABI_VIDEODRV_VERSION:11.0 +ABI_XINPUT_VERSION:16.0 --- xorg-server-1.11.4.orig/debian/xserver-xorg-core.postrm +++ xorg-server-1.11.4/debian/xserver-xorg-core.postrm @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +case "$1" in +purge) + rm /var/log/Xorg.*.log || true + rm /var/log/Xorg.*.log.old || true + ;; +esac + +#DEBHELPER# + +# vim:set ai et sts=2 sw=2 tw=0: --- xorg-server-1.11.4.orig/debian/xserver-xfbdev.install +++ xorg-server-1.11.4/debian/xserver-xfbdev.install @@ -0,0 +1 @@ +main/usr/bin/Xfbdev usr/bin --- xorg-server-1.11.4.orig/debian/xserver-xorg-core-udeb.install +++ xorg-server-1.11.4/debian/xserver-xorg-core-udeb.install @@ -0,0 +1,7 @@ +# from xserver-common: +udeb/usr/lib/xorg/protocol.txt usr/lib/xorg + +# from xserver-xorg-core: +udeb/usr/lib/xorg/modules usr/lib/xorg +udeb/usr/bin/Xorg usr/bin +udeb/usr/share/X11/xorg.conf.d usr/share/X11/ --- xorg-server-1.11.4.orig/debian/gbp.conf +++ xorg-server-1.11.4/debian/gbp.conf @@ -0,0 +1,7 @@ +[DEFAULT] +# the default branch for upstream sources: +upstream-branch = upstream-experimental +# the default branch for the debian patch: +debian-branch = ubuntu +# use pristine-tar: +pristine-tar = True --- xorg-server-1.11.4.orig/debian/watch +++ xorg-server-1.11.4/debian/watch @@ -0,0 +1,3 @@ +#git=git://anongit.freedesktop.org/xorg/xserver +version=3 +http://xorg.freedesktop.org/releases/individual/xserver/ xorg-server-(.*)\.tar\.gz --- xorg-server-1.11.4.orig/debian/xserver-xephyr.docs +++ xorg-server-1.11.4/debian/xserver-xephyr.docs @@ -0,0 +1 @@ +hw/kdrive/ephyr/README --- xorg-server-1.11.4.orig/debian/xserver-xorg-core.install +++ xorg-server-1.11.4/debian/xserver-xorg-core.install @@ -0,0 +1,12 @@ +main/usr/lib/xorg/modules usr/lib/xorg +main/usr/bin/Xorg usr/bin +main/usr/share/man/man1/Xorg.1 usr/share/man/man1 +main/usr/share/man/man4/exa.4 usr/share/man/man4 +main/usr/share/man/man4/fbdevhw.4 usr/share/man/man4 +main/usr/share/man/man5/xorg.conf.5 usr/share/man/man5 +main/usr/share/man/man5/xorg.conf.d.5 usr/share/man/man5 +main/usr/bin/cvt usr/bin +main/usr/bin/gtf usr/bin +main/usr/share/man/man1/cvt.1 usr/share/man/man1 +main/usr/share/man/man1/gtf.1 usr/share/man/man1 +main/usr/share/X11/xorg.conf.d usr/share/X11/ --- xorg-server-1.11.4.orig/debian/xserver-xorg-core.bug.script +++ xorg-server-1.11.4/debian/xserver-xorg-core.bug.script @@ -0,0 +1,146 @@ +#!/bin/sh + +PATH="/sbin:$PATH" +CONFIG_DIR=/etc/X11 +SERVER_BINARY=/usr/bin/Xorg +SERVER_SYMLINK="$CONFIG_DIR/X" +XORGCONFIG="$CONFIG_DIR/xorg.conf" +XORGCONFIG_DIR="$CONFIG_DIR/xorg.conf.d" +CONFIG_AUX_DIR=/var/lib/x11 +X11R6_LIBS=/usr/X11R6/lib +LOCAL_LIBS=/usr/local/lib + +# Pretty echo, underline the specified string: +pecho() { + echo "$@" + echo "$@"|sed 's/./-/g' +} + +exec >&3 + +if [ -e "$SERVER_SYMLINK" ]; then + pecho "X server symlink status:" + ls -dl "$SERVER_SYMLINK" + ls -dl "$(readlink "$SERVER_SYMLINK")" +else + echo "$SERVER_SYMLINK does not exist." +fi + +if ! [ -L "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not a symlink." +fi + +if ! [ -x "$SERVER_SYMLINK" ]; then + echo "$SERVER_SYMLINK is not executable." +fi + +echo + +if ldd "$SERVER_BINARY" | grep -qs "$LOCAL_LIBS"; then + pecho "The server is using local libraries!" + ldd "$SERVER_BINARY" | grep "$LOCAL_LIBS" + echo +fi + +if ldd "$SERVER_BINARY" | grep -qs "$X11R6_LIBS"; then + pecho "The server is using obsolete libraries!" + ldd "$SERVER_BINARY" | grep "$X11R6_LIBS" + echo +fi + +if dpkg-divert --list | grep -qs -i libgl; then + pecho "Diversions concerning libGL are in place" + dpkg-divert --list | grep -i libgl + echo +fi + +if which lspci > /dev/null 2>&1; then + pecho "VGA-compatible devices on PCI bus:" + LC_ALL=C lspci -nn | grep 'VGA compatible controller' +else + echo "The lspci command was not found; not including PCI data." +fi + +echo + +if [ -e "$XORGCONFIG" ]; then + pecho "Xorg X server configuration file status:" + ls -dl "$XORGCONFIG" + echo + pecho "Contents of $XORGCONFIG:" + iconv -c -t ascii "$XORGCONFIG" +else + echo "$XORGCONFIG does not exist." +fi + +echo + +if [ -d "$XORGCONFIG_DIR" ]; then + pecho "Contents of $XORGCONFIG_DIR:" + ls -l "$XORGCONFIG_DIR" +else + echo "$XORGCONFIG_DIR does not exist." +fi + +echo + +KMS_CONFS_DIR=/etc/modprobe.d +KMS_CONFS=$(ls $KMS_CONFS_DIR/*-kms.conf 2>/dev/null) + +if [ -n "$KMS_CONFS" ]; then + pecho "KMS configuration files:" + for CONF in $KMS_CONFS; do + echo "$CONF:" + # Indent, and get rid of empty lines: + sed 's/^/ /' < "$CONF"|egrep -v '^\s*$' + done +else + echo "$KMS_CONFS_DIR contains no KMS configuration files." +fi + +echo + +KERNEL_VERSION=/proc/version + +if [ -e "$KERNEL_VERSION" ]; then + pecho "Kernel version ($KERNEL_VERSION):" + cat /proc/version +else + echo "No kernel version found (missing $KERNEL_VERSION)." +fi + +echo + +XORG_LOGS=$(ls -dt /var/log/Xorg.*.log 2>/dev/null) + +if [ -n "$XORG_LOGS" ]; then + pecho "Xorg X server log files on system:" + ls -dlrt /var/log/Xorg.*.log 2>/dev/null + echo + for LOG in $XORG_LOGS; do + if [ -f "$LOG" ]; then + pecho "Contents of most recent Xorg X server log file ($LOG):" + cat "$LOG" + # the log files are large; only show the most recent + break + fi + done +else + echo "No Xorg X server log files found." +fi + +echo + +if [ -x /sbin/udevadm ]; then + pecho "udev information:" + /sbin/udevadm info --export-db | awk -F '\n' -v RS='\n\n' '/E: ID_INPUT/ { print; print "" }' + echo +fi + +if [ -x /bin/dmesg ]; then + pecho "DRM Information from dmesg:" + dmesg | egrep -i 'drm|agp' + echo +fi + +# vim:set ai et sts=4 sw=4 tw=0: --- xorg-server-1.11.4.orig/debian/changelog +++ xorg-server-1.11.4/debian/changelog @@ -0,0 +1,6769 @@ +xorg-server (2:1.11.4-0ubuntu10.2) precise-proposed; urgency=low + + * Release buttons when device is disabled on suspend (LP: #968845) + - Add temporary patch 508_device_off_release_buttons.patch from upstream + + -- Chase Douglas Sat, 05 May 2012 13:17:34 -0700 + +xorg-server (2:1.11.4-0ubuntu10.1) precise-proposed; urgency=low + + [ Bryce Harrington ] + * Enable 227_null_ptr_midispcur.patch to apply + + [ Chase Douglas ] + * Update to xserver 1.12.1 for the input stack + * Drop patches merged upstream in 1.12.1: + - 501_touch_accept_end.patch + - 502_indirect_touch_window_set.patch + - 503_fix_mouse_warp.patch + - 504_implement_passive_touch_ungrab.patch + * Fix patch 506_touchscreen_pointer_emulation_checks.patch after upstream + review + * Fix various touchscreen issues (LP: #974887) + - Add temporary patch 506_touchscreen_fixes.patch, which is a combination of + multiple upstream patches + + -- Chase Douglas Thu, 19 Apr 2012 12:34:54 -0700 + +xorg-server (2:1.11.4-0ubuntu10) precise; urgency=low + + * Fix touchscreen pointer emulation (LP: #949791) + - Add temporary patch 506_touchscreen_pointer_emulation_checks.patch + + -- Chase Douglas Wed, 04 Apr 2012 16:53:33 -0700 + +xorg-server (2:1.11.4-0ubuntu9) precise; urgency=low + + * Report button press when touchscreen touch is active (LP: #972985) + - Add temporary patch 505_query_pointer_touchscreen.patch + - Fixes some compiz/unity touchscreen issues + + -- Chase Douglas Tue, 03 Apr 2012 19:04:01 -0700 + +xorg-server (2:1.11.4-0ubuntu8) precise; urgency=low + + [ Chase Douglas ] + * Fix crash at startup due to input option abi break (LP: #931397) + - Revert two commits from upstream 1.12 input stack + + [ Bryce Harrington ] + * debian/patches/227_null_ptr_midispcur.patch: + - Check for NULL pointer before dereferencing pointer from + miGetDCDevice. Fixes crash after connecting a bluetooth keyboard. + (LP: #930936) + + [ Chase Douglas ] + * Fix mouse warping and clipping (LP: #948938) + - Add temporary patch 503_fix_mouse_warp.patch + * Implement passive touch ungrab (LP: #968726) + - Add temporary patch 503_implement_passive_touch_ungrab.patch + * Bump lintian standards to 3.9.3 + + -- Chase Douglas Thu, 29 Mar 2012 18:09:19 -0700 + +xorg-server (2:1.11.4-0ubuntu7) precise; urgency=low + + * debian/patches/111_armel-drv-fallbacks.patch: + - Avoid loading the driver to test if it's available. Xorg will later load + and validate the module, and if it's already loaded it'll trigger an + error and invalidate the driver (LP: #959928) + + -- Ricardo Salveti de Araujo Tue, 20 Mar 2012 02:09:18 -0300 + +xorg-server (2:1.11.4-0ubuntu6) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Don't try to send events from the context of the SIGIO handler. That + leads to the dark side, or at least to server freezes when trying to + reveal the launcher in Unity (LP: #946954). May also fix other seemingly + random X server crashes. + - Add build-time tests to make check for barrier behaviour. These are + disabled, pending gtest, xorg-gtest, and xserver-xorg-video-dummy MIRs. + + -- Christopher James Halse Rogers Fri, 09 Mar 2012 19:16:02 +1100 + +xorg-server (2:1.11.4-0ubuntu5) precise; urgency=low + * Update to 1.12 input stack + * Drop input patches that have been merged upstream: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch + - 611-Fix-touch-punt-crash.patch + - 612-Fix-vcp-touches-corruption.patch + - 613-Keep-vcp-touch-class.patch + * Fix indirect touch grab handling (LP: #929408) + - Add temporary patch 501_touch_accept_end.patch + - Add temporary patch 502_indirect_touch_window_set.patch + + -- Chase Douglas Wed, 07 Mar 2012 15:36:20 -0800 + +xorg-server (2:1.11.4-0ubuntu4) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Make the velocity calculation more robust on screen edges. Fixes reveal + behaviour on nVidia 295.20 driver, which now clamps the pointer to the + visible screen area. (LP: #937792) + + -- Christopher James Halse Rogers Tue, 21 Feb 2012 17:04:41 +1100 + +xorg-server (2:1.11.4-0ubuntu3) precise; urgency=low + + * Fix touch class memory corruption + - Add 612-Fix-vcp-touches-corruption.patch + - Add 613-Keep-vcp-touch-class.patch + + -- Chase Douglas Mon, 13 Feb 2012 15:54:04 -0800 + +xorg-server (2:1.11.4-0ubuntu2) precise; urgency=low + + * Fix crash when punting a touch to a non-existent owner + - Add 611-Fix-touch-punt-crash.patch + + -- Chase Douglas Mon, 13 Feb 2012 12:10:02 -0800 + +xorg-server (2:1.11.4-0ubuntu1) precise; urgency=low + + [ Chase Douglas ] + * Allow for non-root config paths so xorg-gtest can be run without root + - Add 225_non-root_config_paths.patch backported from upstream + + [ Alberto Milone] + * debian/patches/226_fall_back_to_autoconfiguration.patch: + - Fall back to autoconfiguration for graphics drivers in some cases + instead of letting X fail when configuration files are available. + + [ Chase Douglas ] + * Update to 1.11.99.902 input stack + * Update to 1.11.4 for everything else + * Drop input patches that have been merged upstream: + - 220_dont_scale_indirect.patch + - 221_pointer_motion_update_fix.patch + - 222_touch_valuators_absolute.patch + - 223_indirect_touch_x_y_valuators.patch + * Add reviewed input patches that have not been merged upstream yet: + - 600-Revert-dix-deduplicate-callers-of-DeliverDeviceEvent.patch + - 601-Store-window-pointer-in-touch-listener-record.patch + - 602-Factor-out-TouchEnd-generation-and-delivery.patch + - 603-Export-TouchEventRejected-as-TouchRejected.patch + - 604-Move-AllowTouch-to-dix-touch.c-and-rename-to-TouchAc.patch + - 605-Check-for-proper-window-ID-when-processing-touch-all.patch + - 606-Implement-early-touch-reject.patch + - 607-Implement-touch-early-accept.patch + - 608-dix-fix-an-out-of-memory-crash.patch + - 609-Xi-handle-new-XIAllowEvents-request-in-inputproto-2..patch + - 610-Fix-scrolling.patch (LP: #925785) + * Bump deps on x11proto-input-dev to 2.1.99.6 + + -- Chase Douglas Fri, 10 Feb 2012 16:27:25 -0800 + +xorg-server (2:1.11.3-0ubuntu10) precise; urgency=low + + * Drop 214_glx_dri_searchdirs.patch, drisearchdirs is no longer + exported in mesa's dri.pc because of multiarch and the only consumer + (dri-alternates) is no longer used. + + -- Robert Hooker Thu, 02 Feb 2012 12:08:55 -0500 + +xorg-server (2:1.11.3-0ubuntu9) precise; urgency=low + + * debian/patches/500_pointer_barrier_thresholds.diff: + - Implement proposed XFIXES 6.0 protocol. This protocol is subject to + change, use at own risk! + * debian/control: + - Bump build-dep on x11proto-fixes to pick up new protocol definition + + -- Christopher James Halse Rogers Fri, 27 Jan 2012 20:05:42 +1100 + +xorg-server (2:1.11.3-0ubuntu8) precise; urgency=low + + * debian/patches/224_return_BadWindow_not_BadMatch.diff: + - Fix the error values of a whole slew of window-related calls. + Fixes some gnome-settings-daemon aborts in XLib (LP: #903973) + + -- Christopher James Halse Rogers Mon, 23 Jan 2012 16:09:29 +1100 + +xorg-server (2:1.11.3-0ubuntu7) precise; urgency=low + + * Fixes for relative devices + - Add 220_dont_scale_indirect.patch + - Add 221_pointer_motion_update_fix.patch + - Add 222_touch_valuators_absolute.patch + - Add 223_indirect_touch_x_y_valuators.patch + + -- Chase Douglas Thu, 19 Jan 2012 16:23:28 -0800 + +xorg-server (2:1.11.3-0ubuntu6) precise; urgency=low + + * Bump Build-Depends on x11proto-input-dev to 2.1.99.5 + + -- Chase Douglas Tue, 17 Jan 2012 22:22:57 +0100 + +xorg-server (2:1.11.3-0ubuntu5) precise; urgency=low + + * Add Breaks clause for XInput changes + - qt4-x11 < 4:4.8.0-1ubuntu2 (crashes due to XI ABI change) + - utouch-geis < 2.2.3 (infinite loop if utouch XCB backend is unavailable) + - utouch-frame < 2.1.0 (crashes due to XI ABI change) + - unity < 5.0.0 (crashes if utouch stack is unavailable) + + -- Chase Douglas Tue, 17 Jan 2012 22:03:35 +0100 + +xorg-server (2:1.11.3-0ubuntu4) precise; urgency=low + + * Merge in input changes from upstream master through commit 954bb99 + * Remove temporary patch 220_grab_event_time.patch + + -- Chase Douglas Tue, 17 Jan 2012 19:52:04 +0100 + +xorg-server (2:1.11.3-0ubuntu3) precise; urgency=low + + * Add temporary patch for fixing grab time bug + - Add 220_grab_event_time.patch + + -- Chase Douglas Wed, 11 Jan 2012 07:41:04 -0800 + +xorg-server (2:1.11.3-0ubuntu2) precise; urgency=low + + * Merge in input changes from upstream master through commit 8722ad6 + * Remove temporary patch 220_test-loop.patch, merged upstream + + -- Chase Douglas Tue, 10 Jan 2012 10:48:31 +0100 + +xorg-server (2:1.11.3-0ubuntu1) precise; urgency=low + + * New upstream bugfix release + * Merge in input changes from upstream master through commit e7df42a + * Bump input ABI + * Bump x11proto-input-dev build dependency version + * Add temporary patch for fixing a test case loop + - Add 220_test-loop.patch + + -- Chase Douglas Thu, 22 Dec 2011 12:11:39 -0800 + +xorg-server (2:1.11.2.902-1ubuntu1) precise; urgency=low + + * Drop prototype XI multitouch patches + * Merge in input changes from upstream master through commit 7da7aa9 + * Bump input ABI + * Refresh patches + - Drop 210_pixman_null_ptr_check.patch, merged upstream + + -- Chase Douglas Wed, 14 Dec 2011 16:06:37 -0800 + +xorg-server (2:1.11.2.902-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release candidate (1.11.3 RC2) + + -- Cyril Brulebois Sat, 10 Dec 2011 22:36:42 +0100 + +xorg-server (2:1.11.2.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.3 RC1): + - As usual: Fixes for various crashes and correctness issues. + - In particular: Fix for crash when starting a game (in wine) twice + (Closes: #637448). + - Also: Fix crashes with server regeneration (Closes: #649420). + * Add some lintian overrides: + - xserver-xorg-core: breaks-without-version against virtual packages + is perfectly OK. + * Don't forget to ship xorg.conf.d(5) in xserver-xorg-core. + + -- Cyril Brulebois Tue, 29 Nov 2011 17:04:09 +0100 + +xorg-server (2:1.11.1.902-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC2): + - Fixes for various crashes and correctness issues. + + -- Cyril Brulebois Wed, 02 Nov 2011 11:10:03 +0100 + +xorg-server (2:1.11.1.901-2) unstable; urgency=high + + * Merge from upstream to get CVEs fixed: + - Fix CVE-2011-4028: File disclosure vulnerability. + - Fix CVE-2011-4029: File permission change vulnerability. + * Set urgency to “high” accordingly. + + -- Cyril Brulebois Thu, 20 Oct 2011 15:04:53 +0200 + +xorg-server (2:1.11.1.901-1) unstable; urgency=low + + * New upstream release candidate (1.11.2 RC1) + + Disable check of double-aligned in test/input.c on Renesas SH + (closes: #636673) + * Use dpkg-buildflags to enable hardening with recent dpkg. + * Enable PIE with DEB_BUILD_MAINT_OPTIONS, but add -Bsymbolic to LDFLAGS to + reduce performance loss from PIE. + * Pass --disable-silent-rules to configure. + * Drop dh_testroot from clean target. + * Add dummy build-{arch,indep} targets depending on build. + + -- Julien Cristau Sat, 15 Oct 2011 19:05:41 +0200 + +xorg-server (2:1.11.1-1) unstable; urgency=high + + [ Cyril Brulebois ] + * Bump glproto dependency for xserver-xorg-dev (Closes: #639651). + * Set urgency to “high” since there were no issues other than the libwfb + one (see below) in the last 4 weeks. + + [ Julien Cristau ] + * New upstream bugfix release + - belatedly bump extension ABI major + - add missing fbFoo → wfbFoo renames for libwfb.so, fixing issues with the + nvidia driver (closes: #641344) + + -- Cyril Brulebois Sat, 24 Sep 2011 11:23:17 +0200 + +xorg-server (2:1.11.0-1ubuntu1~prep1) oneiric; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes + - Fill in later + * Drop all XI2.1 multitouch patches, pending Chase's rework. + * 217_revert_bgnonevisitwindow.patch: + * 219_fedora-pointer-barriers.diff: + - Drop; included in the new upstream release. + + -- Christopher James Halse Rogers Sat, 10 Sep 2011 21:26:49 -0700 + +xorg-server (2:1.11.0-1) unstable; urgency=low + + [ Julien Cristau ] + * Make xvfb, xnest, xserver-xephyr and xserver-xfbdev provide the xserver + virtual package again. + + [ Cyril Brulebois ] + * New upstream release: + - Fix assertion failure when calling dixSetPrivate (Closes: #632549). + Thanks, Mohammed Sameer! + - Fix memcpy abuse in the fb layer (Closes: #626682). + + -- Cyril Brulebois Sun, 28 Aug 2011 12:53:06 +0200 + +xorg-server (2:1.10.99.901+git20110731-1) experimental; urgency=low + + [ Cyril Brulebois ] + * New upstream release candidate. + * Bump serverminver, as well as input and video ABI. + * Adapt 15-nouveau.diff to cope with the glxdricommon-ification of + GLX probing. Nouveau users might still see an error (EE) mentioning + the fallback to software rendering. + * Bump pixman build-dep/dep to 0.21.8. + * Bump xutils-dev build-dep for new macros. + * Drop libglib2.0-dev build-dep, no longer needed for unit tests. + * Bump x11proto-fixes-dev build-dep for pointer barriers support. + + [ Julien Cristau ] + * Update to git HEAD. + + DIX: Set backgroundState correctly for root window (Closes: #632134) + * Bump xproto, dri2proto and glproto build-dependencies. + * Merge packaging changes from the 1.10.x branch: + + Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + + And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + Bump Standards-Version to 3.9.2 (no changes). + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + * Drop obsolete 20-workaround-36986.diff. + * Fix patch stamp dependency. + + -- Julien Cristau Sun, 31 Jul 2011 22:15:07 +0200 + +xorg-server (2:1.10.4-1ubuntu1) oneiric; urgency=low + + [ Christopher James Halse Rogers ] + * Drop i8xx-disablement patch. 2.6.39 and later kernels contain a patch + which alledgedly fixes the cache-incoherency problems. (LP: #817814) + + [ Ricardo Salveti de Araujo ] + * debian/patches/112_armel-pvr-drv.patch: + - Include support for the pvr driver available on OMAP 4 (LP: #828494) + + [ Timo Aaltonen ] + * Merge from Debian unstable. + - Fixes Xephyr assert failure in dixGetPrivateAddr (LP: #821090) + * debian/rules: Modify the patch stampdir creation. + * Update patch 500_xi2.1.patch to apply. + * Refresh patches. + * debian/rules: Add PATH for the xvfb-run check, otherwise Xvfb is not found. + * debian/rules: Shift the xvfb-run test to be run later, to ensure that the + binaries are installed. + + [ Bryce Harrington ] + * debian/rules: Add check target invoking xvfb-run to test that it works + * debian/control: Add build dependency on xauth, required by xvfb-run + + [ Chase Douglas ] + * Add fixes for touch grab handling, courtesy of Carlos Garnacho + - 505_Xi_ensure_replayed_touch_events_have_devices.patch + - 506_Xi_ensure_touch_events_update_currentTime.patch + - 507_dix_Ensure_touch_events_are_delivered_to_next_client.patch + + -- Timo Aaltonen Fri, 09 Sep 2011 14:13:07 +0300 + +xorg-server (2:1.10.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + -- Cyril Brulebois Wed, 24 Aug 2011 10:44:42 +0200 + +xorg-server (2:1.10.3-1) unstable; urgency=medium + + [ Cyril Brulebois ] + * New upstream release (with just a version bump). + * Remove the Replaces: xdmx from xdmx-tools, that was before lenny. + * Add a Breaks: libgl1-mesa-dri-no-multiarch, to handle upgrades from + squeeze-backports (without multiarch) to wheezy (with multiarch). + * Set urgency to “medium” to speed things up. Migration to testing is + a prerequisite for squeeze backports. + + [ Julien Cristau ] + * Merge packaging changes lost from the 1.7 (squeeze) branch: + + Add Breaks on drivers abandoned between lenny and squeeze. This helps + apt decide to remove them instead of removing all of X. Thanks, David + Kalnischkies! + + Set default xkb rules to evdev on linux, to work around a wrong default in + configure.ac and an Xorg issue where it reverts to the default on reset. + Thanks to Bastian Blank for the report. + + -- Cyril Brulebois Sun, 07 Aug 2011 19:35:07 +0200 + +xorg-server (2:1.10.2.902-1ubuntu3) oneiric; urgency=low + + * debian/patches/220_xi21_always_deliver_raw_events.diff: + - Backport patch from the mailing list to deliver raw events regardless of + grab state. Bon appétit, DX! + + -- Christopher James Halse Rogers Mon, 11 Jul 2011 10:03:26 +1000 + +xorg-server (2:1.10.2.902-1ubuntu2) oneiric; urgency=low + + [ Bryce Harrington ] + * rules: patch needs to depend on stampdir, else it doesn't get created, + and 'debian/rules patch' malfunctions. + + [ Chase Douglas ] + * Fix event handling when neither X nor Y coordinates are set (LP: #806256) + - Added 504_fix_no_coords.patch + + [ Christopher James Halse Rogers ] + * rules: Add both /usr/lib/xorg/extra-modules and + /usr/lib/$MULTIARCH/xorg/extra-modules for extra modules. + Fixes GLX for the proprietary drivers after a mesa upgrade (LP: #807209) + + -- Christopher James Halse Rogers Fri, 08 Jul 2011 13:16:59 +1000 + +xorg-server (2:1.10.2.902-1ubuntu1) oneiric; urgency=low + + * Merge from Debian unstable. (LP: #441653) + - Update 500_xi2.1.patch to apply. + - Drop patch 218_randr-check-rotated-virtual-size-limits-correctly.diff, + fixed upstream. + * Update the crtc confinement patch with one that should work, with + further fixes from upstream. (LP: #389519) + * Dropped a bunch of old Breaks from xserver-xorg-core. + + -- Timo Aaltonen Tue, 05 Jul 2011 16:22:23 +0300 + +xorg-server (2:1.10.2.902-1) unstable; urgency=low + + * New upstream release (1.10.3 rc2): + - DIX: Set backgroundState correctly for root window (Closes: #632134). + * Drop 20-workaround-36986.diff, fixed upstream. + * Bump Standards-Version to 3.9.2 (no changes). + + -- Cyril Brulebois Sat, 02 Jul 2011 11:58:58 +0200 + +xorg-server (2:1.10.2-2) unstable; urgency=low + + * Bump libgl1-mesa-dri versioned Recommends to 7.10.2-4, to lower the + odds of having a server built against multiarched mesa, installed + along a pre-multiarch mesa. The Breaks in mesa packages take care of + the other way round already. + * And since the server's binNMU managed to migrate to testing way too + early, add a Breaks against pre-multiarch libgl1-mesa-dri and + libgl1-mesa-dri-experimental. + + -- Cyril Brulebois Fri, 17 Jun 2011 18:09:36 +0200 + +xorg-server (2:1.10.2-1ubuntu1) oneiric; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable, remaining changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + + Enable multitouch gestures. + - control: + + Xvfb depends on xauth, x11-xkb-utils, recommends libgl1-mesa-dri. + (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternative module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 217_revert_bgnonevisitwindow.patch: + Revert a commit that causes brief graphical corruption. (LP: 726807) + + 218_randr-check-rotated-virtual-size-limits-correctly.diff: + Fix rotation with nvidia driver. (LP: 740933) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + + 503_fix_masked_transformed_valuators.patch: + Fix masked transformed valuator handling (LP #774938) + * Drop patch 215_glx_drawable_refcounting.diff, similar fix included + upstream. + * Drop patch 121_only_switch_vt_when_active.diff, doesn't seem to + work anymore. + * videoabiver, inputabiver, xserver-xorg-dev.install: + Drop changes that are obsolete post-natty. + * Add 219_fedora-pointer-barrier.diff: + Pointer barrier and cursor confinement patch backported to 1.10. + + [ Christopher James Halse Rogers ] + * debian/control: + Bump mesa-common-dev build-dep to pick up multiarch DRI paths. + + -- Christopher James Halse Rogers Wed, 15 Jun 2011 10:51:18 +1000 + +xorg-server (2:1.10.2-1) unstable; urgency=low + + * New upstream release. + * Add 20-workaround-36986.diff to avoid test failures on *i386. + * On GNU/kFreeBSD, enable HAL support for the main build, but disable it + for the udeb build, thanks to Robert Millan (Closes: #596586). + + -- Cyril Brulebois Mon, 30 May 2011 11:37:37 +0200 + +xorg-server (2:1.10.1.901-1) experimental; urgency=low + + * New upstream release (1.10.2 rc1): + - Comes with some Xi fixes. + - Comes with many GLX fixes. + + -- Cyril Brulebois Sat, 07 May 2011 13:27:28 +0200 + +xorg-server (2:1.10.1-2) unstable; urgency=low + + * Build xserver-xorg-core-udeb on hurd-i386. Thanks, Samuel Thibault! + * Upload to unstable. + + -- Julien Cristau Thu, 28 Apr 2011 13:28:58 +0200 + +xorg-server (2:1.10.1-1ubuntu3) oneiric; urgency=low + + * Add 218_randr-check-rotated-virtual-size-limits-correctly.diff + - Fix rotation with nvidia driver. (LP: #740933) + + -- Timo Aaltonen Fri, 20 May 2011 00:07:11 +0300 + +xorg-server (2:1.10.1-1ubuntu2) oneiric; urgency=low + + * Fix masked transformed valuator handling (LP: #774938) + - Added debian/patches/503_fix_masked_transformed_valuators.patch + + -- Bryce Harrington Tue, 17 May 2011 14:44:58 -0700 + +xorg-server (2:1.10.1-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental (LP: #757972) + + -- Timo Aaltonen Tue, 19 Apr 2011 16:12:14 +0300 + +xorg-server (2:1.10.1-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Tue, 19 Apr 2011 03:08:08 +0200 + +xorg-server (2:1.10.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. + - dropped patches, included upstream: + 213_xichangehierarchy-check-oom.patch + 216_fix_sdksyms_build.diff, included upstream. + 218_getValuatorEvents_cleanup.patch + 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Timo Aaltonen Mon, 11 Apr 2011 09:51:56 +0300 + +xorg-server (2:1.10.0.902-1) experimental; urgency=low + + * New upstream release (1.10.1 rc2). + + -- Cyril Brulebois Sat, 09 Apr 2011 04:18:28 +0200 + +xorg-server (2:1.10.0.901-1) experimental; urgency=low + + * New upstream release (1.10.1 rc1). + * Relax build-dep and dep on x11proto-randr-dev since the XRandR 1.4 + bits were finally reverted upstream. + * Remove patch: 16-construct-paths-in-doxygen.conf.diff (merged + upstream). + * Pass --enable-xcsecurity to the main build to restore the XC-SECURITY + extension, thanks to Stefan Fritsch's report (Closes: #599657). + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + +xorg-server (2:1.10.0-0ubuntu3) natty; urgency=low + + [ Bryce Harrington ] + * patches/111_armel-drv-fallbacks.patch: Always fallback to -fbdev, + not just when no other X driver matches. (Thanks jcristau) + + [ Chase Douglas ] + * Fix jumpy cursor in XI 1.x applications. + (LP: #736500) + - Added 218_getValuatorEvents_cleanup.patch + - Added 219_xi1_handle_noncontinuous_valuator_data.patch + + -- Bryce Harrington Thu, 31 Mar 2011 23:58:07 -0700 + +xorg-server (2:1.10.0-0ubuntu2) natty; urgency=low + + [ Chase Douglas ] + * patches/500_xi2.1.patch: Process ownership properly when activating an + async passive grab. + (LP: #733483) + + [ Bryce Harrington ] + * 217_revert_bgnonevisitwindow.patch: Cherrypick from upstream. Drops + recent change that inhibits drawing backfill for non-bg-None windows. + This causes a regression on -ati (at least) where menus and other + windows display graphical corruption briefly. + (LP: #726807) + + -- Bryce Harrington Thu, 24 Mar 2011 15:27:40 -0700 + +xorg-server (2:1.10.0-0ubuntu1) natty; urgency=low + + * Update to new upstream final release. + + Drop 16-construct-paths-in-doxygen.conf.diff; included in new upstream. + * debian/patches/216_fix_sdksyms_build.diff: + + Cherry-pick from 1.10 branch, fixing the stale sdksyms.c file picked up + in the udeb build, causing the udeb build to fail with missing symbols. + * Merge from unreleased Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + + Bump dependency on x11proto-input-dev for Xi 2.1 + + Drop linux-any specifier to make pbuilder less narky. + + Bump build-depends on mesa-common-dev to pick up dri.pc DRI search + paths change for 214_glx_dri_searchdirs.patch + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + + 215_glx_drawable_refcounting.diff: + Prevents segfault on logout and server regenerate, and possibly other + times. (LP #711422) + + 500_xi2.1.patch, + 501_xf86CoordinatesToWindow.patch, + 502_gestures-extension.patch: + Add Xi 2.1 and Gesture extension support. + * debian/serverminver: + - Bump to 1.10.0-0ubuntu1~ for Xi 2.1 ABI + * New upstream release fixes crash in Record, trigerred by x11vnc + (LP: #525066) + * Refresh 500_xi2.1.patch for new upstream version + * debian/videoabiver: + - Bump to 10 for XRandR 1.4 revert. + + -- Cyril Brulebois Wed, 30 Mar 2011 02:22:56 +0200 + + +xorg-server (2:1.9.99.903-1) experimental; urgency=low + + * New upstream release candidate (1.10 rc3). + * Remove patch: 17-fix-ftbfs-on-sparc.diff (merged upstream). + * Remove patch: 20-update-gpu-pitch.diff (merged upstream). + * Refresh patch: 07-xfree86-fix-build-with-xv-disabled.diff + * Replace patch fixing out-of-tree-build: + - 16-oot-build.diff (dirty local hack). + + 16-construct-paths-in-doxygen.conf.diff (from upstream, + without the gitignore hunk to get patching working). + * Bump video ABI version, and serverminver accordingly. + + -- Cyril Brulebois Fri, 25 Feb 2011 15:22:39 +0100 + +xorg-server (2:1.9.99.902-3) experimental; urgency=low + + * Merge from master up to 93a7399370. + * New patch: 17-fix-ftbfs-on-sparc.diff; let's try it for real before + asking for its being merged upstream. + * Refresh all patches. + + -- Cyril Brulebois Wed, 23 Feb 2011 13:36:13 +0100 + +xorg-server (2:1.9.99.902-2ubuntu2) natty; urgency=low + + [ Timo Aaltonen ] + * Remove 169_mipointer_nullptr_checks.patch, fixed in another way + upstream since 1.6.1.901. + + [ Chase Douglas ] + * Cancel touch clients if emulated button press is delivered. + (LP: #725191) + * Check slave device touch selection mask during implicit grab. + (LP: #725241) + * Cancel slave touch selections when attached to master device. + (LP: #723904) + * Check for touch selections only when there are active clients. + (LP: #723900) + * Prevent pointer motion when more than one touch on touchpad. + (LP: #730881) + + [ Bryce Harrington ] + * Drop specification for linux-any. Breaks pbuilder test builds. + + -- Chase Douglas Mon, 07 Mar 2011 14:28:02 -0500 + +xorg-server (2:1.9.99.902-2ubuntu1) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP #406226) + + Enable xcsecurity. (LP #247537) + + Add --with-extra-module-dir to support GL alternatives. + + Mention Ubuntu support in builderstring rather than package uploader's + email address. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP #500102) + + Add breaks for incompatible drivers. (LP #614993) + + Drop libaudit-dev from build-deps. + + Build-depend on newer mesa to pick up DRI search paths variable. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 105_nvidia_fglrx_autodetect.patch: + Load proprietary drivers automatically when installed. + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + + 208_switch_on_release.diff: + Switch keyboard layouts on key-release rather than key-press + (LP #36812) + + 209_add_legacy_bgnone_option.patch: + Add -nr as a synonym for -background none until all ?DM are updated for + the new option. + + 210_pixman_null_ptr_check.patch: + Catch NULL pointer access after pixman_image_create_bits() failure + (LP #705078) + + 213_xichangehierarchy-check-oom.patch: + Add NULL pointer check for out-of-memory conditions. (LP #720445) + + 214_glx_dri_searchdirs.patch: + Search in same paths as mesa for DRI drivers for AIGLX so we can handle + UMS fallback for radeon gracefully. + * 211_glx_fix_bindtextimageext_length_check.patch: + * 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Drop; these cherry-picks are included in 1.10RC2 + * 214_glx_dri_searchdirs.patch: + - Fix dlclose/free snafu. (LP: #722563) + - Fix nouveau check to downgrade missing DRI error messages to info. + We don't support nouveau's 3D, so let's not complain too strenuously + when it's not installed. + * 215_glx_drawable_refcounting.diff: + - Refcount GLXDrawables to avoid use-after-free crashes. Patch from + xorg-devel mailing list. Prevents segfault on logout and server + regenerate, and possibly other times. (LP: #711422) + * debian/inputabiver, + debian/videoabiver, + debian/xserver-xorg-dev.install + - Temporarily re-add these to xserver-xorg-dev so we don't need to merge + all the driver changes from Debian en masse. These should be dropped + once all drivers have been merged from Debian, and certainly in Natty+1. + * debian/serverminver: + - Include 2ubuntu1 string; Xi 2.1 bumps the minor input ABI, so drivers + built against it need the Xi 2.1 patched server. + + [ Timo Aaltonen ] + * debian/patches/216_dix-valuator-count-of-0-is-valid.diff: + - For all but motion and proximity events, having no valuators is ok. + Regression from 1.9, keyboard events are not converted to protocol + events. (LP: #714696) + + [ Chase Douglas ] + * Add in preliminary xi2.1 support + - Added 500_xi2.1.patch + - Moved 202_xf86CoordinationsToWindows.patch to + 501_xf86CoordinatesToWindow.patch + - Moved 203_gestures-extension.patch to 502_gestures-extension.patch + - Bump dependency on x11proto-input for xi 2.1 + + -- Christopher James Halse Rogers Wed, 23 Feb 2011 09:40:07 +1100 + +xorg-server (2:1.9.99.902-2) experimental; urgency=low + + * Bump dependency on x11proto-randr-dev, needed since xorg-server.pc + pulls a newer randrproto version. + * Merge from debian-unstable (picking packaging updates from 2:1.9.4-3). + * Mention some basic checks to perform when updating to a new upstream + release, in README.source: ABI bumps and SDK_REQUIRED_MODULES updates. + * Accordingly: + - Bump the x11proto-xext-dev dependency. + - Don't bump the x11proto-kb-dev dependency (even etch had a + sufficient version). + + -- Cyril Brulebois Sun, 20 Feb 2011 07:02:20 +0100 + +xorg-server (2:1.9.99.902-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.10 rc1) + * Drop 16-xaa-fbcomposite-fix-negative-size.diff, the mod macro that this + patch fixes is no longer used. + * debian/control: + - Bump x11proto-randr-dev and x11proto-xext-dev build-deps to 1.3.99 and + 7.1.99 for new XRandR and XSync extension protocols. + + [ Julien Cristau ] + * Bump serverminver and ABI versions. + + [ Cyril Brulebois ] + * New upstream release (1.10 rc2). + * bug script: Report libGL-related diversions. + * Bump serverminver again, since ABI_XINPUT_VERSION was bumped from 12.0 + to 12.2. + * Update debian/copyright from upstream COPYING. + * Add patch to work around out-of-tree issues: 16-oot-build.diff + + -- Cyril Brulebois Sat, 19 Feb 2011 15:29:54 +0100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu6) natty; urgency=low + + * debian/patches/214_glx_dri_searchdirs.patch: + - Search for DRI drivers for AIGLX in the same set of directories as mesa. + Allows us to fall back to the classic radeon drivers when KMS is not + available. + * debian/rules: + - --disable-builddocs → --disable-devel-docs to match upstream rename. + Makes local builds faster and less prone to doxygen errors. + * debian/control: + - Bump build-depends on mesa to pick up new drisearchdirs variable in + dri.pc + + -- Christopher James Halse Rogers Fri, 18 Feb 2011 17:03:46 +1100 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu5) natty; urgency=low + + * Add 213_xichangehierarchy-check-oom.patch: Another NULL pointer check + for out-of-memory conditions, this time leading to a segfault in an + unchecked calloc in XISendDeviceHierarchyEvent(). + (LP: #720445) + + -- Bryce Harrington Wed, 16 Feb 2011 16:46:35 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu4) natty; urgency=low + + * Add 211_glx_fix_bindtextimageext_length_check.patch, + 212_fix_request_length_check_for_createglxpbuffersgix.patch: + - Correct wrong request size match for xGLXCreateGLXPbufferSGIXReq. + This can result in some invalid BadLength errors. + (LP: #714280) + + -- Bryce Harrington Mon, 14 Feb 2011 12:07:45 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu3) natty; urgency=low + + * Restore 208_switch_on_release.diff - the patch does not appear to be + upstream actually. Users confirm the fix regressed without it. + (LP: #711842) + * Add 210_pixman_null_ptr_check.patch: pixman_image_create_bits() can + return NULL under a variety of circumstances, thus needs checked + before dereferencing it in the pixman_image_set_has_client_clip() + call. + (LP: #705078, deb: 596155, fdo: 28882) + + -- Bryce Harrington Thu, 03 Feb 2011 22:42:52 -0800 + +xorg-server (2:1.9.99.901+git20110131.be3be758-0ubuntu1) natty; urgency=low + + * Merge from (unreleased) debian-experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Refresh 121_only_switch_vt_when_active.diff for new upstream. + * Drop 187_edid_quirk_hp_nc8430.patch; upstream. + * Drop 189_xserver_1.5.0_bg_none_root.patch; functionality now upstream. + * Refresh 190_cache-xkbcomp_output_for_fast_start_up.patch for new upstream. + * Drop 197_xvfb-randr.patch: + - miRandR, which this used, has been removed from the server. + * Drop 204_fix-neg-sync-transition.patch; upstream. + * Drop 207_dga_master_device.patch; upstream. + * Drop 208_switch_on_release.diff; upstream. + * debian/patches/209_add_legacy_bgnone_option.patch: + - Add "-nr" as a synonym for "-background none" to ease the transition from + the old 189_xserver_1.5.0_bg_none_root.patch patch. Can be dropped once + all the ?DM have been updated to use the new option. + * debian/control: + - Add Breaks: to xserver-xorg-video-8 and current fglrx. These proprietary + drivers don't yet have appropriate dependency information, so manually + handle them here to prevent broken upgrades. + + -- Christopher James Halse Rogers Mon, 31 Jan 2011 19:45:19 +1100 + +xorg-server (2:1.9.4-3) unstable; urgency=low + + * Maintainer script clean-up: + - xserver-xorg-core.preinst.in: Remove, 1.5 is long gone. + - xserver-xorg-core.postinst.in: Remove, 1.5 is long gone, and 1.7.4 + was between lenny and squeeze. + - xserver-xorg-core.postrm.in: Rename as xserver-xorg-core.postrm, + handling upgrades from 1.5 is no longer needed, only keep the logs + removal and the #DEBHELPER# placeholder. + * Move remaining xsfbs bits to debian/rules: + - Create/clean stampdir/. + - Use quilt.make, $(QUILT_STAMPFN), unpatch. + - Define SOURCE_NAME and SOURCE_VERSION. + * Remove debian/xsfbs accordingly. + * Remove reference to xsfbs in README.source accordingly. + * Add patch: 20-update-gpu-pitch.diff (from upstream bug 33929), fixing + issues with the radeon driver (Closes: #613957). + + -- Cyril Brulebois Sun, 20 Feb 2011 05:35:50 +0100 + +xorg-server (2:1.9.4-2) unstable; urgency=low + + * Put an end to the dependency hell! Now that we have proper + dependencies between drivers and the server, remove xserver-xorg from + xserver-xorg-core's Depends (Closes: #362313). In a nutshell, one may + want to choose between installing: + - xserver-xorg-core: the server itself, with no strings attached. + - xserver-xorg: pulls the server and drivers, contains the X wrapper + and some documentation. + - xorg: pulls xserver-xorg as well as various X11 clients and fonts. + * bug script: Report KMS configuration files and their contents. + * bug script: Keep only one lspci call (with proper filtering), which + makes PCI IDs come back. + * bug script: Report libGL-related diversions. + * Stop providing xorg-input-abi-11.0 and xorg-video-abi-8.0 now that + drivers have reached unstable. + * Merge server-1.9-branch up to 0a4b0de9af. + + -- Cyril Brulebois Wed, 16 Feb 2011 23:17:07 +0100 + +xorg-server (2:1.9.4-1) unstable; urgency=low + + * The “squeeze is released, target sid!” upload. + * New upstream release. + * Unfuzzy all patches. + * Get rid of long obsolete NEWS file. + * Replace “--remaining-packages” with “-Nfoo -Nbar” in the “dh_strip -s” + call, to avoid non-stripped binaries if the build is resumed. + * Use “dh_prep” instead of deprecated “dh_clean -k”. + * Bump debhelper build-dep accordingly. + * Introduce dh_xsf_substvars, to be used in driver packages to set + appropriate substitution variables for Depends and Provides, before + calling dh_gencontrol. Ship it in xserver-xorg-dev. + * Also ship a debhelper sequence: xsf.pm, to insert dh_xsf_substvars + before dh_gencontrol. Usage: “dh $@ --with xsf” when using dh. + * Get rid of inputabiver and videoabiver files, they've been deprecated + for a while, and drivers should all have switched by now. + * rules: Only read the first line of debian/serverminver to set the + serverminver variable, used to prepare xinputdep and videodrvdep + files. + * rules: Keep only the major ABI version from pkg-config's output to + build xorg-{input,video}-abi-$ABI. To handle minor ABI versions, we + have the serverminver mechanism. + * To avoid having to binNMU all drivers to update their Depends from + xorg-*-abi-$MAJOR-$MINOR to xorg-*-abi-$MAJOR, add xorg-video-abi-8.0 + and xorg-input-abi-11.0 to the server's Provides temporarily (until + the next ABI bump). + * Add ${videoabi}, ${inputabi} to the udeb's Provides. There's no reason + for udebs to have loose dependencies. + * Accordingly, copy server's substvars as udeb's substvars once the + videoabi/inputabi variables are computed. + * Add an abibumpcheck target which checks for xinput and videodrv ABI + updates, based on the versions stored in debian/serverminver; make + clean depend on it to make sure such an update is noticed at the very + beginning of the build. + * Add current versions to debian/serverminver accordingly. + * Remove “xserver” from Provides, it's deprecated. + * Use architecture wildcards for build-deps. + * Make xserver-xfbdev linux-any; add armhf and powerpcspe to the udeb + (Closes: #585697, #605764). + * Cherry-pick, thanks to Samuel Thibault (Closes: #590715): + - xserver: enable TLS even if AIGLX is not enabled + * Update Uploaders list. Thanks, David & Steve & Brice! + * Bump Standards-Version to 3.9.1 (no changes needed). + + -- Cyril Brulebois Sat, 05 Feb 2011 10:40:55 +0100 + +xorg-server (2:1.9.3.902-1) experimental; urgency=low + + * New upstream release (1.9.4 rc2). + * Improve bug script: + - Stop reporting about roster and checksum for config file and server + symlink, they are no longer used. + - Replace printf with echo everywhere, it's slightly more readable and + all lines are newline-terminated anyway. + - Also use a “pecho” (pretty echo) function to underline some strings, + making the output slightly more readable. + - Fix listing xorg.conf.d's contents. Previously, that was only done + if xorg.conf existed. + - Check for local libraries by running ldd on the server. + - Check for obsolete libraries in the same way (/usr/X11R6/lib might + still exist in some cases, and be referenced in /etc/ld.so.conf, so + using ldd is sufficient to find out, see #546836 for an example). + + -- Cyril Brulebois Mon, 31 Jan 2011 14:00:41 +0100 + +xorg-server (2:1.9.3.901-1) experimental; urgency=low + + * New upstream release (1.9.4 rc1). + + -- Cyril Brulebois Sun, 09 Jan 2011 03:10:13 +0100 + +xorg-server (2:1.9.2.902-1) experimental; urgency=low + + * New upstream release (1.9.3 rc2). + * Drop 06_dont_trap_access_to_timer_and_keyboard.diff, merged upstream. + + -- Cyril Brulebois Sun, 05 Dec 2010 02:16:14 +0100 + +xorg-server (2:1.9.2-1) experimental; urgency=low + + * New upstream release. + + -- Cyril Brulebois Wed, 10 Nov 2010 00:10:19 +0100 + +xorg-server (2:1.9.0.902-1ubuntu4) natty; urgency=low + + * Add 208_switch_on_release.diff: Perform keyboard layout switches on + key-release rather than key-press events. This solves a very + long-standing issue where e.g. ++ fails when + ctrl+shift is configured for layout switching. + (LP: #36812) +2A + -- Bryce Harrington Thu, 06 Jan 2011 14:35:59 -0800 + +xorg-server (2:1.9.0.902-1ubuntu3) natty; urgency=low + + * Add 207_dga_master_device.patch: Cherrypick from upstream xserver git + to fix crash with a bluetooth keyboard when using XBMC full screen. + (LP: #597895) + + -- Bryce Harrington Thu, 06 Jan 2011 12:17:16 -0800 + +xorg-server (2:1.9.0.902-1ubuntu2) natty; urgency=low + + [ Christopher James Halse Rogers ] + * Cherry-pick 3effb61e from server-1.9 branch. Fixes a typo in Xinerama + support which caused Qt apps to crash X when using Xinerama multi-head + (LP: #650539) + + [ Robert Hooker ] + * Add 105_nvidia_fglrx_autodetect.patch, enables fglrx and nvidia to work + without an xorg.conf. + * debian/local/64-xorg-xkb.rules, control: Use keyboard-configuration + information for keymaps (/etc/default/keyboard) + + -- Robert Hooker Wed, 05 Jan 2011 11:29:17 -0500 + +xorg-server (2:1.9.0.902-1ubuntu1) natty; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - rules: + + Disable SELinux, libaudit-dev is not in main yet. (LP: #406226) + + Enable xcsecurity. (LP: #247537) + + Add --with-extra-module-dir to support GL alternatives. + - control: + + Xvfb depends on xauth, x11-xkb-utils. (LP: #500102) + + Add breaks for incompatible drivers. (LP: #614993) + + Drop libaudit-dev from build-deps. + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - local/xvfb-run*: Add correct docs about error codes. (LP #328205) + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP: #371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP: #459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP: #516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: #616678) + + 204_fix-neg-sync-transition.patch: + Fixes gnome screensaver fade being uninterruptable. (LP: #595555) + + 206_intel_8xx_default_to_fbdev.patch: + Makes 8xx class intel GPUs default to fbdev for stability. (LP: #633593) + * Drop 205_udev-product-ids.patch, merged upstream. + + -- Robert Hooker Mon, 18 Oct 2010 11:19:33 -0400 + +xorg-server (2:1.9.0.902-1) experimental; urgency=low + + * New upstream release (1.9.1 rc2). + * Drop 20-Revert-for-bug-30267.diff, merged upstream. + + -- Cyril Brulebois Sat, 16 Oct 2010 15:24:48 +0200 + +xorg-server (2:1.9.0.901-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release (1.9.0): + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + + [ Cyril Brulebois ] + * New upstream release (1.9.1 rc1). + * Add patch: 20-Revert-for-bug-30267.diff, to fix FTBFS due to test + failures, see https://bugs.freedesktop.org/show_bug.cgi?id=30267 for + reference. + * Bump xutils-dev build-dep for new macros. + * Remove --disable-multibuffer from configure flags, that extension is + gone for real now. + + -- Cyril Brulebois Tue, 12 Oct 2010 22:13:20 +0200 + +xorg-server (2:1.9.0-0ubuntu6) maverick; urgency=low + + [ Chase Douglas ] + * Fix udev USB product ID parsing (LP: #628214) + - debian/patches: + + 205_udev-product-ids.patch + + [ Christopher James Halse Rogers ] + * debian/patches/206_intel_8xx_default_to_fbdev.patch: + - Don't autoload the intel driver on i830, i845g and i855. These are + still too unstable with KMS/GEM. X will autoload the fbdev driver + (if using KMS) or the vesa driver instead. (LP: #633593) + + -- Christopher James Halse Rogers Mon, 13 Sep 2010 18:48:54 +1000 + +xorg-server (2:1.9.0-0ubuntu5) maverick; urgency=low + + * debian/control: + - fix duplicated breaks for xserver-xorg-video-v4l + + -- Michael Vogt Wed, 08 Sep 2010 10:57:49 +0200 + +xorg-server (2:1.9.0-0ubuntu4) maverick; urgency=low + + * debian/control: + - add more "breaks" for leftover drivers that have no + xserver 1.9 abi version, thanks to Jean-Baptiste Lallement + (LP: #614993) + + -- Michael Vogt Tue, 31 Aug 2010 10:52:29 +0200 + +xorg-server (2:1.9.0-0ubuntu3) maverick; urgency=low + + * debian/control: + - add additional breaks for video drivers that have no ABI for + xserver 1.9 (LP: #614993) + - merge the "breaks" list from the debian git tree + + -- Michael Vogt Tue, 31 Aug 2010 10:04:01 +0200 + +xorg-server (2:1.9.0-0ubuntu2) maverick; urgency=low + + * debian/control: + - add explict breaks from xserver-xorg-core against + xserver-xorg-video-v4l (<< 1:0.2.0-4ubuntu1) to ensure that + upgrades with universe disabled work (LP: #614993) + + -- Michael Vogt Mon, 30 Aug 2010 15:40:07 +0200 + +xorg-server (2:1.9.0-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + + 203_gestures-extension.patch: + + 202_xf86CoordinationsToWindows.patch: + Add gesture extension support (LP: 616678) + + debian/serverminver: + Bump for gesture support + * New upstream release: + - Fixes crash in DamageUnregister on session close (LP: #343694) + - Fixes crash with extremely large windows exposed by xpdf (Closes: #320627) + * Drop 17-fix-DRI2-segfault-when-clientGone.diff: fixed upstream in more + generality. + * debian/patches/204_fix-neg-sync-transition.patch: + - Fix edge case in SYNC extension resulting in GNOME screensaver's + fade-to-screensaver being uninteruptible. (LP: #595555) + + -- Christopher James Halse Rogers Tue, 24 Aug 2010 15:44:10 +1000 + +xorg-server (2:1.8.99.905-1ubuntu3) maverick; urgency=low + + * Bump debian/serverminver for gesture support + + -- Chase Douglas Fri, 20 Aug 2010 16:35:22 -0400 + +xorg-server (2:1.8.99.905-1ubuntu2) maverick; urgency=low + + * Add in gesture support (LP: #616678) + - add debian/patches/203_gestures-extension.patch + and debian/patches/202_xf86CoordinationsToWindows.patch + - debian/rules: + - add configure option to enable gesture + + -- Chase Douglas Mon, 09 Aug 2010 14:33:40 +0000 + +xorg-server (2:1.8.99.905-1ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining Ubuntu changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for 1.8.1.902-1 which became 1.8.99.904-1 + * Drop 196_xvfbscreeninit-handling.patch: it's semantically empty, and now + doesn't apply. Merge remaining #include change into 197_xvfb-randr.patch + * New upstream version will start correctly when no outputs are connected, + as long as the video driver can dynamically resize the framebuffer + (true for all KMS drivers) (LP: #337889) + * New upstream version fixes crash on non-admin logout with KDE (LP: #569879) + * Refresh 111_armel-drv-fallbacks.patch to fix the build on armel + + -- Christopher James Halse Rogers Thu, 05 Aug 2010 11:25:14 +1000 + +xorg-server (2:1.8.99.905-1) experimental; urgency=low + + * Drop recommends on xbase-clients. + * Add xauth to xserver-common recommends. + * Bump Standards-Version to 3.9.0. + * Don't install serverminver, drivers shouldn't use this anymore. + * New upstream release candidate. + + -- Julien Cristau Sat, 17 Jul 2010 11:13:32 +0100 + +xorg-server (2:1.8.99.904-1) experimental; urgency=low + + [ Julien Cristau ] + * Install the upstream changelog in xserver-common, instead of duplicating + its 1MB in all other packages. + * Stop repacking the tarball: the non-modifiable README.DRI was removed + upstream. + * Bump build-deps on x11proto-core-dev, x11proto-dri2-dev, libxfont-dev. + * Bump xserver-xorg-dev dependency on x11proto-core-dev and + x11proto-dri2-dev, add dependency on x11proto-xinerama-dev. + * Bump serverminver, videoabiver, inputabiver. + + [ Christopher James Halse Rogers ] + * New upstream RC + - A number of DRI2 fixes. + - Fix for hanging OpenGL clients with multiple heads. + * 17-fix-DRI2-segfault-when-clientGone.diff: + - Pick up fix from https://bugs.freedesktop.org/show_bug.cgi?id=27497 to + fix server crash in DRI2SwapEvent handling (LP: #595182). + + -- Julien Cristau Fri, 09 Jul 2010 12:45:09 +0100 + +xorg-server (2:1.8.1.902-0ubuntu2) maverick; urgency=low + + * debian/rules: + - Drop the upstream changelog harder. We're scrabbling for CD space + and this is an easy 1MB saving. + + -- Christopher James Halse Rogers Wed, 30 Jun 2010 09:50:33 +1000 + +xorg-server (2:1.8.1.902-0ubuntu1) maverick; urgency=low + + * Merge from (unreleased) Debian experimental. Remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - control: Update some versioned Breaks for Ubuntu versions. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + Fix server crash when “xauth generate” is called with large timeout. + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Update changelog entries for previously unreleased Debian 1.8.1.901-1 + + -- Christopher James Halse Rogers Wed, 23 Jun 2010 11:19:49 +1000 + +xorg-server (2:1.8.1.901-1ubuntu1) maverick; urgency=low + + [ Timo Aaltonen ] + * Merged from Debian experimental, remaining changes: + - rules, control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - rules: Add --with-extra-module-dir to support GL alternatives. + - control: Xvfb depends on xauth, x11-xkb-utils, recommends + libgl1-mesa-dri. (LP 500102) + - rules, local/64-xorg-xkb.rules: Don't use keyboard-configuration + until it's available. + - debian/patches: + + 100_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 109_fix-swcursor-crash.patch: + Avoid dereferencing null pointer while reloading cursors during + resume. (LP 371405) + + 111_armel-drv-fallbacks.patch: + Add support for armel driver fallbacks. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 122_xext_fix_card32_overflow_in_xauth.patch: + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP 380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + + 191-Xorg-add-an-extra-module-path.patch: + Add support for the alternatives module path. + + 196_xvfb-fbscreeninit-handling.patch, 197_xvfb-randr.patch: + Adds xrandr support to xvfb. (LP 516123) + + 198_nohwaccess.patch: + Adds a -nohwaccess argument to make X not access the hardware + ports directly. + + 200_randr-null.patch: + Clarify a pointer initialization. + * Dropped patches: + - 106_nouveau_autodetect.patch: obsoleted by 15-nouveau.diff + - 112_xaa-fbcomposite-fix-negative-size.patch: adopted by Debian + - 113_quell_nouveau_aiglx.patch: obsoleted by 15-nouveau.diff + - 115_xext_fix_cursor_ref_counting.patch: merged upstream + - 116_fix_typos_in_swap_functions.patch: merged upstream + - 118_xkb_fix_garbage_init.patch: merged upstream + - 123_exa_sys_ptr_nullpointer_check.patch: merged upstream + - 199_xfvb-help-typo.patch: merged upstream + * debian/xserver-xorg-core.preinst.in: Drop the removal of the wrong + alternative, obsolete by now. + * debian/control: Build the udeb and bump the relaxed build-deps. + * debian/local/xvfb-run: Don't disable composite, seems to run fine + with it nowadays. + + [ Robert Hooker ] + * Fix 190_cache-xkbcomp_output_for_fast_start_up.patch so it works. + * Drop 164_trap-aspect-ratios.patch: obsolete. + * debian/rules: Adjust confflag targets so xcsecurity isn't enabled for udeb + with disabled xace. + * Drop 184_virtual_devices_autodetect.patch: It's a noop with todays autoconfig. + + [ Bryce Harrington ] + * debian/rules: Don't reference the package uploader for support; instead point + users to the standard Ubuntu support page. + (LP: #589811) + + [ Christopher James Halse Rogers ] + * Add debian/gbp.conf pointing at ubuntu branch. + * Drop 109_fix-swcursor-crash.patch; merged upstream in 3a3edb2c. + * 122_xext_fix_card32_overflow_in_xauth.patch: Update to most recent patch + on patchwork. This patch actually works! (tested with + “xauth generate :0 . trusted timeout 99999999) (LP: #519049) + + -- Bryce Harrington Mon, 07 Jun 2010 14:50:49 -0700 + +xorg-server (2:1.8.1.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release + * Merge changes from 2:1.7.7-2. + + [ Christopher James Halse Rogers ] + * 16-xaa-fbcomposite-fix-negative-size.diff: + - mi hunk merged upstream. Update to keep just the fbpict.c hunk. + + -- Julien Cristau Mon, 07 Jun 2010 23:22:48 +0200 + +xorg-server (2:1.8.1-1) experimental; urgency=low + + * New upstream release + - 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff: partly merged + upstream, rest renamed to 02_Add-libnettle-as-option-for-sha1.diff and + ported to new version + - 05_only_call_gamma_set_if_nonnull.diff: merged upstream + - 07-xfree86-fix-build-with-xv-disabled.diff: rediffed + - 08-config-xorg-conf-d.diff: merged upstream + - 09-inputclass-sans-abi9.diff: likewise + - 10-config-libudev-backend.diff: likewise + - 11-xfree86-fix-video-fallback.diff: likewise + - 12-xfree86-dont-complain-about-missing-coredevices.diff: likewise + - 13-unbreak-input-abi.diff: obsolete + - 14-tone-down-nidr-errors.diff: merged upstream + - 15-nouveau.diff: rediffed + - 17-xfree86-saner-conf-search-paths.diff: merged upstream + - 18-Add-10-evdev.conf.diff: likewise + * Bump xutils-dev build-dep for new macros. + * Add build-dep on xfonts-utils for fontutil.pc. + * Bump build-deps on mesa, glproto and dri2proto. + * Drop obsolete configure options --disable-xsdl and + --disable-null-root-cursor. + * --enable-werror has been replaced by --enable-strict-compilation, adjust + rules. + * xdmx-tools.install: xdmx was renamed to dmxinfo. + * Bump debian/serverminver and ABI versions. + + -- Julien Cristau Wed, 12 May 2010 18:01:39 +0200 + +xorg-server (2:1.7.7-2) unstable; urgency=low + + * autoconfig: load the nouveau driver for nvidia hw. Stolen from F13. + * Try to catch non-event devices when running udevadm info in the bug + script. + * Pull from upstream server-1.7-nominations branch + - dix: make DeviceEvent coordinates signed for Xinerama (closes: #581763) + - xfree86: dga needs to use the master keyboard state (closes: #576393) + - Fix null pointer dereference in xf86_reload_cursors (closes: #507916) + + -- Julien Cristau Thu, 03 Jun 2010 17:00:18 +0200 + +xorg-server (2:1.7.7-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Update patch 17; Add missing __datadir__ to cpprules.in. + + [ Cyril Brulebois ] + * Add listing files under /etc/X11/xorg.conf.d in bug script. + * Fix typo in 10-mouse.conf: s/Mouse/Pointer/ (Closes: #579130). + + [ Julien Cristau ] + * Drop the GLX 1.4 patches to fix server crashes with DRI2 (closes: + #567677). + * Change driver ABI Conflicts to Breaks. Drop old Conflicts/Replaces on + pre-modular xserver packages. + * Unset PRERELEASE to avoid the prerelease warning in the log. + * New upstream release: + - fixes Xvfb crash with XI2 (closes: #575905) + - EXA: Check sys_ptr isn't NULL before passing it to the UploadToScreen + hook (closes: #576656) + * 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff is now upstream, + remove it. + * Drop mention of input_id from debian/copyright since we stopped shipping + it a while back. + + -- Julien Cristau Tue, 04 May 2010 15:17:59 +0200 + +xorg-server (2:1.7.6.901-3) unstable; urgency=low + + [ Julien Cristau ] + * On !linux, install mouse and kbd catchall snippets in the xorg.conf.d + directory. Fixes FTBFS on those archs. + + [ Cyril Brulebois ] + * Cherry-pick “exa: handle pixmap create/destroy in lower layers” which + fixes server crashes when pixmaps are created in the course of + software fallbacks (Closes: #576816). Many thanks to Arthur Marsh for + the tests! + + -- Cyril Brulebois Mon, 19 Apr 2010 15:26:15 +0200 + +xorg-server (2:1.7.6.901-2) unstable; urgency=low + + * Fix dependency generation: Replace PKG_CONFIG_DIR with PKG_CONFIG_PATH + (/usr/share/xserver-xorg/{videodrv,xinput}dep may lack a version + otherwise). + + -- Cyril Brulebois Sat, 17 Apr 2010 18:38:17 +0200 + +xorg-server (2:1.7.6.901-1) unstable; urgency=low + + * New upstream release candidate. + - Fix crash when all glyphs of a given depth are freed, but not all + glyphsets (closes: #568533) + + [ Cyril Brulebois ] + * Steal patch 112_xaa-fbcomposite-fix-negative-size.patch from ubuntu, + and rename it 16-xaa-fbcomposite-fix-negative-size.diff as it's now + applied in Debian as well. It fixes arithmetic bugs in mod(); thanks to + Bryce Harrington. + * Merge 'xsfbs/debian-unstable' to fix target dependencies, which fixes + useless rebuilds. + * Add support for “noudeb” in DEB_BUILD_OPTIONS to disable building the + udeb flavour (even on architectures where udebs are supposed to be + built) to speed up debug builds. When this is used, the udeb is still + built, but rather empty… + * Modify bug script to include kernel version (from /proc/version) since + the uname in Xorg.*.log might not give enough details (like the Debian + revision). + + [ Julien Cristau ] + * Remove from debian/rules an obsolete reference to + /usr/share/debhelper/dh_make/debianm/rules. + * Make xserver-xorg-core provide ABI-versioned virtual packages for drivers + to depend on. This is a first step in making our ABI handling saner (see + #573371). + * xvfb-run: don't rely on /tmp/X$i-lock to bump $SERVERNUM in auto-servernum + mode (closes: #577195). Thanks, Jozef Kutej! + * Bump serverminver for new handling of input config. + * Add Breaks on input drivers installing files in /usr/lib/X11/xorg.conf.d + since we're changing the path. + * Stop looking for x11_driver property in udev, since we're migrating the + drivers over to xorg.conf.d anyway. + * Install 10-evdev.conf in /usr/share/X11/xorg.conf.d (from upstream, patch + 18-Add-10-evdev.conf.diff). + + [ Timo Aaltonen ] + * Add 17-xfree86-saner-conf-search-paths.diff. Allows using another + xorg.conf.d directory for local changes. + + -- Cyril Brulebois Sat, 17 Apr 2010 16:55:39 +0200 + +xorg-server (2:1.7.6-2ubuntu8) lucid-updates; urgency=low + + [Bryce Harrington] + * Add 123_exa_sys_ptr_nullpointer_check.patch: Patch from upstream to + verify a pointer is not NULL before dereferencing it. Fixes X + segfault in miCopyRegion which occurs while using firefox (e.g. typing + into fields in AOL). Issue found by Jerry Lamos. + (LP: #539772) + * Add 19-exa-handle-pixmap-create-destroy-in-lower-layers.diff: Patch + from Debian to fix X segfault on mouse click in xfig, when pixmaps + are created in the course of software fallbacks. + (LP: #553647) + + [Martin Pitt] + * debian/local/64-xorg-xkb.rules: Ignore XKBMODEL=="SKIP" and + XKBVARIANT=="U.S. English", which happen to get into + /etc/default/console-setup in some cases like the VMWare automatic + installer. + (LP: #548891) + + -- Bryce Harrington Wed, 28 Apr 2010 13:10:44 -0700 + +xorg-server (2:1.7.6-2ubuntu7) lucid; urgency=low + + * Drop 117_fix_crash_with_createglyphset.patch + - Dupe of patch 110 + * Drop 03_fedora_glx_versioning.diff, 04_fedora_glx14-swrast.diff + - These patches were brought in by Debian to provide glx 1.4 support + which Fedora backported from xserver 1.8, however testing in + Ubuntu showed they caused a crash when closing Clutter apps (#550218), + and graphics corruption when opening windows. Dropping these patches + returns us to GLX 1.2, which has been found to be stable; Debian has + also dropped these two patches. + (Fixes #565903). + * Drop 114_dri2_make_sure_x_drawable_exists.patch + - This was an early attempt by upstream which fixed the aforementioned + Clutter crash, but which introduced a memory leak. + (Fixes #565981) + + -- Bryce Harrington Thu, 22 Apr 2010 17:24:38 -0700 + +xorg-server (2:1.7.6-2ubuntu6) lucid; urgency=low + + * Add 122_xext_fix_card32_overflow_in_xauth.patch: Prevent overflow + of a CARD32 variable millis by doing bounds checking. This is a + patch currently in discussion at fdo #27134, so this patch can be + dropped in favor of whatever upstream decides to include. + (LP: #519049) + + -- Bryce Harrington Thu, 15 Apr 2010 14:10:53 -0700 + +xorg-server (2:1.7.6-2ubuntu5) lucid; urgency=low + + * Update patches in previous upload to fix FTBS issue. + + -- Bryce Harrington Thu, 15 Apr 2010 11:03:01 -0700 + +xorg-server (2:1.7.6-2ubuntu4) lucid; urgency=low + + * Add several cherrypicks of fixes from upstream git tree which fix various + issues and that look safe with low or no risk of regression. + + 115_xext_fix_cursor_ref_counting.patch: Xext: Fix cursor reference + counting hazard. + + 116_fix_typos_in_swap_functions.patch: Fixes typos in several of the + glxcmdsswap routines. + + 117_fix_crash_with_createglyphset.patch: Fixes crash introduced in + FindGlyphsByHash() if one client disconnects while a second is in + the middle of doing certain Glyph operations. + + 118_xkb_fix_garbage_init.patch: Fixes typo that can cause garbage + bits to get appended on the xkbControlsNotify changedControls mask + because it was uninitialized on the stack. + + -- Bryce Harrington Wed, 14 Apr 2010 18:49:56 -0700 + +xorg-server (2:1.7.6-2ubuntu3) lucid; urgency=low + + * add support for omapfb to 111_armel-drv-fallbacks.patch + + -- Alexander Sack Mon, 12 Apr 2010 14:43:42 +0200 + +xorg-server (2:1.7.6-2ubuntu2) lucid; urgency=low + + [Bryce Harrington] + * Add 113_quell_nouveau_aiglx.patch: Don't emit error message about + AIGLX on nouveau. 3D is not supported yet on -nouveau so this error + message serves only to confuse bug reporters. + (LP: #529590) + + [Robert Sarvatt] + * Add 114_dri2_make_sure_x_drawable_exists.patch: Makes sure + a corresponding X drawable exists before trying to use it, fixing + xserver segfaults under DRI2 when closing down GLX apps. + (LP: #550218) + + -- Bryce Harrington Wed, 31 Mar 2010 16:37:45 -0700 + +xorg-server (2:1.7.6-2ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #546933) + + [ Michael Casadevall ] + * Updated 111_armel-drv-fallbacks.patch to also add support for finding + dovefb devices in addition to imx51 ones. (LP: #550701) + + -- Timo Aaltonen Tue, 30 Mar 2010 22:01:12 +0300 + +xorg-server (2:1.7.6-2) unstable; urgency=low + + [ Timo Aaltonen ] + * Add 08-config-xorg-conf-d.diff, 09-inputclass-sans-abi9.diff, + 10-config-libudev-backend.diff. Backport xorg.conf.d, inputclass + and libudev support from xserver 1.8. Replaces the patches we had + before. This allows us to migrate from a temporary udev based + input device configuration straight to the long term solution + introduced in 1.8. + * Add 11-xfree86-fix-video-fallback.diff from SUSE. Allows the video + fallback method to work when there's an xorg.conf around. + * Add 12-xfree86-dont-complain-about-missing-coredevices.diff. + No reason to complain about these, unless AEI is off. + * Add 13-unbreak-input-abi.diff. Keep the old NewInputDeviceRequest(), + rename the new as NIDR18() and call it from NIDR(). This way we + don't break the input ABI. + * Add 14-tone-down-nidr-errors.diff. Use X_INFO instead of X_ERROR. + + [ Julien Cristau ] + * 15-keep-udev-x11-driver.diff: keep looking for the x11_driver udev + property as a transitional measure. This should allow the new server to + work while drivers aren't transitioned to xorg.conf.d yet. + + -- Timo Aaltonen Tue, 30 Mar 2010 21:32:52 +0300 + +xorg-server (2:1.7.6-1ubuntu3) lucid; urgency=low + + * Extend 112_xaa-fbcomposite-fix-negative-size.patch to also correct a + mod() definition in the mi code which suffers the same flaw. + + -- Bryce Harrington Mon, 29 Mar 2010 14:15:07 -0700 + +xorg-server (2:1.7.6-1ubuntu2) lucid; urgency=low + + * Add 112_xaa-fbcomposite-fix-negative-size.patch: Prevent 3rd-party + controllable Xorg crash/exploit when XAA and compositing is in use. + Be more careful in sign-changes with mod(). + (LP: #551193) + + -- Bryce Harrington Mon, 29 Mar 2010 13:37:06 -0700 + +xorg-server (2:1.7.6-1ubuntu1) lucid; urgency=low + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 107, included in Debian. + * Drop patch 108, included upstream. + * control: Drop the udeb, we don't need it for lucid. + * control: Relax/drop some build-deps caused by the udeb. + + [Bryce Harrington] + * Add 110_findglyphbyhash-fix.patch from upstream to fix a sporadic + crash in FindGlyphByHash. + (LP: #401045) + * Renumber patch 201_armel-drv-fallbacks.patch to 111 + + -- Bryce Harrington Wed, 24 Mar 2010 12:04:20 -0700 + +xorg-server (2:1.7.6-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Timo Aaltonen ] + * New upstream release, closes: #574354. + + [ Julien Cristau ] + * Don't build xserver-xorg-core-udeb on sparc. The linker fails because + relocations have to be truncated when building statically against + libnettle. + + -- Cyril Brulebois Tue, 23 Mar 2010 16:59:08 +0100 + +xorg-server (2:1.7.5.902-1) unstable; urgency=low + + [ Julien Cristau ] + * config/udev: fix adding unnamed devices. + * Build two flavours, one for the main package and one for the udeb. + * Add patch to fix Xorg build with XV disabled. + + [ Timo Aaltonen ] + * Add 16-config-dont-filter-input-subsys.diff so for instance serial + wacom devices are initialized by the udev backend (LP: #522318, + closes: #568236). + + [ Brice Goglin ] + * New upstream release. + + Allow for missing or disabled compat_output, closes: #572268, #554450. + + Reenable RECORD extension, closes: #570680. + + dix: try to ring the bell even if the current device doesn't have one, + closes: #564200. + * Refresh patches. + * Fix typo in xvfb-run.1, thanks Joey Hess, closes: #527490. + * Add 06_dont_trap_access_to_timer_and_keyboard.diff, + thanks Samuel Thibault. + + [ Cyril Brulebois ] + * Add udeb needed for the graphical installer: xserver-xorg-core-udeb. + * Version/Bump some B-D to make sure xserver-xorg-core-udeb gets its + dependencies on the (recently-added) udebs rather than on the + libraries: + - libpciaccess-dev + - libudev-dev + - libxau-dev + - libxfont-dev + * Replace 02_Add-libgcrypt-as-an-option-for-sha1.diff with + 02_Add-libgcrypt-and-libnettle-as-options-for-sha1.diff so that it's + also possible to link against libnettle. Link (unconditionally) + statically against libnettle.a to avoid an extra udeb for a few bytes. + * Add nettle-dev to Build-Depends; and pass --with-sha1=libnettle for + the udeb build (and --with-sha1=libgcrypt for the main build). + * Add myself to Uploaders. + * Tweak builderstring to use the name of the person responsible for the + upload instead of an host-specific one (Closes: #574017). + + -- Cyril Brulebois Mon, 15 Mar 2010 22:19:01 +0100 + +xorg-server (2:1.7.5-1ubuntu4) lucid; urgency=low + + * 201_armel-drv-fallbacks.patch: use imx driver if available on + armel imx51 systems; the current test checks for mxc_gpu + devices listed in /sys/devices/platform and ensures that the + imx_drv module can be loaded; if both succeed, imx driver is + used instead of fbdev; note: the mxc_gpu device test should be + replaced with parsing output of /proc/fb once the mxc driver + provides reasonable content there. + + -- Alexander Sack Wed, 24 Mar 2010 13:03:41 +0100 + +xorg-server (2:1.7.5-1ubuntu3) lucid; urgency=low + + * Add 109_fix-swcursor-crash.patch: Avoid dereferencing null pointer + while reloading cursors during resume. + (LP: #371405) + + -- Bryce Harrington Thu, 11 Mar 2010 17:16:12 -0800 + +xorg-server (2:1.7.5-1ubuntu2) lucid; urgency=low + + [ Bryce Harrington ] + [Timo Aaltonen] + * Add 107_dont_filter_input_subsys.diff so for instance serial wacom + devices are initialized by the udev backend (LP: #522318) + + [Bryce Harrington] + * Add 108_reenable_record_ext.patch: Upstream patch to make the + record callback work with the new internal core/Xi events mechanism + instead of xEvents. With this fix, the record extension can be + re-enabled. + (LP: #315456) + + -- Timo Aaltonen Tue, 02 Mar 2010 17:09:33 +0200 + +xorg-server (2:1.7.5-1ubuntu1) lucid; urgency=low + + [ Bryce Harrington ] + [Robert Hooker] + * Add 106_nouveau_autodetect.patch: makes nouveau the default driver + for supported cards when not explicitly named in xorg.conf. + + [Timo Aaltonen] + * Merge from Debian unstable. + * Drop patch 101, included in Debian. + + [Robert Collins] + * Add 199_xfvb-help-typo.patch to fix typo in help for xvfb (fdo #32990) + * Add 200_randr-null.patch to clarify a pointer initialization (fdo #26389) + + -- Timo Aaltonen Fri, 19 Feb 2010 13:24:15 +0200 + +xorg-server (2:1.7.5-1) unstable; urgency=low + + [ Julien Cristau ] + * Remove myself from Uploaders + + [ Brice Goglin ] + * New upstream release. + + Restore lastDeviceEventTime update in dixSaveScreens, + closes: #563816. + + Don't double-swap the RandR PropertyNotify event, + closes: #569036. + + Xi: reset the sli pointers after copying device classes, + closes: #566147. + * Bump Standards-Version to 3.8.4. + + -- Brice Goglin Tue, 16 Feb 2010 08:00:27 +0100 + +xorg-server (2:1.7.4-2) unstable; urgency=low + + [ Julien Cristau ] + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + + [ Brice Goglin ] + * Add 05_only_call_gamma_set_if_nonnull.diff to unbreak the nv driver, + closes: #564203. + + -- Brice Goglin Wed, 20 Jan 2010 23:51:26 +0100 + +xorg-server (2:1.7.4-1) unstable; urgency=low + + [ Timo Aaltonen ] + * New upstream release. + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). + + -- Julien Cristau Tue, 12 Jan 2010 10:49:22 +0000 + +xorg-server (2:1.7.3.902-1ubuntu12) lucid; urgency=low + + * Add 198_nohwaccess.patch: Needed for rootless X. Adds a -nohwaccess + argument to make X not access the hardware ports directly. + + -- Bryce Harrington Fri, 05 Feb 2010 22:17:20 -0800 + +xorg-server (2:1.7.3.902-1ubuntu11) lucid; urgency=low + + * Add 196_xvfb-fbscreeninit-handling.patch and 197_xvfb-randr.patch: + Adds xrandr support to xvfb. Thanks lifeless! + (LP: #516123) + + -- Bryce Harrington Thu, 04 Feb 2010 10:56:12 -0800 + +xorg-server (2:1.7.3.902-1ubuntu10) lucid; urgency=low + + * 100_rethrow_signals.patch: Fix SigAbortServer to cleanly exit(1) on a + non-signal crash, as the original upstream code does. Not exiting leads to + continuing back into the code which threw the error, which eventually + leads to writing into the already closed log file and other operations + which cause segfaults. + * Re-enable 100_rethrow_signals.patch. Hello apport. + + -- Martin Pitt Wed, 03 Feb 2010 17:29:53 -0800 + +xorg-server (2:1.7.3.902-1ubuntu9) lucid; urgency=low + + * Fully disable 100_rethrow_signals.patch as it seems to still cause + crashes. Goodbye apport. + (LP: #506510) + + -- Bryce Harrington Mon, 18 Jan 2010 23:31:08 -0800 + +xorg-server (2:1.7.3.902-1ubuntu8) lucid; urgency=low + + * Drop 160_log_timestamping.patch. The bootup time objectives have been + met so this patch is no longer required. + + -- Bryce Harrington Sat, 16 Jan 2010 02:28:30 -0800 + +xorg-server (2:1.7.3.902-1ubuntu7) lucid; urgency=low + + * Update 100_rethrow_signals.patch: Don't log more error messages after + the log has been closed, else it causes a SIGSEGV (signal 11) crash + under several different conditions, including on even ordinary error + exits. + (LP: #506510, #507345, #506977, #504497, #507083) + + -- Bryce Harrington Fri, 15 Jan 2010 15:22:34 -0800 + +xorg-server (2:1.7.3.902-1ubuntu6) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Correct the name of the alternative that we need to remove. + Thanks to Steve Langasek for spotting the error. + + -- Alberto Milone Thu, 14 Jan 2010 12:50:19 +0100 + +xorg-server (2:1.7.3.902-1ubuntu5) lucid; urgency=low + + * debian/xserver-xorg-core.preinst.in: + - Make sure that the alternative which was previously provided by + xserver-xorg-core is removed. + + -- Alberto Milone Tue, 12 Jan 2010 11:37:49 +0100 + +xorg-server (2:1.7.3.902-1ubuntu4) lucid; urgency=low + + * debian/patches/191-Xorg-add-an-extra-module-path.patch: + - Patch from Mandriva to allow the use of an extra-modules-dir so that + the modules installed in this dir will override the ones in the + default directory. + * debian/rules: + - Remove alternatives stuff introduced in a previous upload. + - Configure with --with-extra-module-dir="/usr/lib/xorg/extra-modules". + - Do not install libglx.so and libdri.so in a different place any more. + - Do not install ld.so.conf file any more. Mesa will deal with this. + * debian/xserver-xorg-core.links: + - Do not create link to /usr/lib/xvmcconfig-standard/XvMCConfig. + - Remove links file. + * debian/xserver-xorg-core.postinst.in: + - Do not install an alternative any more. Mesa will deal with this. + * debian/xserver-xorg-core.prerm.in: + - Remove file. + + -- Alberto Milone Mon, 11 Jan 2010 14:48:35 +0100 + +xorg-server (2:1.7.3.902-1ubuntu3) lucid; urgency=low + + [ Julien Cristau ] + * Don't call config_init() until after InitInput() has initialized the event + queue, so that devices don't get enabled too early (closes: #564256, + #564324). (LP: #504254) + + -- Timo Aaltonen Sat, 09 Jan 2010 19:34:30 +0200 + +xorg-server (2:1.7.3.902-1ubuntu2) lucid; urgency=low + + * debian/rules: + - Make sure that /usr/lib/standard-x11/ld.so.conf points to + the libraries provided by mesa. + + -- Alberto Milone Fri, 08 Jan 2010 18:55:52 +0100 + +xorg-server (2:1.7.3.902-1ubuntu1) lucid; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. + + [ Michael Vogt ] + * Add 101_nv-crash-fix.diff: Do not crash if gamma_set is NULL. + (LP: #494627) + + [ Alberto Milone ] + * Install libglx.so and libdri.so in /usr/lib/standard-x11 as X + seems to prefer the file in /usr/lib/xorg/modules/extensions/standard/ + over links in /usr/lib/xorg/modules/extensions/. + + -- Timo Aaltonen Fri, 08 Jan 2010 14:21:15 +0200 + +xorg-server (2:1.7.3.902-1) unstable; urgency=low + + [ Timo Aaltonen ] + * Run udevadm trigger on postinst, and depend on udev [linux-any]. + + [ Julien Cristau ] + * Add xserver-common dependency on x11-xkb-utils for xkbcomp. + * Remove our copy of input_id, add Depends on new enough udev instead. + * New upstream release. + * Make xserver-common recommend xfonts-base, some clients don't work without + those. + * Upload to unstable. + + -- Julien Cristau Wed, 06 Jan 2010 17:44:59 +0000 + +xorg-server (2:1.7.3.901-1ubuntu5) lucid; urgency=low + + * Use alternatives to make it easier to switch between X11 and 3rd + party modules. + * Add link to /usr/lib/xvmcconfig-standard/XvMCConfig and use it + for alternatives. + + -- Alberto Milone Mon, 04 Jan 2010 12:08:17 +0100 + +xorg-server (2:1.7.3.901-1ubuntu4) lucid; urgency=low + + * xvfb: Depend again on xauth. Depend on x11-xkb-utils. LP: #500102. + + -- Matthias Klose Thu, 24 Dec 2009 12:20:02 +0100 + +xorg-server (2:1.7.3.901-1ubuntu3) lucid; urgency=low + + * Update 100_rethrow_signals.patch to work with xserver 1.7 + + -- Bryce Harrington Fri, 18 Dec 2009 18:55:56 -0800 + +xorg-server (2:1.7.3.901-1ubuntu2) lucid; urgency=low + + [ Alberto Milone ] + * debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch: + Make the patch build again with xserver 1.7. + + [ Timo Aaltonen ] + * Enable patch 190 now that it works. + + -- Timo Aaltonen Tue, 15 Dec 2009 14:49:39 +0200 + +xorg-server (2:1.7.3.901-1ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. + + -- Timo Aaltonen Mon, 14 Dec 2009 11:34:33 +0200 + +xorg-server (2:1.7.3.901-1) experimental; urgency=low + + [ Julien Cristau ] + * Enable GLX 1.4 on DRI2 and swrast (from upstream, via F12). + * xserver-xorg-dev: add Depends on x11proto-kb-dev and libxkbfile-dev for + xkbsrv.h (closes: #559676). Thanks, Ron! + * Update input_id to the version in udev 149. + * Update xserver-xorg-core bug script to run udevadm info instead of lshal. + + [ Brice Goglin ] + * New upstream release. + + Refresh patches. + + -- Brice Goglin Sat, 12 Dec 2009 17:46:45 +0100 + +xorg-server (2:1.7.2-2ubuntu2) lucid; urgency=low + + * local/64-xorg-xkb.rules: Use "program" instead of "file" when + grepping the XKB settings from console-setup. + + -- Timo Aaltonen Tue, 08 Dec 2009 13:17:04 +0200 + +xorg-server (2:1.7.2-2ubuntu1) lucid; urgency=low + + * Merge from Debian experimental. Remaining Ubuntu changes: + - debian/rules, debian/control: + + Disable SELinux, libaudit-dev is not in main yet (LP 406226). + Drop libaudit-dev from build-deps. + - debian/rules: Enable xcsecurity (LP 247537). + - local/xvfb-run*: Add correct docs about error codes (LP 328205) + - local/xvfb-run: Use "-extension Composite" to fix xvfb-run crashing. + - debian/patches: + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 187_edid_quirk_hp_nc8430.patch: + Quirk for another LPL monitor (LP: #380009) + + 188_default_primary_to_first_busid.patch: + Pick the first device and carry on (LP 459512) + + 189_xserver_1.5.0_bg_none_root.patch: + Create a root window with no background. + + 190_cache-xkbcomp_output_for_fast_start_up.patch: + Cache keyboard settings. + * debian/control: Drop obsolete Conflicts/Breaks against -psb, + -synaptics and -evdev. + * debian/local/xserver-xephyr.1: Delete, upstream has Xephyr.1 now. + * Dropped patches: + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Upstream dropped it. + - 102_ubuntu_sharevts_load_cpu.patch: Upstream. + - 103_psb_auto.patch: Fallback to vesa done differently upstream. + - 110_fedora_no_move_damage.patch: Upstream dropped it. + - 140_quell_acpi_errmsgs.patch: Superseded. + - 153_make_dmx_compile.patch: Xdmx is fixed upstream. + - 156_exevents_copykeyclass_nullptrcheck.patch: No longer needed. + Appropriate checks are done on the pointers prior to CopyKeyClass + being called now. + - 158_raise_maxclients.patch: Breaks binary drivers. We've had this + reverted for some time now, may as well just get rid of it entirely. + - 174_set_bg_pixmap_of_cow_to_none.patch: Upstream + - 177_animated_cursor_change_master.patch: Different fix upstream. + - 180_fedora_no_synaptics_mouse_synthesis.patch: Superseded. + - 181_fedora_log_proc_cmdline.patch: Upstream. + - 185_dix_badwindow.patch: Upstream. + - 186_autoconfig_geode.patch: Upstream. + * 189_xserver_1.5.0_bg_none_root.patch: Fetched a new version. + * 135_rethrow_signals.patch, 168_glibc_trace_to_stderr.patch: + Disabled until fixed to work with the current version. + * 160_log_timestamping.patch: Updated and re-enabled for boot speed + testing in Lucid. This patch should be disabled by beta2. + * 169_mipointer_nullptr_checks.patch: Updated. MIPOINTER() still + can return NULL under some circumstances, and its return values + are still being dereferenced without checking for NULL. + * 188_default_primary_to_first_busid.patch: Updated. Still looks to be + relevant for certain multi-card systems. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Updated. + * control, local/64-xorg-xkb.rules: Don't depend on keyboard-configuration + until we have it. + * rules, local/64-xorg-xkb.rules: Use input_id from udev. + + -- Timo Aaltonen Mon, 07 Dec 2009 15:30:18 +0200 + +xorg-server (2:1.7.2-2) experimental; urgency=low + + [ Julien Cristau ] + * debian/rules: upstream build system got fixed, no need to remove + configure-generated files. + * Steal input_id helper from udev, install it in /lib/xorg. Thanks, Martin + Pitt! + + [ Brice Goglin ] + * Cherry pick upstream commit to fix the ABI. + + -- Brice Goglin Mon, 30 Nov 2009 20:10:27 +0100 + +xorg-server (2:1.7.2-1) experimental; urgency=low + + * New upstream release + + Xorg sets umask to 022 (closes: #555308) + * Delete 09_debian_xserver_rtff.diff. Was disabled since 1.3.99, and is not + necessary since the fall back to builtin fonts was added. + * Change the server's dependency on xserver-common to >= ${source:Version}, + to allow installation of different versions of the various servers. + * Add build-dep on libglib2.0-dev, xkb-data and x11-xkb-utils for unit + tests, and run the tests unless nocheck is in DEB_BUILD_OPTIONS. + * Cherry-pick upstream commit to turn ModeDebug on during server startup, + replacing our Turn-on-ModeDebug-by-default.patch. + * Number our patches to make it easier to keep track of things. Requested + by the Ubuntu folks. + * xvfb-run: retry a few times if Xvfb can't be started when using + --auto-servernum, to make concurrent invocations work (closes: #521075). + Thanks, Kees Cook! + * Use libudev instead of libhal for input hotplug on linux. + * Add udev rule to get keymap from /etc/default/keyboard. + + -- Julien Cristau Sat, 28 Nov 2009 16:48:43 +0100 + +xorg-server (2:1.7.0-1) experimental; urgency=low + + * Add missing Conflicts on xserver-xorg-video-5 and xserver-xorg-input-4. + * Add xkb-data to xserver-common's Depends. XKB is mandatory in 1.7. + * Make all servers depend on xserver-common (= ${source:Version}). + * New upstream release + + fixes Xvfb crashes (closes: #529927) + + fixes DGA init crash (closes: #548716) + + -- Julien Cristau Sun, 04 Oct 2009 15:57:01 +0200 + +xorg-server (2:1.6.99.903-1) experimental; urgency=low + + * New upstream snapshot. + + doesn't fill log file with errors when acpid isn't running + (closes: #487904, #500583) + + adds autoconfig for geode variants (closes: #544988) + + fixes idle time computation (closes: #542064) + + Xnest uses the host's mouse acceleration and speed (closes: #325181) + + Xephyr now has a manpage (closes: #427121) + + Xdmx works again (closes: #541254) + * Update build deps + * Update patch stack: + - 20_hurd-i386.diff applied upstream + - fedora-bad-fbdev-thats-mine.patch applied upstream + - fedora-pci-primary.diff superseded upstream + - fedora-vboxvideo.diff applied upstream + - kfreebsd-ftbfs.diff applied upstream + - Add-libgcrypt-as-an-option-for-sha1.diff refreshed + - Turn-on-ModeDebug-by-default.patch refreshed + * Cleanup some libtool cruft in debian/rules clean. + * Bump serverminver, videoabiver and inputabiver. + * Bump debhelper compat level to 5: + - handle dh_strip behaviour change + - fix xserver-xorg-core.install + * Bump Standards-Version to 3.8.3. + + -- Julien Cristau Tue, 29 Sep 2009 17:51:05 +0200 + +xorg-server (2:1.6.4-2ubuntu6) lucid; urgency=low + + * 189_xserver_1.5.0_bg_none_root.patch: Moblin patch to allow X to + create a root window with no background by passing the -nr + argument. This will make X no longer clear the framebuffer when it + starts, thus eliminating a flicker between bootsplash and gdm. -nr + is ignored if this feature is not supported by the driver. This patch + is not upstream yet. + TESTERS: Watch for screen corruption issues during X or app start. + * 190_cache-xkbcomp_output_for_fast_start_up.patch: Causes the X + Keyboard Compiler (xkbcomp) to create a cache file of the keyboard + settings. This will make the 2nd and later boots slightly faster. + TESTERS: Watch for issues relating to keyboard customizations not + taking effect properly following boot. + + -- Bryce Harrington Mon, 23 Nov 2009 13:59:44 -0800 + +xorg-server (2:1.6.4-2ubuntu5) lucid; urgency=low + + * Rework xvfb-run patch to wait for server to come up before checking + status (LP: #481591, Debian bug 521075). + + -- Kees Cook Fri, 13 Nov 2009 16:15:36 -0800 + +xorg-server (2:1.6.4-2ubuntu4) karmic; urgency=low + + * Add 188_default_primary_to_first_busid.patch: X can abort if multiple + video devices are present, and none are marked as primary. This makes + X just pick the first one it sees and carry on. + (LP: #459512) + + -- Bryce Harrington Mon, 26 Oct 2009 10:05:44 -0700 + +xorg-server (2:1.6.4-2ubuntu3) karmic; urgency=low + + * local/xvfb-run: Fix race condition in xvfb-run that can cause + concurrent invocations to fail. + (LP: #348052) + + -- Bryce Harrington Wed, 14 Oct 2009 15:21:51 -0700 + +xorg-server (2:1.6.4-2ubuntu2) karmic; urgency=low + + * Add 187_edid_quirk_hp_nc8430.patch: Quirk for another LPL monitor, to + fix huge font sizes due to invalid EDID from the hardware. + (LP: #380009) + + -- Bryce Harrington Tue, 13 Oct 2009 02:25:46 -0700 + +xorg-server (2:1.6.4-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. (LP: #447010) + Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch: + Specify correct paths to fonts + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 103_psb_auto.patch: + Autodetect poulsbo devices (but use -vesa since -psb is broken) + + 110_fedora_no_move_damage.patch: + further aiglx support + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 135_rethrow_signals.patch: + When aborting, re-raise signals for apport + + 140_quell_acpi_errmsgs.patch: + Avoid generating extraneous warnings when acpi is missing + + 153_make_dmx_compile.patch: + Change xcalloc -> calloc, so that dmx compiles. + + 156_exevents_copykeyclass_nullptrcheck.patch, + 157_check_null_modes.patch, 162_null_crtc_in_rotation.patch, + 166_nullptr_xinerama_keyrepeat.patch, 167_nullptr_xisbread.patch + 169_mipointer_nullptr_checks.patch, + 172_cwgetbackingpicture_nullptr_check.patch: + Fix various segfaults in xserver by checking pointers for NULL + values before dereferencing them. + + 164_trap-aspect-ratios.patch: + Correct monitor EDIDs that have misreported aspect ratios. + + 165_man_xorg_conf_no_device_ident.patch + Correct man page + + 168_glibc_trace_to_stderr.patch: + Report abort traces to stderr instead of terminal + + 174_set_bg_pixmap_of_cow_to_none.patch: + Set background pixmap of composite overlay window to no background + + 177_animated_cursor_change_master.patch: + Don't create animated cursors for slave devices + + 180_fedora_no_synaptics_mouse_synthesis.patch: + Don't synthesize a mouse section if a synaptics device is found + + 181_fedora_log_proc_cmdline.patch: + Dump /proc/cmdline in the log file too + + 184_virtual_devices_autodetect.patch: + Use vesa for qemu device, which is not supported by cirrus + + 185_dix_badwindow.patch: + Don't return BadMatch from GetProperty if window isn't actually a window + + 186_autoconfig_geode.patch + Perform autodetection correctly for various geode devices + * Update 184_virtual_devices_autodetect.patch to only include inserting + cirrus, since vbox is covered by the new fedora patch. + * Drop patches already included upstream: + - 187_lastdeviceeventtime-no-reset.patch + - 178_glx_flush_cache.patch + - 179_glx_cleanup_drawables.patch + - 183_dont_reset_event_time.patch + - 182_negative_sync_transitions.patch + * Ubuntu bugs fixed as of this release: + - Generate key up event only when key is released. (Fixed previously) + (LP: #403339) + - Fix XDPMS change event idle handling + (LP: #114336, #152999) + - Don't shutdown the libhal ctx if it failed to initialize. Fixes + crash if HAL or dbus is not running or is interrupted. + (LP: #114336) + - Fix crash if SendCoreEvents is off. Don't send events through + master in this case. + (LP: #368135) + - Fix SWCursor check in xf86CursorSetCursor to prevent cursor image + showing up on every screen with Xinerama. + (LP: #357901) + + -- Bryce Harrington Fri, 09 Oct 2009 12:01:52 -0700 + +xorg-server (2:1.6.4-2) unstable; urgency=low + + * Add fix-dga-removal.patch, closes: #548724. + + -- Brice Goglin Wed, 30 Sep 2009 22:40:29 +0200 + +xorg-server (2:1.6.4-1) unstable; urgency=low + + * New upstream release. + * Update 20_hurd-i386.diff, thanks Samuel Thibault, closes: #548606. + * Drop render-return-the-supported-version.patch, applied upstream. + + -- Brice Goglin Mon, 28 Sep 2009 07:23:07 +0200 + +xorg-server (2:1.6.3.901-1) unstable; urgency=low + + [ Julien Cristau ] + * Add patch stolen from Fedora to add the vboxvideo driver to the + autodetection routine (closes: #540884). + * Add built-ins to the default font path so that non-Xorg servers can use + them (closes: #542707). Thanks, Josselin Mouette! + * Add avr32 to the libselinux-dev/libaudit-dev build-deps (closes: #543540). + Thanks, Bradley Smith! + * Add patch to return the actually supported version in RenderQueryVersion + rather than whatever renderproto version the server built against. + * New upstream release. + + idle counter computation fixes (closes: #542064) + * Cherry-pick three more patches nominated on + http://www.x.org/wiki/Server16Branch: + - Don't reset the lastDeviceEventTime when doing DPMS actions + - dri2: Don't crash if pPriv is NULL + - EXA: Only take special code path for 1x1 fill for pixmaps + + [ David Nusinow ] + * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a + + -- Julien Cristau Mon, 14 Sep 2009 15:33:46 +0200 + +xorg-server (2:1.6.3-1ubuntu7) karmic; urgency=low + + * Add 187_lastdeviceeventtime-no-reset.patch: Avoids resetting IDLETIME on + DPMS events. Cherrypick from upstream. + (LP: #397839) + + -- Loïc Minier Mon, 28 Sep 2009 10:54:08 +0200 + +xorg-server (2:1.6.3-1ubuntu6) karmic; urgency=low + + * Add 186_autoconfig_geode.patch: Add autoconfiguration support for + older geode cards. Cherrypick from upstream. + (LP: #423866) + + -- Bryce Harrington Tue, 08 Sep 2009 15:43:28 -0700 + +xorg-server (2:1.6.3-1ubuntu5) karmic; urgency=low + + * Add 185_dix_badwindow.patch: dixLookupWindow may return BadMatch if + the window in question isn't actually a window. In this case, + GetProperty needs to return BadWindow - not BadMatch. Fixes unexpected + crash in some GNOME applications not expecting to get BadMatch returned + from this function call. + (LP: #321041) + + -- Bryce Harrington Thu, 03 Sep 2009 18:27:04 -0700 + +xorg-server (2:1.6.3-1ubuntu4) karmic; urgency=low + + * Add 184_virtual_devices_autodetect.patch: Automatic driver detection + for vbox and kvm for non-cirrus devices. + (LP: #338219, #348497) + + -- Bryce Harrington Mon, 24 Aug 2009 14:58:22 -0700 + +xorg-server (2:1.6.3-1ubuntu3) karmic; urgency=low + + * Add 183_dont_reset_event_time.patch: Upstream cherrypick. + Fix another random display blanking issue. When we turn off DPMS with + DPMSModeOff and do dixSaveScreens, don't reset the event time else + session clients using IDLETIME will be reset. + See http://blogs.gnome.org/hughsie/2009/08/17/ + + -- Bryce Harrington Wed, 19 Aug 2009 10:21:45 -0700 + +xorg-server (2:1.6.3-1ubuntu2) karmic; urgency=low + + * Add 182_negative_sync_transitions.patch: Upstream cherrypick. + Fix random blanking display when system is not idle, caused by + mishandling of negative transition triggers in XSync. + (LP: #397839) + + -- Bryce Harrington Fri, 14 Aug 2009 11:21:09 -0700 + +xorg-server (2:1.6.3-1ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * control: Drop libaudit-dev from build-deps, since SELinux-support + is still disabled anyway. + * Drop 182_fedora_quirk_pea.patch, included in 1.6.3. + + -- Timo Aaltonen Wed, 05 Aug 2009 14:11:01 +0300 + +xorg-server (2:1.6.3-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Sat, 01 Aug 2009 08:55:40 +0200 + +xorg-server (2:1.6.2.901-1ubuntu3) karmic; urgency=low + + * Add 182_fedora_quirk_pea.patch: Quirk for Peacock Ergovision 19 + to use first detailed mode. + * Add 181_fedora_log_proc_cmdline.patch: Log the /proc/cmdline into + Xorg.0.log + * Add 180_fedora_no_synaptics_mouse_synthesis.patch: Don't synthesise a + mouse section if synaptics devices are found. + (LP: #406291, #405281, #396908) + * Actually enable patches 178 and 179 + + -- Bryce Harrington Tue, 04 Aug 2009 02:37:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu2) karmic; urgency=low + + * Add 178_glx_flush_cache.patch and 179_glx_cleanup_drawables.patch: + - Cleanup destroyed windows and drawables, to prevent crash during + compiz startup. + (LP: #408293) + + -- Bryce Harrington Mon, 03 Aug 2009 07:55:12 -0700 + +xorg-server (2:1.6.2.901-1ubuntu1) karmic; urgency=low + + [ Timo Aaltonen ] + * Merge from Debian unstable. (LP: #403316) + * Drop 170_primary_pci_video_device.patch, included in Debian + + -- Timo Aaltonen Tue, 28 Jul 2009 15:34:16 +0300 + +xorg-server (2:1.6.2.901-1) unstable; urgency=low + + * New upstream release candidate. + * Bump mesa Build-Depends to >= 7.5 to fix DRI2 madness again, + closes: #538637. + + -- Brice Goglin Mon, 27 Jul 2009 00:17:42 +0200 + +xorg-server (2:1.6.2-1) unstable; urgency=low + + [ Brice Goglin ] + * New upstream release. + + Fixes dri2 madness introduced in previous upload + (closes: #534522, #536019, #534766, #534771, #534890). + + Fixes xkb bogus length in write keyboard desc, closes: #529625. + + Fixes SWCursor being multiply rendered, closes: #526260. + + Drop Change-default-for-ExaOptimizeMigration-to-false.diff, + applied upstream. + + Pull upstream server-1.6-branch up to commit 606f6dba. + * Bump serverminver to 2:1.6.2 for the dri2 upstream changes in the + previous upload. + + [ Julien Cristau ] + * Bump xserver-xorg-dev's dependency on dri2proto to >= 2.1 for the same + reason. + * Don't set PCI_TXT_IDS_DIR, we don't use that anymore. + * xserver-xorg-core.bug.script: add a newline between X log and lshal + output. + + -- Brice Goglin Mon, 13 Jul 2009 23:35:13 +0200 + +xorg-server (2:1.6.1.901-3) unstable; urgency=low + + [ Julien Cristau ] + * xvfb-run: don't pass the magic cookie to xauth on the command line + (CVE-2009-1573; closes: #526678). Thanks, Loïc Minier! + * xvfb-run: use mktemp to create the temporary directory. + * Change default for ExaOptimizeMigration to false. This option still + causes visual corruption in some cases. Thanks, Michel Dänzer! + * Only include hal info for keyboards, mice, touchpads and tablets in the + bug script. + * In the bug script, grep dmesg for agp in addition to drm. + * Add patch stolen from Fedora to disable the fbdev driver when it's loaded + together with a PCI or SBUS driver, instead of calling FatalError (closes: + #508476). + * Add patch stolen from Fedora to try and detect the primary PCI device by + mapping the legacy VGA bios and comparing the vendor and device ids. + Previously if there was more than one VGA device and the config didn't + specify BusIDs, the server would just fail to start, so this hack should + improve things. + * Update configure options: + + use --enable-xvfb instead of --enable-vfb + + drop --disable-builtin-fonts, --enable-xtrap, --disable-kdrive-vesa, + --disable-lbx, --disable-xprint, --disable-xorgconfig, --disable-xorgcfg + which don't exist anymore + + use --disable-config-hal and --disable-dri on hurd-i386 + + reorder options to match configure.ac, and use explicit + --enable/--disable instead of using the defaults / autodetection + * Don't recommend xfonts-base. libXfont provides builtin versions of the + fixed and cursor fonts, which are the only required ones. Keep xfonts-* + packages in Suggests for xserver-xorg-core. + * Bump Standards-Version to 3.8.2 now that we have README.source. + * Drop Build-Conflicts on xlibs-static-dev; it's only in oldstable at this + point. + * Pull from upstream server-1.6-branch as of June 23rd (commit dbac41b). + * Bump build-dep on dri2proto to 2.1 for new protocol. + * Bump build-dep on libselinux1-dev to 2.0.80 for avc_netlink_acquire_fd. + + [ David Nusinow ] + * Add README.source + + -- Julien Cristau Tue, 23 Jun 2009 19:52:10 +0200 + +xorg-server (2:1.6.1.901-2ubuntu2) karmic; urgency=low + + * Add xserver-1.5.0-bad-fbdev-thats-mine.patch - If no xorg.conf is + specified, framebuffer device can erroneously grab the PCI. Make + it fail instead in this case. + (LP: #383407) + + -- Bryce Harrington Wed, 24 Jun 2009 15:24:44 -0700 + +xorg-server (2:1.6.1.901-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable. + * Dropped patches: + - obsolete: + 100_xserver_exa_force_greedy.patch + 107_fedora_dont_backfill_bg_none.patch + - upstream: + 163_thinko_in_xf86targetpreferred.patch + 171_xkb_geometry_copying.patch + 173_edid_quirk_philips_lcd.patch + 175_set_pointer_screen_in_xtestfakeinput.patch + 176_quell_warning_exacopydirty.patch + - included by Debian: 999_default_modedebug_on.patch + * Disable 143_default_to_vesa.patch for now, breaks autoconfiguration + when the pci-ids directory exists but has no match. (LP: #379504) + * Disable SELinux support for now, because libaudit-dev needs to be + moved to main first. + + -- Timo Aaltonen Sun, 24 May 2009 00:32:37 +0300 + +xorg-server (2:1.6.1.901-2) unstable; urgency=low + + * Merge from upstream server-1.6-branch (commit a9f85dce). + * Fix FTBFS on kfreebsd (closes: #525475). Thanks, Petr Salinger! + + -- Julien Cristau Thu, 14 May 2009 17:37:40 +0200 + +xorg-server (2:1.6.1.901-1) experimental; urgency=low + + * New upstream development release + + fixes crash in CheckMotion with xinerama (closes: #524853) + + Refresh 20_hurd-i386.diff + + [ Brice Goglin ] + * Add 20_hurd-i386.diff to fix FTBFS on hurd-i386, + thanks Samuel Thibault! (closes: #523970) + + [ David Nusinow ] + * Have the reportbug script append lshal and drm info. + The drm info comes from grepping dmesg output. + + [ Julien Cristau ] + * Properly initialize libgcrypt in the libgcrypt patch (closes: #524822). + Thanks, Sven Joachim! + + -- David Nusinow Mon, 11 May 2009 21:50:37 -0400 + +xorg-server (2:1.6.1-1) unstable; urgency=low + + [ Julien Cristau ] + * Disable dri2 on hurd-i386. Thanks, Samuel Thibault! + + [ Brice Goglin ] + * New upstream release. + + -- Brice Goglin Wed, 15 Apr 2009 13:30:51 +0200 + +xorg-server (2:1.6.0-1) unstable; urgency=low + + [ David Nusinow ] + * Add 0001-xorg.conf-5-refer-to-mousedrv-4-.-Debian-394058.patch to + refer to correct (semi-obsolete) mouse driver manpage. + closes: #394058 + + [ Julien Cristau ] + * New upstream release. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: remove, + included upstream. + * Turn on ModeDebug by default. + * Use libgcrypt for SHA1 instead of OpenSSL's libcrypto. + * Build the xselinux extension on Linux architectures. + * Remove build-dependencies on x11proto-evie-dev, x11proto-trap-dev, + x11proto-xf86misc-dev; the corresponding extensions are removed. + * Remove build-dependencies on x11proto-print-dev, libfreetype6-dev and + xfonts-utils since we don't build Xprt anymore. + * Fix lintian warnings about xserver-xorg-core.NEWS formatting. + * Move -dbg package to new section debug, add ${misc:Depends} where missing. + * Remove unused 06_use_proc_instead_of_sysfs_for_pci_domains.diff, obsoleted + by pci-rework. + * Merge changelog entries 2:1.4.2-9 to 2:1.4.2-11. + * Upload to unstable. + + -- Julien Cristau Thu, 09 Apr 2009 00:36:40 +0100 + +xorg-server (2:1.6.0-0ubuntu15) karmic; urgency=low + + * Re-enable 999_default_modedebug_on.patch to provide debug info in + Xorg.0.log for development series. + + -- Bryce Harrington Sun, 10 May 2009 22:35:02 -0700 + +xorg-server (2:1.6.0-0ubuntu14) jaunty; urgency=low + + * Add 177_animated_cursor_change_master.patch: Fixes crash when using + animated cursors. + (LP: #358009) + + -- Bryce Harrington Wed, 08 Apr 2009 18:52:56 -0700 + +xorg-server (2:1.6.0-0ubuntu13) jaunty; urgency=low + + * Add 176_quell_warning_exacopydirty.patch: Quells innocuous but scary + sounding "exaCopyDirty: Pending damage region empty!" warning, as it + can lead to false-positives with bug reporters. + + -- Bryce Harrington Wed, 08 Apr 2009 14:49:36 -0700 + +xorg-server (2:1.6.0-0ubuntu12) jaunty; urgency=low + + * local/xvfb-run: Revert change from 2:1.6.0-0ubuntu9; prevents running + multiple times. + (LP: #357338. Reopen 348052 rejecting patch) + + -- Bryce Harrington Tue, 07 Apr 2009 15:21:32 -0700 + +xorg-server (2:1.6.0-0ubuntu11) jaunty; urgency=low + + * Add 175_set_pointer_screen_in_xtestfakeinput.patch: Fixes issue when + using Vino, mouse cursor can get stuck in the upper left corner of the + screen. The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid + out-of-range events when the lastSlave was an SD with an explicit axis range. + Device events sent through XTest don't need this flag, they are expected to be + in the valuator range of the device anyway. + (LP: #337926) + + -- Bryce Harrington Mon, 06 Apr 2009 17:22:35 -0700 + +xorg-server (2:1.6.0-0ubuntu10) jaunty; urgency=low + + * debian/patches/174_set_bg_pixmap_of_cow_to_none.patch: + - Set bg pixmap of composite overlay window to None. + Thanks to Havoc Pennington for the patch. + (LP: #356254). + + -- Alberto Milone Mon, 06 Apr 2009 15:06:14 +0200 + +xorg-server (2:1.6.0-0ubuntu9) jaunty; urgency=low + + * local/xvfb-run: Fixes race condition with concurrent invocations + (LP: #348052) + * local/xvfb-run, xvfb-run.1: Add correct docs about error codes + (LP: #328205) + * local/xserver-xephyr.1, rules, xserver-xephyr.install: Add man page + for xephyr + (LP: #134906) + + -- Bryce Harrington Wed, 01 Apr 2009 20:37:22 -0700 + +xorg-server (2:1.6.0-0ubuntu8) jaunty; urgency=low + + * Add 173_edid_quirk_philips_lcd.patch : + Quirk for wrongly reported screen dimensions. + Fixes "huge fonts" issues. + (LP: #353074) + + -- Tormod Volden Wed, 01 Apr 2009 19:47:13 +0200 + +xorg-server (2:1.6.0-0ubuntu7) jaunty; urgency=low + + * Add 172_cwgetbackingpicture_nullptr_check.patch: + - cwGetBackingPicture can segfault when minimizing/maximizing firefox with + a flash video playing. This appears to be a race condition in which the + backing picture's data is not always fully defined. + (LP: #319402) + + -- Bryce Harrington Mon, 30 Mar 2009 22:20:17 -0700 + +xorg-server (2:1.6.0-0ubuntu6) jaunty; urgency=low + + * Add 171_xkb_geometry_copying.patch: + - Fixes crash when plugging/unplugging USB devices due to incorrect + copying of XKB geometry base_color and label_color. Patch + cherrypicked from upstream. + (LP: #333222, #321946) + + -- Bryce Harrington Fri, 27 Mar 2009 19:58:33 -0700 + +xorg-server (2:1.6.0-0ubuntu5) jaunty; urgency=low + + [Tormod Volden] + * Disable 160_log_timestamping.patch before the beta, this was only used + for testing, and the patch also has a serious stack corruption bug. + (LP: #328035) + + [Bryce Harrington] + * Disable 999_default_modedebug_on.patch before the beta, this was used + only for testing. + * Add 169_mipointer_nullptr_checks.patch: + - MIPOINTER() can return NULL in some circumstances, so always check + its return value before dereferencing. + - Fixes crash with keyrepeat on non-primary screen on -nvidia when + using Xinerama (and probably other serious mipointer-related crashes) + (LP: #324465) + * Add 170_primary_pci_video_device.patch: + - Patch from redhat + - Fixes failure when multiple video cards are present. Xserver currently + exits with an error "(EE) No device detected" in such cases. + (LP: #267241) + + -- Bryce Harrington Tue, 24 Mar 2009 09:57:17 -0700 + +xorg-server (2:1.6.0-0ubuntu4) jaunty; urgency=low + + * Add 168_glibc_trace_to_stderr.patch: + - Catch glibc internal abort traces on stderr instead of to the + controlling terminal (LP: #345748). + + -- Kees Cook Thu, 19 Mar 2009 22:39:33 -0700 + +xorg-server (2:1.6.0-0ubuntu3) jaunty; urgency=low + + * Add 165_man_xorg_conf_no_device_ident.patch: + - Device identifier no longer necessary in Screen section of + xorg.conf. Update man page accordingly. + (LP: #261577) + * Add 166_nullptr_xinerama_keyrepeat.patch: + - Avoids null pointer dereference when holding down keys on + non-primary screen when using TwinView / Xinerama on -nvidia. + (LP: #324465) + * Add 167_nullptr_xisbread.patch: + - Avoids null pointer dereference in XisbRead to prevent a (difficult + to reproduce) crash during or after a resume from RAM. + (LP: #324368) + + -- Bryce Harrington Thu, 19 Mar 2009 00:17:40 -0700 + +xorg-server (2:1.6.0-0ubuntu2) jaunty; urgency=low + + * Add 163_thinko_in_xf86targetpreferred.patch: + - For monitors that do not define a "preferred" mode, if the monitor + is not connected to the first output, X wouldn't pick up the mode + correctly, resulting in a "No modes" error in Xorg.0.log and dropping + user to failsafe-X mode. + (LP: #335214) + * Add 164_trap-aspect-ratios.patch: + - Some monitors fib in the EDID they provide, giving their physical + dimensions in the global block, and their aspect ratio(!) in + the detailed timings. This totally messes up DPI calculations + resulting in huge fonts. + (LP: #320930) + + -- Bryce Harrington Wed, 18 Mar 2009 20:47:12 -0700 + +xorg-server (2:1.6.0-0ubuntu1) jaunty; urgency=low + + [ Bryce Harrington ] + * New upstream release + - Fixes segfault during X startup for drivers with RANDR < 1.2 + (LP: #319210) + - Fixes EDID for monitors that incorrectly report aspect ratio instead + of resolution (LP: #311485) + - Fixes issue where X stops responding to mouse clicks after some time + if using Xinerama. (LP: #296167) + * Add 162_null_crtc_in_rotation.patch: Fixes crash when two displays on + separate cards are attached. X doesn't work with multiple cards yet, + but crashing is not an appropriate way to handle such a situation. + (LP: #139990) + + [ Timo Aaltonen ] + * 159_xinerama_focus.patch, + 161_force_paired_kbd_device.patch: + - Dropped, applied upstream + + -- Bryce Harrington Fri, 06 Mar 2009 14:44:31 -0800 + +xorg-server (2:1.5.99.902-1) experimental; urgency=low + + * New upstream release candidate. + * xserver-xorg-core.install: there are no more font modules. + * 0001-mi-force-the-paired-kbd-device-before-CopyKeyClass.patch: new patch, + fixes a crash with some multimedia keyboards (closes: #513384). + + -- Julien Cristau Sat, 31 Jan 2009 19:32:31 +0100 + +xorg-server (2:1.5.99.902-0ubuntu7) jaunty; urgency=low + + * Add 161_force_paired_kbd_device.patch: Fixes issue where a multimedia + keyboard (or keyboard-like device) sends its multimedia key events + through the mouse device file. In this case, pair the device with the + master before processing the events. Patch cherrypicked from upstream. + (LP: #318261) + + -- Bryce Harrington Tue, 17 Feb 2009 17:20:51 -0800 + +xorg-server (2:1.5.99.902-0ubuntu6) jaunty; urgency=low + + * Add 999_default_modedebug_on.patch. Defaults ModeDebug to on. + Upstream requests that users include this option when forwarding bugs + upstream, thus it should be carried at least during development and + reverted by -beta. Performance won't be impacted, and boot time will + be slowed only a negligible amount, as it merely adds a few additional + prints. + + -- Bryce Harrington Tue, 10 Feb 2009 14:06:38 -0800 + +xorg-server (2:1.5.99.902-0ubuntu5) jaunty; urgency=low + + * Revert 158_raise_maxclients.patch. Breaks -nvidia. Binary drivers FTL. + (LP: #326344) + + -- Bryce Harrington Mon, 09 Feb 2009 13:51:04 -0800 + +xorg-server (2:1.5.99.902-0ubuntu4) jaunty; urgency=low + + * 160_log_timestamping.patch: Only add timestamp on tagged messages + (LP: #285787) + + -- Tormod Volden Fri, 06 Feb 2009 23:33:11 +0100 + +xorg-server (2:1.5.99.902-0ubuntu3) jaunty; urgency=low + + * Add 160_log_timestamping.patch: Show timestamps in Xorg.*.log + files. + (LP: #285787) + + -- Bryce Harrington Fri, 06 Feb 2009 06:28:48 -0800 + +xorg-server (2:1.5.99.902-0ubuntu2) jaunty; urgency=low + + [Bryce Harrington] + * Add 157_check_null_modes.patch: Catch null pointer dereference in + video mode selection, which can cause xserver crash when using SDL + applications with qemu/kvm. + (LP: #300310) + * Add 158_raise_maxclients.patch to raise max number of clients from 256 + to 512. Trade-off is that this reduces client resources available to + 1,048,576 total resources (which should still be ample). + (LP: #260138) + + [Steven Harms] + * 159_xinerama_focus.patch: Resolves xinerama focus issues + with multiple screens + (LP: #41301) + + -- Bryce Harrington Wed, 04 Feb 2009 22:33:28 -0800 + +xorg-server (2:1.5.99.902-0ubuntu1) jaunty; urgency=low + + * New upstream release candidate. + + -- Timo Aaltonen Sat, 31 Jan 2009 11:03:52 +0200 + +xorg-server (2:1.5.99.901-2) experimental; urgency=low + + [ Julien Cristau ] + * Bump libdrm-dev build-dep to help out sbuild. + + [ Timo Aaltonen ] + * debian/rules: Disable builtin fonts (LP: #308649, closes: #512706) + + -- Julien Cristau Fri, 23 Jan 2009 21:16:14 +0100 + +xorg-server (2:1.5.99.901-1ubuntu1) jaunty; urgency=low + + * Merge with Debian experimental. + * debian/rules: Include xorg-server.conf for dbus support. + + -- Timo Aaltonen Fri, 23 Jan 2009 13:53:33 +0200 + +xorg-server (2:1.5.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + adds autodetection of sbus devices (closes: #483942). + Thanks, Bernhard R. Link! + + RandR version 1.3 adds panning (closes: #509699). + + fixes a crash with XAA and fb24_32ReformatTile (closes: #443480). + + correctly sets RAW mode on the console when xorg.conf is absent + (closes: #505746). + + [ Timo Aaltonen ] + * debian/control: + - Add x11proto-dri2-dev to build-depends. + - Bump the x11proto-randr-dev build-dep version to 1.2.99.3. + - Bump the libpixman-1-dev build-dep version to 0.13.2. + - Bump the xtrans-dev build-dep version to 1.2.2. + - Bump the x11proto-xext-dev build-dep version to 7.0.3. + - Bump the x11proto-input-dev build-dep version to 1.5. + - Bump the libgl1-mesa-dev and mesa-common-dev build-dep to + 7.2+git20081209.a0d5c3cf. + - Bump the x11proto-core build-dep to 7.0.13. + - Add a build-dep on libxinerama-dev. + - Conflict xserver-xorg-video-4, xserver-xorg-input-2.1. + * debian/rules: + - Enable dri2 again. + * debian/patches: + 02_Disable-DRI-in-Xephyr.patch + 03_glx-init-infinite-loop.diff + - Dropped, implemented upstream. + 13_debian_add_xkbpath_env_variable.diff + - Disabled for now, needs to be reimplemented or dropped. + * debian/{input,video}abiver: Bump the input (4) and videoabiver (5). + * debian/serverminver: Bump to 2:1.5.99.901. + + [ Julien Cristau ] + * Ditch the GLX Public License and the CID Font Code Public License from + debian/copyright. The CID code has been removed a while ago, and all code + under the GLXPL has been relicensed to the SGI Free Software License B 2.0. + This finally closes: #211765. + + [ Yves-Alexis Perez ] + * debian/control: update deps for xserver-xorg-dev: + - libpixman-1-dev (>= 0.13.2-1) + - x11proto-core-dev (>= 7.0.14) + - x11proto-input-dev (>= 1.5.0) + - x11proto-xext-dev (>= 7.0.4) + - x11proto-randr-dev (>= 1.2.99.3) + - add x11proto-dri2-dev + + -- Julien Cristau Wed, 21 Jan 2009 20:59:34 +0100 + +xorg-server (2:1.5.99.901-0ubuntu1) jaunty; urgency=low + + [ Timo Aaltonen ] + * debian/rules: Enable dbus-support. + * Merge current server-1.6-branch. + * Disable patch 107 for now, to see what kind of a performance hit + it'll be. The problem it causes is random garbage on windows + while apps are being loaded. + (LP: #254468) + * Remove patches 150, 151, 152, 154, applied upstream. + + [ Bryce Harrington ] + * 156_exevents_copykeyclass_nullptrcheck.patch: Add several NULL pointer + checks in CopyKeyClass to prevent SEGFAULT seen when pressing button + on an ATI USB remote control. + (LP: #311254) + + -- Timo Aaltonen Sat, 17 Jan 2009 16:17:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu3) jaunty; urgency=low + + [Timo Aaltonen] + * debian/rules: Disable builtin fonts (LP: #308649) + + [Bryce Harrington] + * 135_rethrow_signals.patch: Update for 1.6 and re-enable. + (LP: #226668) + + -- Bryce Harrington Tue, 16 Dec 2008 19:04:14 -0800 + +xorg-server (2:1.5.99.3-0ubuntu2) jaunty; urgency=low + + * Merge server-1.6-branch (LP: #308225). + + -- Timo Aaltonen Tue, 16 Dec 2008 10:00:58 +0200 + +xorg-server (2:1.5.99.3-0ubuntu1) jaunty; urgency=low + + * Merge from debian experimental git branch. + * Dropped patches: + - 103_inputproto_1.4.3_is_fine.patch: obsolete + - 137_add_device_property_support.patch: upstream + - 138_look_at_all_bytes_of_dev_enabled.diff: upstream + - 141_improved_driver_selection.patch: upstream + - 150_no_visibility_notify_on_unredirect.patch: upstream + * 110_fedora_no_move_damage.patch modified to use new function names. + * Renumbered 142_psb_auto.patch to 103. + * Add a couple of patches from the proposed queue: + - 150_dont-update-vcp-valuators.patch + The VCP doesn't need to update the valuators anyway since it cannot + send XI events. Just skip that bit. + - 151_allow-null-as-rulesfile.patch + If no rules file is given, simply re-use the previous one. If no + RF is given the first time this function is called, use the + built-in default. + - 152_let-the-ddx-decide-on-the-xkbrulesdefaults.patch + Rather than assuming rules in the CoreKeyboardProc, init the default + rules in InitCoreDevices, then re-use them later. + * Add 153_make_dmx_compile.patch + - Change xcalloc -> calloc, so that dmx compiles. Not tested if it + also works. + * Drop patch 136, since SwitchCoreKeyboard is gone, and patches 151/152 + basically reimplement the functionality. + * Add 154_force-copykeyclass-for-key-events.patch, to fix fdo + bug 19048. Without this the server default layout would always be + used. + + [ Bryce Harrington ] + * Patch 135 updated so that apport actually works now, but leave it + disabled until the code is updated for 1.6. + + -- Timo Aaltonen Mon, 15 Dec 2008 11:34:53 +0200 + + +xorg-server (2:1.5.3-1ubuntu1) jaunty; urgency=low + + * Merge from debian-experimental, remaining changes: + + debian/control: + - x11proto-input-dev, libxi-dev build-deps bumped because of + input properties. + - Conflict with xserver-xorg-video-psb << 0.15.0-0ubuntu1~804um5 + as these versions didn't have an ABI provide. + - Breaks old synaptics, evdev which didn't have properties. + + debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 103_inputproto_1.4.3_is_fine.patch: + Don't require inputproto 1.4.4 in configure.ac. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 135_rethrow_signals.patch + Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + - 136_fedora_force_switchcorekeyboard_for_evdev.patch + Allow clients to set the layout. + - 137_add_device_property_support.patch + Add support for input-device properties (XI 1.5). + - 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + - 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. + - 141_improved_driver_selection.patch + Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + - 142_psb_auto.patch + Autoload vesa for the psb hardware, psb being broken currently. + - 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + - 150_no_visibility_notify_on_unredirect.patch + Do not sent VisibilityNotify events when MapUnmapEvents + are disabled + + debian/local/xvfb-run: disable the Composite-extension for xvfb. + + debian/serverminver: Bump the serverminver because of the newer + properties API. + + debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default as part of the SELinux merge. However, we need + the security module for xauth on Kubuntu, else ubiquity fails. + (LP 247537) + * Changes done: + - debian/control: xfvb doesn't need to Depend on xauth, xfonts-base + anymore, Recommends are pulled in by default now. + + -- Timo Aaltonen Wed, 26 Nov 2008 13:42:11 +0200 + +xorg-server (2:1.5.3-1) experimental; urgency=low + + [ Loic Minier ] + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + [ Julien Cristau ] + * New upstream release. + * Fix infinite loop on server reset when swrast_dri.so is missing. Only + push swrast on the glx provider stack on first generation, so we don't + turn the stack into a circular list (closes: #500287). + * Enable the record extension (closes: #504303). + * Merge changes from 2:1.4.2-8. + + -- Julien Cristau Tue, 11 Nov 2008 23:17:14 +0100 + +xorg-server (2:1.5.2-2ubuntu3) intrepid; urgency=low + + * 138_look_at_all_bytes_of_dev_enabled.diff: dev->enabled has type + Bool, which is typedef'd to int, but is used in comparisons with + CARD8 data, which gives incorrect logic on big endian systems, + causing failure to initialize keyboard and mouse. + (LP: #281610) + + -- Bryce Harrington Thu, 23 Oct 2008 07:31:47 -0700 + +xorg-server (2:1.5.2-2ubuntu2) intrepid; urgency=low + + * 143_default_to_vesa.patch: If no matching driver is found in the + .ids files, set "vesa" as a fallback default, otherwise a driver + may be selected regardless of whether it actually provides support + for the chipset by videoPtrToDriverList() based on its vendor id. + (LP: #261977) + + -- Bryce Harrington Thu, 23 Oct 2008 06:21:18 -0700 + +xorg-server (2:1.5.2-2ubuntu1) intrepid; urgency=low + + * debian/patches/150_no_visibility_notify_on_unredirect.patch + - do not sent VisibilityNotify events when MapUnmapEvents + are disabled (LP: #278112) + + -- Michael Vogt Sat, 18 Oct 2008 00:05:30 +0200 + +xorg-server (2:1.5.2-1ubuntu4) intrepid; urgency=low + + * Update patch 142_psb_auto to only try vesa, not even psb, as this requires + the psb driver to be loadable, and it's not available anymore (and broken + anyway). + + -- Loic Minier Wed, 15 Oct 2008 18:14:28 +0200 + +xorg-server (2:1.5.2-1ubuntu3) intrepid; urgency=low + + * Shut up rmdir error when trying to remove dirs; this might confuse + debconf. + + -- Loic Minier Wed, 15 Oct 2008 17:57:13 +0200 + +xorg-server (2:1.5.2-1ubuntu2) intrepid; urgency=low + + * Update patch 142_psb_auto to also try psb and vesa for 0x8109. + * Apply and drop patch 123_no_composite_for_xvfb_run which was changing + files below debian/ (xvfb-run, to disable the Composite extension by + default). + + -- Loic Minier Wed, 15 Oct 2008 15:27:23 +0200 + +xorg-server (2:1.5.2-1ubuntu1) intrepid; urgency=low + + * Merge from debian-experimental. + * Update patch 142_psb_auto to try vesa if psb fails; thanks Oliver Grawert. + * Refresh patch 100_xserver_exa_force_greedy to apply cleanly. + * Let xserver-xorg-core conflict with xserver-xorg-video-psb + << 0.15.0-0ubuntu1~804um5 as these versions didn't have an ABI provide. + + -- Loic Minier Tue, 14 Oct 2008 23:03:06 +0200 + +xorg-server (2:1.5.2-1) experimental; urgency=low + + * New upstream bugfix release. + * debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching using + plain text files provided by drivers. + * Don't pass --with-serverconfig-path to configure, we only used to override + it for Xprint. + * Re-introduce the xserver-common package, containing + /usr/lib/xorg/protocol.txt and the Xserver(1) manpage for now. + * debian/rules: Use filter instead of findstring for noopt in + DEB_BUILD_OPTIONS. + * Remove obsolete conffile /etc/X11/xserver/SecurityPolicy on upgrades. + * Merge changes from 2:1.4.2-7. + + -- Julien Cristau Sat, 11 Oct 2008 20:20:28 +0200 + +xorg-server (2:1.5.1-1ubuntu3) intrepid; urgency=low + + * Pull upstream changes from server-1.5-branch including b595b65e: + - Fix GKVE with key_code > 255 (LP: #274203) + - DGA: Fix ProcXF86DGASetViewPort for missing support in driver. + Fixes a segfault when trying to activate a DGA mode without + checking whether DGA modesetting is at all possible. + - Check nextEnabledOutput()'s return in bestModeForAspect() + In case no enabled outputs, we will reference wrong index of + output array. + - int10: Fix a nasty memory leak. + - int10: Don't warn when scanning for devices we don't have. + Some BIOSes (hi XGI!) will attempt to enumerate the PCI bus by + asking for the config space of every possible device number. + This despite perfectly functional BIOS methods to enumerate the + bus exactly. + - int10: Remove useless check. + If you have more than one PCI device with the same d/b/d/f, you're + already in trouble. + - http://bugs.freedesktop.org/show_bug.cgi?id=14373 + xkb: squash canonical types into explicit ones on core reconstruction. + xkb: fix core keyboard map generation. + - xkb: fix use of uninitialized variable. + - Remove usage of mfbChangeWindowAttributes missed in e4d11e58c... + - Only build dri2 when DRI2 is enabled. + * Merge patches 138 and 139 into 137, and update the properties API to + match the current version in master (final API for XI 1.5). + (LP: #274728) + * Bump the build-dep on x11proto-input-dev and libxi-dev. + * Bump the serverminver because of newer properties API. + * Add Breaks against current synaptics and evdev, since they use the old + API and need to be updated with the server. + + -- Timo Aaltonen Fri, 10 Oct 2008 11:16:56 +0300 + +xorg-server (2:1.5.1-1ubuntu2) intrepid; urgency=low + + * Merge with Debian experimental: + - debian/rules: define PCI_TXT_IDS_DIR to unbreak the pci id matching + using plain text files provided by drivers. (LP: #261977) + + -- Timo Aaltonen Fri, 26 Sep 2008 12:05:12 +0300 + +xorg-server (2:1.5.1-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. (LP: #269388) + + -- Timo Aaltonen Wed, 24 Sep 2008 19:33:34 +0300 + +xorg-server (2:1.5.1-1) experimental; urgency=low + + * New upstream bugfix release. + * 02_Disable-DRI-in-Xephyr.patch: don't use DRI in Xephyr, as it doesn't + work correctly. + * Merge changelog from 2:1.4.2-6 (all changes are upstream now). + + -- Julien Cristau Wed, 24 Sep 2008 17:49:18 +0200 + +xorg-server (2:1.5.0-1ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * 141_improved_driver_selection.patch + - Allow returning multiple drivers to try for a given PCI id. + Also includes support for fallback drivers, but only when + not using an xorg.conf. + * 142_psb_auto.patch + - Renamed, refreshed. + + -- Timo Aaltonen Tue, 09 Sep 2008 11:44:13 +0300 + +xorg-server (2:1.5.0-1) experimental; urgency=low + + * New upstream release. + * Kill patch 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch, + 1.2 requests are properly swapped now. + * Bump videoabiver to 4 to match ABI_VIDEODRV_VERSION. Yes, that means + rebuilding video drivers; sorry about that. + + -- Julien Cristau Thu, 04 Sep 2008 02:05:47 +0200 + +xorg-server (2:1.4.99.906-2ubuntu5) intrepid; urgency=low + + * Bump the serverminver because of input properties. + + -- Timo Aaltonen Wed, 03 Sep 2008 16:03:28 +0300 + +xorg-server (2:1.4.99.906-2ubuntu4) intrepid; urgency=low + + [ Bryce Harrington ] + * 140_quell_acpid_errmsgs.patch: Don't fill the server log with errors + from not being able to connect to acpid. (LP: #247195) + + -- Timo Aaltonen Wed, 03 Sep 2008 10:48:24 +0300 + +xorg-server (2:1.4.99.906-2ubuntu3) intrepid; urgency=low + + [ Bryce Harrington ] + * 135_rethrow_signals.patch: Update to make it catch and throw a + wider variety of signals, and do a clean shutdown of the X server + (code borrowed from FatalError()). + + -- Bryce Harrington Mon, 01 Sep 2008 13:19:46 -0700 + +xorg-server (2:1.4.99.906-2ubuntu2) intrepid; urgency=low + + * 103_inputproto_1.4.3_is_fine.patch: + - Don't require inputproto 1.4.4 in configure.ac.. + + -- Timo Aaltonen Thu, 28 Aug 2008 13:24:05 +0300 + +xorg-server (2:1.4.99.906-2ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental. + * Dropped patches, upstream: + 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 131_remove_open-coded_strcasestr.patch + 132_add_parsing_for_xkb.options.patch + 133_support_strlist_for_xkboptions.patch + 134_protect_against_out_of_bounds.patch + * control: Fix build-dep on inputproto to >= 1.4.3-2ubuntu2 for + DeviceControlChanged. + + -- Timo Aaltonen Thu, 28 Aug 2008 12:39:33 +0300 + +xorg-server (2:1.4.99.906-2) experimental; urgency=low + + * Pull from server-1.5-branch as of Aug 27th + + input devices from xorg.conf aren't ignored if there is no ServerLayout + option (closes: #492140) + * Bump build-dep on inputproto to >= 1.4.4 for DeviceControlChanged. + * Merge in changes from 2:1.4.2-3 to 2:1.4.2-5. + + -- Julien Cristau Thu, 28 Aug 2008 00:33:02 +0200 + +xorg-server (2:1.4.99.906-1ubuntu4) intrepid; urgency=low + + * 137_add_device_property_support.patch, + 138_xi_expose_enable_disabledevice.patch, + 139_xi_protect_against_null_handlers.patch: + - Add support for input-device properties. + * debian/control: Bump the build-depends on x11proto-input-dev + and libxi-dev. + + -- Timo Aaltonen Fri, 22 Aug 2008 09:00:14 +0300 + +xorg-server (2:1.4.99.906-1ubuntu3) intrepid; urgency=low + + * 130_fedora_fix_procxkbsetxyz_to_work_on_all.patch + 136_fedora_force_switchcorekeyboard_for_evdev.patch + - Allow clients to set the layout. + * Drop 130_fedora_call_switchcorekeyboard.patch, obsoleted. + + -- Timo Aaltonen Wed, 06 Aug 2008 13:30:28 +0300 + +xorg-server (2:1.4.99.906-1ubuntu2) intrepid; urgency=low + + * Add 135_rethrow_signals.patch + - Currently Xorg "eats" its crash signals, issuing an error message + that it caught the signal and then aborts. This patch raises the + signal it caught, so that subsequent crash handlers (i.e. apport) + can also catch and act on it. + + -- Bryce Harrington Tue, 05 Aug 2008 16:20:46 -0700 + +xorg-server (2:1.4.99.906-1ubuntu1) intrepid; urgency=low + + * Merge with debian experimental, 1.5RC6 (LP: #247120, #253021) + * Drop 120_fedora_xserver-xaa-evict-pixmaps.patch, because offscreen + pixmaps are already disabled by default. + * Drop 124_fix_randr_no_crtc.patch, fixed upstream. + * Add 130_fedora_call_switchcorekeyboard.patch, a hack to fix fd.o bug + #16364. Breaks if the first hotplugged keyboard is not the wanted + keyboard. + * Patches from upstream master: + 131_remove_open-coded_strcasestr.patch + - pre-requisite for the rest + 132_add_parsing_for_xkb.options.patch + - parsing xkb.options didn't work (fd.o #16874) + 133_support_strlist_for_xkboptions.patch + - allow using a list for xkb.options like before. + 134_protect_against_out_of_bounds.patch + - protect against potential out-of-bounds indexing. + + -- Timo Aaltonen Tue, 05 Aug 2008 01:49:42 +0300 + +xorg-server (2:1.4.99.906-1) experimental; urgency=low + + * debian/rules: drop useless handling of nostrip in DEB_BUILD_OPTIONS (this + is taken care of by dh_strip); make the rules files and xsfbs.mk + parallel-safe, and enable parallel=n using example code from Debian + Policy. + * debian/rules: put the source package name and version in builderstring + instead of osvendor, add builder email as well; don't explicitly set + osname, configure sets it to $(uname -srm) by default. + * New upstream release candidate. + - fixes 64-bit Xephyr (closes: #491569) + - work around the DIX losing physical monitor dimensions for randr 1.1 + drivers, in particular nvidia (closes: #488987) + - make sure RANDR reports refresh as 0 if pixel clock is 0 (closes: + #490258) + - doesn't try to load dri2 when it's not built (closes: #491651) + * Switch to running autoreconf at build time, and build-depend on automake, + libtool and xutils-dev. + * Reformat the SGI Free Software License B, to shut up over 1000 lintian + warnings. + + -- Julien Cristau Sun, 27 Jul 2008 18:30:45 +0200 + +xorg-server (2:1.4.99.905-0ubuntu5) intrepid; urgency=low + + * debian/rules: + Added --enable-record. By default, xorg-server does not build the + RECORD extension. Added the record module (for Xnee and other purposes). + + -- Chris Nasho Thu, 31 Jul 2008 17:26:00 -0400 + +xorg-server (2:1.4.99.905-0ubuntu4) intrepid; urgency=low + + * debian/rules: + Add --enable-xcsecurity --enable-appgroup. The SECURITY module was + disabled by default in commit 86b2e59bfb79bd042a13c35fbb4ccecec576f629, + as part of the SELinux merge. However, we need the security module + for xauth on Kubuntu, else ubiquity fails. (Ref. LP 247537) + + -- Bryce Harrington Wed, 16 Jul 2008 06:01:45 -0700 + +xorg-server (2:1.4.99.905-0ubuntu3) intrepid; urgency=low + + * patches/124_fix_randr_no_crtc.patch: + + In certain circumstances, xrandr multiscreen initialization fails + to associate crtcs with monitors, resulting in startup failures + in some GDK-based applications when using -vesa. This occurs + because mode-Clock, mode->HTotal, and mode->VTotal are all 0. + (LP: #246585) + + -- Bryce Harrington Tue, 15 Jul 2008 07:01:13 -0700 + +xorg-server (2:1.4.99.905-0ubuntu2) intrepid; urgency=low + + * Merge with debian git, new changes: + - Build with --enable-glx-tls, we build mesa with TLS support + (otherwise swrast_dri.so might fail to load due to unresolved + symbols). + - Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without + this package, the GLX extension fails to initialise (and takes the + server down) due to missing swrast_dri.so. + + -- Timo Aaltonen Mon, 07 Jul 2008 11:44:39 +0300 + +xorg-server (2:1.4.99.905-0ubuntu1) intrepid; urgency=low + + * Merge with Debian experimental, remaining changes: + * debian/control: + - Change maintainer address. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_xserver_exa_force_greedy.patch + Provide a mechanism for drivers to force greedy mode on. + - 101_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 102_ubuntu_sharevts_load_cpu.patch + Close console fd only when using --sharevts. + - 104_psb_auto.patch + Add automatic detection of Poulsbo hardware when running without a + Device definition. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + would otherwise force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch + A hack to evict XAA pixmaps and disable the pixmap cache when the first + texture is bound. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + * Cleaned up patches: + - upstream, either directly or otherwise implemented: + 103_fedora_openchrome.patch, 105_reduce_wakeups_from_smart_scheduler.diff + 108_fedora_honor_displaysize.patch, 109_glx_fail_if_no_texture_bound.diff + 144_fedora_xserver-1.3.0-xnest-exposures.patch, + 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch, + 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch, + 148_dix_touchscreen_fixes.diff, + 149_add_quirks_for_physical_screen_size_issues.patch, + 150_edid_quirk_lp154w01.patch, 151_x86emu_handle_cpuid.patch, + 153_exa_skip_empty_glyphs.diff, 154_fix_rotation_for_multimon.diff, + 155_exa_fix_off-by-one.diff, 156_resize_composite_overlay.diff, + 157_fix_exa_pixmap_width.diff, 158_xkb_wrapping.diff, + 159_xkb_default_to_null.diff, 160_default_to_intel.diff, + 161_fix_big_endian_cursor.diff, 162_cve-2007-6429.diff, + 163_fix_untrusted_access.diff, 164_fix_context_sharing.diff, + 165_fedora_xserver-1.5.0-xaa-option-inversion.patch, + 166_fix_lpl_monitors.diff, 167_xf86AutoConfig_geode_addition.diff, + 168_closedir.patch, + 170_xorg-xserver-1.4-cve-2008-1377.diff, + 171_xorg-xserver-1.4-cve-2008-1379.diff, + 172_xorg-xserver-1.4-cve-2008-2360.diff, + 173_xorg-xserver-1.4-cve-2008-2361.diff, + 174_xorg-xserver-1.4-cve-2008-2362.diff + - obsolete: + 101_fedora-apm-typedefs.patch + 104_fedora_init_origins_fix.patch + 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - unnecessary: + 106_ubuntu_fpic_libxf86config.patch (the lib is not shipped) + + -- Timo Aaltonen Fri, 04 Jul 2008 13:39:34 +0300 + +xorg-server (2:1.4.99.905-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + - fixes FTBFS on alpha (closes: #472205); won't work, though, because + of #485528 + - fixes FTBFS on GNU/kFreeBSD (closes: #482550) + * 001_ubuntu_add_extra_modelines_from_xorg.patch: remove, replace with + 001_fedora_extramodes.patch stolen from fedora 9 cvs, rev 1.8. + * xvfb: recommend xauth instead of xbase-clients. + * xserver-xfbdev: recommend xfonts-base. + * debian/rules: drop our special handling for stripping modules, which I + think dates back to the days of the custom module loader. + * debian/rules: drop some remaining xprintisms. + * bump serverminver to 2:1.4.99.905. + * Stop build-depending on mesa-swx11-source (mesa 7.1 will build the + software driver itself), and don't pass --with-mesa-source to configure. + * Build with --enable-glx-tls, we build mesa with TLS support (otherwise + swrast_dri.so might fail to load due to unresolved symbols). + * Make the servers recommend libgl1-mesa-dri (>= 7.1~rc1). Without this + package, the GLX extension fails to initialise (and takes the server down) + due to missing swrast_dri.so. + + [ Timo Aaltonen ] + * Re-enable dri & glx. + * Add a build-dep on mesa-common-dev (>= 7.1~rc1) and bump the desired + version of libgl1-mesa-dev respectively. + * Bump the libdrm-dev build-dep version to 2.3.1. + + -- Julien Cristau Sun, 13 Jul 2008 23:33:05 +0200 + +xorg-server (2:1.4.99.902-1) experimental; urgency=low + + * Add postrm script for xserver-xorg-core, to remove + /var/log/Xorg.*.log{,.old} on purge (closes: #343384). + * Use dh_* -s instead of -a in binary-arch, to fix FTBFS on s390 (which + doesn't build xserver-xfbdev). + * New upstream release candidate. + + refresh 13_debian_add_xkbpath_env_variable.diff + + doesn't crash when there is no pci device (closes: #472823) + + includes a quirk for LPL monitors with broken EDID (closes: #473260) + + XKB is now enabled in Xnest (closes: #164379) + * Stop building Xprt, and drop related patches; it will be provided as a + separate package. + + -- Julien Cristau Fri, 23 May 2008 00:58:45 +0200 + +xorg-server (2:1.4.99.901-2) experimental; urgency=low + + * xserver-xorg-dev needs to depend on libpciaccess-dev. + * Pull from upstream server-1.5-branch as of March 21st (commit 98249dfa). + + fixes build on ia64 (closes: #471663) + * Add missing conflicts on xserver-xorg-input-2. + + -- Julien Cristau Fri, 21 Mar 2008 22:40:36 +0100 + +xorg-server (2:1.4.99.901-1) experimental; urgency=low + + [ Julien Cristau ] + * New upstream release candidate + * Update patches: + + 001_ubuntu_add_extra_modelines_from_xorg.patch: remove useless + whitespace changes + + 02_libvgahw_gcc4_volatile_fix.diff: delete, the gcc bug this was working + around is fixed for a long time + + 03_auto_load_driver.diff, 04_auto_load_driver_no_conf.diff, + 05_kill_type1.diff, 07_autoconfig_screen_with_device_section.diff, + 08_better_dpms_logging.diff, 10_dont_look_in_home_for_config.diff, + 11_dont_crash_on_bad_dri_mode.diff, 14_default_screen_section.diff, + 21_glx_align_fixes.patch, 40_default_dpi_96.patch, + 41_vbe_filter_less.diff, + 42_dont_break_grab_and_focus_for_window_when_redirecting.diff, + 43_allow_override_BIOS_EDID_preferred_mode.diff, + 44_preferredmode_infinite_loop.diff, + 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff, + 46_reduce_wakeups_from_smart_scheduler.patch, + 47_fbdevhw_magic_numbers.diff, 51_xkb-and-loathing.diff, + 93_xprint_fonts_fix: remove, applied upstream + + 06_use_proc_instead_of_sysfs_for_pci_domains.diff: disable for now, + shouldn't be needed with pciaccess + + 13_debian_add_xkbpath_env_variable.diff: refresh + + 94_xprint_XSERVER_LIBS: disable, should be fixed upstream + * Disable glx, dri and dri2 for now. + * Re-enable dmx, build the xdmx and xdmx-tools packages. + * Add build-deps on libpciaccess-dev and libssl-dev for Xorg, bump build-dep + on libpixman-1-dev to >= 0.9.5. + * Add build-dep on libxv-dev for Xephyr. + * Drop XS- prefix from Vcs-* debian/control fields. + * Bump videoabiver to 2.9, inputabiver to 2.1, serverminver to 2:1.4.99.901. + * Drop obsolete --with-rgb-path configure option. + * /etc/X11/xserver/SecurityPolicy is gone, don't install it. + * Don't build-dep on "foo (>= bar-1)", to fix lintian warnings. + + [ Drew Parsons ] + * Remove 94_xprint_XSERVER_LIBS (not needed in xserver 1.5). + + [ Brice Goglin ] + * Build the Xfbdev server for real now, in new package xserver-xfbdev, + closes: #439764. + + -- Julien Cristau Fri, 14 Mar 2008 13:46:48 +0100 + +xorg-server (2:1.4.2-11) unstable; urgency=low + + * Bump x11proto-input-dev build-dep to >= 1.5.0 to fix keyboard layout + breakage with new libxi built against the same. Closes: #515976 + + -- David Nusinow Thu, 19 Feb 2009 21:52:24 -0500 + +xorg-server (2:1.4.2-10) unstable; urgency=medium + + * Cherry-pick from upstream: GLcore: make googleearth not crash the server + on sw-rendering (closes: #495483). + + -- Julien Cristau Fri, 09 Jan 2009 02:26:06 +0100 + +xorg-server (2:1.4.2-9) unstable; urgency=low + + * Cherry-pick patches from upstream to make xf86ScaleAxis() work correctly. + * Steal patch from Fedora: more sanity checks to stop vmmouse from + segfaulting the server (closes: #503459). + + -- Julien Cristau Thu, 13 Nov 2008 23:32:47 +0100 + +xorg-server (2:1.4.2-8) unstable; urgency=low + + * Add patch from Petr Salinger to fix PCI domain support on kfreebsd + (closes: #499501). + * xfree86: xf86SetDepthBpp needs to respect the driver's depth24flags. + Instead of forcing a 32bpp framebuffer, we pick a value that the driver + actually supports (closes: #504819, #486925); cherry-picked from upstream + git. + + -- Julien Cristau Tue, 11 Nov 2008 20:46:52 +0100 + +xorg-server (2:1.4.2-7) unstable; urgency=low + + * Update debian/copyright to the SGI Free Software License B, version 2.0. + It now mirrors the free X11 license used by X.Org. + http://www.sgi.com/company_info/newsroom/press_releases/2008/september/opengl.html + * Not closing bug#211765 for now, because GL/glx/glxext.c and + hw/dmx/glxProxy/glxext.c are covered by the GLX Public License, which is + still not free. SGI has since released their code under FreeB, but that + doesn't necessarily apply to contributions from other people. Hopefully + this can be cleared up soon, though. + * xvfb-run: append to $ERRORFILE instead of truncating it, so the error + output from Xvfb is not deleted when we run 'xauth remove'. + + -- Julien Cristau Tue, 30 Sep 2008 00:39:58 +0200 + +xorg-server (2:1.4.2-6) unstable; urgency=low + + * Xevie: always set rep.length to 0 (closes: #497337). Thanks, Thorvald + Natvig! + * Xevie: swap replies if necessary, to not confuse clients with a different + endianness. + * Cherry-picked from upstream git: + XF86VidMode: Correct a NULL pointer dereference (closes: #498289) + + -- Julien Cristau Mon, 15 Sep 2008 01:21:13 +0200 + +xorg-server (2:1.4.2-5) unstable; urgency=low + + * Don't pretend we support randr 1.2 when queried by swapped clients. The + dispatch code for RandR 1.2 requests would return BadImplementation anyway + (closes: #495833). + * Cherry-picked from upstream: + + exa: fix assert logic thinko. + + -- Julien Cristau Tue, 26 Aug 2008 19:27:34 +0200 + +xorg-server (2:1.4.2-4) unstable; urgency=low + + * Re-enable patch 47_fbdevhw_magic_numbers.diff, fixes xen framebuffer + (closes: #493901). Thanks, Olivier Tétard! If someone knows why I + disabled it a year ago, I'd love to know. + + -- Julien Cristau Fri, 15 Aug 2008 19:15:54 +0200 + +xorg-server (2:1.4.2-3) unstable; urgency=low + + * Add Romanian debconf translation (closes: #489069). Thanks, Eddy + Petrișor! + * Update Dutch debconf translation (closes: #491663). Thanks, Thijs + Kinkhorst! + * Pull from server-1.4-branch: + - Xi: ChangeDeviceControl presence events should set the appropriate + devchange + - Fix potential crasher in xf86CrtcRotate() + * Cherry-picked from 1.5: + - Work around the DIX losing mmWidth/mmHeight for RandR 1.1 DDXen + (closes: #491526). + + -- Julien Cristau Sat, 02 Aug 2008 23:22:32 +0200 + +xorg-server (2:1.4.2-2) unstable; urgency=low + + [ Julien Cristau ] + * GLX: zero the buffer used in __glXDisp_GetVisualConfigs (backport from + upstream). + + [ Brice Goglin ] + * Cherry-pick various patches from upstream: + - Fix incorrect test regarding keyboard map. + - xfree86: append, not prepend, new input devices to xf86InputDevs. + + -- Julien Cristau Fri, 18 Jul 2008 10:53:26 +0200 + +xorg-server (2:1.4.2-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release. + * Security fixes from the previous upload are included upstream. + * Cherry-pick patches from upstream git to make the LeftOf and Above options + in xorg.conf actually work (closes: #466526). + * 48_xaa_nooffscreenpixmaps.diff: disable XAA offscreen pixmaps by default; + they can be enabled with Option "XaaOffscreenPixmaps" (closes: #478277, + #433331). + * Cherry-pick various patches from upstream for Xorg's modes code: + - add quirks for monitors with broken EDID (closes: #473260) + - fix max clock computation + - inherit the preferred mode from the global configuration (so if you have + Modes "800x600" in the Display subsection the server will honor it + instead of ignoring it) + * Backport patch from upstream git to fix emulation of int1A PCI BIOS + services (closes: #404885). Thanks, Robert de Bath! + + [ Brice Goglin ] + * Update patches to not require -p0, closes: #485185. + + -- Julien Cristau Thu, 26 Jun 2008 01:57:18 +0200 + +xorg-server (2:1.4.1~git20080517-2) unstable; urgency=high + + * High urgency upload for security fixes. + * New patch from upstream to fix multiple security issues reported by + iDefense: + CVE-2008-2360 - RENDER Extension heap buffer overflow + CVE-2008-2361 - RENDER Extension crash + CVE-2008-2362 - RENDER Extension memory corruption + CVE-2008-1379 - MIT-SHM arbitrary memory read + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Julien Cristau Mon, 09 Jun 2008 14:59:04 +0200 + +xorg-server (2:1.4.1~git20080517-1) unstable; urgency=low + + [ Julien Cristau ] + * Pass -DPRE_RELEASE=0 in CPPFLAGS, so we don't print the pre-release + warning in the Xorg log. + * Pull from upstream server-1.4-branch + + drop patch 40_default_dpi_96.patch applied upstream + + refresh patches 03_auto_load_driver.diff and + 04_auto_load_driver_no_conf.diff + * Don't build-depend on packages with a -1 debian revision. + * Drop the XS- prefix from Vcs-* control fields. + * Add x11-common to the Depends field of xnest, xvfb and xserver-xephyr (its + init script sets up the /tmp/.X11-unix directory). + * Re-enable the dmx DDX, and build the xdmx and xdmx-tools packages (the + build is now fixed upstream); closes: #449254. + + [ Drew Parsons ] + * Patch 95_xprint_disable_dbus disables dbus in Xprint by providing + dummy config functions. Taken from upstream commit + 2a3d1421e0cc18822ae8f478fcc272e16a9e9340, with removal of + CONFIG_LIB from configure.ac shifted to 94_xprint_XSERVER_LIBS. + Closes: #472180. + * Enable the xprint DDX, and build the xprint and xprint-common packages. + + -- Julien Cristau Sun, 18 May 2008 13:36:11 +0200 + +xorg-server (2:1.4.1~git20080507-1) unstable; urgency=low + + * Pull from upstream server-1.4-branch, highlights: + - the server should now scale input events correctly + - xkb keymap failures now give an explanation instead of just a 'failed to + load' message + * Drop patch 51_xkb-and-loathing.diff, applied upstream + * Refresh patches 13_debian_add_xkbpath_env_variable.diff, + 21_glx_align_fixes.patch, 46_reduce_wakeups_from_smart_scheduler.patch and + 94_xprint_XSERVER_LIBS. + * chmod +x configure in debian/rules clean so we can build a git snapshot + where configure is not in the tarball. + * Cherry-pick fix from upstream's master branch to re-arm the DPMS timer + when re-enabling DPMS (closes: #397197). + + -- Julien Cristau Thu, 08 May 2008 15:34:38 +0200 + +xorg-server (2:1.4.1~git20080131-4) unstable; urgency=low + + * fix AlwaysCore handling: enabling AlwaysCore in xorg.conf 1) is the + default, and 2) shouldn't prevent the device from sending core events + (closes: #461760). + + -- Julien Cristau Tue, 29 Apr 2008 20:14:22 +0200 + +xorg-server (2:1.4.1~git20080131-3) unstable; urgency=low + + * XKB: Fix processInputProc wrapping (cherry-picked from upstream). + Thanks to Thomas Jaeger. This should fix the bug with some keys getting + stuck (closes: #473165). + * xkb: when copying the keymap, make sure the structs default to 0/NULL + (cherry-picked from upstream). Fixes a crash and closes: #461783. + * __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture target + (cherry-picked from upstream). + * EXA: Fix off-by-one in polyline drawing (cherry-picked from upstream). + * EXA: Skip empty glyphs (cherry-picked from upstream). + * Fix overly-restrictive integer overflow check in EXA pixmap creation + (cherry-picked from upstream). Fixes BadAlloc errors returned by + XCreatePixmap for pixmaps of width 8192 or greater (closes: #471782). + + Following patches by Bart Trojanowski, stolen from the ubuntu package: + * 15_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + * 16_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + * Add 17_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (closes: #451089). + + -- Julien Cristau Wed, 02 Apr 2008 00:20:15 +0200 + +xorg-server (2:1.4.1~git20080131-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 46_reduce_wakeups_from_smart_scheduler.patch to reduce + power consumption, closes: #462700. + + [ Drew Parsons ] + * Restore Xprint, cherry-picking commits + f7f79724fdea0cc6fda0e90e56431df937d49335 and + d67e210f3458b62d7d4a6032aabfda0004d661c1 from master (xserver 1.5). + Include patch 94_xprint_XSERVER_LIBS to give new meaning of + XSERVER_LIBS as expected in configure.ac from master (see commit + a02db0d500cac20d0f0f107d27c064a175018421). Delete + 94_xprint_XSERVER_LIBS when we upgrade to xserver 1.5. + + [ Julien Cristau ] + * Re-enable patch 51_xkb-and-loathing.diff: ignore SIGALRM around calls to + Popen()/Pclose() to fix a hang when opening menus in OpenOffice.org + (once again closes: #433131) + * Refresh all patches to make patch-audit happy. + * Pull from upstream server-1.4-branch as of March 14th. + * 42_dont_break_grab_and_focus_for_window_when_redirecting.diff removed, + applied upstream. + * Don't build xprint just yet, because it needs NEW processing. + + [ David Nusinow ] + * Add 11_dont_crash_on_bad_dri_mode. See bugzilla #13860 + + -- Julien Cristau Fri, 14 Mar 2008 15:18:16 +0100 + +xorg-server (2:1.4.1~git20080131-1ubuntu12) intrepid; urgency=low + + * Fix multiple security issues: + + CVE-2008-2360 - RENDER Extension heap buffer overflow + + CVE-2008-2361 - RENDER Extension crash + + CVE-2008-2362 - RENDER Extension memory corruption + + CVE-2008-1379 - MIT-SHM arbitrary memory read + + CVE-2008-1377 - RECORD and Security extensions memory corruption + + -- Bryce Harrington Wed, 11 Jun 2008 10:54:15 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu11) intrepid; urgency=low + + * 169_xf86AutoConfig_choose_default_driver_if_no_pci.patch + - Choose the default driver for the platform instead of the generic + default (vesa) if there is no PCI info. Without this, on platforms + like PS3 where fbdev should be used rather than vesa, the system + will fail to start up. (LP: #219424) + + -- Bryce Harrington Tue, 13 May 2008 13:09:17 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu10) intrepid; urgency=low + + [Timo Aaltonen] + * 166_fix_lpl_monitors.diff: + - fix LPL monitors properly (LP: #204065) + + [Martin-Eric Racine] + * 167_xf86AutoConfig_geode_addition.diff: + - Autodetect geode video devices (LP: #219630) + + [Bryce Harrington] + * 166_fix_lpl_monitors.diff: + - Modified to apply to Ubuntu + * 168_closedir.patch: + - Fix crash on PS3 due to closing a dir that wasn't successfully opened + (LP: #217647) + + -- Bryce Harrington Tue, 13 May 2008 00:03:40 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu9) hardy; urgency=low + + * debian/patches/series, + debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn on patch included in previous commit - obviously accidentially + forgotten. + - Now that its really enabled, make it apply to 1.4.1 code base + accordingly. (LP: #182038) + + -- Alexander Sack Tue, 15 Apr 2008 18:23:51 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu8) hardy; urgency=low + + * debian/patches/165_fedora_xserver-1.5.0-xaa-option-inversion.patch: + - Turn XAA Offscreen Pixmaps off by default, and use + XaaOffscreenPixmaps "true" to turn them on. This setting was an + early pre-EXA HW optimization attempt that didn't pan out; upstream is + deprecating XAA in favor of EXA generally, and for situations where + XAA is still in use recommends NOT using this optimization hack, since + they found it often just made performance worse, and sometimes created + visualization bugs. People wishing to gain added performance should be + experimenting with EXA anyway, not this setting. (closes LP: #182038) + + -- Bryce Harrington Mon, 21 Apr 2008 12:30:53 -0700 + +xorg-server (2:1.4.1~git20080131-1ubuntu7) hardy; urgency=low + + * 159_xkb_default_to_null.diff: + When copying the keymap, make sure the structs default to 0/NULL. + (LP: #184651) + * 160_default_to_intel.diff: + Default to using intel instead of i810. (LP: #158709) + * 161_fix_big_endian_cursor.diff: + Fix RandR 1.2 driver interface conversion of two colour cursors to + ARGB. (LP: #141118) + * Fixes from the upstream 1.4-branch: + - 162_cve-2007-6429.diff: + CVE-2007-6429: Always test for size+offset wrapping. + - 163_fix_untrusted_access.diff: + Security: Fix for fdo bug #14480: untrusted access broken in 7.3. + - 164_fix_context_sharing.diff: + Fix context sharing between direct/indirect contexts + + -- Timo Aaltonen Wed, 09 Apr 2008 11:06:04 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu6) hardy; urgency=low + + * 157_fix_exa_pixmap_width.diff: + A patch from upstream to allow wider pixmaps with EXA (LP: #205599) + * 158_xkb_wrapping.diff: + A patch reviewed by upstream that prevents keys from getting stuck under + certain situations. (LP: #194214) + * 51_xkb-and-loathing.diff: + Re-enable. Ignore SIGALRM around calls to Popen()/Pclose() to fix a hang + when opening menus in OpenOffice.org. (LP: #204137) + + -- Timo Aaltonen Sun, 30 Mar 2008 19:18:32 +0300 + +xorg-server (2:1.4.1~git20080131-1ubuntu5) hardy; urgency=low + + * Add some patches from upstream 1.4-branch or proposed set: + - 109_glx_fail_if_no_texture_bound.diff + + __glXDRIbindTexImage: Fail if no texture bound to pixmap's texture + target. + - 153_exa_skip_empty_glyphs.diff + + Fix a crasher when EXA and RenderAccel is in use. + - 154_fix_rotation_for_multimon.diff + + Fix rotation for multi-monitor situation. + - 155_exa_fix_off-by-one.diff + + Fix off-by-one in polyline drawing. + - 156_resize_composite_overlay.diff + + Resize composite overlay window when the root window changes. + (LP: #199700) + + -- Timo Aaltonen Thu, 13 Mar 2008 18:21:41 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu4) hardy; urgency=low + + * Add 152_xserver_exa_force_greedy.patch to provide a mechanism for + drivers to force greedy mode on. (LP: #177492, others) + + -- Bryce Harrington Tue, 19 Feb 2008 13:38:16 -0800 + +xorg-server (2:1.4.1~git20080131-1ubuntu3) hardy; urgency=low + + [ Bryce Harrington ] + * Add 150_edid_quirk_lp154w01.patch to fix font size on LGPhilipsLCD + LP154W01-TLAE (LP: #127827) + * Add 149_add_quirks_for_physical_screen_size_issues.patch to help + address various common EDID issues (like monitors that report in + centimeters instead of millimeters, etc.) (LP: #151311) + + [ Timo Aaltonen ] + * Add 151_x86emu_handle_cpuid.patch to fix X86EMU CPUID handling. + (LP: #180742) + + -- Timo Aaltonen Tue, 19 Feb 2008 17:48:05 +0200 + +xorg-server (2:1.4.1~git20080131-1ubuntu2) hardy; urgency=low + + * Add patch 148_dix_touchscreen_fixes.diff from Matthew Garrett to fix + touchscreen issues with DIX. + http://lists.freedesktop.org/archives/xorg-commit/2008-February/014648.html + + -- Steve Kowalik Fri, 08 Feb 2008 10:30:04 +1100 + +xorg-server (2:1.4.1~git20080131-1ubuntu1) hardy; urgency=low + + [ Timo Aaltonen ] + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * 108_fedora_honor_displaysize.patch: + - Patch from upstream/Fedora to honor the DisplaySize-setting. + (LP: #135738, b.fd.o #9758) + * Drop patch 100_avoid_acpi_insanity.diff, superseded by patch 45. + + [ Bart Trojanowski, Martin-Eric Racine ] + * 146_X86EMU-added-blacklist-for-I-O-port-in-0-0xFF-range.patch + - Restrict access to I/O ports in range 0-0xFF from x86emu. + (LP: #140051) + * 147_X86EMU-pass-the-correct-bus-dev-fn-tag-to-pci-emula.patch + - Fix improper emulation of PCI access General Software BIOS. + (LP: #140051) + + -- Timo Aaltonen Tue, 05 Feb 2008 18:57:14 +0200 + +xorg-server (2:1.4.1~git20080131-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 45_only_XF86_APM_CAPABILITY_CHANGED_for_video_change_acpi_events.diff + to prevent XF86_APM_CAPABILITY_CHANGED from being issued for all ACPI + events, thanks Sjoerd Simons, closes: #461463. + + [ David Nusinow ] + * Update Japanese translation from Hideki Yamane. closes: #462761 + * New upstream pull + + Fixes crashes due to absent LED's being referenced + + -- David Nusinow Thu, 31 Jan 2008 21:43:12 -0500 + +xorg-server (2:1.4.1~git20080118-1ubuntu2) hardy; urgency=low + + * Remove the DPI patch for real this time, conflicts with the upstream + commit that was pulled. + * 105_reduce_wakeups_from_smart_scheduler.diff: + Patch from upstream to reduce wakeups and improve battery life. + + -- Timo Aaltonen Sat, 19 Jan 2008 20:26:41 +0200 + +xorg-server (2:1.4.1~git20080118-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 103_fedora_openchrome.patch: + Patch from Fedora to use openchrome instead of via. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 19 Jan 2008 02:40:00 +0200 + +xorg-server (2:1.4.1~git20080118-1) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_dont_break_grab_and_focus_for_window_when_redirecting.diff + to prevent password authentication bypass, closes: #449108. + + [ Julien Cristau ] + * New upstream snapshot + + includes the security fixes from the previous version + + fixes regression introduced by the fix for CVE-2007-6429 in the MIT-SHM + extension (closes: #461410) + + -- Brice Goglin Fri, 18 Jan 2008 22:20:32 +0100 + +xorg-server (2:1.4.1~git20080105-2) unstable; urgency=low + + [ David Nusinow ] + * Improve dpms logging patch to correctly label message type + + [ Brice Goglin ] + * Grab upstream commit db9ae863536fff80b5463d99e71dc47ae587980d + to set DEFAULT_DPI to 96 instead of 75. + + [ Julien Cristau ] + * Fix multiple security issues + + CVE-2007-6427: XInput Extension Memory Corruption + + CVE-2007-6428: TOG-CUP Extension Memory Corruption + + CVE-2007-6429: EVI Extension Integer Overflow, + MIT-SHM Extension Integer Overflow + + CVE-2007-5760: XFree86-Misc Extension Invalid Array Index + + CVE-2007-5958: file existence disclosure + + CVE-2008-0006: PCF font parser buffer overflow + * Bump Standards-Version to 3.7.3 (no changes). + + -- Julien Cristau Thu, 17 Jan 2008 15:10:03 +0100 + +xorg-server (2:1.4.1~git20080105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 101_fedora-apm-typedefs.patch: + Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * debian/patches/103_fedora_openchrome.patch: + - Patch from Fedora to use openchrome instead of via. + + -- Timo Aaltonen Tue, 08 Jan 2008 18:05:21 +0200 + +xorg-server (2:1.4.1~git20080105-1) unstable; urgency=low + + * Don't reference non-existent bug-reporting.txt file in xvfb-run.1 + * New upstream git pull, again from the server-1.4-branch + + Drop 08_xkb_infinite_loop.diff, it's upstream now + * Improve logging when DPMS is enabled implicitly + + Adds 08_better_dpms_logging.diff + + -- David Nusinow Sun, 06 Jan 2008 16:56:38 -0500 + +xorg-server (2:1.4.1~git20071212-1ubuntu2) hardy; urgency=low + + * debian/patches/101_fedora-apm-typedefs.patch: + - Temporary hack from Fedora for broken kernels that don't publish the + /dev/apm_bios types. + + -- Timo Aaltonen Mon, 17 Dec 2007 11:54:46 +0200 + +xorg-server (2:1.4.1~git20071212-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 120_fedora_xserver-xaa-evict-pixmaps.patch: + New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 96. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Thu, 13 Dec 2007 13:43:35 +0200 + +xorg-server (2:1.4.1~git20071212-2) unstable; urgency=low + + * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over + an infinite loop in event processing (closes: #451989). + + -- Julien Cristau Sat, 22 Dec 2007 00:02:01 +0100 + +xorg-server (2:1.4.1~git20071212-1) unstable; urgency=low + + [ Julien Cristau ] + * debian/rules: Use lsb_release -i -s to get the vendor name, instead of + hardcoding "Debian". + * debian/control: build-dep on lsb-release. + * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor. + * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an + infinite loop when PreferredMode is used in xorg.conf. + + [ David Nusinow ] + * New upstream version. This is based on the server-1.4-branch, and includes + all the changes in the 1.4.0.90 (pre-)release as well as additional fixes. + This is primarily a bugfix release + + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream + + -- David Nusinow Wed, 12 Dec 2007 20:19:11 -0500 + +xorg-server (2:1.4.1~git20071119-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just + disable it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + * Bring back old changelog entries. + * debian/patches/120_fedora_xserver-xaa-evict-pixmaps.patch: + - New version of the hack to copy textures from video memory. Shouldn't + break EXA anymore. + + -- Timo Aaltonen Tue, 20 Nov 2007 15:35:59 +0200 + +xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low + + * Ship a .orig.tar.gz that's been autoreconf'ed. Closes: #451891 + * Re-enable validation of the screen section of xorg.conf + Modify 14_default_screen_section.diff. This also fixes a problem where the + server can't find the device section when it is specified in the screen + section. Closes: #451950 + + -- David Nusinow Mon, 19 Nov 2007 20:38:04 -0500 + +xorg-server (2:1.4.1~git20071117-1) unstable; urgency=low + + [ Julien Cristau ] + * Add conflict on xserver-xorg-input-wacom (<< 0.7.8) to xserver-xorg-core. + That driver is built against the old ABI, but doesn't provide + xserver-xorg-input. + + [ David Nusinow ] + * Add 14_default_screen_section.diff. This allows you to not have a screen + section in your xorg.conf. A basic default one with a simple identifier + will be created for you in this case using all default values + + [ Christian Perrier ] + * Debconf translations: + * Galician. Closes: #444764 + * German. Closes: #444917 + * Brazilian Portuguese. Closes: #445266 + * Russian. Closes: #443859 + * Portuguese. Closes: #445051 + * Slovak. Closes: #446418, #448220 + + [ Brice Goglin ] + * Bump x11proto-core-dev build-dependency to >= 7.0.9, + thanks Max Kellermann, closes: #446869. + + [ David Nusinow ] + * New upstream stable snapshot + + fixes a bunch of input-related bugs, notably keyboard leds + (closes: #440743 and its pile of duplicates) + * Remove patches merged in this snapshot + + 08_exa_fix_exaFillRegionTiled_fallback.diff + + 11_exa_no_negative_tile_offsets.diff + + 42_fix_RemoveGeneralSocket_crash_from_dbus.diff + + 44_XKB_mapping_changes_for_all_core-sending_devices.diff + + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff + * Make xephyr recommend xfonts-base. Closes: #451542 + + -- David Nusinow Sat, 17 Nov 2007 18:54:02 -0500 + +xorg-server (2:1.4.1~git20071105-1ubuntu2) hardy; urgency=low + + * Brown paper bag release: include all the patches. + + -- Timo Aaltonen Sat, 10 Nov 2007 15:24:28 +0200 + +xorg-server (2:1.4.1~git20071105-1ubuntu1) hardy; urgency=low + + * Merge with Debian unstable, remaining changes: + * debian/control: + - Change maintainer address. + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different compared to Dapper. + - xvfb Depends on xauth, xfonts-base. + * debian/rules: + - --with-os-vendor=Ubuntu + * debian/patches: + - 100_avoid_acpi_insanity.diff + Don't send a configuration change event just because somebody's pressed + a brightness key. + - 102_ubuntu_sharevts_load_cpu.patch: + Close console fd only when using --sharevts. + - 104_fedora_init_origins_fix.patch + Multihead initialization. + - 106_ubuntu_fpic_libxf86config.patch + Add -fPIC to makefiles for xfree86/parser. + - 107_fedora_dont_backfill_bg_none.patch + Disable backfilling of windows created with bg=none, which + otherwise would force a framebuffer readback. + - 110_fedora_no_move_damage.patch + Disable damage notifications on move for manually redirected windows. + - 121_only_switch_vt_when_active.diff + Add a check to prevent the X server from changing the VT when + killing GDM from the console. + - 123_no_composite_for_xvfb_run.patch + Use "-extension Composite" to fix xvfb-run crashing. + - 133_psb_auto.patch + Add automatic detection of Poulsbo hardware when running + without a Device definition. + - 138_fedora_xserver-1.3.0-default-dpi.patch + Changes default dpi to 100. + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch + Fixes document fontpaths shown in the man page. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch + Composite on 8bpp pseudocolor root windows appears to fail, so just disable + it on anything pseudocolor for safety. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: + Only collect xnest exposures for xexposes with non-zero height and width. + + -- Timo Aaltonen Sat, 10 Nov 2007 13:07:55 +0200 + +xorg-server (2:1.4-3) unstable; urgency=low + + [ David Nusinow ] + * Minor cleanups of 03_autoload_drivers.diff. Thanks to Julien for + spotting all these ugly bits + + Newline after #else when picking the driver (this is the failsafe + choice) + + Change by hacked "ids" file name suffix check to use strncmp and check + for ".ids" + + Use strncpy instead of strncat unnecessarily + * Add support for a partially configured device section + Implemented in 03_autoload_driver.diff. Now if you have a device section + but lack a driver, it'll use the settings. This will allow you to just + have a device section and enable EXA but not have to specify the driver or + anything else. + * Add 07_autoconfig_screen_with_device_section.diff + This patch allows the Screen section to not specify a device section. If + this happens, the server will automatically use the first device section + listed in the xorg.conf instead + + [ Brice Goglin ] + * Allow building the Xfbdev server in new package xserver-xfbdev, but leave + it disabled for now (see #439764). + * Add upstream commit 27ad5d74c20f01516a1bff73be283f8982fcf0fe as patch + 44_XKB_mapping_changes_for_all_core-sending_devices.diff to fix broken + xmodmap invocation in .xsession, closes: #443044. + * Add upstream commit 0e800ca4651a947ccef239e6fe7bf64aab92257c as patch + 45_GetKeyboardEvents_reject_out-of-range_keycodes.diff to fix crash + in GetKeyboardValuatorEvents, closes: #443697. + + [ Christian Perrier ] + * Debconf templates and debian/control reviewed by the debian-l10n- + english team as part of the Smith review project. Closes: #442210 + * Debconf translation updates: + - Swedish. Closes: #443047 + - Czech. Closes: #443100 + - French + - Vietnamese. Closes: #443174 + - Italian. Closes: #422414 + * New debconf translations + - Hungarian. Closes: #442956 + - Thai. Closes: #442962 + - Tamil. Closes: #443027 + - Basque. Closes: #443156 + - Hebrew. Closes: #443204 + - Bulgarian. Closes: #443226 + - Finnish. Closes: #443611 + + [ Julien Cristau ] + * Add patch backported from upstream commit + 13949f997289068354e83bc83e50d97b8232efb1 to remove the type1 module: patch + 05_kill_type1.diff replaces 48_disable_type1.diff, and is now enabled in + debian/patches/series. + * Don't build kdrive-based servers we're not shipping. + * Use ${binary:Version} instead of ${Source-Version}. + * Add 08_exa_fix_exaFillRegionTiled_fallback.diff by Michel Dänzer to punt + on fallback case not handled correctly in exaFillRegionTiled (backported + from master's c7d6d1f5); closes: #444203. + * Add 11_exa_no_negative_tile_offsets.diff by Michel Dänzer to make sure + tile offsets passed to drivers are never negative (backported from + master's 006f6525). + * Add 12_bgPixel_fix_64bit_issue.diff by Hong Liu: bgPixel (unsigned long) + is 64-bit on x86_64, so -1 != 0xffffffff (master's 9adea807). + + -- Julien Cristau Sat, 29 Sep 2007 16:14:35 +0200 + +xorg-server (2:1.4-2) unstable; urgency=low + + [ Brice Goglin ] + * Add 42_fix_RemoveGeneralSocket_crash_from_dbus.diff to fix a crash + when leaving, closes: #440547. + * Add 43_allow_override_BIOS_EDID_preferred_mode.diff to allow overriding + BIOD/EDID preferred mode with Option PreferredMode in the config file. + + [ David Nusinow ] + * Upload to unstable + + -- David Nusinow Sun, 16 Sep 2007 14:24:18 -0400 + +xorg-server (2:1.4-1) experimental; urgency=low + + * New upstream release (X.Org 7.3) + + RandR doesn't mark Xinerama as active when no crtcs are enabled + (closes: #431746) + * Add proper depends to xserver-xorg-dev: + x11proto-core-dev, x11proto-input-dev (>= 1.4), x11proto-xext-dev, + x11proto-video-dev, x11proto-randr-dev (>= 1.2), x11proto-render-dev (>= + 2:0.9.3), x11proto-fonts-dev + * Bump serverminver to 2:1.4, videoabiver to 2, inputabiver to 2. + + -- Julien Cristau Mon, 10 Sep 2007 14:35:38 +0200 + +xorg-server (2:1.3.99.2-1) experimental; urgency=low + + [ David Nusinow ] + * Refactor auto_load_driver patch to allow the same method to be used when + there is no xorg.conf present + * Add 04_auto_load_driver_no_config.diff to use my auto_load_driver method + when there's no xorg.conf present + + [ Brice Goglin ] + * Simplify output redirections in the reportbug script, + thanks Justin Pryzby, closes: #358390. + * Add missing URL in long descriptions, update links to the upstream + module, fix some capitalization, thanks Christian Perrier. + + [ Julien Cristau ] + * New upstream release candidate. + + bump build dep on renderproto to >= 0.9.3, and on pixman to >= 0.9.4-2. + + bump video abi version and serverminver. + * Drop the Conflict on fglrx-driver, which is taken care of by the abi + version. + + -- Julien Cristau Tue, 04 Sep 2007 17:32:19 +0200 + +xorg-server (2:1.3.99.0-2) experimental; urgency=low + + * Improve 03_auto_load_driver.diff + + Move memory cleanup and directory closing to after the end label to + prevent leaks. Thanks Julien. + + Allow a driver to claim everything from a specific vendor. It does so by + only specifying a vendor ID and leaving the latter four digits empty. + + -- David Nusinow Sun, 19 Aug 2007 16:06:54 -0400 + +xorg-server (2:1.3.99.0-1) experimental; urgency=low + + [ Julien Cristau, David Nusinow ] + * New upstream release candidate. + + X is now more tolerant of devices without a CtrlProc (closes: #269860). + + cvt(1) and gtf(1) typos fixed (closes: #432065). + + Make sure DRIScreenPrivIndex is -1 when no DRI screen private is + allocated. (closes: #413697). + + __glXDRIscreenProbe: Use drmOpen/CloseOnce (closes: #419614). + + segfault in swrast_Triangle fixed in mesa (closes: #407502). + + the Xvfb manpage doesn't refer to /usr/tmp anymore (closes: #270257). + + typos in Xserver(1) fixed (closes: #306688). + + * Remove patches that were pushed upstream + + 03_xnest_manpage_overhaul.diff + + 04_read_rom_in_chunks.diff + + 05_module_defaults.diff + + 07_stolen_from_HEAD_xorgconf_manpage.diff + + 08_s390_servermd.diff + + 12_security_policy_in_etc.diff + + 16_s390_fix.diff + + 18_execinfo_configured.patch + + 23_kfreebsd_support.diff + + 24_hurd_ioperm_fix.diff + + 32_disable_sparc_pci_bridge.diff + + 39_alpha_build_flags.patch + + 40_consolidate_portPriv_pDraw_assignments.diff + + 42_only_run_special_key_behaviours_on_non-XKB.diff + + 44_fedora-xephyr-keysym-madness.diff (different fix applied upstream) + + 45_CVE-2007-2437.diff + + 46_export-ramdac-symbols.diff + + 49_map_keyboard_driver_to_kbd.diff + + 50_alpha_no_include_asm_pci.h.diff + + 94_use_default_font_path.diff + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff and + 127_mesa-6.5.3-compat.diff (obsolete) + + * Update other patches: + + 09_debian_xserver_rtff.diff disabled (doesn't apply, and isn't even + used AFAICS; + + 11_define_XFree86Server.diff dropped, to be fixed in drivers instead; + + 13_debian_add_xkbpath_env_variable.diff refreshed; + + 21_glx_align_fixes.patch updated; + + 43_xephyr_crash_at_exit.diff dropped (doesn't apply); + + 47_fbdevhw_magic_numbers.diff disabled for now; + + 48_disable_type1.diff disabled for now; + + 51_xkb-and-loathing.diff disabled for now. + + [ Julien Cristau ] + * Add build-dep on x11proto-input-dev (>= 1.4.2), libpixman-1-dev + (>= 0.9.0), libdbus-1-dev, libhal-dev (except on hurd-i386 for the last + two). + * Bump build-dep on mesa-swx11-source to >> 7.0.1~rc2-1. + * Bump serverminver to this version, videoabiver to 1.9, inputabiver to + 0.9 (so this doesn't clash with a release and drivers have to be + rebuilt). + * Bump build-dep on compositeproto to >= 0.4. + * Install the upstream changelog. + * Disable the xprint and dmx DDX for now, they fail to build. + * xserver-xorg-dev needs a dependency on libpixman-1-dev. + * Add explanations about our tarball and upstream URL to debian/copyright. + + [ Drew Parsons ] + * Update Xprint build to include pixman. + + [ David Nusinow ] + * Add 03_auto_load_driver.diff. This patch allows the server to select a + driver and automatically create a Devices section when none is specified + in your xorg.conf. It chooses the driver based on a set of PCI ID's that + the driver itself provides in /usr/share/xserver-xorg/pci. If no driver + claims the PCI ID of your primary video card, then it will choose a + fallback based on your system. + + -- Julien Cristau Sat, 18 Aug 2007 18:28:49 +0200 + +xorg-server (2:1.3.0.0.dfsg-13) UNRELEASED; urgency=low + + [ Debconf templates translations ] + * Italian added. Closes: #422414 + * Slovak added. Closes: #438578 + + -- Christian Perrier Sun, 26 Aug 2007 12:09:52 +0200 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu8) gutsy; urgency=low + + * Add 145_glx_visuals_bound_check.patch to fix issue where mesa + incorrectly counts its visuals and can free too many of them during + video mode changes (VT switch, restart, hibernate, etc.) such as + when running Compiz. (closes LP: #127101) + + -- Bryce Harrington Fri, 28 Sep 2007 15:48:08 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu7) gutsy; urgency=low + + * Drop 143_fedora_xserver-1.3.0-randr12-config-hack.patch + as it causes failure to detect proper resolution on some intel + hardware. (closes LP: #144956) + + -- Bryce Harrington Tue, 25 Sep 2007 14:42:59 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu6) gutsy; urgency=low + + * Drop 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch + as it is causing black bars to appear on screen for i810 users. + (closes LP: #137604 + several dupes) + + -- Bryce Harrington Thu, 20 Sep 2007 14:35:54 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu5) gutsy; urgency=low + + [ Kees Cook ] + * debian/patches/132_composite-no-clipping.diff: Adjusted WindowRec + structure order and RedirectDraw logic to avoid nvidia crashes + (fixes LP: #130325). + * debian/patches/100_security_fdo-bug-7447.diff: Composite used for + pixmap population on redirect. [CVE-2007-4730] + + -- Bryce Harrington Tue, 18 Sep 2007 17:20:14 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu4) gutsy; urgency=low + + * debian/patches/133_psb_auto.patch: Add automatic detection of + Poulsbo hardware when running without a Device definition. + * Added some cherry-picked patches from fedora: + - 134_fedorda_xorg-x11-server-1.1.1-vt-activate-is-a-terrible-api.patch: + Fixes race condition where someone does a VT_ACTIVATE + between another ACTIVATE/WAITACTIVE by adding a fail. + (Potentially might address Ubuntu bugs 134478 and/or 134982) + - 135_fedora_xorg-x11-server-1.1.1-xkb-in-xnest.patch: Fixes issue when + starting a session in an xnest nest environment as a different user, + where keyboard map does not get preserved. Removes + NO_HW_ONLY_EXTS check to address this issue. (RedHat bug 193431; + Potentially may address Ubuntu bug 44846) + - 136_fedora_xserver-1.2.0-honor-displaysize.patch: Fixes issue if monitor + width and height have been specified, xserver would override them + with the hsize/vsize detected from DDC. + - 137_fedora_xserver-1.2.0-vfprintf.patch: Fixes typo 'vfprinf' + - 138_fedora_xserver-1.3.0-default-dpi.patch: Changes default dpi to 100. + (Addresses Ubuntu bugs 118745, 107320, many others...) + - 139_fedora_xserver-1.3.0-document-fontpath-correctly.patch: Fixes + document fontpaths shown in the man page. + - 140_fedora_xserver-1.3.0-domain-obiwan.patch: Fixes longstanding bug in + domain support. + - 141_fedora_xserver-1.3.0-edid-quirk-backports.patch: Adds quirk for + Samsung SyncMaster 225BW. + - 142_fedora_xserver-1.3.0-no-pseudocolor-composite.patch: Composite on + 8bpp pseudocolor root windows appears to fail, so just disable it + on anything pseudocolor for safety. + - 143_fedora_xserver-1.3.0-randr12-config-hack.patch: Adds check to use + the screen's xrandr modes if a preferred mode was not specified. + - 144_fedora_xserver-1.3.0-xnest-exposures.patch: Only collect xnest + exposures for xexposes with non-zero height and width. + + -- Bryce Harrington Fri, 7 Sep 2007 14:23:23 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu3) gutsy; urgency=low + + * Added some cherry-picked patches from xserver 1.3.99: + - 202_Add_quirk_for_Acer_AL1706_monitor_to_force_60hz_refresh.patch: + The Acer AL1706 monitor reports support for 75hz via EDID, but + does not sync when this range is given, so force it to 60hz. + - 205_Bug_10770-_Inputdevs_isnt_a_valid_config_file_keyword.patch: + Fixes typo in config file parser. + - 208_Bug_6620-_Fixed_a_missing_else_in_ATIPseudoDMAInit.patch: + Fixes issue where registers were written twice on R200, sometimes + also putting bad values in atis->cce_pri_size. + - 214_Bug_9680-_Remove_bogus_blank_length_limiting_in_xf86SetModeCrtc.patch: + Fixes situation where when a specific mode is requested by monitor + or user, xorg would tweak it to something incorrect. + - 216_Bug_9041-_Check_the_return_code_in_xf86MapDomainMemory.patch: + Fixes issue where mmap return value was being ignored and failing + to issue fatal error as it should. + - 221_ExaOffscreenMarkUsed-_Dont_crash_when_theres_no_offscreen_memory.patch: + Fixes crash when there is no offscreen memory for EXA. + - 222_Fix_a_crash_when_rotating_the_screen.patch: + Fixes crash when rotating screen with xrandr. + - 223_Fix_bug_8871-scrolling_corruption_with_a_compositing_manager.patch: + Fixes scrolling corruption with composite due to incorrectly + generated GraphicsExposes. + - 224_Fix_calculations_in_x86_emulator_for_the_long_long_case_Andreas_Schwab.patch: + Fixes long long multiplication when in x86 emulator. + - 227_Fix_sync_polarity_on_Samsung_SyncMaster_205BW_monitor.patch: + Adds quirk for Samsung SyncMaster 205BW + - 230_In___glXCreateARGBConfig_insert_the_new_GL_mode_at_the__end__of_the_linked_list.patch: + Fixes insertion order of linked list that can cause GLX clients to + fail when attempting to use the last GLX mode/visual. + - 231_In_dmxBackendMouGetInfo_initialize_the_info-minval_maxval_arrays_to_the_size_of_the_backend_display.patch: + Fixes potential issue in X input where axis clipping code in + GetPointerEvents() constrains the pointer's coordinate range to a + max of 0, causing the mouse to not move. + - 234_Reapply_patch_to_fix_AMD_CPU_detection.patch: + Fixes AMD Geode CPU detection. + - 236_Syncmaster_226_monitor_needs_60Hz_refresh_10545.patch: + Adds quirk for Samsung SyncMaster 226BW. + - 238_Update_pci.ids_to_2007-07-16_snapshot.patch: + Updates our pci ids to support more current hardware. + Remove nvidia ids in extrapci.ids that are now in pci.ids. + Add nvidia ids to extrapci.ids that are in xf86-video-nv but not pci.ids + - 241_XFree86-_Treat_evdev_and_vmmouse_as_mouse_drivers_bug_10512_10559.patch: + Fix issue where a default mouse device gets automatically added + when an evdev or vmmouse section has already been specified. + - 243_exaDriverInit-_Fail_if_pScreenInfo_or_a_member_of_it_is_invalid.patch: + Fix crash in EXA when pScreenInfo or a member of it is invalid. + - 244_fix_an_occasional_crash_in_GetWindowName_bug-_9798.patch: + Fixes crash by adding check of XmbTextPropertyToTextList()'s + return code. + - 245_regenerated_to_fix_bug_10371.patch: + Fixes issue where if DRI is disabled, GL_MAX_TEXTURE_COORDS_ARB + value is not returned correctly from glGetIntegerv(). + + -- Bryce Harrington Fri, 31 Aug 2007 18:36:22 -0700 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu2) gutsy; urgency=low + + * Don't send a configuration change event just because somebody's pressed + a brightness key + + -- Matthew Garrett Sun, 26 Aug 2007 16:17:15 +0100 + +xorg-server (2:1.3.0.0.dfsg-12ubuntu1) gutsy; urgency=low + + * Merge from debian unstable, remaining changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch, + 120_fedora_disable_offscreen_pixmaps.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + + 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Patches needed to build against newer Mesa. + + 132_composite-no-clipping.diff: + Change the semantics of manual-redirect Composite windows so that + they do not clip sibling or parent drawing. Needed by hildon-desktop + to prevent home applets from clipping. + - debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + + -- Timo Aaltonen Tue, 21 Aug 2007 22:01:38 +0300 + +xorg-server (2:1.3.0.0.dfsg-12) unstable; urgency=low + + [ Brice Goglin ] + * Add 51_xkb-and-loathing.diff to fix a hang in OpenOffice.org + when opening menus, closes: #433131. + * Install the exa(4) and fbdevhw(4) manpages. + + [ Julien Cristau ] + * Update the xorg.conf(5) manpage to get documentation for RandR 1.2 + options: + + 07_stolen_from_HEAD_xorgconf_manpage.diff: new patch; + + 07_xorgconf_manpage_overhaul.diff dropped; + + 34_xorg.conf_man_typos.patch dropped; + + 05_module_defaults.diff, 94_use_default_font_path.diff: dropped hunks + applying to hw/xfree86/doc/man/xorg.conf.man.pre. + * Add patch 11_define_XFree86Server.diff: XFree86Server needs to be defined + in xorg-server.h and exported to drivers. + * Add patches 125_glx_remove-stray__GLinterface.diff + 126_glxproxy_remove-stray__GLinterface.diff and 127_mesa-6.5.3-compat.diff + to build with mesa >= 6.5.3, and bump build-dependency on + mesa-swx11-source. + * Include the Debian package version in OSVENDOR to make it appear in the + X log. + + -- Julien Cristau Thu, 09 Aug 2007 16:32:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-11) unstable; urgency=low + + * Yet another alpha build fix: also remove the asm/pci.h include from + os-support/linux/lnx_axp.c. Include "lnx.h" and instead. + + -- Julien Cristau Sat, 14 Jul 2007 20:09:35 +0200 + +xorg-server (2:1.3.0.0.dfsg-10) unstable; urgency=medium + + * hw/xfree86/common/compiler.h and declare incompatible + prototypes for outb and friends, so change the patch from -9 to not + #include and rely on declarations in lnx.h itself for the + IOBASE_* macros. + + -- Julien Cristau Sat, 14 Jul 2007 18:06:14 +0200 + +xorg-server (2:1.3.0.0.dfsg-9) unstable; urgency=medium + + * Include instead of in + hw/xfree86/os-support/linux/lnx.h, as the latter isn't exported to + userspace anymore; fixes FTBFS on alpha. Thanks, Steve Langasek! + + -- Julien Cristau Sat, 14 Jul 2007 12:17:10 +0200 + +xorg-server (2:1.3.0.0.dfsg-8) unstable; urgency=medium + + * Medium-urgency upload to get the fix for #428794 in testing faster, + hopefully. + + [ Brice Goglin ] + * Add 47_fbdevhw_magic_numbers.diff: patch by Adam Jackson to keep the + fbdev2xfree_timing() function from changing the pixel clock value if the + fbdev driver claims that it is 0. + + [ Julien Cristau ] + * Don't build the type1 font module. + * Add patch by Alan Coopersmith to map (case-insensitively) the old + "keyboard" input driver to "kbd" (addresses: #428794). I'm not + reassigning the bug to xserver-xorg-core for now so as not to break + testing by letting xserver-xorg-input-keyboard transition before the fixed + xorg-server. + + -- Julien Cristau Sat, 14 Jul 2007 01:48:20 +0200 + +xorg-server (2:1.3.0.0.dfsg-7) unstable; urgency=low + + [ Brice Goglin ] + * Add 40_consolidate_portPriv_pDraw_assignments.diff to avoid a crash + in xf86XVReputVideo (closes: #424899, #431655). + * Add 41_vbe_filter_less.diff to not reject VESA modes early since + xf86ValidateModes should handle them just fine (closes: #424684). + * Add 42_only_run_special_key_behaviours_on_non-XKB.diff to fix special + keys in Xephyr (closes: #415025). + * Add 43_xephyr_crash_at_exit.diff to avoid crashing Xephyr when first + client disconnect (closes: #420421). + + -- Julien Cristau Wed, 04 Jul 2007 23:42:40 +0200 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu3) gutsy; urgency=low + + * debian/patches/series: + - Re-enable 132_composite-no-clipping.diff with fix from upstream + + -- Bryce Harrington Wed, 25 Jul 2007 16:39:29 -0700 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu2) gutsy; urgency=low + + * debian/patches/series: + - don't apply 132_composite-no-clipping.diff for now, it doesn't work + correctly when using compiz + + -- Sebastien Bacher Fri, 13 Jul 2007 17:03:42 +0100 + +xorg-server (2:1.3.0.0.dfsg-6ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + - 125_glx_remove-stray__GLinterface.diff, + 126_glxproxy_remove-stray__GLinterface.diff, + 127_mesa-6.5.3-compat.diff: + Mesa 6.5.3 build support + * debian/apport.py: Add apport hook for automatically attaching + files useful for debugging X crashes: Xorg.0.log, xorg.conf, + lsmod, lspci, and /proc/version + * debian/patches/132_composite-no-clipping.diff: Change the + semantics of manual-redirect Composite windows so that they do not + clip sibling or parent drawing. Needed by hildon-desktop to prevent + home applets from clipping. + + -- Bryce Harrington Mon, 2 Jul 2007 12:47:44 -0700 + +xorg-server (2:1.3.0.0.dfsg-6) unstable; urgency=low + + * Change fglrx conflict to << 8.37.6 (closes: #424975). + + -- Julien Cristau Fri, 01 Jun 2007 14:58:39 +0200 + +xorg-server (2:1.3.0.0.dfsg-5) unstable; urgency=low + + [ Brice Goglin ] + * Add 24_hurd_ioperm_fix.diff to fix xf86Enable/DisableIO on Hurd with + recent GNU Mach. Thanks Samuel Thibault! + * Add 06_use_proc_instead_of_sysfs_for_pci_domains.diff since sysfs-based + PCI management code is broken at least on sparc and powerpc. + Closes: #422077, #422095. Thanks to Jim Watson for testing! + * Install the Xephyr README, closes: #395888. + * Update 07_xorgconf_manpage_overhaul.diff to drop the reference to the + xorg.conf example which we do not install since Xserver 1.3 does automatic + configuration, the manpage is very well documented, and we generate a + config file during installation. Closes: #222932. + * Fix warning in /etc/init.d/xprint when /usr/lib/X11/fonts does not exist. + Closes: #422352. Thanks Cristian Ionescu-Idbohrn! + * Pull upstream commit 9c80eda826448822328bb678a7d284cc43fffb17 to disable + RandR's fake xinerama geometry when there's more than one protocol screen + (closes: #420679). + + [ Julien Cristau ] + * Add patch to make sure that the ramdac symbols are present in the server + and drivers can use them (closes: #423129). + * xserver-xorg-core Conflicts with fglrx-driver, which broke with 1.3. + We'll need to make this versioned (or drop it) when fglrx is fixed. + + -- Julien Cristau Wed, 16 May 2007 15:17:55 +0200 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu2) gutsy; urgency=low + + * Build-Depend on mesa 6.5.3 + * Apply Mandriva patches to build against mesa 6.5.3 + - 125_glx_remove-stray__GLinterface.diff + - 126_glxproxy_remove-stray__GLinterface.diff + - 127_mesa-6.5.3-compat.diff + + -- Kyle McMartin Sat, 26 May 2007 18:12:35 +0000 + +xorg-server (2:1.3.0.0.dfsg-4ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable. Remaining Ubuntu changes: + - debian/control: + + set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + + do not Conflict with xserver-xorg-video + + xvfb Depends on xauth, xfonts-base + + Set Maintainer to Ubuntu Core Developers + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/xserver-xorg-core.install: + + Add ioport, pcitweak, scanpci scripts & man pages + - debian/patches: + + 102_ubuntu_sharevts_load_cpu.patch: + close console fd only when ShareVTs + + 104_fedora_init_origins_fix.patch: + multihead initialization + + 106_ubuntu_fpic_libxf86config.patch: + Add -fPIC to makefiles for xfree86/parser + + 107_fedora_dont_backfill_bg_none.patch: + Re-enable to see if it helps with performance regressions. + + 108_fedora_gl_include_inferiors.patch, + 110_fedora_no_move_damage.patch, + 114_fedora_no_composite_in_xnest.patch: + further aiglx support + + 119_ubuntu_enable_composite.diff: + enable composite + + 120_fedora_disable_offscreen_pixmaps.patch: + update to the latest version from Fedora (rev. 1.6, was 1.1) + Despite being a hack, it works and is needed for compositing + managers to work properly. + + 121_only_switch_vt_when_active.diff: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + 123_no_composite_for_xvfb_run.patch: + use "-extension Composite" to fix xvfb-run crashing + * Drop 124_fix-pdripriv_null_deref.patch. Already fixed in GLX code. + See upstream FDO bug #8537 + + -- Bryce Harrington Mon, 14 May 2007 16:40:03 -0700 + +xorg-server (2:1.3.0.0.dfsg-4) unstable; urgency=low + + * Cherry-pick patch from upstream git to fix security issue in the Xrender + extension: malicious clients can cause a division by zero in the server + (closes: #422936). Reference: CVE-2007-2437. Thanks, Micah Anderson! + + -- Julien Cristau Wed, 09 May 2007 02:11:08 +0200 + +xorg-server (2:1.3.0.0.dfsg-3) unstable; urgency=low + + * Include 94_use_default_font_path.diff. This patch is like Eugene's patch + to always look in the default font path from the past, but now we provide + an option to disable looking in the default font path at runtime. This + will allow people to specify additional font paths in their xorg.conf + without losing their current paths. This will also help avoid people + having ye olde "fixed font" problem. + * Fix compilation warnings for 05_module_defaults.diff. Previously the patch + used a generic pointer for the options record, but now we use the actual + XF86OptionsPtr type. + + -- David Nusinow Thu, 26 Apr 2007 22:39:52 -0400 + +xorg-server (2:1.3.0.0.dfsg-2) unstable; urgency=low + + * Add Brice Goglin's fix for 05_module_defaults.diff, so that it also works + when there is no module section at all. Thanks to Michel Dänzer for + helping also. + + -- David Nusinow Sat, 21 Apr 2007 09:34:12 -0400 + +xorg-server (2:1.3.0.0.dfsg-1) unstable; urgency=low + + * Upload to unstable. + * Add XS-Vcs-* to debian/control. + * Remove non-free file hw/xfree86/doc/README.DRI from the upstream tarball. + * Bump serverminver to 2:1.3.0.0. + + -- Julien Cristau Fri, 20 Apr 2007 07:54:14 +0200 + +xorg-server (2:1.3.0.0-1) experimental; urgency=low + + * New upstream release + + -- David Nusinow Thu, 19 Apr 2007 22:27:05 -0400 + +xorg-server (2:1.2.99.905-3) experimental; urgency=low + + [ Julien Cristau ] + * xvfb now Recommends: xfonts-base (closes: #314598). + + [ David Nusinow ] + * Add 05_module_defaults.diff. This provides default modules loading + capabilities for the server that may be overrided easily. Previously the + server would load a set of default modules, but only if none were + specified in the xorg.conf, or if you didn't have a xorg.conf at all. This + patch provides a default set and you can add only the "Load" instructions + to xorg.conf that you want without losing the defaults. Similarly, if you + don't want to load a module that's loaded by default, you can add + "Disable modulename" to your xorg.conf (see man xorg.conf in this release + for details). See upstream bug #10541 for more. + + -- David Nusinow Sun, 15 Apr 2007 11:17:45 -0400 + +xorg-server (2:1.2.99.905-2) experimental; urgency=low + + * Install the cvt and gtf utilities and their manpages (closes: #414792). + * Build the xserver-xorg-core-dbg package, which contains debugging symbols + for Xorg and /usr/lib/xorg/modules/**/*.so + + -- Julien Cristau Mon, 09 Apr 2007 20:38:22 +0200 + +xorg-server (2:1.2.99.905-1) experimental; urgency=low + + * New upstream release candidate. + + includes fix for CVE-2007-1003: XC-MISC Extension ProcXCMiscGetXIDList() + Memory Corruption. + + -- Julien Cristau Fri, 06 Apr 2007 12:05:40 +0200 + +xorg-server (2:1.2.99.903-1) experimental; urgency=low + + [ Drew Parsons ] + * Add exclude entries to dh_install in debian/rules. + + [ Julien Cristau ] + * Prepare packaging to ship debugging symbols for xserver-xorg-core in + xserver-xorg-core-dbg, but leave it commented out so we can get rc3 in the + archive first. + * New upstream release candidate. + + bump serverminver to 2:1.2.99.903. + + -- Julien Cristau Tue, 27 Mar 2007 07:33:29 +0200 + +xorg-server (2:1.2.99.902-1) experimental; urgency=low + + [ Drew Parsons ] + * Bring xprint back into the xorg fold. + - include existing patches: + - 91_ttf2pt1 allows Xprint to use ttf2pt1 for Type1 font handling + (but extract and apply manually the patch to + hw/xprint/ps/Makefile.am so it may be applied by autoconf) + - 91_ttf2pt1_updates brings ttf2pt1 into the modern X11R7.1 world + - 92_xprint-security-holes-fix.patch places PS/PDF file output + into the user's home directory (~/Xprintjobs), more secure than + a shared /tmp/Xprintjobs + - 93_spooltodir_check_file_exists ensures output filenames are + less than 256 characters in length + - 93_xprint_fonts_fix released references to font names after use. + - enable freetype support for Xprint. + - add descriptions to debian/control and Build-Dependency on + x11proto-print-dev + * Run autoreconf to update changes to hw/xprint/ps/Makefile.am. + + [ Brice Goglin ] + * Apply patch from adrian@smop.co.uk to our xvfb-run wrapper + to check whether Xvfb started ok and fix its cleanup + (closes: #351042). + + [ Julien Cristau ] + * New upstream release candidate. + * Bump serverminver to 2:1.2.99.902. + * Drop patch 42_build_int10_submodules.diff, and use x86emu on all + architectures instead (closes: #410879). + * Refresh patches: + + 12_security_policy_in_etc.diff + + 21_glx_align_fixes.patch + + 23_kfreebsd_support.diff + * Delete a few files generated by configure on clean, since they seem to + have been included in the tarball. + + -- Julien Cristau Thu, 15 Mar 2007 04:28:00 +0100 + +xorg-server (2:1.2.99.901-1) experimental; urgency=low + + * New upstream release candidate. + + Remove patches 24 (hurd support), 35 (randr byteswap) and 43 (set damage + version), applied upstream. + + Bump build-dep on x11proto-randr-dev to >= 1.2, and on + x11proto-damage-dev to >= 1.1. + + -- Julien Cristau Wed, 7 Mar 2007 19:58:53 +0100 + +xorg-server (2:1.2.0-6) experimental; urgency=low + + * Set videoabiver to 1.0, same as in xorg-server 1.1. + + -- Julien Cristau Fri, 2 Mar 2007 16:38:12 +0100 + +xorg-server (2:1.2.0-5) experimental; urgency=low + + * Add input ABI versioning metadata. Rename serverabiver file to + videoabiver, and add inputabiver. Bump serverminver to 2:1.2.0-5 to deal + with this change. + + -- David Nusinow Thu, 1 Mar 2007 22:09:45 -0500 + +xorg-server (2:1.2.0-4) experimental; urgency=low + + [ Julien Cristau ] + * Don't strip modules when DEB_BUILD_OPTIONS contains nostrip. Thanks, + Cyril Brulebois! + + [ David Nusinow ] + * Move serverabiver file to serverminver. Use serverabiver to store the + actual video ABI version number (1.1 right now). This will allow drivers + to automatically generate their Provides: xserver-xorg-video-* line when + built against a particular server version. The rename of the files + is to better denote what they actually are. + * Bump the serverminver to 2:1.2.0-4 because of this change + + -- David Nusinow Wed, 21 Feb 2007 21:53:51 -0500 + +xorg-server (2:1.2.0-3ubuntu8) feisty; urgency=low + + * SECURITY UPDATE: arbitrary code execution with root privs via integer + overflows in MISC-XC. + * Add debian/patches/131_misc_xc_overflows.patch: upstream fixes. + * References + CVE-2007-1003 + + -- Kees Cook Thu, 29 Mar 2007 17:46:44 -0700 + +xorg-server (2:1.2.0-3ubuntu7) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.patch + - update to the latest version from Fedora (rev. 1.6, was 1.1) + + -- Timo Aaltonen Fri, 30 Mar 2007 10:39:01 +0300 + +xorg-server (2:1.2.0-3ubuntu6) feisty; urgency=low + + * debian/{rules,xsfbs/xsfbs.mk,serverminver,inputabiver} + - Import changes from current debian package, needed for the new intel + driver. + - Rename serverabiver to videoabiver, value 1.0. + - Set serverminver as this version. + * debian/patches: + 129_remove_extra_i2c_bittimeout.patch + 130_slow_down_ddc_i2c.patch + - Patches from server-1.3 branch, which make probing the monitor more + robust. + + -- Timo Aaltonen Thu, 29 Mar 2007 00:56:17 +0300 + +xorg-server (2:1.2.0-3ubuntu5) feisty; urgency=low + + * debian/patches/120_fedora_disable_offscreen_pixmaps.diff + - Re-enable. Despite being a hack, it works and is needed for compositing + managers to work properly. (LP: #89189) + + -- Timo Aaltonen Tue, 27 Mar 2007 02:33:31 +0300 + +xorg-server (2:1.2.0-3ubuntu4) feisty; urgency=low + + * debian/patches/107_fedora_dont_backfill_bg_none.patch: + - Re-enable to see if it helps with performance regressions. + * debian/patches/127_check_for_clientgone.patch: + - A fix from upstream. (LP: #60288) + * debian/patches/128_fix_client_privates_leak.patch + - Plug a memory leak. (LP: #92882) + * debian/rules + - Fix a typo in --with-default-font-path. + + -- Timo Aaltonen Sat, 17 Mar 2007 00:38:09 +0200 + +xorg-server (2:1.2.0-3ubuntu3) feisty; urgency=low + + * debian/patches: + - Rename 019_ubuntu_enable_composite.diff to 119_* so that it is in line + with the rest of our patches + - Re-add 126_debian_always_use_default_font_path.diff. This was dropped + by Debian but needed by us since we still have legacy fontpaths in + old configurations, so new paths need to be appended to the list. + + -- Timo Aaltonen Wed, 28 Feb 2007 11:54:18 +0200 + +xorg-server (2:1.2.0-3ubuntu2) feisty; urgency=low + + * debian/control: + - xvfb Depends on xauth, xfonts-base + + -- Sebastien Bacher Tue, 27 Feb 2007 23:31:06 +0100 + +xorg-server (2:1.2.0-3ubuntu1) feisty; urgency=low + + * Don't drop 42_build_int10_submodules.diff, it's useful + * 019_ubuntu_enable_composite.diff: + - enable composite + * debian/control: + - fixed Maintainer email + * debian/xserver-xorg-core.install: + - list ioport, gtf, pcitweak and scanpci + and manpages for scanpci, gtf, pcitweak + + [ Timo Aaltonen ] + * Merge with Debian, remaining changes: + - debian/rules: + + build using -fno-stack-protector + + --with-os-vendor=Ubuntu + - debian/control: + + don't Conflict with xserver-xorg-video + - refreshed and renamed patches + 102_ubuntu_sharevts_load_cpu.patch + 104_fedora_init_origins_fix.patch + 106_ubuntu_fpic_libxf86config.patch + 114_fedora_no_composite_in_xnest.patch + 121_only_switch_vt_when_active.diff + 124_fix-pdripriv_null_deref.patch + - dropped for now: + 42_build_int10_submodules.diff - causes "some regression" + * dropped patches (comments from Michel Daenzer): + - 107_fedora_dont_backfill_bg_none.patch + "Breaks X semantics and thus can't go in upstream. Apps/toolkits + need to be fixed not to use background none windows." + - 108_fedora_gl_include_inferiors.patch + "Breaks GLX semantics and should no longer be necessary now that + the GLX compositing managers default to using the Composite + Overlay Window." + - 120_fedora_disable_offscreen_pixmaps.diff + "Last time I looked at this, it was a gross hack to work around XAA + deficiencies in offscreen pixmap handling, which makes the server + die immediately when trying to use GLX_EXT_texture_from_pixmap + with EXA, due to calling XAA functions without checking it's + active or even loaded." + * debian/control: + - set Conflicts: xkb-data (<< 0.9), since xkb-path is + different from previous releases + * debian/patches/125_randr-version-supported.diff: + - The server supports protocol 1.1, make sure we use it. + + -- Sebastien Bacher Mon, 26 Feb 2007 09:36:38 +0100 + +xorg-server (2:1.2.0-3) experimental; urgency=low + + [ Julien Cristau ] + * Pass --with-os-name and --with-os-vendor to configure. + * Bump serverabiver to 2:1.2.0-1. + * Add patch from upstream git to set the supported damage version from the + server, instead of from the damage headers. xserver 1.2.0 supports damage + 1.0, not 1.1. + + -- Julien Cristau Sat, 17 Feb 2007 12:03:03 +0100 + +xorg-server (2:1.2.0-2) experimental; urgency=low + + * Delete useless debian/substvars. + * Change my email address in debian/control. + * Fix patch 42_build_int10_submodules.diff. The definition of + xf86InitInt10() was moved to int10/helper_exec.c between 1.1.1 and 1.2.0, + so we move it to int10/helper_mem.c, which we build in the main int10 + module, not the vm86 and x86emu submodules. Thanks to Cédric Augonnet and + Brice Goglin for the report and testing. + + -- Julien Cristau Sat, 10 Feb 2007 20:57:57 +0100 + +xorg-server (2:1.2.0-1) experimental; urgency=low + + * New upstream release. + + 40_xorg-xserver-1.1.0-dbe-render.diff dropped. + + 38_GetDrawableAttributes.patch dropped. + + 37_build-mesa-mipmap.patch dropped. + + 33_Xserver_man_typos.patch dropped. + + 24_hurd_support.diff massively reduced. + + 13_debian_add_xkbpath_env_variable.diff refreshed. + + 07_xorgconf_manpage_overhaul.diff updated. + + 42_build_int10_submodules.diff updated. + * Bump build-dep on mesa-swx11-source to >= 6.5.2. + * Version build-dependencies on x11proto-composite-dev and x11proto-kb-dev + to match configure.ac. + * Add build-dep on libxfixes-dev (needed for Xdmx). + + -- Julien Cristau Fri, 9 Feb 2007 20:54:27 +0100 + +xorg-server (2:1.1.99.903-1) experimental; urgency=low + + * New upstream release candidate. + * Forward-port patches: + * 07_xorgconf_manpage_overhaul.diff: refresh + * 12_security_policy_in_etc.diff: refresh + * 21_glx_align_fixes.patch: refresh + * 23_kfreebsd_support.diff: refresh + * 24_hurd_support.diff: refresh + * 34_xorg.conf_man_typos.patch: refresh + * 36_fix_ffs.patch: remove, applied upstream + * Bump build-dependency on libdrm-dev to (>= 2.3.0) because that is the X + server's minimum requirement. + + -- Thierry Reding Sat, 2 Dec 2006 12:44:59 +0100 + +xorg-server (2:1.1.99.902-1) experimental; urgency=low + + * Update to latest upstream release candidate. + * Forward-port patches: + * 02_libvgahw_gcc4_volatile_fix.diff: update + * 04_read_rom_in_chunks.diff: update + * 05_arm_cache_flush.diff: remove, applied upstream + * 06_arm_is_not_x86_and_has_no_vga.diff: remove, applied upstream + * 07_xorgconf_manpage_overhaul.diff: update + * 08_s390_servermd.diff: update + * 09_debian_xserver_rtff.diff: update + * 12_security_policy_in_etc.diff: update + * 13_debian_add_xkbpath_env_variable.diff: update + * 15_symlink_mesa.diff: remove, fixed upstream + * 16_s390_fix.diff: update + * 17_ignoreabi.diff: remove, applied upstream + * 18_execinfo_only_for_backtrace.patch: remove, applied upstream + * 18_execinfo_configured.patch: remove, applied upstream + * 19_configurable_misc_utils.patch: remove, applied upstream + * 20_mesa_6.5.1.diff: remove, applied upstream + * 21_glx_align_fixes.patch: update + * 22_xkb_cycle_3layouts.diff: remove, applied upstream + * 23_kfreebsd_support.diff: update, partially applied upstream + * 24_hurd_support.diff: update, partially applied upstream + * 25_tfp_damage.diff: remove, applied upstream + * 26_aiglx_happy_vt_switch.diff: remove, applied upstream + * 27_aiglx_locking.diff: remove, applied upstream + * 28_mesa_copy_sub_buffer.diff: remove, applied upstream + * 29_mesa_reseed_makefile.diff: remove, fixed upstream + * 30_fix_vmode_switch.diff: remove, fixed upstream + * 31_blocksigio.diff: remove, fixed upstream + * 32_disable_sparc_pci_bridge.diff: update + * 34_xorg.conf_man_typos.patch: update + * 35_randr_byteswap.patch: update + * 36_fix_ffs.patch: update + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + remove, applied upstream + * Upstream no longer ships a changelog, so don't try to install it. + * Add 37_build-mesa-mipmap.patch that adds the missing mipmap.c to libmain's + sources. + * Add 38_GetDrawableAttributes.patch which readds support for the + GetDrawableAttributes extension that's needed for compiz to work properly. + + -- Thierry Reding Fri, 1 Dec 2006 20:32:34 +0100 + +xorg-server (2:1.1.1-21) unstable; urgency=emergency + + * Security update. + * Fix integer overflow in the ProcXCMiscGetXIDList() function in the XC-MISC + extension. Reference: CVE-2007-1003. + + -- Julien Cristau Wed, 04 Apr 2007 00:34:51 +0200 + +xorg-server (2:1.1.1-20) unstable; urgency=low + + * xephyr: Add patch from upstream git to fix memory leak in + ephyrScreenFini(). Thanks, Guillem Jover! + + -- Julien Cristau Tue, 6 Mar 2007 22:20:14 +0100 + +xorg-server (2:1.1.1-19) unstable; urgency=high + + [ Drew Parsons ] + * Removed spurious space in default font line + (/usr/X11R6/lib/X11/fonts/Type1 not "/usr/X11R6/lib/ X11/fonts/Type1") + + [ David Nusinow ] + * Conflict with and replace xserver-common, because that package used to + provide the SecurityPolicy file. This is an RC bugfix because it breaks + upgrades, so it gets a high urgency. Thanks Christian Tsotras and Lionel + Elie Mamane for reporting and it. Closes: #402658 + + -- David Nusinow Wed, 28 Feb 2007 21:48:19 -0500 + +xorg-server (2:1.1.1-18) unstable; urgency=medium + + * Add patch from Fedora to make xephyr work on 64bit architectures + (closes: #405928). + + -- Julien Cristau Fri, 16 Feb 2007 22:20:08 +0100 + +xorg-server (2:1.1.1-17) unstable; urgency=medium + + * Make the int10 module usable on i386 with a 64bit kernel (closes: #409730). + + New patch 42_build_int10_submodules.diff, which allows us to build vm86 + and x86emu as two separate submodules, and make the int10 module itself + fall back to loading x86emu if vm86 calls fail. + + Add workaround for https://bugs.freedesktop.org/show_bug.cgi?id=7299 to + the above patch: move definition of Int10Current from int10/xf86int10.c + to int10/helper_mem.c. + + Drop the part of 39_alpha_build_flags.patch applying to + hw/xfree86/os-support/linux/Makefile.in, and run autoreconf with all + patches applied. + + -- Julien Cristau Wed, 7 Feb 2007 20:37:19 +0100 + +xorg-server (2:1.1.1-16) unstable; urgency=medium + + * New patch 41_xfree86_linux_acpi_fix_tokenizing.diff from upstream git to + fix a crash on acpi events (closes: #409443). + + -- Julien Cristau Sat, 3 Feb 2007 22:56:04 +0100 + +xorg-server (2:1.1.1-15) unstable; urgency=high + + * High-urgency upload for security bugfix. + * New patch 40_xorg-xserver-1.1.0-dbe-render.diff to fix multiple integer + overflows in the dbe and render extensions. + CVE IDs: CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + * Add myself to Uploaders, and remove Fabio and Branden, with their + permission. They're of course welcome back when they have more time! + + -- Julien Cristau Tue, 9 Jan 2007 15:45:46 +0100 + +xorg-server (2:1.1.1-14) unstable; urgency=high + + * The "let's drop 20 years of build logic and replace it with autoconf in a + single release, trust me, what could go wrong? " release + * High-urgency upload for RC bugfix + * New patch 39_alpha_build_flags.patch: no really, when they said + lnx_ev56.c should be built with -mcpu=ev56, they really meant it. + Closes: #392500. + + -- Steve Langasek Sun, 7 Jan 2007 15:19:08 -0800 + +xorg-server (2:1.1.1-13) unstable; urgency=medium + + [ Julien Cristau ] + * xserver-xorg-core recommends xfonts-base and suggests xfonts-100dpi | + xfonts-75dpi and xfonts-scalable. Also add explanation about fonts to the + long description, stolen from the old xserver-common package (closes: + #400654). + + [ David Nusinow ] + * This is important for upgrades to etch, and has no notable risk, so bump + priority to medium. + + -- David Nusinow Fri, 29 Dec 2006 19:57:51 -0500 + +xorg-server (2:1.1.1-12) unstable; urgency=low + + [ Julien Cristau ] + * Delete hw/xfree86/common/xf86Build.h in debian/rules clean, since it's + wrongly included in the upstream tarball. + + [ David Nusinow ] + * Pull fix for the ignore_abi.diff patch. This one's a major brown bag on my + part. Thanks Michel Dänzer. + * Add 38_wait_for_something_force_timer_reset.diff which forces the server + to reset timers when they've overrun in some cases rather than wait + forever. Patch by Daniel Stone. Thanks Michel Dänzer for pointing the + changes out. Closes: #374026 + + -- David Nusinow Tue, 12 Dec 2006 21:13:20 -0500 + +xorg-server (2:1.1.1-11) unstable; urgency=low + + [ Drew Parsons ] + * Patches 33_Xserver_man_typos.patch and 34_xorg.conf_man_typos.patch + fix minor typos in Xserver and xorg.conf man pages. + Closes: #364556, #308899. + * Add patch 35_randr_byteswap.patch from upstream. Fixes a client/server + byteswapping problem. Closes: #291100. + + [ Julien Cristau ] + * Don't build-depend on libdrm-dev on hurd-i386 (closes: #358015). Thanks, + Samuel Thibault. + * Update hurd support patch (closes: #356300). Thanks, Samuel Thibault. + * Add reportbug script stolen from the monolith, to add the user's config + and log file in every bug report. + * Delete hw/xfree86/common/xf86Build.h from our source tree, so that the + build date is correctly calculated at build time, and not hardcoded to + 07 July 2006. Thanks to Jurij Smakov for noticing. + * Add patch 36_fix_ffs.patch by Jurij Smakov to fix infinite loop in ffs() + if called with an argument of 0 (closes: #395564). + * Add patch 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms + from upstream git to fix color issue on big endian platforms + (closes: #392453). Thanks to Michel Dänzer for the patch! + * Fix typo in xvfb-run (closes: #337703). + * Install xdmxconfig and its manpage in xdmx-tools (closes: #393991). + * Add Replaces: xdmx (<= 2:1.1.1-10) to xdmx-tools because of the xmdxconfig + manpage move. + + -- David Nusinow Fri, 24 Nov 2006 15:44:52 -0500 + +xorg-server (2:1.1.1-10) unstable; urgency=low + + [ Denis Barbier ] + * Fix video mode switching. Closes: #391052 + * Fix FTBFS on kfreebsd-i386 and kfreebsd-amd64. Thanks Petr Salinger. + Closes: #363517 + + [ David Nusinow ] + * Add depends on xserver-xorg so that /etc/X11/X gets installed. Thanks + Frans Pop. Closes: #392295 + * Add 31_blocksigio.diff. This patch by Alan Hourihane, and it prevents a + race condition when a driver tries to set the cursor state when the server + is in the middle of switching resolution. Thanks to Frans Pop for + reporting the bug, Michel Dänzer for reading through the backtrace and + diagnosing the problem, and Alan for the final patch. Closes: #390646. + + [ Jurij Smakov ] + * Add 32_disable_sparc_pci_bridge.diff. Disable PCI bridge handling on + sparc, which is broken and causes filesystem corruption (by poking + the PCI bus in the wrong places) on some machines. Closes: #392312. + + [ Drew Parsons ] + * Use __appmansuffix__ not __mansuffix__ in + 03_xnest_manpage_overhaul.diff. Closes: #390599. + * Install upstream ChangeLog. Closes: #365274. + + -- David Nusinow Mon, 16 Oct 2006 21:59:51 -0400 + +xorg-server (2:1.1.1-9) unstable; urgency=low + + [ Jurij Smakov ] + * Add 21_glx_align_fixes.patch to reintroduce the setting of __GLX_ALIGN64 + variable, lost during the modular transition. This setting is essential + for architectures with strong alignment requirements. Patch affects + alpha, sparc, amd64, ia64 and s390, mimicking the behaviour of the + monolithic build. Closes: #388125. + + [ Denis Barbier ] + * Add 22_xkb_cycle_3layouts.diff to fix layout switching when 3 layouts + are present. Thanks Ivan Pascal for the patch. Closes: #345803 + + [ David Nusinow ] + * Add kFreeBSD support patch (23). Thanks to Robert Millan, Petr Salinger, + Daniel Stone, and Michael Banck for input and patch writing. + Closes: #363517 + * Add hurd support patch (24). Thanks Samuel Thibault, Daniel Stone, and + Michael Banck. Closes: #356300 + * Disable the explicit enabling of dri in the configure. The configure + script autodetects whether or not to use this anyway, and enabling it + explicitly breaks the build on hurd. Thanks Samuel Thibault and Michael + Banck. Closes: #358015 + * Add several patches written by Kristian Høgsberg for allowing compiz to + work with AIGLX. These patches were vetted by Theirry Reding with valuable + advice from Michel Dänzer, and feedback from Kristian himself. + - 25_tfp_damage.diff + - 26_aiglx_happy_vt_switch.diff + - 27_aiglx_locking.diff + - 28_mesa_copy_sub_buffer.diff + - 29_mesa_reseed_makefile.diff + - update of 20_mesa_6.5.1.diff + * Remove bizarre wholesale inclusion of another patch in the 23_kbsd patch + + [ Eugene Konev ] + * Use --with-default-font-path instead of --with-fontdir. + * Set RGBPath through --with-rgb-path. + * Drop 11_debian_always_use_default_font_path.diff. + * Drop 14_debian_always_look_in_our_module_path.diff. + * Ship SecurityPolicy in xserver-xorg-core. + + -- David Nusinow Thu, 28 Sep 2006 23:59:35 -0400 + +xorg-server (2:1.1.1-8) unstable; urgency=low + + * Update mesa symlink patch to the latest from HEAD + * Add 20_mesa_6.5.1.diff to allow the server to build with mesa 6.5.1 + * Bump build-dep versions on x11proto-gl to 1.4.8, and mesa to 6.5.1 + + -- David Nusinow Mon, 25 Sep 2006 22:21:37 -0400 + +xorg-server (2:1.1.1-7) unstable; urgency=low + + * Fix s390 build issue. Thanks Bastian Blank for the report and Eugene Konev + for the patch. Closes: #388628. + * Disable build of various utilities that we don't ship anyway. Patch thanks + to Eugene Konev. + + -- David Nusinow Thu, 21 Sep 2006 23:07:16 -0400 + +xorg-server (2:1.1.1-6) unstable; urgency=low + + * Upload 7.1 to unstable. + + [ Drew Parsons ] + * Added SGI FreeB licence to debian/copyright. Closes: #368563. + * Apply upstream patches 18_execinfo_only_for_backtrace.patch, to use + execinfo.h for and only for backtrace. Applied git patch + 5a3488ccac8e5dabd9fc98bc41ef178ead1b2faf directly into configure scripts, + activated with autoreconf. Closes: #363218. + * Only requires build-depends version of x11proto-gl-dev on 1.4.6. + + [ Steve Langasek ] + * Add versioned build-depends on x11proto-fixes-dev (>= 4.0), to + ensure the package is built against the right protocol version. + Closes: #383778. + + -- David Nusinow Mon, 18 Sep 2006 18:30:07 -0400 + +xorg-server (2:1.1.1-5) experimental; urgency=low + + * Fix error in 16_s390_fix.diff caused by my idiot copying. Thanks Yannick + Roehlly and Daniel Stone. + + -- David Nusinow Sun, 27 Aug 2006 23:25:21 +0000 + +xorg-server (2:1.1.1-4) experimental; urgency=low + + [ Drew Parsons ] + * Tighten dependencies between X11R7.1 server and video drivers. + xserver-xorg-core no longer Depends: xserver-xorg-video-all + | xserver-xorg-video but instead Conflicts: xserver-xorg-video. + (closes: #383873) + The dependency on xserver-xorg-video-all | xserver-xorg-video-1.0 is + managed by the xserver-xorg binary package (not included here in + order to avoid circular dependencies). (closes: #362313) + * Likewise remove Depends: xserver-xorg-input-all | xserver-xorg-input + (again, handled by xserver-xorg) to avoid circular dependency with drivers. + + [ David Nusinow ] + * Epoch bump + * Add 17_ignoreabi.diff to allow users to simply set a value in xorg.conf + rather than pass -ignoreABI to the server every time it starts + + -- David Nusinow Wed, 23 Aug 2006 22:03:06 +0000 + +xorg-server (1:1.1.1-3) unstable; urgency=low + + * Add 16_s390_fix.diff to fix FTBFS on s390. Thanks Bastian Blank. + (closes: #362641) + * Bump build-depends version of libgl1-mesa-dev to 6.5.x package we have in + experimental currently + * Bump build-depends version of x11proto-gl-dev to 1.4.7 or greater + + -- David Nusinow Tue, 22 Aug 2006 00:57:31 +0000 + +xorg-server (1:1.1.1-2) experimental; urgency=low + + [ Drew Parsons ] + * Updated mesa-swx11-source build-depends to (>> 6.5.0), required + for xserver 1.1.1. (closes: #383334) + + [ David Nusinow ] + * Enable and ship xephyr + * Hack off the 'x' manpage suffix + * Install Xnest manpage + * Bump policy version to 3.7.2.0. No changes necessary. + + -- David Nusinow Wed, 16 Aug 2006 21:14:44 +0000 + +xorg-server (1:1.1.1-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release + * Move patch target call so that we don't try and build twice + * Remove obsolete 15_security_allocate_local.diff and + 16_SECURITY_setuid.diff + * Add 15_symlink_mesa.diff + + -- David Nusinow Sun, 6 Aug 2006 16:12:25 +0000 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.1.1-0ubuntu14) feisty; urgency=low + + * Add 'debian/patches/38_Fix-pDRIPriv_NULL_deref.patch': NULL-init DRI + screen private data, thanks to Tormod Volden (LP: #60288). + + -- Kees Cook Sat, 10 Feb 2007 20:27:44 -0800 + +xorg-server (1:1.1.1-0ubuntu13) feisty; urgency=low + + * 19_revert_xkb_change_breaking_XkbGetKeyboard.patch: + - patch from fedora (with extra Makefile.in change), revert change that + broke XkbGetKeyboard() (Ubuntu: #58083) + * 37_Fix-__glXDRIbindTexImage-for-32-bpp-on-big-endian-platforms.diff: + - upstream patch copied from the Debian package, fix blue screen with + compiz on ppc (Ubuntu: #58373) + + -- Sebastien Bacher Fri, 12 Jan 2007 12:17:28 +0100 + +xorg-server (1:1.1.1-0ubuntu12.1) edgy-security; urgency=low + + * SECURITY UPDATE: Arbitrary code execution with root privileges via heap + overflows in DBE and Render extensions. + * Add 'debian/patches/021_ubuntu_dbe-render_overflows.diff' from + upstream + * References + CVE-2006-6101 CVE-2006-6102 CVE-2006-6103 + + -- Kees Cook Mon, 8 Jan 2007 12:45:41 -0800 + +xorg-server (1:1.1.1-0ubuntu12) edgy; urgency=low + + * debian/patches/17_no_composite_for_xvfb.patch: + - fix a crasher by not using composite for Xvfb when using -render + * debian/patches/18_no_composite_for_xvfb_run.patch: + - use "-extension Composite" to fix xvfb-run crashing + + -- Sebastien Bacher Fri, 13 Oct 2006 17:12:49 +0200 + +xorg-server (1:1.1.1-0ubuntu11) edgy; urgency=low + + * debian/patches/16_only_switch_vt_when_active.patch: + Add a check to prevent the X server from changing the VT when killing + GDM from the console. + + -- Ryan Lortie Thu, 21 Sep 2006 01:26:35 -0400 + +xorg-server (1:1.1.1-0ubuntu10) edgy; urgency=low + + * Build xserver-xephyr from xorg-server package. Malone: #57077, #57084 + + -- Tollef Fog Heen Wed, 6 Sep 2006 12:57:32 +0200 + +xorg-server (1:1.1.1-0ubuntu9) edgy; urgency=low + + * Enable composite extension by default + * Add patch from fd.o bugzilla #7916 to avoid aiglx hangs on vt + switches + + -- Matthew Garrett Sat, 26 Aug 2006 03:20:31 +0100 + +xorg-server (1:1.1.1-0ubuntu8) edgy; urgency=low + + * Steal patch from Fedora to allow compiz to trigger the disabling of + XAA off-screen pixmaps + + -- Matthew Garrett Wed, 23 Aug 2006 21:26:08 +0100 + +xorg-server (1:1.1.1-0ubuntu7) edgy; urgency=low + + * (temporarily) Removed Breaks: section from xserver-xorg-core (necessary + until apt-get properly supports this feature) + * Tightened Build-Depends: mesa-swx11-source to >= + 6.5.0.git.20060810-0ubuntu1 + * Tightened Build-Depends of libgl1-mesa-dev to >= + 6.5.0.git.20060810-0ubuntu1 + + -- Rodrigo Parra Novo Tue, 15 Aug 2006 07:26:07 -0300 + +xorg-server (1:1.1.1-0ubuntu6) edgy; urgency=low + + * Tightened Build-Depends of mesa-swx11-source to version 6.5.0.git.20060809 + * Removed patch 003_fedora_root_window_black_pattern.patch (not necessary + for Ubuntu) + + -- Rodrigo Parra Novo Fri, 11 Aug 2006 11:41:29 -0300 + +xorg-server (1:1.1.1-0ubuntu5) edgy; urgency=low + + * Renamed 003_ubuntu_sharevts_load_cpu.patch to + 002_ubuntu_sharevts_load_cpu.patch + * Added 003_fedora_root_window_black_pattern.patch (black background + pattern instead of default X background pattern. Feel free to revert if + you feel strongly against this one) + * Added 005_fdo4320_composite_fastpath.patch and + 016_fdo7482_xdmx_render_fix.patch (upstream bug fixes, bug numbers + annotated on patch names) + * Added 004_fedora_init_origins_fix.patch (multihead initialization) + * Added 006_ubuntu_fpic_libxf86config.patch + * Added 007_fedora_dont_backfill_bg_none.patch + * Added 008_fedora_gl_include_inferiors.patch, + 009_fedora_mesa_copy_sub_buffer.patch, + 010_fedora_no_move_damage.patch, + 012_fedora_tfp_damage.patch and + 014_fedora_no_composite_in_xnest.patch (further aiglx support) + * 011_fedora_pci_scan_fixes.patch (pci scan fixes - testing is needed to + check if an extra upstream patch for pci domains is also necessary) + * Added 015_fedora_sane_default_mode.patch (tweak default mode - please feel + free to revert this patch if you feel strongly against it) + * Added 017_fedora_add_missing_headers_to_sdk.patch + * Added 018_ubuntu_linux_kernel_include_fixes.patch and + 013_ubuntu_symlink_mesa_source.patch (build fixes against current + linux-kernel-modules * mesa-swx11-source - these already existed before, + but were applied directly to the source tree, instead of being quilt + patches) + * Just for reference: debian patch #02 is candidate for removal on next + upload. I'll refrain from removing it now to diminish the chances of this + being a breaks-for-everyone release + * Moved SecurityPolicy example from /usr/share/doc/examples/ to + /usr/share/doc/xserver-xorg-core/ + + -- Rodrigo Parra Novo Mon, 7 Aug 2006 17:21:05 -0300 + +xorg-server (1:1.1.1-0ubuntu4) edgy; urgency=low + + * Added new Breaks: section to xorg-server-core: + xserver-xorg-driver-all, xserver-xorg-driver-apm, + xserver-xorg-driver-ark, xserver-xorg-driver-ati, + xserver-xorg-driver-chips, xserver-xorg-driver-cirrus, + xserver-xorg-driver-cyrix, xserver-xorg-driver-dummy, + xserver-xorg-driver-fbdev, xserver-xorg-driver-glint, + xserver-xorg-driver-i128, xserver-xorg-driver-i740, + xserver-xorg-driver-i810, xserver-xorg-driver-imstt, + xserver-xorg-driver-mga, xserver-xorg-driver-neomagic, + xserver-xorg-driver-newport, xserver-xorg-driver-nsc, + xserver-xorg-driver-nv, xserver-xorg-driver-rendition, + xserver-xorg-driver-s3, xserver-xorg-driver-s3virge, + xserver-xorg-driver-savage, xserver-xorg-driver-siliconmotion, + xserver-xorg-driver-sis, xserver-xorg-driver-sisusb, + xserver-xorg-driver-tdfx, xserver-xorg-driver-tga, + xserver-xorg-driver-trident, xserver-xorg-driver-tseng, + xserver-xorg-driver-v4l, xserver-xorg-driver-vesa, + xserver-xorg-driver-vga, xserver-xorg-driver-via, + xserver-xorg-driver-vmware, xserver-xorg-driver-voodoo, + xserver-xorg-video-all (<< 7.0.22ubuntu7), + xserver-xorg-video-apm (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-ark (<< 1:0.6.0-0ubuntu1), + xserver-xorg-video-ati (<< 1:6.6.1-0ubuntu1), + xserver-xorg-video-chips (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-cirrus (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-cyrix (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-dummy (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-fbdev (<< 1:0.3.0-0ubuntu1), + xserver-xorg-video-glint (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-i128 (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-i740 (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-i810 (<< 1:1.6.1-0ubuntu1), + xserver-xorg-video-imstt (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-mga (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-neomagic (<< 1:1.1.1-0ubuntu1), + xserver-xorg-video-newport (<< 1:0.2.0-0ubuntu1), + xserver-xorg-video-nsc (<< 1:2.8.1-0ubuntu1), + xserver-xorg-video-nv (<< 1:1.2.0-0ubuntu1), + xserver-xorg-video-rendition (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-s3 (<< 1:0.4.1-0ubuntu1), + xserver-xorg-video-s3virge (<< 1:1.9.1-0ubuntu1), + xserver-xorg-video-savage (<< 1:2.1.1-0ubuntu1), + xserver-xorg-video-siliconmotion (<< 1:1.4.1-0ubuntu1), + xserver-xorg-video-sis (<< 1:0.9.1-0ubuntu1), + xserver-xorg-video-sisusb (<< 1:0.8.1-0ubuntu1), + xserver-xorg-video-tdfx (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tga (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-trident (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-tseng (<< 1:1.1.0-0ubuntu1), + xserver-xorg-video-v4l (<< 1:0.1.1-0ubuntu1), + xserver-xorg-video-vesa (<< 1:1.2.1-0ubuntu1), + xserver-xorg-video-vga (<< 1:4.1.0-0ubuntu1), + xserver-xorg-video-via (<< 1:0.2.1-0ubuntu1), + xserver-xorg-video-vmware (<< 1:10.13.0-0ubuntu1), + xserver-xorg-video-voodoo (<< 1:1.1.0-oubuntu1) + + -- Rodrigo Parra Novo Tue, 1 Aug 2006 22:59:55 -0300 + +xorg-server (1:1.1.1-0ubuntu3) edgy; urgency=low + + * Build with -fno-stack-protector (see LP#54650) + + -- Matt Zimmerman Mon, 31 Jul 2006 16:28:59 -0700 + +xorg-server (1:1.1.1-0ubuntu2) edgy; urgency=low + + * (sparc only) removed stale inclusion of asm/kbio.h on + hw/xfree86/os-support/linux/lnx_io.c and + hw/xfree86/os-support/linux/lnx_kbd.c + * Update debian/serverabiver to 1:1.1.1 + + -- Rodrigo Parra Novo Mon, 31 Jul 2006 12:53:22 -0300 + +xorg-server (1:1.1.1-0ubuntu1) edgy; urgency=low + + * New Upstream version + * Changed Build-Depends from mesa-swrast-source to mesa-swx11-source, + following Debian package nomenclature + * Re-did 12_security_policy_in_etc.diff for 1.1.1 + * Dropped 15_security_allocate_local.diff (applied upstream) + * Dropped 16_SECURITY_setuid.diff (applied upstream) + * Dropped 000_ubuntu_fix_read_kernel_mapping.patch (applied upstream) + * Dropped 002_ubuntu_fix_for_certain_intel_chipsets.patch (applied upstream) + * Updated versioned Build-Depends on mesa-swx11-source to version + 6.5.0.cvs.20060725-0ubuntu1 + * Added arrayobj.c, arrayobj.h, bitset.h & rbadaptors.h to + GL/symlink-mesa.sh (linked from mesa-swx11-source) + * Added arrayobj.c to default build target on GL/mesa/main + + -- Rodrigo Parra Novo Tue, 25 Jul 2006 20:06:28 -0300 + +xorg-server (2:1.0.2-10) unstable; urgency=low + + * Upload to unstable to fixed messed up last upload which was supposed to go + to experimental. Brown bag o' joy. + + -- David Nusinow Tue, 22 Aug 2006 19:31:08 +0000 + +xorg-server (1:1.0.2-9) UNRELEASED; urgency=high + + [ Denis Barbier ] + * Fix 13_debian_add_xkbpath_env_variable.diff, XKBPATH environment + variable was not always taken into account. + + [ David Nusinow ] + * Remove two Ubuntu packaging holdovers. Have xvfb recommend xbase-clients + rather than xauth, and have xserver-xorg-core recommend xkb-data rather + than xkeyboard-config. Thanks Sterling MacNay. + * Security update. Fix for setuid privledge escalation vulernabilities. + See http://lists.freedesktop.org/archives/xorg/2006-June/016146.html for + the full advisory. + + [ Jurij Smakov ] + * Stop including the non-existent asm/kbio.h header file in + hw/xfree86/os-support/linux/lnx_{io,kbd}.c to avoid the build failure + on sparc. + + -- David Nusinow Sat, 1 Jul 2006 17:20:45 -0400 + +xorg-server (1:1.0.2-8) unstable; urgency=low + + * Move xserverrc back to xbase-clients. Thanks Benjamin Mesing. + * Add 15_security_allocate_local.diff. This fixes Bug fd.o bug #6642. + Fix buffer overflow in Render. (CVE 2006-1526). Patch by Eric Anholt. + + -- David Nusinow Tue, 2 May 2006 21:47:17 -0400 + +xorg-server (1:1.0.2-7) unstable; urgency=low + + * Ship xserverrc again in /etc/X11/xinit. Thanks Bastian Kleineidam and + Vasilis Vasaitis. (closes: #357713) + + -- David Nusinow Wed, 26 Apr 2006 00:01:16 -0400 + +xorg-server (1:1.0.2-6) unstable; urgency=low + + [ David Nusinow ] + * Use -DNO_INLINE on s390. Thanks Bastian Blank and Julien Cristau. + (closes: #362641) + * Re-add xvfb-run and manpage to xvfb package. Thanks Josselin Mouette and + Jamie Wilkinson. (closes: #363494) + * Add 014_debian_always_look_in_our_module_path.diff. This will cause the + server to always look in the default module path even if they've specified + an alternate path in their xorg.conf file via the ModulePath option. A + note to users: you should remove this part of your xorg.conf unless you + need it, as the server will look in the right place for modules if you + don't specify a location. + * Run dh_install with --list-missing + * Add missing manpages all around. Thanks Roland Mas and Jan Hudec. + (closes: #362489, #364199) + * Actually install apps to xdmx-tools. Thanks Xavier Bestel. + (closes: #356813) + + [ Denis Barbier ] + * Add 13_debian_add_xkbpath_env_variable.diff so that the server takes + the XKBPATH environment variable into account. (closes: #363229) + + -- David Nusinow Sat, 22 Apr 2006 17:06:23 -0400 + +xorg-server (1:1.0.2-5) unstable; urgency=low + + * Add 11_debian_always_use_default_font_path.diff from Eugene Konev. This + patch causes the server to add the default font path to whatever the user + has specified. Right now, that's /usr/share/fonts/X11, as defined on + configure in debian/rules. Thanks Eugene, this will definitely go a long + way. + * Document how to get rid of error loading glcore (and other modules) in + NEWS.Debian. Thanks Matej Vela and others. + * Provide the virtual 'xserver' package. Thanks Steve Langasek and Daniel + Stone. (closes: #362750) + * Add 12_security_policy_in_etc.diff from Eugene Konev. This will allow us + to tell the server on configure to look in /etc/X11/xserver for the + SecurityPolicy file. Thanks Joey Hess and Eugene. (closes: #362246) + + -- David Nusinow Mon, 17 Apr 2006 00:34:08 -0400 + +xorg-server (1:1.0.2-4) unstable; urgency=low + + * Document the need to update paths in xserver-xorg-core's NEWS file. + (closes: #362077, #362244, #362431) + * Make xserver-xorg-core Architecture: any. (closes: #362150) + * Build with --with-fontdir=/usr/share/fonts/X11. Remove + --with-default-font-path option to make this work. Thanks Eugene Konev. + + -- David Nusinow Thu, 13 Apr 2006 23:54:06 -0400 + +xorg-server (1:1.0.2-3) unstable; urgency=low + + * Add build-conflicts on xlibs-static-dev. Thanks Zephaniah E. Hull. + + -- David Nusinow Tue, 11 Apr 2006 18:44:51 -0400 + +xorg-server (1:1.0.2-2) unstable; urgency=low + + * Upload to unstable + * Add versioned build-dep on libdmx-dev. Thanks Frank Lichtenheld. + (closes: #361752) + + -- David Nusinow Mon, 10 Apr 2006 19:34:04 -0400 + +xorg-server (1:1.0.2-1) experimental; urgency=low + + [ David Nusinow ] + * New upstream release. Fixes CVE-2006-0745 + + [ Denis Barbier ] + * Set XKB base path to /usr/share/X11/xkb. + + -- David Nusinow Mon, 20 Mar 2006 21:41:04 -0500 + +xorg-server (1:1.0.2-0ubuntu10) dapper; urgency=low + + * Backport a fix for Intel bridge handling: + debian/patches/002_fix_for_certain_intel_chipsets.patch + (Closes Ubuntu: #29880) + + -- Paul Sladen Sun, 14 May 2006 19:01:32 +0100 + +xorg-server (1:1.0.2-0ubuntu9) dapper; urgency=low + + * Add 1680x1050 60 and 85Hz Modelines. Thanks to Bart Verwilst for the data. + (Closes Ubuntu: #6096) + + -- Fabio M. Di Nitto Fri, 05 May 2006 12:38:22 +0200 + +xorg-server (1:1.0.2-0ubuntu8) dapper; urgency=low + + * Fix "XCB rendertest crashes server": + - Add patch 001-CVE-2006-1526.patch.dpatch. + (CVE-2006-1526) + + -- Fabio M. Di Nitto Wed, 03 May 2006 09:01:09 +0200 + +xorg-server (1:1.0.2-0ubuntu7) dapper; urgency=low + + * Ship again xorg.conf(5) + (Closes Ubuntu: #33703) + + -- Fabio M. Di Nitto Mon, 01 May 2006 13:37:40 +0200 + +xorg-server (1:1.0.2-0ubuntu6) dapper; urgency=low + + * Fix severe internal memory corruption: + - Add patch: 000-fix-read-kernel-mapping.patch.dpatch. + (freedesktop bugzilla: #6472) + + -- Fabio M. Di Nitto Fri, 21 Apr 2006 08:07:33 +0200 + +xorg-server (1:1.0.2-0ubuntu5) dapper; urgency=low + + * Fix CPU load when using -sharevts: + - Add patch: 991_sharevts-load-cpu.patch + (Thanks for the initial patch to Michael Witrant) + (Closes Ubuntu: #33611) + + -- Fabio M. Di Nitto Mon, 10 Apr 2006 13:30:26 +0200 + +xorg-server (1:1.0.2-0ubuntu4) dapper; urgency=low + + * Fix SecurityPolicy path to /etc/X11/xserver/SecurityPolicy + and ship an example. NOTE: this file is NOT installed by default, + the WARNING you see in Xorg.0.log is an harmless WARNING. + Add patch: 990_ubuntu_fix_security_policy_path.patch. + (Close Ubuntu: #31608) + + * Readd manpages to the different packages. + + * Ship again ioport, gtf, pcitweak and scanpci. + (Closes Ubuntu: #37720) + + -- Fabio M. Di Nitto Tue, 04 Apr 2006 16:33:00 +0200 + +xorg-server (1:1.0.2-0ubuntu3) dapper; urgency=low + + * What about shipping xorg-server.m4 to make developer life easier? + + -- Fabio M. Di Nitto Thu, 23 Mar 2006 10:32:55 +0100 + +xorg-server (1:1.0.2-0ubuntu2) dapper; urgency=low + + * xserver-xorg-dev Depends: x11proto-randr-dev. + (Closes Ubuntu: #35594) + + -- Fabio M. Di Nitto Wed, 22 Mar 2006 08:09:46 +0100 + +xorg-server (1:1.0.2-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Drop patches: + + CVE-2006-0745 + + add-missing-sparc-include + + fix-backtrace + + fix-crash-on-null-addr + + * UVF execption granted by mdz. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:39:01 +0100 + +xorg-server (1:1.0.1-2) experimental; urgency=low + + [ David Nusinow ] + * Add versioned dependency on x11-common + * Remove old cruft in our patches directory + * Port patches from trunk + + 030_libvgahw_gcc4_volatile_fix.diff + + general/026_xc_programs_manpage_overhaul.diff + + arm/303_arm_cache_flush.diff + + arm/315_arm_is_not_x86_and_has_no_vga.diff + + general/099e_xorgconf_manpage_overhaul.diff + + s390/500_s390_support.diff + + debian/910_debian_Xserver_RTFF.diff + * add 04_read_rom_in_chunks.diff. This reads PCI ROM in large chunks rather + than one byte at a time. This patch by Alex Williamson and forwarded to us + by Dann Frazier. Thanks to both of them. (closes: #353168) + * Don't build xserver-xorg-core on s390. This means putting all the other + arches as being explicitly listed. Damn !s390. + * Version the conflict with xserver-xfree86 to allow for the transition + package to be installed + * Remove README.DRI, as it is non-free. Add it to prune list. + * Add 10_dont_look_in_home_for_config.diff to prevent looking in a user's + home directory for xorg.conf. Thanks Daniel Stone for the patch. + + -- David Nusinow Sun, 12 Mar 2006 16:18:13 -0500 + +xorg-server (1:1.0.1-1) experimental; urgency=low + + * First upload to Debian + * Add bison and flex to the build-depends + * Define INSTALL in debian/rules + * Add xserver-xorg-core dependency xserver-xorg-video-all | + xserver-xorg-video. The former is a metapackage that depends on all the + video drivers we ship and the latter is a virtual package that each video + driver provides. This scheme will install the metapackage by default but + will permit any single video driver to satsify the dependency. Do the same + thing for the input drivers. + * switch dpatch build-dependency to quilt + * Deal with mesa packaging rename: build-dep on mesa-swrast-source -> + mesa-swx11-source + * Change xserver-core depends to be on x11-common rather than xorg-common + * Have xserver-xorg-dev install the files in /usr/share/aclocal so we get + xorg-server.m4 + * Manually set permissions on serverabiver installation + * Set the default font path to /usr/share/fonts/X11 instead of + /usr/share/X11/fonts. Thanks Eugene Konev. + + -- David Nusinow Mon, 20 Feb 2006 00:18:45 -0500 + +xorg-server (1:1.0.1-0ubuntu8) dapper; urgency=low + + * [SECURITY] Fix CVE-2006-0745. + + -- Fabio M. Di Nitto Tue, 21 Mar 2006 05:33:50 +0100 + +xorg-server (1:1.0.1-0ubuntu7) dapper; urgency=low + + * debian/control: + - xvfb Depends on xfonts-base too, fix pointed by fabbione + + -- Sebastien Bacher Fri, 3 Mar 2006 22:21:56 +0100 + +xorg-server (1:1.0.1-0ubuntu5) dapper; urgency=low + + * Add missing include on sparc. Fix FTBFS. + + -- Fabio M. Di Nitto Wed, 01 Feb 2006 13:45:41 +0100 + +xorg-server (1:1.0.1-0ubuntu4) dapper; urgency=low + + * Backport from upstream HEAD at Daniel's request: + - Add forgotten HAVE_BACKTRACE define, so that we actually get + backtraces when Xorg segfaults. + + -- Colin Watson Fri, 27 Jan 2006 13:47:56 +0000 + +xorg-server (1:1.0.1-0ubuntu3) dapper; urgency=low + + * Depend on x11-common rather than xorg-common and xserver-common + + -- Tollef Fog Heen Wed, 18 Jan 2006 17:13:12 +0100 + +xorg-server (1:1.0.1-0ubuntu2) dapper; urgency=low + + * Add flex to build-deps, fixing FTBFS. + + -- Tollef Fog Heen Wed, 18 Jan 2006 12:34:03 +0100 + +xorg-server (1:1.0.1-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Fri, 6 Jan 2006 08:00:52 +1100 + +xorg-server (1:1.0.0-0ubuntu1) dapper; urgency=low + + * New upstream release. + + fbCompositeGeneral is now around 97.3% less stuffed (closes: + Ubuntu#20286). + + 'Fix' mouse issues in the DIX by adding XFree86Server defines (sigh; + closes: Ubuntu#20200). + + Fix Emulate3Buttons mouse posting (closes: Ubuntu#11308). + * Bump Build-Depends on libxt-dev (appdefaultdir), libdrm-dev (libdrm2), and + mesa-swrast-source (new files). + * Add --with-fontdir and scotch --with-default-font-path to fix font paths + for non-Xorg servers (closes: Ubuntu#20157). + * Fix path to SecurityPolicy and RGB_DB. + * Move update-linux-hardened-support call to xserver-xorg-core postinst + (from xserver-xorg postinst). + * Add patch to os/access.c so we don't crash on a null-addressed interface + (closes: Ubuntu#20414). + + -- Daniel Stone Tue, 13 Dec 2005 07:27:13 +1100 + +xorg-server (1:0.99.3-0ubuntu6) dapper; urgency=low + + * Fix xserver-xorg-dev Depends field to only depend on the headers this + this package actually uses. + * Re-add xvfb-run to xfvb (closes: Ubuntu#20157). + + -- Daniel Stone Mon, 5 Dec 2005 15:04:14 +1100 + +xorg-server (1:0.99.3-0ubuntu5) dapper; urgency=low + + * Add -ffunction-sections where needed + * Depend: xserver-common: needed for dexconf and /usr/X11R6/bin/X + + -- LaMont Jones Sat, 26 Nov 2005 05:15:36 +0000 + +xorg-server (1:0.99.3-0ubuntu4) dapper; urgency=low + + * Add two more dependencies to build the other half of the video drivers: + - x11proto-xext-dev, x11proto-video-dev + + -- Adam Conrad Fri, 25 Nov 2005 02:36:44 +1100 + +xorg-server (1:0.99.3-0ubuntu3) dapper; urgency=low + + * Add a few dependencies to xorg-server-dev as the path of least resistance + to get all the various input and video drivers to build again: + - For the video drivers: x11proto-randr-dev, x11proto-render-dev, + x11proto-fonts-dev, x11proto-xf86dri-dev, libdrm-dev + - For the input drivers: x11proto-core-dev, x11proto-input-dev, + x11proto-randr-dev (why do input drivers want randr?) + + -- Adam Conrad Thu, 24 Nov 2005 18:51:25 +1100 + +xorg-server (1:0.99.3-0ubuntu2) dapper; urgency=low + + * Add missing libfreetype6-dev build-depends. + + -- Daniel Stone Thu, 24 Nov 2005 10:26:44 +1100 + +xorg-server (1:0.99.3-0ubuntu1) dapper; urgency=low + + * New upstream release. + + -- Daniel Stone Mon, 21 Nov 2005 14:13:41 +1100 + +xorg-server (1:0.99.2+cvs.20051025-3) dapper; urgency=low + + * Version mesa-swrast-source Build-Dep to 6.4.0 or higher, so GLcore is a + little less crash-happy (e.g. when moving your glxgears window). + * Export /usr/share/xserver-xorg/serverabiver to xserver-xorg-dev, which + describes the relationship needed from a driver on xserver-xorg-core. + + -- Daniel Stone Fri, 28 Oct 2005 13:00:26 +1000 + +xorg-server (1:0.99.2+cvs.20051025-2) dapper; urgency=low + + * Add Build-Deps on libxaw7-dev, libxmu-dev, libxt-dev, libxpm-dev, + libx11-dev, libxtst-dev, and libxres-dev for DMX utils. + + -- Daniel Stone Wed, 26 Oct 2005 14:34:40 +1000 + +xorg-server (1:0.99.2+cvs.20051025-1) dapper; urgency=low + + * Update to new upstream version. + * All applicable patches have been committed upstream, bar #989 and #990. + + -- Daniel Stone Thu, 20 Oct 2005 10:26:33 +1000 + +xorg-server (1:0.99.0+cvs.20050901-1) breezy; urgency=low + + * First xorg-server release. + + -- Daniel Stone Wed, 6 Jul 2005 15:48:17 +1000 --- xorg-server-1.11.4.orig/debian/xvfb.install +++ xorg-server-1.11.4/debian/xvfb.install @@ -0,0 +1,4 @@ +main/usr/bin/Xvfb usr/bin +main/usr/bin/xvfb-run usr/bin +main/usr/share/man/man1/xvfb-run.1 usr/share/man/man1 +main/usr/share/man/man1/Xvfb.1 usr/share/man/man1 --- xorg-server-1.11.4.orig/debian/rules +++ xorg-server-1.11.4/debian/rules @@ -0,0 +1,379 @@ +#!/usr/bin/make -f +# debian/rules for the Debian xorg-server package. +# Copyright © 2004 Scott James Remnant +# Copyright © 2005 Daniel Stone +# Copyright © 2005 David Nusinow + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# Set up the $(STAMP_DIR) directory, and use it for quilt' stamp: +STAMP_DIR := stampdir +QUILT_STAMPFN := $(STAMP_DIR)/patch +$(STAMP_DIR)/stampdir: + mkdir $(STAMP_DIR) + >$@ + +include /usr/share/quilt/quilt.make + +# we don't have a good way to check for dpkg-dev version, so use presence of +# buildflags.mk as a substitute. +ifneq (,$(wildcard /usr/share/dpkg/buildflags.mk)) +vars = $(shell DEB_BUILD_MAINT_OPTIONS="hardening=+pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,-Bsymbolic" DEB_CPPFLAGS_MAINT_APPEND="-DPRE_RELEASE=0" dpkg-buildflags --export=configure) +else +CFLAGS = -Wall -g +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +CPPFLAGS = -DPRE_RELEASE=0 +vars = CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" +endif + +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) + MAKEFLAGS += -j$(NUMJOBS) +endif + +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + +# udeb is arch-dependent... +ifneq (, $(filter %-udeb, $(shell dh_listpackages -s))) + udeb = yes +endif + +# ...but let's support disabling it to speed up debug builds: +ifneq (,$(filter noudeb,$(DEB_BUILD_OPTIONS))) + udeb = + DH_INSTALL_OPTIONS = -Nxserver-xorg-core-udeb +endif + + +ifeq ($(DEB_HOST_ARCH_OS), linux) + build_xfbdev = --enable-xfbdev + selinux = --disable-xselinux + xkbrules = --with-default-xkb-rules=evdev +else + build_xfbdev = --disable-xfbdev + selinux = --disable-xselinux +endif + +ifeq ($(DEB_HOST_ARCH_OS), hurd) + dri = --disable-dri --disable-dri2 +else + dri = --enable-dri --enable-dri2 +endif + +config_backend = --disable-config-dbus +ifeq ($(DEB_HOST_ARCH_OS), linux) + config_backend += --enable-config-udev --disable-config-hal +else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) + config_backend += --disable-config-udev + config_backend_main += --enable-config-hal + config_backend_udeb += --disable-config-hal +else # hurd + config_backend += --disable-config-udev --disable-config-hal +endif + +ifneq (,$(filter nocheck, $(DEB_BUILD_OPTIONS))) + config_tests = --disable-unit-tests +else + config_tests = --enable-unit-tests +endif + +INSTALL=/usr/bin/install + +VENDOR = $(shell lsb_release -i -s) + +SOURCE_NAME := xorg-server +SOURCE_VERSION := $(shell dpkg-parsechangelog | awk -F': ' '/^Version: / {print $$2}') +BUILDER=For technical support please see http://www.ubuntu.com/support + +# disable-static is so we don't get libfoo.a for modules. now if only we could +# kill the .las. +confflags += \ + --disable-silent-rules \ + --disable-static \ + --without-dtrace \ + --disable-strict-compilation \ + --disable-debug \ + $(config_tests) \ + --with-int10=x86emu \ + --with-extra-module-dir="/usr/lib/${DEB_HOST_MULTIARCH}/xorg/extra-modules,/usr/lib/xorg/extra-modules" \ + --with-os-vendor="$(VENDOR)" \ + --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(BUILDER))" \ + --with-xkb-path=/usr/share/X11/xkb \ + --with-xkb-output=/var/lib/xkb \ + $(xkbrules) \ + --disable-devel-docs \ + --disable-install-libxf86config \ + --enable-mitshm \ + --enable-xres \ + --disable-xcsecurity \ + --disable-xcalibrate \ + --disable-tslib \ + --enable-dbe \ + --disable-xf86bigfont \ + --enable-dpms \ + $(config_backend) \ + --enable-xorg \ + --disable-xquartz \ + --disable-xwin \ + --disable-xfake \ + --disable-install-setuid \ + --enable-gestures + +confflags_main = \ + --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType,built-ins" \ + --enable-aiglx \ + --enable-glx-tls \ + --enable-registry \ + --enable-composite \ + --enable-record \ + --enable-xv \ + --enable-xvmc \ + --enable-dga \ + --enable-screensaver \ + --enable-xdmcp \ + --enable-xdm-auth-1 \ + --enable-glx \ + $(dri) \ + --enable-xinerama \ + --enable-xf86vidmode \ + --enable-xace \ + $(selinux) \ + --enable-xfree86-utils \ + --enable-dmx \ + --enable-xvfb \ + --enable-xnest \ + --enable-kdrive \ + --enable-xephyr \ + $(build_xfbdev) \ + --with-sha1=libgcrypt \ + --enable-xcsecurity \ + $(config_backend_main) \ + $(void) + +confflags_udeb = \ + --with-default-font-path="built-ins" \ + --disable-aiglx \ + --disable-glx-tls \ + --disable-registry \ + --disable-composite \ + --disable-record \ + --disable-xv \ + --disable-xvmc \ + --enable-dga \ + --disable-screensaver \ + --disable-xdmcp \ + --disable-xdm-auth-1 \ + --disable-glx \ + --disable-dri \ + --disable-dri2 \ + --disable-xinerama \ + --disable-xf86vidmode \ + --disable-xace \ + --disable-xselinux \ + --disable-xfree86-utils \ + --disable-dmx \ + --disable-xvfb \ + --disable-xnest \ + --disable-kdrive \ + --disable-xephyr \ + --disable-xfbdev \ + --with-sha1=nettle \ + $(config_backend_udeb) \ + $(void) + +$(QUILT_STAMPFN): $(STAMP_DIR)/stampdir + +$(STAMP_DIR)/autoreconf: $(STAMP_DIR)/stampdir $(QUILT_STAMPFN) + dh_testdir + autoreconf -vfi + >$@ + +$(STAMP_DIR)/configure-%: $(STAMP_DIR)/autoreconf + dh_testdir + mkdir -p build-$* + cd build-$* && \ + ../configure \ + --prefix=/usr \ + --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + --sysconfdir=/etc \ + --localstatedir=/var \ + $(confflags) \ + $(confflags_$*) \ + $(vars) + >$@ + +$(STAMP_DIR)/build-%: $(STAMP_DIR)/configure-% + dh_testdir + cd build-$* && $(MAKE) + >$@ + +$(STAMP_DIR)/tests-%: $(STAMP_DIR)/build-% + cd build-$* && $(MAKE) check + >$@ + +build: $(STAMP_DIR)/build-main +build: $(STAMP_DIR)/tests-main +ifeq ($(udeb), yes) +build: $(STAMP_DIR)/build-udeb +build: $(STAMP_DIR)/tests-udeb +endif +build-arch: build +build-indep: build + +clean: unpatch abibumpcheck + dh_testdir + + rm -rf $(STAMP_DIR) + rm -f config.cache config.log config.status + rm -f */config.cache */config.log */config.status + rm -f conftest* */conftest* + rm -rf autom4te.cache */autom4te.cache + rm -rf build-* + rm -f compile config.guess config.sub configure depcomp install-sh + rm -f ltmain.sh missing INSTALL aclocal.m4 ylwrap + rm -f include/do-not-use-config.h.in + rm -f m4/lt*.m4 m4/libtool.m4 + find -name Makefile.in -delete + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs + + cd build-main && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/main install +ifeq ($(udeb), yes) + cd build-udeb && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/udeb install +endif + + # oh, yuck. + find debian/tmp/*/usr/lib/xorg -type f -name '*.la' | \ + xargs rm -f + + # remove modules not needed in d-i + rm -rf debian/tmp/udeb/usr/lib/xorg/modules/multimedia + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxaa.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libexa.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libwfb.so + rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxf8_16bpp.so + + install -m 755 debian/local/xvfb-run debian/tmp/main/usr/bin + # Make sure Xvfb at least starts up + PATH=debian/tmp/main/usr/bin/:/bin:/usr/bin \ + debian/tmp/main/usr/bin/xvfb-run -s "-screen 0 1280x1024x24 -nolisten tcp -noreset" true + + install debian/local/xvfb-run.1 debian/tmp/main/usr/share/man/man1 +ifneq ($(DEB_HOST_ARCH_OS), linux) + install -d debian/tmp/main/usr/share/X11/xorg.conf.d + install -m 644 debian/local/10-*.conf debian/tmp/main/usr/share/X11/xorg.conf.d +ifeq ($(udeb), yes) + install -d debian/tmp/udeb/usr/share/X11/xorg.conf.d + install -m 644 debian/local/10-*.conf debian/tmp/udeb/usr/share/X11/xorg.conf.d +endif +endif + +# stub to start building deb files, used by binary-indep and binary-arch +binary-initial: + dh_testdir + dh_testroot + +# stub to build deb files, used by binary-indep and binary-arch +binary-deb: + dh_lintian + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +# Only read the first line, the rest of the file is used to determine +# when the minimal version as to be bumped: +SERVERMINVER = debian/serverminver +serverminver = $(shell head -1 $(SERVERMINVER)) + +.PHONY: abibumpcheck +abibumpcheck: debian/serverminver + @echo Checking for the need of an ABI bump + # Build an updated version of the file: + head -1 $(SERVERMINVER) > $(SERVERMINVER).new + perl -ne 'print "$$1:$$2.$$3\n" if /^#define\s+(ABI_(?:VIDEODRV|XINPUT)_VERSION)\s+SET_ABI_VERSION\(\s*(\d+)\s*,\s*(\d+)\s*\)/' hw/xfree86/common/xf86Module.h|sort >> $(SERVERMINVER).new + # Compare both files: + @if ! cmp --quiet $(SERVERMINVER) $(SERVERMINVER).new; then \ + echo "serverminver bump required, ABI changed!";\ + diff -u $(SERVERMINVER) $(SERVERMINVER).new; \ + exit 1; \ + else \ + echo "ABI unchanged"; \ + rm -f $(SERVERMINVER).new; \ + fi + +# Build architecture-dependent files here. +binary-arch: build install + $(MAKE) -f debian/rules DH_OPTIONS=-s binary-initial + + dh_installdocs -s + dh_installchangelogs -s + dh_install $(DH_INSTALL_OPTIONS) -s --sourcedir=debian/tmp --list-missing + $(INSTALL) -d $(CURDIR)/debian/xserver-xorg-dev/usr/share/xserver-xorg + # Extract only the major ABI version: + abi_videodrv=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_videodrv xorg-server|cut -d . -f 1`; \ + echo videoabi=xorg-video-abi-$$abi_videodrv > debian/xserver-xorg-core.substvars && \ + echo "xorg-video-abi-$$abi_videodrv, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/videodrvdep + abi_xinput=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_xinput xorg-server|cut -d . -f 1`; \ + echo inputabi=xorg-input-abi-$$abi_xinput >> debian/xserver-xorg-core.substvars && \ + echo "xorg-input-abi-$$abi_xinput, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/xinputdep + + # The udeb uses the same substvars: + cp debian/xserver-xorg-core.substvars debian/xserver-xorg-core-udeb.substvars + + $(INSTALL) -m 755 -d debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core + $(INSTALL) -m 755 debian/xserver-xorg-core.bug.script debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core/script +ifeq ($(DEB_HOST_ARCH_OS), linux) + install -d debian/xserver-xorg-core/lib/udev/rules.d + install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core/lib/udev/rules.d +ifeq ($(udeb), yes) + install -d debian/xserver-xorg-core-udeb/lib/udev/rules.d + install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core-udeb/lib/udev/rules.d +endif +endif + dh_installdebconf -s + dh_installman -s + dh_link -s + dh_strip -pxserver-xorg-core --dbg-package=xserver-xorg-core-dbg + dh_strip -s -Nxserver-xorg-core -Nxserver-xorg-core-dbg + $(MAKE) -f debian/rules DH_OPTIONS=-s binary-deb + + +# Build architecture-independent files here +binary-indep: build install check + $(MAKE) -f debian/rules DH_OPTIONS=-i binary-initial + dh_install -i --sourcedir=debian/tmp + dh_installdocs -i + dh_installchangelogs -i ChangeLog + + $(MAKE) -f debian/rules DH_OPTIONS=-i binary-deb + +check: + dh_testdir + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- xorg-server-1.11.4.orig/debian/patches/191-Xorg-add-an-extra-module-path.patch +++ xorg-server-1.11.4/debian/patches/191-Xorg-add-an-extra-module-path.patch @@ -0,0 +1,99 @@ +From 416a66de9d428a11776331926c23a61188b8fc16 Mon Sep 17 00:00:00 2001 +From: Ander Conselvan de Oliveira +Date: Thu, 12 Mar 2009 09:45:57 -0300 +Subject: [PATCH 908/911] Xorg: add an extra module path + +If the extra module path is not an empty string (the default value), +module path will be searched first in the extra module path and then in +the default module path. This should simplify the alternatives system +used on Mandriva's fglrx package. +--- +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac 2011-08-24 12:56:49.705650623 +0300 ++++ xorg-server/configure.ac 2011-08-24 12:57:34.655651265 +0300 +@@ -489,6 +489,10 @@ + [Directory where modules are installed (default: $libdir/xorg/modules)]), + [ moduledir="$withval" ], + [ moduledir="${libdir}/xorg/modules" ]) ++AC_ARG_WITH(extra-module-dir,AS_HELP_STRING([--with-extra-module-dir=DIR], ++ [Extra module directory to search for modules before the default one (default: empty)]), ++ [ extra_moduledir="$withval" ], ++ [ extra_moduledir="" ]) + AC_ARG_WITH(log-dir, AS_HELP_STRING([--with-log-dir=DIR], + [Directory where log files are kept (default: $localstatedir/log)]), + [ logdir="$withval" ], +@@ -1815,6 +1819,7 @@ + AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file]) + AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory]) + AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path]) ++ AC_DEFINE_DIR(EXTRA_MODULE_PATH, extra_moduledir, [Extra module search path, searched before the default one]) + AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path]) + AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location]) + AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support]) +Index: xorg-server/hw/xfree86/common/xf86Config.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Config.c 2011-08-24 12:52:44.925647137 +0300 ++++ xorg-server/hw/xfree86/common/xf86Config.c 2011-08-24 12:56:49.715650621 +0300 +@@ -628,11 +628,21 @@ + + /* ModulePath */ + +- if (fileconf) { +- if (xf86ModPathFrom != X_CMDLINE && fileconf->file_modulepath) { ++ if (xf86ModPathFrom != X_CMDLINE) { ++ if (fileconf && fileconf->file_modulepath) { + xf86ModulePath = fileconf->file_modulepath; + xf86ModPathFrom = X_CONFIG; + } ++ else if (strcmp(xf86ExtraModulePath, "") != 0) { ++ char *newpath = malloc(strlen(xf86ExtraModulePath) ++ + strlen(xf86ModulePath) ++ + 2); ++ strcpy(newpath, xf86ExtraModulePath); ++ strcat(newpath, ","); ++ strcat(newpath, xf86ModulePath); ++ ++ xf86ModulePath = newpath; ++ } + } + + xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath); +Index: xorg-server/hw/xfree86/common/xf86Globals.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Globals.c 2011-08-24 12:52:44.935647136 +0300 ++++ xorg-server/hw/xfree86/common/xf86Globals.c 2011-08-24 12:56:49.715650621 +0300 +@@ -139,6 +139,7 @@ + const char *xf86ConfigFile = NULL; + const char *xf86ConfigDir = NULL; + const char *xf86ModulePath = DEFAULT_MODULE_PATH; ++const char *xf86ExtraModulePath = EXTRA_MODULE_PATH; + MessageType xf86ModPathFrom = X_DEFAULT; + const char *xf86LogFile = DEFAULT_LOGPREFIX; + MessageType xf86LogFileFrom = X_DEFAULT; +Index: xorg-server/hw/xfree86/common/xf86Priv.h +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Priv.h 2011-08-24 12:52:44.945647134 +0300 ++++ xorg-server/hw/xfree86/common/xf86Priv.h 2011-08-24 12:56:49.715650621 +0300 +@@ -75,6 +75,7 @@ + + extern _X_EXPORT xf86InfoRec xf86Info; + extern _X_EXPORT const char *xf86ModulePath; ++extern _X_EXPORT const char *xf86ExtraModulePath; + extern _X_EXPORT MessageType xf86ModPathFrom; + extern _X_EXPORT const char *xf86LogFile; + extern _X_EXPORT MessageType xf86LogFileFrom; +Index: xorg-server/include/xorg-config.h.in +=================================================================== +--- xorg-server.orig/include/xorg-config.h.in 2011-08-24 12:52:44.965647137 +0300 ++++ xorg-server/include/xorg-config.h.in 2011-08-24 12:56:49.715650621 +0300 +@@ -42,6 +42,9 @@ + /* Path to loadable modules. */ + #undef DEFAULT_MODULE_PATH + ++/* Path to extra loadable modules. */ ++#undef EXTRA_MODULE_PATH ++ + /* Path to installed libraries. */ + #undef DEFAULT_LIBRARY_PATH + --- xorg-server-1.11.4.orig/debian/patches/214_glx_dri_searchdirs.patch +++ xorg-server-1.11.4/debian/patches/214_glx_dri_searchdirs.patch @@ -0,0 +1,240 @@ +Index: xorg-server/glx/glxdricommon.h +=================================================================== +--- xorg-server.orig/glx/glxdricommon.h 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/glx/glxdricommon.h 2011-09-11 18:41:43.381346390 -0500 +@@ -39,7 +39,7 @@ + extern const __DRIsystemTimeExtension systemTimeExtension; + + void * +-glxProbeDriver(const char *name, ++glxProbeDriver(const char *name, void **cookie, + void **coreExt, const char *coreName, int coreVersion, + void **renderExt, const char *renderName, int renderVersion); + +Index: xorg-server/glx/glxdriswrast.c +=================================================================== +--- xorg-server.orig/glx/glxdriswrast.c 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/glx/glxdriswrast.c 2011-09-11 18:41:43.381346390 -0500 +@@ -427,6 +427,7 @@ + const char *driverName = "swrast"; + __GLXDRIscreen *screen; + const __DRIconfig **driConfigs; ++ void *cookie = NULL; + + screen = calloc(1, sizeof *screen); + if (screen == NULL) +@@ -438,7 +439,7 @@ + screen->base.swapInterval = NULL; + screen->base.pScreen = pScreen; + +- screen->driver = glxProbeDriver(driverName, ++ screen->driver = glxProbeDriver(driverName, &cookie, + (void **)&screen->core, + __DRI_CORE, __DRI_CORE_VERSION, + (void **)&screen->swrast, +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/configure.ac 2011-09-11 18:41:43.381346390 -0500 +@@ -1260,7 +1260,12 @@ + AC_DEFINE_DIR(SERVER_MISC_CONFIG_PATH, SERVERCONFIG, [Server miscellaneous config path]) + AC_DEFINE_DIR(BASE_FONT_PATH, FONTROOTDIR, [Default base font path]) + dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri` +-AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path]) ++drisearchdirs=`$PKG_CONFIG --variable=drisearchdirs dri` ++if test -n "$drisearchdirs" ; then ++ AC_DEFINE_DIR(DRI_DRIVER_PATH, drisearchdirs, [Default DRI search dirs]) ++else ++ AC_DEFINE_DIR(DRI_DRIVER_PATH, dridriverdir, [Default DRI driver path]) ++fi + AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_NAME"], [Vendor name]) + AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_NAME_SHORT"], [Short vendor name]) + AC_DEFINE_UNQUOTED(XORG_DATE, ["$RELEASE_DATE"], [Vendor release]) +Index: xorg-server/glx/glxdricommon.c +=================================================================== +--- xorg-server.orig/glx/glxdricommon.c 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/glx/glxdricommon.c 2011-09-11 18:46:45.296354364 -0500 +@@ -209,7 +209,7 @@ + static const char dri_driver_path[] = DRI_DRIVER_PATH; + + void * +-glxProbeDriver(const char *driverName, ++glxProbeDriver(const char *driverName, void **cookie, + void **coreExt, const char *coreName, int coreVersion, + void **renderExt, const char *renderName, int renderVersion) + { +@@ -218,49 +218,60 @@ + char filename[PATH_MAX]; + const __DRIextension **extensions; + int from = X_ERROR; +- +- snprintf(filename, sizeof filename, "%s/%s_dri.so", +- dri_driver_path, driverName); +- +- driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); +- if (driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", +- filename, dlerror()); +- goto cleanup_failure; +- } +- +- extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS); +- if (extensions == NULL) { +- LogMessage(X_ERROR, "AIGLX error: %s exports no extensions (%s)\n", +- driverName, dlerror()); +- goto cleanup_failure; +- } +- +- for (i = 0; extensions[i]; i++) { +- if (strcmp(extensions[i]->name, coreName) == 0 && +- extensions[i]->version >= coreVersion) { +- *coreExt = (void *)extensions[i]; ++ char *driDriverPath; ++ const char *pathStart = *cookie ? (const char*)*cookie : dri_driver_path; ++ const char *pathEnd = strchr(pathStart, ':'); ++ ++ for (; *pathStart; pathEnd = strchr(pathStart, ':')) { ++ driDriverPath = strndup(pathStart, ++ pathEnd ? pathEnd - pathStart : sizeof filename); ++ snprintf(filename, sizeof filename, "%s/%s_dri.so", ++ driDriverPath, driverName); ++ free(driDriverPath); ++ pathStart = pathEnd ? pathEnd + 1 : pathStart + strlen(pathStart); ++ *cookie = (void *)pathStart; ++ ++ LogMessage(X_INFO, "AIGLX: Trying DRI driver %s\n", filename); ++ ++ driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); ++ if (driver == NULL) { ++ LogMessage(X_INFO, "AIGLX: dlopen of %s failed (%s)\n", ++ filename, dlerror()); ++ continue; + } + +- if (strcmp(extensions[i]->name, renderName) == 0 && +- extensions[i]->version >= renderVersion) { +- *renderExt = (void *)extensions[i]; ++ extensions = dlsym(driver, __DRI_DRIVER_EXTENSIONS); ++ if (extensions == NULL) { ++ LogMessage(X_INFO, "AIGLX: %s exports no extensions (%s)\n", ++ driverName, dlerror()); ++ dlclose(driver); ++ continue; ++ } ++ ++ for (i = 0; extensions[i]; i++) { ++ if (strcmp(extensions[i]->name, coreName) == 0 && ++ extensions[i]->version >= coreVersion) { ++ *coreExt = (void *)extensions[i]; ++ } ++ ++ if (strcmp(extensions[i]->name, renderName) == 0 && ++ extensions[i]->version >= renderVersion) { ++ *renderExt = (void *)extensions[i]; ++ } + } +- } + +- if (*coreExt == NULL || *renderExt == NULL) { +- if (!strcmp(driverName, "nouveau")) +- from = X_INFO; +- LogMessage(from, +- "AIGLX error: %s does not export required DRI extension\n", +- driverName); +- goto cleanup_failure; ++ if (*coreExt == NULL || *renderExt == NULL) { ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, ++ "AIGLX: %s does not export required DRI extension\n", ++ driverName); ++ *coreExt = *renderExt = NULL; ++ dlclose(driver); ++ continue; ++ } ++ return driver; + } +- return driver; +- +-cleanup_failure: +- if (driver) +- dlclose(driver); + *coreExt = *renderExt = NULL; + return NULL; + } +Index: xorg-server/glx/glxdri.c +=================================================================== +--- xorg-server.orig/glx/glxdri.c 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/glx/glxdri.c 2011-09-11 18:41:43.381346390 -0500 +@@ -968,6 +968,7 @@ + size_t buffer_size; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + const __DRIconfig **driConfigs; ++ void *cookie = NULL; + + if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") || + !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || +@@ -1042,7 +1043,7 @@ + goto handle_error; + } + +- screen->driver = glxProbeDriver(driverName, ++ screen->driver = glxProbeDriver(driverName, &cookie, + (void **)&screen->core, + __DRI_CORE, __DRI_CORE_VERSION, + (void **)&screen->legacy, +Index: xorg-server/glx/glxdri2.c +=================================================================== +--- xorg-server.orig/glx/glxdri2.c 2011-09-11 18:41:08.000000000 -0500 ++++ xorg-server/glx/glxdri2.c 2011-09-11 18:41:43.381346390 -0500 +@@ -689,6 +689,7 @@ + size_t buffer_size; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + const __DRIconfig **driConfigs; ++ void *cookie = NULL; + + screen = calloc(1, sizeof *screen); + if (screen == NULL) +@@ -710,24 +711,24 @@ + + __glXInitExtensionEnableBits(screen->glx_enable_bits); + +- screen->driver = glxProbeDriver(driverName, (void **)&screen->core, __DRI_CORE, 1, +- (void **)&screen->dri2, __DRI_DRI2, 1); +- if (screen->driver == NULL) { +- goto handle_error; +- } +- +- screen->driScreen = +- (*screen->dri2->createNewScreen)(pScreen->myNum, +- screen->fd, +- loader_extensions, +- &driConfigs, +- screen); +- +- if (screen->driScreen == NULL) { +- LogMessage(X_ERROR, +- "AIGLX error: Calling driver entry point failed\n"); +- goto handle_error; +- } ++ do { ++ screen->driver = glxProbeDriver(driverName, &cookie, ++ (void **)&screen->core, __DRI_CORE, 1, ++ (void **)&screen->dri2, __DRI_DRI2, 1); ++ if (screen->driver == NULL) ++ goto handle_error; ++ ++ screen->driScreen = ++ (*screen->dri2->createNewScreen)(pScreen->myNum, ++ screen->fd, ++ loader_extensions, ++ &driConfigs, ++ screen); ++ if (screen->driScreen == NULL) { ++ LogMessage(X_INFO, ++ "AIGLX: Calling driver entry point failed\n"); ++ } ++ } while (screen->driScreen == NULL); + + initializeExtensions(screen); + --- xorg-server-1.11.4.orig/debian/patches/208_switch_on_release.diff +++ xorg-server-1.11.4/debian/patches/208_switch_on_release.diff @@ -0,0 +1,109 @@ +Index: xorg-server/xkb/xkbActions.c +=================================================================== +--- xorg-server.orig/xkb/xkbActions.c 2011-12-14 15:15:20.000000000 -0800 ++++ xorg-server/xkb/xkbActions.c 2011-12-14 15:26:43.372680253 -0800 +@@ -328,24 +328,83 @@ _XkbFilterLatchState( XkbSrvInfoPtr xkbi + return 1; + } + ++static int xkbSwitchGroupOnRelease(void) ++{ ++ /* TODO: user configuring */ ++ return TRUE; ++} ++ ++static void xkbUpdateLockedGroup(XkbSrvInfoPtr xkbi, XkbAction* pAction) ++{ ++ XkbGroupAction ga = pAction->group; ++ if (ga.flags&XkbSA_GroupAbsolute) ++ xkbi->state.locked_group= XkbSAGroup(&ga); ++ else xkbi->state.locked_group+= XkbSAGroup(&ga); ++} ++ ++static XkbFilterPtr _XkbNextFreeFilter(XkbSrvInfoPtr xkbi); ++ + static int +-_XkbFilterLockState( XkbSrvInfoPtr xkbi, ++_XkbFilterLockGroup( XkbSrvInfoPtr xkbi, + XkbFilterPtr filter, + unsigned keycode, + XkbAction * pAction) + { +- if (pAction&&(pAction->type==XkbSA_LockGroup)) { +- if (pAction->group.flags&XkbSA_GroupAbsolute) +- xkbi->state.locked_group= XkbSAGroup(&pAction->group); +- else xkbi->state.locked_group+= XkbSAGroup(&pAction->group); +- return 1; ++ int sendEvent = 1; ++ ++ if (!xkbSwitchGroupOnRelease()) { ++ xkbUpdateLockedGroup(xkbi, pAction); ++ return sendEvent; ++ } ++ ++ /* Delay switch till button release */ ++ if (filter->keycode==0) { /* initial press */ ++ filter->keycode = keycode; ++ filter->active = 1; ++ filter->filterOthers = 0; /* for what? */ ++ filter->filter = _XkbFilterLockGroup; ++ ++ /* filter->priv = 0; */ ++ filter->upAction = *pAction; ++ ++ /* Ok, now we need to simulate the action which would go if this action didn't block it. ++ XkbSA_SetMods is the one: it is to set modifier' flag up. */ ++ { ++ XkbStateRec fake_state = xkbi->state; ++ XkbAction act; ++ ++ fake_state.mods = 0; ++ act = XkbGetKeyAction(xkbi, &fake_state, keycode); ++ ++ /* KLUDGE: XkbSA_SetMods only? */ ++ if (act.type == XkbSA_SetMods) { ++ XkbFilterPtr filter = _XkbNextFreeFilter(xkbi); ++ sendEvent = _XkbFilterSetState(xkbi,filter,keycode,&act); ++ } ++ } ++ } ++ else { ++ /* do nothing if some button else is pressed */ ++ if (!pAction) ++ xkbUpdateLockedGroup(xkbi, &filter->upAction); ++ filter->active = 0; + } ++ ++ return sendEvent; ++} ++ ++static int ++_XkbFilterLockMods( XkbSrvInfoPtr xkbi, ++ XkbFilterPtr filter, ++ unsigned keycode, ++ XkbAction * pAction) ++{ + if (filter->keycode==0) { /* initial press */ + filter->keycode = keycode; + filter->active = 1; + filter->filterOthers = 0; + filter->priv = xkbi->state.locked_mods&pAction->mods.mask; +- filter->filter = _XkbFilterLockState; ++ filter->filter = _XkbFilterLockMods; + filter->upAction = *pAction; + if (!(filter->upAction.mods.flags&XkbSA_LockNoLock)) + xkbi->state.locked_mods|= pAction->mods.mask; +@@ -1118,9 +1177,12 @@ xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEI + sendEvent=_XkbFilterLatchState(xkbi,filter,key,&act); + break; + case XkbSA_LockMods: ++ filter = _XkbNextFreeFilter(xkbi); ++ sendEvent=_XkbFilterLockMods(xkbi,filter,key,&act); ++ break; + case XkbSA_LockGroup: + filter = _XkbNextFreeFilter(xkbi); +- sendEvent=_XkbFilterLockState(xkbi,filter,key,&act); ++ sendEvent=_XkbFilterLockGroup(xkbi,filter,key,&act); + break; + case XkbSA_ISOLock: + filter = _XkbNextFreeFilter(xkbi); --- xorg-server-1.11.4.orig/debian/patches/500_pointer_barrier_thresholds.diff +++ xorg-server-1.11.4/debian/patches/500_pointer_barrier_thresholds.diff @@ -0,0 +1,1694 @@ +Index: xorg-server/include/protocol-versions.h +=================================================================== +--- xorg-server.orig/include/protocol-versions.h 2012-03-07 22:24:45.540697115 +1100 ++++ xorg-server/include/protocol-versions.h 2012-03-08 07:40:35.472111389 +1100 +@@ -122,7 +122,7 @@ + #define SERVER_XF86VIDMODE_MINOR_VERSION 2 + + /* Fixes */ +-#define SERVER_XFIXES_MAJOR_VERSION 5 ++#define SERVER_XFIXES_MAJOR_VERSION 6 + #define SERVER_XFIXES_MINOR_VERSION 0 + + /* X Input */ +Index: xorg-server/xfixes/cursor.c +=================================================================== +--- xorg-server.orig/xfixes/cursor.c 2012-03-07 22:24:45.580697117 +1100 ++++ xorg-server/xfixes/cursor.c 2012-03-08 11:00:53.155469738 +1100 +@@ -61,6 +61,7 @@ + static RESTYPE CursorHideCountType; + static RESTYPE CursorWindowType; + RESTYPE PointerBarrierType; ++static RESTYPE PointerBarrierClientType; + static CursorPtr CursorCurrent[MAXDEVICES]; + + static DevPrivateKeyRec CursorScreenPrivateKeyRec; +@@ -119,6 +120,11 @@ + struct list entry; + }; + ++/** ++ * Pick up unclamped (x,y) coordinates from dix/getevents ++ */ ++extern int unclamped_prex, unclamped_prey; ++ + /* + * Wrap DisplayCursor to catch cursor change events + */ +@@ -129,6 +135,7 @@ + ConstrainCursorHarderProcPtr ConstrainCursorHarder; + CursorHideCountPtr pCursorHideCounts; + struct list barriers; ++ struct list barrierClients; + } CursorScreenRec, *CursorScreenPtr; + + #define GetCursorScreen(s) ((CursorScreenPtr)dixLookupPrivate(&(s)->devPrivates, CursorScreenPrivateKey)) +@@ -1118,7 +1125,8 @@ + + /* Algorithm below doesn't handle edge cases well, hence the extra + * checks. */ +- if (barrier_is_vertical(barrier)) { ++ if (barrier_is_vertical(barrier) && ++ (dir & (BarrierPositiveX | BarrierNegativeX))) { + /* handle immediate barrier adjacency, moving away */ + if (dir & BarrierPositiveX && x1 == barrier->x1) + return FALSE; +@@ -1129,7 +1137,8 @@ + *distance = 0; + return TRUE; + } +- } else { ++ } else if (barrier_is_horizontal(barrier) && ++ (dir & (BarrierPositiveY | BarrierNegativeY))){ + /* handle immediate barrier adjacency, moving away */ + if (dir & BarrierPositiveY && y1 == barrier->y1) + return FALSE; +@@ -1231,6 +1240,127 @@ + } + } + ++/* ++ * ConstrainCursorHarder is called from the SIGIO context. ++ * This means we cannot safely send a client event from anything in ++ * CursorConstrainCursorHarder's callgraph. ++ * ++ * Allocate a set of WorkQueue items to use. ++ */ ++ ++struct BarrierEventStore { ++ WorkQueueRec wq_item; ++ xXFixesBarrierNotifyEvent ev; ++ Bool in_use; ++}; ++ ++/* Let's guess that 100 events is enough of a buffer. */ ++#define BARRIER_EVENT_QUEUE_SIZE 100 ++struct BarrierEventStore barrierEventQueue[BARRIER_EVENT_QUEUE_SIZE]; ++ ++static void ++CursorWorkQueueDestroyProc (WorkQueuePtr this) ++{ ++ struct BarrierEventStore *store; ++ store = container_of (this, struct BarrierEventStore, wq_item); ++ ++ store->in_use = FALSE; ++} ++ ++static Bool ++CursorSendBarrierEvent (ClientPtr client, pointer eventStore) ++{ ++ struct BarrierEventStore *store = (struct BarrierEventStore *)eventStore; ++ WriteEventsToClient (client, 1, (xEvent *)&store->ev); ++ ++ return TRUE; ++} ++ ++static struct BarrierEventStore * ++CursorFindFreeEventStore (void) ++{ ++ for (int i = 0; i < BARRIER_EVENT_QUEUE_SIZE; ++i) { ++ if (!barrierEventQueue[i].in_use) { ++ return &barrierEventQueue[i]; ++ } ++ } ++ return NULL; ++} ++ ++static void ++QueueBarrierEvent(CursorScreenPtr cs, struct PointerBarrier *barrier, ++ int x, int y, int velocity, Bool threshold_exceeded) ++{ ++ PointerBarrierEventClientPtr client; ++ struct BarrierEventStore *store; ++ list_for_each_entry(client, &cs->barrierClients, entry) { ++ store = CursorFindFreeEventStore (); ++ if (store == NULL) { ++ ErrorF ("[xfixes] Barrier event queue full. Dropping further events\n"); ++ return; ++ } ++ ++ store->in_use = TRUE; ++ ++ store->ev.type = XFixesEventBase + XFixesBarrierNotify; ++ store->ev.subtype = threshold_exceeded ? XFixesBarrierThresholdExceededNotify : ++ XFixesBarrierHitNotify; ++ store->ev.event_id = barrier->barrierEventID; ++ store->ev.barrier = barrier->barrier; ++ store->ev.x = x; ++ store->ev.y = y; ++ store->ev.velocity = velocity; ++ store->ev.timestamp = currentTime.milliseconds; ++ ++ if (client->client->swapped) { ++ int n; ++ ++ swapl(&store->ev.event_id, n); ++ swapl(&store->ev.barrier, n); ++ swaps(&store->ev.x, n); ++ swaps(&store->ev.y, n); ++ swapl(&store->ev.velocity, n); ++ swapl(&store->ev.timestamp, n); ++ } ++ ++ store->wq_item.function = CursorSendBarrierEvent; ++ store->wq_item.client = client->client; ++ store->wq_item.closure = store; ++ store->wq_item.destroyProc = CursorWorkQueueDestroyProc; ++ ++ QueueWorkItem (&store->wq_item); ++ } ++} ++ ++static void ++barrier_calculate_velocity_components (int x1, int y1, int x2, int y2, ++ int *vel_x, int *vel_y) ++{ ++ static CARD32 last_timestamp = 0; ++ CARD32 timestamp = GetTimeInMillis(); ++ int dx, dy; ++ int dt = timestamp - last_timestamp; ++ ++ if (last_timestamp == 0) { ++ /* Not much we can do for the first event */ ++ *vel_x = 0; ++ *vel_y = 0; ++ last_timestamp = timestamp; ++ return; ++ } ++ ++ /* Lets not divide by zero if we can avoid it */ ++ dt = dt > 0 ? dt : 1; ++ ++ dx = x2 - x1; ++ dy = y2 - y1; ++ ++ *vel_x = abs(dx) * 1000.0 / dt; ++ *vel_y = abs(dy) * 1000.0 / dt; ++ ++ last_timestamp = timestamp; ++} ++ + static void + CursorConstrainCursorHarder(DeviceIntPtr dev, ScreenPtr screen, int mode, int *x, int *y) + { +@@ -1238,12 +1368,23 @@ + + if (!list_is_empty(&cs->barriers) && !IsFloating(dev) && mode == Relative) { + int ox, oy; ++ int vel_x, vel_y; + int dir; + struct PointerBarrier *nearest = NULL; ++ PointerBarrierClientPtr c; + + /* where are we coming from */ + miPointerGetPosition(dev, &ox, &oy); + ++ /* Use the unclamped values, if available. If not, *x, *y ++ * will have to do. ++ * NOTE: We should never get here with unclamped values unset. ++ */ ++ if (unclamped_prex == -1 || unclamped_prey == -1) { ++ unclamped_prex = *x; ++ unclamped_prey = *y; ++ } ++ + /* How this works: + * Given the origin and the movement vector, get the nearest barrier + * to the origin that is blocking the movement. +@@ -1251,11 +1392,27 @@ + * Then, check from the clamped intersection to the original + * destination, again finding the nearest barrier and clamping. + */ +- dir = barrier_get_direction(ox, oy, *x, *y); ++ dir = barrier_get_direction(ox, oy, unclamped_prex, unclamped_prey); ++ barrier_calculate_velocity_components(ox, oy, unclamped_prex, unclamped_prey, &vel_x, &vel_y); + +- nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ nearest = barrier_find_nearest(cs, dir, ox, oy, unclamped_prex, unclamped_prey); + if (nearest) { +- barrier_clamp_to_barrier(nearest, dir, x, y); ++ int velocity = barrier_is_vertical(nearest) ? vel_x : vel_y; ++ Bool threshold_exceeded = (nearest->velocity != 0) && ++ (velocity > nearest->velocity); ++ ++ if (!nearest->lastHit) { ++ /* This is the start of a new barrier event */ ++ nearest->barrierEventID++; ++ } ++ ++ if ((!threshold_exceeded || nearest->lastHit) && ++ (nearest->barrierEventID != nearest->releaseEventID)) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ nearest->hit = TRUE; ++ } ++ ++ QueueBarrierEvent(cs, nearest, *x, *y, velocity, threshold_exceeded); + + if (barrier_is_vertical(nearest)) { + dir &= ~(BarrierNegativeX | BarrierPositiveX); +@@ -1265,11 +1422,31 @@ + oy = *y; + } + +- nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ nearest = barrier_find_nearest(cs, dir, ox, oy, unclamped_prex, unclamped_prey); + if (nearest) { +- barrier_clamp_to_barrier(nearest, dir, x, y); ++ velocity = barrier_is_vertical(nearest) ? vel_x : vel_y; ++ threshold_exceeded = (nearest->velocity != 0) && ++ (velocity > nearest->velocity); ++ ++ if (!nearest->lastHit) { ++ /* This is the start of a new barrier event */ ++ nearest->barrierEventID++; ++ } ++ ++ if ((!threshold_exceeded || nearest->lastHit) && ++ (nearest->barrierEventID != nearest->releaseEventID)) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ nearest->hit = TRUE; ++ } ++ ++ QueueBarrierEvent(cs, nearest, *x, *y, velocity, threshold_exceeded); + } + } ++ ++ list_for_each_entry(c, &cs->barriers, entry) { ++ c->barrier.lastHit = c->barrier.hit; ++ c->barrier.hit = FALSE; ++ } + } + + if (cs->ConstrainCursorHarder) { +@@ -1284,15 +1461,45 @@ + xXFixesCreatePointerBarrierReq *stuff) + { + CursorScreenPtr cs = GetCursorScreen(screen); +- struct PointerBarrierClient *ret = malloc(sizeof(*ret)); ++ struct PointerBarrierClient *ret = calloc(sizeof(*ret), 1); + + if (ret) { + ret->screen = screen; ++ ret->barrier.barrier = stuff->barrier; + ret->barrier.x1 = min(stuff->x1, stuff->x2); + ret->barrier.x2 = max(stuff->x1, stuff->x2); + ret->barrier.y1 = min(stuff->y1, stuff->y2); + ret->barrier.y2 = max(stuff->y1, stuff->y2); + ret->barrier.directions = stuff->directions & 0x0f; ++ ret->barrier.velocity = 0; ++ ret->barrier.barrierEventID = 0; ++ if (barrier_is_horizontal(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveX | BarrierNegativeX); ++ if (barrier_is_vertical(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveY | BarrierNegativeY); ++ list_add(&ret->entry, &cs->barriers); ++ } ++ ++ return ret; ++} ++ ++static struct PointerBarrierClient * ++CreatePointerBarrierVelocityClient(ScreenPtr screen, ClientPtr client, ++ xXFixesCreatePointerBarrierVelocityReq *stuff) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ struct PointerBarrierClient *ret = calloc(sizeof(*ret), 1); ++ ++ if (ret) { ++ ret->screen = screen; ++ ret->barrier.barrier = stuff->barrier; ++ ret->barrier.x1 = min(stuff->x1, stuff->x2); ++ ret->barrier.x2 = max(stuff->x1, stuff->x2); ++ ret->barrier.y1 = min(stuff->y1, stuff->y2); ++ ret->barrier.y2 = max(stuff->y1, stuff->y2); ++ ret->barrier.directions = stuff->directions & 0x0f; ++ ret->barrier.velocity = stuff->velocity; ++ ret->barrier.barrierEventID = 0; + if (barrier_is_horizontal(&ret->barrier)) + ret->barrier.directions &= ~(BarrierPositiveX | BarrierNegativeX); + if (barrier_is_vertical(&ret->barrier)) +@@ -1365,6 +1572,69 @@ + return ProcXFixesVector[stuff->xfixesReqType](client); + } + ++int ++ProcXFixesCreatePointerBarrierVelocity (ClientPtr client) ++{ ++ int err; ++ WindowPtr pWin; ++ struct PointerBarrierClient *barrier; ++ struct PointerBarrier b; ++ REQUEST (xXFixesCreatePointerBarrierVelocityReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierVelocityReq); ++ LEGAL_NEW_RESOURCE(stuff->barrier, client); ++ ++ err = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); ++ if (err != Success) { ++ client->errorValue = stuff->window; ++ return err; ++ } ++ ++ /* This sure does need fixing. */ ++ if (stuff->num_devices) ++ return BadImplementation; ++ ++ b.x1 = stuff->x1; ++ b.x2 = stuff->x2; ++ b.y1 = stuff->y1; ++ b.y2 = stuff->y2; ++ ++ if (!barrier_is_horizontal(&b) && !barrier_is_vertical(&b)) ++ return BadValue; ++ ++ /* no 0-sized barriers */ ++ if (barrier_is_horizontal(&b) && barrier_is_vertical(&b)) ++ return BadValue; ++ ++ if (!(barrier = CreatePointerBarrierVelocityClient(pWin->drawable.pScreen, ++ client, stuff))) ++ return BadAlloc; ++ ++ if (!AddResource(stuff->barrier, PointerBarrierType, &barrier->barrier)) ++ return BadAlloc; ++ ++ return Success; ++} ++ ++int ++SProcXFixesCreatePointerBarrierVelocity (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesCreatePointerBarrierVelocityReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierReq); ++ swapl(&stuff->barrier, n); ++ swapl(&stuff->window, n); ++ swaps(&stuff->x1, n); ++ swaps(&stuff->y1, n); ++ swaps(&stuff->x2, n); ++ swaps(&stuff->y2, n); ++ swapl(&stuff->directions, n); ++ swapl(&stuff->velocity, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ + static int + CursorFreeBarrier(void *data, XID id) + { +@@ -1421,6 +1691,118 @@ + return ProcXFixesVector[stuff->xfixesReqType](client); + } + ++static int ++CursorFreeBarrierClient(void *data, XID id) ++{ ++ PointerBarrierEventClientPtr client = data, c; ++ ScreenPtr screen = client->screen; ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ ++ /* find and unlink from the screen private */ ++ list_for_each_entry(c, &cs->barrierClients, entry) { ++ if (c == client) { ++ list_del(&c->entry); ++ break; ++ } ++ } ++ ++ free(client); ++ return Success; ++} ++ ++static struct PointerBarrierEventClient * ++CreatePointerBarrierEventClient(ScreenPtr screen, ClientPtr client, ++ xXFixesSelectBarrierInputReq *stuff) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ struct PointerBarrierEventClient *ret = malloc(sizeof(*ret)); ++ ++ if (ret) { ++ ret->screen = screen; ++ ret->client = client; ++ ret->eventMask = stuff->eventMask; ++ ret->window = stuff->window; ++ ret->resource = FakeClientID (client->index); ++ list_add(&ret->entry, &cs->barrierClients); ++ } ++ ++ return ret; ++} ++ ++int ++ProcXFixesSelectBarrierInput (ClientPtr client) ++{ ++ int err; ++ WindowPtr pWin; ++ struct PointerBarrierEventClient *eventClient; ++ REQUEST (xXFixesSelectBarrierInputReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesSelectBarrierInputReq); ++ ++ err = dixLookupWindow(&pWin , stuff->window, client, DixReadAccess); ++ if (err != Success) { ++ client->errorValue = stuff->window; ++ return err; ++ } ++ ++ if (!(eventClient = CreatePointerBarrierEventClient(pWin->drawable.pScreen, ++ client, ++ stuff))) ++ return BadAlloc; ++ ++ if (!AddResource (eventClient->resource, PointerBarrierClientType, eventClient)) ++ return BadAlloc; ++ ++ return Success; ++} ++ ++int ++SProcXFixesSelectBarrierInput (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesSelectBarrierInputReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesSelectBarrierInputReq); ++ swapl(&stuff->window, n); ++ swapl(&stuff->eventMask, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ ++int ++ProcXFixesBarrierReleasePointer (ClientPtr client) ++{ ++ int err; ++ struct PointerBarrier *barrier; ++ REQUEST (xXFixesBarrierReleasePointerReq); ++ REQUEST_SIZE_MATCH(xXFixesBarrierReleasePointerReq); ++ ++ err = dixLookupResourceByType((void **)&barrier, stuff->barrier, ++ PointerBarrierType, client, ++ DixReadAccess); ++ if (err != Success) { ++ client->errorValue = stuff->barrier; ++ return err; ++ } ++ ++ barrier->releaseEventID = stuff->event_id; ++ ++ return Success; ++} ++ ++int ++SProcXFixesBarrierReleasePointer (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesBarrierReleasePointerReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesBarrierReleasePointerReq); ++ swapl(&stuff->barrier, n); ++ swapl(&stuff->event_id, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ + Bool + XFixesCursorInit (void) + { +@@ -1441,6 +1823,7 @@ + if (!cs) + return FALSE; + list_init(&cs->barriers); ++ list_init(&cs->barrierClients); + Wrap (cs, pScreen, CloseScreen, CursorCloseScreen); + Wrap (cs, pScreen, DisplayCursor, CursorDisplayCursor); + Wrap (cs, pScreen, ConstrainCursorHarder, CursorConstrainCursorHarder); +@@ -1455,8 +1838,10 @@ + "XFixesCursorWindow"); + PointerBarrierType = CreateNewResourceType(CursorFreeBarrier, + "XFixesPointerBarrier"); ++ PointerBarrierClientType = CreateNewResourceType(CursorFreeBarrierClient, ++ "XFixesPointerBarrierClient"); + + return CursorClientType && CursorHideCountType && CursorWindowType && +- PointerBarrierType; ++ PointerBarrierType && PointerBarrierClientType; + } + +Index: xorg-server/xfixes/xfixes.c +=================================================================== +--- xorg-server.orig/xfixes/xfixes.c 2012-03-07 22:24:45.592697117 +1100 ++++ xorg-server/xfixes/xfixes.c 2012-03-08 07:40:35.480111388 +1100 +@@ -100,6 +100,7 @@ + X_XFixesExpandRegion, /* Version 3 */ + X_XFixesShowCursor, /* Version 4 */ + X_XFixesDestroyPointerBarrier, /* Version 5 */ ++ X_XFixesBarrierReleasePointer, /* Version 6 */ + }; + + #define NUM_VERSION_REQUESTS (sizeof (version_requests) / sizeof (version_requests[0])) +@@ -143,6 +144,10 @@ + /*************** Version 5 ****************/ + ProcXFixesCreatePointerBarrier, + ProcXFixesDestroyPointerBarrier, ++/*************** Version 6 ****************/ ++ ProcXFixesCreatePointerBarrierVelocity, ++ ProcXFixesSelectBarrierInput, ++ ProcXFixesBarrierReleasePointer, + }; + + static int +@@ -209,6 +214,10 @@ + /*************** Version 5 ****************/ + SProcXFixesCreatePointerBarrier, + SProcXFixesDestroyPointerBarrier, ++/*************** Version 6 ****************/ ++ SProcXFixesCreatePointerBarrierVelocity, ++ SProcXFixesSelectBarrierInput, ++ SProcXFixesBarrierReleasePointer, + }; + + static int +Index: xorg-server/xfixes/xfixes.h +=================================================================== +--- xorg-server.orig/xfixes/xfixes.h 2012-03-07 22:24:45.608697118 +1100 ++++ xorg-server/xfixes/xfixes.h 2012-03-08 07:40:35.480111388 +1100 +@@ -28,6 +28,7 @@ + #define _XFIXES_H_ + + #include "resource.h" ++#include "list.h" + + extern _X_EXPORT RESTYPE RegionResType; + extern _X_EXPORT RESTYPE PointerBarrierType; +@@ -52,9 +53,25 @@ + extern _X_EXPORT RegionPtr + XFixesRegionCopy (RegionPtr pRegion); + ++typedef struct PointerBarrierEventClient *PointerBarrierEventClientPtr; ++ ++struct PointerBarrierEventClient { ++ ScreenPtr screen; ++ ClientPtr client; ++ CARD32 eventMask; ++ XID window; ++ XID resource; ++ struct list entry; ++}; ++ + struct PointerBarrier { ++ XID barrier; + CARD16 x1, x2, y1, y2; + CARD32 directions; ++ CARD32 velocity; ++ CARD32 barrierEventID; ++ CARD32 releaseEventID; ++ Bool hit, lastHit; + }; + + +Index: xorg-server/xfixes/xfixesint.h +=================================================================== +--- xorg-server.orig/xfixes/xfixesint.h 2012-03-07 22:24:45.616697118 +1100 ++++ xorg-server/xfixes/xfixesint.h 2012-03-08 07:40:35.480111388 +1100 +@@ -59,6 +59,7 @@ + #include "windowstr.h" + #include "selection.h" + #include "xfixes.h" ++#include "list.h" + + extern int XFixesEventBase; + +@@ -293,6 +294,26 @@ + int + SProcXFixesDestroyPointerBarrier (ClientPtr client); + ++/* Version 6 */ ++ ++int ++ProcXFixesSelectBarrierInput (ClientPtr client); ++ ++int ++SProcXFixesSelectBarrierInput (ClientPtr client); ++ ++int ++ProcXFixesCreatePointerBarrierVelocity (ClientPtr client); ++ ++int ++SProcXFixesCreatePointerBarrierVelocity (ClientPtr client); ++ ++int ++ProcXFixesBarrierReleasePointer (ClientPtr client); ++ ++int ++SProcXFixesBarrierReleasePointer (ClientPtr client); ++ + /* Xinerama */ + extern int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr); + void PanoramiXFixesInit (void); +Index: xorg-server/dix/getevents.c +=================================================================== +--- xorg-server.orig/dix/getevents.c 2012-03-07 22:24:45.624697119 +1100 ++++ xorg-server/dix/getevents.c 2012-03-08 11:02:31.739464474 +1100 +@@ -79,6 +79,12 @@ + InternalEvent* InputEventList = NULL; + + /** ++ * xfixes/cursor.c wants the unclamped (x,y) values for velocity ++ * calculation. Export them here. ++ */ ++int unclamped_prex = -1, unclamped_prey = -1; ++ ++/** + * Pick some arbitrary size for Xi motion history. + */ + int +@@ -903,7 +909,15 @@ + /* miPointerSetPosition takes care of crossing screens for us, as well as + * clipping to the current screen. Coordinates returned are in desktop + * coord system */ ++ /** ++ * Hack to pass the unclipped values through to the pointer barrier code. ++ * Required (for now) to calculate the velocity. ++ */ ++ unclamped_prex = (int)floor(*screenx) - scr->x; ++ unclamped_prey = (int)floor(*screeny) - scr->y; + scr = miPointerSetPosition(dev, mode, screenx, screeny); ++ unclamped_prex = -1; ++ unclamped_prey = -1; + + /* If we were constrained, rescale x/y from the screen coordinates so + * the device valuators reflect the correct position. For screen +Index: xorg-server/test/gtest/xfixes_barriers.cpp +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server/test/gtest/xfixes_barriers.cpp 2012-03-08 07:42:49.188104249 +1100 +@@ -0,0 +1,828 @@ ++/* ++ ++Copyright (c) 2012, Canonical Ltd ++ ++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. ++*/ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++int main (int argc, char **argv) ++{ ++ ::testing::InitGoogleTest (&argc, argv); ++ xorg::testing::Environment* environment = new xorg::testing::Environment (); ++ environment->set_conf_file (XORG_DUMMY_CONF); ++ environment->set_server (XORG_BINARY); ++ testing::AddGlobalTestEnvironment (environment); ++ return RUN_ALL_TESTS (); ++} ++ ++class BarrierTest : public xorg::testing::Test { ++ public: ++ ::Display *dpy; ++ static XErrorEvent *lastError; ++ int xtest_eventbase; ++ int xtest_errorbase; ++ int fixes_eventbase; ++ int fixes_errorbase; ++ ++ void AssertPointerPosition (int expected_x, int expected_y) ++ { ++ int x, y, unused_int; ++ unsigned int unused_uint; ++ Window unused_win; ++ ++ XQueryPointer (Display (), DefaultRootWindow (Display ()), ++ &unused_win, &unused_win, &x, &y, ++ &unused_int, &unused_int, &unused_uint); ++ ++ ASSERT_TRUE (x == expected_x && y == expected_y) << ++ "Incorrect pointer position: Expected ("<< ++ expected_x<< ", "<= 2); ++ ++ major = 6; ++ minor = 0; ++ XFixesQueryVersion (dpy, &major, &minor); ++ ASSERT_EQ (6, major); ++ ASSERT_TRUE (minor >= 0); ++ ++ ASSERT_TRUE (XFixesQueryExtension (dpy, ++ &fixes_eventbase, &fixes_errorbase)); ++ ++ lastError = new XErrorEvent; ++ XSetErrorHandler (ErrorHandler); ++ } ++ ++ private: ++ static int ErrorHandler (::Display *dpy, XErrorEvent *error) ++ { ++ memcpy (lastError, error, sizeof (*lastError)); ++ return 0; ++ } ++}; ++ ++XErrorEvent *BarrierTest::lastError = NULL; ++ ++TEST_F (BarrierTest, CreateVerticalBarrierSucceeds) ++{ ++ PointerBarrier barrier; ++ barrier = XFixesCreatePointerBarrier (dpy, DefaultRootWindow(dpy), ++ 100, 0, ++ 100, 100, ++ 0, ++ 0, NULL); ++ ASSERT_NE(None, barrier); ++} ++ ++TEST_F (BarrierTest, CreateHorizontalBarrierSucceds) ++{ ++ PointerBarrier barrier; ++ barrier = XFixesCreatePointerBarrier (dpy, DefaultRootWindow(dpy), ++ 100, 100, ++ 200, 100, ++ 0, ++ 0, NULL); ++ ASSERT_NE(None, barrier); ++} ++ ++TEST_F (BarrierTest, CreateNonAxisAlignedBarrierFails) ++{ ++ XFixesCreatePointerBarrier (dpy, DefaultRootWindow(dpy), ++ 0, 0, ++ 100, 100, ++ 0, ++ 0, NULL); ++ XSync (Display (), false); ++ ASSERT_EQ(BadValue, lastError->error_code); ++} ++ ++TEST_F (BarrierTest, VerticalBidirectionalBarrierBlocksRelativeMotion) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ int x = 200, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion should block on barrier ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y)); ++} ++ ++TEST_F (BarrierTest, VerticalPositiveXBarrierBlocksMotion) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ BarrierPositiveX, 0, NULL); ++ int x = 200, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in -ve X direction should block on barrier ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y + dy)); ++ ++ x = 0, y = 100, dx = 200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in +ve X direction should ignore barrier ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, VerticalNegativeXBarrierBlocksMotion) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ BarrierNegativeX, ++ 0, NULL); ++ ++ int x = 200, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in -ve X direction should ignore barrier ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = 0, y = 100, dx = 200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in +ve X direction should block on barrier ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x - 1, y + dy)); ++} ++ ++TEST_F (BarrierTest, HorizontalBidirectionalBarrierBlocksRelativeMotion) ++{ ++ int barrier_y = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 0, barrier_y, ++ 300, barrier_y, ++ 0, 0, NULL); ++ ++ int x = 200, y = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in +ve Y direction should block on barrier ++ int dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y - 1)); ++ ++ x = 100, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in -ve Y direction should block on barrier ++ dx = 0, dy = -200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y)); ++} ++ ++TEST_F (BarrierTest, HorizontalPositiveYBarrierBlocksMotion) ++{ ++ int barrier_y = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 0, barrier_y, ++ 300, barrier_y, ++ BarrierPositiveY, 0, NULL); ++ ++ int x = 200, y = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in +ve Y direction should ignore barrier ++ int dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = 100, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in -ve Y direction should block on barrier ++ dx = 0, dy = -200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y)); ++} ++ ++TEST_F (BarrierTest, HorizontalNegativeYBarrierBlocksMotion) ++{ ++ int barrier_y = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 0, barrier_y, ++ 300, barrier_y, ++ BarrierNegativeY, 0, NULL); ++ ++ int x = 200, y = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in +ve Y direction should block on barrier ++ int dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y - 1)); ++ ++ x = 100, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Relative motion in -ve Y direction should ignore barrier ++ dx = 0, dy = -200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, DestroyPointerBarrierSucceeds) ++{ ++ int barrier_x = 100; ++ PointerBarrier barrier; ++ barrier = XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ int x = 0, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Check that the barrier exists before we destroy it. ++ int dx = 200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x - 1, y + dy)); ++ ++ // Destroy the barrier... ++ XFixesDestroyPointerBarrier (Display (), barrier); ++ ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // There should be no barrier to block this. ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, BarrierIgnoresNonsensicalDirections) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ BarrierPositiveY | BarrierNegativeY, ++ 0, NULL); ++ ++ int x = 200, y = 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ int dx = -200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y + dy)); ++ ++ int barrier_y = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 0, barrier_y, ++ 400, barrier_y, ++ BarrierPositiveX | BarrierNegativeX, ++ 0, NULL); ++ ++ x = 100, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 0, dy = -200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y)); ++} ++ ++TEST_F (BarrierTest, VerticalBarrierEdges) ++{ ++ int barrier_x = 300, barrier_y1 = 300 , barrier_y2 = 500; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, barrier_y1, ++ barrier_x, barrier_y2, ++ 0, 0, NULL); ++ ++ int x = barrier_x + 100, y = barrier_y1 - 1; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should take us past the top of the barrier... ++ int dx = -200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = barrier_x + 100, y = barrier_y1; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should hit the top of the barrier... ++ dx = -200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y + dy)); ++ ++ x = barrier_x + 100, y = barrier_y2; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should hit the bottom of the barrier... ++ dx = -200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y + dy)); ++ ++ x = barrier_x + 100, y = barrier_y2 + 1; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should take us past the bottom of the barrier... ++ dx = -200, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, HorizontalBarrierEdges) ++{ ++ int barrier_x1 = 200, barrier_x2 = 500, barrier_y = 300; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x1, barrier_y, ++ barrier_x2, barrier_y, ++ 0, 0, NULL); ++ ++ int x = barrier_x1 - 1, y = barrier_y - 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should take us past the left edge of the barrier... ++ int dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = barrier_x1, y = barrier_y - 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should hit the top of the barrier... ++ dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, barrier_y - 1)); ++ ++ x = barrier_x2, y = barrier_y - 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should hit the bottom of the barrier... ++ dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y - 1)); ++ ++ x = barrier_x2 + 1, y = barrier_y - 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ // Motion should take us past the bottom of the barrier... ++ dx = 0, dy = 200; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, CornerBlocksMotion) ++{ ++ int corner_x, corner_y; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ corner_x, corner_y, ++ corner_x, corner_y + 300, ++ 0, 0, NULL); ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ corner_x, corner_y, ++ corner_x + 300, corner_y, ++ 0, 0, NULL); ++ ++ int x = corner_x + 100, y = corner_y + 100; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ XTestFakeRelativeMotionEvent (Display (), -200, -200, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (corner_x, corner_y)); ++} ++ ++TEST_F (BarrierTest, VerticalBarrierWithAdjacentStart) ++{ ++ int barrier_x = 350; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 100, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ int x = barrier_x, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ int dx = -10, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x, y + dy)); ++ ++ x = barrier_x, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 10, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = barrier_x - 1, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 10, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (barrier_x - 1, y + dy)); ++ ++ x = barrier_x - 1, y = 200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = -10, dy = 0; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, HorizontalBarrierWithAdjacentStart) ++{ ++ int barrier_y = 300; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 100, barrier_y, ++ 400, barrier_y, ++ 0, 0, NULL); ++ ++ int x = 240, y = barrier_y; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ int dx = 0, dy = -10; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y)); ++ ++ x = 240, y = barrier_y; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 0, dy = 10; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++ ++ x = 240, y = barrier_y - 1; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 0, dy = 10; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, barrier_y - 1)); ++ ++ x = 240, y = barrier_y - 1; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ dx = 0, dy = -10; ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x + dx, y + dy)); ++} ++ ++TEST_F (BarrierTest, BarrierNotifyEventFires) ++{ ++ int barrier_y = 300; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 100, barrier_y, ++ 400, barrier_y, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 240, y = barrier_y + 50; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ XTestFakeRelativeMotionEvent (Display (), 0, -100, 0); ++ ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ return; ++ } ++ } ++ FAIL () << "Failed to recieve BarrierNotify event"; ++} ++ ++TEST_F (BarrierTest, RecieveOneNotifyEventPerHit) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 200, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ /* Generate 5 barrier events */ ++ for (int i = 0; i < 5; ++i) { ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ } ++ ++ int barrierEventCount = 0; ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ barrierEventCount++; ++ break; ++ } ++ } ++ ASSERT_EQ (5, barrierEventCount); ++} ++ ++TEST_F (BarrierTest, BarrierEventHasNonZeroVelocity) ++{ ++ int barrier_x = 100; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 200, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ /* One relative event to ensure the server has a non-zero ++ * last-event-time */ ++ XTestFakeRelativeMotionEvent (Display (), 10, 10, 0); ++ /* Run the pointer into the barrier */ ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ XFixesBarrierNotifyEvent *notify = (XFixesBarrierNotifyEvent *)&e; ++ ASSERT_LT (0, notify->velocity); ++ return; ++ } ++ } ++ FAIL () << "Failed to receive barrier event"; ++} ++ ++TEST_F (BarrierTest, ScreenEdgeVerticalBarrierEventHasNonZeroVelocity) ++{ ++ int barrier_x = 0; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 100, y = 100, dx = -200, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ /* One relative event to ensure the server has a non-zero ++ * last-event-time */ ++ XTestFakeRelativeMotionEvent (Display (), 10, 10, 0); ++ /* Run the pointer into the barrier */ ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ XFixesBarrierNotifyEvent *notify = (XFixesBarrierNotifyEvent *)&e; ++ ASSERT_LT (0, notify->velocity); ++ return; ++ } ++ } ++ FAIL () << "Failed to receive barrier event"; ++} ++ ++TEST_F (BarrierTest, ScreenEdgeHorizontalBarrierEventHasNonZeroVelocity) ++{ ++ int barrier_y = 0; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ 0, barrier_y, ++ 300, barrier_y, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 100, y = 100, dx = 0, dy = -200; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ /* One relative event to ensure the server has a non-zero ++ * last-event-time */ ++ XTestFakeRelativeMotionEvent (Display (), 10, 10, 0); ++ /* Run the pointer into the barrier */ ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ XFixesBarrierNotifyEvent *notify = (XFixesBarrierNotifyEvent *)&e; ++ ASSERT_LT (0, notify->velocity); ++ return; ++ } ++ } ++ FAIL () << "Failed to receive barrier event"; ++} ++ ++TEST_F (BarrierTest, ReceiveOneBarrierEventPerHitOnScreenEdge) ++{ ++ int barrier_x = 0; ++ XFixesCreatePointerBarrier (Display (), DefaultRootWindow (Display ()), ++ barrier_x, 0, ++ barrier_x, 300, ++ 0, 0, NULL); ++ ++ XFixesSelectBarrierInput (Display (), DefaultRootWindow (Display ()), ++ XFixesBarrierHitNotifyMask); ++ ++ int x = 20, y = 100, dx = -40, dy = 0; ++ XTestFakeMotionEvent (Display (), DefaultScreen (Display ()), ++ x, y, 0); ++ ASSERT_NO_FATAL_FAILURE (AssertPointerPosition (x, y)); ++ ++ /* Generate 5 barrier events */ ++ for (int i = 0; i < 5; ++i) { ++ XTestFakeRelativeMotionEvent (Display (), dx, dy, 0); ++ } ++ ++ int barrierEventCount = 0; ++ XFlush (Display ()); ++ ASSERT_TRUE (WaitForXEvent ())<<"Timed out waiting to receive X event"; ++ while (XPending (Display ())) { ++ XEvent e; ++ XNextEvent (Display (), &e); ++ switch (e.xany.type - fixes_eventbase) { ++ case XFixesBarrierNotify: ++ barrierEventCount++; ++ break; ++ } ++ } ++ ASSERT_EQ (5, barrierEventCount); ++} +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac 2012-03-08 07:40:35.416111392 +1100 ++++ xorg-server/configure.ac 2012-03-08 11:02:31.783464472 +1100 +@@ -2155,6 +2155,25 @@ + + AC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep]) + ++AC_PROG_CXX ++ ++PKG_CHECK_MODULES(XORG_GTEST, xorg-gtest, ++ [have_xorg_gtest="yes"], ++ [AC_MSG_WARN([xorg-gtest not installed, tests will not be built])]) ++AM_CONDITIONAL([HAVE_XORG_GTEST], [test "x$have_xorg_gtest" = xyes]) ++AC_SUBST([XORG_GTEST_CFLAGS]) ++AC_SUBST([XORG_GTEST_LIBS]) ++ ++PKG_CHECK_MODULES([XFIXES], xfixes, [have_xfixes="yes"], [have_xfixes="no"]) ++AM_CONDITIONAL([HAVE_XFIXES], [test "x$have_xfixes" = xyes]) ++AC_SUBST([XFIXES_CFLAGS]) ++AC_SUBST([XFIXES_LIBS]) ++ ++PKG_CHECK_MODULES([XTEST], xtst, [have_xtest="yes"], [have_xtest="no"]) ++AM_CONDITIONAL([HAVE_XTEST], [test "x$have_xtest" = xyes]) ++AC_SUBST([XTEST_CFLAGS]) ++AC_SUBST([XTEST_LIBS]) ++ + AC_OUTPUT([ + Makefile + glx/Makefile +@@ -2254,6 +2273,7 @@ + hw/kdrive/src/Makefile + test/Makefile + test/xi2/Makefile ++test/gtest/Makefile + xserver.ent + xorg-server.pc + ]) +Index: xorg-server/test/gtest/Makefile.am +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server/test/gtest/Makefile.am 2012-03-08 07:40:35.488111388 +1100 +@@ -0,0 +1,27 @@ ++check_PROGRAMS = xfixes_barriers ++check_DATA = dummy.conf ++ ++TESTS=xfixes_barriers ++ ++GTEST_SRC_DIR = /usr/src/gtest ++GTEST_SOURCES = $(GTEST_SRC_DIR)/src/gtest-all.cc ++ ++xfixes_barriers_CXXFLAGS = $(AM_CXXFLAGS) \ ++ -I$(GTEST_SRC_DIR) \ ++ $(XORG_GTEST_CFLAGS) \ ++ $(XTEST_CFLAGS) \ ++ $(XFIXES_CFLAGS) \ ++ -DXORG_BINARY=\"$(top_builddir)/hw/xfree86/Xorg\" \ ++ -DXORG_DUMMY_CONF=\"$(abs_srcdir)/dummy.conf\" ++ ++xfixes_barriers_LDADD = \ ++ $(XFIXES_LIBS) \ ++ $(XTEST_LIBS) \ ++ $(XORG_GTEST_LIBS) \ ++ -lpthread ++ ++xfixes_barriers_SOURCES = \ ++ xfixes_barriers.cpp ++ ++nodist_xfixes_barriers_SOURCES = \ ++ $(GTEST_SOURCES) +Index: xorg-server/test/Makefile.am +=================================================================== +--- xorg-server.orig/test/Makefile.am 2012-03-07 22:24:45.684697122 +1100 ++++ xorg-server/test/Makefile.am 2012-03-08 07:40:35.488111388 +1100 +@@ -1,5 +1,10 @@ + if ENABLE_UNIT_TESTS + SUBDIRS= . xi2 ++ ++if HAVE_XORG_GTEST ++SUBDIRS+= gtest ++endif ++ + noinst_PROGRAMS = xkb input xtest list misc fixes xfree86 touch + check_LTLIBRARIES = libxservertest.la + +Index: xorg-server/test/gtest/dummy.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server/test/gtest/dummy.conf 2012-03-08 07:40:35.488111388 +1100 +@@ -0,0 +1,4 @@ ++Section "Device" ++ Identifier "Dummy video device" ++ Driver "dummy" ++EndSection +Index: xorg-server/dix/dixutils.c +=================================================================== +--- xorg-server.orig/dix/dixutils.c 2012-03-08 07:40:35.392111393 +1100 ++++ xorg-server/dix/dixutils.c 2012-03-08 07:40:35.488111388 +1100 +@@ -537,7 +537,7 @@ + { + /* remove q from the list */ + *p = q->next; /* don't fetch until after func called */ +- free(q); ++ (*q->destroyProc) (q); + } + else + { +@@ -560,7 +560,7 @@ + (void) (*q->function) (q->client, q->closure); + /* remove q from the list */ + *p = q->next; /* don't fetch until after func called */ +- free(q); ++ (*q->destroyProc) (q); + } + else + { +@@ -570,6 +570,12 @@ + workQueueLast = p; + } + ++static void ++FreeWorkQueueItem (WorkQueuePtr this) ++{ ++ free(this); ++} ++ + Bool + QueueWorkProc ( + Bool (*function)(ClientPtr /* pClient */, pointer /* closure */), +@@ -583,12 +589,22 @@ + q->function = function; + q->client = client; + q->closure = closure; ++ q->destroyProc = FreeWorkQueueItem; + q->next = NULL; + *workQueueLast = q; + workQueueLast = &q->next; + return TRUE; + } + ++Bool ++QueueWorkItem (WorkQueuePtr item) ++{ ++ item->next = NULL; ++ *workQueueLast = item; ++ workQueueLast = &item->next; ++ return TRUE; ++} ++ + /* + * Manage a queue of sleeping clients, awakening them + * when requested, by using the OS functions IgnoreClient +Index: xorg-server/include/dixstruct.h +=================================================================== +--- xorg-server.orig/include/dixstruct.h 2012-03-07 22:24:45.552697115 +1100 ++++ xorg-server/include/dixstruct.h 2012-03-08 07:40:35.492111388 +1100 +@@ -153,6 +153,9 @@ + ); + ClientPtr client; + pointer closure; ++ void (*destroyProc) ( ++ struct _WorkQueue * /* this */ ++); + } WorkQueueRec; + + extern _X_EXPORT TimeStamp currentTime; +Index: xorg-server/include/dix.h +=================================================================== +--- xorg-server.orig/include/dix.h 2012-03-07 22:24:45.568697116 +1100 ++++ xorg-server/include/dix.h 2012-03-08 07:40:35.492111388 +1100 +@@ -266,6 +266,8 @@ + pointer /*closure*/ + ); + ++extern _X_EXPORT Bool QueueWorkItem(WorkQueuePtr item); ++ + typedef Bool (* ClientSleepProcPtr)( + ClientPtr /*client*/, + pointer /*closure*/); --- xorg-server-1.11.4.orig/debian/patches/508_device_off_release_buttons.patch +++ xorg-server-1.11.4/debian/patches/508_device_off_release_buttons.patch @@ -0,0 +1,37 @@ +From adaf1adecf5697455e9f3fb0234939113873f959 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 30 Apr 2012 10:01:48 +1000 +Subject: [PATCH] dix: when disabling a device, release all buttons and keys + +A suspend-induced device disable may happen before the device gets to see +the button release event. On resume, the server's internal state still has +some buttons pressed, causing inconsistent behaviour. + +Force the release and the matching events to be sent to the client. + +Signed-off-by: Peter Hutterer +Reviewed-by: Chase Douglas + +Conflicts: + + dix/devices.c +--- + dix/devices.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/dix/devices.c b/dix/devices.c +index 9624424..b325d17 100644 +--- a/dix/devices.c ++++ b/dix/devices.c +@@ -447,6 +447,8 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent) + if (*prev != dev) + return FALSE; + ++ ReleaseButtonsAndKeys(dev); ++ + /* float attached devices */ + if (IsMaster(dev)) + { +-- +1.7.9.1 + --- xorg-server-1.11.4.orig/debian/patches/168_glibc_trace_to_stderr.patch +++ xorg-server-1.11.4/debian/patches/168_glibc_trace_to_stderr.patch @@ -0,0 +1,17 @@ +Report abort traces to stderr instead of terminal. This enables apport +to catch the error so it can file a bug report about the crash. + +Index: xorg-server/hw/xfree86/common/xf86Init.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Init.c 2011-08-24 12:56:49.555650622 +0300 ++++ xorg-server/hw/xfree86/common/xf86Init.c 2011-08-24 12:56:49.665650623 +0300 +@@ -866,6 +866,9 @@ + + if (!beenHere) { + umask(022); ++ /* have glibc report internal abort traces to stderr instead of ++ the controlling terminal */ ++ setenv("LIBC_FATAL_STDERR_","1",0); + xf86LogInit(); + } + --- xorg-server-1.11.4.orig/debian/patches/15-nouveau.diff +++ xorg-server-1.11.4/debian/patches/15-nouveau.diff @@ -0,0 +1,68 @@ +From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas +Date: Tue, 16 Feb 2010 11:38:17 +1000 +Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs + +Also, don't treat DRI setup failure as an error for nouveau. +--- + glx/glxdri.c | 7 +++++-- + glx/glxdri2.c | 7 +++++-- + hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++- + 3 files changed, 28 insertions(+), 5 deletions(-) +--- +v2: Adapt the (II) part for nouveau after the move from glx/glxdri*.c to + glx/glxdricommon.c; the callers will still report (EE) after that + when mentioning the fallback to software rendering (since the error + case can be triggered in many various ways). + +Signed-off-by: Cyril Brulebois + +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1123,7 +1123,24 @@ videoPtrToDriverList(struct pci_device * + break; + case 0x102b: driverList[0] = "mga"; break; + case 0x10c8: driverList[0] = "neomagic"; break; +- case 0x10de: case 0x12d2: driverList[0] = "nv"; break; ++ case 0x10de: case 0x12d2: ++ switch (dev->device_id) { ++ /* NV1 */ ++ case 0x0008: ++ case 0x0009: ++ driverList[0] = "vesa"; ++ break; ++ /* NV3 */ ++ case 0x0018: ++ case 0x0019: ++ driverList[0] = "nv"; ++ break; ++ default: ++ driverList[0] = "nouveau"; ++ driverList[1] = "nv"; ++ break; ++ } ++ break; + case 0x1106: driverList[0] = "openchrome"; break; + case 0x1b36: driverList[0] = "qxl"; break; + case 0x1163: driverList[0] = "rendition"; break; +--- a/glx/glxdricommon.c ++++ b/glx/glxdricommon.c +@@ -217,6 +217,7 @@ glxProbeDriver(const char *driverName, + void *driver; + char filename[PATH_MAX]; + const __DRIextension **extensions; ++ int from = X_ERROR; + + snprintf(filename, sizeof filename, "%s/%s_dri.so", + dri_driver_path, driverName); +@@ -248,7 +249,9 @@ glxProbeDriver(const char *driverName, + } + + if (*coreExt == NULL || *renderExt == NULL) { +- LogMessage(X_ERROR, ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, + "AIGLX error: %s does not export required DRI extension\n", + driverName); + goto cleanup_failure; --- xorg-server-1.11.4.orig/debian/patches/201_report-real-dpi.patch +++ xorg-server-1.11.4/debian/patches/201_report-real-dpi.patch @@ -0,0 +1,46 @@ +Description: Report physical DPI when EDID data exists. + . + This reverts git commit fff00df94d7ebd18a8e24537ec96073717375a3f, which + made X report 96DPI via the core protocol. + . + We want to make this policy decision higher up the stack than the X server, + so revert this and make X report the physical DPI when the EDID contains + physical size data. +Author: Christopher James Halse Rogers + +Index: xorg-server/hw/xfree86/modes/xf86RandR12.c +=================================================================== +--- xorg-server.orig/hw/xfree86/modes/xf86RandR12.c 2010-08-03 15:59:57.750272356 +1000 ++++ xorg-server/hw/xfree86/modes/xf86RandR12.c 2010-08-03 16:00:00.750380508 +1000 +@@ -805,6 +805,7 @@ + else + { + xf86OutputPtr output = xf86CompatOutput(pScrn); ++ rrScrPriv(pScreen); + + if (output && + output->conf_monitor && +@@ -817,6 +818,23 @@ + mmWidth = output->conf_monitor->mon_width; + mmHeight = output->conf_monitor->mon_height; + } ++ else if (pScrPriv && pScrPriv->primaryOutput) ++ { ++ /* Calculate DPI based on primary display size, not the entire display size */ ++ mmWidth = pScrPriv->primaryOutput->mmWidth * width / pScrPriv->primaryOutput->crtc->mode->mode.width; ++ mmHeight = pScrPriv->primaryOutput->mmHeight * height / pScrPriv->primaryOutput->crtc->mode->mode.height; ++ } ++ else if (output && output->crtc && output->crtc->mode.HDisplay && ++ output->mm_width && output->mm_height) ++ { ++ /* ++ * If the output has a mode and a declared size, use that ++ * to scale the screen size ++ */ ++ DisplayModePtr mode = &output->crtc->mode; ++ mmWidth = output->mm_width * width / mode->HDisplay; ++ mmHeight = output->mm_height * height / mode->VDisplay; ++ } + else + { + /* --- xorg-server-1.11.4.orig/debian/patches/165_man_xorg_conf_no_device_ident.patch +++ xorg-server-1.11.4/debian/patches/165_man_xorg_conf_no_device_ident.patch @@ -0,0 +1,26 @@ +From b3bb14b11a58f7bfc3ba5617c524d01a6e683de1 Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Wed, 18 Mar 2009 21:08:19 -0700 +Subject: [PATCH] X boots up without a 'Device' identifier; don't need to say it + is mandatory in the xorg.conf man page anymore. + +Signed-off-by: Bryce Harrington +--- + hw/xfree86/man/xorg.conf.man.pre | 4 +--- + 1 files changed, 1 insertions(+), 3 deletions(-) + +Index: xorg-server/hw/xfree86/doc/man/xorg.conf.man +=================================================================== +--- xorg-server.orig/hw/xfree86/man/xorg.conf.man 2011-08-24 12:52:45.445647143 +0300 ++++ xorg-server/hw/xfree86/man/xorg.conf.man 2011-08-24 12:56:49.625650620 +0300 +@@ -1816,9 +1816,7 @@ + .PP + The + .B Identifier +-and +-.B Device +-entries are mandatory. ++entry is mandatory. + All others are optional. + .PP + The --- xorg-server-1.11.4.orig/debian/patches/227_null_ptr_midispcur.patch +++ xorg-server-1.11.4/debian/patches/227_null_ptr_midispcur.patch @@ -0,0 +1,14 @@ +diff -u a/mi/midispcur.c b/mi/midispcur.c +--- a/mi/midispcur.c 2011-08-05 09:59:03.000000000 +0400 ++++ b/mi/midispcur.c 2012-02-16 10:07:52.524576132 +0400 +@@ -479,6 +479,10 @@ + GCPtr pGC; + + pBuffer = miGetDCDevice(pDev, pScreen); ++ ++ if (!pBuffer) ++ return FALSE; ++ + pSave = pBuffer->pSave; + + pWin = pScreen->root; --- xorg-server-1.11.4.orig/debian/patches/507_touchscreen_fixes.patch +++ xorg-server-1.11.4/debian/patches/507_touchscreen_fixes.patch @@ -0,0 +1,540 @@ +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -1148,6 +1148,48 @@ EmitTouchEnd(DeviceIntPtr dev, TouchPoin + } + + /** ++ * Find the oldest touch that still has a pointer emulation client. ++ * ++ * Pointer emulation can only be performed for the oldest touch. Otherwise, the ++ * order of events seen by the client will be wrong. This function helps us find ++ * the next touch to be emulated. ++ * ++ * @param dev The device to find touches for. ++ */ ++static TouchPointInfoPtr ++FindOldestPointerEmulatedTouch(DeviceIntPtr dev) ++{ ++ TouchPointInfoPtr oldest = NULL; ++ int i; ++ ++ for (i = 0; i < dev->touch->num_touches; i++) { ++ TouchPointInfoPtr ti = dev->touch->touches + i; ++ int j; ++ ++ if (!ti->active || !ti->emulate_pointer) ++ continue; ++ ++ for (j = 0; j < ti->num_listeners; j++) { ++ if (ti->listeners[j].type == LISTENER_POINTER_GRAB || ++ ti->listeners[j].type == LISTENER_POINTER_REGULAR) ++ break; ++ } ++ if (j == ti->num_listeners) ++ continue; ++ ++ if (!oldest) { ++ oldest = ti; ++ continue; ++ } ++ ++ if (oldest->client_id - ti->client_id < UINT_MAX / 2) ++ oldest = ti; ++ } ++ ++ return oldest; ++} ++ ++/** + * If the current owner has rejected the event, deliver the + * TouchOwnership/TouchBegin to the next item in the sprite stack. + */ +@@ -1159,8 +1201,16 @@ TouchPuntToNextOwner(DeviceIntPtr dev, T + if (ti->listeners[0].state == LISTENER_AWAITING_OWNER || + ti->listeners[0].state == LISTENER_EARLY_ACCEPT) + DeliverTouchEvents(dev, ti, (InternalEvent*)ev, ti->listeners[0].listener); +- else if (ti->listeners[0].state == LISTENER_AWAITING_BEGIN) ++ else if (ti->listeners[0].state == LISTENER_AWAITING_BEGIN) { ++ /* We can't punt to a pointer listener unless all older pointer ++ * emulated touches have been seen already. */ ++ if ((ti->listeners[0].type == LISTENER_POINTER_GRAB || ++ ti->listeners[0].type == LISTENER_POINTER_REGULAR) && ++ ti != FindOldestPointerEmulatedTouch(dev)) ++ return; ++ + TouchEventHistoryReplay(ti, dev, ti->listeners[0].listener); ++ } + + /* If we've just removed the last grab and the touch has physically + * ended, send a TouchEnd event too and finalise the touch. */ +@@ -1177,6 +1227,25 @@ TouchPuntToNextOwner(DeviceIntPtr dev, T + } + + /** ++ * Check the oldest touch to see if it needs to be replayed to its pointer ++ * owner. ++ * ++ * Touch event propagation is paused if it hits a pointer listener while an ++ * older touch with a pointer listener is waiting on accept or reject. This ++ * function will restart propagation of a paused touch if needed. ++ * ++ * @param dev The device to check touches for. ++ */ ++static void ++CheckOldestTouch(DeviceIntPtr dev) ++{ ++ TouchPointInfoPtr oldest = FindOldestPointerEmulatedTouch(dev); ++ ++ if (oldest && oldest->listeners[0].state == LISTENER_AWAITING_BEGIN) ++ TouchPuntToNextOwner(dev, oldest, NULL); ++} ++ ++/** + * Process a touch rejection. + * + * @param sourcedev The source device of the touch sequence. +@@ -1205,14 +1274,6 @@ TouchRejected(DeviceIntPtr sourcedev, To + } + } + +- /* If there are no other listeners left, and the touchpoint is pending +- * finish, then we can just kill it now. */ +- if (ti->num_listeners == 1 && ti->pending_finish) +- { +- TouchEndTouch(sourcedev, ti); +- return; +- } +- + /* Remove the resource from the listener list, updating + * ti->num_listeners, as well as ti->num_grabs if it was a grab. */ + if (TouchRemoveListener(ti, resource)) +@@ -1226,6 +1287,10 @@ TouchRejected(DeviceIntPtr sourcedev, To + * the TouchOwnership or TouchBegin event to the new owner. */ + if (ev && ti->num_listeners > 0 && was_owner) + TouchPuntToNextOwner(sourcedev, ti, ev); ++ else if (ti->num_listeners == 0) ++ TouchEndTouch(sourcedev, ti); ++ ++ CheckOldestTouch(sourcedev); + } + + /** +@@ -1243,9 +1308,18 @@ ProcessTouchOwnershipEvent(DeviceIntPtr + if (ev->reason == XIRejectTouch) + TouchRejected(dev, ti, ev->resource, ev); + else if (ev->reason == XIAcceptTouch) { ++ int i; ++ ++ /* Go through the motions of ending the touch if the listener has ++ * already seen the end. This ensures that the touch record is ended in ++ * the server. */ ++ if (ti->listeners[0].state == LISTENER_HAS_END) ++ EmitTouchEnd(dev, ti, TOUCH_ACCEPT, ti->listeners[0].listener); ++ + /* The touch owner has accepted the touch. Send TouchEnd events to + * everyone else, and truncate the list of listeners. */ +- EmitTouchEnd(dev, ti, TOUCH_ACCEPT, 0); ++ for (i = 1; i < ti->num_listeners; i++) ++ EmitTouchEnd(dev, ti, TOUCH_ACCEPT, ti->listeners[i].listener); + + while (ti->num_listeners > 1) + TouchRemoveListener(ti, ti->listeners[1].listener); +@@ -1428,11 +1502,21 @@ DeliverTouchEmulatedEvent(DeviceIntPtr d + if (!deliveries) + DeliverOneGrabbedEvent(ptrev, dev, grab->grabtype); + ++ /* We must accept the touch sequence once a pointer listener has ++ * received one event past ButtonPress. */ ++ if (deliveries && ev->any.type != ET_TouchBegin && ++ !(ev->device_event.flags & TOUCH_CLIENT_ID)) ++ TouchListenerAcceptReject(dev, ti, 0, XIAcceptTouch); ++ + if (ev->any.type == ET_TouchEnd && ++ !(ev->device_event.flags & TOUCH_CLIENT_ID) && + !dev->button->buttonsDown && + dev->deviceGrab.fromPassiveGrab && +- GrabIsPointerGrab(grab)) ++ GrabIsPointerGrab(grab)) { + (*dev->deviceGrab.DeactivateGrab)(dev); ++ CheckOldestTouch(dev); ++ return Success; ++ } + } + } else + { +@@ -1552,12 +1636,43 @@ ProcessTouchEvent(InternalEvent *ev, Dev + else + touchid = ev->device_event.touchid; + ++ if (emulate_pointer) ++ UpdateDeviceState(dev, &ev->device_event); ++ + if (type == ET_TouchBegin) { + ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid, + emulate_pointer); + } else + ti = TouchFindByClientID(dev, touchid); + ++ /* Under the following circumstances we create a new touch record for an ++ * existing touch: ++ * ++ * - The touch may be pointer emulated ++ * - An explicit grab is active on the device ++ * - The grab is a pointer grab ++ * ++ * This allows for an explicit grab to receive pointer events for an already ++ * active touch. ++ */ ++ if (!ti && type != ET_TouchBegin && emulate_pointer && ++ dev->deviceGrab.grab && !dev->deviceGrab.fromPassiveGrab && ++ (dev->deviceGrab.grab->grabtype == CORE || ++ dev->deviceGrab.grab->grabtype == XI || ++ !xi2mask_isset(dev->deviceGrab.grab->xi2mask, dev, XI_TouchBegin))) { ++ ti = TouchBeginTouch(dev, ev->device_event.sourceid, touchid, ++ emulate_pointer); ++ if (!ti) { ++ DebugF("[Xi] %s: Failed to create new dix record for explicitly " ++ "grabbed touchpoint %d\n", ++ dev->name, type, touchid); ++ return; ++ } ++ ++ TouchBuildSprite(dev, ti, ev); ++ TouchSetupListeners(dev, ti, ev); ++ } ++ + if (!ti) + { + DebugF("[Xi] %s: Failed to get event %d for touchpoint %d\n", +@@ -1575,9 +1690,11 @@ ProcessTouchEvent(InternalEvent *ev, Dev + CheckMotion(&ev->device_event, dev); + + /* Make sure we have a valid window trace for event delivery; must be +- * called after event type mutation. */ ++ * called after event type mutation. Touch end events are always processed ++ * in order to end touch records. */ + /* FIXME: check this */ +- if (!TouchEnsureSprite(dev, ti, ev)) ++ if ((type == ET_TouchBegin && !TouchBuildSprite(dev, ti, ev)) || ++ (type != ET_TouchEnd && ti->sprite.spriteTraceGood == 0)) + return; + + /* TouchOwnership events are handled separately from the rest, as they +@@ -1813,6 +1930,14 @@ DeliverTouchEndEvent(DeviceIntPtr dev, T + { + rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win, + grab, xi2mask); ++ ++ if (ti->num_listeners > 1) { ++ ev->any.type = ET_TouchUpdate; ++ ev->device_event.flags |= TOUCH_PENDING_END; ++ if (!(ev->device_event.flags & TOUCH_CLIENT_ID)) ++ ti->pending_finish = TRUE; ++ } ++ + goto out; + } + +@@ -1923,9 +2048,6 @@ DeliverTouchEvents(DeviceIntPtr dev, Tou + + DeliverTouchEvent(dev, ti, ev, listener, client, win, grab, mask); + } +- +- if (ti->emulate_pointer) +- UpdateDeviceState(dev, &ev->device_event); + } + + int +--- a/dix/dispatch.c ++++ b/dix/dispatch.c +@@ -215,7 +215,7 @@ UpdateCurrentTimeIf(void) + systime.milliseconds = GetTimeInMillis(); + if (systime.milliseconds < currentTime.milliseconds) + systime.months++; +- if (*checkForInput[0] == *checkForInput[1]) ++ if (CompareTimeStamps(systime, currentTime) == LATER) + currentTime = systime; + } + +@@ -408,6 +408,9 @@ Dispatch(void) + } + /* now, finally, deal with client requests */ + ++ /* Update currentTime so request time checks, such as for input ++ * device grabs, are calculated correctly */ ++ UpdateCurrentTimeIf(); + result = ReadRequestFromClient(client); + if (result <= 0) + { +--- a/dix/events.c ++++ b/dix/events.c +@@ -1312,14 +1312,10 @@ ComputeFreezes(void) + { + if (IsTouchEvent((InternalEvent*)event)) + { +- InternalEvent *events = InitEventList(GetMaximumEventsNum()); +- int i, nev; + TouchPointInfoPtr ti = TouchFindByClientID(replayDev, event->touchid); + BUG_WARN(!ti); +- nev = GetTouchOwnershipEvents(events, replayDev, ti, XIRejectTouch, ti->listeners[0].listener, 0); +- for (i = 0; i < nev; i++) +- mieqProcessDeviceEvent(replayDev, events + i, NULL); +- ProcessInputEvents(); ++ ++ TouchListenerAcceptReject(replayDev, ti, 0, XIRejectTouch); + } else if (replayDev->focus && !IsPointerEvent((InternalEvent*)event)) + DeliverFocusedEvent(replayDev, (InternalEvent*)event, w); + else +@@ -1459,6 +1455,38 @@ ReattachToOldMaster(DeviceIntPtr dev) + } + + /** ++ * Update touch records when an explicit grab is activated. Any touches owned by ++ * the grabbing client are updated so the listener state reflects the new grab. ++ */ ++static void ++UpdateTouchesForGrab(DeviceIntPtr mouse) ++{ ++ int i; ++ ++ if (!mouse->touch || mouse->deviceGrab.fromPassiveGrab) ++ return; ++ ++ for (i = 0; i < mouse->touch->num_touches; i++) { ++ TouchPointInfoPtr ti = mouse->touch->touches + i; ++ GrabPtr grab = mouse->deviceGrab.grab; ++ ++ if (ti->active && ++ CLIENT_BITS(ti->listeners[0].listener) == grab->resource) { ++ ti->listeners[0].listener = grab->resource; ++ ti->listeners[0].level = grab->grabtype; ++ ti->listeners[0].state = LISTENER_IS_OWNER; ++ ti->listeners[0].window = grab->window; ++ ++ if (grab->grabtype == CORE || grab->grabtype == XI || ++ !xi2mask_isset(grab->xi2mask, mouse, XI_TouchBegin)) ++ ti->listeners[0].type = LISTENER_POINTER_GRAB; ++ else ++ ti->listeners[0].type = LISTENER_GRAB; ++ } ++ } ++} ++ ++/** + * Activate a pointer grab on the given device. A pointer grab will cause all + * core pointer events of this device to be delivered to the grabbing client only. + * No other device will send core events to the grab client while the grab is +@@ -1509,6 +1537,7 @@ ActivatePointerGrab(DeviceIntPtr mouse, + grabinfo->fromPassiveGrab = isPassive; + grabinfo->implicitGrab = autoGrab & ImplicitGrabMask; + PostNewCursor(mouse); ++ UpdateTouchesForGrab(mouse); + CheckGrabForSyncs(mouse,(Bool)grab->pointerMode, (Bool)grab->keyboardMode); + } + +@@ -1524,6 +1553,8 @@ DeactivatePointerGrab(DeviceIntPtr mouse + DeviceIntPtr dev; + Bool wasImplicit = (mouse->deviceGrab.fromPassiveGrab && + mouse->deviceGrab.implicitGrab); ++ XID grab_resource = grab->resource; ++ int i; + + TouchRemovePointerGrab(mouse); + +@@ -1549,6 +1580,15 @@ DeactivatePointerGrab(DeviceIntPtr mouse + ReattachToOldMaster(mouse); + + ComputeFreezes(); ++ ++ /* If an explicit grab was deactivated, we must remove it from the head of ++ * all the touches' listener lists. */ ++ for (i = 0; mouse->touch && i < mouse->touch->num_touches; i++) { ++ TouchPointInfoPtr ti = mouse->touch->touches + i; ++ ++ if (ti->active && TouchResourceIsOwner(ti, grab_resource)) ++ TouchListenerAcceptReject(mouse, ti, 0, XIRejectTouch); ++ } + } + + /** +--- a/dix/touch.c ++++ b/dix/touch.c +@@ -375,13 +375,6 @@ TouchEndTouch(DeviceIntPtr dev, TouchPoi + if (ti->emulate_pointer) + { + GrabPtr grab; +- DeviceEvent ev; +- memset(&ev, 0, sizeof(ev)); +- ev.type = ET_TouchEnd; +- ev.detail.button = 1; +- ev.touchid = ti->client_id; +- ev.flags = TOUCH_POINTER_EMULATED|TOUCH_END; +- UpdateDeviceState(dev, &ev); + + if ((grab = dev->deviceGrab.grab)) + { +@@ -496,10 +489,22 @@ TouchEventHistoryReplay(TouchPointInfoPt + flags = TOUCH_CLIENT_ID|TOUCH_REPLAYING; + if (ti->emulate_pointer) + flags |= TOUCH_POINTER_EMULATED; +- /* send fake begin event to next owner */ ++ /* Generate events based on a fake touch begin event to get DCCE events if ++ * needed */ ++ /* FIXME: This needs to be cleaned up */ + nev = GetTouchEvents(tel, dev, ti->client_id, XI_TouchBegin, flags, mask); +- for (i = 0; i < nev; i++) +- DeliverTouchEvents(dev, ti, tel + i, resource); ++ for (i = 0; i < nev; i++) { ++ /* Send saved touch begin event */ ++ if (tel[i].any.type == ET_TouchBegin) { ++ DeviceEvent *ev = &ti->history[0]; ++ ev->flags |= TOUCH_REPLAYING; ++ DeliverTouchEvents(dev, ti, (InternalEvent*)ev, resource); ++ } ++ else {/* Send DCCE event */ ++ tel[i].any.time = ti->history[0].time; ++ DeliverTouchEvents(dev, ti, tel + i, resource); ++ } ++ } + + valuator_mask_free(&mask); + FreeEventList(tel, GetMaximumEventsNum()); +@@ -558,22 +563,12 @@ TouchBuildDependentSpriteTrace(DeviceInt + * TouchBegin events. + */ + Bool +-TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, +- InternalEvent *ev) ++TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, ++ InternalEvent *ev) + { + TouchClassPtr t = sourcedev->touch; + SpritePtr sprite = &ti->sprite; + +- /* We may not have a sprite if there are no applicable grabs or +- * event selections, or if they've disappeared, or if all the grab +- * owners have rejected the touch. Don't bother delivering motion +- * events if not, but TouchEnd events still need to be processed so +- * we can call FinishTouchPoint and release it for later use. */ +- if (ev->any.type == ET_TouchEnd) +- return TRUE; +- else if (ev->any.type != ET_TouchBegin) +- return (sprite->spriteTraceGood > 0); +- + if (t->mode == XIDirectTouch) + { + /* Focus immediately under the touchpoint in direct touch mode. +@@ -897,6 +892,11 @@ TouchSetupListeners(DeviceIntPtr dev, To + if (dev->deviceGrab.grab) + TouchAddActiveGrabListener(dev, ti, ev, dev->deviceGrab.grab); + ++ /* We set up an active touch listener for existing touches, but not any ++ * passive grab or regular listeners. */ ++ if (ev->any.type != ET_TouchBegin) ++ return; ++ + /* First, find all grabbing clients from the root window down + * to the deepest child window. */ + for (i = 0; i < sprite->spriteTraceGood; i++) +@@ -988,15 +988,48 @@ TouchListenerGone(XID resource) + } + + int ++TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti, int listener, ++ int mode) ++{ ++ InternalEvent *events; ++ int nev; ++ int i; ++ ++ if (listener > 0) { ++ if (mode == XIRejectTouch) ++ TouchRejected(dev, ti, ti->listeners[listener].listener, NULL); ++ else ++ ti->listeners[listener].state = LISTENER_EARLY_ACCEPT; ++ ++ return Success; ++ } ++ ++ events = InitEventList(GetMaximumEventsNum()); ++ if (!events) { ++ BUG_WARN_MSG(TRUE, "Failed to allocate touch ownership events\n"); ++ return BadAlloc; ++ } ++ ++ nev = GetTouchOwnershipEvents(events, dev, ti, mode, ++ ti->listeners[0].listener, 0); ++ BUG_WARN_MSG(nev == 0, "Failed to get touch ownership events\n"); ++ ++ for (i = 0; i < nev; i++) ++ mieqProcessDeviceEvent(dev, events + i, NULL); ++ ++ ProcessInputEvents(); ++ ++ FreeEventList(events, GetMaximumEventsNum()); ++ ++ return nev ? Success : BadMatch; ++} ++ ++int + TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, + uint32_t touchid, Window grab_window, XID *error) + { + TouchPointInfoPtr ti; +- int nev, i; +- InternalEvent *events = InitEventList(GetMaximumEventsNum()); +- +- if (!events) +- return BadAlloc; ++ int i; + + if (!dev->touch) + { +@@ -1020,25 +1053,5 @@ TouchAcceptReject(ClientPtr client, Devi + if (i == ti->num_listeners) + return BadAccess; + +- if (i > 0) +- { +- if (mode == XIRejectTouch) +- TouchRejected(dev, ti, ti->listeners[i].listener, NULL); +- else +- ti->listeners[i].state = LISTENER_EARLY_ACCEPT; +- +- return Success; +- } +- +- nev = GetTouchOwnershipEvents(events, dev, ti, mode, +- ti->listeners[0].listener, 0); +- if (nev == 0) +- return BadAlloc; +- for (i = 0; i < nev; i++) +- mieqProcessDeviceEvent(dev, events + i, NULL); +- +- ProcessInputEvents(); +- +- FreeEventList(events, GetMaximumEventsNum()); +- return Success; ++ return TouchListenerAcceptReject(dev, ti, i, mode); + } +--- a/include/input.h ++++ b/include/input.h +@@ -624,14 +624,16 @@ extern void TouchAddListener(TouchPointI + WindowPtr window); + extern Bool TouchRemoveListener(TouchPointInfoPtr ti, XID resource); + extern void TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev); +-extern Bool TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, +- InternalEvent *ev); ++extern Bool TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, ++ InternalEvent *ev); + extern Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite); + extern int TouchConvertToPointerEvent(const InternalEvent *ev, + InternalEvent *motion, InternalEvent *button); + extern int TouchGetPointerEventType(const InternalEvent *ev); + extern void TouchRemovePointerGrab(DeviceIntPtr dev); + extern void TouchListenerGone(XID resource); ++extern int TouchListenerAcceptReject(DeviceIntPtr dev, TouchPointInfoPtr ti, ++ int listener, int mode); + extern int TouchAcceptReject(ClientPtr client, DeviceIntPtr dev, int mode, + uint32_t touchid, Window grab_window, XID *error); + --- xorg-server-1.11.4.orig/debian/patches/172_cwgetbackingpicture_nullptr_check.patch +++ xorg-server-1.11.4/debian/patches/172_cwgetbackingpicture_nullptr_check.patch @@ -0,0 +1,35 @@ +From 7813adf66be31d8b0e8df21821e786e688f7fe78 Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Fri, 27 Mar 2009 19:01:32 -0700 +Subject: [PATCH] cwGetBackingPicture can segfault when minimizing/maximizing firefox with + a flash video playing. This appears to be a race condition in which the + backing picture's data is not always fully defined. + +Signed-off-by: Bryce Harrington +--- + miext/cw/cw_render.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +Index: xorg-server/miext/cw/cw_render.c +=================================================================== +--- xorg-server.orig/miext/cw/cw_render.c 2011-08-24 12:52:45.195647139 +0300 ++++ xorg-server/miext/cw/cw_render.c 2011-08-24 12:56:49.675650621 +0300 +@@ -123,10 +123,15 @@ + WindowPtr pWindow = (WindowPtr) pDrawable; + PixmapPtr pPixmap = getCwPixmap (pWindow); + +- *x_off = pDrawable->x - pPixmap->screen_x; +- *y_off = pDrawable->y - pPixmap->screen_y; ++ if (pDrawable && pPixmap) { ++ *x_off = pDrawable->x - pPixmap->screen_x; ++ *y_off = pDrawable->y - pPixmap->screen_y; + +- return pPicturePrivate->pBackingPicture; ++ return pPicturePrivate->pBackingPicture; ++ } else { ++ *x_off = *y_off = 0; ++ return pPicture; ++ } + } + else + { --- xorg-server-1.11.4.orig/debian/patches/162_null_crtc_in_rotation.patch +++ xorg-server-1.11.4/debian/patches/162_null_crtc_in_rotation.patch @@ -0,0 +1,14 @@ +Index: xorg-server/hw/xfree86/modes/xf86RandR12.c +=================================================================== +--- xorg-server.orig/hw/xfree86/modes/xf86RandR12.c 2011-08-24 12:52:45.505647142 +0300 ++++ xorg-server/hw/xfree86/modes/xf86RandR12.c 2011-08-24 12:56:49.615650622 +0300 +@@ -930,7 +930,8 @@ + for (c = 0; c < config->num_crtc; c++) { + xf86CrtcPtr crtc = config->crtc[c]; + +- RRCrtcSetRotations (crtc->randr_crtc, rotations); ++ if (crtc != NULL) ++ RRCrtcSetRotations (crtc->randr_crtc, rotations); + } + #endif + randrp->supported_rotations = rotations; --- xorg-server-1.11.4.orig/debian/patches/111_armel-drv-fallbacks.patch +++ xorg-server-1.11.4/debian/patches/111_armel-drv-fallbacks.patch @@ -0,0 +1,61 @@ +Index: xorg-server-1.11.4/hw/xfree86/common/xf86AutoConfig.c +=================================================================== +--- xorg-server-1.11.4.orig/hw/xfree86/common/xf86AutoConfig.c 2012-03-20 02:08:02.154998574 -0300 ++++ xorg-server-1.11.4/hw/xfree86/common/xf86AutoConfig.c 2012-03-20 02:08:46.819220051 -0300 +@@ -44,6 +44,12 @@ + # include "xf86sbusBus.h" + #endif + ++#if defined(__arm__) && defined(__linux__) ++# include "loaderProcs.h" ++# include /* For opendir in test_sysfs_device */ ++# include /* For opendir in test_sysfs_device */ ++#endif ++ + #ifdef sun + # include + # include +@@ -198,6 +204,26 @@ + return ret == CONFIG_OK; + } + ++#if defined(__arm__) && defined(__linux__) ++static int ++test_sysfs_device (char * device_name, char * driver_name) ++{ ++ DIR* dir = opendir("/sys/devices/platform"); ++ struct dirent *current_dir; ++ int len = strlen(device_name); ++ ++ while (current_dir = readdir(dir)) { ++ if (strlen(current_dir->d_name) >= len && strncmp(device_name, current_dir->d_name, len) == 0) ++ break; ++ } ++ closedir(dir); ++ if(!current_dir) ++ return 0; ++ ++ return 1; ++} ++#endif /* defined(__arm__) && defined(__linux__) */ ++ + static void + listPossibleVideoDrivers(char *matches[], int nmatches) + { +@@ -282,6 +308,16 @@ + #if !defined(__linux__) && defined(__sparc__) + matches[i++] = xnfstrdup("wsfb"); + #else ++#if defined(__linux__) && defined(__arm__) ++ if (test_sysfs_device("mxc_gpu", "imx")) ++ matches[i++] = xnfstrdup("imx"); ++ else if (test_sysfs_device("dovefb", "dovefb")) ++ matches[i++] = xnfstrdup("dovefb"); ++ else if (test_sysfs_device("omap", "pvr")) ++ matches[i++] = xnfstrdup("pvr"); ++ else if (test_sysfs_device("omapfb", "omapfb")) ++ matches[i++] = xnfstrdup("omapfb"); ++#endif /* defined(__linux__) && defined(__arm__) */ + matches[i++] = xnfstrdup("fbdev"); + #endif + } --- xorg-server-1.11.4.orig/debian/patches/105_nvidia_fglrx_autodetect.patch +++ xorg-server-1.11.4/debian/patches/105_nvidia_fglrx_autodetect.patch @@ -0,0 +1,83 @@ +From 0366a844c36bf8424a2625425c181b9b97f35bee Mon Sep 17 00:00:00 2001 +From: Robert Hooker +Date: Wed, 1 Sep 2010 13:23:21 -0400 +Subject: [PATCH] Attempt to get nvidia and fglrx working without an xorg.conf. + +Signed-off-by: Robert Hooker +--- + hw/xfree86/common/xf86AutoConfig.c | 12 +++++++++++- + hw/xfree86/common/xf86pciBus.c | 14 +++++++++----- + 2 files changed, 20 insertions(+), 6 deletions(-) + +Index: xorg-server/hw/xfree86/common/xf86AutoConfig.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86AutoConfig.c 2011-08-24 12:52:45.775647148 +0300 ++++ xorg-server/hw/xfree86/common/xf86AutoConfig.c 2011-08-24 12:58:12.485651804 +0300 +@@ -75,6 +75,13 @@ + "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \ + "EndSection\n\n" + ++#define BUILTIN_SCREEN_SECTION_PROPRIETARY \ ++ "Section \"Screen\"\n" \ ++ "\tIdentifier\t" BUILTIN_SCREEN_NAME "\n" \ ++ "\tDevice\t" BUILTIN_DEVICE_NAME "\n" \ ++ "\tDefaultDepth\t24\n" \ ++ "EndSection\n\n" ++ + #define BUILTIN_LAYOUT_SECTION_PRE \ + "Section \"ServerLayout\"\n" \ + "\tIdentifier\t\"Builtin Default Layout\"\n" +@@ -153,7 +160,10 @@ + for (p = deviceList; *p; p++) { + snprintf(buf, sizeof(buf), BUILTIN_DEVICE_SECTION, *p, 0, *p); + AppendToConfig(buf); +- snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); ++ if( strcmp(*p, "fglrx") == 0 || strcmp(*p, "nvidia") == 0) ++ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION_PROPRIETARY, *p, 0, *p, 0); ++ else ++ snprintf(buf, sizeof(buf), BUILTIN_SCREEN_SECTION, *p, 0, *p, 0); + AppendToConfig(buf); + } + +Index: xorg-server/hw/xfree86/common/xf86pciBus.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86pciBus.c 2011-08-24 12:56:49.535650619 +0300 ++++ xorg-server/hw/xfree86/common/xf86pciBus.c 2011-08-24 12:57:52.775651523 +0300 +@@ -1107,7 +1107,10 @@ + case 0x1142: driverList[0] = "apm"; break; + case 0xedd8: driverList[0] = "ark"; break; + case 0x1a03: driverList[0] = "ast"; break; +- case 0x1002: driverList[0] = "ati"; break; ++ case 0x1002: ++ driverList[0] = "fglrx"; ++ driverList[1] = "ati"; ++ break; + case 0x102c: driverList[0] = "chips"; break; + case 0x1013: driverList[0] = "cirrus"; break; + case 0x3d3d: driverList[0] = "glint"; break; +@@ -1124,20 +1127,21 @@ + case 0x102b: driverList[0] = "mga"; break; + case 0x10c8: driverList[0] = "neomagic"; break; + case 0x10de: case 0x12d2: ++ driverList[0] = "nvidia"; + switch (dev->device_id) { + /* NV1 */ + case 0x0008: + case 0x0009: +- driverList[0] = "vesa"; ++ driverList[1] = "vesa"; + break; + /* NV3 */ + case 0x0018: + case 0x0019: +- driverList[0] = "nv"; ++ driverList[1] = "nv"; + break; + default: +- driverList[0] = "nouveau"; +- driverList[1] = "nv"; ++ driverList[1] = "nouveau"; ++ driverList[2] = "nv"; + break; + } + break; --- xorg-server-1.11.4.orig/debian/patches/02_Add-libnettle-as-option-for-sha1.diff +++ xorg-server-1.11.4/debian/patches/02_Add-libnettle-as-option-for-sha1.diff @@ -0,0 +1,90 @@ +From a6119f6cd7e47041044fcc9c15a6e3f9f189b3ed Mon Sep 17 00:00:00 2001 +From: Cyril Brulebois +Date: Sun, 14 Mar 2010 22:01:47 +0100 +Subject: [PATCH] Add libnettle as option for sha1. + +Signed-off-by: Cyril Brulebois + +[jcristau: forward-ported from 1.7 to 1.8] +Signed-off-by: Julien Cristau +--- +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac ++++ xorg-server/configure.ac +@@ -1315,7 +1315,7 @@ CORE_INCS='-I$(top_srcdir)/include -I$(t + + # SHA1 hashing + AC_ARG_WITH([sha1], +- [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto], ++ [AS_HELP_STRING([--with-sha1=libc|libmd|libgcrypt|libcrypto|libsha1|CommonCrypto|nettle], + [choose SHA1 implementation])]) + AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes]) + if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then +@@ -1398,6 +1398,16 @@ if test "x$with_sha1" = xlibcrypto; then + SHA1_CFLAGS="$OPENSSL_CFLAGS" + fi + fi ++AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes]) ++if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then ++ with_sha1=nettle ++fi ++if test "x$with_sha1" = xnettle; then ++ AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1], ++ [Use libnettle SHA1 functions]) ++ # XXX hack for d-i: use the static lib ++ SHA1_LIBS=-l:libnettle.a ++fi + AC_MSG_CHECKING([for SHA1 implementation]) + if test "x$with_sha1" = x; then + AC_MSG_ERROR([No suitable SHA1 implementation found]) +Index: xorg-server/include/dix-config.h.in +=================================================================== +--- xorg-server.orig/include/dix-config.h.in ++++ xorg-server/include/dix-config.h.in +@@ -175,6 +175,9 @@ + /* Define to use libsha1 for SHA1 */ + #undef HAVE_SHA1_IN_LIBSHA1 + ++/* Define to use libnettle SHA1 */ ++#undef HAVE_SHA1_IN_LIBNETTLE ++ + /* Define to 1 if you have the `shmctl64' function. */ + #undef HAVE_SHMCTL64 + +Index: xorg-server/os/xsha1.c +=================================================================== +--- xorg-server.orig/os/xsha1.c ++++ xorg-server/os/xsha1.c +@@ -127,6 +127,31 @@ int x_sha1_final(void *ctx, unsigned cha + return 1; + } + ++#elif defined(HAVE_SHA1_IN_LIBNETTLE) ++ ++# include ++ ++void *x_sha1_init(void) ++{ ++ struct sha1_ctx *ctx = xalloc(sizeof(*ctx)); ++ if (!ctx) ++ return NULL; ++ sha1_init(ctx); ++ return ctx; ++} ++ ++int x_sha1_update(void *ctx, void *data, int size) ++{ ++ sha1_update(ctx, size, data); ++ return 1; ++} ++ ++int x_sha1_final(void *ctx, unsigned char result[20]) ++{ ++ sha1_digest(ctx, 20, result); ++ return 1; ++} ++ + #else /* Use OpenSSL's libcrypto */ + + # include /* buggy openssl/sha.h wants size_t */ --- xorg-server-1.11.4.orig/debian/patches/209_add_legacy_bgnone_option.patch +++ xorg-server-1.11.4/debian/patches/209_add_legacy_bgnone_option.patch @@ -0,0 +1,21 @@ +Index: xorg-server/os/utils.c +=================================================================== +--- xorg-server.orig/os/utils.c 2011-08-24 12:52:44.625647130 +0300 ++++ xorg-server/os/utils.c 2011-08-24 12:57:14.805650982 +0300 +@@ -513,6 +513,7 @@ + ErrorF("-nolisten string don't listen on protocol\n"); + ErrorF("-noreset don't reset after last client exists\n"); + ErrorF("-background [none] create root window with no background\n"); ++ ErrorF("-nr (Ubuntu-specific) Synonym for -background none\n"); + ErrorF("-reset reset after last client exists\n"); + ErrorF("-p # screen-saver pattern duration (minutes)\n"); + ErrorF("-pn accept failure to listen on all ports\n"); +@@ -851,6 +852,8 @@ + UseMsg(); + } + } ++ else if ( strcmp( argv[i], "-nr") == 0) ++ bgNoneRoot = TRUE; + else if ( strcmp( argv[i], "-maxbigreqsize") == 0) { + if(++i < argc) { + long reqSizeArg = atol(argv[i]); --- xorg-server-1.11.4.orig/debian/patches/series +++ xorg-server-1.11.4/debian/patches/series @@ -0,0 +1,39 @@ +## Patches with a number < 100 are applied in debian. +## Ubuntu patches start with 100. +001_fedora_extramodes.patch +02_Add-libnettle-as-option-for-sha1.diff +07-xfree86-fix-build-with-xv-disabled.diff +#13_debian_add_xkbpath_env_variable.diff +15-nouveau.diff + +# Ubuntu patches +100_rethrow_signals.patch +105_nvidia_fglrx_autodetect.patch +111_armel-drv-fallbacks.patch +122_xext_fix_card32_overflow_in_xauth.patch +157_check_null_modes.patch +162_null_crtc_in_rotation.patch +165_man_xorg_conf_no_device_ident.patch +166_nullptr_xinerama_keyrepeat.patch +167_nullptr_xisbread.patch +168_glibc_trace_to_stderr.patch +172_cwgetbackingpicture_nullptr_check.patch +188_default_primary_to_first_busid.patch +190_cache-xkbcomp_output_for_fast_start_up.patch +191-Xorg-add-an-extra-module-path.patch +198_nohwaccess.patch +200_randr-null.patch +#201_report-real-dpi.patch +208_switch_on_release.diff +209_add_legacy_bgnone_option.patch +224_return_BadWindow_not_BadMatch.diff +225_non-root_config_paths.patch +226_fall_back_to_autoconfiguration.patch +227_null_ptr_midispcur.patch + +# Temporary, until it's reviewed & accepted upstream +500_pointer_barrier_thresholds.diff +505_query_pointer_touchscreen.patch +506_touchscreen_pointer_emulation_checks.patch +507_touchscreen_fixes.patch +508_device_off_release_buttons.patch --- xorg-server-1.11.4.orig/debian/patches/13_debian_add_xkbpath_env_variable.diff +++ xorg-server-1.11.4/debian/patches/13_debian_add_xkbpath_env_variable.diff @@ -0,0 +1,27 @@ +--- xorg-server.orig/xkb/xkbInit.c ++++ xorg-server/xkb/xkbInit.c +@@ -805,6 +805,14 @@ + extern unsigned char XkbDfltAccessXOptions; + + int ++xkbInitGlobals() ++{ ++ char * xkbpath= getenv("XKBPATH"); ++ if (xkbpath!=NULL) ++ XkbBaseDirectory= xkbpath; ++} ++ ++int + XkbProcessArguments(int argc,char *argv[],int i) + { + if (strcmp(argv[i],"-kb")==0) { +--- xorg-server.orig/os/utils.c ++++ xorg-server/os/utils.c +@@ -685,6 +685,7 @@ + */ + void InitGlobals(void) + { ++ xkbInitGlobals(); + ddxInitGlobals(); + } + --- xorg-server-1.11.4.orig/debian/patches/505_query_pointer_touchscreen.patch +++ xorg-server-1.11.4/debian/patches/505_query_pointer_touchscreen.patch @@ -0,0 +1,32 @@ +From 3d6bd9fd8bd565f4c0513b2649a678109f60bd27 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Tue, 3 Apr 2012 17:18:43 -0700 +Subject: [PATCH] Use touch state when querying pointer through core protocol + +QueryPointer is part of the core protocol. As such, it knows nothing +about touch devices. Touches are converted to button 1 press, pointer +motion, and button 1 release for core clients, so we should ensure the +pointer state mask has button 1 set when XQueryPointer is used. + +Signed-off-by: Chase Douglas +--- + dix/events.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/dix/events.c b/dix/events.c +index 4470947..b9f9cfa 100644 +--- a/dix/events.c ++++ b/dix/events.c +@@ -5098,8 +5098,7 @@ ProcQueryPointer(ClientPtr client) + memset(&rep, 0, sizeof(xQueryPointerReply)); + rep.type = X_Reply; + rep.sequenceNumber = client->sequence; +- rep.mask = mouse->button ? (mouse->button->state) : 0; +- rep.mask |= XkbStateFieldFromRec(&keyboard->key->xkbInfo->state); ++ rep.mask = event_get_corestate(mouse, keyboard); + rep.length = 0; + rep.root = (GetCurrentRootWindow(mouse))->drawable.id; + rep.rootX = pSprite->hot.x; +-- +1.7.9.1 + --- xorg-server-1.11.4.orig/debian/patches/001_fedora_extramodes.patch +++ xorg-server-1.11.4/debian/patches/001_fedora_extramodes.patch @@ -0,0 +1,83 @@ +From: Adam Jackson +Date: Sun, 28 Oct 2007 09:37:52 +0100 +Subject: [PATCH] Fedora extra modes list + +--- +--- a/hw/xfree86/common/extramodes ++++ b/hw/xfree86/common/extramodes +@@ -3,16 +3,75 @@ + // + // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ + // ++// NOTE: Please keep all video modes sorted in order of X res, then Y res for ++// ease of maintenance and readability. + + # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz + ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + ++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync ++ ++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz ++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync ++ ++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz ++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync ++ ++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync ++ ++# 1152x864 @ 85Hz (Red Hat custom modeline) ++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync ++ ++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync ++ ++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz ++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync ++ ++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz ++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync ++ + # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz + ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + ++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz ++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync ++ + # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz + ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + ++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync ++ ++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz ++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync ++ ++# 1600x1024 for SGI 1600 SW ++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync ++ ++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz ++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync ++ ++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz ++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync ++ ++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz ++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync ++ ++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz ++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ + # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz + Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + --- xorg-server-1.11.4.orig/debian/patches/224_return_BadWindow_not_BadMatch.diff +++ xorg-server-1.11.4/debian/patches/224_return_BadWindow_not_BadMatch.diff @@ -0,0 +1,47 @@ +commit ef492e9797b6d4f6bbc25e86bedc24477819fde7 +Author: Chris Halse Rogers +Date: Thu Jan 5 01:22:39 2012 +0000 + + dix: Return BadWindow rather than BadMatch from dixLookupWindow + + dixLookupWindow uses dixLookupDrawable internally, which returns + BadMatch when the XID matches a non-Window drawable. Users + of dixLookupWindow don't care about this, just that it's not + a valid Window. + + This is a generalised version of the fix for X.Org Bug 23562, + where GetProperty was incorrectly returning BadMatch. Auditing other + window requests, all that I checked would incorrectly return BadMatch + in these circumstances. An incomplete list of calls that could + incorrectly return BadMatch is: ListProperties, SetSelectionOwner, + {Destroy,Map,Unmap}{,Sub}Window. + + None of the callers of dixLookupWindow, except for GetProperty, check + for BadMatch + + Signed-off-by: Christopher James Halse Rogers + Reviewed-by: Daniel Stone + Reviewed-by: Adam Jackson + Signed-off-by: Keith Packard + +diff --git a/dix/dixutils.c b/dix/dixutils.c +index 2b5391f..da26dc1 100644 +--- a/dix/dixutils.c ++++ b/dix/dixutils.c +@@ -224,7 +224,15 @@ dixLookupWindow(WindowPtr *pWin, XID id, ClientPtr client, Mask access) + { + int rc; + rc = dixLookupDrawable((DrawablePtr*)pWin, id, client, M_WINDOW, access); +- return (rc == BadDrawable) ? BadWindow : rc; ++ /* dixLookupDrawable returns BadMatch iff id is a valid Drawable ++ but is not a Window. Users of dixLookupWindow expect a BadWindow ++ error in this case; they don't care that it's a valid non-Window XID */ ++ if (rc == BadMatch) ++ rc = BadWindow; ++ /* Similarly, users of dixLookupWindow don't want BadDrawable. */ ++ if (rc == BadDrawable) ++ rc = BadWindow; ++ return rc; + } + + int --- xorg-server-1.11.4.orig/debian/patches/225_non-root_config_paths.patch +++ xorg-server-1.11.4/debian/patches/225_non-root_config_paths.patch @@ -0,0 +1,247 @@ +From ead968a4300c0adeff89b9886e888b6d284c75cc Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Sat, 17 Dec 2011 01:36:51 +0700 +Subject: [PATCH] xserver: check for elevated privileges not uid=0 + +This allows us to run the server as a normal user whilst still +being able to use the -modulepath, -logfile and -config switches +We define a xf86PrivsElevated which will do the checks and cache +the result in case it is called more than once. +Also renamed the paths #defines to match their new meaning. +Original discussion which led to this patch can be found here: +http://lists.freedesktop.org/archives/xorg-devel/2011-September/025853.html + +Signed-off-by: Antoine Martin +Tested-by: Michal Suchanek +Reviewed-by: Jamey Sharp +Reviewed-by: Adam Jackson +--- + configure.ac | 2 +- + hw/xfree86/common/xf86Config.c | 28 +++++++------- + hw/xfree86/common/xf86Init.c | 78 +++++++++++++++++++++++++++++++++++----- + hw/xfree86/common/xf86Priv.h | 1 + + include/xorg-config.h.in | 6 +++ + 5 files changed, 91 insertions(+), 24 deletions(-) + +--- a/configure.ac ++++ b/configure.ac +@@ -210,7 +210,8 @@ dnl Checks for library functions. + AC_FUNC_VPRINTF + AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \ + strtol getopt getopt_long vsnprintf walkcontext backtrace \ +- getisax getzoneid shmctl64 strcasestr ffs vasprintf]) ++ getisax getzoneid shmctl64 strcasestr ffs vasprintf issetugid \ ++ getresuid]) + AC_FUNC_ALLOCA + dnl Old HAS_* names used in os/*.c. + AC_CHECK_FUNC([getdtablesize], +--- a/hw/xfree86/common/xf86Config.c ++++ b/hw/xfree86/common/xf86Config.c +@@ -72,8 +72,8 @@ + * These paths define the way the config file search is done. The escape + * sequences are documented in parser/scan.c. + */ +-#ifndef ROOT_CONFIGPATH +-#define ROOT_CONFIGPATH "%A," "%R," \ ++#ifndef ALL_CONFIGPATH ++#define ALL_CONFIGPATH "%A," "%R," \ + "/etc/X11/%R," "%P/etc/X11/%R," \ + "%E," "%F," \ + "/etc/X11/%F," "%P/etc/X11/%F," \ +@@ -83,8 +83,8 @@ + "%P/lib/X11/%X.%H," \ + "%P/lib/X11/%X" + #endif +-#ifndef USER_CONFIGPATH +-#define USER_CONFIGPATH "/etc/X11/%S," "%P/etc/X11/%S," \ ++#ifndef RESTRICTED_CONFIGPATH ++#define RESTRICTED_CONFIGPATH "/etc/X11/%S," "%P/etc/X11/%S," \ + "/etc/X11/%G," "%P/etc/X11/%G," \ + "/etc/X11/%X," "/etc/%X," \ + "%P/etc/X11/%X.%H," \ +@@ -92,14 +92,14 @@ + "%P/lib/X11/%X.%H," \ + "%P/lib/X11/%X" + #endif +-#ifndef ROOT_CONFIGDIRPATH +-#define ROOT_CONFIGDIRPATH "%A," "%R," \ ++#ifndef ALL_CONFIGDIRPATH ++#define ALL_CONFIGDIRPATH "%A," "%R," \ + "/etc/X11/%R," "%C/X11/%R," \ + "/etc/X11/%X," "%C/X11/%X" + #endif +-#ifndef USER_CONFIGDIRPATH +-#define USER_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ +- "/etc/X11/%X," "%C/X11/%X" ++#ifndef RESTRICTED_CONFIGDIRPATH ++#define RESTRICTED_CONFIGDIRPATH "/etc/X11/%R," "%C/X11/%R," \ ++ "/etc/X11/%X," "%C/X11/%X" + #endif + #ifndef SYS_CONFIGDIRPATH + #define SYS_CONFIGDIRPATH "/usr/share/X11/%X," "%D/X11/%X" +@@ -2361,12 +2361,12 @@ xf86HandleConfigFile(Bool autoconfig) + Bool implicit_layout = FALSE; + + if (!autoconfig) { +- if (getuid() == 0) { +- filesearch = ROOT_CONFIGPATH; +- dirsearch = ROOT_CONFIGDIRPATH; ++ if (!xf86PrivsElevated()) { ++ filesearch = ALL_CONFIGPATH; ++ dirsearch = ALL_CONFIGDIRPATH; + } else { +- filesearch = USER_CONFIGPATH; +- dirsearch = USER_CONFIGDIRPATH; ++ filesearch = RESTRICTED_CONFIGPATH; ++ dirsearch = RESTRICTED_CONFIGDIRPATH; + } + + if (xf86ConfigFile) +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -236,6 +236,65 @@ xf86PrintMarkers(void) + LogPrintMarkers(); + } + ++Bool xf86PrivsElevated(void) ++{ ++ static Bool privsTested = FALSE; ++ static Bool privsElevated = TRUE; ++ ++ if (!privsTested) { ++#if defined(WIN32) ++ privsElevated = FALSE; ++#else ++ if ((getuid() != geteuid()) || (getgid() != getegid())) { ++ privsElevated = TRUE; ++ } else { ++#if defined(HAVE_ISSETUGID) ++ privsElevated = issetugid(); ++#elif defined(HAVE_GETRESUID) ++ uid_t ruid, euid, suid; ++ gid_t rgid, egid, sgid; ++ ++ if ((getresuid(&ruid, &euid, &suid) == 0) && ++ (getresgid(&rgid, &egid, &sgid) == 0)) { ++ privsElevated = (euid != suid) || (egid != sgid); ++ } ++ else { ++ printf("Failed getresuid or getresgid"); ++ /* Something went wrong, make defensive assumption */ ++ privsElevated = TRUE; ++ } ++#else ++ if (getuid()==0) { ++ /* running as root: uid==euid==0 */ ++ privsElevated = FALSE; ++ } ++ else { ++ /* ++ * If there are saved ID's the process might still be privileged ++ * even though the above test succeeded. If issetugid() and ++ * getresgid() aren't available, test this by trying to set ++ * euid to 0. ++ */ ++ unsigned int oldeuid; ++ oldeuid = geteuid(); ++ ++ if (seteuid(0) != 0) { ++ privsElevated = FALSE; ++ } else { ++ if (seteuid(oldeuid) != 0) { ++ FatalError("Failed to drop privileges. Exiting\n"); ++ } ++ privsElevated = TRUE; ++ } ++ } ++#endif ++ } ++#endif ++ privsTested = TRUE; ++ } ++ return privsElevated; ++} ++ + static Bool + xf86CreateRootWindow(WindowPtr pWin) + { +@@ -855,7 +914,7 @@ OsVendorInit(void) + + #ifdef O_NONBLOCK + if (!beenHere) { +- if (geteuid() == 0 && getuid() != geteuid()) ++ if (xf86PrivsElevated()) + { + int status; + +@@ -1064,10 +1123,11 @@ ddxProcessArgument(int argc, char **argv + FatalError("Required argument to %s not specified\n", argv[i]); \ + } + +- /* First the options that are only allowed for root */ ++ /* First the options that are not allowed with elevated privileges */ + if (!strcmp(argv[i], "-modulepath") || !strcmp(argv[i], "-logfile")) { +- if ( (geteuid() == 0) && (getuid() != 0) ) { +- FatalError("The '%s' option can only be used by root.\n", argv[i]); ++ if (xf86PrivsElevated()) { ++ FatalError("The '%s' option cannot be used with " ++ "elevated privileges.\n", argv[i]); + } + else if (!strcmp(argv[i], "-modulepath")) + { +@@ -1095,9 +1155,9 @@ ddxProcessArgument(int argc, char **argv + if (!strcmp(argv[i], "-config") || !strcmp(argv[i], "-xf86config")) + { + CHECK_FOR_REQUIRED_ARGUMENT(); +- if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) { ++ if (xf86PrivsElevated() && !xf86PathIsSafe(argv[i + 1])) { + FatalError("\nInvalid argument for %s\n" +- "\tFor non-root users, the file specified with %s must be\n" ++ "\tWith elevated privileges, the file specified with %s must be\n" + "\ta relative path and must not contain any \"..\" elements.\n" + "\tUsing default "__XCONFIGFILE__" search path.\n\n", + argv[i], argv[i]); +@@ -1108,9 +1168,9 @@ ddxProcessArgument(int argc, char **argv + if (!strcmp(argv[i], "-configdir")) + { + CHECK_FOR_REQUIRED_ARGUMENT(); +- if (getuid() != 0 && !xf86PathIsSafe(argv[i + 1])) { ++ if (xf86PrivsElevated() && !xf86PathIsSafe(argv[i + 1])) { + FatalError("\nInvalid argument for %s\n" +- "\tFor non-root users, the file specified with %s must be\n" ++ "\tWith elevated privileges, the file specified with %s must be\n" + "\ta relative path and must not contain any \"..\" elements.\n" + "\tUsing default "__XCONFIGDIR__" search path.\n\n", + argv[i], argv[i]); +@@ -1384,7 +1444,7 @@ ddxUseMsg(void) + ErrorF("\n"); + ErrorF("\n"); + ErrorF("Device Dependent Usage\n"); +- if (getuid() == 0 || geteuid() != 0) ++ if (!xf86PrivsElevated()) + { + ErrorF("-modulepath paths specify the module search path\n"); + ErrorF("-logfile file specify a log file name\n"); +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -148,6 +148,7 @@ extern _X_EXPORT Bool xf86LoadModules(ch + extern _X_EXPORT int xf86SetVerbosity(int verb); + extern _X_EXPORT int xf86SetLogVerbosity(int verb); + extern _X_EXPORT Bool xf86CallDriverProbe( struct _DriverRec * drv, Bool detect_only ); ++extern _X_EXPORT Bool xf86PrivsElevated(void); + + #endif /* _NO_XF86_PROTOTYPES */ + +--- a/include/xorg-config.h.in ++++ b/include/xorg-config.h.in +@@ -145,4 +145,10 @@ + /* Build with libdrm support */ + #undef WITH_LIBDRM + ++/* Have setugid */ ++#undef HAVE_ISSETUGID ++ ++/* Have getresuid */ ++#undef HAVE_GETRESUID ++ + #endif /* _XORG_CONFIG_H_ */ --- xorg-server-1.11.4.orig/debian/patches/200_randr-null.patch +++ xorg-server-1.11.4/debian/patches/200_randr-null.patch @@ -0,0 +1,14 @@ +=== modified file 'randr/randr.c' +Index: xorg-server/randr/randr.c +=================================================================== +--- xorg-server.orig/randr/randr.c 2011-08-24 12:52:44.745647133 +0300 ++++ xorg-server/randr/randr.c 2011-08-24 12:57:30.195651199 +0300 +@@ -235,7 +235,7 @@ + /* + * Calling function best set these function vectors + */ +- pScrPriv->rrGetInfo = 0; ++ pScrPriv->rrGetInfo = NULL; + pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width; + pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height; + --- xorg-server-1.11.4.orig/debian/patches/219_fedora-pointer-barriers.diff +++ xorg-server-1.11.4/debian/patches/219_fedora-pointer-barriers.diff @@ -0,0 +1,1020 @@ +From 14f1112bec18ccece8e732fe6c200a56546230c7 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Thu, 17 Mar 2011 13:56:17 -0400 +Subject: [PATCH] CRTC confine and pointer barriers + +--- + dix/events.c | 7 + + dix/getevents.c | 12 +- + include/dix.h | 1 + + include/protocol-versions.h | 2 +- + mi/mipointer.c | 16 ++- + mi/mipointer.h | 6 + + randr/randr.c | 2 + + randr/randrstr.h | 4 + + randr/rrcrtc.c | 155 ++++++++++++++++ + xfixes/cursor.c | 399 ++++++++++++++++++++++++++++++++++++++++++- + xfixes/xfixes.c | 24 ++- + xfixes/xfixes.h | 17 ++ + xfixes/xfixesint.h | 16 ++ + 14 files changed, 658 insertions(+), 16 deletions(-) + +Index: xorg-server/dix/events.c +=================================================================== +--- xorg-server.orig/dix/events.c 2011-08-24 12:52:44.325647127 +0300 ++++ xorg-server/dix/events.c 2011-08-24 12:57:24.685651121 +0300 +@@ -328,6 +328,13 @@ + return dev->type == MASTER_POINTER || dev->type == MASTER_KEYBOARD; + } + ++Bool ++IsFloating(DeviceIntPtr dev) ++{ ++ return GetMaster(dev, MASTER_KEYBOARD) == NULL; ++} ++ ++ + /** + * Max event opcode. + */ +Index: xorg-server/dix/getevents.c +=================================================================== +--- xorg-server.orig/dix/getevents.c 2011-08-24 12:52:44.315647128 +0300 ++++ xorg-server/dix/getevents.c 2011-08-24 12:57:20.625651063 +0300 +@@ -816,7 +816,11 @@ + * miPointerSetPosition() and then scale back into device coordinates (if + * needed). miPSP will change x/y if the screen was crossed. + * ++ * The coordinates provided are always absolute. The parameter mode whether ++ * it was relative or absolute movement that landed us at those coordinates. ++ * + * @param dev The device to be moved. ++ * @param mode Movement mode (Absolute or Relative) + * @param x Pointer to current x-axis value, may be modified. + * @param y Pointer to current y-axis value, may be modified. + * @param x_frac Fractional part of current x-axis value, may be modified. +@@ -828,7 +832,8 @@ + * @param screeny_frac Fractional part of screen y coordinate, as above. + */ + static void +-positionSprite(DeviceIntPtr dev, int *x, int *y, float x_frac, float y_frac, ++positionSprite(DeviceIntPtr dev, int mode, ++ int *x, int *y, float x_frac, float y_frac, + ScreenPtr scr, int *screenx, int *screeny, float *screenx_frac, float *screeny_frac) + { + int old_screenx, old_screeny; +@@ -867,7 +872,7 @@ + old_screeny = *screeny; + /* This takes care of crossing screens for us, as well as clipping + * to the current screen. */ +- miPointerSetPosition(dev, screenx, screeny); ++ _miPointerSetPosition(dev, mode, screenx, screeny); + + if (dev->u.master) { + dev->u.master->last.valuators[0] = *screenx; +@@ -1202,7 +1207,8 @@ + if ((flags & POINTER_NORAW) == 0) + set_raw_valuators(raw, &mask, raw->valuators.data); + +- positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); ++ positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative, ++ &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); + updateHistory(pDev, &mask, ms); + + /* Update the valuators with the true value sent to the client*/ +Index: xorg-server/include/dix.h +=================================================================== +--- xorg-server.orig/include/dix.h 2011-08-24 12:52:44.355647127 +0300 ++++ xorg-server/include/dix.h 2011-08-24 12:57:24.695651123 +0300 +@@ -570,6 +570,7 @@ + extern Bool _X_EXPORT IsKeyboardDevice(DeviceIntPtr dev); + extern Bool IsPointerEvent(InternalEvent *event); + extern _X_EXPORT Bool IsMaster(DeviceIntPtr dev); ++extern _X_EXPORT Bool IsFloating(DeviceIntPtr dev); + + extern _X_HIDDEN void CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master); + extern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what); +Index: xorg-server/include/protocol-versions.h +=================================================================== +--- xorg-server.orig/include/protocol-versions.h 2011-08-24 12:52:44.365647129 +0300 ++++ xorg-server/include/protocol-versions.h 2011-08-24 12:57:20.735651065 +0300 +@@ -126,7 +126,7 @@ + #define SERVER_XF86VIDMODE_MINOR_VERSION 2 + + /* Fixes */ +-#define SERVER_XFIXES_MAJOR_VERSION 4 ++#define SERVER_XFIXES_MAJOR_VERSION 5 + #define SERVER_XFIXES_MINOR_VERSION 0 + + /* X Input */ +Index: xorg-server/mi/mipointer.c +=================================================================== +--- xorg-server.orig/mi/mipointer.c 2011-08-24 12:56:49.645650622 +0300 ++++ xorg-server/mi/mipointer.c 2011-08-24 12:56:49.825650624 +0300 +@@ -229,6 +229,10 @@ + SetupScreen (pScreen); + + GenerateEvent = generateEvent; ++ ++ if (pScreen->ConstrainCursorHarder) ++ pScreen->ConstrainCursorHarder(pDev, pScreen, Absolute, &x, &y); ++ + /* device dependent - must pend signal and call miPointerWarpCursor */ + (*pScreenPriv->screenFuncs->WarpCursor) (pDev, pScreen, x, y); + if (!generateEvent) +@@ -488,7 +492,7 @@ + } + + void +-miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) ++_miPointerSetPosition(DeviceIntPtr pDev, int mode, int *x, int *y) + { + miPointerScreenPtr pScreenPriv; + ScreenPtr pScreen; +@@ -532,6 +536,9 @@ + if (*y >= pPointer->limits.y2) + *y = pPointer->limits.y2 - 1; + ++ if (pScreen->ConstrainCursorHarder) ++ pScreen->ConstrainCursorHarder(pDev, pScreen, mode, x, y); ++ + if (pPointer->x == *x && pPointer->y == *y && + pPointer->pScreen == pScreen) + return; +@@ -539,6 +546,13 @@ + miPointerMoveNoEvent(pDev, pScreen, *x, *y); + } + ++/* ABI hack */ ++void ++miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) ++{ ++ _miPointerSetPosition(pDev, Absolute, x, y); ++} ++ + void + miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y) + { +Index: xorg-server/mi/mipointer.h +=================================================================== +--- xorg-server.orig/mi/mipointer.h 2011-08-24 12:52:44.375647128 +0300 ++++ xorg-server/mi/mipointer.h 2011-08-24 12:56:49.825650624 +0300 +@@ -131,6 +131,12 @@ + + /* Moves the cursor to the specified position. May clip the co-ordinates: + * x and y are modified in-place. */ ++extern _X_EXPORT void _miPointerSetPosition( ++ DeviceIntPtr pDev, ++ int mode, ++ int *x, ++ int *y); ++ + extern _X_EXPORT void miPointerSetPosition( + DeviceIntPtr pDev, + int *x, +Index: xorg-server/randr/randr.c +=================================================================== +--- xorg-server.orig/randr/randr.c 2011-08-24 12:56:49.745650625 +0300 ++++ xorg-server/randr/randr.c 2011-08-24 12:56:49.825650624 +0300 +@@ -270,6 +270,8 @@ + + wrap (pScrPriv, pScreen, CloseScreen, RRCloseScreen); + ++ pScreen->ConstrainCursorHarder = RRConstrainCursorHarder; ++ + pScrPriv->numOutputs = 0; + pScrPriv->outputs = NULL; + pScrPriv->numCrtcs = 0; +Index: xorg-server/randr/randrstr.h +=================================================================== +--- xorg-server.orig/randr/randrstr.h 2011-08-24 12:52:44.305647126 +0300 ++++ xorg-server/randr/randrstr.h 2011-08-24 12:56:49.825650624 +0300 +@@ -297,6 +297,7 @@ + int rate; + int size; + #endif ++ Bool discontiguous; + } rrScrPrivRec, *rrScrPrivPtr; + + extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec; +@@ -700,6 +701,9 @@ + int + ProcRRSetPanning (ClientPtr client); + ++void ++RRConstrainCursorHarder (DeviceIntPtr, ScreenPtr, int, int *, int *); ++ + /* rrdispatch.c */ + extern _X_EXPORT Bool + RRClientKnowsRates (ClientPtr pClient); +Index: xorg-server/randr/rrcrtc.c +=================================================================== +--- xorg-server.orig/randr/rrcrtc.c 2011-08-24 12:52:44.285647124 +0300 ++++ xorg-server/randr/rrcrtc.c 2011-08-24 12:56:49.825650624 +0300 +@@ -1,5 +1,6 @@ + /* + * Copyright © 2006 Keith Packard ++ * Copyright 2010 Red Hat, Inc + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that +@@ -22,6 +23,7 @@ + + #include "randrstr.h" + #include "swaprep.h" ++#include "mipointer.h" + + RESTYPE RRCrtcType; + +@@ -292,6 +294,92 @@ + return FALSE; + } + ++static void ++crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom) ++{ ++ *left = crtc->x; ++ *top = crtc->y; ++ ++ switch (crtc->rotation) { ++ case RR_Rotate_0: ++ case RR_Rotate_180: ++ default: ++ *right = crtc->x + crtc->mode->mode.width; ++ *bottom = crtc->y + crtc->mode->mode.height; ++ return; ++ case RR_Rotate_90: ++ case RR_Rotate_270: ++ *right = crtc->x + crtc->mode->mode.height; ++ *bottom = crtc->y + crtc->mode->mode.width; ++ return; ++ } ++} ++ ++/* overlapping counts as adjacent */ ++static Bool ++crtcs_adjacent(const RRCrtcPtr a, const RRCrtcPtr b) ++{ ++ /* left, right, top, bottom... */ ++ int al, ar, at, ab; ++ int bl, br, bt, bb; ++ int cl, cr, ct, cb; /* the overlap, if any */ ++ ++ crtc_bounds(a, &al, &ar, &at, &ab); ++ crtc_bounds(b, &bl, &br, &bt, &bb); ++ ++ cl = max(al, bl); ++ cr = min(ar, br); ++ ct = max(at, bt); ++ cb = min(ab, bb); ++ ++ return (cl <= cr) && (ct <= cb); ++} ++ ++/* Depth-first search and mark all CRTCs reachable from cur */ ++static void ++mark_crtcs (rrScrPrivPtr pScrPriv, int *reachable, int cur) ++{ ++ int i; ++ reachable[cur] = TRUE; ++ for (i = 0; i < pScrPriv->numCrtcs; ++i) { ++ if (reachable[i] || !pScrPriv->crtcs[i]->mode) ++ continue; ++ if (crtcs_adjacent(pScrPriv->crtcs[cur], pScrPriv->crtcs[i])) ++ mark_crtcs(pScrPriv, reachable, i); ++ } ++} ++ ++static void ++RRComputeContiguity (ScreenPtr pScreen) ++{ ++ rrScrPriv(pScreen); ++ Bool discontiguous = TRUE; ++ int i, n = pScrPriv->numCrtcs; ++ ++ int *reachable = calloc(n, sizeof(int)); ++ if (!reachable) ++ goto out; ++ ++ /* Find first enabled CRTC and start search for reachable CRTCs from it */ ++ for (i = 0; i < n; ++i) { ++ if (pScrPriv->crtcs[i]->mode) { ++ mark_crtcs(pScrPriv, reachable, i); ++ break; ++ } ++ } ++ ++ /* Check that all enabled CRTCs were marked as reachable */ ++ for (i = 0; i < n; ++i) ++ if (pScrPriv->crtcs[i]->mode && !reachable[i]) ++ goto out; ++ ++ discontiguous = FALSE; ++ ++out: ++ free(reachable); ++ pScrPriv->discontiguous = discontiguous; ++} ++ + /* + * Request that the Crtc be reconfigured + */ +@@ -306,6 +394,7 @@ + { + ScreenPtr pScreen = crtc->pScreen; + Bool ret = FALSE; ++ Bool recompute = TRUE; + rrScrPriv(pScreen); + + /* See if nothing changed */ +@@ -318,6 +407,7 @@ + !RRCrtcPendingProperties (crtc) && + !RRCrtcPendingTransform (crtc)) + { ++ recompute = FALSE; + ret = TRUE; + } + else +@@ -381,6 +471,10 @@ + RRPostPendingProperties (outputs[o]); + } + } ++ ++ if (recompute) ++ RRComputeContiguity(pScreen); ++ + return ret; + } + +@@ -1349,3 +1443,64 @@ + free(reply); + return Success; + } ++ ++void ++RRConstrainCursorHarder(DeviceIntPtr pDev, ScreenPtr pScreen, int mode, int *x, int *y) ++{ ++ rrScrPriv (pScreen); ++ int i; ++ ++ /* intentional dead space -> let it float */ ++ if (pScrPriv->discontiguous) ++ return; ++ ++ /* if we're moving inside a crtc, we're fine */ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) { ++ RRCrtcPtr crtc = pScrPriv->crtcs[i]; ++ ++ int left, right, top, bottom; ++ ++ if (!crtc->mode) ++ continue; ++ ++ crtc_bounds(crtc, &left, &right, &top, &bottom); ++ ++ if ((*x >= left) && (*x <= right) && (*y >= top) && (*y <= bottom)) ++ return; ++ } ++ ++ /* if we're trying to escape, clamp to the CRTC we're coming from */ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) { ++ RRCrtcPtr crtc = pScrPriv->crtcs[i]; ++ int nx, ny; ++ int left, right, top, bottom; ++ ++ if (!crtc->mode) ++ continue; ++ ++ crtc_bounds(crtc, &left, &right, &top, &bottom); ++ miPointerGetPosition(pDev, &nx, &ny); ++ ++ if ((nx >= left) && (nx <= right) && (ny >= top) && (ny <= bottom)) { ++ if ((*x <= left) || (*x >= right)) { ++ int dx = *x - nx; ++ ++ if (dx > 0) ++ *x = right; ++ else if (dx < 0) ++ *x = left; ++ } ++ ++ if ((*y <= top) || (*y >= bottom)) { ++ int dy = *y - ny; ++ ++ if (dy > 0) ++ *y = bottom; ++ else if (dy < 0) ++ *y = top; ++ } ++ ++ return; ++ } ++ } ++} +Index: xorg-server/xfixes/cursor.c +=================================================================== +--- xorg-server.orig/xfixes/cursor.c 2011-08-24 12:52:44.345647126 +0300 ++++ xorg-server/xfixes/cursor.c 2011-08-24 12:56:49.825650624 +0300 +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -50,13 +51,16 @@ + #include "cursorstr.h" + #include "dixevents.h" + #include "servermd.h" ++#include "mipointer.h" + #include "inputstr.h" + #include "windowstr.h" + #include "xace.h" ++#include "list.h" + + static RESTYPE CursorClientType; + static RESTYPE CursorHideCountType; + static RESTYPE CursorWindowType; ++RESTYPE PointerBarrierType; + static CursorPtr CursorCurrent[MAXDEVICES]; + + static DevPrivateKeyRec CursorScreenPrivateKeyRec; +@@ -107,6 +111,14 @@ + XID resource; + } CursorHideCountRec; + ++typedef struct PointerBarrierClient *PointerBarrierClientPtr; ++ ++struct PointerBarrierClient { ++ ScreenPtr screen; ++ struct PointerBarrier barrier; ++ struct list entry; ++}; ++ + /* + * Wrap DisplayCursor to catch cursor change events + */ +@@ -114,7 +126,9 @@ + typedef struct _CursorScreen { + DisplayCursorProcPtr DisplayCursor; + CloseScreenProcPtr CloseScreen; ++ ConstrainCursorHarderProcPtr ConstrainCursorHarder; + CursorHideCountPtr pCursorHideCounts; ++ struct list barriers; + } CursorScreenRec, *CursorScreenPtr; + + #define GetCursorScreen(s) ((CursorScreenPtr)dixLookupPrivate(&(s)->devPrivates, CursorScreenPrivateKey)) +@@ -184,9 +198,11 @@ + Bool ret; + CloseScreenProcPtr close_proc; + DisplayCursorProcPtr display_proc; ++ ConstrainCursorHarderProcPtr constrain_proc; + + Unwrap (cs, pScreen, CloseScreen, close_proc); + Unwrap (cs, pScreen, DisplayCursor, display_proc); ++ Unwrap (cs, pScreen, ConstrainCursorHarder, constrain_proc); + deleteCursorHideCountsForScreen(pScreen); + ret = (*pScreen->CloseScreen) (index, pScreen); + free(cs); +@@ -1029,6 +1045,382 @@ + return 1; + } + ++static BOOL ++barrier_is_horizontal(const struct PointerBarrier *barrier) ++{ ++ return barrier->y1 == barrier->y2; ++} ++ ++static BOOL ++barrier_is_vertical(const struct PointerBarrier *barrier) ++{ ++ return barrier->x1 == barrier->x2; ++} ++ ++/** ++ * @return The set of barrier movement directions the movement vector ++ * x1/y1 → x2/y2 represents. ++ */ ++int ++barrier_get_direction(int x1, int y1, int x2, int y2) ++{ ++ int direction = 0; ++ ++ /* which way are we trying to go */ ++ if (x2 > x1) ++ direction |= BarrierPositiveX; ++ if (x2 < x1) ++ direction |= BarrierNegativeX; ++ if (y2 > y1) ++ direction |= BarrierPositiveY; ++ if (y2 < y1) ++ direction |= BarrierNegativeY; ++ ++ return direction; ++} ++ ++/** ++ * Test if the barrier may block movement in the direction defined by ++ * x1/y1 → x2/y2. This function only tests whether the directions could be ++ * blocked, it does not test if the barrier actually blocks the movement. ++ * ++ * @return TRUE if the barrier blocks the direction of movement or FALSE ++ * otherwise. ++ */ ++BOOL ++barrier_is_blocking_direction(const struct PointerBarrier *barrier, int direction) ++{ ++ /* Barriers define which way is ok, not which way is blocking */ ++ return (barrier->directions & direction) != direction; ++} ++ ++/** ++ * Test if the movement vector x1/y1 → x2/y2 is intersecting with the ++ * barrier. A movement vector with the startpoint or endpoint adjacent to ++ * the barrier itself counts as intersecting. ++ * ++ * @param x1 X start coordinate of movement vector ++ * @param y1 Y start coordinate of movement vector ++ * @param x2 X end coordinate of movement vector ++ * @param y2 Y end coordinate of movement vector ++ * @param[out] distance The distance between the start point and the ++ * intersection with the barrier (if applicable). ++ * @return TRUE if the barrier intersects with the given vector ++ */ ++BOOL ++barrier_is_blocking(const struct PointerBarrier *barrier, ++ int x1, int y1, int x2, int y2, ++ double *distance) ++{ ++ BOOL rc = FALSE; ++ float ua, ub, ud; ++ int dir = barrier_get_direction(x1, y1, x2, y2); ++ ++ /* Algorithm below doesn't handle edge cases well, hence the extra ++ * checks. */ ++ if (barrier_is_vertical(barrier)) { ++ /* handle immediate barrier adjacency, moving away */ ++ if (dir & BarrierPositiveX && x1 == barrier->x1) ++ return FALSE; ++ if (dir & BarrierNegativeX && x1 == (barrier->x1 - 1)) ++ return FALSE; ++ /* startpoint adjacent to barrier, moving towards -> block */ ++ if (x1 == barrier->x1 && y1 >= barrier->y1 && y1 <= barrier->y2) { ++ *distance = 0; ++ return TRUE; ++ } ++ } else { ++ /* handle immediate barrier adjacency, moving away */ ++ if (dir & BarrierPositiveY && y1 == barrier->y1) ++ return FALSE; ++ if (dir & BarrierNegativeY && y1 == (barrier->y1 - 1)) ++ return FALSE; ++ /* startpoint adjacent to barrier, moving towards -> block */ ++ if (y1 == barrier->y1 && x1 >= barrier->x1 && x1 <= barrier->x2) { ++ *distance = 0; ++ return TRUE; ++ } ++ } ++ ++ /* not an edge case, compute distance */ ++ ua = 0; ++ ud = (barrier->y2 - barrier->y1) * (x2 - x1) - (barrier->x2 - barrier->x1) * (y2 - y1); ++ if (ud != 0) { ++ ua = ((barrier->x2 - barrier->x1) * (y1 - barrier->y1) - ++ (barrier->y2 - barrier->y1) * (x1 - barrier->x1)) / ud; ++ ub = ((x2 - x1) * (y1 - barrier->y1) - ++ (y2 - y1) * (x1 - barrier->x1)) / ud; ++ if (ua < 0 || ua > 1 || ub < 0 || ub > 1) ++ ua = 0; ++ } ++ ++ if (ua > 0 && ua <= 1) ++ { ++ double ix = barrier->x1 + ua * (barrier->x2 - barrier->x1); ++ double iy = barrier->y1 + ua * (barrier->y2 - barrier->y1); ++ ++ *distance = sqrt(pow(x1 - ix, 2) + pow(y1 - iy, 2)); ++ rc = TRUE; ++ } ++ ++ return rc; ++} ++ ++/** ++ * Find the nearest barrier that is blocking movement from x1/y1 to x2/y2. ++ * ++ * @param dir Only barriers blocking movement in direction dir are checked ++ * @param x1 X start coordinate of movement vector ++ * @param y1 Y start coordinate of movement vector ++ * @param x2 X end coordinate of movement vector ++ * @param y2 Y end coordinate of movement vector ++ * @return The barrier nearest to the movement origin that blocks this movement. ++ */ ++static struct PointerBarrier* ++barrier_find_nearest(CursorScreenPtr cs, int dir, ++ int x1, int y1, int x2, int y2) ++{ ++ struct PointerBarrierClient *c; ++ struct PointerBarrier *nearest = NULL; ++ double min_distance = INT_MAX; /* can't get higher than that in X anyway */ ++ ++ list_for_each_entry(c, &cs->barriers, entry) { ++ struct PointerBarrier *b = &c->barrier; ++ double distance; ++ ++ if (!barrier_is_blocking_direction(b, dir)) ++ continue; ++ ++ if (barrier_is_blocking(b, x1, y1, x2, y2, &distance)) ++ { ++ if (min_distance > distance) ++ { ++ min_distance = distance; ++ nearest = b; ++ } ++ } ++ } ++ ++ return nearest; ++} ++ ++/** ++ * Clamp to the given barrier given the movement direction specified in dir. ++ * ++ * @param barrier The barrier to clamp to ++ * @param dir The movement direction ++ * @param[out] x The clamped x coordinate. ++ * @param[out] y The clamped x coordinate. ++ */ ++void ++barrier_clamp_to_barrier(struct PointerBarrier *barrier, int dir, int *x, int *y) ++{ ++ if (barrier_is_vertical(barrier)) ++ { ++ if ((dir & BarrierNegativeX) & ~barrier->directions) ++ *x = barrier->x1; ++ if ((dir & BarrierPositiveX) & ~barrier->directions) ++ *x = barrier->x1 - 1; ++ } ++ if (barrier_is_horizontal(barrier)) ++ { ++ if ((dir & BarrierNegativeY) & ~barrier->directions) ++ *y = barrier->y1; ++ if ((dir & BarrierPositiveY) & ~barrier->directions) ++ *y = barrier->y1 - 1; ++ } ++} ++ ++static void ++CursorConstrainCursorHarder(DeviceIntPtr dev, ScreenPtr screen, int mode, int *x, int *y) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ ++ if (!list_is_empty(&cs->barriers) && !IsFloating(dev) && mode == Relative) { ++ int ox, oy; ++ int dir; ++ struct PointerBarrier *nearest = NULL; ++ ++ /* where are we coming from */ ++ miPointerGetPosition(dev, &ox, &oy); ++ ++ /* How this works: ++ * Given the origin and the movement vector, get the nearest barrier ++ * to the origin that is blocking the movement. ++ * Clamp to that barrier. ++ * Then, check from the clamped intersection to the original ++ * destination, again finding the nearest barrier and clamping. ++ */ ++ dir = barrier_get_direction(ox, oy, *x, *y); ++ ++ nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ if (nearest) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ ++ if (barrier_is_vertical(nearest)) { ++ dir &= ~(BarrierNegativeX | BarrierPositiveX); ++ ox = *x; ++ } else if (barrier_is_horizontal(nearest)) { ++ dir &= ~(BarrierNegativeY | BarrierPositiveY); ++ oy = *y; ++ } ++ ++ nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ if (nearest) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ } ++ } ++ } ++ ++ if (cs->ConstrainCursorHarder) { ++ screen->ConstrainCursorHarder = cs->ConstrainCursorHarder; ++ screen->ConstrainCursorHarder(dev, screen, mode, x, y); ++ screen->ConstrainCursorHarder = CursorConstrainCursorHarder; ++ } ++} ++ ++static struct PointerBarrierClient * ++CreatePointerBarrierClient(ScreenPtr screen, ClientPtr client, ++ xXFixesCreatePointerBarrierReq *stuff) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ struct PointerBarrierClient *ret = malloc(sizeof(*ret)); ++ ++ if (ret) { ++ ret->screen = screen; ++ ret->barrier.x1 = min(stuff->x1, stuff->x2); ++ ret->barrier.x2 = max(stuff->x1, stuff->x2); ++ ret->barrier.y1 = min(stuff->y1, stuff->y2); ++ ret->barrier.y2 = max(stuff->y1, stuff->y2); ++ ret->barrier.directions = stuff->directions & 0x0f; ++ if (barrier_is_horizontal(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveX | BarrierNegativeX); ++ if (barrier_is_vertical(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveY | BarrierNegativeY); ++ list_add(&ret->entry, &cs->barriers); ++ } ++ ++ return ret; ++} ++ ++int ++ProcXFixesCreatePointerBarrier (ClientPtr client) ++{ ++ int err; ++ WindowPtr pWin; ++ struct PointerBarrierClient *barrier; ++ struct PointerBarrier b; ++ REQUEST (xXFixesCreatePointerBarrierReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierReq); ++ LEGAL_NEW_RESOURCE(stuff->barrier, client); ++ ++ err = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); ++ if (err != Success) { ++ client->errorValue = stuff->window; ++ return err; ++ } ++ ++ /* This sure does need fixing. */ ++ if (stuff->num_devices) ++ return BadImplementation; ++ ++ b.x1 = stuff->x1; ++ b.x2 = stuff->x2; ++ b.y1 = stuff->y1; ++ b.y2 = stuff->y2; ++ ++ if (!barrier_is_horizontal(&b) && !barrier_is_vertical(&b)) ++ return BadValue; ++ ++ /* no 0-sized barriers */ ++ if (barrier_is_horizontal(&b) && barrier_is_vertical(&b)) ++ return BadValue; ++ ++ if (!(barrier = CreatePointerBarrierClient(pWin->drawable.pScreen, ++ client, stuff))) ++ return BadAlloc; ++ ++ if (!AddResource(stuff->barrier, PointerBarrierType, &barrier->barrier)) ++ return BadAlloc; ++ ++ return Success; ++} ++ ++int ++SProcXFixesCreatePointerBarrier (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesCreatePointerBarrierReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierReq); ++ swapl(&stuff->barrier, n); ++ swapl(&stuff->window, n); ++ swaps(&stuff->x1, n); ++ swaps(&stuff->y1, n); ++ swaps(&stuff->x2, n); ++ swaps(&stuff->y2, n); ++ swapl(&stuff->directions, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ ++static int ++CursorFreeBarrier(void *data, XID id) ++{ ++ struct PointerBarrierClient *b = NULL, *barrier; ++ ScreenPtr screen; ++ CursorScreenPtr cs; ++ ++ barrier = container_of(data, struct PointerBarrierClient, barrier); ++ screen = barrier->screen; ++ cs = GetCursorScreen(screen); ++ ++ /* find and unlink from the screen private */ ++ list_for_each_entry(b, &cs->barriers, entry) { ++ if (b == barrier) { ++ list_del(&b->entry); ++ break; ++ } ++ } ++ ++ free(barrier); ++ return Success; ++} ++ ++int ++ProcXFixesDestroyPointerBarrier (ClientPtr client) ++{ ++ int err; ++ void *barrier; ++ REQUEST (xXFixesDestroyPointerBarrierReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesDestroyPointerBarrierReq); ++ ++ err = dixLookupResourceByType((void **)&barrier, stuff->barrier, ++ PointerBarrierType, client, ++ DixDestroyAccess); ++ if (err != Success) { ++ client->errorValue = stuff->barrier; ++ return err; ++ } ++ ++ FreeResource(stuff->barrier, RT_NONE); ++ return Success; ++} ++ ++int ++SProcXFixesDestroyPointerBarrier (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesDestroyPointerBarrierReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesDestroyPointerBarrierReq); ++ swapl(&stuff->barrier, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ + Bool + XFixesCursorInit (void) + { +@@ -1048,8 +1440,10 @@ + cs = (CursorScreenPtr) calloc(1, sizeof (CursorScreenRec)); + if (!cs) + return FALSE; ++ list_init(&cs->barriers); + Wrap (cs, pScreen, CloseScreen, CursorCloseScreen); + Wrap (cs, pScreen, DisplayCursor, CursorDisplayCursor); ++ Wrap (cs, pScreen, ConstrainCursorHarder, CursorConstrainCursorHarder); + cs->pCursorHideCounts = NULL; + SetCursorScreen (pScreen, cs); + } +@@ -1059,7 +1453,10 @@ + "XFixesCursorHideCount"); + CursorWindowType = CreateNewResourceType(CursorFreeWindow, + "XFixesCursorWindow"); ++ PointerBarrierType = CreateNewResourceType(CursorFreeBarrier, ++ "XFixesPointerBarrier"); + +- return CursorClientType && CursorHideCountType && CursorWindowType; ++ return CursorClientType && CursorHideCountType && CursorWindowType && ++ PointerBarrierType; + } + +Index: xorg-server/xfixes/xfixes.c +=================================================================== +--- xorg-server.orig/xfixes/xfixes.c 2011-08-24 12:52:44.355647127 +0300 ++++ xorg-server/xfixes/xfixes.c 2011-08-24 12:56:49.825650624 +0300 +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -47,10 +48,6 @@ + + #include "xfixesint.h" + #include "protocol-versions.h" +-/* +- * Must use these instead of the constants from xfixeswire.h. They advertise +- * what we implement, not what the protocol headers define. +- */ + + static unsigned char XFixesReqCode; + int XFixesEventBase; +@@ -97,11 +94,12 @@ + + /* Major version controls available requests */ + static const int version_requests[] = { +- X_XFixesQueryVersion, /* before client sends QueryVersion */ +- X_XFixesGetCursorImage, /* Version 1 */ +- X_XFixesChangeCursorByName, /* Version 2 */ +- X_XFixesExpandRegion, /* Version 3 */ +- X_XFixesShowCursor, /* Version 4 */ ++ X_XFixesQueryVersion, /* before client sends QueryVersion */ ++ X_XFixesGetCursorImage, /* Version 1 */ ++ X_XFixesChangeCursorByName, /* Version 2 */ ++ X_XFixesExpandRegion, /* Version 3 */ ++ X_XFixesShowCursor, /* Version 4 */ ++ X_XFixesDestroyPointerBarrier, /* Version 5 */ + }; + + #define NUM_VERSION_REQUESTS (sizeof (version_requests) / sizeof (version_requests[0])) +@@ -142,6 +140,9 @@ + /*************** Version 4 ****************/ + ProcXFixesHideCursor, + ProcXFixesShowCursor, ++/*************** Version 5 ****************/ ++ ProcXFixesCreatePointerBarrier, ++ ProcXFixesDestroyPointerBarrier, + }; + + static int +@@ -205,6 +206,9 @@ + /*************** Version 4 ****************/ + SProcXFixesHideCursor, + SProcXFixesShowCursor, ++/*************** Version 5 ****************/ ++ SProcXFixesCreatePointerBarrier, ++ SProcXFixesDestroyPointerBarrier, + }; + + static int +@@ -260,6 +264,8 @@ + EventSwapVector[XFixesEventBase + XFixesCursorNotify] = + (EventSwapPtr) SXFixesCursorNotifyEvent; + SetResourceTypeErrorValue(RegionResType, XFixesErrorBase + BadRegion); ++ SetResourceTypeErrorValue(PointerBarrierType, ++ XFixesErrorBase + BadBarrier); + } + } + +Index: xorg-server/xfixes/xfixes.h +=================================================================== +--- xorg-server.orig/xfixes/xfixes.h 2011-08-24 12:52:44.335647125 +0300 ++++ xorg-server/xfixes/xfixes.h 2011-08-24 12:56:49.825650624 +0300 +@@ -30,6 +30,7 @@ + #include "resource.h" + + extern _X_EXPORT RESTYPE RegionResType; ++extern _X_EXPORT RESTYPE PointerBarrierType; + extern _X_EXPORT int XFixesErrorBase; + + #define VERIFY_REGION(pRegion, rid, client, mode) \ +@@ -51,5 +52,21 @@ + extern _X_EXPORT RegionPtr + XFixesRegionCopy (RegionPtr pRegion); + ++struct PointerBarrier { ++ CARD16 x1, x2, y1, y2; ++ CARD32 directions; ++}; ++ ++ ++extern int ++barrier_get_direction(int, int, int, int); ++extern BOOL ++barrier_is_blocking(const struct PointerBarrier*, int, int, int, int, double*); ++extern BOOL ++barrier_is_blocking_direction(const struct PointerBarrier*, int); ++extern void ++barrier_clamp_to_barrier(struct PointerBarrier *barrier, int dir, int *x, int *y); ++ ++ + + #endif /* _XFIXES_H_ */ +Index: xorg-server/xfixes/xfixesint.h +=================================================================== +--- xorg-server.orig/xfixes/xfixesint.h 2011-08-24 12:52:44.345647126 +0300 ++++ xorg-server/xfixes/xfixesint.h 2011-08-24 12:56:49.825650624 +0300 +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -278,6 +279,21 @@ + int + SProcXFixesShowCursor (ClientPtr client); + ++/* Version 5 */ ++ ++int ++ProcXFixesCreatePointerBarrier (ClientPtr client); ++ ++int ++SProcXFixesCreatePointerBarrier (ClientPtr client); ++ ++int ++ProcXFixesDestroyPointerBarrier (ClientPtr client); ++ ++int ++SProcXFixesDestroyPointerBarrier (ClientPtr client); ++ ++/* Xinerama */ + extern int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr); + void PanoramiXFixesInit (void); + void PanoramiXFixesReset (void); --- xorg-server-1.11.4.orig/debian/patches/506_touchscreen_pointer_emulation_checks.patch +++ xorg-server-1.11.4/debian/patches/506_touchscreen_pointer_emulation_checks.patch @@ -0,0 +1,159 @@ +From ec9c4295830c3de610e65aca17f4da4a7af3c4c5 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Wed, 18 Apr 2012 12:04:58 -0700 +Subject: [PATCH] Check other clients' core masks properly when adding touch + listener + +The current code checks the core event mask as though it were an XI +mask. This change fixes the checks so the proper client and event masks +are used. + +Signed-off-by: Chase Douglas +Reviewed-by: Peter Hutterer +--- + dix/touch.c | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/dix/touch.c b/dix/touch.c +index 572bdfb..f8f26c8 100644 +--- a/dix/touch.c ++++ b/dix/touch.c +@@ -811,6 +811,7 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + if (mask & EVENT_CORE_MASK) { + int coretype = GetCoreType(TouchGetPointerEventType(ev)); + Mask core_filter = event_get_filter_from_type(dev, coretype); ++ OtherClients *oclients; + + /* window owner */ + if (IsMaster(dev) && (win->eventMask & core_filter)) { +@@ -822,13 +823,12 @@ TouchAddRegularListener(DeviceIntPtr dev, TouchPointInfoPtr ti, + } + + /* all others */ +- nt_list_for_each_entry(iclients, (InputClients*)wOtherClients(win), next) +- { +- if (!(iclients->mask[XIAllDevices] & core_filter)) ++ nt_list_for_each_entry(oclients, wOtherClients(win), next) { ++ if (!(oclients->mask & core_filter)) + continue; + + TouchEventHistoryAllocate(ti); +- TouchAddListener(ti, iclients->resource, CORE, ++ TouchAddListener(ti, oclients->resource, CORE, + type, LISTENER_AWAITING_BEGIN, win); + return TRUE; + } +-- +1.7.9.1 + +From 01091806f762f6f8fc83dc1051b5f3cfb38e88b1 Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Wed, 4 Apr 2012 12:57:40 -0700 +Subject: [PATCH 2/3] Check core event mask properly for pointer emulated + touch events + +The current code checks the core event mask as though it were an XI2 +mask. This change fixes the checks so the proper client and event masks +are used. + +Signed-off-by: Chase Douglas + +Conflicts: + + Xi/exevents.c +--- + Xi/exevents.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/Xi/exevents.c b/Xi/exevents.c +index f390f67..72e6d91 100644 +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -1342,6 +1342,8 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + BUG_WARN(!iclients); + if (!iclients) + return FALSE; ++ ++ *client = rClient(iclients); + } else if (listener->level == XI) + { + int xi_type = GetXIType(TouchGetPointerEventType(ev)); +@@ -1352,19 +1354,22 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + BUG_WARN(!iclients); + if (!iclients) + return FALSE; ++ ++ *client = rClient(iclients); + } else + { + int coretype = GetCoreType(TouchGetPointerEventType(ev)); + Mask core_filter = event_get_filter_from_type(dev, coretype); ++ OtherClients *oclients; + + /* all others */ +- nt_list_for_each_entry(iclients, (InputClients*)wOtherClients(*win), next) +- if (iclients->mask[XIAllDevices] & core_filter) ++ nt_list_for_each_entry(oclients, (InputClients*)wOtherClients(*win), next) ++ if (oclients->mask & core_filter) + break; +- /* if owner selected, iclients is NULL */ ++ /* if owner selected, oclients is NULL */ ++ *client = oclients ? rClient(oclients) : wClient(*win); + } + +- *client = iclients ? rClient(iclients) : wClient(*win); + *mask = iclients ? iclients->xi2mask : NULL; + *grab = NULL; + } +-- +1.7.9.1 + +From 4b4c88b247c6435578c983d74a90f35472849f3a Mon Sep 17 00:00:00 2001 +From: Chase Douglas +Date: Wed, 4 Apr 2012 12:59:55 -0700 +Subject: [PATCH 3/3] Only set XI2 mask if pointer emulation is for XI2 client + +The current code returns a reference to memory that may not actually be +an XI2 mask. Instead, only return a value when an XI2 client has +selected for events. + +Signed-off-by: Chase Douglas + +Conflicts: + + Xi/exevents.c +--- + Xi/exevents.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +diff --git a/Xi/exevents.c b/Xi/exevents.c +index 72e6d91..fe06efa 100644 +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -1293,6 +1293,7 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + { + int rc; + InputClients *iclients = NULL; ++ *mask = NULL; + + if (listener->type == LISTENER_GRAB || + listener->type == LISTENER_POINTER_GRAB) +@@ -1343,6 +1344,7 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + if (!iclients) + return FALSE; + ++ *mask = iclients->xi2mask; + *client = rClient(iclients); + } else if (listener->level == XI) + { +@@ -1370,7 +1372,6 @@ RetrieveTouchDeliveryData(DeviceIntPtr dev, TouchPointInfoPtr ti, + *client = oclients ? rClient(oclients) : wClient(*win); + } + +- *mask = iclients ? iclients->xi2mask : NULL; + *grab = NULL; + } + +-- +1.7.9.1 + --- xorg-server-1.11.4.orig/debian/patches/166_nullptr_xinerama_keyrepeat.patch +++ xorg-server-1.11.4/debian/patches/166_nullptr_xinerama_keyrepeat.patch @@ -0,0 +1,27 @@ +From f0ef98d8d54f5dfa3081b62ff672e0fe992b0a01 Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Wed, 18 Mar 2009 23:28:51 -0700 +Subject: [PATCH] Check for null pointer dereference to prevent crash + on non-primary Xinerama screens when key repeating. + (LP: #324465) + +Signed-off-by: Bryce Harrington +--- + mi/mipointer.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +Index: xorg-server/mi/mipointer.c +=================================================================== +--- xorg-server.orig/mi/mipointer.c 2011-08-24 12:52:45.385647143 +0300 ++++ xorg-server/mi/mipointer.c 2011-08-24 12:57:30.295651201 +0300 +@@ -300,6 +300,10 @@ + SetupScreen (pScreen); + pPointer = MIPOINTER(pDev); + ++ /* Null pointer causes crash on keyrepeat with Xinerama LP: (#324465) */ ++ if (pPointer == NULL) ++ return; ++ + if (pPointer->pScreen != pScreen) + { + (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, TRUE); --- xorg-server-1.11.4.orig/debian/patches/188_default_primary_to_first_busid.patch +++ xorg-server-1.11.4/debian/patches/188_default_primary_to_first_busid.patch @@ -0,0 +1,20 @@ +If there seems to be more than one possible primary device, just +pick the first device and carry on (LP 459512) + +signed-off-by: Bryce Harrington + +Index: xorg-server/hw/xfree86/common/xf86pciBus.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86pciBus.c 2011-08-24 12:56:49.565650621 +0300 ++++ xorg-server/hw/xfree86/common/xf86pciBus.c 2011-08-24 12:56:49.685650622 +0300 +@@ -147,8 +147,8 @@ + primaryBus.id.pci = info; + } else { + xf86Msg(X_NOTICE, +- "More than one possible primary device found\n"); +- primaryBus.type ^= (BusType)(-1); ++ "More than one possible primary device found. Using first one seen.\n"); ++ break; + } + } + } --- xorg-server-1.11.4.orig/debian/patches/157_check_null_modes.patch +++ xorg-server-1.11.4/debian/patches/157_check_null_modes.patch @@ -0,0 +1,14 @@ +Index: xorg-server/hw/xfree86/common/xf86VidMode.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86VidMode.c 2011-08-24 12:52:45.565647144 +0300 ++++ xorg-server/hw/xfree86/common/xf86VidMode.c 2011-08-24 12:56:49.605650623 +0300 +@@ -222,6 +222,9 @@ + + pScrn = xf86Screens[scrnIndex]; + pVidMode = VMPTR(pScrn->pScreen); ++ if (pScrn->modes == NULL) ++ return FALSE; ++ + pVidMode->First = pScrn->modes; + pVidMode->Next = pVidMode->First->next; + --- xorg-server-1.11.4.orig/debian/patches/07-xfree86-fix-build-with-xv-disabled.diff +++ xorg-server-1.11.4/debian/patches/07-xfree86-fix-build-with-xv-disabled.diff @@ -0,0 +1,50 @@ +From fe7575e929d65e8c798104ec2f72b879051694d3 Mon Sep 17 00:00:00 2001 +From: Julien Cristau +Date: Mon, 8 Feb 2010 02:04:33 +0100 +Subject: [PATCH] xfree86: fix build with xv disabled + +--- + hw/xfree86/modes/xf86Crtc.c | 2 ++ + hw/xfree86/modes/xf86Crtc.h | 2 ++ + 2 files changed, 4 insertions(+), 0 deletions(-) + +Index: xorg-server/hw/xfree86/modes/xf86Crtc.c +=================================================================== +--- xorg-server.orig/hw/xfree86/modes/xf86Crtc.c ++++ xorg-server/hw/xfree86/modes/xf86Crtc.c +@@ -3089,6 +3089,7 @@ xf86_crtc_box_area(BoxPtr box) + return (int) (box->x2 - box->x1) * (int) (box->y2 - box->y1); + } + ++#ifdef XV + /* + * Return the crtc covering 'box'. If two crtcs cover a portion of + * 'box', then prefer 'desired'. If 'desired' is NULL, then prefer the crtc +@@ -3177,6 +3178,7 @@ xf86_crtc_clip_video_helper(ScrnInfoPtr + + return ret; + } ++#endif + + xf86_crtc_notify_proc_ptr + xf86_wrap_crtc_notify (ScreenPtr screen, xf86_crtc_notify_proc_ptr new) +Index: xorg-server/hw/xfree86/modes/xf86Crtc.h +=================================================================== +--- xorg-server.orig/hw/xfree86/modes/xf86Crtc.h ++++ xorg-server/hw/xfree86/modes/xf86Crtc.h +@@ -934,6 +934,7 @@ xf86_hide_cursors (ScrnInfoPtr scrn); + extern _X_EXPORT void + xf86_cursors_fini (ScreenPtr screen); + ++#ifdef XV + /* + * For overlay video, compute the relevant CRTC and + * clip video to that. +@@ -952,6 +953,7 @@ xf86_crtc_clip_video_helper(ScrnInfoPtr + RegionPtr reg, + INT32 width, + INT32 height); ++#endif + + extern _X_EXPORT xf86_crtc_notify_proc_ptr + xf86_wrap_crtc_notify (ScreenPtr pScreen, xf86_crtc_notify_proc_ptr new); --- xorg-server-1.11.4.orig/debian/patches/226_fall_back_to_autoconfiguration.patch +++ xorg-server-1.11.4/debian/patches/226_fall_back_to_autoconfiguration.patch @@ -0,0 +1,105 @@ +From 1d22d773f67f8c00ab8881d2cce00ef95abf24f7 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Fri, 27 Jan 2012 19:31:55 +0100 +Subject: [PATCH 1/1] Try to fall back to autoconfiguration in some cases + despite having configuration files + +Fall back to autoconfiguration if either the graphics +driver module specified in configuration files can't be +found or if there's no device supported by the specified +driver. + +Signed-off-by: Alberto Milone +--- + hw/xfree86/common/xf86Globals.c | 1 + + hw/xfree86/common/xf86Init.c | 31 ++++++++++++++++++++++++++----- + hw/xfree86/common/xf86Priv.h | 1 + + 3 files changed, 28 insertions(+), 5 deletions(-) + +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index 16d5557..a1a06ad 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -155,6 +155,7 @@ int xf86NumDrivers = 0; + InputDriverPtr *xf86InputDriverList = NULL; + int xf86NumInputDrivers = 0; + int xf86NumScreens = 0; ++Bool xf86AttemptedFallback = FALSE; + + const char *xf86VisualNames[] = { + "StaticGray", +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index 0a47140..a0c7f51 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -411,20 +411,34 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) + free(optionlist); + } + ++Fallback: + /* Load all driver modules specified in the config file */ + /* If there aren't any specified in the config file, autoconfig them */ + /* FIXME: Does not handle multiple active screen sections, but I'm not + * sure if we really want to handle that case*/ + configured_device = xf86ConfigLayout.screens->screen->device; +- if ((!configured_device) || (!configured_device->driver)) { ++ if (xf86AttemptedFallback) { ++ configured_device->driver = NULL; ++ if (!autoConfigDevice(configured_device)) { ++ xf86Msg(X_ERROR, "Auto configuration on fallback failed\n"); ++ return; ++ } ++ } ++ else if ((!configured_device) || (!configured_device->driver)) { + if (!autoConfigDevice(configured_device)) { + xf86Msg(X_ERROR, "Automatic driver configuration failed\n"); + return ; + } + } + if ((modulelist = xf86DriverlistFromConfig())) { +- xf86LoadModules(modulelist, NULL); +- free(modulelist); ++ if (!xf86LoadModules(modulelist, NULL) && !xf86AttemptedFallback) { ++ free(modulelist); ++ xf86AttemptedFallback = TRUE; ++ goto Fallback; ++ } ++ else { ++ free(modulelist); ++ } + } + + /* Load all input driver modules specified in the config file. */ +@@ -483,8 +497,15 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv) + else + xf86Info.dontVTSwitch = TRUE; + +- if (xf86BusConfig() == FALSE) +- return; ++ if (xf86BusConfig() == FALSE) { ++ if (!xf86AttemptedFallback) { ++ xf86AttemptedFallback = TRUE; ++ goto Fallback; ++ } ++ else { ++ return; ++ } ++ } + + xf86PostProbe(); + +diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h +index 1fe3d7e..c342424 100644 +--- a/hw/xfree86/common/xf86Priv.h ++++ b/hw/xfree86/common/xf86Priv.h +@@ -86,6 +86,7 @@ extern _X_EXPORT int xf86NumDrivers; + extern _X_EXPORT Bool xf86Resetting; + extern _X_EXPORT Bool xf86Initialising; + extern _X_EXPORT int xf86NumScreens; ++extern _X_EXPORT Bool xf86AttemptedFallback; + extern _X_EXPORT const char *xf86VisualNames[]; + extern _X_EXPORT int xf86Verbose; /* verbosity level */ + extern _X_EXPORT int xf86LogVerbose; /* log file verbosity level */ +-- +1.7.5.4 + --- xorg-server-1.11.4.orig/debian/patches/167_nullptr_xisbread.patch +++ xorg-server-1.11.4/debian/patches/167_nullptr_xisbread.patch @@ -0,0 +1,14 @@ +Index: xorg-server/hw/xfree86/common/xisb.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xisb.c 2011-08-24 12:52:45.315647139 +0300 ++++ xorg-server/hw/xfree86/common/xisb.c 2011-08-24 12:56:49.655650624 +0300 +@@ -98,6 +98,9 @@ + { + int ret; + ++ if (b == NULL) ++ return -2; ++ + if (b->current >= b->end) + { + if (b->block_duration >= 0) --- xorg-server-1.11.4.orig/debian/patches/100_rethrow_signals.patch +++ xorg-server-1.11.4/debian/patches/100_rethrow_signals.patch @@ -0,0 +1,375 @@ +Index: xorg-server/hw/dmx/dmxinit.c +=================================================================== +--- xorg-server.orig/hw/dmx/dmxinit.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/dmx/dmxinit.c 2011-09-10 21:45:50.066123727 -0700 +@@ -821,7 +821,7 @@ + /** This function is called in Xserver/os/utils.c from \a AbortServer(). + * We must ensure that backend and console state is restored in the + * event the server shutdown wasn't clean. */ +-void AbortDDX(enum ExitCode error) ++void SigAbortDDX(int signo, enum ExitCode error) + { + int i; + +@@ -839,6 +839,11 @@ + } + #endif + ++void AbortDDX(enum ExitCode error) ++{ ++ SigAbortDDX(0, error); ++} ++ + /** This function is called in Xserver/dix/main.c from \a main() when + * dispatchException & DE_TERMINATE (which is the only way to exit the + * main loop without an interruption. */ +Index: xorg-server/hw/kdrive/src/kdrive.c +=================================================================== +--- xorg-server.orig/hw/kdrive/src/kdrive.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/kdrive/src/kdrive.c 2011-09-10 21:52:09.393274790 -0700 +@@ -232,7 +232,7 @@ + } + + void +-AbortDDX(enum ExitCode error) ++SigAbortDDX(int signo, enum ExitCode error) + { + KdDisableScreens (); + if (kdOsFuncs) +@@ -248,6 +248,11 @@ + OsAbort(); + } + ++AbortDDX(enum ExitCode error) ++{ ++ SigAbortDDX(0, error); ++} ++ + void + ddxGiveUp (enum ExitCode error) + { +Index: xorg-server/hw/vfb/InitOutput.c +=================================================================== +--- xorg-server.orig/hw/vfb/InitOutput.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/vfb/InitOutput.c 2011-09-10 21:53:51.404181875 -0700 +@@ -201,11 +201,17 @@ + } + + void +-AbortDDX(enum ExitCode error) ++SigAbortDDX(int signo, enum ExitCode error) + { + ddxGiveUp(error); + } +- ++ ++void ++AbortDDX(enum ExitCode error) ++{ ++ SigAbortDDX(0, error); ++} ++ + #ifdef __APPLE__ + void + DarwinHandleGUI(int argc, char *argv[]) +Index: xorg-server/hw/xfree86/common/xf86Events.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Events.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/xfree86/common/xf86Events.c 2011-09-10 21:45:50.066123727 -0700 +@@ -348,6 +348,8 @@ + int + xf86SigWrapper(int signo) + { ++ static Bool beenhere = FALSE; ++ + if ((signo == SIGILL) && xf86SigIllHandler) { + (*xf86SigIllHandler)(); + return 0; /* continue */ +Index: xorg-server/hw/xfree86/common/xf86Init.c +=================================================================== +--- xorg-server.orig/hw/xfree86/common/xf86Init.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/xfree86/common/xf86Init.c 2011-09-11 09:58:17.741645191 -0700 +@@ -895,14 +895,17 @@ + } + + /* +- * ddxGiveUp -- ++ * ddxSigGiveUp -- + * Device dependent cleanup. Called by by dix before normal server death. + * For SYSV386 we must switch the terminal back to normal mode. No error- + * checking here, since there should be restored as much as possible. ++ * ++ * If a non-zero signo is passed, re-raise that signal rather than ++ * calling abort(). + */ + + void +-ddxGiveUp(enum ExitCode error) ++ddxSigGiveUp(int signo, enum ExitCode error) + { + int i; + +@@ -929,24 +932,46 @@ + if (xorgHWOpenConsole) + xf86CloseConsole(); + ++ ErrorF (" ddxSigGiveUp: Closing log\n"); ++ + xf86CloseLog(error); + + /* If an unexpected signal was caught, dump a core for debugging */ +- if (xf86Info.caughtSignal) +- OsAbort(); ++ if (xf86Info.caughtSignal) { ++ if (signo != 0) { ++ raise(signo); ++ } else { ++ OsAbort(); ++ } ++ } + } + ++/* ++ * ddxGiveUp -- ++ * Device dependent cleanup. Called by by dix before normal server death. ++ * For SYSV386 we must switch the terminal back to normal mode. No error- ++ * checking here, since there should be restored as much as possible. ++ */ ++ ++void ++ddxGiveUp(enum ExitCode error) ++{ ++ ddxSigGiveUp(0, error); ++} + + + /* +- * AbortDDX -- ++ * SigAbortDDX -- + * DDX - specific abort routine. Called by AbortServer(). The attempt is + * made to restore all original setting of the displays. Also all devices + * are closed. ++ * ++ * If a non-zero signo is passed, re-raise that signal rather than calling ++ * abort() + */ + + void +-AbortDDX(enum ExitCode error) ++SigAbortDDX(int signo, enum ExitCode error) + { + int i; + +@@ -979,7 +1004,20 @@ + * This is needed for an abnormal server exit, since the normal exit stuff + * MUST also be performed (i.e. the vt must be left in a defined state) + */ +- ddxGiveUp(error); ++ ddxSigGiveUp(signo, error); ++} ++ ++/* ++ * AbortDDX -- ++ * DDX - specific abort routine. The attempt is made to restore ++ * all original setting of the displays. Also all devices are ++ * closed. ++ */ ++ ++void ++AbortDDX(enum ExitCode error) ++{ ++ SigAbortDDX(0, error); + } + + void +Index: xorg-server/hw/xnest/Init.c +=================================================================== +--- xorg-server.orig/hw/xnest/Init.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/xnest/Init.c 2011-09-10 21:45:50.076124422 -0700 +@@ -114,12 +114,17 @@ + /* + * DDX - specific abort routine. Called by AbortServer(). + */ +-void AbortDDX(enum ExitCode error) ++void SigAbortDDX(int signo, enum ExitCode error) + { + xnestDoFullGeneration = True; + xnestCloseDisplay(); + } + ++void AbortDDX(enum ExitCode error) ++{ ++ SigAbortDDX(0, error); ++} ++ + /* Called by GiveUp(). */ + void ddxGiveUp(enum ExitCode error) + { +Index: xorg-server/hw/xquartz/darwin.c +=================================================================== +--- xorg-server.orig/hw/xquartz/darwin.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/xquartz/darwin.c 2011-09-10 22:01:07.976518255 -0700 +@@ -773,14 +773,20 @@ + + + /* +- * AbortDDX -- ++ * [Sig]AbortDDX -- + * DDX - specific abort routine. Called by AbortServer(). The attempt is + * made to restore all original setting of the displays. Also all devices + * are closed. + */ + _X_NORETURN +-void AbortDDX( enum ExitCode error ) { ++void SigAbortDDX( int signo, enum ExitCode error ) ++{ + ErrorF( " AbortDDX\n" ); + OsAbort(); + } + ++_X_NORETURN ++void AbortDDX( enum ExitCode error ) ++{ ++ SigAbortDDX(signo, error); ++} +Index: xorg-server/hw/xwin/InitOutput.c +=================================================================== +--- xorg-server.orig/hw/xwin/InitOutput.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/hw/xwin/InitOutput.c 2011-09-10 22:02:02.515804736 -0700 +@@ -258,7 +258,7 @@ + + /* See Porting Layer Definition - p. 57 */ + void +-AbortDDX (enum ExitCode error) ++SigAbortDDX (int signo, enum ExitCode error) + { + #if CYGDEBUG + winDebug ("AbortDDX\n"); +@@ -266,6 +266,12 @@ + ddxGiveUp (error); + } + ++void ++AbortDDX (enum ExitCode error) ++{ ++ SigAbortDDX(0, error); ++} ++ + #ifdef __CYGWIN__ + /* hasmntopt is currently not implemented for cygwin */ + static const char *winCheckMntOpt(const struct mntent *mnt, const char *opt) +Index: xorg-server/include/os.h +=================================================================== +--- xorg-server.orig/include/os.h 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/include/os.h 2011-09-11 09:51:52.766866712 -0700 +@@ -466,7 +466,9 @@ + EXIT_ERR_DRIVERS = 3, + }; + ++extern _X_EXPORT void SigAbortDDX(int signo, enum ExitCode error); + extern _X_EXPORT void AbortDDX(enum ExitCode error); ++extern _X_EXPORT void ddxSigGiveUp(int signo, enum ExitCode error); + extern _X_EXPORT void ddxGiveUp(enum ExitCode error); + extern _X_EXPORT int TimeSinceLastInputEvent(void); + +Index: xorg-server/os/log.c +=================================================================== +--- xorg-server.orig/os/log.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/os/log.c 2011-09-11 09:51:21.555668560 -0700 +@@ -89,6 +89,8 @@ + #include /* for malloc() */ + #include + ++#include /* for raise() */ ++ + #include "input.h" + #include "site.h" + #include "opaque.h" +@@ -403,9 +405,11 @@ + + void + AbortServer(void) _X_NORETURN; ++void ++SigAbortServer(int signo) _X_NORETURN; + + void +-AbortServer(void) ++SigAbortServer(int signo) + { + #ifdef XF86BIGFONT + XF86BigfontCleanup(); +@@ -413,11 +417,22 @@ + CloseWellKnownConnections(); + OsCleanup(TRUE); + CloseDownDevices(); +- AbortDDX(EXIT_ERR_ABORT); ++ SigAbortDDX(signo, EXIT_ERR_ABORT); + fflush(stderr); +- if (CoreDump) +- OsAbort(); +- exit (1); ++ if (CoreDump) { ++ if (signo != 0) ++ raise(signo); ++ else ++ OsAbort(); ++ } else { ++ exit (1); ++ } ++} ++ ++void ++AbortServer() ++{ ++ SigAbortServer(0); + } + + #define AUDIT_PREFIX "AUDIT: %s: %ld: " +@@ -518,6 +533,27 @@ + } + + void ++FatalSignal(int signo) ++{ ++ static Bool beenhere = FALSE; ++ ++ if (beenhere) ++ ErrorF("\nFatalSignal re-entered, aborting\n"); ++ else ++ ErrorF("\nCaught signal %d (%s). Server aborting\n", ++ signo, strsignal(signo)); ++ ++ if (!beenhere) ++ OsVendorFatalError(); ++ if (!beenhere) { ++ beenhere = TRUE; ++ SigAbortServer(signo); ++ } else ++ abort(); ++ /*NOTREACHED*/ ++} ++ ++void + FatalError(const char *f, ...) + { + va_list args; +Index: xorg-server/os/osinit.c +=================================================================== +--- xorg-server.orig/os/osinit.c 2011-09-10 21:40:27.000000000 -0700 ++++ xorg-server/os/osinit.c 2011-09-10 21:45:50.076124422 -0700 +@@ -138,13 +138,13 @@ + case SIGBUS: + case SIGILL: + case SIGFPE: ++ signal(signo,SIG_DFL); + ErrorF("%s at address %p\n", strsignal(signo), sip->si_addr); + } + } + #endif + +- FatalError("Caught signal %d (%s). Server aborting\n", +- signo, strsignal(signo)); ++ FatalSignal(signo); + } + + void --- xorg-server-1.11.4.orig/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch +++ xorg-server-1.11.4/debian/patches/190_cache-xkbcomp_output_for_fast_start_up.patch @@ -0,0 +1,343 @@ +Patch from Moblin to cache xkbcomp output for faster booting + +Signed-off-by: Bryce Harrington +--- + +Index: xorg-server/configure.ac +=================================================================== +--- xorg-server.orig/configure.ac 2011-08-24 12:56:49.505650620 +0300 ++++ xorg-server/configure.ac 2011-08-24 12:57:47.895651453 +0300 +@@ -537,9 +537,9 @@ + AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]), + [ XKBPATH="$withval" ], + [ XKBPATH="${datadir}/X11/xkb" ]) +-AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]), ++AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${localstatedir}/cache/xkb)]), + [ XKBOUTPUT="$withval" ], +- [ XKBOUTPUT="compiled" ]) ++ [ XKBOUTPUT="${localstatedir}/cache/xkb" ]) + AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES], + [Keyboard ruleset (default: base/evdev)]), + [ XKB_DFLT_RULES="$withval" ], +@@ -1173,7 +1173,7 @@ + dnl Make sure XKM_OUTPUT_DIR is an absolute path + XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1` + if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then +- XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT" ++ AC_MSG_ERROR([xkb-output must be an absolute path.]) + fi + + dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed +Index: xorg-server/xkb/README.compiled +=================================================================== +--- xorg-server.orig/xkb/README.compiled 2011-08-24 12:52:45.055647137 +0300 ++++ xorg-server/xkb/README.compiled 2011-08-24 12:56:49.705650623 +0300 +@@ -4,10 +4,10 @@ + or some other tool might destroy or replace the files in this directory, + so it is not a safe place to store compiled keymaps for long periods of + time. The default keymap for any server is usually stored in: +- X-default.xkm +-where is the display number of the server in question, which makes +-it possible for several servers *on the same host* to share the same +-directory. ++ server-.xkm ++ ++where is the SHA1 hash of keymap source, so that compiled ++keymap of different keymap sources are stored in different files. + + Unless the X server is modified, sharing this directory between servers on + different hosts could cause problems. +Index: xorg-server/xkb/ddxLoad.c +=================================================================== +--- xorg-server.orig/xkb/ddxLoad.c 2011-08-24 12:52:45.065647139 +0300 ++++ xorg-server/xkb/ddxLoad.c 2011-08-24 12:56:49.705650623 +0300 +@@ -30,6 +30,12 @@ + + #include + ++#ifdef HAVE_SHA1_IN_LIBGCRYPT /* Use libgcrypt for SHA1 */ ++# include ++#else /* Use OpenSSL's libcrypto */ ++#warning "xkbcomp caching support disabled" ++#endif ++ + #include + #include + #include +@@ -43,20 +49,9 @@ + #define XKBSRV_NEED_FILE_FUNCS + #include + #include ++#include + #include "xkb.h" + +- /* +- * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is +- * relative to the top-level XKB configuration directory. +- * Making the server write to a subdirectory of that directory +- * requires some work in the general case (install procedure +- * has to create links to /var or somesuch on many machines), +- * so we just compile into /usr/tmp for now. +- */ +-#ifndef XKM_OUTPUT_DIR +-#define XKM_OUTPUT_DIR "compiled/" +-#endif +- + #define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\"" + #define ERROR_PREFIX "\"> \"" + #define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\"" +@@ -170,6 +165,47 @@ + } + } + ++#ifndef SHA_DIGEST_LENGTH ++#define SHA_DIGEST_LENGTH 20 ++#endif ++ ++static Bool ++Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH*2+1], const char * input) ++{ ++ int i; ++ unsigned char sha1[SHA_DIGEST_LENGTH]; ++ ++#ifdef HAVE_SHA1_IN_LIBGCRYPT /* Use libgcrypt for SHA1 */ ++ static int init; ++ gcry_md_hd_t h; ++ gcry_error_t err; ++ ++ if (!init) { ++ if (!gcry_check_version(NULL)) ++ return BadAlloc; ++ gcry_control(GCRYCTL_DISABLE_SECMEM, 0); ++ gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); ++ init = 1; ++ } ++ ++ err = gcry_md_open(&h, GCRY_MD_SHA1, 0); ++ if (err) ++ return BadAlloc; ++ gcry_md_write(h, input, strlen(input)); ++ memcpy(sha1, gcry_md_read(h, GCRY_MD_SHA1), 20); ++ gcry_md_close(h); ++#endif ++ ++ /* convert sha1 to sha1_asc */ ++ for(i=0; i nameRtrnLen) && nameRtrn) { ++ ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n"); ++ return FALSE; ++ } ++ strncpy(nameRtrn, xkmfile, nameRtrnLen); ++ ++ /* if the xkm file already exists, reuse it */ ++ canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile); ++ if (access(canonicalXkmFileName, R_OK) == 0) { ++ /* yes, we can reuse the old xkm file */ ++ LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName); ++ result = TRUE; ++ goto _ret; ++ } ++ LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName); ++ ++ /* continue to call xkbcomp to compile the keymap. to avoid race ++ condition, we compile it to a tmpfile then rename it to ++ xkmfile */ + + #ifdef WIN32 + strcpy(tmpname, Win32TempDir()); +@@ -222,15 +315,21 @@ + } + } + ++ if ( (tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL ) { ++ ErrorF("[xkb] Can't generate temp xkm file name"); ++ result = FALSE; ++ goto _ret; ++ } ++ + if (asprintf(&buf, + "\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" " +- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"", ++ "-em1 %s -emp %s -eml %s \"%s\"", + xkbbindir, xkbbindirsep, + ((xkbDebugFlags < 2) ? 1 : + ((xkbDebugFlags > 10) ? 10 : (int) xkbDebugFlags)), +- xkbbasedirflag ? xkbbasedirflag : "", xkmfile, ++ xkbbasedirflag ? xkbbasedirflag : "", xkbfile, + PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1, +- xkm_output_dir, keymap) == -1) ++ tmpXkmFile) == -1) + buf = NULL; + + free(xkbbasedirflag); +@@ -240,6 +339,11 @@ + return FALSE; + } + ++ /* there's a potential race condition between calling tempnam() ++ and invoking xkbcomp to write the result file (potential temp ++ file name conflicts), but since xkbcomp is a standalone ++ program, we have to live with this */ ++ + #ifndef WIN32 + out= Popen(buf,"w"); + #else +@@ -247,30 +351,42 @@ + #endif + + if (out!=NULL) { +-#ifdef DEBUG +- if (xkbDebugFlags) { +- ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n"); +- XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need); +- } +-#endif +- XkbWriteXKBKeymapForNames(out,names,xkb,want,need); ++ /* write XKBKeyMapBuf to xkbcomp */ ++ if (EOF==fputs(xkbKeyMapBuf, out)) ++ { ++ ErrorF("[xkb] Sending keymap to xkbcomp failed\n"); ++ result = FALSE; ++ goto _ret; ++ } + #ifndef WIN32 + if (Pclose(out)==0) + #else + if (fclose(out)==0 && System(buf) >= 0) + #endif + { ++ /* xkbcomp success */ + if (xkbDebugFlags) +- DebugF("[xkb] xkb executes: %s\n",buf); +- if (nameRtrn) { +- strncpy(nameRtrn,keymap,nameRtrnLen); +- nameRtrn[nameRtrnLen-1]= '\0'; +- } +- free(buf); +- return TRUE; ++ DebugF("[xkb] xkb executes: %s\n",buf); ++ ++ /* if canonicalXkmFileName already exists now, we simply ++ overwrite it, this is OK */ ++ ret = rename(tmpXkmFile, canonicalXkmFileName); ++ if (0 != ret) { ++ ErrorF("[xkb] Can't rename %s to %s, error: %s\n", ++ tmpXkmFile, canonicalXkmFileName, ++ strerror(errno)); ++ ++ /* in case of error, don't unlink tmpXkmFile, leave i ++ for debugging */ ++ ++ result = FALSE; ++ goto _ret; ++ } ++ result = TRUE; ++ goto _ret; + } + else +- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap); ++ LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile); + #ifdef WIN32 + /* remove the temporary file */ + unlink(tmpname); +@@ -285,8 +401,17 @@ + } + if (nameRtrn) + nameRtrn[0]= '\0'; +- free(buf); +- return FALSE; ++ result = FALSE; ++ ++_ret: ++ if (tmpXkmFile) ++ free(tmpXkmFile); ++ if (canonicalXkmFileName) ++ free(canonicalXkmFileName); ++ if (buf) ++ free(buf); ++ ++ return result; + } + + static FILE * +@@ -370,7 +495,6 @@ + DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined); + } + fclose(file); +- (void) unlink (fileName); + return (need|want)&(~missing); + } + --- xorg-server-1.11.4.orig/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch +++ xorg-server-1.11.4/debian/patches/122_xext_fix_card32_overflow_in_xauth.patch @@ -0,0 +1,38 @@ +Description: Xext: "xauth generate" with large timeout crashes Xorg #27134 + The security timout CARD32 millis would overflow with large timeouts, causing + the timer callback to be called immediately and hit an assertion in + SecurityAuthorizationExpired. + . + This has not been applied upstream yet. Discussion of the patch faltered + without resolution. This patch has a problem when the epoch time is + sufficiently far in the future (about 2035) that it doesn't matter right now. +Origin: http://patchwork.freedesktop.org/patch/242/ +Bug: https://bugs.freedesktop.org/show_bug.cgi?id=27134 +Bug-Ubuntu: https://launchpad.net/bugs/519049 + +Index: xorg-server/Xext/security.c +=================================================================== +--- xorg-server.orig/Xext/security.c 2011-08-24 12:52:45.635647146 +0300 ++++ xorg-server/Xext/security.c 2011-08-24 12:56:49.595650621 +0300 +@@ -271,10 +271,10 @@ + /* maxSecs is the number of full seconds that can be expressed in + * 32 bits worth of milliseconds + */ +- CARD32 maxSecs = (CARD32)(~0) / (CARD32)MILLI_PER_SECOND; ++ CARD32 maxSecs = (CARD32)(MAXINT) / (CARD32)MILLI_PER_SECOND; + + if (seconds > maxSecs) +- { /* only come here if we want to wait more than 49 days */ ++ { /* only come here if we want to wait more than 24 days */ + pAuth->secondsRemaining = seconds - maxSecs; + return maxSecs * MILLI_PER_SECOND; + } +@@ -312,8 +312,6 @@ + { + SecurityAuthorizationPtr pAuth = (SecurityAuthorizationPtr)pval; + +- assert(pAuth->timer == timer); +- + if (pAuth->secondsRemaining) + { + return SecurityComputeAuthorizationTimeout(pAuth, --- xorg-server-1.11.4.orig/debian/patches/198_nohwaccess.patch +++ xorg-server-1.11.4/debian/patches/198_nohwaccess.patch @@ -0,0 +1,55 @@ +Two chunks of jbarne's nohwaccess patch got taken upstream; this patch +contains just the remainder, which implements a -nohwaccess option. + +Index: xorg-server/hw/xfree86/os-support/linux/lnx_init.c +=================================================================== +--- xorg-server.orig/hw/xfree86/os-support/linux/lnx_init.c 2011-08-24 12:52:44.815647133 +0300 ++++ xorg-server/hw/xfree86/os-support/linux/lnx_init.c 2011-08-24 12:56:49.725650622 +0300 +@@ -41,6 +41,7 @@ + static Bool KeepTty = FALSE; + static Bool VTSwitch = TRUE; + static Bool ShareVTs = FALSE; ++Bool NoHwAccess = FALSE; + static int activeVT = -1; + + static char vtname[11]; +@@ -321,6 +322,11 @@ + ShareVTs = TRUE; + return 1; + } ++ if (!strcmp(argv[i], "-nohwaccess")) ++ { ++ NoHwAccess = TRUE; ++ return(1); ++ } + if ((argv[i][0] == 'v') && (argv[i][1] == 't')) + { + if (sscanf(argv[i], "vt%2d", &xf86Info.vtno) == 0) +@@ -342,4 +348,5 @@ + ErrorF("don't detach controlling tty (for debugging only)\n"); + ErrorF("-novtswitch don't immediately switch to new VT\n"); + ErrorF("-sharevts share VTs with another X server\n"); ++ ErrorF("-nohwaccess don't access hardware ports directly\n"); + } +Index: xorg-server/hw/xfree86/os-support/linux/lnx_video.c +=================================================================== +--- xorg-server.orig/hw/xfree86/os-support/linux/lnx_video.c 2011-08-24 12:52:44.825647135 +0300 ++++ xorg-server/hw/xfree86/os-support/linux/lnx_video.c 2011-08-24 12:56:49.725650622 +0300 +@@ -50,6 +50,7 @@ + #define MAP_FAILED ((void *)-1) + #endif + ++extern Bool NoHwAccess; + static Bool ExtendedEnabled = FALSE; + + #ifdef __ia64__ +@@ -497,6 +498,9 @@ + int fd; + unsigned int ioBase_phys; + #endif ++ /* Fake it... */ ++ if (NoHwAccess) ++ return TRUE; + + if (ExtendedEnabled) + return TRUE; --- xorg-server-1.11.4.orig/debian/patches/217_revert_bgnonevisitwindow.patch +++ xorg-server-1.11.4/debian/patches/217_revert_bgnonevisitwindow.patch @@ -0,0 +1,43 @@ +From: Ian Pilcher +Subject: Backout commit 6dd775f57d2f94f0ddaee324aeec33b9b66ed5bc + +Index: xorg-server/composite/compalloc.c +=================================================================== +--- xorg-server.orig/composite/compalloc.c 2011-08-24 12:52:44.405647129 +0300 ++++ xorg-server/composite/compalloc.c 2011-08-24 12:56:49.805650625 +0300 +@@ -508,17 +508,6 @@ + return Success; + } + +-static int +-bgNoneVisitWindow(WindowPtr pWin, void *null) +-{ +- if (pWin->backgroundState != BackgroundPixmap) +- return WT_WALKCHILDREN; +- if (pWin->background.pixmap != None) +- return WT_WALKCHILDREN; +- +- return WT_STOPWALKING; +-} +- + static PixmapPtr + compNewPixmap (WindowPtr pWin, int x, int y, int w, int h, Bool map) + { +@@ -540,17 +529,6 @@ + return pPixmap; + + /* +- * If there's no bg=None in the tree, we're done. +- * +- * We could optimize this more by collection the regions of all the +- * bg=None subwindows and feeding that in as the clip for the +- * CopyArea below, but since window trees are shallow these days it +- * might not be worth the effort. +- */ +- if (TraverseTree(pWin, bgNoneVisitWindow, NULL) == WT_NOMATCH) +- return pPixmap; +- +- /* + * Copy bits from the parent into the new pixmap so that it will + * have "reasonable" contents in case for background None areas. + */ --- xorg-server-1.11.4.orig/debian/local/10-kbd.conf +++ xorg-server-1.11.4/debian/local/10-kbd.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "kbd catchall" + MatchIsKeyboard "on" + Driver "kbd" +EndSection --- xorg-server-1.11.4.orig/debian/local/xvfb-run.1 +++ xorg-server-1.11.4/debian/local/xvfb-run.1 @@ -0,0 +1,288 @@ +.\" $Id: xvfb-run.1 2138 2005-01-17 23:40:27Z branden $ +.\" +.\" Copyright 1998-2004 Branden Robinson . +.\" +.\" This is free software; you may redistribute it and/or modify +.\" it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2, +.\" or (at your option) any later version. +.\" +.\" This is distributed in the hope that it will be useful, but +.\" WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" the Debian operating system, in /usr/share/common-licenses/GPL; if +.\" not, write to the Free Software Foundation, Inc., 59 Temple Place, +.\" Suite 330, Boston, MA 02111-1307 USA +.\" +.\" We need the URL macro from groff's www macro package, but also want +.\" things to work all right for people who don't have it. So we define +.\" our own URL macro and let the www macro package override it if it's +.\" available. +.de URL +\\$2 \(laURL: \\$1 \(ra\\$3 +.. +.if \n[.g] .mso www.tmac +.TH xvfb\-run 1 "2004\-11\-12" "Debian Project" +.SH NAME +xvfb\-run \- run specified X client or command in a virtual X server environment +.SH SYNOPSIS +.B xvfb\-run +[ +.I options +] +.I command +.SH DESCRIPTION +.B xvfb\-run +is a wrapper for the +.BR Xvfb (1x) +command which simplifies the task of running commands (typically an X +client, or a script containing a list of clients to be run) within a virtual +X server environment. +.PP +.B xvfb\-run +sets up an X authority file (or uses an existing user\-specified one), +writes a cookie to it (see +.BR xauth (1x)) +and then starts the +.B Xvfb +X server as a background process. +The process ID of +.B Xvfb +is stored for later use. +The specified +.I command +is then run using the X display corresponding to the +.B Xvfb +server +just started and the X authority file created earlier. +.PP +When the +.I command +exits, its status is saved, the +.B Xvfb +server is killed (using the process ID stored earlier), the X authority +cookie removed, and the authority file deleted (if the user did not specify +one to use). +.B xvfb\-run +then exits with the exit status of +.IR command , +except in error conditions (see +.SM +.B EXIT STATUS +below). +.PP +.B xvfb\-run +requires the +.B xauth +command to function. +.SH OPTIONS +.TP +.B \-a\fR,\fB \-\-auto\-servernum +Try to get a free server number, starting at 99, or the argument to +.BR \-\-server\-num . +.TP +.BI \-e\ file \fR,\fB\ \-\-error\-file= file +Store output from +.B xauth +and +.B Xvfb +in +.IR file . +The default is +.IR /dev/null . +.TP +.BI \-f\ file \fR,\fB\ \-\-auth\-file= file +Store X authentication data in +.IR file . +By default, a temporary directory called +.IR xvfb\-run. PID +(where PID is the process ID of +.B xvfb\-run +itself) is created in the directory specified by the environment variable +.B TMPDIR +(or +.I /tmp +if that variable is null or unset), and the +.BR tempfile (1) +command is used to create a file in that temporary directory called +.IR Xauthority . +.TP +.B \-h\fR,\fB \-\-help +Display a usage message and exit. +.TP +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +Use +.I servernumber +as the server number (but see the +.B \-a\fR,\fB \-\-auto\-servernum +option above). +The default is 99. +.TP +.B \-l\fR,\fB \-\-listen\-tcp +Enable TCP port listening in the X server. +For security reasons (to avoid denial\-of\-service attacks or exploits), +TCP port listening is disabled by default. +.TP +.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname +Use +.I protocolname +as the X authority protocol to use. +The default is \(oq.\(cq, which +.B xauth +interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1. +.TP +.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments +Pass +.I arguments +to the +.B Xvfb +server. +Be careful to quote any whitespace characters that may occur within +.I arguments +to prevent them from regarded as separators for +.BR xvfb\-run 's +own arguments. +Also, note that specification of \(oq\-nolisten tcp\(cq in +.I arguments +may override the function of +.BR xvfb\-run 's +own +.B \-l\fR,\fB \-\-listen\-tcp +option, and that specification of the server number (e.g., \(oq:1\(cq) may +be ignored because of the way the X server parses its argument list. +Use the +.B xvfb\-run +option +.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber +to achieve the latter function. +The default is \(oq\-screen 0 640x480x8\(cq. +.TP +.BI \-w\ delay \fR,\fB\ \-\-wait= delay +Wait +.I delay +seconds after launching +.B Xvfb +before attempting to start the specified command. +The default is 3. +.SH ENVIRONMENT +.TP +.B COLUMNS +indicates the width of the terminal device in character cells. +This value is used for formatting diagnostic messages. +If not set, the terminal is queried using +.BR stty (1) +to determine its width. +If that fails, a value of \(oq80\(cq is assumed. +.TP +.B TMPDIR +specifies the directory in which to place +.BR xvfb\-run 's +temporary directory for storage of the X authority file; only used if the +.B \-f +or +.B \-\-auth\-file +options are not specified. +.SH "OUTPUT FILES" +.PP +Unless the +.B \-f +or +.B \-\-auth\-file +options are specified, a temporary +directory and file within it are created (and deleted) to store the X +authority cookies used by the +.B Xvfb +server and client(s) run under it. +See +.BR tempfile (1). +If \-f or \-\-auth\-file are used, then the specified X authority file is +only written to, not created or deleted (though +.B xauth +creates an authority file itself if told to use use that does not already +exist). +.PP +An error file with a user\-specified name is also created if the +.B \-e +or +.B \-\-error\-file +options are specifed; see above. +.SH "EXIT STATUS" +.B xvfb\-run +uses its exit status as well as output to standard error to communicate +diagnostics. +.TP +0 +.B xvfb\-run +only uses this exit status if the +.B \-h\fR,\fB \-\-help +option is given. +In all other situations, this may be interpreted as success of the specified +command. +.TP +1 +.B Xvfb +did not start correctly. +.TP +2 +No command to run was specified. +.TP +3 +The +.B xauth +command is not available. +.TP +4 +The temporary directory that was going to be used already exists; since +.B xvfb\-run +produces a uniquely named directory, this may indicate an attempt by another +process on the system to exploit a temporary file race condition. +.TP +5 +A problem was encountered while cleaning up the temporary directory. +.TP +6 +A problem was encountered while using +.BR getopt (1) +to parse the command\-line arguments. +.SH EXAMPLES +.TP +.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo +runs the +.BR xlogo (1x) +demonstration client inside the +.B Xvfb +X server on the first available server number greater than or equal to 1. +.TP +.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces +runs the +.BR ico (1x) +demonstration client (and passes it the +.B \-faces +argument) inside the +.B Xvfb +X server, configured with a root window of 1024 by 768 pixels and a color +depth of 24 bits. +.PP +Note that the demo X clients used in the above examples will not exit on +their own, so they will have to be killed before +.B xvfb\-run +will exit. +.SH BUGS +See +.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" . +If you wish to report a bug in +.BR xvfb\-run , +please use the +.BR reportbug (1) +command. +.SH AUTHOR +.B xvfb\-run +was written by Branden Robinson and Jeff Licquia with sponsorship from +Progeny Linux Systems. +.SH "SEE ALSO" +.BR Xvfb (1x), +.BR xauth (1x) +.\" vim:set et tw=80: --- xorg-server-1.11.4.orig/debian/local/64-xorg-xkb.rules +++ xorg-server-1.11.4/debian/local/64-xorg-xkb.rules @@ -0,0 +1,8 @@ +ACTION!="add|change", GOTO="xorg_xkb_end" +SUBSYSTEM!="input", GOTO="xorg_xkb_end" +KERNEL!="event*", GOTO="xorg_xkb_end" + +# import keyboard layout from /etc/default/keyboard +ENV{ID_INPUT_KEY}=="?*", IMPORT{file}="/etc/default/keyboard" + +LABEL="xorg_xkb_end" --- xorg-server-1.11.4.orig/debian/local/xsf.pm +++ xorg-server-1.11.4/debian/local/xsf.pm @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Debian::Debhelper::Dh_Lib; + +insert_before("dh_gencontrol", "dh_xsf_substvars"); + +1; --- xorg-server-1.11.4.orig/debian/local/xvfb-run +++ xorg-server-1.11.4/debian/local/xvfb-run @@ -0,0 +1,192 @@ +#!/bin/sh + +# $Id: xvfb-run 2027 2004-11-16 14:54:16Z branden $ + +# This script starts an instance of Xvfb, the "fake" X server, runs a command +# with that server available, and kills the X server when done. The return +# value of the command becomes the return value of this script, except in cases +# where this script encounters an error. +# +# If anyone is using this to build a Debian package, make sure the package +# Build-Depends on xvfb, xbase-clients, and xfonts-base. + +set -e + +PROGNAME=xvfb-run +SERVERNUM=99 +AUTHFILE= +ERRORFILE=/dev/null +STARTWAIT=3 +XVFBARGS="-screen 0 640x480x8" +LISTENTCP="-nolisten tcp" +XAUTHPROTO=. + +# Query the terminal to establish a default number of columns to use for +# displaying messages to the user. This is used only as a fallback in the event +# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the +# script is running, and this cannot, only being calculated once.) +DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true +if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then + DEFCOLUMNS=80 +fi + +# Display a message, wrapping lines at the terminal width. +message () { + echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS} +} + +# Display an error message. +error () { + message "error: $*" >&2 +} + +# Display a usage message. +usage () { + if [ -n "$*" ]; then + message "usage error: $*" + fi + cat <>"$ERRORFILE" 2>&1 + fi + if [ -n "$XVFB_RUN_TMPDIR" ]; then + if ! rm -r "$XVFB_RUN_TMPDIR"; then + error "problem while cleaning up temporary directory" + exit 5 + fi + fi +} + +# Parse the command line. +ARGS=$(getopt --options +ae:f:hn:lp:s:w: \ + --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \ + --name "$PROGNAME" -- "$@") +GETOPT_STATUS=$? + +if [ $GETOPT_STATUS -ne 0 ]; then + error "internal error; getopt exited with status $GETOPT_STATUS" + exit 6 +fi + +eval set -- "$ARGS" + +while :; do + case "$1" in + -a|--auto-servernum) SERVERNUM=$(find_free_servernum); AUTONUM="yes" ;; + -e|--error-file) ERRORFILE="$2"; shift ;; + -f|--auth-file) AUTHFILE="$2"; shift ;; + -h|--help) SHOWHELP="yes" ;; + -n|--server-num) SERVERNUM="$2"; shift ;; + -l|--listen-tcp) LISTENTCP="" ;; + -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;; + -s|--server-args) XVFBARGS="$2"; shift ;; + -w|--wait) STARTWAIT="$2"; shift ;; + --) shift; break ;; + *) error "internal error; getopt permitted \"$1\" unexpectedly" + exit 6 + ;; + esac + shift +done + +if [ "$SHOWHELP" ]; then + usage + exit 0 +fi + +if [ -z "$*" ]; then + usage "need a command to run" >&2 + exit 2 +fi + +if ! which xauth >/dev/null; then + error "xauth command not found" + exit 3 +fi + +# tidy up after ourselves +trap clean_up EXIT + +# If the user did not specify an X authorization file to use, set up a temporary +# directory to house one. +if [ -z "$AUTHFILE" ]; then + XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)" + # Create empty file to avoid xauth warning + AUTHFILE=$(tempfile -n "$XVFB_RUN_TMPDIR/Xauthority") +fi + +# Start Xvfb. +MCOOKIE=$(mcookie) +tries=10 +while [ $tries -gt 0 ]; do + tries=$(( $tries - 1 )) + XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1 +add :$SERVERNUM $XAUTHPROTO $MCOOKIE +EOF + XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >>"$ERRORFILE" 2>&1 & + XVFBPID=$! + + sleep "$STARTWAIT" + if kill -0 $XVFBPID 2>/dev/null; then + break + elif [ -n "$AUTONUM" ]; then + # The display is in use so try another one (if '-a' was specified). + SERVERNUM=$((SERVERNUM + 1)) + SERVERNUM=$(find_free_servernum) + continue + fi + error "Xvfb failed to start" >&2 + exit 1 +done + +# Start the command and save its exit status. +set +e +DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1 +RETVAL=$? +set -e + +# Kill Xvfb now that the command has exited. +kill $XVFBPID + +# Return the executed command's exit status. +exit $RETVAL + +# vim:set ai et sts=4 sw=4 tw=80: --- xorg-server-1.11.4.orig/debian/local/dh_xsf_substvars +++ xorg-server-1.11.4/debian/local/dh_xsf_substvars @@ -0,0 +1,53 @@ +#!/bin/sh +# © 2011 Cyril Brulebois +# +# Usage: +# Call this script from debian/rules, before dh_gencontrol is run, +# to get all needed variables computed in debian/$p.substvars for +# each package $p found through dh_listpackages. +# . +# This script has support for udebs. +set -e + +# Sanity check. All drivers build-depend on debhelper: +if ! which dh_listpackages >/dev/null 2>&1; then + echo "E: dh_listpackages not found, debhelper package missing?" + exit 1 +fi + +# Read the dependencies once: +INPUTDEP=$(cat /usr/share/xserver-xorg/xinputdep 2>/dev/null) +VIDEODEP=$(cat /usr/share/xserver-xorg/videodrvdep 2>/dev/null) + +# Iterate on the packages: +for package in $(dh_listpackages); do + case $package in + *-udeb) + # udebs depend on udebs, tweak the dependency on the server: + inputdep=$(echo "$INPUTDEP"|sed 's/xserver-xorg-core/&-udeb/') + videodep=$(echo "$VIDEODEP"|sed 's/xserver-xorg-core/&-udeb/') + ;; + *) + # just copy the dependencies read previously: + inputdep="$INPUTDEP" + videodep="$VIDEODEP" + esac + + # To avoid having "unused substitution variable" warnings from + # dpkg-gencontrol, only set variables which make sense: + case $package in + *-dbg|*-dev|*-all) + # debug, devel, or meta package, no need for Depends/Provides. + : + ;; + xserver-xorg-input-*) + # input driver: + echo "xinpdriver:Depends=$inputdep" >> debian/$package.substvars + echo "xinpdriver:Provides=xorg-driver-input" >> debian/$package.substvars + ;; + xserver-xorg-video-*) + # video driver: + echo "xviddriver:Depends=$videodep" >> debian/$package.substvars + echo "xviddriver:Provides=xorg-driver-video" >> debian/$package.substvars + esac +done --- xorg-server-1.11.4.orig/debian/local/10-mouse.conf +++ xorg-server-1.11.4/debian/local/10-mouse.conf @@ -0,0 +1,5 @@ +Section "InputClass" + Identifier "mouse catchall" + MatchIsPointer "on" + Driver "mouse" +EndSection