diff --git a/autobuild.xml b/autobuild.xml index eb3adbbe68042690ffdc9659f2005732ab8364ad..2d5e3171fa99676f12ebb28762d744d3b5b7eb71 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -49,26 +49,16 @@ <string>apr_suite</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>0c53148aa00e51c06fa246c4130915be</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/apr_3p-update-apr/rev/297252/arch/Darwin/installer/apr_suite-1.4.5.297252-darwin-297252.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>9b8bcc3be6dbe40a04c9c81c313f70dc</string> + <string>045acdfadb2d3890f95182ad78bcc5c37d46fb2065982f5e10f69bf8e9319bcb747e8b0bc11268e8065123abe3ebd561</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/68333/658209/apr_suite-1.4.5.548882-darwin64-548882.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/111/packages/generic/apr_suite-668/1.7.0/apr_suite-1.7.0-darwin64-668.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -78,9 +68,11 @@ <key>archive</key> <map> <key>hash</key> - <string>84a1a140f20b25d714949185e854d14b</string> + <string>7fdeae0b56042a597fb135c677dbf2952dda101a6e8dff326560672cc8637c8ea4bbf19feaefa73b2384ca12d14f6c1b</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4811/15302/apr_suite-1.4.5.504800-linux64-504800.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/111/packages/generic/apr_suite-668/1.7.0/apr_suite-1.7.0-linux64-668.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -115,7 +107,7 @@ </map> </map> <key>version</key> - <string>1.4.5.328</string> + <string>1.7.0</string> </map> <key>boost</key> <map> @@ -131,18 +123,6 @@ <string>boost</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>c296845cad075250c1ae2620f175a957</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/boost_3p-update-boost/rev/297445/arch/Darwin/installer/boost-1.57-darwin-297445.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -267,18 +247,6 @@ <string>colladadom</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>726bc31e562752f081e95e8fcc70e405</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/Darwin/installer/colladadom-2.3.297450-darwin-297450.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -351,18 +319,6 @@ <string>curl</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>ad0061db7188a1b9a974eb0512eeeb8d</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/312763/arch/Darwin/installer/curl-7.47.0.312763-darwin-312763.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -555,38 +511,16 @@ <string>expat</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>452d1910ef853329cd59858e6c5b2c48</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/expat_3p-update-expat/rev/297014/arch/Darwin/installer/expat-2.0.1.297014-darwin-297014.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> - <key>darwin64</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>3656b7f7b655cb267fd94f089d2e145c</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54860/510198/expat-2.1.1.538990-darwin64-538990.tar.bz2</string> - </map> - <key>name</key> - <string>darwin64</string> - </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>5e1f025d1cebd12db542080aa755257f</string> + <string>29fa7170d908e84c6b456064ad51f1f9feba11effd12d7c0f9600597fb51085ec4d72eee8473420167568018b3c53282</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/380/943/expat-2.1.1.500375-linux64-500375.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/109/packages/generic/expat-658/2.2.10/expat-2.2.10-linux64-658.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -596,11 +530,11 @@ <key>archive</key> <map> <key>hash</key> - <string>4f6ce988932eb420afdb4eacd75dbce8</string> + <string>af1d89aa93916ee8ef9382f057b47abf31ebc6e44f1f9ecd8bc16193ef40a98669a821c2c0dd3c9368c14630a5144119</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/expat/windows/expat-2.2.9.323-windows-323.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/109/packages/generic/expat-658/2.2.10/expat-2.2.10-windows-658.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -610,18 +544,18 @@ <key>archive</key> <map> <key>hash</key> - <string>49dc81485705a32d345b4af6dab4ac1c</string> + <string>b8f16fdb8a3034a0c9ea616bb2ab4950ba88b2e597e92d4d346305ac6fbf4b9b8ff2b44db9696cd499641b80cf6cce28</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/expat/windows64/expat-2.2.9.323-windows64-323.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/109/packages/generic/expat-658/2.2.10/expat-2.2.10-windows64-658.tar.xz</string> </map> <key>name</key> <string>windows64</string> </map> </map> <key>version</key> - <string>2.2.9.323</string> + <string>2.2.10</string> </map> <key>fmodstudio</key> <map> @@ -637,30 +571,30 @@ <string>fmodstudio</string> <key>platforms</key> <map> - <key>darwin</key> + <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>21610bcca4e2ff76b6483c1faae8b152</string> + <string>6102d745784c55c0e119ed1d5503f2db1475fdb0b219f7e5b78f4f142bb832aca9f5799acbde61b6dc357245300e2503</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-internal/fmodstudio/darwin/fmodstudio-2.00.07.4-darwin-4.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-630/2.01.05/fmodstudio-2.01.05-darwin64-630.tar.xz</string> </map> <key>name</key> - <string>darwin</string> + <string>darwin64</string> </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>fd9fa19902088cbcd4f4806b5868a12d6778767dc28df78f888896f41ec813be4a264ef08e6a2d5cbe03ea73101f575a</string> + <string>805a1ea614e3c50930ae788f8f4ee9fc9242d9f74227f5de02468fd91793e320b08caae69d0efd36112ea671b29b7518</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-531/2.01.05/fmodstudio-2.01.05-linux64-531.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-630/2.01.05/fmodstudio-2.01.05-linux64-630.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -670,11 +604,11 @@ <key>archive</key> <map> <key>hash</key> - <string>10c133dbe2741548c4e8df55b042cdb9a37805fdc97d4584b7790b7fc0b069d3dad465c74851a95a248f53e86b53d54d</string> + <string>99a4c03dbcb6f476288f9934a0c2e8b45db790905f0dc67395624cb78949d2cddf3ff46c3fcfa811f261bef90c656126</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-531/2.01.05/fmodstudio-2.01.05-windows-531.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-630/2.01.05/fmodstudio-2.01.05-windows-630.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -684,11 +618,11 @@ <key>archive</key> <map> <key>hash</key> - <string>85a598e8fdec15eb062050ec99e18f5895089e5d9305976e71a22ae7d47787985887be3065fe8f8e610eec1a75b66138</string> + <string>80223c0d181f12dc4870a6b82ba1943724f8411a6f1d49d9195379e6918c7b2298362193fb912bdf2714b808c4f58445</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-531/2.01.05/fmodstudio-2.01.05-windows64-531.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/49/packages/generic/fmodstudio-630/2.01.05/fmodstudio-2.01.05-windows64-630.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -711,18 +645,6 @@ <string>freetype</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>83618d16d974eb0af93926a10ac13297</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freetype_3p-update-freetype/rev/297053/arch/Darwin/installer/freetype-2.4.4.297053-darwin-297053.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -811,28 +733,16 @@ <string>glod</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>71e678d70e276fc42a56926fc28a7abd</string> - <key>hash_algorithm</key> - <string>md5</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glod_3p-update-glod/rev/296895/arch/Darwin/installer/glod-1.0pre4.296895-darwin-296895.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>343913fe1434da228c2210c23d2e3a1a</string> + <string>fbc9dbf283606b6511a9e6c70293c12ea3183c4ddb8e1e86533a7ecf9968d95002df708b3dfba380fbc3f4359a873b32</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54850/510134/glod-1.0pre3.538980-darwin64-538980.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-648/1.0.3/glod-1.0.3-darwin64-648.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -842,11 +752,11 @@ <key>archive</key> <map> <key>hash</key> - <string>bf368ecabce95e2daa6d71c74c09682167508e0e44848dea21ed78a16992b00cccfdb6cf4c31f6994317a3051420b3d9</string> + <string>487b26988bc04b6a5d4a5cd75999fad262d1ea3b31d9924e70deaa86e1be8c546aa95ce1fa006cfecd7319035b5c8e3c</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-612/1.0.3/glod-1.0.3-linux64-612.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-648/1.0.3/glod-1.0.3-linux64-648.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -856,11 +766,11 @@ <key>archive</key> <map> <key>hash</key> - <string>797a8e468b5fc69b367e8b71c154fe1783ef664bfe7a0502dc1be5c47f1dafb7a9292ff15f8223e9debdb5d30706541a</string> + <string>bee660e23463dbad9586d9c925b625807bea691cd3eb116cce6804c9f720775d54382931216673fb30c079cbb695a2e7</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-612/1.0.3/glod-1.0.3-windows-612.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-648/1.0.3/glod-1.0.3-windows-648.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -870,11 +780,11 @@ <key>archive</key> <map> <key>hash</key> - <string>3c8eb4e8dfa94cabc1a3948c850f077873d81afce6b0be5cdf22d53014f46ed47c64057f498cfd7dd4882736e392f12f</string> + <string>72580aa99a62e3c1162cc4e6710a6561e0b4bb609e3c31357e0bced8d94e258adf5038e0c07d60371f9f749047e7d474</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-612/1.0.3/glod-1.0.3-windows64-612.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/116/packages/generic/glod-648/1.0.3/glod-1.0.3-windows64-648.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -925,18 +835,6 @@ <string>havok-source</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>5c5b4820999ae9e398801d6a46f45897</string> - <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/297312/arch/Darwin/installer/havok_source-2012.1-darwin-297312.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -1003,18 +901,6 @@ <string>kdu</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>3855bd40f950e3c22739ae8f3ee2afc9</string> - <key>url</key> - <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/15258/98444/kdu-7.10.4.513518-darwin-513518.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -1085,16 +971,30 @@ <string>libepoxy</string> <key>platforms</key> <map> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>9c8631a1cf8e803784c749241278f6b202111e043b62336bb6cf23e54b6aadf7a114431bd86d45e3eee3031ba9f4b1e5</string> + <key>hash_algorithm</key> + <string>sha3_384</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-640/1.5.4/libepoxy-1.5.4-darwin64-640.tar.xz</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>086bc23ed894704f78cd5e5c8760c8d5989ea5950f60d8d8c49eb383e204e4d74469d55d9d7c2ead9d8aa2afe9d59752</string> + <string>3563e579c391ab4eb0179dd3ed1bfcc21de712a8f03eb39e0dc40d2cdf3d24184a6b014234b524089e23b313d8aed0d0</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-551/1.5.4/libepoxy-1.5.4-linux64-551.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-640/1.5.4/libepoxy-1.5.4-linux64-640.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -1104,11 +1004,11 @@ <key>archive</key> <map> <key>hash</key> - <string>1d2a5026e23d482165d7a490295e15caf9c6111c584b4ffbe195f551074a6f723f2d0dd35ac7b160edb59afff5bd6b29</string> + <string>c90213365bb006760385ccfcaaf1acedfff972a819c059300fec135b794eff371359d833dafcdb203cc32168575da24e</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-551/1.5.4/libepoxy-1.5.4-windows-551.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-640/1.5.4/libepoxy-1.5.4-windows-640.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1118,11 +1018,11 @@ <key>archive</key> <map> <key>hash</key> - <string>92874f4f672d5f66845872eba7c05e26a8396a78ec1e31ef6c10938b530298009d9aca51bb83108a78afcab426c98bc3</string> + <string>ff3dedc57239ecfc45b97ccdf984e23cc40ee1c22af54527d2d9edade96fe7a7333b72b086622497eca88b49cc68cab1</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-551/1.5.4/libepoxy-1.5.4-windows64-551.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/101/packages/generic/libepoxy-640/1.5.4/libepoxy-1.5.4-windows64-640.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -1145,26 +1045,16 @@ <string>libhunspell</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>05eda16106df26a211f8bdd874d1fca5</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/hunspell_3p-update-hunspell/rev/296916/arch/Darwin/installer/libhunspell-1.3.2.296916-darwin-296916.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>c327e6d6573fc0a808677de47f08acd9</string> + <string>4450df2596f2b8248773d2c11080c8137b135bd5e17af4d4d9086d12e77af2affc88cfdb60ded02bd0355737b6287dd6</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54844/510092/libhunspell-1.3.2.538974-darwin64-538974.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-654/1.7.0/libhunspell-1.7.0-darwin64-654.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -1174,11 +1064,11 @@ <key>archive</key> <map> <key>hash</key> - <string>bd802998bdfe6b1fdaef3092e3eea85e08e7f6da27133d5046812b4efc7505b53419ede488ec34da8660677be5556647</string> + <string>b19405654764890352ceb796f40ca56085c7e711e35cd1fb4fb3606d972de0c457698425c33cc36434c2e4a5a30d7ec5</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-535/1.7.0/libhunspell-1.7.0-linux64-535.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-654/1.7.0/libhunspell-1.7.0-linux64-654.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -1188,11 +1078,11 @@ <key>archive</key> <map> <key>hash</key> - <string>a3e08aa2140d1126c448b87c176dc4456971f5d3d2bd12dcd2a6ffd40b8686e26be324a5c86ae9147eeeaf14c26be5be</string> + <string>4b8b2f04113e39c762b582710fbc65f69e3e37bc5f868868198aea16e75af0b8cb8daa8e26cbe6bd337786bade67355d</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-535/1.7.0/libhunspell-1.7.0-windows-535.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-654/1.7.0/libhunspell-1.7.0-windows-654.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1202,11 +1092,11 @@ <key>archive</key> <map> <key>hash</key> - <string>33d49d97447889e912355ca5db3958ba402b54926e511eb0c673b58be9f97475c9e6fcb4779da2640a0855a1e061cf53</string> + <string>0928658489a5010e983ec926ae77ef8a8bee9086b68d8dfc8350cbb5a4202042d8f71abae914c9c9ade8ce1c31225d1c</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-535/1.7.0/libhunspell-1.7.0-windows64-535.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/107/packages/generic/libhunspell-654/1.7.0/libhunspell-1.7.0-windows64-654.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -1231,16 +1121,30 @@ <string>libjpeg-turbo</string> <key>platforms</key> <map> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>06b11aa572faaaf44df739bb46d980546ce69f0cb0983416b813b45b0836b7bd69476a6f948c91081300b87a673e0c6d</string> + <key>hash_algorithm</key> + <string>sha3_384</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-639/2.0.5/libjpeg_turbo-2.0.5-darwin64-639.tar.xz</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>a37a168d901e5826b616ee94e077bbe416b8f5f4f67322b5d4a846d085d94121f3905c758413c6931d2b98fa347a9a10</string> + <string>378bc4580f2382e150368d50412e65a360a76f4bb576fed64cea412ba7c355af9ab7a1f4027117eaf6aed5badec4df24</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-613/2.0.5/libjpeg_turbo-2.0.5-linux64-613.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-639/2.0.5/libjpeg_turbo-2.0.5-linux64-639.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -1250,11 +1154,11 @@ <key>archive</key> <map> <key>hash</key> - <string>914a5bff9495ab2fe919df3a4b755854cb2ec38e8e25b7ebae9b1fec9da8a6acbf404b09b5d7020af6d20373499f03ca</string> + <string>ea7f88129bb341d40408230e34d8cea32d531f9637906506fc5b173b47bf962cc4cbf531a8196a58228feaad419afb82</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-613/2.0.5/libjpeg_turbo-2.0.5-windows-613.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-639/2.0.5/libjpeg_turbo-2.0.5-windows-639.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1264,11 +1168,11 @@ <key>archive</key> <map> <key>hash</key> - <string>ea030cef8238a7978b4a030aedecf8f996380e08035beeb8b8fe6a994a4b9f926a910c5418c66eb13b51723d220e8f44</string> + <string>97e62aee5f3250031dc9140f8d126a55de3d350eb7233029d8b6b6c06630d5462a9420df626a32170f2f37448dbb6697</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-613/2.0.5/libjpeg_turbo-2.0.5-windows64-613.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/115/packages/generic/libjpeg-turbo-639/2.0.5/libjpeg_turbo-2.0.5-windows64-639.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -1291,26 +1195,16 @@ <string>libndofdev</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>a01b411433dbf8a4b481de9e76d9a652</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libndofdev_3p-update-libndofdev/rev/297264/arch/Darwin/installer/libndofdev-0.1.297264-darwin-297264.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>bf765dfe0b928ef3c531cd9618fee89b</string> + <string>8922b3c06c9bccf5bb6e2cb47fb95f39f022a41ebce10d0de039bf2a28fbe916a11461f4c8c30aa3d5ce86d760933741</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54843/510085/libndofdev-0.1.538973-darwin64-538973.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/117/packages/generic/libndofdev-645/0.1.0/libndofdev-0.1.0-darwin64-645.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -1320,11 +1214,11 @@ <key>archive</key> <map> <key>hash</key> - <string>cbb264744a5ef9bc4ae712f6e12037cef4d2f9ab1623550ac9310c1c164bba68220f43abc76ab18365f14bd177e4c5a4</string> + <string>d3d2b703280d166b358194395cc7d1c56c3877caec30fa7fbf7f97cc68aa1b249c75fbdaefc420c3b32bb8ec6a547cf3</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/117/packages/generic/libndofdev-539/0.1.0/libndofdev-0.1.0-windows-539.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/117/packages/generic/libndofdev-645/0.1.0/libndofdev-0.1.0-windows-645.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1334,11 +1228,11 @@ <key>archive</key> <map> <key>hash</key> - <string>c42ec73239878eacf298a6cbc1b056cc896788bf31a0ab93897965bc53453dac8251e8ebd8ddb9edc53a46e24d8272b2</string> + <string>b947e7482408e17e89c81c4af06521286ba1b7a5d49b42e428bd3fb26126e4a4379bc0a29dc41259e87aacefb12c0515</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/117/packages/generic/libndofdev-539/0.1.0/libndofdev-0.1.0-windows64-539.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/117/packages/generic/libndofdev-645/0.1.0/libndofdev-0.1.0-windows64-645.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -1361,18 +1255,6 @@ <string>libpng</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>14cb5c8686a472e9e60179e46cd196f7</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297708/arch/Darwin/installer/libpng-1.6.8.297708-darwin-297708.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -1447,16 +1329,30 @@ <string>libwebp</string> <key>platforms</key> <map> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>cb9c58dc7a84ec6798fbb455fe76ff93848db5c424b57519a03eb7db10db8c1ddd25cb55a93761b6b205a5b88918e5fd</string> + <key>hash_algorithm</key> + <string>sha3_384</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-653/1.1.0/libwebp-1.1.0-darwin64-653.tar.xz</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>abaddbba19b080576046434821d61316f36051084df83029ed8eaca9e4806ced2acfd4a9e40cae95addf06189c834973</string> + <string>c99702693f5918b87a66e13f84ea3bfeb37bcb0d244e74c602dc3e64f70139ec5b8ec21a3c87ea2595134fb8e05754ce</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-547/1.1.0/libwebp-1.1.0-linux64-547.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-653/1.1.0/libwebp-1.1.0-linux64-653.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -1466,11 +1362,11 @@ <key>archive</key> <map> <key>hash</key> - <string>e59adba5c4cf4b67f9e99a5f55933f3225f722d1ce17a20280e6158a6857f26d41cb7a0d17f142bcf6c44436b5c10870</string> + <string>e1b0f042dabbb65a9280b408eb3b577cd11264019ac4eb04d025edf44910b7382ba48ae50b6f9424c5a3acaaa2e03eca</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-547/1.1.0/libwebp-1.1.0-windows-547.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-653/1.1.0/libwebp-1.1.0-windows-653.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1480,11 +1376,11 @@ <key>archive</key> <map> <key>hash</key> - <string>8c51f710ef23dacbd40e5ed55e96d5af6e9f1521e7a76e0446ccb9093174eeab7bc0f0a980f303263f9c49ed0b8c51ed</string> + <string>51384482c354420556b0f7f740ae2e6bdebcef2dbde093fa7fd59980a7b27c04779d8734d4ab35537ef1d5419c5f7c2c</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-547/1.1.0/libwebp-1.1.0-windows64-547.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/82/packages/generic/libwebp-653/1.1.0/libwebp-1.1.0-windows64-653.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -1507,18 +1403,6 @@ <string>libxml2</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>9303f0dd174129e297eca6cc2eb1ab3f</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libxml_3p-update-libxml/rev/297050/arch/Darwin/installer/libxml2-2.9.1.297050-darwin-297050.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -1846,16 +1730,30 @@ <string>ndPhysicsStub</string> <key>platforms</key> <map> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>2d73eb791ec9f0a739bbf86b2d55e6600c736b1a0109555df03256883298d6942cd3b51e022e49e70f57f5750b3c807a</string> + <key>hash_algorithm</key> + <string>sha3_384</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-642/0.1.2/ndPhysicsStub-0.1.2-darwin64-642.tar.xz</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>f49947e28fdfe84cb107ae17ea8f88fca3f2dde3c2868d0c8726e038e16d93f7ccd1158ac9c69f460bdd262c35cae33d</string> + <string>9c179321a1e61a55541eb3d156d935d4d2919c5ad928725f2e3b8ec8fcd110996e8fd876f7e0695f8849b70f435f72c4</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-537/0.1.2/ndPhysicsStub-0.1.2-linux64-537.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-642/0.1.2/ndPhysicsStub-0.1.2-linux64-642.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -1865,11 +1763,11 @@ <key>archive</key> <map> <key>hash</key> - <string>bdd8121de3054c37e6fc589dbd7e656da8aa81eff6852414388aef44a067c644eef891176df7044f895443b2003ab0b9</string> + <string>41548f8e9fc78cc6396c56f464bfc40875545ca6f6fe3faa58ee2da643d93072328d03be85510ecad17b3a45f9702671</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-537/0.1.2/ndPhysicsStub-0.1.2-windows-537.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-642/0.1.2/ndPhysicsStub-0.1.2-windows-642.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -1879,11 +1777,11 @@ <key>archive</key> <map> <key>hash</key> - <string>096b10a4c88519b7b8001f89c1bb34a3625268a6d9457bfbef21bffb4a12e439531331d53d2183c0f960da914d0524f8</string> + <string>3a7f09b873c8f63c5901e4fe6d98bb6e6d8a9f663d64ee77a056cfcb6c9bcea0edcbb1404933061c64c67b36b7696ea8</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-537/0.1.2/ndPhysicsStub-0.1.2-windows64-537.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/127/packages/generic/ndPhysicsStub-642/0.1.2/ndPhysicsStub-0.1.2-windows64-642.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -2027,26 +1925,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>ogg_vorbis</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>07fca1531a27915f642a5c1d95008d54</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oggvorbis_3p-update-oggvorbis/rev/296878/arch/Darwin/installer/ogg_vorbis-1.2.2-1.3.2.296878-darwin-296878.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>a066f1d12caee1d87fc72f48169f9677</string> + <string>906749c3c608897062b5f15fe640765efc57f16417b430acf5d07087b7855bc6ea5aaa5834e4260f84ce957904b4ed9e</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54841/510071/ogg_vorbis-1.3.3-1.3.6.538971-darwin64-538971.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-652/1.3.4/ogg_vorbis-1.3.4-darwin64-652.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -2056,11 +1944,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>ec0cff5e43a62c5814b97bd70499ae824ad937e0a5d6e7d04e39507766c8a4a955174aaccd201961a7fde9f200a08c1e</string> + <string>301cb0a8f1ce82c0bb7b4adddb78cdc9c7eb4dbddac2ccf64a76fab9aea9eb499236a28ccc8563fbca74858fc425d6af</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-596/1.3.4/ogg_vorbis-1.3.4-linux64-596.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-652/1.3.4/ogg_vorbis-1.3.4-linux64-652.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -2070,11 +1958,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>28187678704036e7f03f6438040d6fec6c233c0897cf708e6b62f40b9a2dce95fe9233c54788c368207609d7025e6420</string> + <string>3dc3502a40dd7865d3674fe84720b4919fa1c88920c300a302115e56f20404cf4aefe9204ba68f96cd4a42e38102560b</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-596/1.3.4/ogg_vorbis-1.3.4-windows-596.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-652/1.3.4/ogg_vorbis-1.3.4-windows-652.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -2084,11 +1972,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>976ecebc3dab7f1bdf0083de09164093e76be1755fc1f21a4a9ba58362fb542af586d4fc1d68ebb4a1d5886b3feffe9d</string> + <string>c042a72824bb14de08931c59280e044c282e751460301f6c5be19ac576dfbb69c85da4813c0cb7106848c9cf86292fe0</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-596/1.3.4/ogg_vorbis-1.3.4-windows64-596.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/112/packages/generic/ogg_vorbis-652/1.3.4/ogg_vorbis-1.3.4-windows64-652.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -2143,16 +2031,30 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>openal</string> <key>platforms</key> <map> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>d91d311729c0530b4e3edebb582fc24bdd8444717c83b10ded87b45362c1be02cbfe82246b54533e49331116f356eb7e</string> + <key>hash_algorithm</key> + <string>sha3_384</string> + <key>url</key> + <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-637/1.20.1/openal-1.20.1-darwin64-637.tar.xz</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> <key>linux64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>418f9bd3f8c221c0bcdfb8574c7fa223eba1d7146729a46b883e9ece7b4a164d4502ca4c7ee619b1f93d231ca124c69d</string> + <string>8d9c6080e0041c0da955b362d04e69abe4357ddf70d0985ef4c9ba752ffeef265359541e866381a34a749a5d575b5868</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-603/1.20.1/openal-1.20.1-linux64-603.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-637/1.20.1/openal-1.20.1-linux64-637.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -2162,11 +2064,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>a5ead11c24b4ac7182ddaff3287949308534e576cbcc71a18a51408d902f28d605801a596db40d2f3d056632f83f895f</string> + <string>aaf7c9fa67c70cf740a286483f0041a58da8b92be679a6b6106bdb7e7f7f3162c6a5e717f31df9206e043998cc6b871e</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-603/1.20.1/openal-1.20.1-windows-603.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-637/1.20.1/openal-1.20.1-windows-637.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -2176,11 +2078,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>c3ff4d0470b5c784624796bd70561e4ecfc8bb2ad0d5ce9dc7042713075a028719f82bb1d6f429e6d503510b016274c7</string> + <string>939620e0b14993f199017b957f17796b9ec1fcf7afd93b080cb8eeb6abd0e975bfdec12a9fc3f634b1db502849d53746</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-603/1.20.1/openal-1.20.1-windows64-603.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/141/packages/generic/openal-637/1.20.1/openal-1.20.1-windows64-637.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -2203,26 +2105,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>openjpeg</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>2adb5b8bd2493d576c5d02b992d8f819</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openjpeg_3p-update-openjpeg/rev/297018/arch/Darwin/installer/openjpeg-1.4.297018-darwin-297018.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>5abf2d9c0b250821c59cc60cd94fd8af</string> + <string>3d8435efb9a29d0e02db30221e58de512dde217fc0b6deda26543a102bdd1487d55658fc44b311d8eb1413d070fe3a07</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54840/510064/openjpeg-1.5.1.538970-darwin64-538970.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-641/1.5.1/openjpeg-1.5.1-darwin64-641.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -2232,11 +2124,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>fc646fd26d43da18ab12af90d991676e8662e2cf2871082dbc7d77b96aea412d1e8c1edef736259749c2aa88bc2da21e</string> + <string>60a1ca9b97ad74a8e3a33d33caf503cdb5e7f1684d6316ed484471c02124d603878c8526f7166a16064cd7c88b9905db</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-534/1.5.1/openjpeg-1.5.1-linux64-534.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-641/1.5.1/openjpeg-1.5.1-linux64-641.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -2246,11 +2138,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>4a29e53aa16c31266df7ddfcd9028043a229cecac47b3165dbbc282875df2aaf232346db396ec430c0bc09dd4641b8d1</string> + <string>474913320ea038660a73810b6563d0b2174cef5a9445f3454fb6e8d9efac89fddb9fb0be007001a434ec3c8125917f6d</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-534/1.5.1/openjpeg-1.5.1-windows-534.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-641/1.5.1/openjpeg-1.5.1-windows-641.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -2260,11 +2152,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>a1a5eb80cc0995569c15647c5367bf9ddede03676e725562f6f1023351109c831d5cdbf9e732f4186e374d819f01a4d0</string> + <string>044b5655aecdc9e22f013509ec3a0a8297955cfc993465256e182d519876d55bc3b33df56b861f587a8086e79b8aa090</string> <key>hash_algorithm</key> <string>sha3_384</string> <key>url</key> - <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-534/1.5.1/openjpeg-1.5.1-windows64-534.tar.xz</string> + <string>https://git.alchemyviewer.org/api/v4/projects/105/packages/generic/openjpeg-641/1.5.1/openjpeg-1.5.1-windows64-641.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -2287,18 +2179,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>openssl</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>0a77d56769e6075957f614be6575423e</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openssl_3p-update-openssl/rev/297168/arch/Darwin/installer/openssl-1.0.1h.297168-darwin-297168.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> @@ -2357,32 +2237,98 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>version</key> <string>1.0.2u.315</string> </map> - <key>slvoice</key> + <key>pcre</key> <map> <key>copyright</key> - <string>2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C)</string> + <string>Copyright (c) 1997-2014 University of Cambridge; Copyright(c) 2009-2014 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc.</string> <key>description</key> - <string>Vivox SDK components</string> + <string>PCRE Perl-compatible regular expression library</string> <key>license</key> - <string>Mixed</string> + <string>bsd</string> <key>license_file</key> - <string>LICENSES/vivox_licenses.txt</string> + <string>LICENSES/pcre-license.txt</string> <key>name</key> - <string>slvoice</string> + <string>pcre</string> <key>platforms</key> <map> - <key>darwin</key> + <key>darwin64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>d8c0f97fe5abef43e72b6f84aba698b2</string> + <key>url</key> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54856/510176/pcre-8.35.538986-darwin64-538986.tar.bz2</string> + </map> + <key>name</key> + <string>darwin64</string> + </map> + <key>linux</key> <map> <key>archive</key> <map> <key>hash</key> - <string>511a9c3fd4b6c76a8a737d06bba1c291</string> + <string>24a119b18e63017ad932ad54df8161bc</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oz-426-slvoice/rev/330003/arch/Darwin/installer/slvoice-4.9.0002.27586.330003-darwin-330003.tar.bz2</string> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-pcre/rev/314136/arch/Linux/installer/pcre-8.35.314136-linux-314136.tar.bz2</string> </map> <key>name</key> - <string>darwin</string> + <string>linux</string> </map> + <key>linux64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>0f058ca2176e7d02d51e54c66a96f336</string> + <key>url</key> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/908/2010/pcre-8.35.500898-linux64-500898.tar.bz2</string> + </map> + <key>name</key> + <string>linux64</string> + </map> + <key>windows</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>3660db45793df3050b63920bfb7d8479</string> + <key>url</key> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55041/512002/pcre-8.35.538986-windows-538986.tar.bz2</string> + </map> + <key>name</key> + <string>linux</string> + </map> + <key>windows64</key> + <map> + <key>archive</key> + <map> + <key>hash</key> + <string>cdee8e8b48a66266550bf279c40abc22</string> + <key>url</key> + <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55038/511992/pcre-8.35.538986-windows64-538986.tar.bz2</string> + </map> + <key>name</key> + <string>windows64</string> + </map> + </map> + <key>version</key> + <string>8.35.538986</string> + </map> + <key>slvoice</key> + <map> + <key>copyright</key> + <string>2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C)</string> + <key>description</key> + <string>Vivox SDK components</string> + <key>license</key> + <string>Mixed</string> + <key>license_file</key> + <string>LICENSES/vivox_licenses.txt</string> + <key>name</key> + <string>slvoice</string> + <key>platforms</key> + <map> <key>darwin64</key> <map> <key>archive</key> @@ -2485,26 +2431,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>uriparser</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>22608adaf54e8ddc9182a719ba6e2b32</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/uriparser_3p-update-uriparser/rev/299435/arch/Darwin/installer/uriparser-0.8.0.1-darwin-299435.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>d463360491b6b5cb7a57cd67a90ececb</string> + <string>860b03d04da117ec8fd5e56cbf10ece213e4880c7f02e07ddffa23e4c4c0d1333a1de5be960569ab71b4fbb52ea90255</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54838/510050/uriparser-0.8.0.1-darwin64-538968.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/96/packages/generic/uriparser-655/0.9.4/uriparser-0.9.4-darwin64-655.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -2514,11 +2450,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>66328f420630b1c67c7d68ca734bd557</string> + <string>f4b130c9d0fa4a8bbe407b2fdd65acfa6be1de2d01082d49cf23bc84f1b9069cf0a76d4334e232ecc0f02042b699ae64</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/uriparser/linux64/debian10/uriparser-0.9.4-linux64-202210514.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/96/packages/generic/uriparser-655/0.9.4/uriparser-0.9.4-linux64-655.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -2528,11 +2464,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>cc6ed6acc98c9ea36b14c3186002c38a</string> + <string>1c9aaaabd10a4db5a3e4104448db6a7213b954f5069ceaa12b1f550b9fa6b9b4414768e39ab8317604cab75f4021da68</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/uriparser/windows/uriparser-0.9.4-windows-310.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/96/packages/generic/uriparser-655/0.9.4/uriparser-0.9.4-windows-655.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -2542,11 +2478,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>4d83a9d415212138f7ddb656e490b0d5</string> + <string>f2ce84167d065d9105fcb76686664dde6965e16db49ca71acecf07f2452e16bc4ba1a14fe8641d1bf275bc9b67a413b7</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/uriparser/windows64/uriparser-0.9.4-windows64-310.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/96/packages/generic/uriparser-655/0.9.4/uriparser-0.9.4-windows64-655.tar.xz</string> </map> <key>name</key> <string>windows64</string> @@ -2671,26 +2607,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>xmlrpc-epi</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>ffd3aab8e0c0ff6dadbce49ca2809078</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/xmlrpc-emi_3p-update-xmlrpc-epi/rev/297075/arch/Darwin/installer/xmlrpc_epi-0.54.1.297075-darwin-297075.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> <map> <key>hash</key> - <string>99ea1808ee9f5b55029daa9fdef86776</string> + <string>8363cf19c3218df7454f06227e32443f3fdbfc4cca945bec7987d4b0e42ef3e59df879d0d9387dc5675d56e5976f6e05</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55063/512104/xmlrpc_epi-0.54.1.539072-darwin64-539072.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/110/packages/generic/xmlrpc-epi-669/0.54.1/xmlrpc_epi-0.54.1-darwin64-669.tar.xz</string> </map> <key>name</key> <string>darwin64</string> @@ -2700,9 +2626,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>35df17c3eb673030dea4bde9191aa506</string> + <string>048906c305677f634b2fa05191ee312c201fe1030d050abdb3c161ca82e11c291bdc10969b99d8bb8286531eb49c48a7</string> + <key>hash_algorithm</key> + <string>sha3_384</string> <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/727/1489/xmlrpc_epi-0.54.1.500719-linux64-500719.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/110/packages/generic/xmlrpc-epi-669/0.54.1/xmlrpc_epi-0.54.1-linux64-669.tar.xz</string> </map> <key>name</key> <string>linux64</string> @@ -2712,11 +2640,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>eb26c5779a2bf53f2038a89282bed227</string> + <string>f1878aaff7046b5a44eb992bb9c1d3334b404f4a4cc2c3e04b16a91e00370c7c12676063bfed8e2f2445763f11da5400</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/xmlrpc-epi/windows/xmlrpc_epi-0.54.1.326-windows-326.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/110/packages/generic/xmlrpc-epi-669/0.54.1/xmlrpc_epi-0.54.1-windows-669.tar.xz</string> </map> <key>name</key> <string>windows</string> @@ -2726,18 +2654,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>archive</key> <map> <key>hash</key> - <string>e33a10439dbd430e158bdca16da2adc4</string> + <string>927932400fbede3bbaf7f8ba2ddfd46f1ea89029efeff595fc481a1a4fd9ee715f6653c6ae69719259b6b8d9ce50d925</string> <key>hash_algorithm</key> - <string>md5</string> + <string>sha3_384</string> <key>url</key> - <string>https://pkg.alchemyviewer.org/repository/autobuild-external/xmlrpc-epi/windows64/xmlrpc_epi-0.54.1.326-windows64-326.tar.bz2</string> + <string>https://git.alchemyviewer.org/api/v4/projects/110/packages/generic/xmlrpc-epi-669/0.54.1/xmlrpc_epi-0.54.1-windows64-669.tar.xz</string> </map> <key>name</key> <string>windows64</string> </map> </map> <key>version</key> - <string>0.54.1.326</string> + <string>0.54.1</string> </map> <key>zlib</key> <map> @@ -2753,18 +2681,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>zlib</string> <key>platforms</key> <map> - <key>darwin</key> - <map> - <key>archive</key> - <map> - <key>hash</key> - <string>1a79eeac199c2d94e4ae4e5d0194e25f</string> - <key>url</key> - <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/zlib_3p-update-zlib/rev/296881/arch/Darwin/installer/zlib-1.2.8.296881-darwin-296881.tar.bz2</string> - </map> - <key>name</key> - <string>darwin</string> - </map> <key>darwin64</key> <map> <key>archive</key> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 6fb6f819fef91c8e1eeeedc62dc3f2e46c284e76..de2181d3d4d2ac7d6470fb542f92c73f2ea6f886 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -270,26 +270,16 @@ endif (LINUX) if (DARWIN) # Warnings should be fatal -- thanks, Nicky Perian, for spotting reversed default set(CLANG_DISABLE_FATAL_WARNINGS OFF) + add_definitions(-DLL_DARWIN=1 -DGL_SILENCE_DEPRECATION) set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") - set(DARWIN_extra_cstar_flags "-Wno-unused-local-typedef -Wno-deprecated-declarations") - # Ensure that CMAKE_CXX_FLAGS has the correct -g debug information format -- - # see Variables.cmake. - string(REPLACE "-gdwarf-2" "-g${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}" - CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - # The viewer code base can now be successfully compiled with -std=c++14. But - # turning that on in the generic viewer-build-variables/variables file would - # potentially require tweaking each of our ~50 third-party library builds. - # Until we decide to set -std=c++14 in viewer-build-variables/variables, set - # it locally here: we want to at least prevent inadvertently reintroducing - # viewer code that would fail with C++14. - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags} -std=c++14") + set(DARWIN_extra_cstar_flags "-gdwarf-2 -Wno-unused-local-typedef") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DARWIN_extra_cstar_flags}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${DARWIN_extra_cstar_flags}") # NOTE: it's critical that the optimization flag is put in front. # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered. -## Really?? On developer machines too? -##set(ENABLE_SIGNING TRUE) -##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.") + + add_definitions(-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR=1) endif (DARWIN) diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake index 87740811b37fb72c9a3b1b9037a30decd383ddf3..6a2ffc1c1fa2fc770898377f6665285c94559a2d 100644 --- a/indra/cmake/Audio.cmake +++ b/indra/cmake/Audio.cmake @@ -30,10 +30,3 @@ else (USESYSTEMLIBS) set(VORBISFILE_LIBRARIES vorbisfile) endif (WINDOWS) endif (USESYSTEMLIBS) - -link_directories( - ${VORBIS_LIBRARY_DIRS} - ${VORBISENC_INCLUDE_DIRS} - ${VORBISFILE_LIBRARY_DIRS} - ${OGG_LIBRARY_DIRS} - ) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 7ddd609b8ea111c8aabc114eeaf990d94e6ab295..8b7ac2f71b2d3eae0237305fda7b429c287e58f7 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -135,14 +135,18 @@ elseif(DARWIN) libapr-1.dylib libaprutil-1.0.dylib libaprutil-1.dylib - libexception_handler.dylib ${EXPAT_COPY} libGLOD.dylib - libhunspell-1.3.0.dylib + libhunspell-1.7.0.dylib libndofdev.dylib libnghttp2.dylib libnghttp2.14.dylib libnghttp2.14.19.0.dylib + liburiparser.dylib + liburiparser.1.dylib + liburiparser.1.0.27.dylib + libxmlrpc-epi.dylib + libxmlrpc-epi.0.dylib ) if (USE_FMODSTUDIO) diff --git a/indra/cmake/EXPAT.cmake b/indra/cmake/EXPAT.cmake index 9e1242b5998b00f26fc43fa34f354da502ebb437..844cefd7413d010a3e92a58c386cb0955cf332c3 100644 --- a/indra/cmake/EXPAT.cmake +++ b/indra/cmake/EXPAT.cmake @@ -6,6 +6,8 @@ set(EXPAT_FIND_REQUIRED ON) if (USESYSTEMLIBS) include(FindEXPAT) +elseif(DARWIN) + find_package(EXPAT REQUIRED) else (USESYSTEMLIBS) use_prebuilt_binary(expat) if (WINDOWS) @@ -13,13 +15,9 @@ else (USESYSTEMLIBS) debug libexpatd.lib optimized libexpat.lib) set(EXPAT_COPY libexpat.dll) - else (WINDOWS) + else () set(EXPAT_LIBRARIES expat) - if (DARWIN) - set(EXPAT_COPY libexpat.1.dylib libexpat.dylib) - else () - set(EXPAT_COPY libexpat.so.1 libexpat.so) - endif () - endif (WINDOWS) + set(EXPAT_COPY libexpat.so.1 libexpat.so) + endif () set(EXPAT_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) endif (USESYSTEMLIBS) diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake index 02a48fd4b4e187abb03d3fdca3c0605e356b9437..8e418d01cc0cbd0742036e2dccc6614981f75066 100644 --- a/indra/cmake/FreeType.cmake +++ b/indra/cmake/FreeType.cmake @@ -8,8 +8,10 @@ if (LINUX OR USESYSTEMLIBS) pkg_check_modules(FONTCONFIG REQUIRED fontconfig) else () use_prebuilt_binary(freetype) - set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/) + if(DARWIN) + set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2) + else() + set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/) + endif() set(FREETYPE_LIBRARIES freetype) endif () - -link_directories(${FREETYPE_LIBRARY_DIRS}) diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake index 7e4bd179585e5e591d395c365ddc717aa1493f04..a6098fddde1aeeeae53cbd38c3457bf05787ccb5 100644 --- a/indra/cmake/Hunspell.cmake +++ b/indra/cmake/Hunspell.cmake @@ -11,7 +11,7 @@ else (USESYSTEMLIBS) if (WINDOWS) set(HUNSPELL_LIBRARY libhunspell) elseif(DARWIN) - set(HUNSPELL_LIBRARY hunspell-1.3) + set(HUNSPELL_LIBRARY hunspell-1.7) elseif(LINUX) set(HUNSPELL_LIBRARY hunspell-1.7) else() diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake index beee5132cb82acea7fcd1a6dbaf883fbe0772d5f..1e5b833719b571d41dde81b5fd43c898d6950564 100644 --- a/indra/cmake/JPEG.cmake +++ b/indra/cmake/JPEG.cmake @@ -8,14 +8,12 @@ set(JPEG_FIND_REQUIRED ON) if (USESYSTEMLIBS) include(FindJPEG) else (USESYSTEMLIBS) + use_prebuilt_binary(libjpeg-turbo) if (LINUX) - use_prebuilt_binary(libjpeg-turbo) set(JPEG_LIBRARIES jpeg) elseif (DARWIN) - use_prebuilt_binary(jpeglib) set(JPEG_LIBRARIES jpeg) elseif (WINDOWS) - use_prebuilt_binary(libjpeg-turbo) set(JPEG_LIBRARIES jpeg) endif (LINUX) set(JPEG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 9677eddefbdb57f15256657ea169f604091f8e83..60bffa5f9aca997721d02b70272316006f61255b 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -102,6 +102,13 @@ MACRO(LL_ADD_PROJECT_UNIT_TESTS project sources) # Setup target ADD_EXECUTABLE(PROJECT_${project}_TEST_${name} ${${name}_test_SOURCE_FILES}) SET_TARGET_PROPERTIES(PROJECT_${project}_TEST_${name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}") + if (DARWIN) + SET_TARGET_PROPERTIES(PROJECT_${project}_TEST_${name} + PROPERTIES + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_RPATH "@executable_path/Resources" + ) + endif(DARWIN) # # Per-codefile additional / external project dep and lib dep property extraction @@ -230,6 +237,14 @@ FUNCTION(LL_ADD_INTEGRATION_TEST ) endif (WINDOWS) + if (DARWIN) + SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} + PROPERTIES + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_RPATH "@executable_path/Resources" + ) + endif(DARWIN) + # Add link deps to the executable if(TEST_DEBUG) message(STATUS "TARGET_LINK_LIBRARIES(INTEGRATION_TEST_${testname} ${libraries})") diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake index 0773e7587a4c803b1f544a86036ee4a43f2e5213..da9d389a60703125c740fa11b90d43fe6bb9be09 100644 --- a/indra/cmake/LLSharedLibs.cmake +++ b/indra/cmake/LLSharedLibs.cmake @@ -75,8 +75,8 @@ macro(ll_stage_sharedlib DSO_TARGET) if (DARWIN) set_target_properties(${DSO_TARGET} PROPERTIES - BUILD_WITH_INSTALL_RPATH 1 - INSTALL_NAME_DIR "@executable_path/../Resources" + BUILD_WITH_INSTALL_NAME_DIR 1 + INSTALL_NAME_DIR "@executable_path/../Frameworks" ) endif(DARWIN) diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index c7556f3f11582230b4656a673afc50dff1290ce3..88b5ea94acafa271aad64628e3766e0893b86fea 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -151,60 +151,41 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(DARWIN 1) - string(REGEX MATCH "-mmacosx-version-min=([^ ]+)" scratch "$ENV{LL_BUILD}") - set(CMAKE_OSX_DEPLOYMENT_TARGET "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET = '${CMAKE_OSX_DEPLOYMENT_TARGET}'") - - string(REGEX MATCH "-stdlib=([^ ]+)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY = '${CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY}'") - - string(REGEX MATCH " -g([^ ]*)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "${CMAKE_MATCH_1}") - # -gdwarf-2 is passed in LL_BUILD according to 00-COMPILE-LINK-RUN.txt. - # However, when CMake 3.9.2 sees -gdwarf-2, it silently deletes the whole -g - # switch, producing no symbols at all! The same thing happens if we specify - # plain -g ourselves, i.e. CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT is - # the empty string. Specifying -gdwarf-with-dsym or just -gdwarf drives a - # different CMake behavior: it substitutes plain -g. As of 2017-09-19, - # viewer-build-variables/variables still passes -gdwarf-2, which is the - # no-symbols case. Set -gdwarf, triggering CMake to substitute plain -g -- - # at least that way we should get symbols, albeit mangled ones. It Would Be - # Nice if CMake's behavior could be predicted from a consistent mental - # model, instead of only observed experimentally. - string(REPLACE "dwarf-2" "dwarf" - CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT - "${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT = '${CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT}'") - - string(REGEX MATCH "-O([^ ]*)" scratch "$ENV{LL_BUILD}") - set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL "${CMAKE_MATCH_1}") - message(STATUS "CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL = '${CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL}'") - - string(REGEX MATCHALL "[^ ]+" LL_BUILD_LIST "$ENV{LL_BUILD}") - list(FIND LL_BUILD_LIST "-iwithsysroot" sysroot_idx) - if ("${sysroot_idx}" LESS 0) - message(FATAL_ERROR "Environment variable LL_BUILD must contain '-iwithsysroot'") + # Xcode setup + if (XCODE_VERSION LESS 12.0.0) + message( FATAL_ERROR "Xcode 12.0.0 or greater is required." ) endif () - math(EXPR sysroot_idx "${sysroot_idx} + 1") - list(GET LL_BUILD_LIST "${sysroot_idx}" CMAKE_OSX_SYSROOT) - message(STATUS "CMAKE_OSX_SYSROOT = '${CMAKE_OSX_SYSROOT}'") + message( "Building with " ${CMAKE_OSX_SYSROOT} ) + set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13) - set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") + + set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL fast) + set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH YES) set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO) - set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO) - set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3) - # we must hard code this to off for now. xcode's built in signing does not - # handle embedded app bundles such as CEF and others. Any signing for local - # development must be done after the build as we do in viewer_manifest.py for - # released builds - # https://stackoverflow.com/a/54296008 - # "-" represents "Sign to Run Locally" and empty string represents "Do Not Sign" + set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES) + + set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS YES) + set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym) + set(CMAKE_XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING YES) + + set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS sse4.2) + # C++ specifics + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++17") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + + # Disable codesigning, for now it's handled with snake + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED NO) set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") + set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "") + + set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_NON_VIRTUAL_DESTRUCTOR YES) + set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS YES) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_WARN_SUSPICIOUS_MOVE YES) + set(CMAKE_XCODE_ATTRIBUTE_CLANG_WARN_RANGE_LOOP_ANALYSIS YES) - set(CMAKE_OSX_ARCHITECTURES "${ARCH}") - string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") - string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") + set(ADDRESS_SIZE 64) + set(ARCH x86_64) + set(CMAKE_OSX_ARCHITECTURES x86_64) set(LL_ARCH ${ARCH}_darwin) set(LL_ARCH_DIR universal-darwin) diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index bca72375122d7481fad0fa61e004de8eb25e3ec1..3a728785d74340197ac8e09298045433d14c2f09 100644 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp @@ -567,8 +567,6 @@ class LLAudioDecodeMgr::Impl void LLAudioDecodeMgr::Impl::processQueue(const F32 num_secs) { - LLUUID uuid; - LLTimer decode_timer; BOOL done = FALSE; diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 7ee687b20acea47a9bc60d5f8181455687132438..5c97de7ebf25bc07a6c5988bbd0f725d6582ccf3 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -254,6 +254,11 @@ set(llcommon_HEADER_FILES StackWalker.h ) +if (DARWIN) + list(APPEND llcommon_HEADER_FILES llsys_objc.h) + list(APPEND llcommon_SOURCE_FILES llsys_objc.mm) +endif (DARWIN) + set_source_files_properties(${llcommon_HEADER_FILES} PROPERTIES HEADER_FILE_ONLY TRUE) @@ -294,12 +299,6 @@ target_link_libraries( ${RT_LIBRARY} ) -if (DARWIN) - include(CMakeFindFrameworks) - find_library(CARBON_LIBRARY Carbon) - target_link_libraries(llcommon ${CARBON_LIBRARY}) -endif (DARWIN) - add_dependencies(llcommon stage_third_party_libs) if (LL_TESTS) diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index e0c7702b1036dcd47c40a681c60727c1d9bb30fd..39b851ae3fa678fa03307cd73e6767607834f678 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -1302,15 +1302,14 @@ namespace { bool checkLevelMap(const LevelMap& map, const std::string& key, LLError::ELevel& level) { - bool stop_checking; LevelMap::const_iterator i = map.find(key); if (i == map.end()) { - return stop_checking = false; + return false; } level = i->second; - return stop_checking = true; + return true; } bool checkLevelMap( const LevelMap& map, diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index 32dfc858537448c166284d504f9c73fb39fcc2a5..f80bb5001afa95d9e38bbec91904db8595972de7 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -33,6 +33,7 @@ # include <psapi.h> #elif defined(LL_DARWIN) # include <sys/types.h> +# include <mach/mach.h> # include <mach/task.h> # include <mach/mach_init.h> #elif LL_LINUX || LL_SOLARIS diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp index abd151ac1054183b10fd39af9dba6bca30bbaa16..7e0d9ffe51832b80b633750a57520e956e6f323c 100644 --- a/indra/llcommon/llprocess.cpp +++ b/indra/llcommon/llprocess.cpp @@ -916,6 +916,7 @@ void LLProcess::status_callback(int reason, void* data, int status) static_cast<LLProcess*>(data)->handle_status(reason, status); } +#ifdef SHOW_DEBUG #define tabent(symbol) { symbol, #symbol } static struct ReasonCode { @@ -931,11 +932,12 @@ static struct ReasonCode tabent(APR_OC_REASON_RUNNING) }; #undef tabent +#endif // Object-oriented callback void LLProcess::handle_status(int reason, int status) { -#if SHOW_DEBUG +#ifdef SHOW_DEBUG { // This odd appearance of LL_DEBUGS is just to bracket a lookup that will // only be performed if in fact we're going to produce the log message. diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp index 01ea04b09982c3055baa629bb25ff39edbeacaa4..cce32f7eb63a0a37ef52fdf33120bac5ee1579f6 100644 --- a/indra/llcommon/llsd.cpp +++ b/indra/llcommon/llsd.cpp @@ -361,7 +361,7 @@ namespace }; - class ImplMap : public LLSD::Impl + class ImplMap final : public LLSD::Impl { private: typedef LLSD::map_t DataMap; @@ -374,31 +374,31 @@ namespace public: ImplMap() { } - virtual ImplMap& makeMap(LLSD::Impl*&); + ImplMap& makeMap(LLSD::Impl*&) override; - virtual LLSD::Type type() const { return LLSD::TypeMap; } + LLSD::Type type() const override { return LLSD::TypeMap; } - virtual LLSD::Boolean asBoolean() const { return !mData.empty(); } + LLSD::Boolean asBoolean() const override { return !mData.empty(); } - virtual bool has(const std::string_view) const; + bool has(const std::string_view) const override; using LLSD::Impl::get; // Unhiding get(LLSD::Integer) using LLSD::Impl::erase; // Unhiding erase(LLSD::Integer) using LLSD::Impl::ref; // Unhiding ref(LLSD::Integer) - virtual LLSD get(const std::string_view) const; - virtual LLSD getKeys() const; + LLSD get(const std::string_view) const override; + LLSD getKeys() const override; void insert(const LLSD::String& k, const LLSD& v); - virtual void erase(const LLSD::String&); + void erase(const LLSD::String&) override; LLSD& ref(const std::string_view); - virtual const LLSD& ref(const std::string_view) const; + const LLSD& ref(const std::string_view) const override; - virtual int size() const { return mData.size(); } + int size() const override { return mData.size(); } DataMap& map() final override { return mData; } const DataMap& map() const final override { return mData; } - virtual void dumpStats() const; - virtual void calcStats(S32 type_counts[], S32 share_counts[]) const; + void dumpStats() const override; + void calcStats(S32 type_counts[], S32 share_counts[]) const override; }; ImplMap& ImplMap::makeMap(LLSD::Impl*& var) @@ -499,7 +499,7 @@ namespace } - class ImplArray : public LLSD::Impl + class ImplArray final : public LLSD::Impl { private: typedef std::vector<LLSD> DataVector; @@ -510,30 +510,30 @@ namespace ImplArray(const DataVector& data) : mData(data) { } public: - ImplArray() { } + ImplArray() = default; - virtual ImplArray& makeArray(Impl*&); + ImplArray& makeArray(Impl*&) override; - virtual LLSD::Type type() const { return LLSD::TypeArray; } + LLSD::Type type() const override { return LLSD::TypeArray; } - virtual LLSD::Boolean asBoolean() const { return !mData.empty(); } + LLSD::Boolean asBoolean() const override { return !mData.empty(); } using LLSD::Impl::get; // Unhiding get(LLSD::String) using LLSD::Impl::erase; // Unhiding erase(LLSD::String) using LLSD::Impl::ref; // Unhiding ref(LLSD::String) - virtual int size() const; - virtual LLSD get(LLSD::Integer) const; + int size() const override; + LLSD get(LLSD::Integer) const override; void set(LLSD::Integer, const LLSD&); void insert(LLSD::Integer, const LLSD&); LLSD& append(const LLSD&); - virtual void erase(LLSD::Integer); + void erase(LLSD::Integer) override; LLSD& ref(LLSD::Integer); - virtual const LLSD& ref(LLSD::Integer) const; + const LLSD& ref(LLSD::Integer) const override; DataVector& array() final override { return mData; } const DataVector& array() const final override { return mData; } - virtual void calcStats(S32 type_counts[], S32 share_counts[]) const; + void calcStats(S32 type_counts[], S32 share_counts[]) const override; }; ImplArray& ImplArray::makeArray(Impl*& var) diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h index b24ef9d9c477605278510a1f5936b9659a85af42..9702eca57336c0079aef237ac3a782197ac2593c 100644 --- a/indra/llcommon/llsdserialize.h +++ b/indra/llcommon/llsdserialize.h @@ -34,6 +34,8 @@ #include "llrefcount.h" #include "llsd.h" +#include "absl/strings/str_format.h" + /** * @class LLSDParser * @brief Abstract base class for LLSD parsers. @@ -500,7 +502,7 @@ class LL_COMMON_API LLSDFormatter : public LLRefCount void formatReal(LLSD::Real real, std::ostream& ostr) const; bool mBoolAlpha; - std::string mRealFormat; + std::unique_ptr<absl::ParsedFormat<absl::FormatConversionCharSet::kFloating> > mRealFormat; EFormatterOptions mOptions; }; diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 4a6a4a02fa699904cb6d0cdff347d22b32ffae7b..e61a6000e22b0788bcf7d8d8881b011e87727b17 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -35,7 +35,7 @@ extern "C" { -#ifdef LL_USESYSTEMLIBS +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) # include <expat.h> #else # include "expat/expat.h" @@ -150,7 +150,7 @@ S32 LLSDXMLFormatter::format_impl(const LLSD& data, std::ostream& ostr, case LLSD::TypeReal: ostr << pre << "<real>"; - if(mRealFormat.empty()) + if(!mRealFormat) { ostr << data.asReal(); } diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp index 384b6cb8f774b0e7827f61c10c105ccbdbb19d96..f53e7981e2b57ecd3c97c9a9c40dd454b4515e85 100644 --- a/indra/llcommon/llsdutil.cpp +++ b/indra/llcommon/llsdutil.cpp @@ -47,7 +47,7 @@ #include <set> #include <boost/range.hpp> -#if LL_GNUC +#if LL_GNUC && GCC_VERSION >= 80000 #pragma GCC diagnostic ignored "-Wstringop-truncation" #endif diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp index 3c205e44bb59be1da2749bb778a79a8529c278c6..c196fd33064bccd0e7afced49f618bb2e14cc063 100644 --- a/indra/llcommon/llsingleton.cpp +++ b/indra/llcommon/llsingleton.cpp @@ -386,7 +386,7 @@ LLSingletonBase::vec_t LLSingletonBase::dep_sort() // extracts just the first (key) element from each sorted_iterator, then // uses vec_t's range constructor... but frankly this is more // straightforward, as long as we remember the above reserve() call! - for (const SingletonDeps::sorted_iterator::value_type& pair : sdeps.sort()) + for (const SingletonDeps::sorted_iterator::value_type pair : sdeps.sort()) { ret.push_back(pair.first); } diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index 4e4ad0fcf41cbb94f44bc3161724d7093a38f3dc..8f40c3c52a5fa7aa56f41cda0d9f3d06112a3b37 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -199,7 +199,7 @@ S32 utf16chars_to_wchar(const U16* inchars, llwchar* outchar) { const U16* base = inchars; U16 cur_char = *inchars++; - llwchar char32 = cur_char; + llwchar char32; if ((cur_char >= 0xD800) && (cur_char <= 0xDFFF)) { // Surrogates diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index b4bc7fbd84419fdb96e4b712bc3faa6e0c4755a5..461e7fd4942342e5e22fd29646b6c56494be204c 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -33,7 +33,7 @@ #endif #include <boost/optional/optional.hpp> #include <absl/container/flat_hash_map.h> -#if LL_GNUC +#if LL_GNUC && GCC_VERSION >= 90000 #pragma GCC diagnostic pop #endif #include <string> diff --git a/indra/llcommon/llstringtable.cpp b/indra/llcommon/llstringtable.cpp index d47eb01bd344b29e1ed25e4e0fe19055a797ce4c..83b5a971af4e6c4f39809e7f80e5ee22ebefa422 100644 --- a/indra/llcommon/llstringtable.cpp +++ b/indra/llcommon/llstringtable.cpp @@ -49,24 +49,24 @@ LLStringTableEntry::~LLStringTableEntry() mCount = 0; } -LLStringTable::LLStringTable(int tablesize) +LLStringTable::LLStringTable(U32 tablesize) : mUniqueEntries(0) { - S32 i; + U32 i; if (!tablesize) - tablesize = 4096; // some arbitrary default + tablesize = 4096U; // some arbitrary default // Make sure tablesize is power of 2 - for (i = 31; i>0; i--) - { - if (tablesize & (1<<i)) - { - if (tablesize >= (3<<(i-1))) - tablesize = (1<<(i+1)); - else - tablesize = (1<<i); - break; - } - } + for (i = 31U; i > 0U; i--) + { + if (tablesize & (1U << i)) + { + if (tablesize >= (3U << (i - 1U))) + tablesize = (1U << (i + 1U)); + else + tablesize = (1<<i); + break; + } + } mMaxEntries = tablesize; #if !STRING_TABLE_HASH_MAP @@ -85,7 +85,7 @@ LLStringTable::~LLStringTable() #if !STRING_TABLE_HASH_MAP if (mStringList) { - for (S32 i = 0; i < mMaxEntries; i++) + for (U32 i = 0; i < mMaxEntries; i++) { if (mStringList[i]) { @@ -106,7 +106,7 @@ LLStringTable::~LLStringTable() } -static U32 hash_my_string(const char *str, int max_entries) +static U32 hash_my_string(const char *str, U32 max_entries) { U32 retval = 0; #if 0 diff --git a/indra/llcommon/llstringtable.h b/indra/llcommon/llstringtable.h index ff09e7167719e5882ec6321465376b174cecce9b..e17948cf597156c5c7b2587e0b6a33a0d639e412 100644 --- a/indra/llcommon/llstringtable.h +++ b/indra/llcommon/llstringtable.h @@ -60,7 +60,7 @@ class LL_COMMON_API LLStringTableEntry class LL_COMMON_API LLStringTable { public: - LLStringTable(int tablesize); + LLStringTable(U32 tablesize); ~LLStringTable(); char *checkString(const char *str); @@ -74,7 +74,7 @@ class LL_COMMON_API LLStringTable LLStringTableEntry *addStringEntry(const std::string& str); void removeString(const char *str); - S32 mMaxEntries; + U32 mMaxEntries; S32 mUniqueEntries; #if STRING_TABLE_HASH_MAP diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 9c6cbe44c7d2d0699d8aa6940ff3fbb155c374f9..edd19149f16ccebe8b66f9d50a3331c69288fbb0 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -62,6 +62,7 @@ using namespace llsd; # include <psapi.h> // GetPerformanceInfo() et al. # include <VersionHelpers.h> #elif LL_DARWIN +# include "llsys_objc.h" # include <errno.h> # include <sys/sysctl.h> # include <sys/utsname.h> @@ -72,12 +73,6 @@ using namespace llsd; # include <mach/mach_host.h> # include <mach/task.h> # include <mach/task_info.h> - -// disable warnings about Gestalt calls being deprecated -// until Apple get's on the ball and provides an alternative -// -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" - #elif LL_LINUX # include <errno.h> # include <sys/utsname.h> @@ -301,21 +296,18 @@ LLOSInfo::LLOSInfo() : #elif LL_DARWIN // Initialize mOSStringSimple to something like: - // "Mac OS X 10.6.7" + // "macOS 10.6.7" { - const char * DARWIN_PRODUCT_NAME = "Mac OS X"; - - SInt32 major_version, minor_version, bugfix_version; - OSErr r1 = Gestalt(gestaltSystemVersionMajor, &major_version); - OSErr r2 = Gestalt(gestaltSystemVersionMinor, &minor_version); - OSErr r3 = Gestalt(gestaltSystemVersionBugFix, &bugfix_version); + S32 major_version, minor_version, bugfix_version = 0; - if((r1 == noErr) && (r2 == noErr) && (r3 == noErr)) + if (LLSysDarwin::getOperatingSystemInfo(major_version, minor_version, bugfix_version)) { mMajorVer = major_version; mMinorVer = minor_version; mBuild = bugfix_version; + const char * DARWIN_PRODUCT_NAME = "macOS"; + std::stringstream os_version_string; os_version_string << DARWIN_PRODUCT_NAME << " " << mMajorVer << "." << mMinorVer << "." << mBuild; @@ -329,7 +321,7 @@ LLOSInfo::LLOSInfo() : } // Initialize mOSString to something like: - // "Mac OS X 10.6.7 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386" + // "macOS 10.6.7 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386" struct utsname un; if(uname(&un) != -1) { @@ -988,9 +980,15 @@ LLSD LLMemoryInfo::loadStatsMap() stats.add("PrivateUsage KB", pmem.PrivateUsage/div); #elif LL_DARWIN - - const vm_size_t pagekb(vm_page_size / 1024); + vm_size_t page_size_kb; + if (host_page_size(mach_host_self(), &page_size_kb) != KERN_SUCCESS) + { + LL_WARNS() << "Unable to get host page size. Using default value." << LL_ENDL; + page_size_kb = 4096; + } + page_size_kb = page_size_kb / 1024; + // // Collect the vm_stat's // @@ -1005,10 +1003,10 @@ LLSD LLMemoryInfo::loadStatsMap() } else { - stats.add("Pages free KB", pagekb * vmstat.free_count); - stats.add("Pages active KB", pagekb * vmstat.active_count); - stats.add("Pages inactive KB", pagekb * vmstat.inactive_count); - stats.add("Pages wired KB", pagekb * vmstat.wire_count); + stats.add("Pages free KB", page_size_kb * vmstat.free_count); + stats.add("Pages active KB", page_size_kb * vmstat.active_count); + stats.add("Pages inactive KB", page_size_kb * vmstat.inactive_count); + stats.add("Pages wired KB", page_size_kb * vmstat.wire_count); stats.add("Pages zero fill", vmstat.zero_fill_count); stats.add("Page reactivations", vmstat.reactivations); @@ -1073,13 +1071,6 @@ LLSD LLMemoryInfo::loadStatsMap() } } -#elif LL_SOLARIS - U64 phys = 0; - - phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024); - - stats.add("Total Physical KB", phys); - #elif LL_LINUX llifstream meminfo(MEMINFO_FILE); if (meminfo.is_open()) @@ -1392,10 +1383,3 @@ BOOL gzip_file(const std::string& srcfile, const std::string& dstfile) if (dst != NULL) gzclose(dst); return retval; } - -#if LL_DARWIN -// disable warnings about Gestalt calls being deprecated -// until Apple get's on the ball and provides an alternative -// -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif diff --git a/indra/llcommon/llsys_objc.h b/indra/llcommon/llsys_objc.h new file mode 100644 index 0000000000000000000000000000000000000000..2d12ca7f2b276c6322e23b327e2f87fa0fe1949a --- /dev/null +++ b/indra/llcommon/llsys_objc.h @@ -0,0 +1,46 @@ +/* + * @file llsys_objc.h + * @brief Some objective-c crap for llcommon + * + * (C) 2014 Cinder Roxley @ Second Life <cinder@alchemyviewer.org> + * + * Permission is hereby granted, free of charge, to any person or organization + * obtaining a copy of the software and accompanying documentation covered by + * this license (the "Software") to use, reproduce, display, distribute, + * execute, and transmit the Software, and to prepare derivative works of the + * Software, and to permit third-parties to whom the Software is furnished to + * do so, all subject to the following: + * + * The copyright notices in the Software and this entire statement, including + * the above license grant, this restriction and the following disclaimer, + * must be included in all copies of the Software, in whole or in part, and + * all derivative works of the Software, unless such copies or derivative + * works are solely in the form of machine-executable object code generated by + * a source language processor. + * + * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT + * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LL_SYS_OBJC_H +#define LL_SYS_OBJC_H + +#ifndef LL_DARWIN +# error "This file should only be included when building on mac!" +#else + +namespace LLSysDarwin +{ + +bool getOperatingSystemInfo(int &major, int &minor, int &patch); +const char* getPreferredLanguage(); + +} + +#endif // !LL_DARWIN +#endif // LL_SYS_OBJC_H diff --git a/indra/llcommon/llsys_objc.mm b/indra/llcommon/llsys_objc.mm new file mode 100644 index 0000000000000000000000000000000000000000..46b3337e7fb85f97a8b5d58d115e0861cdb68e56 --- /dev/null +++ b/indra/llcommon/llsys_objc.mm @@ -0,0 +1,54 @@ +/* + * @file llsys_objc.mm + * @brief Some objective-c crap for llcommon + * + * (C) 2014 Cinder Roxley @ Second Life <cinder@alchemyviewer.org> + * + * Permission is hereby granted, free of charge, to any person or organization + * obtaining a copy of the software and accompanying documentation covered by + * this license (the "Software") to use, reproduce, display, distribute, + * execute, and transmit the Software, and to prepare derivative works of the + * Software, and to permit third-parties to whom the Software is furnished to + * do so, all subject to the following: + * + * The copyright notices in the Software and this entire statement, including + * the above license grant, this restriction and the following disclaimer, + * must be included in all copies of the Software, in whole or in part, and + * all derivative works of the Software, unless such copies or derivative + * works are solely in the form of machine-executable object code generated by + * a source language processor. + * + * 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT + * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE + * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef LL_DARWIN +# error "This file should only be included when building on mac!" +#else + +#import "llsys_objc.h" +#import <Foundation/Foundation.h> +#import <AppKit/NSApplication.h> + +bool LLSysDarwin::getOperatingSystemInfo(int &major, int &minor, int &patch) +{ + NSOperatingSystemVersion osVersion = [[NSProcessInfo processInfo] operatingSystemVersion]; + major = osVersion.majorVersion; + minor = osVersion.minorVersion; + patch = osVersion.patchVersion; + return true; +} + +const char* LLSysDarwin::getPreferredLanguage() +{ + NSString* lang = [[NSLocale preferredLanguages] objectAtIndex:0]; + const char* ret = [lang cStringUsingEncoding:NSASCIIStringEncoding]; + return ret; +} + +#endif // !LL_DARWIN diff --git a/indra/llimage/llpngwrapper.cpp b/indra/llimage/llpngwrapper.cpp index 1e51e7375e77e4e2b7c1083f8f0c44bd1da937e8..3becd96824eaccaa388fa9a2a51ee564f31dde98 100644 --- a/indra/llimage/llpngwrapper.cpp +++ b/indra/llimage/llpngwrapper.cpp @@ -257,11 +257,7 @@ void LLPngWrapper::normalizeImage() png_set_strip_16(mReadPngPtr); } -#if LL_DARWIN - const F64 SCREEN_GAMMA = 1.8; -#else const F64 SCREEN_GAMMA = 2.2; -#endif if (png_get_gAMA(mReadPngPtr, mReadInfoPtr, &mGamma)) { diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp index f7c0517b4c4e338b4a921e9d75634e5c41ea6830..51b3e3efc36faf5a3a8208972b0719d6c10635a4 100644 --- a/indra/llmessage/llnamevalue.cpp +++ b/indra/llmessage/llnamevalue.cpp @@ -35,7 +35,7 @@ #include "llstring.h" #include "llstringtable.h" -#if LL_GNUC +#if LL_GNUC && GCC_VERSION >= 80000 #pragma GCC diagnostic ignored "-Wstringop-truncation" #endif diff --git a/indra/llmessage/net.cpp b/indra/llmessage/net.cpp index 739cde0d12f2801addc2de865bb704f241e2653d..5dc3e6d72e71daed0cd6314f7d538427c7463082 100644 --- a/indra/llmessage/net.cpp +++ b/indra/llmessage/net.cpp @@ -76,14 +76,8 @@ static U32 gsnReceivingIFAddr = INVALID_HOST_IP_ADDRESS; // Address to which dat const char* LOOPBACK_ADDRESS_STRING = "127.0.0.1"; const char* BROADCAST_ADDRESS_STRING = "255.255.255.255"; -#if LL_DARWIN - // Mac OS X returns an error when trying to set these to 400000. Smaller values succeed. - const int SEND_BUFFER_SIZE = 200000; - const int RECEIVE_BUFFER_SIZE = 200000; -#else // LL_DARWIN - const int SEND_BUFFER_SIZE = 400000; - const int RECEIVE_BUFFER_SIZE = 400000; -#endif // LL_DARWIN +const int SEND_BUFFER_SIZE = 400000; +const int RECEIVE_BUFFER_SIZE = 400000; // universal functions (cross-platform) diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index f910b0006e767e4a80bc82f934426ce7eb27d5f2..35b82b07e69898a81f0080df01796e180084c1fe 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -34,9 +34,6 @@ #include "llcontrol.h" extern LLControlGroup gSavedSettings; -#if LL_DARWIN -extern BOOL gHiDPISupport; -#endif static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256; @@ -368,9 +365,6 @@ void LLPluginClassMedia::setSizeInternal(void) mRequestedMediaHeight = nextPowerOf2(mRequestedMediaHeight); } -#if LL_DARWIN - if (!gHiDPISupport) -#endif { if (mRequestedMediaWidth > 8192) mRequestedMediaWidth = 8192; diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt index 550b67eb09ce576d39381b8f114f58ef244e598a..a4d7d36ca22383f5df2c81fda26ec9902b8b8989 100644 --- a/indra/llplugin/slplugin/CMakeLists.txt +++ b/indra/llplugin/slplugin/CMakeLists.txt @@ -55,9 +55,11 @@ set_target_properties(SLPlugin PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMTD\"" ) -else () +elseif (DARWIN) set_target_properties(SLPlugin PROPERTIES + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_RPATH "@executable_path/../../../../Frameworks" MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/slplugin_info.plist ) endif () @@ -71,7 +73,7 @@ target_link_libraries(SLPlugin ) if (DARWIN) - # Mac version needs to link against Carbon + # Mac version needs to link against Cocoa target_link_libraries(SLPlugin ${COCOA_LIBRARY}) # Make sure the app bundle has a Resources directory (it will get populated by viewer-manifest.py later) add_custom_command( diff --git a/indra/llplugin/slplugin/slplugin-objc.mm b/indra/llplugin/slplugin/slplugin-objc.mm index a5ab1d95c890f6bcbaf95b802c4f5c5eae3ca1d7..b919edac09e37d7fc6a7716f178c8b92848f8658 100644 --- a/indra/llplugin/slplugin/slplugin-objc.mm +++ b/indra/llplugin/slplugin/slplugin-objc.mm @@ -49,9 +49,6 @@ void LLCocoaPlugin::setupCocoa() // when init'ing the Cocoa App window. [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; - // This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor": - // http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html - // Needed for Carbon based applications which call into Cocoa NSApplicationLoad(); @@ -95,7 +92,7 @@ void LLCocoaPlugin::processEvents() { // Some plugins (webkit at least) will want an event loop. This qualifies. NSEvent * event; - event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; + event = [NSApp nextEventMatchingMask:NSEventMaskAny untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES]; [NSApp sendEvent: event]; } diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 31eea6733bfee42c968b00f59be1ed9acb1d0eb4..0b2b6ea972f3e5131a130f5366e0940870aaafa7 100644 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -448,7 +448,7 @@ LLFontGlyphInfo* LLFontFreetype::addGlyph(llwchar wch) const if (glyph_index == 0) { //LL_INFOS() << "Trying to add glyph from fallback font!" << LL_ENDL; - for (const auto fallback_fontp : mFallbackFonts) + for (const auto& fallback_fontp : mFallbackFonts) { glyph_index = FT_Get_Char_Index(fallback_fontp->mFTFace, wch); if (glyph_index) diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index fa66b66e03e469009b64b40874cda28b126376e2..c773fd62bcef80abe5e4463e5a781355f2fc172a 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -54,7 +54,11 @@ #include "epoxy/glx.h" #endif +#if LL_DARWIN +#include <OpenGL/glu.h> +#else #include <GL/glu.h> +#endif #endif // LL_MESA diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 16b831fe02041603599059d2e5198be6d99499c2..ce4f4f013b8d17908828853b8f88327ca5382d42 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -33,10 +33,6 @@ #include "llrender.h" #include "llvertexbuffer.h" -#if LL_DARWIN -#include "OpenGL/OpenGL.h" -#endif - // Lots of STL stuff in here, using namespace std to keep things more readable using std::vector; using std::pair; diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp index c62874d5c0e74d066dcf2caf1cf38cc7b94776cd..af0d7726ae27c35b55b11dfea55e63985007caa2 100644 --- a/indra/llrender/llshadermgr.cpp +++ b/indra/llrender/llshadermgr.cpp @@ -29,10 +29,6 @@ #include "llrender.h" #include "llfile.h" -#if LL_DARWIN -#include "OpenGL/OpenGL.h" -#endif - // Lots of STL stuff in here, using namespace std to keep things more readable using std::vector; using std::pair; @@ -1086,7 +1082,7 @@ BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors) #if LL_DARWIN // For some reason this absolutely kills the frame rate when VBO's are enabled - if (0) + /*if (0) { // Force an evaluation of the gl state so the driver can tell if the shader will run in hardware or software // per Apple's suggestion @@ -1117,7 +1113,7 @@ BOOL LLShaderMgr::linkProgramObject(GLuint obj, BOOL suppress_errors) success = GL_FALSE; suppress_errors = FALSE; } - } + }*/ #else std::string log = get_program_log(obj); diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index f3b3a6d683b59d6038b529cda365440c8a7bed12..945d58235a8405827a9241de66f071f660c42bda 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -92,7 +92,7 @@ class LLComboBox virtual ~LLComboBox(); - /*virtual*/ BOOL postBuild(); + /*virtual*/ BOOL postBuild() override; protected: friend class LLUICtrlFactory; @@ -102,29 +102,29 @@ class LLComboBox public: // LLView interface - virtual void onFocusLost(); + void onFocusLost() override; - virtual BOOL handleToolTip(S32 x, S32 y, MASK mask); - virtual BOOL handleKeyHere(KEY key, MASK mask); - virtual BOOL handleUnicodeCharHere(llwchar uni_char); + BOOL handleToolTip(S32 x, S32 y, MASK mask) override; + BOOL handleKeyHere(KEY key, MASK mask) override; + BOOL handleUnicodeCharHere(llwchar uni_char) override; BOOL handleScrollWheel(S32 x, S32 y, S32 clicks) final override; // LLUICtrl interface - virtual void clear(); // select nothing - virtual void onCommit(); - virtual BOOL acceptsTextInput() const { return mAllowTextEntry; } - virtual BOOL isDirty() const; // Returns TRUE if the user has modified this control. - virtual void resetDirty(); // Clear dirty state + void clear() override; // select nothing + void onCommit() override; + BOOL acceptsTextInput() const override { return mAllowTextEntry; } + BOOL isDirty() const override; // Returns TRUE if the user has modified this control. + void resetDirty() override; // Clear dirty state - virtual void setFocus(BOOL b); + void setFocus(BOOL b) override; // Selects item by underlying LLSD value, using LLSD::asString() matching. // For simple items, this is just the name of the label. - virtual void setValue(const LLSD& value ); + void setValue(const LLSD& value) override; // Gets underlying LLSD value for currently selected items. For simple // items, this is just the label. - virtual LLSD getValue() const; + LLSD getValue() const override; void setTextEntry(const LLStringExplicit& text); void setKeystrokeOnEsc(BOOL enable); @@ -164,34 +164,34 @@ class LLComboBox void createLineEditor(const Params&); //======================================================================== - LLCtrlSelectionInterface* getSelectionInterface() { return (LLCtrlSelectionInterface*)this; }; - LLCtrlListInterface* getListInterface() { return (LLCtrlListInterface*)this; }; + LLCtrlSelectionInterface* getSelectionInterface() override { return (LLCtrlSelectionInterface*)this; }; + LLCtrlListInterface* getListInterface() override { return (LLCtrlListInterface*)this; }; // LLCtrlListInterface functions // See llscrolllistctrl.h - virtual S32 getItemCount() const; + S32 getItemCount() const override; // Overwrites the default column (See LLScrollListCtrl for format) - virtual void addColumn(const LLSD& column, EAddPosition pos = ADD_BOTTOM); - virtual void clearColumns(); - virtual void setColumnLabel(const std::string& column, const std::string& label); - virtual LLScrollListItem* addElement(const LLSD& value, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); - virtual LLScrollListItem* addSimpleElement(const std::string& value, EAddPosition pos = ADD_BOTTOM, const LLSD& id = LLSD()); - virtual void clearRows(); - virtual void sortByColumn(const std::string& name, BOOL ascending); + void addColumn(const LLSD& column, EAddPosition pos = ADD_BOTTOM) override; + void clearColumns() override; + void setColumnLabel(const std::string& column, const std::string& label) override; + LLScrollListItem* addElement(const LLSD& value, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL) override; + LLScrollListItem* addSimpleElement(const std::string& value, EAddPosition pos = ADD_BOTTOM, const LLSD& id = LLSD()) override; + void clearRows() override; + void sortByColumn(const std::string& name, BOOL ascending) override; // LLCtrlSelectionInterface functions - virtual BOOL getCanSelect() const { return TRUE; } - virtual BOOL selectFirstItem() { return setCurrentByIndex(0); } - virtual BOOL selectNthItem( S32 index ) { return setCurrentByIndex(index); } - virtual BOOL selectItemRange( S32 first, S32 last ); - virtual S32 getFirstSelectedIndex() const { return getCurrentIndex(); } - virtual BOOL setCurrentByID( const LLUUID& id ); - virtual LLUUID getCurrentID() const; // LLUUID::null if no items in menu - virtual BOOL setSelectedByValue(const LLSD& value, BOOL selected); - virtual LLSD getSelectedValue(); - virtual BOOL isSelected(const LLSD& value) const; - virtual BOOL operateOnSelection(EOperation op); - virtual BOOL operateOnAll(EOperation op); + BOOL getCanSelect() const override { return TRUE; } + BOOL selectFirstItem() override { return setCurrentByIndex(0); } + BOOL selectNthItem( S32 index ) override { return setCurrentByIndex(index); } + BOOL selectItemRange(S32 first, S32 last) override; + S32 getFirstSelectedIndex() const override { return getCurrentIndex(); } + BOOL setCurrentByID( const LLUUID& id ) override; + LLUUID getCurrentID() const override; // LLUUID::null if no items in menu + BOOL setSelectedByValue(const LLSD& value, BOOL selected) override; + LLSD getSelectedValue() override; + BOOL isSelected(const LLSD& value) const override; + BOOL operateOnSelection(EOperation op) override; + BOOL operateOnAll(EOperation op) override; //======================================================================== diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index 9a959394b1580228cd97add2aa94a431eb63ab74..4e03f3a7a5861ef608993566f48b9c246ae64229 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -768,7 +768,6 @@ void LLFolderView::removeSelectedItems() // iterate through the new container. count = items.size(); - LLUUID new_selection_id; LLFolderViewItem* item_to_select = getNextUnselectedItem(); if(count == 1) diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index 1ccfc065fb944deb2117386d4f7e159b363f253e..eaee50847dcf0f3020df248b766b44574857ec76 100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp @@ -666,8 +666,6 @@ void LLMultiSlider::draw() // drawing solids requires texturing be disabled gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - LLRect rect(mDragStartThumbRect); - F32 opacity = getEnabled() ? 1.f : 0.3f; // Track diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index b6c65889b48bebffae6b6b30e479d1736a84db74..840331b770cc73ee1c1c8ada6df4010d86f65a89 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -222,13 +222,8 @@ void LLUI::setPopupFuncs(const add_popup_t& add_popup, const remove_popup_t& rem // static void LLUI::setMousePositionScreen(S32 x, S32 y) { -#if defined(LL_DARWIN) - S32 screen_x = ll_round(((F32)x * getScaleFactor().mV[VX]) / LLView::getWindow()->getSystemUISize()); - S32 screen_y = ll_round(((F32)y * getScaleFactor().mV[VY]) / LLView::getWindow()->getSystemUISize()); -#else S32 screen_x = ll_round((F32)x * getScaleFactor().mV[VX]); S32 screen_y = ll_round((F32)y * getScaleFactor().mV[VY]); -#endif getWindow()->setCursorPosition(LLCoordGL(screen_x, screen_y).convert()); } diff --git a/indra/llui/llxuiparser.cpp b/indra/llui/llxuiparser.cpp index e7e824f0d72e865ca29bb2fb25dd0e62e7cee408..9803789a1e83e2780cddcfaa53a46ad398113a6c 100644 --- a/indra/llui/llxuiparser.cpp +++ b/indra/llui/llxuiparser.cpp @@ -30,10 +30,10 @@ #include "llxmlnode.h" #include "llfasttimer.h" -#ifdef LL_USESYSTEMLIBS -#include <expat.h> +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) +# include <expat.h> #else -#include "expat/expat.h" +# include "expat/expat.h" #endif #include <fstream> diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 82831b36e29b9e8664ce2252cb3b464082cf169c..c5292b24ada68e94b94dc40fca17e169877d51d8 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -76,7 +76,6 @@ const char *LLDir::TEXTURES = "textures", *LLDir::SKINBASE = ""; -static const char* const empty = ""; std::string LLDir::sDumpDir = ""; LLDir::LLDir() diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index 38e204ef04729a9657a74f45a8540ae4a3083ce0..b6a96dace75d68d6262abe22521c15f23cd9298a 100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h @@ -85,7 +85,7 @@ class LLDir virtual std::string getLLPluginFilename(std::string base_name) = 0; // full path and name to the plugin DSO for this base_name (i.e. 'FOO' -> '/bar/baz/libFOO.so') const std::string &getExecutablePathAndName() const; // Full pathname of the executable - const std::string &getAppName() const; // install directory under progams/ ie "SecondLife" + const std::string &getAppName() const; // install directory under progams/ ie "Alchemy" const std::string &getExecutableDir() const; // Directory where the executable is located const std::string &getExecutableFilename() const;// Filename of .exe const std::string &getWorkingDir() const; // Current working directory diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp index 87dc1b9795f518d4b4e2e0d12cb2ea6c4a2bc646..9a45d75be4a999d23cd1ba0822b3a6f9e336177f 100644 --- a/indra/llvfs/lldir_mac.cpp +++ b/indra/llvfs/lldir_mac.cpp @@ -64,27 +64,25 @@ LLDir_Mac::LLDir_Mac() { mDirDelimiter = "/"; - const std::string secondLifeString = "SecondLife"; + const std::string secondLifeString = "AlchemyNext"; - std::string *executablepathstr = getSystemExecutableFolder(); + std::string executablepathstr = getSystemExecutableFolder(); //NOTE: LLINFOS/LLERRS will not output to log here. The streams are not initialized. - if (executablepathstr) + if (!executablepathstr.empty()) { // mExecutablePathAndName - mExecutablePathAndName = *executablepathstr; + mExecutablePathAndName = executablepathstr; - boost::filesystem::path executablepath(*executablepathstr); + boost::filesystem::path executablepath(executablepathstr); -# ifndef BOOST_SYSTEM_NO_DEPRECATED -#endif mExecutableFilename = executablepath.filename().string(); mExecutableDir = executablepath.parent_path().string(); // mAppRODataDir - std::string *resourcepath = getSystemResourceFolder(); - mAppRODataDir = *resourcepath; + std::string resourcepath = getSystemResourceFolder(); + mAppRODataDir = resourcepath; // *NOTE: When running in a dev tree, use the copy of // skins in indra/newview/ rather than in the application bundle. This @@ -110,11 +108,11 @@ LLDir_Mac::LLDir_Mac() } // mOSUserDir - std::string *appdir = getSystemApplicationSupportFolder(); + std::string appdir = getSystemApplicationSupportFolder(); std::string rootdir; //Create root directory - if (CreateDirectory(*appdir, secondLifeString, &rootdir)) + if (CreateDirectory(appdir, secondLifeString, &rootdir)) { // Save the full path to the folder @@ -128,12 +126,12 @@ LLDir_Mac::LLDir_Mac() } //mOSCacheDir - std::string *cachedir = getSystemCacheFolder(); + std::string cachedir = getSystemCacheFolder(); - if (cachedir) + if (!cachedir.empty()) { - mOSCacheDir = *cachedir; + mOSCacheDir = cachedir; //TODO: This changes from ~/Library/Cache/Secondlife to ~/Library/Cache/com.app.secondlife/Secondlife. Last dir level could go away. CreateDirectory(mOSCacheDir, secondLifeString, NULL); } @@ -143,12 +141,10 @@ LLDir_Mac::LLDir_Mac() // mTempDir //Aura 120920 boost::filesystem::temp_directory_path() not yet implemented on mac. :( - std::string *tmpdir = getSystemTempFolder(); - if (tmpdir) + std::string tmpdir = getSystemTempFolder(); + if (!tmpdir.empty()) { - - CreateDirectory(*tmpdir, secondLifeString, &mTempDir); - if (tmpdir) delete tmpdir; + CreateDirectory(tmpdir, secondLifeString, &mTempDir); } mWorkingDir = getCurPath(); diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 617056d94d224eeea3d89b26b45063fe469811e4..5c1b457456f1150ce61d780c82163a7ce4d68953 100644 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -2120,9 +2120,10 @@ time_t LLVFS::creationTime() int errors = LLFile::stat(mDataFilename, &data_file_stat); if (0 == errors) { - time_t creation_time = data_file_stat.st_ctime; #if LL_DARWIN - creation_time = data_file_stat.st_birthtime; + time_t creation_time = data_file_stat.st_birthtime; +#else + time_t creation_time = data_file_stat.st_ctime; #endif return creation_time; } diff --git a/indra/llvfs/llvfs_objc.h b/indra/llvfs/llvfs_objc.h index 56cdbebfc56257cf878c3326d59d64fad7e17cbc..686a082995d5f3818699a248a5fea9e1577f065b 100644 --- a/indra/llvfs/llvfs_objc.h +++ b/indra/llvfs/llvfs_objc.h @@ -33,11 +33,11 @@ #include <iostream> -std::string* getSystemTempFolder(); -std::string* getSystemCacheFolder(); -std::string* getSystemApplicationSupportFolder(); -std::string* getSystemResourceFolder(); -std::string* getSystemExecutableFolder(); +std::string getSystemTempFolder(); +std::string getSystemCacheFolder(); +std::string getSystemApplicationSupportFolder(); +std::string getSystemResourceFolder(); +std::string getSystemExecutableFolder(); #endif // LL_LLVFS_OBJC_H diff --git a/indra/llvfs/llvfs_objc.mm b/indra/llvfs/llvfs_objc.mm index 282ea41339236eaac7b9f2a173a343f9e9857b18..9218b618ea1f56bee8a165874122bf11296df74d 100644 --- a/indra/llvfs/llvfs_objc.mm +++ b/indra/llvfs/llvfs_objc.mm @@ -30,75 +30,67 @@ #include "llvfs_objc.h" #import <Cocoa/Cocoa.h> -std::string* getSystemTempFolder() +std::string getSystemTempFolder() { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSString * tempDir = NSTemporaryDirectory(); - if (tempDir == nil) - tempDir = @"/tmp"; - std::string *result = ( new std::string([tempDir UTF8String]) ); - [pool release]; - - return result; + @autoreleasepool { + NSString * tempDir = NSTemporaryDirectory(); + if (tempDir == nil) + tempDir = @"/tmp"; + return std::string([tempDir UTF8String]); + } } //findSystemDirectory scoped exclusively to this file. -std::string* findSystemDirectory(NSSearchPathDirectory searchPathDirectory, +std::string findSystemDirectory(NSSearchPathDirectory searchPathDirectory, NSSearchPathDomainMask domainMask) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - std::string *result = nil; - NSString *path = nil; - - // Search for the path - NSArray* paths = NSSearchPathForDirectoriesInDomains(searchPathDirectory, - domainMask, - YES); - if ([paths count]) - { - path = [paths objectAtIndex:0]; - //HACK: Always attempt to create directory, ignore errors. - NSError *error = nil; + @autoreleasepool { + std::string result; + NSString *path = nil; + + // Search for the path + NSArray* paths = NSSearchPathForDirectoriesInDomains(searchPathDirectory, + domainMask, + YES); + if ([paths count]) + { + path = [paths objectAtIndex:0]; + //HACK: Always attempt to create directory, ignore errors. + NSError *error = nil; - [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; + [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; - - result = new std::string([path UTF8String]); + + result = std::string([path UTF8String]); + } + + return result; } - [pool release]; - return result; } -std::string* getSystemExecutableFolder() +std::string getSystemExecutableFolder() { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - NSString *bundlePath = [[NSBundle mainBundle] executablePath]; - std::string *result = (new std::string([bundlePath UTF8String])); - [pool release]; - - return result; + @autoreleasepool { + NSString *bundlePath = [[NSBundle mainBundle] executablePath]; + return std::string([bundlePath UTF8String]); + } } -std::string* getSystemResourceFolder() +std::string getSystemResourceFolder() { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - NSString *bundlePath = [[NSBundle mainBundle] resourcePath]; - std::string *result = (new std::string([bundlePath UTF8String])); - [pool release]; - - return result; + @autoreleasepool { + NSString *bundlePath = [[NSBundle mainBundle] resourcePath]; + return std::string([bundlePath UTF8String]); + } } -std::string* getSystemCacheFolder() +std::string getSystemCacheFolder() { return findSystemDirectory (NSCachesDirectory, NSUserDomainMask); } -std::string* getSystemApplicationSupportFolder() +std::string getSystemApplicationSupportFolder() { return findSystemDirectory (NSApplicationSupportDirectory, NSUserDomainMask); diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index b058f5f1b688662074b5cf7e82f4830f5ebe4c33..89204cbb147e9e946e12972d2b821583dd958909 100644 --- a/indra/llwindow/CMakeLists.txt +++ b/indra/llwindow/CMakeLists.txt @@ -118,14 +118,6 @@ if (DARWIN) llopenglview-objc.h llappdelegate-objc.h ) - - # We use a bunch of deprecated system APIs. - set_source_files_properties( - llkeyboardmacosx.cpp - llwindowmacosx.cpp - PROPERTIES - COMPILE_FLAGS "-Wno-deprecated-declarations -fpascal-strings" - ) endif (DARWIN) diff --git a/indra/llwindow/llappdelegate-objc.h b/indra/llwindow/llappdelegate-objc.h index 0b38647b4a75930691ef41559d43a6e972270555..a3f5f1e20e5d87cfd81b9486aad787662004b82d 100644 --- a/indra/llwindow/llappdelegate-objc.h +++ b/indra/llwindow/llappdelegate-objc.h @@ -27,6 +27,9 @@ #import <Cocoa/Cocoa.h> #import "llopenglview-objc.h" +@interface LLApplication : NSApplication +@end + @interface LLAppDelegate : NSObject <NSApplicationDelegate> { LLNSWindow *window; NSWindow *inputWindow; @@ -47,5 +50,3 @@ - (bool) romanScript; @end -@interface LLApplication : NSApplication -@end diff --git a/indra/llwindow/llopenglview-objc.h b/indra/llwindow/llopenglview-objc.h index 072d40f7391ec81874f2ce83ce8f2417947fc0cc..8664a5c105bfd4f2361ae7b990668bd4ddf3d182 100644 --- a/indra/llwindow/llopenglview-objc.h +++ b/indra/llwindow/llopenglview-objc.h @@ -42,7 +42,6 @@ unsigned int mMarkedTextLength; bool mMarkedTextAllowed; bool mSimulatedRightClick; - bool mOldResize; } - (id) initWithSamples:(NSUInteger)samples; - (id) initWithSamples:(NSUInteger)samples andVsync:(BOOL)vsync; @@ -50,8 +49,6 @@ - (void)commitCurrentPreedit; -- (void) setOldResize:(bool)oldresize; - // rebuildContext // Destroys and recreates a context with the view's internal format set via setPixelFormat; // Use this in event of needing to rebuild a context for whatever reason, without needing to assign a new pixel format. @@ -68,7 +65,6 @@ - (unsigned long) getVramSize; - (void) allowMarkedTextInput:(bool)allowed; -- (void) viewDidEndLiveResize; @end @@ -88,9 +84,6 @@ @interface LLNSWindow : NSWindow -- (NSPoint)convertToScreenFromLocalPoint:(NSPoint)point relativeToView:(NSView *)view; -- (NSPoint)flipPoint:(NSPoint)aPoint; - @end @interface NSScreen (PointConversion) @@ -100,16 +93,6 @@ */ + (NSScreen *)currentScreenForMouseLocation; -/* - Allows you to convert a point from global coordinates to the current screen coordinates. - */ -- (NSPoint)convertPointToScreenCoordinates:(NSPoint)aPoint; - -/* - Allows to flip the point coordinates, so y is 0 at the top instead of the bottom. x remains the same - */ -- (NSPoint)flipPoint:(NSPoint)aPoint; - @end #endif diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index d2c5b11c3d1899ff7b3db870eba8bb53083ab004..5730e702322024610cd3303b2bab7373df3493b3 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -28,8 +28,6 @@ #import "llwindowmacosx-objc.h" #import "llappdelegate-objc.h" -extern BOOL gHiDPISupport; - #pragma mark local functions NativeKeyEventData extractKeyDataFromKeyEvent(NSEvent* theEvent) @@ -104,35 +102,10 @@ attributedStringInfo getSegments(NSAttributedString *str) return screen; } - - -- (NSPoint)convertPointToScreenCoordinates:(NSPoint)aPoint -{ - float normalizedX = fabs(fabs(self.frame.origin.x) - fabs(aPoint.x)); - float normalizedY = aPoint.y - self.frame.origin.y; - - return NSMakePoint(normalizedX, normalizedY); -} - -- (NSPoint)flipPoint:(NSPoint)aPoint -{ - return NSMakePoint(aPoint.x, self.frame.size.height - aPoint.y); -} - @end @implementation LLOpenGLView -// Force a high quality update after live resizing -- (void) viewDidEndLiveResize -{ - if (mOldResize) //Maint-3135 - { - NSSize size = [self frame].size; - callResize(size.width, size.height); - } -} - - (unsigned long)getVramSize { CGLRendererInfoObj info = 0; @@ -154,46 +127,38 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void)viewDidMoveToWindow { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowResized:) name:NSWindowDidResizeNotification - object:[self window]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowResized:) name:NSWindowDidResizeNotification + object:[self window]]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowWillMiniaturize:) name:NSWindowWillMiniaturizeNotification - object:[self window]]; + selector:@selector(windowWillMiniaturize:) name:NSWindowWillMiniaturizeNotification + object:[self window]]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification - object:[self window]]; + selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification + object:[self window]]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification - object:[self window]]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(windowDidChangeScreen:) name:NSWindowDidChangeScreenNotification - object:[self window]]; - - - NSRect wnd_rect = [[self window] frame]; - NSRect dev_rect = [self convertRectToBacking:wnd_rect]; - if (!NSEqualSizes(wnd_rect.size,dev_rect.size)) + selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification + object:[self window]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowDidChangeBackingProperties:) name:NSWindowDidChangeBackingPropertiesNotification + object:[self window]]; + + NSRect rect = [[self window] frame]; + NSRect scaled_rect = [self convertRectToBacking:rect]; + if (NSEqualSizes(rect.size, scaled_rect.size)) { - callResize(dev_rect.size.width, dev_rect.size.height); + callResize(scaled_rect.size.width, scaled_rect.size.height); } } -- (void)setOldResize:(bool)oldresize -{ - mOldResize = oldresize; -} - - (void)windowResized:(NSNotification *)notification; { - if (!mOldResize) //Maint-3288 - { - NSSize dev_sz = gHiDPISupport ? [self convertSizeToBacking:[self frame].size] : [self frame].size; - callResize(dev_sz.width, dev_sz.height); - } + NSSize size = [self frame].size; + NSSize scaled_size = [self convertSizeToBacking:size]; + callResize(scaled_size.width, scaled_size.height); } - (void)windowWillMiniaturize:(NSNotification *)notification; @@ -211,9 +176,12 @@ attributedStringInfo getSegments(NSAttributedString *str) mModifiers = [NSEvent modifierFlags]; } --(void)windowDidChangeScreen:(NSNotification *)notification; +-(void)windowDidChangeBackingProperties:(NSNotification *)notification; { - callWindowDidChangeScreen(); + NSSize size = [self frame].size; + NSSize scaled_size = [self convertSizeToBacking:size]; + float scale_factor = [self convertSizeToBacking:NSMakeSize(1, 1)].width; + callHandleDPIChanged(scaled_size.width, scaled_size.height, scale_factor); } - (void)dealloc @@ -239,66 +207,61 @@ attributedStringInfo getSegments(NSAttributedString *str) - (id) initWithFrame:(NSRect)frame withSamples:(NSUInteger)samples andVsync:(BOOL)vsync { - [self registerForDraggedTypes:[NSArray arrayWithObject:NSURLPboardType]]; - [self initWithFrame:frame]; - - // Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6. - // Any specialized pixel formats, i.e. a core profile pixel format, should be initialized through rebuildContextWithFormat. - // 10.7 and 10.8 don't really care if we're defining a profile or not. If we don't explicitly request a core or legacy profile, it'll always assume a legacy profile (for compatibility reasons). - NSOpenGLPixelFormatAttribute attrs[] = { - NSOpenGLPFANoRecovery, - NSOpenGLPFADoubleBuffer, - NSOpenGLPFAClosestPolicy, - NSOpenGLPFAAccelerated, - NSOpenGLPFASampleBuffers, static_cast<NSOpenGLPixelFormatAttribute>(samples > 0 ? 1 : 0), - NSOpenGLPFASamples, static_cast<NSOpenGLPixelFormatAttribute>(samples), - NSOpenGLPFAStencilSize, 8, - NSOpenGLPFADepthSize, 24, - NSOpenGLPFAAlphaSize, 8, - NSOpenGLPFAColorSize, 24, - 0 - }; - - NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease]; - - if (pixelFormat == nil) - { - NSLog(@"Failed to create pixel format!", nil); - return nil; - } - - NSOpenGLContext *glContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil]; - - if (glContext == nil) - { - NSLog(@"Failed to create OpenGL context!", nil); - return nil; - } - - [self setPixelFormat:pixelFormat]; + self = [super initWithFrame:frame]; + if (!self) { return self; } // Despite what this may look like, returning nil self is a-ok. + @autoreleasepool { + [self registerForDraggedTypes:[NSArray arrayWithObject:NSURLPboardType]]; + + // Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6. + // Any specialized pixel formats, i.e. a core profile pixel format, should be initialized through rebuildContextWithFormat. + // 10.7 and 10.8 don't really care if we're defining a profile or not. If we don't explicitly request a core or legacy profile, it'll always assume a legacy profile (for compatibility reasons). + NSOpenGLPixelFormatAttribute attrs[] = { + NSOpenGLPFANoRecovery, + NSOpenGLPFADoubleBuffer, + NSOpenGLPFAClosestPolicy, + NSOpenGLPFAAccelerated, + NSOpenGLPFAMultisample, + NSOpenGLPFASampleBuffers, static_cast<NSOpenGLPixelFormatAttribute>((samples > 0 ? 1 : 0)), + NSOpenGLPFASamples, static_cast<NSOpenGLPixelFormatAttribute>(samples), + NSOpenGLPFAStencilSize, static_cast<NSOpenGLPixelFormatAttribute>(8), + NSOpenGLPFADepthSize, static_cast<NSOpenGLPixelFormatAttribute>(24), + NSOpenGLPFAAlphaSize, static_cast<NSOpenGLPixelFormatAttribute>(8), + NSOpenGLPFAColorSize, static_cast<NSOpenGLPixelFormatAttribute>(24), + 0 + }; + + NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease]; + + if (pixelFormat == nil) + { + NSLog(@"Failed to create pixel format!", nil); + return nil; + } + + NSOpenGLContext *glContext = [[[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil] autorelease]; + + if (glContext == nil) + { + NSLog(@"Failed to create OpenGL context!", nil); + return nil; + } + + //for retina support + [self setWantsBestResolutionOpenGLSurface:YES]; + + [self setPixelFormat:pixelFormat]; + + [self setOpenGLContext:glContext]; + + [glContext setView:self]; + + [glContext makeCurrentContext]; + + GLint glVsync = vsync ? 1 : 0; + [glContext setValues:&glVsync forParameter:NSOpenGLCPSwapInterval]; - //for retina support - [self setWantsBestResolutionOpenGLSurface:gHiDPISupport]; + } - [self setOpenGLContext:glContext]; - - [glContext setView:self]; - - [glContext makeCurrentContext]; - - if (vsync) - { - [glContext setValues:(const GLint*)1 forParameter:NSOpenGLCPSwapInterval]; - } else { - // supress this error after move to Xcode 7: - // error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull] - // Tried using ObjC 'nonnull' keyword as per SO article but didn't build - GLint swapInterval=0; - [glContext setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval]; - } - - mOldResize = false; - return self; } @@ -309,20 +272,23 @@ attributedStringInfo getSegments(NSAttributedString *str) - (BOOL) rebuildContextWithFormat:(NSOpenGLPixelFormat *)format { - NSOpenGLContext *ctx = [self openGLContext]; - - [ctx clearDrawable]; - [ctx initWithFormat:format shareContext:nil]; - - if (ctx == nil) - { - NSLog(@"Failed to create OpenGL context!", nil); - return false; - } - - [self setOpenGLContext:ctx]; - [ctx setView:self]; - [ctx makeCurrentContext]; + @autoreleasepool { + NSOpenGLContext *ctx = [self openGLContext]; + + [ctx clearDrawable]; + ctx = [[[NSOpenGLContext alloc] initWithFormat:format shareContext:nil] autorelease]; + + if (ctx == nil) + { + NSLog(@"Failed to create OpenGL context!", nil); + return false; + } + + [self setOpenGLContext:ctx]; + [ctx setView:self]; + [ctx makeCurrentContext]; + } + return true; } @@ -343,18 +309,14 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void) mouseDown:(NSEvent *)theEvent { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; - mMousePos[0] = mPoint.x; - mMousePos[1] = mPoint.y; - // Apparently people still use this? - if ([theEvent modifierFlags] & NSCommandKeyMask && - !([theEvent modifierFlags] & NSControlKeyMask) && - !([theEvent modifierFlags] & NSShiftKeyMask) && - !([theEvent modifierFlags] & NSAlternateKeyMask) && - !([theEvent modifierFlags] & NSAlphaShiftKeyMask) && - !([theEvent modifierFlags] & NSFunctionKeyMask) && - !([theEvent modifierFlags] & NSHelpKeyMask)) + if ([theEvent modifierFlags] & NSEventModifierFlagCommand && + !([theEvent modifierFlags] & NSEventModifierFlagControl) && + !([theEvent modifierFlags] & NSEventModifierFlagShift) && + !([theEvent modifierFlags] & NSEventModifierFlagOption) && + !([theEvent modifierFlags] & NSEventModifierFlagCapsLock) && + !([theEvent modifierFlags] & NSEventModifierFlagFunction) && + !([theEvent modifierFlags] & NSEventModifierFlagHelp)) { callRightMouseDown(mMousePos, [theEvent modifierFlags]); mSimulatedRightClick = true; @@ -375,7 +337,7 @@ attributedStringInfo getSegments(NSAttributedString *str) callRightMouseUp(mMousePos, [theEvent modifierFlags]); mSimulatedRightClick = false; } else { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; + NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]]; mMousePos[0] = mPoint.x; mMousePos[1] = mPoint.y; callLeftMouseUp(mMousePos, [theEvent modifierFlags]); @@ -384,32 +346,28 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void) rightMouseDown:(NSEvent *)theEvent { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; - mMousePos[0] = mPoint.x; - mMousePos[1] = mPoint.y; callRightMouseDown(mMousePos, [theEvent modifierFlags]); } - (void) rightMouseUp:(NSEvent *)theEvent { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; - mMousePos[0] = mPoint.x; - mMousePos[1] = mPoint.y; callRightMouseUp(mMousePos, [theEvent modifierFlags]); } - (void)mouseMoved:(NSEvent *)theEvent { - NSPoint dev_delta = gHiDPISupport ? [self convertPointToBacking:NSMakePoint([theEvent deltaX], [theEvent deltaY])] : NSMakePoint([theEvent deltaX], [theEvent deltaY]); + // We need a point to be able to convert these. + NSPoint delta = NSMakePoint([theEvent deltaX], [theEvent deltaY]); + NSPoint scaled_delta = [self convertPointToBacking:delta]; float mouseDeltas[] = { - float(dev_delta.x), - float(dev_delta.y) + float(scaled_delta.x), + float(scaled_delta.y) }; - + callDeltaUpdate(mouseDeltas, 0); - - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; + + NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]]; mMousePos[0] = mPoint.x; mMousePos[1] = mPoint.y; callMouseMoved(mMousePos, 0); @@ -423,35 +381,30 @@ attributedStringInfo getSegments(NSAttributedString *str) // Trust the deltas supplied by NSEvent. // The old CoreGraphics APIs we previously relied on are now flagged as obsolete. // NSEvent isn't obsolete, and provides us with the correct deltas. - - NSPoint dev_delta = gHiDPISupport ? [self convertPointToBacking:NSMakePoint([theEvent deltaX], [theEvent deltaY])] : NSMakePoint([theEvent deltaX], [theEvent deltaY]); - + // We need a point to be able to convert these. + NSPoint delta = NSMakePoint([theEvent deltaX], [theEvent deltaY]); + NSPoint scaled_delta = [self convertPointToBacking:delta]; + float mouseDeltas[] = { - float(dev_delta.x), - float(dev_delta.y) + float(scaled_delta.x), + float(scaled_delta.y) }; callDeltaUpdate(mouseDeltas, 0); - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; + NSPoint mPoint = [self convertPointToBacking:[theEvent locationInWindow]]; mMousePos[0] = mPoint.x; mMousePos[1] = mPoint.y; - callMouseDragged(mMousePos, 0); + callMouseMoved(mMousePos, 0); } - (void) otherMouseDown:(NSEvent *)theEvent { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; - mMousePos[0] = mPoint.x; - mMousePos[1] = mPoint.y; callOtherMouseDown(mMousePos, [theEvent modifierFlags], [theEvent buttonNumber]); } - (void) otherMouseUp:(NSEvent *)theEvent { - NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow]; - mMousePos[0] = mPoint.x; - mMousePos[1] = mPoint.y; callOtherMouseUp(mMousePos, [theEvent modifierFlags], [theEvent buttonNumber]); } @@ -498,7 +451,7 @@ attributedStringInfo getSegments(NSAttributedString *str) unichar ch; if (acceptsText && !mMarkedTextAllowed && - !(mModifiers & (NSControlKeyMask | NSCommandKeyMask)) && // commands don't invoke InputWindow + !(mModifiers & (NSEventModifierFlagControl | NSEventModifierFlagCommand)) && // commands don't invoke InputWindow ![(LLAppDelegate*)[NSApp delegate] romanScript] && (ch = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]) > ' ' && ch != NSDeleteCharacter && @@ -522,13 +475,13 @@ attributedStringInfo getSegments(NSAttributedString *str) switch([theEvent keyCode]) { case 56: - mask = NSShiftKeyMask; + mask = NSEventModifierFlagShift; break; case 58: - mask = NSAlternateKeyMask; + mask = NSEventModifierFlagOption; break; case 59: - mask = NSControlKeyMask; + mask = NSEventModifierFlagControl; break; default: return; @@ -554,7 +507,7 @@ attributedStringInfo getSegments(NSAttributedString *str) - (NSDragOperation) draggingEntered:(id<NSDraggingInfo>)sender { NSPasteboard *pboard; - NSDragOperation sourceDragMask; + NSDragOperation sourceDragMask; sourceDragMask = [sender draggingSourceOperationMask]; @@ -565,8 +518,8 @@ attributedStringInfo getSegments(NSAttributedString *str) if (sourceDragMask & NSDragOperationLink) { NSURL *fileUrl = [[pboard readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]] options:[NSDictionary dictionary]] objectAtIndex:0]; mLastDraggedUrl = [[fileUrl absoluteString] UTF8String]; - return NSDragOperationLink; - } + return NSDragOperationLink; + } } return NSDragOperationNone; } @@ -732,9 +685,9 @@ attributedStringInfo getSegments(NSAttributedString *str) - (void) insertNewline:(id)sender { - if (!(mModifiers & NSCommandKeyMask) && - !(mModifiers & NSShiftKeyMask) && - !(mModifiers & NSAlternateKeyMask)) + if (!(mModifiers & NSEventModifierFlagCommand) && + !(mModifiers & NSEventModifierFlagShift) && + !(mModifiers & NSEventModifierFlagOption)) { callUnicodeCallback(13, 0); } else { @@ -853,27 +806,6 @@ attributedStringInfo getSegments(NSAttributedString *str) return self; } -- (NSPoint)convertToScreenFromLocalPoint:(NSPoint)point relativeToView:(NSView *)view -{ - NSScreen *currentScreen = [NSScreen currentScreenForMouseLocation]; - if(currentScreen) - { - NSPoint windowPoint = [view convertPoint:point toView:nil]; - NSPoint screenPoint = [[view window] convertBaseToScreen:windowPoint]; - NSPoint flippedScreenPoint = [currentScreen flipPoint:screenPoint]; - flippedScreenPoint.y += [currentScreen frame].origin.y; - - return flippedScreenPoint; - } - - return NSZeroPoint; -} - -- (NSPoint)flipPoint:(NSPoint)aPoint -{ - return NSMakePoint(aPoint.x, self.frame.size.height - aPoint.y); -} - - (BOOL) becomeFirstResponder { callFocus(); diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index a45c7e2b3174a59165dd3506112b20e8b24299e5..2cbc983f0f415d64c1d20920711d99341b1c486a 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -125,7 +125,6 @@ class LLWindow : public LLInstanceTracker<LLWindow> virtual void swapBuffers() = 0; virtual void bringToFront() = 0; virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract - virtual void setOldResize(bool oldresize) { }; // handy coordinate space conversion routines // NB: screen to window and vice verse won't work on width/height coordinate pairs, // as the conversion must take into account left AND right border widths, etc. diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index be61e1e16c62fd4db5b04e67bb92a612fe170f3b..39e9f3a3a263e71c9069890ba1c00834efefe30a 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -122,10 +122,6 @@ void LLWindowCallbacks::handleMouseMove(LLWindow *window, const LLCoordGL pos, M { } -void LLWindowCallbacks::handleMouseDragged(LLWindow *window, const LLCoordGL pos, MASK mask) -{ -} - void LLWindowCallbacks::handleScrollWheel(LLWindow *window, S32 clicks) { } @@ -194,11 +190,6 @@ BOOL LLWindowCallbacks::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, return FALSE; } -BOOL LLWindowCallbacks::handleWindowDidChangeScreen(LLWindow *window) -{ - return FALSE; -} - void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg) { diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 3b186481388cc8d290a5a5a2788665b77a7a5807..e688bf3d471fe076be7c7ec31d467d0a38fca4c2 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -54,7 +54,6 @@ class LLWindowCallbacks virtual BOOL handleActivate(LLWindow *window, BOOL activated); virtual BOOL handleActivateApp(LLWindow *window, BOOL activating); virtual void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); - virtual void handleMouseDragged(LLWindow *window, LLCoordGL pos, MASK mask); virtual void handleScrollWheel(LLWindow *window, S32 clicks); virtual void handleScrollHWheel(LLWindow *window, S32 clicks); virtual void handleResize(LLWindow *window, S32 width, S32 height); @@ -69,7 +68,6 @@ class LLWindowCallbacks virtual BOOL handleTimerEvent(LLWindow *window); virtual BOOL handleDeviceChange(LLWindow *window); virtual BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); - virtual BOOL handleWindowDidChangeScreen(LLWindow *window); enum DragNDropAction { DNDA_START_TRACKING = 0,// Start tracking an incoming drag diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index 44fd4127ce5a06b0e1694828b1eb9fe0b00c7f92..84d1858379ab400ebae7e06de2fb542cabcf10ea 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -31,7 +31,7 @@ #include <map> #include <vector> -//fir CGSize +//for CGSize #include <CoreGraphics/CGGeometry.h> typedef std::vector<std::pair<int, bool> > segment_t; @@ -83,7 +83,7 @@ int createNSApp(int argc, const char **argv); void setupCocoa(); bool pasteBoardAvailable(); bool copyToPBoard(const unsigned short *str, unsigned int len); -const unsigned short *copyFromPBoard(); +unsigned short *copyFromPBoard(); CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY); short releaseImageCursor(CursorRef ref); short setImageCursor(CursorRef ref); @@ -95,11 +95,9 @@ void setCrossCursor(); void setNotAllowedCursor(); void hideNSCursor(); void showNSCursor(); -bool isCGCursorVisible(); void hideNSCursorTillMove(bool hide); void requestUserAttention(); long showAlert(std::string title, std::string text, int type); -void setResizeMode(bool oldresize, void* glview); NSWindowRef createNSWindow(int x, int y, int width, int height); @@ -110,16 +108,14 @@ void glSwapBuffers(void* context); CGLContextObj getCGLContextObj(GLViewRef view); unsigned long getVramSize(GLViewRef view); float getDeviceUnitSize(GLViewRef view); -CGPoint getContentViewBoundsPosition(NSWindowRef window); -CGSize getContentViewBoundsSize(NSWindowRef window); -CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view); +void getContentViewBounds(NSWindowRef window, float* bounds); +void getScaledContentViewBounds(NSWindowRef window, GLViewRef view, float* bounds); void getWindowSize(NSWindowRef window, float* size); void setWindowSize(NSWindowRef window, int width, int height); void getCursorPos(NSWindowRef window, float* pos); void makeWindowOrderFront(NSWindowRef window); void convertScreenToWindow(NSWindowRef window, float *coord); void convertWindowToScreen(NSWindowRef window, float *coord); -void convertScreenToView(NSWindowRef window, float *coord); void convertRectToScreen(NSWindowRef window, float *coord); void convertRectFromScreen(NSWindowRef window, float *coord); void setWindowPos(NSWindowRef window, float* pos); @@ -141,14 +137,13 @@ void callLeftMouseUp(float *pos, unsigned int mask); void callDoubleClick(float *pos, unsigned int mask); void callResize(unsigned int width, unsigned int height); void callMouseMoved(float *pos, unsigned int mask); -void callMouseDragged(float *pos, unsigned int mask); void callScrollMoved(float deltaX, float deltaY); void callMouseExit(); void callWindowFocus(); void callWindowUnfocus(); void callWindowHide(); void callWindowUnhide(); -void callWindowDidChangeScreen(); +void callHandleDPIChanged(unsigned int width, unsigned int height, float scale_factor); void callDeltaUpdate(float *delta, unsigned int mask); void callOtherMouseDown(float *pos, unsigned int mask, int button); void callOtherMouseUp(float *pos, unsigned int mask, int button); @@ -181,5 +176,6 @@ NSWindowRef getMainAppWindow(); GLViewRef getGLView(); unsigned int getModifiers(); +void setTitle(const std::string& title); #endif // LL_LLWINDOWMACOSX_OBJC_H diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index f895c1764396b862aa4adf246c3f22e9b7816559..61c2ff71bcf07b030bc86a7e274c0566c3ddb289 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -49,14 +49,12 @@ void setupCocoa() if(!inited) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - // The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents. - // ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr' - // when init'ing the Cocoa App window. - [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; - - [pool release]; + @autoreleasepool { + // The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents. + // ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr' + // when init'ing the Cocoa App window. + [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"]; + } inited = true; } @@ -64,13 +62,14 @@ void setupCocoa() bool copyToPBoard(const unsigned short *str, unsigned int len) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; - NSPasteboard *pboard = [NSPasteboard generalPasteboard]; - [pboard clearContents]; - - NSArray *contentsToPaste = [[NSArray alloc] initWithObjects:[NSString stringWithCharacters:str length:len], nil]; - [pool release]; - return [pboard writeObjects:contentsToPaste]; + @autoreleasepool { + NSPasteboard *pboard = [NSPasteboard generalPasteboard]; + [pboard clearContents]; + + NSArray *contentsToPaste = [[[NSArray alloc] initWithObjects:[NSString stringWithCharacters:str length:len], nil] autorelease]; + BOOL ret = [pboard writeObjects:contentsToPaste]; + return ret; + } } bool pasteBoardAvailable() @@ -79,41 +78,41 @@ bool pasteBoardAvailable() return [[NSPasteboard generalPasteboard] canReadObjectForClasses:classArray options:[NSDictionary dictionary]]; } -const unsigned short *copyFromPBoard() +unsigned short *copyFromPBoard() { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init]; - NSPasteboard *pboard = [NSPasteboard generalPasteboard]; - NSArray *classArray = [NSArray arrayWithObject:[NSString class]]; - NSString *str = NULL; - BOOL ok = [pboard canReadObjectForClasses:classArray options:[NSDictionary dictionary]]; - if (ok) - { - NSArray *objToPaste = [pboard readObjectsForClasses:classArray options:[NSDictionary dictionary]]; - str = [objToPaste objectAtIndex:0]; - } - unichar* temp = (unichar*)calloc([str length]+1, sizeof(unichar)); - [str getCharacters:temp]; - [pool release]; - return temp; + @autoreleasepool { + NSPasteboard *pboard = [NSPasteboard generalPasteboard]; + NSArray *classArray = [NSArray arrayWithObject:[NSString class]]; + NSString *str = NULL; + BOOL ok = [pboard canReadObjectForClasses:classArray options:[NSDictionary dictionary]]; + if (ok) + { + NSArray *objToPaste = [pboard readObjectsForClasses:classArray options:[NSDictionary dictionary]]; + str = [objToPaste objectAtIndex:0]; + } + NSUInteger len = [str length]; + unichar* temp = (unichar*)calloc(len+1, sizeof(unichar)); + [str getCharacters:temp range:NSMakeRange(0, len)]; + + return temp; + } } CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - // extra retain on the NSCursor since we want it to live for the lifetime of the app. - NSCursor *cursor = - [[[NSCursor alloc] - initWithImage: - [[[NSImage alloc] initWithContentsOfFile: - [NSString stringWithFormat:@"%s", fullpath] - ]autorelease] - hotSpot:NSMakePoint(hotspotX, hotspotY) - ]retain]; - - [pool release]; - - return (CursorRef)cursor; + @autoreleasepool { + // extra retain on the NSCursor since we want it to live for the lifetime of the app. + NSCursor *cursor = + [[[NSCursor alloc] + initWithImage: + [[[NSImage alloc] initWithContentsOfFile: + [NSString stringWithFormat:@"%s", fullpath] + ]autorelease] + hotSpot:NSMakePoint(hotspotX, hotspotY) + ] retain]; + + return (CursorRef)cursor; + } } void setArrowCursor() @@ -163,11 +162,6 @@ void showNSCursor() [NSCursor unhide]; } -bool isCGCursorVisible() -{ - return CGCursorIsVisible(); -} - void hideNSCursorTillMove(bool hide) { [NSCursor setHiddenUntilMouseMoves:hide]; @@ -178,10 +172,10 @@ OSErr releaseImageCursor(CursorRef ref) { if( ref != NULL ) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSCursor *cursor = (NSCursor*)ref; - [cursor release]; - [pool release]; + @autoreleasepool { + NSCursor *cursor = (NSCursor*)ref; + [cursor release]; + } } else { @@ -195,10 +189,10 @@ OSErr setImageCursor(CursorRef ref) { if( ref != NULL ) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSCursor *cursor = (NSCursor*)ref; - [cursor set]; - [pool release]; + @autoreleasepool { + NSCursor *cursor = (NSCursor*)ref; + [cursor set]; + } } else { @@ -214,7 +208,7 @@ OSErr setImageCursor(CursorRef ref) NSWindowRef createNSWindow(int x, int y, int width, int height) { LLNSWindow *window = [[LLNSWindow alloc]initWithContentRect:NSMakeRect(x, y, width, height) - styleMask:NSTitledWindowMask | NSResizableWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTexturedBackgroundWindowMask backing:NSBackingStoreBuffered defer:NO]; + styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskTexturedBackground backing:NSBackingStoreBuffered defer:NO]; [window makeKeyAndOrderFront:nil]; [window setAcceptsMouseMovedEvents:TRUE]; return window; @@ -227,11 +221,6 @@ GLViewRef createOpenGLView(NSWindowRef window, unsigned int samples, bool vsync) return glview; } -void setResizeMode(bool oldresize, void* glview) -{ - [(LLOpenGLView *)glview setOldResize:oldresize]; -} - void glSwapBuffers(void* context) { [(NSOpenGLContext*)context flushBuffer]; @@ -258,19 +247,21 @@ float getDeviceUnitSize(GLViewRef view) return [(LLOpenGLView*)view convertSizeToBacking:NSMakeSize(1, 1)].width; } -CGPoint getContentViewBoundsPosition(NSWindowRef window) +void getContentViewBounds(NSWindowRef window, float* bounds) { - return [[(LLNSWindow*)window contentView] bounds].origin; + bounds[0] = [[(LLNSWindow*)window contentView] bounds].origin.x; + bounds[1] = [[(LLNSWindow*)window contentView] bounds].origin.y; + bounds[2] = [[(LLNSWindow*)window contentView] bounds].size.width; + bounds[3] = [[(LLNSWindow*)window contentView] bounds].size.height; } -CGSize getContentViewBoundsSize(NSWindowRef window) +void getScaledContentViewBounds(NSWindowRef window, GLViewRef view, float* bounds) { - return [[(LLNSWindow*)window contentView] bounds].size; -} - -CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view) -{ - return [(NSOpenGLView*)view convertRectToBacking:[[(LLNSWindow*)window contentView] bounds]].size; + NSRect b = [(NSOpenGLView*)view convertRectToBacking:[[(LLNSWindow*)window contentView] bounds]]; + bounds[0] = b.origin.x; + bounds[1] = b.origin.y; + bounds[2] = b.size.width; + bounds[3] = b.size.height; } void getWindowSize(NSWindowRef window, float* size) @@ -313,9 +304,7 @@ void makeWindowOrderFront(NSWindowRef window) void convertScreenToWindow(NSWindowRef window, float *coord) { - NSRect point; - point.origin.x = coord[0]; - point.origin.y = coord[1]; + NSRect point = NSMakeRect(coord[0], coord[1], 0, 0); point = [(LLNSWindow*)window convertRectFromScreen:point]; coord[0] = point.origin.x; coord[1] = point.origin.y; @@ -323,12 +312,7 @@ void convertScreenToWindow(NSWindowRef window, float *coord) void convertRectToScreen(NSWindowRef window, float *coord) { - NSRect point; - point.origin.x = coord[0]; - point.origin.y = coord[1]; - point.size.width = coord[2]; - point.size.height = coord[3]; - + NSRect point = NSMakeRect(coord[0], coord[1], coord[2], coord[3]); point = [(LLNSWindow*)window convertRectToScreen:point]; coord[0] = point.origin.x; @@ -339,12 +323,7 @@ void convertRectToScreen(NSWindowRef window, float *coord) void convertRectFromScreen(NSWindowRef window, float *coord) { - NSRect point; - point.origin.x = coord[0]; - point.origin.y = coord[1]; - point.size.width = coord[2]; - point.size.height = coord[3]; - + NSRect point = NSMakeRect(coord[0], coord[1], coord[2], coord[3]); point = [(LLNSWindow*)window convertRectFromScreen:point]; coord[0] = point.origin.x; @@ -353,23 +332,15 @@ void convertRectFromScreen(NSWindowRef window, float *coord) coord[3] = point.size.height; } -void convertScreenToView(NSWindowRef window, float *coord) -{ - NSRect point; - point.origin.x = coord[0]; - point.origin.y = coord[1]; - point.origin = [(LLNSWindow*)window convertScreenToBase:point.origin]; - point.origin = [[(LLNSWindow*)window contentView] convertPoint:point.origin fromView:nil]; -} - void convertWindowToScreen(NSWindowRef window, float *coord) { - NSPoint point; - point.x = coord[0]; - point.y = coord[1]; - point = [(LLNSWindow*)window convertToScreenFromLocalPoint:point relativeToView:[(LLNSWindow*)window contentView]]; - coord[0] = point.x; - coord[1] = point.y; + LLNSWindow *nsWindow = (LLNSWindow*)window; + NSRect rect = NSMakeRect(coord[0], coord[1], 0, 0); + rect = [nsWindow convertRectToScreen:rect]; + NSRect screenRect = [[nsWindow screen] frame]; + NSPoint retPoint = NSMakePoint(rect.origin.x, screenRect.origin.y + screenRect.size.height - rect.origin.y); + coord[0] = retPoint.x; + coord[1] = retPoint.y; } void closeWindow(NSWindowRef window) @@ -382,6 +353,7 @@ void removeGLView(GLViewRef view) { [(LLOpenGLView*)view clearGLContext]; [(LLOpenGLView*)view removeFromSuperview]; + [(LLOpenGLView*)view release]; } void setupInputWindow(NSWindowRef window, GLViewRef glview) @@ -401,7 +373,7 @@ void allowDirectMarkedTextInput(bool allow, GLViewRef glView) NSWindowRef getMainAppWindow() { - LLNSWindow *winRef = [(LLAppDelegate*)[[NSApplication sharedApplication] delegate] window]; + LLNSWindow *winRef = [(LLAppDelegate*)[[LLApplication sharedApplication] delegate] window]; [winRef setAcceptsMouseMovedEvents:TRUE]; return winRef; @@ -414,61 +386,65 @@ void makeFirstResponder(NSWindowRef window, GLViewRef view) void requestUserAttention() { - [[NSApplication sharedApplication] requestUserAttention:NSInformationalRequest]; + [[LLApplication sharedApplication] requestUserAttention:NSInformationalRequest]; } long showAlert(std::string text, std::string title, int type) { - NSAlert *alert = [[NSAlert alloc] init]; - - [alert setMessageText:[NSString stringWithCString:title.c_str() encoding:[NSString defaultCStringEncoding]]]; - [alert setInformativeText:[NSString stringWithCString:text.c_str() encoding:[NSString defaultCStringEncoding]]]; - if (type == 0) - { - [alert addButtonWithTitle:@"Okay"]; - } else if (type == 1) - { - [alert addButtonWithTitle:@"Okay"]; - [alert addButtonWithTitle:@"Cancel"]; - } else if (type == 2) - { - [alert addButtonWithTitle:@"Yes"]; - [alert addButtonWithTitle:@"No"]; - } - long ret = [alert runModal]; - [alert dealloc]; - - if (ret == NSAlertFirstButtonReturn) - { - if (type == 1) + @autoreleasepool { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert setMessageText:[NSString stringWithCString:title.c_str() encoding:[NSString defaultCStringEncoding]]]; + [alert setInformativeText:[NSString stringWithCString:text.c_str() encoding:[NSString defaultCStringEncoding]]]; + if (type == 0) { - ret = 3; + [alert addButtonWithTitle:@"Okay"]; + } else if (type == 1) + { + [alert addButtonWithTitle:@"Okay"]; + [alert addButtonWithTitle:@"Cancel"]; } else if (type == 2) { - ret = 0; + [alert addButtonWithTitle:@"Yes"]; + [alert addButtonWithTitle:@"No"]; } - } else if (ret == NSAlertSecondButtonReturn) - { - if (type == 0 || type == 1) + long ret = [alert runModal]; + + if (ret == NSAlertFirstButtonReturn) { - ret = 2; - } else if (type == 2) + if (type == 1) + { + ret = 3; + } else if (type == 2) + { + ret = 0; + } + } else if (ret == NSAlertSecondButtonReturn) { - ret = 1; + if (type == 0 || type == 1) + { + ret = 2; + } else if (type == 2) + { + ret = 1; + } } + + return ret; } - - return ret; } -/* - GLViewRef getGLView() - { - return [(LLAppDelegate*)[[NSApplication sharedApplication] delegate] glview]; - } - */ - unsigned int getModifiers() { return [NSEvent modifierFlags]; } + +void setTitle(const std::string& title) +{ + @autoreleasepool { + LLNSWindow *winRef = [(LLAppDelegate*)[[LLApplication sharedApplication] delegate] window]; + NSString *nsTitle = [NSString stringWithUTF8String:title.c_str()]; + [winRef setTitle:nsTitle]; + } +} + diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 2604a23c85107a5aaffa11373938ec4c547e4275..5f89bf92b0862a3f13385c8a9c51885de5912070 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -39,11 +39,9 @@ #include "indra_constants.h" #include <OpenGL/OpenGL.h> -#include <Carbon/Carbon.h> #include <CoreServices/CoreServices.h> extern BOOL gDebugWindowProc; -BOOL gHiDPISupport = TRUE; const S32 BITS_PER_PIXEL = 32; const S32 MAX_NUM_RESOLUTIONS = 32; @@ -344,18 +342,6 @@ void callMouseMoved(float *pos, MASK mask) //gWindowImplementation->getCallbacks()->handleScrollWheel(gWindowImplementation, 0); } -void callMouseDragged(float *pos, MASK mask) -{ - LLCoordGL outCoords; - outCoords.mX = ll_round(pos[0]); - outCoords.mY = ll_round(pos[1]); - float deltas[2]; - gWindowImplementation->getMouseDeltas(deltas); - outCoords.mX += deltas[0]; - outCoords.mY += deltas[1]; - gWindowImplementation->getCallbacks()->handleMouseDragged(gWindowImplementation, outCoords, gKeyboard->currentMask(TRUE)); -} - void callScrollMoved(float deltaX, float deltaY) { if ( gWindowImplementation && gWindowImplementation->getCallbacks() ) @@ -408,11 +394,11 @@ void callWindowUnhide() } } -void callWindowDidChangeScreen() +void callHandleDPIChanged(unsigned int width, unsigned int height, float scale_factor) { if ( gWindowImplementation && gWindowImplementation->getCallbacks() ) { - gWindowImplementation->getCallbacks()->handleWindowDidChangeScreen(gWindowImplementation); + gWindowImplementation->getCallbacks()->handleDPIChanged(gWindowImplementation, scale_factor, width, height); } } @@ -611,8 +597,6 @@ void LLWindowMacOSX::getMouseDeltas(float* delta) BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync) { - BOOL glNeedsInit = FALSE; - mFullscreen = fullscreen; if (mWindow == NULL) @@ -626,10 +610,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits // Get the view instead. mGLView = createOpenGLView(mWindow, mFSAASamples, !disable_vsync); mContext = getCGLContextObj(mGLView); - - // Since we just created the context, it needs to be set up. - glNeedsInit = TRUE; - + gGLManager.mVRAM = getVramSize(mGLView); } @@ -642,7 +623,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits { - U32 err = CGLSetCurrentContext(mContext); + CGLError err = CGLSetCurrentContext(mContext); if (err != kCGLNoError) { setupFailure("Can't activate GL rendering context", "Error", OSMB_OK); @@ -661,26 +642,24 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits frames_per_swap = 1; } - CGLSetParameter(mContext, kCGLCPSwapInterval, &frames_per_swap); - - //enable multi-threaded OpenGL - if (sUseMultGL) - { - CGLError cgl_err; - CGLContextObj ctx = CGLGetCurrentContext(); - - cgl_err = CGLEnable( ctx, kCGLCEMPEngine); - - if (cgl_err != kCGLNoError ) - { - LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; - } - else - { - LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; - } - } - makeFirstResponder(mWindow, mGLView); + CGLSetParameter(mContext, kCGLCPSwapInterval, &frames_per_swap); + + //enable multi-threaded OpenGL + CGLError cgl_err; + CGLContextObj ctx = CGLGetCurrentContext(); + + cgl_err = CGLEnable(ctx, kCGLCEMPEngine); + + if (cgl_err != kCGLNoError ) + { + LL_INFOS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; + } + else + { + LL_INFOS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; + } + + makeFirstResponder(mWindow, mGLView); return TRUE; } @@ -717,12 +696,6 @@ void LLWindowMacOSX::destroyContext() mPixelFormat = NULL; } - // Clean up the GL context - if(mContext != NULL) - { - CGLDestroyContext(mContext); - } - // Destroy our LLOpenGLView if(mGLView != NULL) { @@ -730,6 +703,12 @@ void LLWindowMacOSX::destroyContext() mGLView = NULL; } + // Clean up the GL context + if(mContext != NULL) + { + CGLDestroyContext(mContext); + } + // Close the window if(mWindow != NULL) { @@ -811,7 +790,8 @@ BOOL LLWindowMacOSX::getVisible() if(mFullscreen) { result = TRUE; - }if (mWindow) + } + if (mWindow) { result = TRUE; } @@ -860,10 +840,11 @@ BOOL LLWindowMacOSX::getPosition(LLCoordScreen *position) } else if(mWindow) { - const CGPoint & pos = getContentViewBoundsPosition(mWindow); + float rect[4]; + getContentViewBounds(mWindow, rect); - position->mX = pos.x; - position->mY = pos.y; + position->mX = rect[0]; + position->mY = rect[1]; err = noErr; } @@ -887,10 +868,11 @@ BOOL LLWindowMacOSX::getSize(LLCoordScreen *size) } else if(mWindow) { - const CGSize & sz = gHiDPISupport ? getDeviceContentViewSize(mWindow, mGLView) : getContentViewBoundsSize(mWindow); + float rect[4]; + getScaledContentViewBounds(mWindow, mGLView, rect); - size->mX = sz.width; - size->mY = sz.height; + size->mX = rect[2]; + size->mY = rect[3]; err = noErr; } else @@ -903,6 +885,7 @@ BOOL LLWindowMacOSX::getSize(LLCoordScreen *size) BOOL LLWindowMacOSX::getSize(LLCoordWindow *size) { + float rect[4]; S32 err = -1; if(mFullscreen) @@ -913,13 +896,11 @@ BOOL LLWindowMacOSX::getSize(LLCoordWindow *size) } else if(mWindow) { - const CGSize & sz = gHiDPISupport ? getDeviceContentViewSize(mWindow, mGLView) : getContentViewBoundsSize(mWindow); + getScaledContentViewBounds(mWindow, mGLView, rect); - size->mX = sz.width; - size->mY = sz.height; - err = noErr; - - + size->mX = rect[2]; + size->mY = rect[3]; + err = noErr; } else { @@ -1251,8 +1232,10 @@ BOOL LLWindowMacOSX::isClipboardTextAvailable() } BOOL LLWindowMacOSX::pasteTextFromClipboard(LLWString &dst) -{ - llutf16string str(copyFromPBoard()); +{ + unsigned short* temp = copyFromPBoard(); + llutf16string str(temp); + free(temp); dst = utf16str_to_wstring(str); if (dst != L"") { @@ -1272,6 +1255,10 @@ BOOL LLWindowMacOSX::copyTextToClipboard(const LLWString &s) return result; } +void LLWindowMacOSX::setWindowTitle(const std::string& title) +{ + setTitle(title); +} // protected BOOL LLWindowMacOSX::resetDisplayResolution() @@ -1285,7 +1272,7 @@ LLWindow::LLWindowResolution* LLWindowMacOSX::getSupportedResolutions(S32 &num_r { if (!mSupportedResolutions) { - CFArrayRef modes = CGDisplayAvailableModes(mDisplay); + CFArrayRef modes = CGDisplayCopyAllDisplayModes(mDisplay, NULL); if(modes != NULL) { @@ -1324,6 +1311,7 @@ LLWindow::LLWindowResolution* LLWindowMacOSX::getSupportedResolutions(S32 &num_r } } } + CFRelease(modes); } } @@ -1350,14 +1338,14 @@ BOOL LLWindowMacOSX::convertCoords(LLCoordScreen from, LLCoordWindow* to) if(mWindow) { float mouse_point[2]; - + float scale_factor = getSystemUISize(); mouse_point[0] = from.mX; mouse_point[1] = from.mY; convertScreenToWindow(mWindow, mouse_point); - to->mX = mouse_point[0]; - to->mY = mouse_point[1]; + to->mX = mouse_point[0] * scale_factor; + to->mY = mouse_point[1] * scale_factor; return TRUE; } @@ -1369,10 +1357,9 @@ BOOL LLWindowMacOSX::convertCoords(LLCoordWindow from, LLCoordScreen *to) if(mWindow) { float mouse_point[2]; - - mouse_point[0] = from.mX; - mouse_point[1] = from.mY; - + float scale_factor = getSystemUISize(); + mouse_point[0] = from.mX / scale_factor; + mouse_point[1] = from.mY / scale_factor; convertWindowToScreen(mWindow, mouse_point); to->mX = mouse_point[0]; @@ -1496,11 +1483,6 @@ void LLWindowMacOSX::updateCursor() if(mCurrentCursor == mNextCursor) { - if(mCursorHidden && mHideCursorPermanent && isCGCursorVisible()) - { - hideNSCursor(); - adjustCursorDecouple(); - } return; } @@ -1715,12 +1697,6 @@ void LLSplashScreenMacOSX::showImpl() void LLSplashScreenMacOSX::updateImpl(const std::string& mesg) { - if(mWindow != NULL) - { - CFStringRef string = NULL; - - string = CFStringCreateWithCString(NULL, mesg.c_str(), kCFStringEncodingUTF8); - } } @@ -1815,30 +1791,7 @@ LLSD LLWindowMacOSX::getNativeKeyData() BOOL LLWindowMacOSX::dialogColorPicker( F32 *r, F32 *g, F32 *b) { - BOOL retval = FALSE; - OSErr error = noErr; - NColorPickerInfo info; - - memset(&info, 0, sizeof(info)); - info.theColor.color.rgb.red = (UInt16)(*r * 65535.f); - info.theColor.color.rgb.green = (UInt16)(*g * 65535.f); - info.theColor.color.rgb.blue = (UInt16)(*b * 65535.f); - info.placeWhere = kCenterOnMainScreen; - - error = NPickColor(&info); - - if (error == noErr) - { - retval = info.newColorChosen; - if (info.newColorChosen) - { - *r = ((float) info.theColor.color.rgb.red) / 65535.0; - *g = ((float) info.theColor.color.rgb.green) / 65535.0; - *b = ((float) info.theColor.color.rgb.blue) / 65535.0; - } - } - - return (retval); + return FALSE; } void *LLWindowMacOSX::getPlatformWindow() @@ -1930,7 +1883,7 @@ MASK LLWindowMacOSX::modifiersToMask(S16 modifiers) F32 LLWindowMacOSX::getSystemUISize() { - return gHiDPISupport ? ::getDeviceUnitSize(mGLView) : LLWindow::getSystemUISize(); + return ::getDeviceUnitSize(mGLView); } #if LL_OS_DRAGDROP_ENABLED diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 24651027e8385f29ff13fe908173d9588fb29694..31fd56dc4b893962bd31fd0e192631a1649d2fa5 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -77,6 +77,7 @@ class LLWindowMacOSX : public LLWindow /*virtual*/ BOOL isClipboardTextAvailable(); /*virtual*/ BOOL pasteTextFromClipboard(LLWString &dst); /*virtual*/ BOOL copyTextToClipboard(const LLWString & src); + /*virtual*/ void setWindowTitle(const std::string& title); /*virtual*/ void flashIcon(F32 seconds); /*virtual*/ F32 getGamma(); /*virtual*/ BOOL setGamma(const F32 gamma); // Set the gamma @@ -153,9 +154,6 @@ class LLWindowMacOSX : public LLWindow BOOL resetDisplayResolution(); BOOL shouldPostQuit() { return mPostQuit; } - - //Satisfy MAINT-3135 and MAINT-3288 with a flag. - /*virtual */ void setOldResize(bool oldresize) {setResizeMode(oldresize, mGLView); } private: void restoreGLContext(); diff --git a/indra/llxml/llxmlnode.h b/indra/llxml/llxmlnode.h index 574dd77b57fbc0979a96d86253432a2e0668e2f6..b6c5845cb013f1af5025888dcf52174ff6ea8275 100644 --- a/indra/llxml/llxmlnode.h +++ b/indra/llxml/llxmlnode.h @@ -27,10 +27,10 @@ #ifndef LL_LLXMLNODE_H #define LL_LLXMLNODE_H -#ifdef LL_USESYSTEMLIBS -#include <expat.h> +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) +# include <expat.h> #else -#include "expat/expat.h" +# include "expat/expat.h" #endif #include <map> diff --git a/indra/llxml/llxmlparser.h b/indra/llxml/llxmlparser.h index 54c4a838f38669c82bb36f6e4ce533e255e5156a..73de6acb21a0ba3886b081fa4c7396da6eed3a2c 100644 --- a/indra/llxml/llxmlparser.h +++ b/indra/llxml/llxmlparser.h @@ -27,10 +27,10 @@ #ifndef LL_LLXMLPARSER_H #define LL_LLXMLPARSER_H -#ifdef LL_USESYSTEMLIBS -#include <expat.h> +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) +# include <expat.h> #else -#include "expat/expat.h" +# include "expat/expat.h" #endif class LLXmlParser diff --git a/indra/media_plugins/base/media_plugin_base.cpp b/indra/media_plugins/base/media_plugin_base.cpp index 37c498664a636833a60b40571718b8ff9cbf73ea..fc303417a691fd20039c43837c68dfce53408132 100644 --- a/indra/media_plugins/base/media_plugin_base.cpp +++ b/indra/media_plugins/base/media_plugin_base.cpp @@ -170,10 +170,8 @@ void MediaPluginBase::sendStatus() #if LL_WINDOWS # define LLSYMEXPORT __declspec(dllexport) -#elif LL_LINUX -# define LLSYMEXPORT __attribute__ ((visibility("default"))) #else -# define LLSYMEXPORT /**/ +# define LLSYMEXPORT __attribute__ ((visibility("default"))) #endif extern "C" diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 3cd17d916da4abd8b6f035d4b3825fa16b191c8a..a632055c38ac57c80d2e77fc18d7a7f83ccccdbf 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -96,7 +96,7 @@ if (DARWIN) media_plugin_cef PROPERTIES PREFIX "" - BUILD_WITH_INSTALL_RPATH 1 + BUILD_WITH_INSTALL_NAME_DIR 1 INSTALL_NAME_DIR "@executable_path" LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" ) diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index a230da1b9b8adc1929ee814f6a33755d4ccd95e6..9772ae292209dfee2767b5d0e6b89cc9c9ad1ea6 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -556,9 +556,11 @@ void MediaPluginCEF::receiveMessage(const char* message_string) settings.autoplay_without_gesture = true; // Set subprocess helper and cef app data paths +#if !LL_DARWIN settings.browser_subprocess_path = mHelperPath; settings.resources_dir_path = mResourcesPath; - settings.locales_dir_path = mLocalesPath; +#endif + settings.locales_dir_path = mLocalesPath; std::vector<std::string> custom_schemes(1, "secondlife"); mCEFLib->setCustomSchemes(custom_schemes); diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt index 89ac23122138fac31c6dd12d565e0b687a79f109..fb1ee65c44b8bf197dfa93eb8e609c0eac023ef7 100644 --- a/indra/media_plugins/example/CMakeLists.txt +++ b/indra/media_plugins/example/CMakeLists.txt @@ -65,7 +65,7 @@ if (DARWIN) media_plugin_example PROPERTIES PREFIX "" - BUILD_WITH_INSTALL_RPATH 1 + BUILD_WITH_INSTALL_NAME_DIR 1 INSTALL_NAME_DIR "@executable_path" LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" ) diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 3f67b6f65ae611398b4364954be2ecf250ba53f4..baa242f814f886c157da365e5aebebe2efe2c65a 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -66,7 +66,7 @@ if (DARWIN) media_plugin_libvlc PROPERTIES PREFIX "" - BUILD_WITH_INSTALL_RPATH 1 + BUILD_WITH_INSTALL_NAME_DIR 1 INSTALL_NAME_DIR "@executable_path" LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" ) diff --git a/indra/newview/Alchemy.xib b/indra/newview/Alchemy.xib new file mode 100644 index 0000000000000000000000000000000000000000..5ddfc59c057b46b137c48e9e04a453ed8da8bc58 --- /dev/null +++ b/indra/newview/Alchemy.xib @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17156" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> + <dependencies> + <deployment version="101300" identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17156"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="LLApplication"> + <connections> + <outlet property="delegate" destination="824" id="845"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="LLApplication"/> + <menu title="Main Menu" systemMenu="main" id="29" userLabel="Main Menu"> + <items> + <menuItem title="Alchemy" id="56"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Alchemy" systemMenu="apple" id="57"> + <items> + <menuItem title="About Alchemy" id="58"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="236"/> + <menuItem title="Preferences…" keyEquivalent="," id="129"/> + <menuItem isSeparatorItem="YES" id="143"/> + <menuItem title="Services" id="131"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Services" systemMenu="services" id="130"/> + </menuItem> + <menuItem isSeparatorItem="YES" id="144"/> + <menuItem title="Hide Alchemy" keyEquivalent="h" id="134"> + <connections> + <action selector="hide:" target="-1" id="369"/> + </connections> + </menuItem> + <menuItem title="Hide Others" keyEquivalent="h" id="145"> + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> + <connections> + <action selector="hideOtherApplications:" target="-1" id="370"/> + </connections> + </menuItem> + <menuItem title="Show All" id="150"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="unhideAllApplications:" target="-1" id="372"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="149"/> + <menuItem title="Quit Alchemy" keyEquivalent="q" id="136"> + <connections> + <action selector="terminate:" target="-3" id="823"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Edit" id="711"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Edit" id="712"> + <items> + <menuItem title="Undo" keyEquivalent="z" id="713"> + <connections> + <action selector="undo:" target="-1" id="776"/> + </connections> + </menuItem> + <menuItem title="Redo" keyEquivalent="Z" id="714"/> + <menuItem isSeparatorItem="YES" id="715"/> + <menuItem title="Cut" keyEquivalent="x" id="716"> + <connections> + <action selector="cut:" target="-1" id="768"/> + </connections> + </menuItem> + <menuItem title="Copy" keyEquivalent="c" id="717"> + <connections> + <action selector="copy:" target="-1" id="782"/> + </connections> + </menuItem> + <menuItem title="Paste" keyEquivalent="v" id="718"> + <connections> + <action selector="paste:" target="-1" id="769"/> + </connections> + </menuItem> + <menuItem title="Select All" keyEquivalent="a" id="721"> + <connections> + <action selector="selectAll:" target="-1" id="785"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Window" id="19"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Window" systemMenu="window" id="24"> + <items> + <menuItem title="Minimize" keyEquivalent="m" id="23"> + <connections> + <action selector="performMiniaturize:" target="-1" id="37"/> + </connections> + </menuItem> + <menuItem title="Zoom" id="239"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="performZoom:" target="-1" id="240"/> + </connections> + </menuItem> + <menuItem title="Enter Full Screen" keyEquivalent="f" id="841"> + <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/> + <connections> + <action selector="toggleFullScreen:" target="-1" id="842"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="92"/> + <menuItem title="Bring All to Front" id="5"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="arrangeInFront:" target="-1" id="39"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Help" id="103"> + <modifierMask key="keyEquivalentModifierMask"/> + </menuItem> + </items> + <point key="canvasLocation" x="4" y="154"/> + </menu> + <customObject id="824" customClass="LLAppDelegate"> + <connections> + <outlet property="inputView" destination="944" id="954"/> + <outlet property="inputWindow" destination="941" id="953"/> + <outlet property="window" destination="828" id="850"/> + </connections> + </customObject> + <window title="Alchemy" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" deferred="NO" frameAutosaveName="Second Life" animationBehavior="default" id="828" customClass="LLNSWindow"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> + <windowCollectionBehavior key="collectionBehavior" fullScreenPrimary="YES"/> + <rect key="contentRect" x="196" y="240" width="1024" height="600"/> + <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/> + <view key="contentView" id="829"> + <rect key="frame" x="0.0" y="0.0" width="1024" height="600"/> + <autoresizingMask key="autoresizingMask"/> + </view> + <point key="canvasLocation" x="4" y="398"/> + </window> + <window title="Input Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" visibleAtLaunch="NO" animationBehavior="default" id="941" customClass="LLUserInputWindow"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/> + <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> + <rect key="contentRect" x="272" y="176" width="938" height="42"/> + <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/> + <view key="contentView" id="942"> + <rect key="frame" x="0.0" y="0.0" width="938" height="42"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <scrollView fixedFrame="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="943"> + <rect key="frame" x="-1" y="-1" width="940" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <clipView key="contentView" id="GLt-7x-2XP"> + <rect key="frame" x="1" y="1" width="938" height="42"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <textView importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" spellingCorrection="YES" smartInsertDelete="YES" id="944" customClass="LLNonInlineTextView"> + <rect key="frame" x="0.0" y="0.0" width="938" height="42"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + <size key="minSize" width="938" height="42"/> + <size key="maxSize" width="940" height="10000000"/> + <color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/> + </textView> + </subviews> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + </clipView> + <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="945"> + <rect key="frame" x="-100" y="-100" width="87" height="18"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="946"> + <rect key="frame" x="923" y="1" width="16" height="42"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + </scrollView> + </subviews> + </view> + <point key="canvasLocation" x="4" y="152"/> + </window> + </objects> +</document> diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index b75b8f6d8a3bfea3033a60be98a661899b64afd0..439580fb4776fa161a6647cb64829c5577ee7dfa 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1457,16 +1457,17 @@ if (DARWIN) COMPILE_FLAGS "-fmodules -fcxx-modules -Wno-nullability-completeness" ) - find_library(AGL_LIBRARY AGL) find_library(APPKIT_LIBRARY AppKit) find_library(COCOA_LIBRARY Cocoa) find_library(IOKIT_LIBRARY IOKit) + find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(COREAUDIO_LIBRARY CoreAudio) set(viewer_LIBRARIES ${COCOA_LIBRARY} - ${AGL_LIBRARY} + ${APPKIT_LIBRARY} ${IOKIT_LIBRARY} + ${COREFOUNDATION_LIBRARY} ${COREAUDIO_LIBRARY} ) @@ -1480,8 +1481,8 @@ if (DARWIN) set(viewer_RESOURCE_FILES alchemy.icns macview.r - Info-SecondLife.plist - SecondLife.xib/ + Info-Alchemy.plist + Alchemy.xib/ # CMake doesn't seem to support Xcode language variants well just yet English.lproj/InfoPlist.strings English.lproj/language.txt @@ -1497,6 +1498,10 @@ if (DARWIN) ) SOURCE_GROUP("Resources" FILES ${viewer_RESOURCE_FILES}) list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES}) + + if (OPENAL) + LIST(APPEND viewer_LIBRARIES ${OPENAL_LIBRARIES} ${FREEALUT_LIBRARIES}) + endif (OPENAL) endif (DARWIN) if (LINUX) @@ -2219,34 +2224,48 @@ if (DARWIN) set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}") set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}") set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2020 Alchemy Development Group") - set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "SecondLife.nib") + set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "Alchemy.nib") set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication") # https://blog.kitware.com/upcoming-in-cmake-2-8-12-osx-rpath-support/ set(CMAKE_MACOSX_RPATH 1) + set(VIEWER_APP_BUNDLE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app") + set(VIEWER_APP_EXE "${VIEWER_APP_BUNDLE}/Contents/MacOS/${product}") + set(VIEWER_APP_DSYM "${VIEWER_APP_EXE}.dSYM") + set(VIEWER_APP_XCARCHIVE "${VIEWER_APP_BUNDLE}/../${product}.xcarchive.zip") + + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/Info-Alchemy.plist" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Info-Alchemy.plist" + ) + set_target_properties( ${VIEWER_BINARY_NAME} PROPERTIES OUTPUT_NAME "${product}" - # From Contents/MacOS/SecondLife, look in Contents/Frameworks + # From Contents/MacOS/Alchemy, look in Contents/Frameworks + BUILD_WITH_INSTALL_RPATH 1 INSTALL_RPATH "@loader_path/../Frameworks" - # SIGH, as of 2018-05-24 (cmake 3.11.1) the INSTALL_RPATH property simply - # does not work. Try this: - LINK_FLAGS "-rpath @loader_path/../Frameworks" MACOSX_BUNDLE_INFO_PLIST - "${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Info-Alchemy.plist" ) - set(VIEWER_APP_BUNDLE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app") - set(VIEWER_APP_EXE "${VIEWER_APP_BUNDLE}/Contents/MacOS/${product}") - set(VIEWER_APP_DSYM "${VIEWER_APP_EXE}.dSYM") - set(VIEWER_APP_XCARCHIVE "${VIEWER_APP_BUNDLE}/../${product}.xcarchive.zip") + # Make sure we can find the 'ibtool' program. If we can NOT find it we + # skip generation of this project + find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin") + if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND") + message(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with + the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin") + endif() + + # Compile the .xib files using the 'ibtool' program with the destination being the app package + add_custom_command (TARGET ${VIEWER_BINARY_NAME} POST_BUILD + COMMAND ${IBTOOL} --errors --warnings --notices + --compile ${VIEWER_APP_BUNDLE}/Contents/Resources/Alchemy.nib + ${CMAKE_CURRENT_SOURCE_DIR}/Alchemy.xib + COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/Alchemy.xib") - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist" - "${VIEWER_APP_BUNDLE}/Contents/Info.plist" - ) add_custom_command( TARGET ${VIEWER_BINARY_NAME} POST_BUILD diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-Alchemy.plist similarity index 98% rename from indra/newview/Info-SecondLife.plist rename to indra/newview/Info-Alchemy.plist index cfe9d991c5a90c803acca5ce64ea101d47a2c480..af626131b54a4985c5b0b66c200c27685e960415 100644 --- a/indra/newview/Info-SecondLife.plist +++ b/indra/newview/Info-Alchemy.plist @@ -28,8 +28,6 @@ <string>${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}</string> <key>CSResourcesFileMapped</key> <true/> - <key>LSRequiresCarbon</key> - <true/> <key>NSHumanReadableCopyright</key> <string>${MACOSX_BUNDLE_COPYRIGHT}</string> <key>NSMicrophoneUsageDescription</key> diff --git a/indra/newview/SecondLife.nib b/indra/newview/SecondLife.nib deleted file mode 100644 index c4ddca50dc15061906b29abb4e547aa17d039b45..0000000000000000000000000000000000000000 Binary files a/indra/newview/SecondLife.nib and /dev/null differ diff --git a/indra/newview/SecondLife.xib b/indra/newview/SecondLife.xib deleted file mode 100644 index ef25c648a7a6fdaa3478ca004cb3891e13184c53..0000000000000000000000000000000000000000 --- a/indra/newview/SecondLife.xib +++ /dev/null @@ -1,1136 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> - <data> - <int key="IBDocument.SystemTarget">1060</int> - <string key="IBDocument.SystemVersion">12E55</string> - <string key="IBDocument.InterfaceBuilderVersion">4457.6</string> - <string key="IBDocument.AppKitVersion">1187.39</string> - <string key="IBDocument.HIToolboxVersion">626.00</string> - <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="NS.object.0">4457.6</string> - </object> - <array key="IBDocument.IntegratedClassDependencies"> - <string>NSCustomObject</string> - <string>NSMenu</string> - <string>NSMenuItem</string> - <string>NSScrollView</string> - <string>NSScroller</string> - <string>NSTextView</string> - <string>NSView</string> - <string>NSWindowTemplate</string> - </array> - <array key="IBDocument.PluginDependencies"> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - </array> - <object class="NSMutableDictionary" key="IBDocument.Metadata"> - <string key="NS.key.0">PluginDependencyRecalculationVersion</string> - <integer value="1" key="NS.object.0"/> - </object> - <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> - <object class="NSCustomObject" id="1021"> - <string key="NSClassName">NSApplication</string> - </object> - <object class="NSCustomObject" id="1014"> - <string key="NSClassName">FirstResponder</string> - </object> - <object class="NSCustomObject" id="1050"> - <string key="NSClassName">NSApplication</string> - </object> - <object class="NSMenu" id="649796088"> - <string key="NSTitle">Main Menu</string> - <array class="NSMutableArray" key="NSMenuItems"> - <object class="NSMenuItem" id="694149608"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Second Life</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <object class="NSCustomResource" key="NSOnImage" id="353210768"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuCheckmark</string> - </object> - <object class="NSCustomResource" key="NSMixedImage" id="549394948"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">NSMenuMixedState</string> - </object> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="110575045"> - <string key="NSTitle">Second Life</string> - <array class="NSMutableArray" key="NSMenuItems"> - <object class="NSMenuItem" id="238522557"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">About Second Life</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="304266470"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="609285721"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Preferences…</string> - <string key="NSKeyEquiv">,</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="481834944"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="1046388886"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Services</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="752062318"> - <string key="NSTitle">Services</string> - <array class="NSMutableArray" key="NSMenuItems"/> - <string key="NSName">_NSServicesMenu</string> - </object> - </object> - <object class="NSMenuItem" id="646227648"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="755159360"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Hide Second Life</string> - <string key="NSKeyEquiv">h</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="342932134"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Hide Others</string> - <string key="NSKeyEquiv">h</string> - <int key="NSKeyEquivModMask">1572864</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="908899353"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Show All</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="1056857174"> - <reference key="NSMenu" ref="110575045"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="632727374"> - <reference key="NSMenu" ref="110575045"/> - <string key="NSTitle">Quit Second Life</string> - <string key="NSKeyEquiv">q</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - </array> - <string key="NSName">_NSAppleMenu</string> - </object> - </object> - <object class="NSMenuItem" id="725688984"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Edit</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="701759256"> - <string key="NSTitle">Edit</string> - <array class="NSMutableArray" key="NSMenuItems"> - <object class="NSMenuItem" id="521487141"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Undo</string> - <string key="NSKeyEquiv">z</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="668936019"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Redo</string> - <string key="NSKeyEquiv">Z</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="383018193"> - <reference key="NSMenu" ref="701759256"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="984623395"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Cut</string> - <string key="NSKeyEquiv">x</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="656529582"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Copy</string> - <string key="NSKeyEquiv">c</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="1032676691"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Paste</string> - <string key="NSKeyEquiv">v</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="538907583"> - <reference key="NSMenu" ref="701759256"/> - <string key="NSTitle">Select All</string> - <string key="NSKeyEquiv">a</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - </array> - </object> - </object> - <object class="NSMenuItem" id="713487014"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Window</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - <string key="NSAction">submenuAction:</string> - <object class="NSMenu" key="NSSubmenu" id="835318025"> - <string key="NSTitle">Window</string> - <array class="NSMutableArray" key="NSMenuItems"> - <object class="NSMenuItem" id="1011231497"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Minimize</string> - <string key="NSKeyEquiv">m</string> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="575023229"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Zoom</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="86356408"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Enter Full Screen</string> - <string key="NSKeyEquiv">f</string> - <int key="NSKeyEquivModMask">1310720</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="299356726"> - <reference key="NSMenu" ref="835318025"/> - <bool key="NSIsDisabled">YES</bool> - <bool key="NSIsSeparator">YES</bool> - <string key="NSTitle"/> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - <object class="NSMenuItem" id="625202149"> - <reference key="NSMenu" ref="835318025"/> - <string key="NSTitle">Bring All to Front</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - </array> - <string key="NSName">_NSWindowsMenu</string> - </object> - </object> - <object class="NSMenuItem" id="391199113"> - <reference key="NSMenu" ref="649796088"/> - <string key="NSTitle">Help</string> - <string key="NSKeyEquiv"/> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="353210768"/> - <reference key="NSMixedImage" ref="549394948"/> - </object> - </array> - <string key="NSName">_NSMainMenu</string> - </object> - <object class="NSCustomObject" id="756173070"> - <string key="NSClassName">LLAppDelegate</string> - </object> - <object class="NSWindowTemplate" id="110292814"> - <int key="NSWindowStyleMask">15</int> - <int key="NSWindowBacking">2</int> - <string key="NSWindowRect">{{196, 240}, {1024, 600}}</string> - <int key="NSWTFlags">74974208</int> - <string key="NSWindowTitle">Second Life</string> - <string key="NSWindowClass">LLNSWindow</string> - <nil key="NSViewClass"/> - <nil key="NSUserInterfaceItemIdentifier"/> - <object class="NSView" key="NSWindowView" id="305280978"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">256</int> - <array class="NSMutableArray" key="NSSubviews"/> - <string key="NSFrameSize">{1024, 600}</string> - <reference key="NSSuperview"/> - <reference key="NSWindow"/> - <string key="NSReuseIdentifierKey">_NS:20</string> - </object> - <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> - <string key="NSMaxSize">{10000000000000, 10000000000000}</string> - <string key="NSFrameAutosaveName">Second Life</string> - <int key="NSWindowCollectionBehavior">128</int> - <bool key="NSWindowIsRestorable">YES</bool> - </object> - <object class="NSWindowTemplate" id="979091056"> - <int key="NSWindowStyleMask">31</int> - <int key="NSWindowBacking">2</int> - <string key="NSWindowRect">{{272, 176}, {938, 42}}</string> - <int key="NSWTFlags">-1535638528</int> - <string key="NSWindowTitle">Input Window</string> - <string key="NSWindowClass">LLUserInputWindow</string> - <nil key="NSViewClass"/> - <nil key="NSUserInterfaceItemIdentifier"/> - <object class="NSView" key="NSWindowView" id="1044753903"> - <reference key="NSNextResponder"/> - <int key="NSvFlags">256</int> - <array class="NSMutableArray" key="NSSubviews"> - <object class="NSScrollView" id="238626476"> - <reference key="NSNextResponder" ref="1044753903"/> - <int key="NSvFlags">256</int> - <array class="NSMutableArray" key="NSSubviews"> - <object class="NSClipView" id="871543330"> - <reference key="NSNextResponder" ref="238626476"/> - <int key="NSvFlags">2322</int> - <array class="NSMutableArray" key="NSSubviews"> - <object class="NSTextView" id="395788163"> - <reference key="NSNextResponder" ref="871543330"/> - <int key="NSvFlags">2322</int> - <set class="NSMutableSet" key="NSDragTypes"> - <string>Apple HTML pasteboard type</string> - <string>Apple PDF pasteboard type</string> - <string>Apple PICT pasteboard type</string> - <string>Apple PNG pasteboard type</string> - <string>Apple URL pasteboard type</string> - <string>CorePasteboardFlavorType 0x6D6F6F76</string> - <string>NSColor pasteboard type</string> - <string>NSFilenamesPboardType</string> - <string>NSStringPboardType</string> - <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> - <string>NeXT RTFD pasteboard type</string> - <string>NeXT Rich Text Format v1.0 pasteboard type</string> - <string>NeXT TIFF v4.0 pasteboard type</string> - <string>NeXT font pasteboard type</string> - <string>NeXT ruler pasteboard type</string> - <string>WebURLsWithTitlesPboardType</string> - <string>public.url</string> - </set> - <string key="NSFrameSize">{938, 42}</string> - <reference key="NSSuperview" ref="871543330"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="339833963"/> - <string key="NSReuseIdentifierKey">_NS:13</string> - <object class="NSTextContainer" key="NSTextContainer" id="648552009"> - <object class="NSLayoutManager" key="NSLayoutManager"> - <object class="NSTextStorage" key="NSTextStorage"> - <object class="NSMutableString" key="NSString"> - <characters key="NS.bytes"/> - </object> - <nil key="NSDelegate"/> - </object> - <array class="NSMutableArray" key="NSTextContainers"> - <reference ref="648552009"/> - </array> - <int key="NSLMFlags">166</int> - <nil key="NSDelegate"/> - </object> - <reference key="NSTextView" ref="395788163"/> - <double key="NSWidth">938</double> - <int key="NSTCFlags">1</int> - </object> - <object class="NSTextViewSharedData" key="NSSharedData"> - <int key="NSFlags">67121127</int> - <int key="NSTextCheckingTypes">0</int> - <nil key="NSMarkedAttributes"/> - <object class="NSColor" key="NSBackgroundColor" id="535647664"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MQA</bytes> - </object> - <dictionary key="NSSelectedAttributes"> - <object class="NSColor" key="NSBackgroundColor"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">selectedTextBackgroundColor</string> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> - </object> - </object> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">6</int> - <string key="NSCatalogName">System</string> - <string key="NSColorName">selectedTextColor</string> - <object class="NSColor" key="NSColor" id="835883401"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MAA</bytes> - </object> - </object> - </dictionary> - <reference key="NSInsertionColor" ref="835883401"/> - <dictionary key="NSLinkAttributes"> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">1</int> - <bytes key="NSRGB">MCAwIDEAA</bytes> - </object> - <object class="NSCursor" key="NSCursor"> - <string key="NSHotSpot">{8, -8}</string> - <int key="NSCursorType">13</int> - </object> - <integer value="1" key="NSUnderline"/> - </dictionary> - <nil key="NSDefaultParagraphStyle"/> - <nil key="NSTextFinder"/> - <int key="NSPreferredTextFinderStyle">1</int> - </object> - <int key="NSTVFlags">6</int> - <string key="NSMaxSize">{939, 10000000}</string> - <nil key="NSDelegate"/> - </object> - </array> - <string key="NSFrame">{{1, 1}, {938, 42}}</string> - <reference key="NSSuperview" ref="238626476"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="395788163"/> - <string key="NSReuseIdentifierKey">_NS:11</string> - <reference key="NSDocView" ref="395788163"/> - <reference key="NSBGColor" ref="535647664"/> - <object class="NSCursor" key="NSCursor"> - <string key="NSHotSpot">{4, 5}</string> - <object class="NSImage" key="NSImage"> - <int key="NSImageFlags">79691776</int> - <array key="NSReps"> - <array> - <integer value="5"/> - <object class="NSURL"> - <nil key="NS.base"/> - <string key="NS.relative">file://localhost/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/DVTIbeamCursor.tiff</string> - </object> - </array> - </array> - <object class="NSColor" key="NSColor"> - <int key="NSColorSpace">3</int> - <bytes key="NSWhite">MCAwAA</bytes> - </object> - </object> - </object> - <int key="NScvFlags">4</int> - </object> - <object class="NSScroller" id="339833963"> - <reference key="NSNextResponder" ref="238626476"/> - <int key="NSvFlags">256</int> - <string key="NSFrame">{{923, 1}, {16, 42}}</string> - <reference key="NSSuperview" ref="238626476"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView"/> - <string key="NSReuseIdentifierKey">_NS:83</string> - <bool key="NSAllowsLogicalLayoutDirection">NO</bool> - <reference key="NSTarget" ref="238626476"/> - <string key="NSAction">_doScroller:</string> - <double key="NSPercent">0.96666666666666667</double> - </object> - <object class="NSScroller" id="1067057765"> - <reference key="NSNextResponder" ref="238626476"/> - <int key="NSvFlags">-2147483392</int> - <string key="NSFrame">{{-100, -100}, {87, 18}}</string> - <reference key="NSSuperview" ref="238626476"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="871543330"/> - <string key="NSReuseIdentifierKey">_NS:33</string> - <bool key="NSAllowsLogicalLayoutDirection">NO</bool> - <int key="NSsFlags">1</int> - <reference key="NSTarget" ref="238626476"/> - <string key="NSAction">_doScroller:</string> - <double key="NSCurValue">1</double> - <double key="NSPercent">0.94565218687057495</double> - </object> - </array> - <string key="NSFrame">{{-1, -1}, {940, 44}}</string> - <reference key="NSSuperview" ref="1044753903"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="1067057765"/> - <string key="NSReuseIdentifierKey">_NS:9</string> - <int key="NSsFlags">133138</int> - <reference key="NSVScroller" ref="339833963"/> - <reference key="NSHScroller" ref="1067057765"/> - <reference key="NSContentView" ref="871543330"/> - <double key="NSMinMagnification">0.25</double> - <double key="NSMaxMagnification">4</double> - <double key="NSMagnification">1</double> - </object> - </array> - <string key="NSFrameSize">{938, 42}</string> - <reference key="NSSuperview"/> - <reference key="NSWindow"/> - <reference key="NSNextKeyView" ref="238626476"/> - <string key="NSReuseIdentifierKey">_NS:21</string> - </object> - <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string> - <string key="NSMaxSize">{10000000000000, 10000000000000}</string> - <bool key="NSWindowIsRestorable">YES</bool> - </object> - </array> - <object class="IBObjectContainer" key="IBDocument.Objects"> - <array class="NSMutableArray" key="connectionRecords"> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">terminate:</string> - <reference key="source" ref="1050"/> - <reference key="destination" ref="632727374"/> - </object> - <int key="connectionID">823</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">orderFrontStandardAboutPanel:</string> - <reference key="source" ref="1021"/> - <reference key="destination" ref="238522557"/> - </object> - <int key="connectionID">142</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">delegate</string> - <reference key="source" ref="1021"/> - <reference key="destination" ref="756173070"/> - </object> - <int key="connectionID">845</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">performMiniaturize:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="1011231497"/> - </object> - <int key="connectionID">37</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">arrangeInFront:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="625202149"/> - </object> - <int key="connectionID">39</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">performZoom:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="575023229"/> - </object> - <int key="connectionID">240</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">hide:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="755159360"/> - </object> - <int key="connectionID">369</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">hideOtherApplications:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="342932134"/> - </object> - <int key="connectionID">370</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">unhideAllApplications:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="908899353"/> - </object> - <int key="connectionID">372</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">cut:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="984623395"/> - </object> - <int key="connectionID">768</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">paste:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="1032676691"/> - </object> - <int key="connectionID">769</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">undo:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="521487141"/> - </object> - <int key="connectionID">776</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">copy:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="656529582"/> - </object> - <int key="connectionID">782</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">selectAll:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="538907583"/> - </object> - <int key="connectionID">785</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBActionConnection" key="connection"> - <string key="label">toggleFullScreen:</string> - <reference key="source" ref="1014"/> - <reference key="destination" ref="86356408"/> - </object> - <int key="connectionID">842</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">window</string> - <reference key="source" ref="756173070"/> - <reference key="destination" ref="110292814"/> - </object> - <int key="connectionID">850</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">inputWindow</string> - <reference key="source" ref="756173070"/> - <reference key="destination" ref="979091056"/> - </object> - <int key="connectionID">953</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">inputView</string> - <reference key="source" ref="756173070"/> - <reference key="destination" ref="395788163"/> - </object> - <int key="connectionID">954</int> - </object> - </array> - <object class="IBMutableOrderedSet" key="objectRecords"> - <array key="orderedObjects"> - <object class="IBObjectRecord"> - <int key="objectID">0</int> - <array key="object" id="0"/> - <reference key="children" ref="1048"/> - <nil key="parent"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-2</int> - <reference key="object" ref="1021"/> - <reference key="parent" ref="0"/> - <string key="objectName">File's Owner</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-1</int> - <reference key="object" ref="1014"/> - <reference key="parent" ref="0"/> - <string key="objectName">First Responder</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">-3</int> - <reference key="object" ref="1050"/> - <reference key="parent" ref="0"/> - <string key="objectName">Application</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">29</int> - <reference key="object" ref="649796088"/> - <array class="NSMutableArray" key="children"> - <reference ref="713487014"/> - <reference ref="694149608"/> - <reference ref="391199113"/> - <reference ref="725688984"/> - </array> - <reference key="parent" ref="0"/> - <string key="objectName">Main Menu</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">19</int> - <reference key="object" ref="713487014"/> - <array class="NSMutableArray" key="children"> - <reference ref="835318025"/> - </array> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">56</int> - <reference key="object" ref="694149608"/> - <array class="NSMutableArray" key="children"> - <reference ref="110575045"/> - </array> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">103</int> - <reference key="object" ref="391199113"/> - <array class="NSMutableArray" key="children"/> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">57</int> - <reference key="object" ref="110575045"/> - <array class="NSMutableArray" key="children"> - <reference ref="238522557"/> - <reference ref="755159360"/> - <reference ref="908899353"/> - <reference ref="632727374"/> - <reference ref="646227648"/> - <reference ref="609285721"/> - <reference ref="481834944"/> - <reference ref="304266470"/> - <reference ref="1046388886"/> - <reference ref="1056857174"/> - <reference ref="342932134"/> - </array> - <reference key="parent" ref="694149608"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">58</int> - <reference key="object" ref="238522557"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">134</int> - <reference key="object" ref="755159360"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">150</int> - <reference key="object" ref="908899353"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">136</int> - <reference key="object" ref="632727374"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">144</int> - <reference key="object" ref="646227648"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">129</int> - <reference key="object" ref="609285721"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">143</int> - <reference key="object" ref="481834944"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">236</int> - <reference key="object" ref="304266470"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">131</int> - <reference key="object" ref="1046388886"/> - <array class="NSMutableArray" key="children"> - <reference ref="752062318"/> - </array> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">149</int> - <reference key="object" ref="1056857174"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">145</int> - <reference key="object" ref="342932134"/> - <reference key="parent" ref="110575045"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">130</int> - <reference key="object" ref="752062318"/> - <reference key="parent" ref="1046388886"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">24</int> - <reference key="object" ref="835318025"/> - <array class="NSMutableArray" key="children"> - <reference ref="299356726"/> - <reference ref="625202149"/> - <reference ref="575023229"/> - <reference ref="1011231497"/> - <reference ref="86356408"/> - </array> - <reference key="parent" ref="713487014"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">92</int> - <reference key="object" ref="299356726"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">5</int> - <reference key="object" ref="625202149"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">239</int> - <reference key="object" ref="575023229"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">23</int> - <reference key="object" ref="1011231497"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">711</int> - <reference key="object" ref="725688984"/> - <array class="NSMutableArray" key="children"> - <reference ref="701759256"/> - </array> - <reference key="parent" ref="649796088"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">712</int> - <reference key="object" ref="701759256"/> - <array class="NSMutableArray" key="children"> - <reference ref="521487141"/> - <reference ref="668936019"/> - <reference ref="383018193"/> - <reference ref="984623395"/> - <reference ref="656529582"/> - <reference ref="1032676691"/> - <reference ref="538907583"/> - </array> - <reference key="parent" ref="725688984"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">716</int> - <reference key="object" ref="984623395"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">717</int> - <reference key="object" ref="656529582"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">718</int> - <reference key="object" ref="1032676691"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">721</int> - <reference key="object" ref="538907583"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">824</int> - <reference key="object" ref="756173070"/> - <reference key="parent" ref="0"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">841</int> - <reference key="object" ref="86356408"/> - <reference key="parent" ref="835318025"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">828</int> - <reference key="object" ref="110292814"/> - <array class="NSMutableArray" key="children"> - <reference ref="305280978"/> - </array> - <reference key="parent" ref="0"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">829</int> - <reference key="object" ref="305280978"/> - <array class="NSMutableArray" key="children"/> - <reference key="parent" ref="110292814"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">713</int> - <reference key="object" ref="521487141"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">714</int> - <reference key="object" ref="668936019"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">715</int> - <reference key="object" ref="383018193"/> - <reference key="parent" ref="701759256"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">941</int> - <reference key="object" ref="979091056"/> - <array class="NSMutableArray" key="children"> - <reference ref="1044753903"/> - </array> - <reference key="parent" ref="0"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">942</int> - <reference key="object" ref="1044753903"/> - <array class="NSMutableArray" key="children"> - <reference ref="238626476"/> - </array> - <reference key="parent" ref="979091056"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">943</int> - <reference key="object" ref="238626476"/> - <array class="NSMutableArray" key="children"> - <reference ref="395788163"/> - <reference ref="1067057765"/> - <reference ref="339833963"/> - </array> - <reference key="parent" ref="1044753903"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">944</int> - <reference key="object" ref="395788163"/> - <reference key="parent" ref="238626476"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">945</int> - <reference key="object" ref="1067057765"/> - <reference key="parent" ref="238626476"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">946</int> - <reference key="object" ref="339833963"/> - <reference key="parent" ref="238626476"/> - </object> - </array> - </object> - <dictionary class="NSMutableDictionary" key="flattenedProperties"> - <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="103.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="711.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="712.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="713.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="714.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="715.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="716.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="717.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="718.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="721.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="824.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <boolean value="YES" key="828.IBNSWindowAutoPositionCentersHorizontal"/> - <boolean value="YES" key="828.IBNSWindowAutoPositionCentersVertical"/> - <string key="828.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <boolean value="YES" key="828.NSWindowTemplate.visibleAtLaunch"/> - <string key="829.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="841.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="941.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <boolean value="NO" key="941.NSWindowTemplate.visibleAtLaunch"/> - <string key="942.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="943.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="944.CustomClassName">LLNonInlineTextView</string> - <string key="944.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="945.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - <string key="946.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> - </dictionary> - <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> - <nil key="activeLocalization"/> - <dictionary class="NSMutableDictionary" key="localizations"/> - <nil key="sourceID"/> - <int key="maxID">954</int> - </object> - <object class="IBClassDescriber" key="IBDocument.Classes"> - <array class="NSMutableArray" key="referencedPartialClassDescriptions"> - <object class="IBPartialClassDescription"> - <string key="className">LLAppDelegate</string> - <string key="superclassName">NSObject</string> - <dictionary class="NSMutableDictionary" key="outlets"> - <string key="inputView">LLNonInlineTextView</string> - <string key="inputWindow">NSWindow</string> - <string key="window">LLNSWindow</string> - </dictionary> - <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> - <object class="IBToOneOutletInfo" key="inputView"> - <string key="name">inputView</string> - <string key="candidateClassName">LLNonInlineTextView</string> - </object> - <object class="IBToOneOutletInfo" key="inputWindow"> - <string key="name">inputWindow</string> - <string key="candidateClassName">NSWindow</string> - </object> - <object class="IBToOneOutletInfo" key="window"> - <string key="name">window</string> - <string key="candidateClassName">LLNSWindow</string> - </object> - </dictionary> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/LLAppDelegate.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">LLNSWindow</string> - <string key="superclassName">NSWindow</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/LLNSWindow.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">LLNonInlineTextView</string> - <string key="superclassName">NSTextView</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/LLNonInlineTextView.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">LLUserInputWindow</string> - <string key="superclassName">NSPanel</string> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/LLUserInputWindow.h</string> - </object> - </object> - <object class="IBPartialClassDescription"> - <string key="className">NSTextView</string> - <dictionary class="NSMutableDictionary" key="actions"> - <string key="orderFrontSharingServicePicker:">id</string> - <string key="toggleQuickLookPreviewPanel:">id</string> - </dictionary> - <dictionary class="NSMutableDictionary" key="actionInfosByName"> - <object class="IBActionInfo" key="orderFrontSharingServicePicker:"> - <string key="name">orderFrontSharingServicePicker:</string> - <string key="candidateClassName">id</string> - </object> - <object class="IBActionInfo" key="toggleQuickLookPreviewPanel:"> - <string key="name">toggleQuickLookPreviewPanel:</string> - <string key="candidateClassName">id</string> - </object> - </dictionary> - <object class="IBClassDescriptionSource" key="sourceIdentifier"> - <string key="majorKey">IBProjectSource</string> - <string key="minorKey">./Classes/NSTextView.h</string> - </object> - </object> - </array> - </object> - <int key="IBDocument.localizationMode">0</int> - <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> - <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> - <real value="1060" key="NS.object.0"/> - </object> - <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> - <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> - <integer value="4600" key="NS.object.0"/> - </object> - <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> - <int key="IBDocument.defaultPropertyAccessControl">3</int> - <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> - <string key="NSMenuCheckmark">{11, 11}</string> - <string key="NSMenuMixedState">{10, 3}</string> - </dictionary> - </data> -</archive> diff --git a/indra/newview/alaoengine.cpp b/indra/newview/alaoengine.cpp index e8e803fbc65fdda267cee2b93e734d20e2964112..30b4f7bbd861fee24bf4699784388e718cb33a9e 100644 --- a/indra/newview/alaoengine.cpp +++ b/indra/newview/alaoengine.cpp @@ -1891,12 +1891,12 @@ void ALAOEngine::processImport(bool aFromTimer) if (state->mCycleTime) { const std::string oldName = state->mName; - state->mName = llformat("%s%d",oldName + ":CT",state->mCycleTime); + state->mName = absl::StrFormat("%s%d",oldName + ":CT",state->mCycleTime); } if (state->mCycle) { const std::string oldName = state->mName; - state->mName = llformat("%s%s", oldName, ":CY"); + state->mName = absl::StrFormat("%s%s", oldName, ":CY"); } allComplete = false; LL_DEBUGS("AOEngine") << "state " << state->mName << " still has animations to link." << LL_ENDL; diff --git a/indra/newview/alpanelquicksettings.cpp b/indra/newview/alpanelquicksettings.cpp index 2dc4d0158199cd00e581316d3dc5cfc6ee5eb221..43b4b26fca98ab386206cd5a55afdd888fe58e16 100644 --- a/indra/newview/alpanelquicksettings.cpp +++ b/indra/newview/alpanelquicksettings.cpp @@ -43,7 +43,6 @@ static LLPanelInjector<ALPanelQuickSettings> t_quick_settings("quick_settings"); ALPanelQuickSettings::ALPanelQuickSettings() : LLPanel(), - mRegionSettingsCheckBox(nullptr), mHoverSlider(nullptr), mHoverSpinner(nullptr) { diff --git a/indra/newview/alpanelquicksettings.h b/indra/newview/alpanelquicksettings.h index fca55b8e3b73b590ae8a861b90ea603e30b5cbca..504fc5c28a1b42454b3c4d08872c7795d5b626ee 100644 --- a/indra/newview/alpanelquicksettings.h +++ b/indra/newview/alpanelquicksettings.h @@ -52,8 +52,6 @@ class ALPanelQuickSettings final : public LLPanel void onSimulatorFeaturesReceived(const LLUUID ®ion_id); void updateEditHoverEnabled(); - LLCheckBoxCtrl* mRegionSettingsCheckBox; - LLSlider* mHoverSlider; LLSpinCtrl* mHoverSpinner; diff --git a/indra/newview/altoolalign.h b/indra/newview/altoolalign.h index 1d5fc552d629cae40f743a79140cac2375fb56df..aece53e8c7fbbb36245d3f8685059a8afb59f091 100644 --- a/indra/newview/altoolalign.h +++ b/indra/newview/altoolalign.h @@ -17,7 +17,7 @@ class LLToolSelectRect; class ALToolAlign final : public LLTool, public LLSingleton<ALToolAlign> { - LLSINGLETON(ALToolAlign); + LLSINGLETON_C11(ALToolAlign); ~ALToolAlign() = default; public: diff --git a/indra/newview/llappdelegate-objc.mm b/indra/newview/llappdelegate-objc.mm index a2b7362608d38c822cf4d5fd28a31b338e5883a7..d88fed859dab2705da43e28a684bfbee4753c321 100644 --- a/indra/newview/llappdelegate-objc.mm +++ b/indra/newview/llappdelegate-objc.mm @@ -46,6 +46,7 @@ - (void)dealloc { + [currentInputLanguage release]; [super dealloc]; } @@ -151,7 +152,7 @@ // Once pumpMainLoop() reports that we're done, cancel frameTimer: // stop the repetitive calls. [frameTimer release]; - [[NSApplication sharedApplication] terminate:self]; + [[LLApplication sharedApplication] terminate:self]; } } @@ -196,15 +197,18 @@ - (bool) romanScript { - // How to add support for new languages with the input window: - // Simply append this array with the language code (ja for japanese, ko for korean, zh for chinese, etc.) - NSArray *nonRomanScript = [[NSArray alloc] initWithObjects:@"ja", @"ko", @"zh-Hant", @"zh-Hans", nil]; - if ([nonRomanScript containsObject:currentInputLanguage]) + @autoreleasepool { - return false; + // How to add support for new languages with the input window: + // Simply append this array with the language code (ja for japanese, ko for korean, zh for chinese, etc.) + NSArray *nonRomanScript = [[NSArray alloc] initWithObjects:@"ja", @"ko", @"zh-Hant", @"zh-Hans", nil]; + if ([nonRomanScript containsObject:currentInputLanguage]) + { + return false; + } + + return true; } - - return true; } #if defined(LL_BUGSPLAT) @@ -348,11 +352,14 @@ struct AttachmentInfo - (void)sendEvent:(NSEvent *)event { - [super sendEvent:event]; - if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask)) + if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand)) { [[self keyWindow] sendEvent:event]; } + else + { + [super sendEvent:event]; + } } @end diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index aea71a99b75ae14e47871ab43f3a8776a7752c7e..8b6e5ab4b24c0f6c5e845fb0df68d04e8177fa29 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -286,10 +286,6 @@ extern BOOL gRandomizeFramerate; extern BOOL gPeriodicSlowFrame; extern BOOL gDebugGL; -#if LL_DARWIN -extern BOOL gHiDPISupport; -#endif - //////////////////////////////////////////////////////////// // All from the last globals push... @@ -612,10 +608,6 @@ static void settings_to_globals() gDebugWindowProc = gSavedSettings.getBOOL("DebugWindowProc"); gShowObjectUpdates = gSavedSettings.getBOOL("ShowObjectUpdates"); LLWorldMapView::sMapScale = gSavedSettings.getF32("MapScale"); - -#if LL_DARWIN - gHiDPISupport = gSavedSettings.getBOOL("RenderHiDPI"); -#endif } static void settings_modify() @@ -1225,7 +1217,7 @@ bool LLAppViewer::init() LLSD item(LeapCommand); LeapCommand.append(item); } - for (const std::string& leap : llsd::inArray(LeapCommand)) + for (const LLSD& leap : llsd::inArray(LeapCommand)) { LL_INFOS("InitInfo") << "processing --leap \"" << leap << '"' << LL_ENDL; // We don't have any better description of this plugin than the @@ -1234,7 +1226,7 @@ bool LLAppViewer::init() // Suppress LLLeap::Error exception: trust LLLeap's own logging. We // don't consider any one --leap command mission-critical, so if one // fails, log it, shrug and carry on. - LLLeap::create("", leap, false); // exception=false + LLLeap::create("", leap.asString(), false); // exception=false } if (gSavedSettings.getBOOL("QAMode") && gSavedSettings.getS32("QAModeEventHostPort") > 0) @@ -3036,17 +3028,6 @@ bool LLAppViewer::initWindow() LLNotificationsUI::LLNotificationManager::getInstance(); - -#ifdef LL_DARWIN - //Satisfy both MAINT-3135 (OSX 10.6 and earlier) MAINT-3288 (OSX 10.7 and later) - LLOSInfo& os_info = LLOSInfo::instance(); - if (os_info.mMajorVer == 10 && os_info.mMinorVer < 7) - { - if ( os_info.mMinorVer == 6 && os_info.mBuild < 8 ) - gViewerWindow->getWindow()->setOldResize(true); - } -#endif - if (gSavedSettings.getBOOL("WindowMaximized")) { gViewerWindow->getWindow()->maximize(); @@ -3234,7 +3215,7 @@ LLSD LLAppViewer::getViewerInfo() const info["VFS_TIME"] = LLTrans::getString("AboutTime", substitution); #if LL_DARWIN - info["HIDPI"] = gHiDPISupport; + info["HIDPI"] = TRUE; #endif // Libraries @@ -3386,9 +3367,7 @@ std::string LLAppViewer::getViewerInfoString(bool default_string) const } support << "\n" << LLTrans::getString("AboutOGL", args, default_string); support << "\n\n" << LLTrans::getString("AboutSettings", args, default_string); -#if LL_DARWIN - support << "\n" << LLTrans::getString("AboutOSXHiDPI", args, default_string); -#endif + support << "\n\n" << LLTrans::getString("AboutLibs", args, default_string); if (info.has("COMPILER")) { diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm index 17301847e8bc08ff5e76d11f3db97fe8af20cd60..1d9e8feab5629e868aca300638e83b99fec6fa66 100644 --- a/indra/newview/llappviewermacosx-objc.mm +++ b/indra/newview/llappviewermacosx-objc.mm @@ -35,39 +35,35 @@ void launchApplication(const std::string* app_name, const std::vector<std::string>* args) { - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - if (app_name->empty()) return; - - NSMutableString* app_name_ns = [NSMutableString stringWithString:[[NSBundle mainBundle] resourcePath]]; //Path to resource dir - [app_name_ns appendFormat:@"/%@", [NSString stringWithCString:app_name->c_str() - encoding:[NSString defaultCStringEncoding]]]; - - NSMutableArray *args_ns = nil; - args_ns = [[NSMutableArray alloc] init]; - - for (int i=0; i < args->size(); ++i) - { - NSLog(@"Adding string %s", (*args)[i].c_str()); - [args_ns addObject: - [NSString stringWithCString:(*args)[i].c_str() - encoding:[NSString defaultCStringEncoding]]]; - } - - NSTask *task = [[NSTask alloc] init]; - NSBundle *bundle = [NSBundle bundleWithPath:[[NSWorkspace sharedWorkspace] fullPathForApplication:app_name_ns]]; - [task setLaunchPath:[bundle executablePath]]; - [task setArguments:args_ns]; - [task launch]; - -// NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; -// NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:app_name_ns]]; -// -// NSError *error = nil; -// [workspace launchApplicationAtURL:url options:0 configuration:[NSDictionary dictionaryWithObject:args_ns forKey:NSWorkspaceLaunchConfigurationArguments] error:&error]; - //TODO Handle error - - [pool release]; - return; + @autoreleasepool + { + if (app_name->empty()) return; + + NSMutableString* app_name_ns = [NSMutableString stringWithString:[[NSBundle mainBundle] resourcePath]]; //Path to resource dir + [app_name_ns appendFormat:@"/%@", [NSString stringWithCString:app_name->c_str() + encoding:[NSString defaultCStringEncoding]]]; + + NSMutableArray *args_ns = [[[NSMutableArray alloc] init] autorelease]; + + for (int i=0; i < args->size(); ++i) + { + NSLog(@"Adding string %s", (*args)[i].c_str()); + [args_ns addObject: + [NSString stringWithCString:(*args)[i].c_str() + encoding:[NSString defaultCStringEncoding]]]; + } + + NSTask *task = [[[NSTask alloc] init] autorelease]; + NSBundle *bundle = [NSBundle bundleWithPath:[[NSWorkspace sharedWorkspace] fullPathForApplication:app_name_ns]]; + [task setLaunchPath:[bundle executablePath]]; + [task setArguments:args_ns]; + [task launch]; + + // NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; + // NSURL *url = [NSURL fileURLWithPath:[workspace fullPathForApplication:app_name_ns]]; + // + // NSError *error = nil; + // [workspace launchApplicationAtURL:url options:0 configuration:[NSDictionary dictionaryWithObject:args_ns forKey:NSWorkspaceLaunchConfigurationArguments] error:&error]; + //TODO Handle error + } } diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp index b1a4385a913667c9efb3c7f7ff5849e24452666f..1fbc6b3a0dec1836714bca469c2d8c0c66324542 100644 --- a/indra/newview/llappviewermacosx.cpp +++ b/indra/newview/llappviewermacosx.cpp @@ -30,8 +30,6 @@ #error "Use only with Mac OS X" #endif -#define LL_CARBON_CRASH_HANDLER 1 - #include "llwindowmacosx.h" #include "llappviewermacosx-objc.h" @@ -49,9 +47,6 @@ #include "llerrorcontrol.h" #include "llvoavatarself.h" // for gAgentAvatarp->getFullname() #include <ApplicationServices/ApplicationServices.h> -#ifdef LL_CARBON_CRASH_HANDLER -#include <Carbon/Carbon.h> -#endif #include <vector> #include <exception> #include <fstream> diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp index 0d51d581dbbb507b906e4acad94316ad46295116..1005ca95295451ae9a5eae718d517762c495ae85 100644 --- a/indra/newview/llattachmentsmgr.cpp +++ b/indra/newview/llattachmentsmgr.cpp @@ -43,7 +43,6 @@ const F32 COF_LINK_BATCH_TIME = 5.0F; const F32 MAX_ATTACHMENT_REQUEST_LIFETIME = 30.0F; const F32 MIN_RETRY_REQUEST_TIME = 5.0F; -const F32 MAX_BAD_COF_TIME = 30.0F; // [SL:KB] - Patch: Appearance-SyncAttach | Checked: Catznip-3.7 class LLRegisterAttachmentCallback : public LLRequestServerAppearanceUpdateOnDestroy diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 8be6f953f0542515e525a41c916496c0dbf797b8..e6304a6076acf0e3eec159f34858a62ae7e57262 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -608,59 +608,59 @@ std::vector<std::string>* LLFilePicker::navOpenFilterProc(ELoadFilter filter) // switch(filter) { case FFLOAD_ALL: - allowedv->push_back("wav"); - allowedv->push_back("bvh"); - allowedv->push_back("anim"); - allowedv->push_back("dae"); - allowedv->push_back("raw"); - allowedv->push_back("lsl"); - allowedv->push_back("dic"); - allowedv->push_back("xcu"); - allowedv->push_back("gif"); + allowedv->emplace_back("wav"); + allowedv->emplace_back("bvh"); + allowedv->emplace_back("anim"); + allowedv->emplace_back("dae"); + allowedv->emplace_back("raw"); + allowedv->emplace_back("lsl"); + allowedv->emplace_back("dic"); + allowedv->emplace_back("xcu"); + allowedv->emplace_back("gif"); case FFLOAD_IMAGE: - allowedv->push_back("jpg"); - allowedv->push_back("jpeg"); - allowedv->push_back("bmp"); - allowedv->push_back("tga"); - allowedv->push_back("bmpf"); - allowedv->push_back("tpic"); - allowedv->push_back("png"); - allowedv->push_back("webp"); + allowedv->emplace_back("jpg"); + allowedv->emplace_back("jpeg"); + allowedv->emplace_back("bmp"); + allowedv->emplace_back("tga"); + allowedv->emplace_back("bmpf"); + allowedv->emplace_back("tpic"); + allowedv->emplace_back("png"); + allowedv->emplace_back("webp"); break; case FFLOAD_EXE: - allowedv->push_back("app"); - allowedv->push_back("exe"); + allowedv->emplace_back("app"); + allowedv->emplace_back("exe"); break; case FFLOAD_WAV: - allowedv->push_back("wav"); + allowedv->emplace_back("wav"); break; case FFLOAD_ANIM: - allowedv->push_back("bvh"); - allowedv->push_back("anim"); + allowedv->emplace_back("bvh"); + allowedv->emplace_back("anim"); break; case FFLOAD_COLLADA: - allowedv->push_back("dae"); + allowedv->emplace_back("dae"); break; #ifdef _CORY_TESTING case FFLOAD_GEOMETRY: - allowedv->push_back("slg"); + allowedv->emplace_back("slg"); break; #endif case FFLOAD_XML: - allowedv->push_back("xml"); + allowedv->emplace_back("xml"); break; case FFLOAD_RAW: - allowedv->push_back("raw"); + allowedv->emplace_back("raw"); break; case FFLOAD_SCRIPT: - allowedv->push_back("lsl"); + allowedv->emplace_back("lsl"); break; case FFLOAD_DICTIONARY: - allowedv->push_back("dic"); - allowedv->push_back("xcu"); + allowedv->emplace_back("dic"); + allowedv->emplace_back("xcu"); break; case FFLOAD_ZIP: - allowedv.push_back("zip"); + allowedv->emplace_back("zip"); break; case FFLOAD_DIRECTORY: break; @@ -681,14 +681,14 @@ bool LLFilePicker::doNavChooseDialog(ELoadFilter filter) gViewerWindow->getWindow()->beforeDialog(); - std::vector<std::string> *allowed_types=navOpenFilterProc(filter); + std::unique_ptr<std::vector<std::string>> allowed_types; + allowed_types.reset(navOpenFilterProc(filter)); - std::vector<std::string> *filev = doLoadDialog(allowed_types, - mPickOptions); + std::unique_ptr<std::vector<std::string>> filev; + filev.reset(doLoadDialog(allowed_types.get(), mPickOptions)); gViewerWindow->getWindow()->afterDialog(); - if (filev && filev->size() > 0) { mFiles.insert(mFiles.end(), filev->begin(), filev->end()); @@ -702,93 +702,63 @@ bool LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& filena { // Setup the type, creator, and extension - std::string extension, type, creator; + std::string extension; switch (filter) { case FFSAVE_WAV: - type = "WAVE"; - creator = "TVOD"; extension = "wav"; break; case FFSAVE_TGA: - type = "TPIC"; - creator = "prvw"; extension = "tga"; break; case FFSAVE_TGAPNGWEBP: - type = "PNG"; - creator = "prvw"; extension = "png,tga,webp"; break; case FFSAVE_BMP: - type = "BMPf"; - creator = "prvw"; extension = "bmp"; break; case FFSAVE_JPEG: - type = "JPEG"; - creator = "prvw"; extension = "jpeg"; break; case FFSAVE_PNG: - type = "PNG "; - creator = "prvw"; extension = "png"; break; case FFSAVE_WEBP: - type = "WebP"; - creator = "prvw"; extension = "webp"; break; case FFSAVE_AVI: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = "mov"; break; case FFSAVE_ANIM: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = "xaf"; break; #ifdef _CORY_TESTING case FFSAVE_GEOMETRY: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = "slg"; break; #endif case FFSAVE_XML: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = "xml"; break; case FFSAVE_RAW: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = "raw"; break; case FFSAVE_J2C: - type = "\?\?\?\?"; - creator = "prvw"; extension = "j2c"; break; case FFSAVE_SCRIPT: - type = "LSL "; - creator = "\?\?\?\?"; extension = "lsl"; break; case FFSAVE_ALL: default: - type = "\?\?\?\?"; - creator = "\?\?\?\?"; extension = ""; break; } @@ -805,11 +775,9 @@ bool LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& filena gViewerWindow->getWindow()->beforeDialog(); // Run the dialog - std::string* filev = doSaveDialog(&namestring, - &type, - &creator, + std::unique_ptr<std::string> filev(doSaveDialog(&namestring, &extension, - mPickOptions); + mPickOptions)); gViewerWindow->getWindow()->afterDialog(); diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h index 632ca014d16cf879ac834b00aba2b1ad79d6d348..be66a448b9d4bc2ed26e63fdc58681b3d05dfc87 100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h @@ -36,7 +36,6 @@ #include "stdtypes.h" #if LL_DARWIN -#include <Carbon/Carbon.h> // AssertMacros.h does bad things. #undef verify @@ -55,19 +54,12 @@ #endif #if LL_GTK -#if LL_GNUC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#endif extern "C" { // mostly for Linux, possible on others #include <gtk/gtk.h> #include <gdk/gdk.h> #include <gdk/gdkx.h> } -#if LL_GNUC -#pragma GCC diagnostic pop -#endif // LL_GNUC #endif // LL_GTK class LLFilePicker diff --git a/indra/newview/llfilepicker_mac.h b/indra/newview/llfilepicker_mac.h index e0b7e2e8ce01105c6004824087d46ffc944523d8..18e7f5b8f0e020fb66ae0551e443ae142ba4f571 100644 --- a/indra/newview/llfilepicker_mac.h +++ b/indra/newview/llfilepicker_mac.h @@ -42,8 +42,6 @@ std::vector<std::string>* doLoadDialog(const std::vector<std::string>* allowed_types, unsigned int flags); std::string* doSaveDialog(const std::string* file, - const std::string* type, - const std::string* creator, const std::string* extension, unsigned int flags); enum { diff --git a/indra/newview/llfilepicker_mac.mm b/indra/newview/llfilepicker_mac.mm index 1438e4dc0a993c69d23bae424a2b0363a0452bb2..dd0d7386f44528bdf83a84dcb6d198c378e1854c 100644 --- a/indra/newview/llfilepicker_mac.mm +++ b/indra/newview/llfilepicker_mac.mm @@ -32,102 +32,104 @@ std::vector<std::string>* doLoadDialog(const std::vector<std::string>* allowed_types, unsigned int flags) { - int i, result; - - //Aura TODO: We could init a small window and release it at the end of this routine - //for a modeless interface. - - NSOpenPanel *panel = [NSOpenPanel openPanel]; - //NSString *fileName = nil; - NSMutableArray *fileTypes = nil; - - - if ( allowed_types && !allowed_types->empty()) + @autoreleasepool { - fileTypes = [[NSMutableArray alloc] init]; + int i, result; - for (i=0;i<allowed_types->size();++i) + //Aura TODO: We could init a small window and release it at the end of this routine + //for a modeless interface. + + NSOpenPanel *panel = [NSOpenPanel openPanel]; + //NSString *fileName = nil; + NSMutableArray *fileTypes = nil; + + + if (allowed_types && !allowed_types->empty()) { - [fileTypes addObject: - [NSString stringWithCString:(*allowed_types)[i].c_str() - encoding:[NSString defaultCStringEncoding]]]; + fileTypes = [[[NSMutableArray alloc] init] autorelease]; + + for (i=0;i<allowed_types->size();++i) + { + [fileTypes addObject: + [NSString stringWithCString:(*allowed_types)[i].c_str() + encoding:[NSString defaultCStringEncoding]]]; + } } - } + + //[panel setMessage:@"Import one or more files or directories."]; + [panel setAllowsMultipleSelection: ( (flags & F_MULTIPLE)?true:false ) ]; + [panel setCanChooseDirectories: ( (flags & F_DIRECTORY)?true:false ) ]; + [panel setCanCreateDirectories: true]; + [panel setResolvesAliases: true]; + [panel setCanChooseFiles: ( (flags & F_FILE)?true:false )]; + [panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ]; - //[panel setMessage:@"Import one or more files or directories."]; - [panel setAllowsMultipleSelection: ( (flags & F_MULTIPLE)?true:false ) ]; - [panel setCanChooseDirectories: ( (flags & F_DIRECTORY)?true:false ) ]; - [panel setCanCreateDirectories: true]; - [panel setResolvesAliases: true]; - [panel setCanChooseFiles: ( (flags & F_FILE)?true:false )]; - [panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ]; - - std::vector<std::string>* outfiles = NULL; - - if (fileTypes) - { - [panel setAllowedFileTypes:fileTypes]; - result = [panel runModal]; - } - else - { - // I suggest it's better to open the last path and let this default to home dir as necessary - // for consistency with other OS X apps - // - //[panel setDirectoryURL: fileURLWithPath(NSHomeDirectory()) ]; - result = [panel runModal]; - } - - if (result == NSOKButton) - { - NSArray *filesToOpen = [panel URLs]; - int i, count = [filesToOpen count]; + std::vector<std::string>* outfiles = NULL; - if (count > 0) + if (fileTypes) { - outfiles = new std::vector<std::string>; + [panel setAllowedFileTypes:fileTypes]; + result = [panel runModal]; + } + else + { + // I suggest it's better to open the last path and let this default to home dir as necessary + // for consistency with other OS X apps + // + //[panel setDirectoryURL: fileURLWithPath(NSHomeDirectory()) ]; + result = [panel runModal]; } - for (i=0; i<count; i++) { - NSString *aFile = [[filesToOpen objectAtIndex:i] path]; - std::string *afilestr = new std::string([aFile UTF8String]); - outfiles->push_back(*afilestr); + if (result == NSModalResponseOK) + { + NSArray *filesToOpen = [panel URLs]; + int i, count = [filesToOpen count]; + + if (count > 0) + { + outfiles = new std::vector<std::string>; + } + + for (i=0; i<count; i++) { + NSString *aFile = [[filesToOpen objectAtIndex:i] path]; + outfiles->emplace_back([aFile UTF8String]); + } } - } - return outfiles; + return outfiles; + }; } std::string* doSaveDialog(const std::string* file, - const std::string* type, - const std::string* creator, const std::string* extension, unsigned int flags) { - NSSavePanel *panel = [NSSavePanel savePanel]; - - NSString *extensionns = [NSString stringWithCString:extension->c_str() encoding:[NSString defaultCStringEncoding]]; - NSArray *fileType = [extensionns componentsSeparatedByString:@","]; - - //[panel setMessage:@"Save Image File"]; - [panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ]; - [panel setCanSelectHiddenExtension:true]; - [panel setAllowedFileTypes:fileType]; - NSString *fileName = [NSString stringWithCString:file->c_str() encoding:[NSString defaultCStringEncoding]]; - - std::string *outfile = NULL; - NSURL* url = [NSURL fileURLWithPath:fileName]; - [panel setNameFieldStringValue: fileName]; - [panel setDirectoryURL: url]; - if([panel runModal] == - NSFileHandlingPanelOKButton) + @autoreleasepool { - NSURL* url = [panel URL]; - NSString* p = [url path]; - outfile = new std::string( [p UTF8String] ); - // write the file - } - return outfile; + NSSavePanel *panel = [NSSavePanel savePanel]; + + NSString *extensionns = [NSString stringWithCString:extension->c_str() encoding:[NSString defaultCStringEncoding]]; + NSArray *fileType = [extensionns componentsSeparatedByString:@","]; + + //[panel setMessage:@"Save Image File"]; + [panel setTreatsFilePackagesAsDirectories: ( flags & F_NAV_SUPPORT ) ]; + [panel setCanSelectHiddenExtension:true]; + [panel setAllowedFileTypes:fileType]; + NSString *fileName = [NSString stringWithCString:file->c_str() encoding:[NSString defaultCStringEncoding]]; + + std::string *outfile = NULL; + NSURL* url = [NSURL fileURLWithPath:fileName]; + [panel setNameFieldStringValue: fileName]; + [panel setDirectoryURL: url]; + if([panel runModal] == NSModalResponseOK) + { + NSURL* url = [panel URL]; + NSString* p = [url path]; + outfile = new std::string( [p UTF8String] ); + // write the file + } + return outfile; + } } #endif diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index de32af8016b60eadea1c5a9fa27e3f9d5a5e008d..0cd41d509b27ffd5e9ac71851f1f2427b6556565 100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp @@ -224,7 +224,6 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) S32 price_per_meter; S32 redirect_grid_x; S32 redirect_grid_y; - LLUUID cache_id; LLHost host = msg->getSender(); diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp index 57a05b42fcfaada163a224376627b2c7d65393d2..b7c1700526f03a01b50a9b613ea123b3d5ca98f3 100644 --- a/indra/newview/llfloaterinspect.cpp +++ b/indra/newview/llfloaterinspect.cpp @@ -279,7 +279,6 @@ LLUUID LLFloaterInspect::getSelectedUUID() void LLFloaterInspect::refresh() { - LLUUID creator_id; std::string creator_name; S32 pos = mObjectList->getScrollPos(); getChildView("button owner")->setEnabled(false); diff --git a/indra/newview/llfloateroutfitphotopreview.cpp b/indra/newview/llfloateroutfitphotopreview.cpp index 6c39db730c33c40b0f86a3d0a2661d6a9c24368f..ade258aef74ee07ffbc8a95c8cfe811ee40139f5 100644 --- a/indra/newview/llfloateroutfitphotopreview.cpp +++ b/indra/newview/llfloateroutfitphotopreview.cpp @@ -234,7 +234,6 @@ void LLFloaterOutfitPhotoPreview::updateImageID() if(item) { mImageID = item->getAssetUUID(); - LLPermissions perm(item->getPermissions()); } else { diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 20c78abe05a8b70de842d236cf3ebf4eda363a46..ac2fc67e7bff9344fac78663adcc09ba9da58a36 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -2463,7 +2463,6 @@ bool LLDispatchSetEstateExperience::operator()( ++it; // U32 estate_id = strtol((*it).c_str(), NULL, 10); ++it; // U32 send_to_agent_only = strtoul((*(++it)).c_str(), NULL, 10); - LLUUID id; S32 num_blocked = strtol((*(it++)).c_str(), NULL, 10); S32 num_trusted = strtol((*(it++)).c_str(), NULL, 10); S32 num_allowed = strtol((*(it++)).c_str(), NULL, 10); diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 6872b2f1f703032def28d8f4add6e30f2ef5569b..0396841521627d417547bff16b2bc9e75f09673f 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -72,7 +72,7 @@ #include <map> #if LL_DARWIN -#include <CoreFoundation/CFURL.h> +#include <CoreFoundation/CoreFoundation.h> #endif // Static initialization diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index c3c801f45617c659a4f00b2bd215088524d71995..69a17556a13105c1c104bb1b8f436ba1c019af43 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -3110,7 +3110,7 @@ void LLInventoryModel::removeInventoryItem(LLUUID agent_id, LLMessageSystem* msg void LLInventoryModel::processRemoveInventoryItem(LLMessageSystem* msg, void**) { LL_DEBUGS(LOG_INV) << "LLInventoryModel::processRemoveInventoryItem()" << LL_ENDL; - LLUUID agent_id, item_id; + LLUUID agent_id; msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); if(agent_id != gAgent.getID()) { @@ -3127,7 +3127,7 @@ void LLInventoryModel::processUpdateInventoryFolder(LLMessageSystem* msg, void**) { LL_DEBUGS(LOG_INV) << "LLInventoryModel::processUpdateInventoryFolder()" << LL_ENDL; - LLUUID agent_id, folder_id, parent_id; + LLUUID agent_id; //char name[DB_INV_ITEM_NAME_BUF_SIZE]; msg->getUUIDFast(_PREHASH_FolderData, _PREHASH_AgentID, agent_id); if(agent_id != gAgent.getID()) diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 844b0053aef58d0ff227d9e26df4faa6872d21a5..1fb7cd80d40100f593cc1348e24870ab010055d7 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -1008,10 +1008,6 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) case MEDIA_EVENT_NAVIGATE_COMPLETE: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_COMPLETE, result string is: " << self->getNavigateResultString() << LL_ENDL; - if(mHidingInitialLoad) - { - mHidingInitialLoad = false; - } }; break; diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 2cb98b2fada292293450492510b41ff0b7721e5e..9eff0049e6455041fea7fb236ae7ad451b244f45 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -198,7 +198,6 @@ class LLMediaCtrl final : mStretchToFill, mMaintainAspectRatio, mHideLoading, - mHidingInitialLoad, mClearCache, mHoverTextChanged, mDecoupleTextureSize, diff --git a/indra/newview/lloutfitobserver.cpp b/indra/newview/lloutfitobserver.cpp index 5bb69367aac71fd63046a78a3d511c9f8af8f4e1..07bbb9e31e620dd5ba17e58be91374920802a2ee 100644 --- a/indra/newview/lloutfitobserver.cpp +++ b/indra/newview/lloutfitobserver.cpp @@ -32,7 +32,8 @@ #include "llviewerinventory.h" LLOutfitObserver::LLOutfitObserver() : - mCOFLastVersion(LLViewerInventoryCategory::VERSION_UNKNOWN) + mCOFLastVersion(LLViewerInventoryCategory::VERSION_UNKNOWN), + mLastOutfitDirtiness(false) { mItemNameHash.finalize(); gInventory.addObserver(this); diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 375daf60f88ec6f55f661e2a571d1fec0aa84caf..0884fdbc67037ac55ebe824c546e059210b083d0 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -459,8 +459,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) if (is_member) { - LLUUID current_title_role; - mComboActiveTitle->clear(); mComboActiveTitle->removeall(); bool has_selected_title = false; diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 19458f51759c57bc9743d2aefe31d65af85d59a4..615c85586ffe88226d8ce5bcdb5a478d08fb9569 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -1077,9 +1077,6 @@ void LLPanelObject::getState( ) // sculpt texture if (selected_item == MI_SCULPT) { - - - LLUUID id; LLSculptParams *sculpt_params = (LLSculptParams *)objectp->getParameterEntry(LLNetworkData::PARAMS_SCULPT); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 71c3ea938efee3b1179b75eeda04c822aab69b07..1a327a3778acc0e802abf027dffe1f8704717a19 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5352,7 +5352,6 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data LLUUID group_id; LLUUID last_owner_id; U64 creation_date; - LLUUID extra_id; U32 base_mask, owner_mask, group_mask, everyone_mask, next_owner_mask; LLSaleInfo sale_info; LLCategory category; @@ -5512,10 +5511,8 @@ void LLSelectMgr::processObjectPropertiesFamily(LLMessageSystem* msg, void** use LLUUID id; U32 request_flags; - LLUUID creator_id; LLUUID owner_id; LLUUID group_id; - LLUUID extra_id; U32 base_mask, owner_mask, group_mask, everyone_mask, next_owner_mask; LLSaleInfo sale_info; LLCategory category; diff --git a/indra/newview/llsettingsvo.h b/indra/newview/llsettingsvo.h index e0f3153e27f73d0e1e656b63e87e58d0cee53c02..9a067d9d41ebcb64593ce2512a3d7896bc6d9065 100644 --- a/indra/newview/llsettingsvo.h +++ b/indra/newview/llsettingsvo.h @@ -43,7 +43,7 @@ class LLInventoryItem; class LLGLSLShader; //========================================================================= -class LLSettingsVOBase final : public LLSettingsBase +class LLSettingsVOBase : public LLSettingsBase { public: typedef std::function<void(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat extstat)> asset_download_fn; diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 33517f3c3ba8dd13859e7fb5387812f751522d28..e1bd1892e17ff8ec63a294379537f9dc7d0c890b 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -458,8 +458,7 @@ void LLSpeakerMgr::update(BOOL resort_ok) S32 recent_speaker_count = 0; S32 sort_index = 0; - speaker_list_t::iterator sorted_speaker_it; - for(LLPointer<LLSpeaker> speakerp : mSpeakersSorted) + for(LLPointer<LLSpeaker>& speakerp : mSpeakersSorted) { // color code recent speakers who are not currently speaking if (speakerp->mStatus == LLSpeaker::STATUS_HAS_SPOKEN) diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index d922610d4016718e820ff0b43e17f534edf6b1d8..fc30d43d484867509781fd58a3ac1c2b41cbfdc0 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -64,7 +64,7 @@ class LLTextureFetch : public LLWorkerThread class TFRequest; // Threads: Tmain - /*virtual*/ S32 update(F32 max_time_ms); + /*virtual*/ S32 update(F32 max_time_ms) override; // called in the main thread after the TextureCacheThread shuts down. // Threads: Tmain @@ -247,20 +247,20 @@ class LLTextureFetch : public LLWorkerThread // Overrides from the LLThread tree // Locks: Ct - bool runCondition(); + bool runCondition() override; private: // Threads: Tmain void sendRequestListToSimulators(); // Threads: Ttf - /*virtual*/ void startThread(void); + /*virtual*/ void startThread(void) override; // Threads: Ttf - /*virtual*/ void endThread(void); + /*virtual*/ void endThread(void) override; // Threads: Ttf - /*virtual*/ void threadedUpdate(void); + /*virtual*/ void threadedUpdate(void) override; // Threads: Ttf void commonUpdate(); diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 45210a916816d08a7d7fbe3355704809ebc9d975..f65ae6d63785866230bcbf6cf774183a8423d844 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -2176,7 +2176,6 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture( if( drop ) { - LLUUID item_id; if(mSource == SOURCE_LIBRARY) { // create item based on that one, and put it on if that diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 60f5c87f497b3b392bfbed9e6f8e3c19b7d84759..8429198777bb8da7f851697f8e8045b5dcf41710 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -1880,7 +1880,6 @@ static void handle_click_action_open_media(LLPointer<LLViewerObject> objectp) } std::string media_url = std::string ( parcel->getMediaURL () ); - std::string media_type = std::string ( parcel->getMediaType() ); LLStringUtil::trim(media_url); LLWeb::loadURL(media_url); @@ -1897,10 +1896,6 @@ static ECursorType cursor_from_parcel_media(U8 click_action) LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (!parcel) return open_cursor; - std::string media_url = std::string ( parcel->getMediaURL () ); - std::string media_type = std::string ( parcel->getMediaType() ); - LLStringUtil::trim(media_url); - open_cursor = UI_CURSOR_TOOLMEDIAOPEN; LLViewerMediaImpl::EMediaStatus status = LLViewerParcelMedia::getInstance()->getStatus(); diff --git a/indra/newview/llurl.cpp b/indra/newview/llurl.cpp index 64fc0815150d1aa79f947d565d1422986fe95a6b..587beeb1374a63ac2bc3c91c8a2a51dc77e21080 100644 --- a/indra/newview/llurl.cpp +++ b/indra/newview/llurl.cpp @@ -28,7 +28,7 @@ #include "llurl.h" #include "llerror.h" -#if LL_GNUC +#if LL_GNUC && GCC_VERSION >= 80000 #pragma GCC diagnostic ignored "-Wstringop-truncation" #endif diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index c971650ef4ef4f079c2e9f5825beaaaa872fc6e1..8c56da204c1533a4ea39cced6be2b680db4721a0 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1580,7 +1580,7 @@ void render_ui_2d() last_rect.mTop = LLRect::tCoordType(last_rect.mTop / LLUI::getScaleFactor().mV[1]); last_rect.mBottom = LLRect::tCoordType(last_rect.mBottom / LLUI::getScaleFactor().mV[1]); - LLRect clip_rect(last_rect); + //LLRect clip_rect(last_rect); glClear(GL_COLOR_BUFFER_BIT); diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 020a3c9494987409632357f173e2ecf9bf081660..4bbcc9674178bb6c3fc117752c8bb3e957d0e438 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -81,7 +81,6 @@ void no_op_llsd_func(const LLSD&) {} void no_op() {} static const char * const LOG_INV("Inventory"); -static const char * const LOG_LOCAL("InventoryLocalize"); static const char * const LOG_NOTECARD("copy_inventory_from_notecard"); static const std::string INV_OWNER_ID("owner_id"); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 682edfd296bfc058a8138545ca47b6b9f6faf83c..2f53a32c60793e9d01911b7244af615627147661 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2406,7 +2406,6 @@ bool callingcard_offer_callback(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); LLUUID fid; - LLUUID from_id; LLMessageSystem* msg = gMessageSystem; switch(option) { diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 0ce577f6bc36ce3002ca8a7d516a76cfe4201ae8..c3d8fc3002c21ab4902ce5671eff30af2c5b7766 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1091,15 +1091,6 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK BOOL LLViewerWindow::handleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask) { - mAllowMouseDragging = FALSE; - if (!mMouseDownTimer.getStarted()) - { - mMouseDownTimer.start(); - } - else - { - mMouseDownTimer.reset(); - } BOOL down = TRUE; return handleAnyMouseClick(window,pos,mask,LLMouseHandler::CLICK_LEFT,down); } @@ -1119,10 +1110,6 @@ BOOL LLViewerWindow::handleDoubleClick(LLWindow *window, LLCoordGL pos, MASK ma BOOL LLViewerWindow::handleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) { - if (mMouseDownTimer.getStarted()) - { - mMouseDownTimer.stop(); - } BOOL down = FALSE; return handleAnyMouseClick(window,pos,mask,LLMouseHandler::CLICK_LEFT,down); } @@ -1387,22 +1374,6 @@ void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask } } -void LLViewerWindow::handleMouseDragged(LLWindow *window, LLCoordGL pos, MASK mask) -{ - if (mMouseDownTimer.getStarted()) - { - if (mMouseDownTimer.getElapsedTimeF32() > 0.1) - { - mAllowMouseDragging = TRUE; - mMouseDownTimer.stop(); - } - } - if(mAllowMouseDragging || !LLToolCamera::getInstance()->hasMouseCapture()) - { - handleMouseMove(window, pos, mask); - } -} - void LLViewerWindow::handleMouseLeave(LLWindow *window) { // Note: we won't get this if we have captured the mouse. @@ -1701,13 +1672,6 @@ BOOL LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 } } -BOOL LLViewerWindow::handleWindowDidChangeScreen(LLWindow *window) -{ - LLCoordScreen window_rect; - mWindow->getSize(&window_rect); - reshape(window_rect.mX, window_rect.mY); - return TRUE; -} void LLViewerWindow::handlePingWatchdog(LLWindow *window, const char * msg) { @@ -1761,8 +1725,6 @@ LLViewerWindow::LLViewerWindow(const Params& p) mMiddleMouseDown(FALSE), mRightMouseDown(FALSE), mMouseInWindow( FALSE ), - mAllowMouseDragging(TRUE), - mMouseDownTimer(), mLastMask( MASK_NONE ), mToolStored( NULL ), mHideCursorPermanent( FALSE ), diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index ab65b2a161854fd0f3498cbd9e6c763573ea3838..6e8614e51680d74c6f640f8e69bddf5849632671 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -198,7 +198,6 @@ class LLViewerWindow final : public LLWindowCallbacks BOOL handleOtherMouse(LLWindow *window, LLCoordGL pos, MASK mask, S32 button, bool down); /*virtual*/ LLWindowCallbacks::DragNDropResult handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data); void handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask); - void handleMouseDragged(LLWindow *window, LLCoordGL pos, MASK mask); /*virtual*/ void handleMouseLeave(LLWindow *window); /*virtual*/ void handleResize(LLWindow *window, S32 x, S32 y); /*virtual*/ void handleFocus(LLWindow *window); @@ -216,7 +215,6 @@ class LLViewerWindow final : public LLWindowCallbacks /*virtual*/ BOOL handleTimerEvent(LLWindow *window); /*virtual*/ BOOL handleDeviceChange(LLWindow *window); /*virtual*/ BOOL handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); - /*virtual*/ BOOL handleWindowDidChangeScreen(LLWindow *window); /*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg); /*virtual*/ void handlePauseWatchdog(LLWindow *window); @@ -478,8 +476,6 @@ class LLViewerWindow final : public LLWindowCallbacks BOOL mMouseInWindow; // True if the mouse is over our window or if we have captured the mouse. BOOL mFocusCycleMode; - BOOL mAllowMouseDragging; - LLFrameTimer mMouseDownTimer; typedef std::set<LLHandle<LLView> > view_handle_set_t; view_handle_set_t mMouseHoverViews; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 1c0c12e668b4665afac7326962fd784186e1f524..313461e7946a9e78d8f783c6dd940d283ff6447c 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1,4 +1,4 @@ -/** +/** * @File llvoavatar.cpp * @brief Implementation of LLVOAvatar class which is a derivation of LLViewerObject * @@ -1969,7 +1969,6 @@ void LLVOAvatar::resetVisualParams() { // Skeletal params { - LLAvatarXmlInfo::skeletal_distortion_info_list_t::iterator iter; for (LLViewerVisualParamInfo* vparam : sAvatarXmlInfo->mSkeletalDistortionInfoList) { LLPolySkeletalDistortionInfo *info = static_cast<LLPolySkeletalDistortionInfo*>(vparam); @@ -9171,9 +9170,11 @@ void LLVOAvatar::applyParsedAppearanceMessage(LLAppearanceMessageContents& conte } } } + +#ifdef SHOW_DEBUG const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE) + getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TRANSMIT_NOT_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT -#if SHOW_DEBUG + if (num_params != expected_tweakable_count) { LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. object: " << getID() << LL_ENDL; diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 2b2e40002dbe3ab4c27a5a90e022770b9658573c..22037f6e7b0d4d28c9d304381ca446a27032189e 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -36,8 +36,8 @@ #include "llbufferstream.h" #include "llfile.h" #include "llmenugl.h" -#ifdef LL_USESYSTEMLIBS -# include "expat.h" +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) +# include <expat.h> #else # include "expat/expat.h" #endif diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 09fc3c5171d0ca5699f0a60050620c53f680c25d..8d83c3d3fdd3a10ee3faec504a28fffa90c92d02 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -41,8 +41,8 @@ class LLVivoxProtocolParser; #include "llcoros.h" #include <queue> -#ifdef LL_USESYSTEMLIBS -# include "expat.h" +#if LL_DARWIN || defined(LL_USESYSTEMLIBS) +# include <expat.h> #else # include "expat/expat.h" #endif diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8f20d1b12bbdedd2ba2b6a9d9addb36adfc85777..be718cdfcf3643a2476cd1fefac76dd21dee7c39 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -6291,7 +6291,7 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace U32 geometryBytes = 0; U32 buffer_usage = group->mBufferUsage; -#if LL_DARWIN +#if 0 // HACK from Leslie: // Disable VBO usage for alpha on Mac OS X because it kills the framerate // due to implicit calls to glTexSubImage that are beyond our control. diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp index 6a67eaedc3076ca299d2c5f8d80c298a65b3bde9..9931cbf66ca76221448301135f793ad4df1cd9aa 100644 --- a/indra/newview/llwatchdog.cpp +++ b/indra/newview/llwatchdog.cpp @@ -242,8 +242,8 @@ void LLWatchdog::run() { SuspectsRegistry::iterator result = std::find_if(mSuspects.begin(), - mSuspects.end(), - std::not1(std::mem_fn(&LLWatchdogEntry::isAlive)) + mSuspects.end(), + [](LLWatchdogEntry* entry){ return !entry->isAlive(); } ); if(result != mSuspects.end()) { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 7d3668389a8c24f0ef1830dd9e668f57c12c1b42..07ff7929bd0c76a040e36cd4496f96475c7857da 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1408,11 +1408,6 @@ void LLPipeline::createLUTBuffers() } U32 pix_format = GL_R16F; -#if LL_DARWIN - // Need to work around limited precision with 10.6.8 and older drivers - // - pix_format = GL_R32F; -#endif LLImageGL::generateTextures(1, &mLightFunc); gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc); LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, pix_format, lightResX, lightResY, GL_RED, GL_FLOAT, ls, false); diff --git a/indra/newview/rlvmodifiers.h b/indra/newview/rlvmodifiers.h index b26c1db0ebdc8aa240c4819f3d36640f24d41e18..c690fb328b067b5a1c877bcdf223424521f1c7a7 100644 --- a/indra/newview/rlvmodifiers.h +++ b/indra/newview/rlvmodifiers.h @@ -92,7 +92,7 @@ struct RlvBehaviourModifierTween class RlvBehaviourModifierAnimator final : public LLSingleton<RlvBehaviourModifierAnimator> { - LLSINGLETON_EMPTY_CTOR(RlvBehaviourModifierAnimator); + LLSINGLETON_EMPTY_CTOR_C11(RlvBehaviourModifierAnimator); public: ~RlvBehaviourModifierAnimator() override; diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml index 0e3cbfd2d23c83dd749632d68ddcc51ac2448003..5c22b84bb2ac473f76553fc507341bf0cae628bd 100644 --- a/indra/newview/skins/default/xui/da/language_settings.xml +++ b/indra/newview/skins/default/xui/da/language_settings.xml @@ -5,7 +5,8 @@ <!-- Locale Information --> <string name="MicrosoftLocale">danish</string> <string name="MacLocale">da_DK.UTF-8</string> - <string name="DarwinLocale">da_DK.UTF-8</string> + <string name="macOSLocale">da_DK.UTF-8</string> + <string name="DarwinLocale">da_DK.UTF-8</string> <string name="LinuxLocale">da_DK.UTF-8</string> <!-- diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml index f9346eef7dae0d132ab19f1343d7af9e388c3c65..da3c3f92aafa888f16465b378078b1aba8685cae 100644 --- a/indra/newview/skins/default/xui/de/language_settings.xml +++ b/indra/newview/skins/default/xui/de/language_settings.xml @@ -5,6 +5,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">german</string> <string name="MacLocale">de_DE.UTF-8</string> + <string name="macOSLocale">de_DE.UTF-8</string> <string name="DarwinLocale">de_DE.UTF-8</string> <string name="LinuxLocale">de_DE.UTF-8</string> diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml index d418fc38e3ace08ffb601f44d6ed96c94caafc3a..cf3c5ccd45c861e7803b8c4e11de0b8a275055d0 100644 --- a/indra/newview/skins/default/xui/en/language_settings.xml +++ b/indra/newview/skins/default/xui/en/language_settings.xml @@ -5,6 +5,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">english</string> <string name="MacLocale">C</string> + <string name="macOSLocale">C</string> <string name="DarwinLocale">C</string> <string name="LinuxLocale">C</string> diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml index 997293a741cd37ce9cd63ed5a11c060b35e3ddd3..1d28736d30f6a4c33c0196f2caf9df09b77a9429 100644 --- a/indra/newview/skins/default/xui/es/language_settings.xml +++ b/indra/newview/skins/default/xui/es/language_settings.xml @@ -5,6 +5,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">spanish</string> <string name="MacLocale">es_ES.UTF-8</string> + <string name="macOSLocale">es_ES.UTF-8</string> <string name="DarwinLocale">es_ES.UTF-8</string> <string name="LinuxLocale">es_ES.UTF-8</string> diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml index fdac9d65a75b42996d0a86d6262e34eff55d2cce..88ebb132704f3028c43cd1f48b5679f5afce84e7 100644 --- a/indra/newview/skins/default/xui/fr/language_settings.xml +++ b/indra/newview/skins/default/xui/fr/language_settings.xml @@ -5,7 +5,8 @@ <!-- Locale Information --> <string name="MicrosoftLocale">french</string> <string name="MacLocale">fr_FR.UTF-8</string> - <string name="DarwinLocale">fr_FR.UTF-8</string> + <string name="macOSLocale">fr_FR.UTF-8</string> + <string name="DarwinLocale">fr_FR.UTF-8</string> <string name="LinuxLocale">fr_FR.UTF-8</string> <!-- diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml index 5f448fa82803d4dc436dc93a2302e76050ac6cbe..c69479e06c90e6fb48da3f44c8145718dd066b6a 100644 --- a/indra/newview/skins/default/xui/it/language_settings.xml +++ b/indra/newview/skins/default/xui/it/language_settings.xml @@ -5,7 +5,8 @@ <!-- Locale Information --> <string name="MicrosoftLocale">italian</string> <string name="MacLocale">it_IT.UTF-8</string> - <string name="DarwinLocale">it_IT.UTF-8</string> + <string name="macOSLocale">it_IT.UTF-8</string> + <string name="DarwinLocale">it_IT.UTF-8</string> <string name="LinuxLocale">it_IT.UTF-8</string> <!-- diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml index 91e8f4be7c73157dc58837043d4953ce52b78603..c4a6992ffafb445f9dc8ded6fe64cb48e6c9efc8 100644 --- a/indra/newview/skins/default/xui/ja/language_settings.xml +++ b/indra/newview/skins/default/xui/ja/language_settings.xml @@ -5,7 +5,8 @@ <!-- Locale Information --> <string name="MicrosoftLocale">japanese</string> <string name="MacLocale">ja_JP.UTF-8</string> - <string name="DarwinLocale">ja_JP.UTF-8</string> + <string name="macOSLocale">ja_JP.UTF-8</string> + <string name="DarwinLocale">ja_JP.UTF-8</string> <string name="LinuxLocale">ja_JP.UTF-8</string> <!-- diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml index 0057ca530c8aa9cc54abd3b48be13867e16e630d..c08595eca69538b3085e4d3a2d7a6c75a5256050 100644 --- a/indra/newview/skins/default/xui/pl/language_settings.xml +++ b/indra/newview/skins/default/xui/pl/language_settings.xml @@ -2,7 +2,8 @@ <strings> <string name="MicrosoftLocale">polish</string> <string name="MacLocale">pl_PL.UTF-8</string> - <string name="DarwinLocale">pl_PL.UTF-8</string> + <string name="macOSLocale">pl_PL.UTF-8</string> + <string name="DarwinLocale">pl_PL.UTF-8</string> <string name="LinuxLocale">pl_PL.UTF-8</string> <string name="TimeHour">hour,datetime,slt</string> <string name="TimeMin">min,datetime,slt</string> diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml index 8799475ace4048e9902965c4e2a1d149877d67e1..b15e3f666ff842d944539a77b562489b683cc812 100644 --- a/indra/newview/skins/default/xui/pt/language_settings.xml +++ b/indra/newview/skins/default/xui/pt/language_settings.xml @@ -5,6 +5,7 @@ <!-- Locale Information --> <string name="MicrosoftLocale">portuguese</string> <string name="MacLocale">pt_PT.UTF-8</string> + <string name="macOSLocale">pt_PT.UTF-8</string> <string name="DarwinLocale">pt_PT.UTF-8</string> <string name="LinuxLocale">pt_PT.UTF-8</string> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0219d3390bf8b5052e0b864a39ab0cd03d89aec4..605eb2b26e14fd8f1aea106fdb9b8b0b8b45dce3 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -901,6 +901,7 @@ def construct(self): pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") debpkgdir = os.path.join(pkgdir, "lib", "debug") + libdir = debpkgdir if self.args['configuration'].lower() == 'debug' else relpkgdir with self.prefix(src="", dst="Contents"): # everything goes in Contents bugsplat_db = self.args.get('bugsplat') @@ -918,13 +919,45 @@ def construct(self): # CEF framework goes inside Contents/Frameworks. # Remember where we parked this car. - with self.prefix(src="", dst="Frameworks"): + with self.prefix(src=libdir, dst="Frameworks"): CEF_framework = "Chromium Embedded Framework.framework" - self.path2basename(relpkgdir, CEF_framework) + self.path2basename(libdir, CEF_framework) CEF_framework = self.dst_path_of(CEF_framework) + for libfile in ( + 'libapr-1.*.dylib', + 'libaprutil-1.*.dylib', + 'libjpeg.*.dylib', + 'libepoxy.*.dylib', + 'libGLOD.dylib', + 'libhunspell-*.dylib', + 'libndofdev.dylib', + 'libogg.*.dylib', + 'libopenjpeg.*.dylib', + 'liburiparser.*.dylib', + 'libvorbis.*.dylib', + 'libvorbisenc.*.dylib', + 'libvorbisfile.*.dylib', + 'libwebp.*.dylib', + 'libxmlrpc-epi.*.dylib', + ): + self.path(libfile) + if self.args.get('bugsplat'): - self.path2basename(relpkgdir, "BugsplatMac.framework") + self.path("BugsplatMac.framework") + + if self.args['openal'] == 'ON' or self.args['openal'] == 'TRUE': + for libfile in ( + 'libopenal.*.dylib', + 'libalut.*.dylib', + ): + self.path(libfile) + + if self.args['fmodstudio'] == 'ON' or self.args['fmodstudio'] == 'TRUE': + if self.args['configuration'].lower() == 'debug': + self.path("libfmodL.dylib") + else: + self.path("libfmod.dylib") with self.prefix(dst="MacOS"): executable = self.dst_path_of(self.channel()) @@ -984,16 +1017,11 @@ def construct(self): self.path("*.png") self.path("*.gif") - with self.prefix(src=relpkgdir, dst=""): - self.path("libndofdev.dylib") - self.path("libhunspell-*.dylib") - with self.prefix(src_dst="cursors_mac"): self.path("*.tif") self.path("licenses-mac.txt", dst="licenses.txt") self.path("featuretable_mac.txt") - self.path("SecondLife.nib") with self.prefix(src=pkgdir,dst=""): self.path("ca-bundle.crt") @@ -1027,11 +1055,6 @@ def construct(self): libfile_parent = self.get_dst_prefix() dylibs=[] for libfile in ( - "libapr-1.0.dylib", - "libaprutil-1.0.dylib", - "libexpat.1.dylib", - "libexception_handler.dylib", - "libGLOD.dylib", # libnghttp2.dylib is a symlink to # libnghttp2.major.dylib, which is a symlink to # libnghttp2.version.dylib. Get all of them. @@ -1050,18 +1073,6 @@ def construct(self): ): self.path2basename(relpkgdir, libfile) - # dylibs that vary based on configuration - if self.args['configuration'].lower() == 'debug': - for libfile in ( - "libfmodL.dylib", - ): - dylibs += self.path_optional(os.path.join(debpkgdir, libfile), libfile) - else: - for libfile in ( - "libfmod.dylib", - ): - dylibs += self.path_optional(os.path.join(relpkgdir, libfile), libfile) - # our apps executable_path = {} for app_bld_dir, app in (