diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index e4f1c94a07..760c99af92 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -1,5 +1,6 @@ name: Build viewer on: + workflow_dispatch: push: branches: - "Firestorm*.*.*" @@ -21,14 +22,7 @@ jobs: matrix: os: [macos-11,ubuntu-20.04,windows-2022] grid: [sl,os] - addrsize: [64,32] - exclude: - - os: ubuntu-20.04 - addrsize: 32 - - os: macos-11 - addrsize: 32 - # - grid: sl - # addrsize: 32 + addrsize: [64] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 @@ -322,5 +316,5 @@ jobs: rclone_config: ${{ secrets.RCLONE_CONFIG }} - name: Copy files to remote host - run: rclone copy ${{steps.download.outputs.download-path}}/${{ env.FS_RELEASE_FOLDER }} fs_deploy:${{ env.FS_RELEASE_FOLDER }} + run: rclone copy ${{steps.download.outputs.download-path}}/${{ env.FS_RELEASE_FOLDER }} fs_r2_deploy:viewerdownloads/${{ env.FS_RELEASE_FOLDER }} diff --git a/README_BUILD_FIRESTORM_WINDOWS.txt b/README_BUILD_FIRESTORM_WINDOWS.txt index ecbf01a749..bc7909e9f0 100755 --- a/README_BUILD_FIRESTORM_WINDOWS.txt +++ b/README_BUILD_FIRESTORM_WINDOWS.txt @@ -2,11 +2,11 @@ Before you start configuring your Windows build system, be aware of our tested c Memory: You will need at least 2GB RAM, 4GB strongly recommended. CPU: Multiple CPUs are strongly recommended. A build can take over an hour. - Visual Studio 2017 Community Edition. + Visual Studio 2017/2022 Community Edition. Ensure you can build a stock viewer-development try as described in the SL wiki. Before asking for any help compiling Firestorm, make sure you can build the Second Life viewer first. If you try and skip this step, you may -receive much less help. http://wiki.secondlife.com/wiki/Visual_Studio_2013_Viewer_Builds +receive much less help. https://wiki.secondlife.com/wiki/Build_the_Viewer_on_Windows If you want to use licensed FMOD or KDU build libraries (they are optional) you have to provision these yourself. If you're licensing these with Phoenix/Firestorm, ask for the libraries for fmod and kdu. Put them into: @@ -20,11 +20,11 @@ mailing list. We've created a non-KDU build target to make this easier. Everywhe "ReleaseFS_open" instead. This will perform the same build, using OpenJpeg instead of KDU. -To build Firestorm: +To build Firestorm - a more detailed instruction can be found at https://wiki.firestormviewer.org/fs_compiling_firestorm_windows: Open a CMD shell and navigating to your firestorm code repo: - autobuild build -c ReleaseFS + autobuild build -A 64 -c ReleaseFS Other build targets you may use are: @@ -33,22 +33,18 @@ Other build targets you may use are: RelWithDebInfoFS_open (no KDU, no FMOD) Other examples: - autobuild configure -c ReleaseFS # basic configuration step, don't build, just configure - autobuild configure -c ReleaseFS -- --clean # clean the output area first, then configure - autobuild configure -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel + autobuild configure -A 64 -c ReleaseFS # basic configuration step, don't build, just configure + autobuild configure -A 64 -c ReleaseFS -- --clean # clean the output area first, then configure + autobuild configure -A 64 -c ReleaseFS -- --chan Private-Yourname # configure with a custom channel - autobuild build -c ReleaseFS --no-configure # default quick rebuild + autobuild build -A 64 -c ReleaseFS --no-configure # default quick rebuild If you want to set custom configuration, do this in the configure step separately from build, then run "autobuild -build -c ReleaseFS --no-configure" as a secondary step. - -If you want to build the 64bit version, add the parameter -A 64 to the autobuild commands, e.g.: - autobuild configure -A 64 -c ReleaseFS - autobuild build -A 64 -c ReleaseFS --no-configure +build -A 64 -c ReleaseFS --no-configure" as a secondary step. Logs: - Look for logs in build-vc150-32/logs for 32bit builds and build-vc150-64/logs for 64bit + Look for logs in build-vc1x0-64/logs Output: - Look for output in build-vc150-32/newview/Release for 32bit builds and build-vc150-64/newview/Release for 64bit + Look for output in build-vc1x0-32/newview/Release diff --git a/autobuild.xml b/autobuild.xml index 4a4ec9d403..38fc371971 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -28,7 +28,7 @@ hash 535006965531b4a92e4951ee8dbe2745 url - http://3p.firestormviewer.org/SDL2-2.28.4-linux64-232750919.tar.bz2 + https://3p.firestormviewer.org/SDL2-2.28.4-linux64-232750919.tar.bz2 name linux64 @@ -56,7 +56,7 @@ hash 01f39ecf80dae64e30402ac384035b3e url - http://downloads.phoenixviewer.com/gstreamer10-1.6.3.201605191852-linux-201605191852.tar.bz2 + https://3p.firestormviewer.org/gstreamer10-1.6.3.201605191852-linux-201605191852.tar.bz2 name linux64 @@ -84,7 +84,7 @@ hash 482c2b25bbfd25edc058a02f82da39b2 url - http://3p.firestormviewer.org/breakpad-4708e6fb-linux64_bionic-220392253.tar.bz2 + https://3p.firestormviewer.org/breakpad-4708e6fb-linux64_bionic-220392253.tar.bz2 name linux64 @@ -112,7 +112,7 @@ hash 80d157facdba399b3a59c400e29cb625 url - http://3p.firestormviewer.org/glib-2.64.6.230870115-linux64-230870115.tar.bz2 + https://3p.firestormviewer.org/glib-2.64.6.230870115-linux64-230870115.tar.bz2 name linux64 @@ -140,7 +140,7 @@ hash 81fe1e927e4fe3c5e5f15ce6219ca883 url - http://3p.firestormviewer.org/fltk-1.3.5.202282121-linux64-202282121.tar.bz2 + https://3p.firestormviewer.org/fltk-1.3.5.202282121-linux64-202282121.tar.bz2 name linux @@ -170,7 +170,7 @@ hash 0008a7b291fa1863ba41424b4e3ac302 url - http://3p.firestormviewer.org/jemalloc-5.3.0-linux64-222631217.tar.bz2 + https://3p.firestormviewer.org/jemalloc-5.3.0-linux64-222631217.tar.bz2 name linux64 @@ -196,7 +196,7 @@ hash 7d375112b162e32e37262da4a6c0a702 url - http://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-202330107.tar.bz2 + https://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-202330107.tar.bz2 name darwin @@ -208,7 +208,7 @@ hash c266a8d6124fc11e41a82c288f2bf8e4 url - http://3p.firestormviewer.org/ndPhysicsStub-1.202321033-linux64-202321033.tar.bz2 + https://3p.firestormviewer.org/ndPhysicsStub-1.202321033-linux64-202321033.tar.bz2 name linux64 @@ -220,7 +220,7 @@ hash 02f70159e14c7b7213b22a0225508c46 url - http://3p.firestormviewer.org/ndPhysicsStub-1.0-windows64-202121823.tar.bz2 + https://3p.firestormviewer.org/ndPhysicsStub-1.0-windows64-202121823.tar.bz2 name windows64 @@ -246,7 +246,7 @@ hash 94fc457c46e1fb94b31251bd4747d10f url - http://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2 + https://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2 name darwin64 @@ -258,7 +258,7 @@ hash acc1181cd31ef32c3724eda84ae4b580 url - http://3p.firestormviewer.org/glod-1.0pre3.180990827-linux64-180990827.tar.bz2 + https://3p.firestormviewer.org/glod-1.0pre3.180990827-linux64-180990827.tar.bz2 name linux64 @@ -270,7 +270,7 @@ hash e906cf08bfbfbd9d4fc78557e021e7d0 url - http://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2 + https://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2 name windows64 @@ -298,7 +298,7 @@ hash 33300134846d0f00ac4f31c1a190e3e6 url - http://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2 + https://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2 name darwin @@ -310,7 +310,7 @@ hash af06208ec80b1f170cc560141602e2dc url - http://3p.firestormviewer.org/libnotify-0.4.4-linux-20101003.tar.bz2 + https://3p.firestormviewer.org/libnotify-0.4.4-linux-20101003.tar.bz2 name linux64 @@ -322,7 +322,7 @@ hash a333b335104b3d0df14b9be005ef1571 url - http://3p.firestormviewer.org/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2 + https://3p.firestormviewer.org/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2 name windows64 @@ -350,7 +350,7 @@ hash f63f07d4c87fbbb698b9039583f08b76 url - http://3p.firestormviewer.org/discord_rpc-3.4.0-windows64-192581529.tar.bz2 + https://3p.firestormviewer.org/discord_rpc-3.4.0-windows64-192581529.tar.bz2 name windows64 @@ -362,7 +362,7 @@ hash cefa1cdb50a85e36114ca89df66c0b5a url - http://3p.firestormviewer.org/discord_rpc-3.4.0-linux64-192540843.tar.bz2 + https://3p.firestormviewer.org/discord_rpc-3.4.0-linux64-192540843.tar.bz2 name linux64 @@ -374,7 +374,7 @@ hash 3bc297a0fa47094bb52d361f80186387 url - http://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2 + https://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2 name darwin64 @@ -392,7 +392,7 @@ hash 64c1dff0e19792acec7fd32556bf4d7b url - http://3p.firestormviewer.org/SDL-1.2.15-linux64-181411635.tar.bz2 + https://3p.firestormviewer.org/SDL-1.2.15-linux64-181411635.tar.bz2 name linux64 @@ -486,7 +486,7 @@ hash 1c341bdbb5fd0c8a8930f76e6c1647d4 url - http://3p.firestormviewer.org/apr_suite-1.4.5.230921251-linux64-230921251.tar.bz2 + https://3p.firestormviewer.org/apr_suite-1.4.5.230921251-linux64-230921251.tar.bz2 name linux64 @@ -544,7 +544,7 @@ hash 8d96a9d1a9a208b1f48ac677edb7ca4d url - http://3p.firestormviewer.org/boost-1.72-linux64-222121224.tar.bz2 + https://3p.firestormviewer.org/boost-1.72-linux64-222121224.tar.bz2 name linux64 @@ -762,7 +762,7 @@ hash 8e92fc9ec2b3be6d2a5387fc283f954f url - http://3p.firestormviewer.org/curl-8.3.0.232750741-linux64-232750741.tar.bz2 + https://3p.firestormviewer.org/curl-8.3.0.232750741-linux64-232750741.tar.bz2 name linux64 @@ -806,7 +806,7 @@ hash 2d59bb6f4bd38a18d9250ff010a13b59 url - http://3p.firestormviewer.org/dictionaries-2.46203-common-46203.tar.bz2 + https://3p.firestormviewer.org/dictionaries-2.46203-common-46203.tar.bz2 name common @@ -848,9 +848,9 @@ archive hash - ad7b9fc10184e8145731f45ae400bfd1 + c539c58aee1d010928ae29ad344656a5 url - http://3p.firestormviewer.org/dullahan-1.12.2.202210012157_92.0.27_g274abcf_chromium-92.0.4515.159-linux64-222741156.tar.bz2 + https://3p.firestormviewer.org/dullahan-1.14.0.202311061750_118.6.8_ge44bee1_chromium-118.0.5993.117-linux64-233100650.tar.bz2 name linux64 @@ -908,7 +908,7 @@ hash 39702f98867a319b090ee04f22d82762 url - http://3p.firestormviewer.org/expat-2.5.0.230021327-linux64-230021327.tar.bz2 + https://3p.firestormviewer.org/expat-2.5.0.230021327-linux64-230021327.tar.bz2 name linux64 @@ -949,14 +949,12 @@ archive - creds - github hash - 8ee7c21f3f109cf4e1709e4af0b4bebf + bfcc4acbe6b8dddaf10f0f7a47e4aad8 hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2 + file:///opt/firestorm/fmodstudio-2.02.18-darwin64-232960129.tar.bz2 name darwin64 @@ -965,8 +963,6 @@ archive - creds - github hash 14846f1a55274399362db4b674fcded6 hash_algorithm @@ -981,8 +977,6 @@ archive - creds - github hash 7b38bd83eb63f25df7c5a20070a05732 hash_algorithm @@ -1018,7 +1012,7 @@ hash 6fdcfcc9aa1d01164c0f7ca5590859bb url - http://3p.firestormviewer.org/fontconfig-2.12.6-linux64-223020909.tar.bz2 + https://3p.firestormviewer.org/fontconfig-2.12.6-linux64-223020909.tar.bz2 name linux64 @@ -1062,7 +1056,7 @@ hash 41db760508e6b48ae3a291ad2d1aef3d url - http://3p.firestormviewer.org/freetype-2.8.1.223020901-linux64-223020901.tar.bz2 + https://3p.firestormviewer.org/freetype-2.8.1.223020901-linux64-223020901.tar.bz2 name linux64 @@ -1074,7 +1068,7 @@ hash 2c2151b439cf92e03d9573dddbbdd3b6 url - http://3p.firestormviewer.org/freetype-2.3.9.232991153-windows64-232991153.tar.bz2 + https://3p.firestormviewer.org/freetype-2.3.9.232991153-windows64-232991153.tar.bz2 name windows64 @@ -1182,7 +1176,7 @@ hash ff459b58695c76838782847a0b792104 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9697/45717/googlemock-1.7.0.509686-linux64-509686.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9697/45717/googlemock-1.7.0.509686-linux64-509686.tar.bz2 name linux64 @@ -1226,7 +1220,7 @@ hash 86a358f1b5a2c2baf68444b2bfc5bb32 url - http://3p.firestormviewer.org/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2 + https://3p.firestormviewer.org/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2 name linux64 @@ -1330,7 +1324,7 @@ hash fd8060aa3c920e0fc63e7ecbea67bc5e url - http://3p.firestormviewer.org/jpegencoderbasic-1.0-linux64-213500937.tar.bz2 + https://3p.firestormviewer.org/jpegencoderbasic-1.0-linux64-213500937.tar.bz2 name linux64 @@ -1386,7 +1380,7 @@ hash 324bb9deb00d256a12f8cbf686f413f0 url - http://3p.firestormviewer.org/jpeglib-8c.180841548-linux64-180841548.tar.bz2 + https://3p.firestormviewer.org/jpeglib-8c.180841548-linux64-180841548.tar.bz2 name linux64 @@ -1444,7 +1438,7 @@ hash 352ab340f2091c93eb313cf80ac0c8cc url - http://3p.firestormviewer.org/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2 + https://3p.firestormviewer.org/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2 name linux64 @@ -1485,8 +1479,6 @@ archive - creds - github hash 3142fccbcc0e2c5a019e3177ef364290 url @@ -1499,8 +1491,6 @@ archive - creds - github hash e13d6fe708613bb3a5d630c4cdd97a3b url @@ -1513,8 +1503,6 @@ archive - creds - github hash 4aa7df19125708580055b42190d2511e url @@ -1562,7 +1550,7 @@ hash 6555f040c686d8c1dec8e6264c2d3672 url - http://3p.firestormviewer.org/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2 + https://3p.firestormviewer.org/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2 name linux64 @@ -1666,7 +1654,7 @@ hash 134089ec8c1eead9436b69c326790fc0 url - http://3p.firestormviewer.org/libpng-1.6.38.222890126-linux64-222890126.tar.bz2 + https://3p.firestormviewer.org/libpng-1.6.38.222890126-linux64-222890126.tar.bz2 name linux64 @@ -1710,7 +1698,7 @@ hash f3cc32c84b99f1277370ce88a0faf40e url - http://3p.firestormviewer.org/libuuid-1.6.2-linux64-180841554.tar.bz2 + https://3p.firestormviewer.org/libuuid-1.6.2-linux64-180841554.tar.bz2 name linux64 @@ -1754,7 +1742,7 @@ hash d72c6d8db827ce3d83c5703f519a2ac9 url - http://3p.firestormviewer.org/libxml2-2.10.3.230940019-linux64-230940019.tar.bz2 + https://3p.firestormviewer.org/libxml2-2.10.3.230940019-linux64-230940019.tar.bz2 name linux64 @@ -1923,7 +1911,7 @@ hash f290b000b31f9e36f2489946cbc99f5e url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59995/563653/llphysicsextensions_stub-1.0.542456-darwin64-542456.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59995/563653/llphysicsextensions_stub-1.0.542456-darwin64-542456.tar.bz2 name darwin64 @@ -1935,7 +1923,7 @@ hash 711f4ec769e4b5f59ba25ee43c11bcbc url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 name linux64 @@ -1947,7 +1935,7 @@ hash 2e5f1f7046a49d8b0bc295aa878116bc url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60043/564063/llphysicsextensions_stub-1.0.542456-windows-542456.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60043/564063/llphysicsextensions_stub-1.0.542456-windows-542456.tar.bz2 name windows @@ -1987,7 +1975,7 @@ hash 711f4ec769e4b5f59ba25ee43c11bcbc url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2 name linux64 @@ -2027,7 +2015,7 @@ hash 22c50a5d362cad311b4f413cfcffbba2 url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/mesa_3p-update-mesa/rev/297294/arch/Linux/installer/mesa-7.11.1.297294-linux-297294.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/mesa_3p-update-mesa/rev/297294/arch/Linux/installer/mesa-7.11.1.297294-linux-297294.tar.bz2 name linux @@ -2067,7 +2055,7 @@ hash 50d647afc4e510af72f09dcd7a77e920 url - http://3p.firestormviewer.org/meshoptimizer-0.16.222121104-linux64-222121104.tar.bz2 + https://3p.firestormviewer.org/meshoptimizer-0.16.222121104-linux64-222121104.tar.bz2 name linux64 @@ -2127,7 +2115,7 @@ hash ee4e3a02ad4669a4d84e9c32e509530e url - http://3p.firestormviewer.org/minizip_ng-3.0.2.222121607-linux64-222121607.tar.bz2 + https://3p.firestormviewer.org/minizip_ng-3.0.2.222121607-linux64-222121607.tar.bz2 name linux64 @@ -2187,7 +2175,7 @@ hash 57670eaa6333d9127b8ba88f120e56dd url - http://3p.firestormviewer.org/nghttp2-1.56.0.232750738-linux64-232750738.tar.bz2 + https://3p.firestormviewer.org/nghttp2-1.56.0.232750738-linux64-232750738.tar.bz2 name linux64 @@ -2280,7 +2268,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash 03b7df0406d7588c4fb49c2ddf0d8264 url - http://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.202241500-linux64-202241500.tar.bz2 + https://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.202241500-linux64-202241500.tar.bz2 name linux64 @@ -2336,7 +2324,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash b329ed955ac63da45957d39f601e85af url - http://3p.firestormviewer.org/open_libndofdev-0.13.232750923-linux64-232750923.tar.bz2 + https://3p.firestormviewer.org/open_libndofdev-0.13.232750923-linux64-232750923.tar.bz2 name linux64 @@ -2356,7 +2344,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash 4f36ae378593240701fd4453bd6074c8 url - http://3p.firestormviewer.org/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2 + https://3p.firestormviewer.org/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2 name linux64 @@ -2428,7 +2416,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash b1dad7c841118a3b6e03a01722d1846a url - http://3p.firestormviewer.org/openjpeg-2.5.0.230362345-linux64-230362345.tar.bz2 + https://3p.firestormviewer.org/openjpeg-2.5.0.230362345-linux64-230362345.tar.bz2 name linux64 @@ -2486,7 +2474,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash a3b2dbffa28a2b2a63c5d3ce2c12bc85 url - http://3p.firestormviewer.org/openssl-1.1.1w.232750656-linux64-232750656.tar.bz2 + https://3p.firestormviewer.org/openssl-1.1.1w.232750656-linux64-232750656.tar.bz2 name linux64 @@ -2544,7 +2532,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash 742a145c1518b9dc195ae0862828e6ae url - http://3p.firestormviewer.org/pcre-8.35.202021522-linux64-202021522.tar.bz2 + https://3p.firestormviewer.org/pcre-8.35.202021522-linux64-202021522.tar.bz2 name linux64 @@ -2600,7 +2588,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash db89d5ce9695457cc1e94cf657678f1a url - http://3p.firestormviewer.org/slvoice-3.2-linux64-222532329.tar.bz2 + https://3p.firestormviewer.org/slvoice-3.2-linux64-222532329.tar.bz2 name linux64 @@ -2656,7 +2644,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash d37be064bd851276dab423d723cb9b7d url - http://3p.firestormviewer.org/threejs-0.132.2-linux64-213500940.tar.bz2 + https://3p.firestormviewer.org/threejs-0.132.2-linux64-213500940.tar.bz2 name linux64 @@ -2796,7 +2784,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash 0d6832fd958ec127f089e683c9b67169 url - http://3p.firestormviewer.org/uriparser-0.9.4-linux64-211210958.tar.bz2 + https://3p.firestormviewer.org/uriparser-0.9.4-linux64-211210958.tar.bz2 name linux64 @@ -2960,11 +2948,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ad0c8b41ee4b4de216382bec46ee1c25962a3f12 + 71a9c7c03a2c26cdb21fa476de485d9c hash_algorithm - sha1 + md5 url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst + https://3p.firestormviewer.org/xmlrpc_epi-0.54.2.230940042-linux64-230940042.tar.bz2 name linux64 @@ -3094,7 +3082,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors hash 5ee7cda65cede06190c811e59b3880b0 url - http://3p.firestormviewer.org/zlib_ng-2.0.5.222121000-linux64-222121000.tar.bz2 + https://3p.firestormviewer.org/zlib_ng-2.0.5.222121000-linux64-222121000.tar.bz2 name linux64 diff --git a/fsutils/download_list.py b/fsutils/download_list.py index 8f453559a3..1d5756b619 100644 --- a/fsutils/download_list.py +++ b/fsutils/download_list.py @@ -226,10 +226,7 @@ DOWNLOADS - {build_type} full_file = os.path.join(build_type_dir, dir, file) md5 = get_md5(full_file) base_name = os.path.basename(file) - if "x64" in base_name: - wordsize = "64" - else: - wordsize = "32" + wordsize = "64" if "FirestormOS-" in base_name: grid = "OS" @@ -258,15 +255,6 @@ DOWNLOADS - {build_type} output += "\n" output += f"MD5: {md5_dict[f'{grid}{dir}{wordsize}']}\n" output += "\n" - if dir == "windows": - # Need to do 32 bit as well - wordsize = "32" - output += f"{platform} for {grid_printable} ({wordsize}-bit)\n" - output += f"{download_root}/{dir}/{os.path.basename(file_dict[f'{grid}{dir}{wordsize}'])}\n" - output += "\n" - output += f"MD5: {md5_dict[f'{grid}{dir}{wordsize}']}\n" - output += "\n" - wordsize = "64" except KeyError: output += f"{platform} for {grid_printable} ({wordsize}-bit) - NOT AVAILABLE\n" output += "\n" diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 46b0de6211..4b3cb61ae2 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -1081,8 +1081,7 @@ void MediaPluginCEF::keyEvent(dullahan::EKeyEvent key_event, LLSD native_key_dat keypad = true; } - // yes, we send native_virtual_key_win twice because native_virtual_key breaks it - mCEFLib->nativeKeyboardEventSDL2(key_event, native_virtual_key_win, native_virtual_key_win, native_modifiers, keypad); + mCEFLib->nativeKeyboardEventSDL2(key_event, native_virtual_key_win, native_modifiers, keypad); } #else diff --git a/indra/newview/ao.cpp b/indra/newview/ao.cpp index 4f5a32fece..45502fd1d5 100644 --- a/indra/newview/ao.cpp +++ b/indra/newview/ao.cpp @@ -105,9 +105,9 @@ void FloaterAO::updateAnimationList() return; } - for (U32 index = 0; index < mSelectedSet->mStateNames.size(); ++index) + for (auto index = 0; index < mSelectedSet->mStateNames.size(); ++index) { - std::string stateName = mSelectedSet->mStateNames[index]; + const std::string& stateName = mSelectedSet->mStateNames[index]; AOSet::AOState* state = mSelectedSet->getStateByName(stateName); mStateSelector->add(stateName, state, ADD_BOTTOM, TRUE); } @@ -178,8 +178,8 @@ void FloaterAO::updateList() } } - U32 selected_index = 0; - for (U32 index = 0; index < mSetList.size(); ++index) + size_t selected_index = 0; + for (auto index = 0; index < mSetList.size(); ++index) { std::string setName = mSetList[index]->getName(); mSetSelector->add(setName, &mSetList[index], ADD_BOTTOM, TRUE); @@ -280,7 +280,7 @@ BOOL FloaterAO::postBuild() onChangeAnimationSelection(); mMainInterfacePanel->setVisible(TRUE); mSmallInterfacePanel->setVisible(FALSE); - reloading(TRUE); + reloading(true); updateList(); @@ -464,7 +464,7 @@ void FloaterAO::onSelectState() mSelectedState = (AOSet::AOState*)mStateSelector->getCurrentUserdata(); if (mSelectedState->mAnimations.size()) { - for (U32 index = 0; index < mSelectedState->mAnimations.size(); ++index) + for (auto index = 0; index < mSelectedState->mAnimations.size(); ++index) { LLScrollListItem* item = addAnimation(mSelectedState->mAnimations[index].mName); if (item) @@ -558,7 +558,7 @@ bool FloaterAO::removeSetCallback(const LLSD& notification, const LLSD& response { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option ==0 ) + if (option ==0) { if (AOEngine::instance().removeSet(mSelectedSet)) { @@ -638,7 +638,7 @@ void FloaterAO::onChangeAnimationSelection() mAnimationList->deselectAllItems(); LL_DEBUGS("AOEngine") << "Selection count now: " << list.size() << LL_ENDL; } - else if (list.size() > 0) + else if (!list.empty()) { if (list.size() == 1) { @@ -715,7 +715,7 @@ void FloaterAO::onClickTrash() return; } - for (S32 index = list.size() - 1; index != -1; --index) + for (auto index = list.size() - 1; index != -1; --index) { AOEngine::instance().removeAnimation(mSelectedSet, mSelectedState, mAnimationList->getItemIndex(list[index])); } @@ -833,11 +833,8 @@ void FloaterAO::onAnimationChanged(const LLUUID& animation) } // why do we have no LLScrollListCtrl::getItemByUserdata() ? -Zi - std::vector item_list = mAnimationList->getAllData(); - std::vector::const_iterator iter; - for (iter = item_list.begin(); iter != item_list.end(); ++iter) + for (auto item : mAnimationList->getAllData()) { - LLScrollListItem* item = *iter; LLUUID* id = (LLUUID*)item->getUserdata(); if (id == &animation) diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp index a726483d6a..4ca498bb58 100644 --- a/indra/newview/aoengine.cpp +++ b/indra/newview/aoengine.cpp @@ -44,7 +44,7 @@ #define ROOT_AO_FOLDER "#AO" #include -const F32 INVENTORY_POLLING_INTERVAL = 5.0f; +constexpr F32 INVENTORY_POLLING_INTERVAL = 5.0f; AOEngine::AOEngine() : LLSingleton(), @@ -128,7 +128,7 @@ void AOEngine::onPauseAO() void AOEngine::clear(bool from_timer) { - mOldSets.insert(mOldSets.end(), mSets.begin(), mSets.end()); + std::move(mSets.begin(), mSets.end(), std::back_inserter(mOldSets)); mSets.clear(); mCurrentSet = nullptr; @@ -213,7 +213,7 @@ bool AOEngine::foreignAnimations() return false; } - LLUUID seat = agentRoot->getID(); + const LLUUID& seat = agentRoot->getID(); if (seat == gAgentID) { LL_DEBUGS("AOEngine") << "Not checking for foreign animation when not sitting." << LL_ENDL; @@ -222,7 +222,7 @@ bool AOEngine::foreignAnimations() LL_DEBUGS("AOEngine") << "Checking for foreign animation on seat " << seat << LL_ENDL; - for (const auto&[source_id, animation_id] : gAgentAvatarp->mAnimationSources) + for (const auto& [source_id, animation_id] : gAgentAvatarp->mAnimationSources) { // skip animations run by the avatar itself if (source_id != gAgentID) @@ -584,7 +584,7 @@ const LLUUID AOEngine::override(const LLUUID& motion, bool start) // case, as it plays at the same time as other motions if (motion != ANIM_AGENT_TYPE) { - const S32 cleanupStates[]= + constexpr S32 cleanupStates[]= { AOSet::Standing, AOSet::Walking, @@ -806,8 +806,7 @@ void AOEngine::checkSitCancel() { if (foreignAnimations()) { - AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT); - if (aoState) + if (AOSet::AOState* aoState = mCurrentSet->getStateByRemapID(ANIM_AGENT_SIT); aoState) { LLUUID animation = aoState->mCurrentAnimationID; if (animation.notNull()) @@ -1020,7 +1019,7 @@ bool AOEngine::createAnimationLink(const AOSet* set, AOSet::AOState* state, cons if (cats) { - for (auto cat : *cats) + for (const auto& cat : *cats) { if (cat->getName().compare(state->mName) == 0) { @@ -1039,8 +1038,7 @@ bool AOEngine::createAnimationLink(const AOSet* set, AOSet::AOState* state, cons return false; } - LLInventoryObject::const_object_list_t obj_array; - obj_array.push_back(LLConstPointer(item)); + LLInventoryObject::const_object_list_t obj_array{ LLConstPointer(item) }; link_inventory_array(state->mInventoryUUID, obj_array, LLPointer(nullptr)); @@ -1055,7 +1053,7 @@ bool AOEngine::addAnimation(const AOSet* set, AOSet::AOState* state, const LLInv anim.mInventoryUUID = item->getUUID(); anim.mName = item->getName(); anim.mSortOrder = state->mAnimations.size() + 1; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); BOOL wasProtected = gSavedPerAccountSettings.getBOOL("LockAOFolders"); gSavedPerAccountSettings.setBOOL("LockAOFolders", FALSE); @@ -1175,7 +1173,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde return false; } - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations == 0) { return false; @@ -1220,7 +1218,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde if (cats) { - for (auto cat : *cats) + for (const auto& cat : *cats) { std::vector params; LLStringUtil::getTokens(cat->getName(), params, ":"); @@ -1254,7 +1252,7 @@ bool AOEngine::removeAnimation(const AOSet* set, AOSet::AOState* state, S32 inde bool AOEngine::swapWithPrevious(AOSet::AOState* state, S32 index) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations < 2 || index == 0) { return false; @@ -1271,7 +1269,7 @@ bool AOEngine::swapWithPrevious(AOSet::AOState* state, S32 index) bool AOEngine::swapWithNext(AOSet::AOState* state, S32 index) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations < 2 || index == (numOfAnimations - 1)) { return false; @@ -1297,7 +1295,7 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (items) { - for (auto item : *items) + for (const auto& item : *items) { LL_DEBUGS("AOEngine") << "Found animation link " << item->LLInventoryItem::getName() << " desc " << item->LLInventoryItem::getDescription() @@ -1326,12 +1324,12 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (sortOrder == -1) { LL_WARNS("AOEngine") << "sort order was unknown so append to the end of the list" << LL_ENDL; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); } else { bool inserted = false; - for (U32 index = 0; index < state->mAnimations.size(); ++index) + for (auto index = 0; index < state->mAnimations.size(); ++index) { if (state->mAnimations[index].mSortOrder > sortOrder) { @@ -1344,7 +1342,7 @@ void AOEngine::reloadStateAnimations(AOSet::AOState* state) if (!inserted) { LL_DEBUGS("AOEngine") << "not inserted yet, appending to the list instead" << LL_ENDL; - state->mAnimations.push_back(anim); + state->mAnimations.emplace_back(std::move(anim)); } } LL_DEBUGS("AOEngine") << "Animation count now: " << state->mAnimations.size() << LL_ENDL; @@ -1377,7 +1375,7 @@ void AOEngine::update() if (categories) { - for (auto currentCategory : *categories) + for (const auto& currentCategory : *categories) { const std::string& setFolderName = currentCategory->getName(); @@ -1401,7 +1399,7 @@ void AOEngine::update() LL_DEBUGS("AOEngine") << "Adding set " << setFolderName << " to AO." << LL_ENDL; newSet = new AOSet(currentCategory->getUUID()); newSet->setName(params[0]); - mSets.push_back(newSet); + mSets.emplace_back(newSet); } else { @@ -1414,7 +1412,7 @@ void AOEngine::update() } allComplete = false; - for (U32 num = 1; num < params.size(); ++num) + for (auto num = 1; num < params.size(); ++num) { if (params[num].size() != 2) { @@ -1451,7 +1449,7 @@ void AOEngine::update() gInventory.getDirectDescendentsOf(currentCategory->getUUID(), stateCategories, items); newSet->setComplete(true); - for (auto stateCategory : *stateCategories) + for (const auto& stateCategory : *stateCategories) { std::vector state_params; LLStringUtil::getTokens(stateCategory->getName(), state_params, ":"); @@ -1471,7 +1469,7 @@ void AOEngine::update() LL_DEBUGS("AOEngine") << "Reading state " << stateName << LL_ENDL; state->mInventoryUUID = stateCategory->getUUID(); - for (U32 num = 1; num < state_params.size(); ++num) + for (auto num = 1; num < state_params.size(); ++num) { if (state_params[num] == "CY") { @@ -1925,7 +1923,7 @@ void AOEngine::tick() gInventory.getDirectDescendentsOf(categoryID, categories, items); LL_DEBUGS("AOEngine") << "cat " << categories->size() << " items " << items->size() << LL_ENDL; - for (auto cat : *categories) + for (const auto& cat : *categories) { const std::string& catName = cat->getName(); if (catName.compare(ROOT_AO_FOLDER) == 0) @@ -1975,8 +1973,8 @@ bool AOEngine::importNotecard(const LLInventoryItem* item) gAssetStorage->getInvItemAsset( sourceSim, - gAgent.getID(), - gAgent.getSessionID(), + gAgentID, + gAgentSessionID, item->getPermissions().getOwner(), LLUUID::null, item->getUUID(), @@ -2013,8 +2011,8 @@ void AOEngine::onNotecardLoadComplete(const LLUUID& assetUUID, LLAssetType::ETyp char* buffer = new char[notecardSize + 1]; buffer[notecardSize] = 0; - S32 ret = file.read((U8*)buffer, notecardSize); - if (ret > 0) + BOOL ret = file.read((U8*)buffer, notecardSize); + if (ret) { AOEngine::instance().parseNotecard(buffer); } @@ -2046,17 +2044,17 @@ void AOEngine::parseNotecard(const char* buffer) std::vector lines; LLStringUtil::getTokens(text, lines, "\n"); - S32 found = -1; - for (U32 index = 0; index < lines.size(); ++index) + bool found{ false }; + for (const auto& line : lines) { - if (lines[index].find("Text length ") == 0) + if (line.find("Text length ") == 0) { - found = index; + found = true; break; } } - if (found == -1) + if (!found) { LLNotificationsUtil::add("AOImportNoText", LLSD()); delete mImportSet; @@ -2080,7 +2078,7 @@ void AOEngine::parseNotecard(const char* buffer) LLInventoryModel::item_array_t* items; gInventory.getDirectDescendentsOf(mImportSet->getInventoryUUID(), dummy, items); - for (U32 index = 0; index < items->size(); ++index) + for (auto index = 0; index < items->size(); ++index) { animationMap[items->at(index)->getName()] = items->at(index)->getUUID(); LL_DEBUGS("AOEngine") << "animation " << items->at(index)->getName() << @@ -2088,7 +2086,7 @@ void AOEngine::parseNotecard(const char* buffer) } // [ State ]Anim1|Anim2|Anim3 - for (U32 index = found + 1; index < lines.size(); ++index) + for (auto index = found + 1; index < lines.size(); ++index) { std::string line = lines[index]; @@ -2125,7 +2123,7 @@ void AOEngine::parseNotecard(const char* buffer) LLNotificationsUtil::add("AOImportNoValidDelimiter", args); continue; } - U32 endTag = line.find("]"); + auto endTag = line.find("]"); std::string stateName = line.substr(1, endTag - 1); LLStringUtil::trim(stateName); @@ -2143,7 +2141,7 @@ void AOEngine::parseNotecard(const char* buffer) std::vector animationList; LLStringUtil::getTokens(animationLine, animationList, "|,"); - for (U32 animIndex = 0; animIndex < animationList.size(); ++animIndex) + for (auto animIndex = 0; animIndex < animationList.size(); ++animIndex) { AOSet::AOAnimation animation; animation.mName = animationList[animIndex]; @@ -2182,46 +2180,46 @@ void AOEngine::processImport(bool from_timer) { bool success = addSet(mImportSet->getName(), [this, from_timer](const LLUUID& new_cat_id) { - mImportCategory = new_cat_id; - mImportSet->setInventoryUUID(mImportCategory); + mImportCategory = new_cat_id; + mImportSet->setInventoryUUID(mImportCategory); - bool allComplete = true; - for (S32 index = 0; index < AOSet::AOSTATES_MAX; ++index) + bool allComplete = true; + for (S32 index = 0; index < AOSet::AOSTATES_MAX; ++index) + { + AOSet::AOState* state = mImportSet->getState(index); + if (!state->mAnimations.empty()) { - AOSet::AOState* state = mImportSet->getState(index); - if (state->mAnimations.size()) - { - allComplete = false; - LL_DEBUGS("AOEngine") << "state " << state->mName << " still has animations to link." << LL_ENDL; + allComplete = false; + LL_DEBUGS("AOEngine") << "state " << state->mName << " still has animations to link." << LL_ENDL; - for (S32 animationIndex = state->mAnimations.size() - 1; animationIndex >= 0; --animationIndex) + for (auto animationIndex = state->mAnimations.size() - 1; animationIndex >= 0; --animationIndex) + { + LL_DEBUGS("AOEngine") << "linking animation " << state->mAnimations[animationIndex].mName << LL_ENDL; + if (createAnimationLink(mImportSet, state, gInventory.getItem(state->mAnimations[animationIndex].mInventoryUUID))) { - LL_DEBUGS("AOEngine") << "linking animation " << state->mAnimations[animationIndex].mName << LL_ENDL; - if (createAnimationLink(mImportSet, state, gInventory.getItem(state->mAnimations[animationIndex].mInventoryUUID))) - { - LL_DEBUGS("AOEngine") << "link success, size " << state->mAnimations.size() << ", removing animation " - << (*(state->mAnimations.begin() + animationIndex)).mName << " from import state" << LL_ENDL; - state->mAnimations.erase(state->mAnimations.begin() + animationIndex); - LL_DEBUGS("AOEngine") << "deleted, size now: " << state->mAnimations.size() << LL_ENDL; - } - else - { - LLSD args; - args["NAME"] = state->mAnimations[animationIndex].mName; - LLNotificationsUtil::add("AOImportLinkFailed", args); - } + LL_DEBUGS("AOEngine") << "link success, size " << state->mAnimations.size() << ", removing animation " + << (*(state->mAnimations.begin() + animationIndex)).mName << " from import state" << LL_ENDL; + state->mAnimations.erase(state->mAnimations.begin() + animationIndex); + LL_DEBUGS("AOEngine") << "deleted, size now: " << state->mAnimations.size() << LL_ENDL; + } + else + { + LLSD args; + args["NAME"] = state->mAnimations[animationIndex].mName; + LLNotificationsUtil::add("AOImportLinkFailed", args); } } } + } - if (allComplete) - { - mTimerCollection.enableImportTimer(false); - mOldImportSets.push_back(mImportSet); // FIRE-3801; Cannot delete here, or LLInstanceTracker gets upset. Just remember and delete mOldImportSets once we can. - mImportSet = nullptr; - mImportCategory.setNull(); - reload(from_timer); - } + if (allComplete) + { + mTimerCollection.enableImportTimer(false); + mOldImportSets.push_back(mImportSet); // FIRE-3801; Cannot delete here, or LLInstanceTracker gets upset. Just remember and delete mOldImportSets once we can. + mImportSet = nullptr; + mImportCategory.setNull(); + reload(from_timer); + } }, false); if (!success) @@ -2293,8 +2291,7 @@ void AOEngine::onRegionChange() } // do nothing if no AO animation is playing (e.g. smart sit cancel) - LLUUID animation = state->mCurrentAnimationID; - if (animation.isNull()) + if (LLUUID animation = state->mCurrentAnimationID; animation.isNull()) { return; } diff --git a/indra/newview/aoset.cpp b/indra/newview/aoset.cpp index 18f5b5621e..e08a8ffe69 100644 --- a/indra/newview/aoset.cpp +++ b/indra/newview/aoset.cpp @@ -117,7 +117,7 @@ AOSet::AOSet(const LLUUID inventoryID) mStates[index].mRandom = false; mStates[index].mCycleTime = 0.0f; mStates[index].mDirty = false; - mStateNames.push_back(stateNameList[0]); + mStateNames.emplace_back(stateNameList[0]); } stopTimer(); } @@ -137,7 +137,7 @@ AOSet::AOState* AOSet::getStateByName(const std::string& name) for (S32 index = 0; index < AOSTATES_MAX; ++index) { AOState* state = &mStates[index]; - for (U32 names = 0; names < state->mAlternateNames.size(); ++names) + for (auto names = 0; names < state->mAlternateNames.size(); ++names) { if (state->mAlternateNames[names].compare(name) == 0) { @@ -170,7 +170,7 @@ const LLUUID& AOSet::getAnimationForState(AOState* state) const { if (state) { - S32 numOfAnimations = state->mAnimations.size(); + auto numOfAnimations = state->mAnimations.size(); if (numOfAnimations) { if (state->mCycle) diff --git a/indra/newview/fslslbridge.cpp b/indra/newview/fslslbridge.cpp index e57a92469d..bbd51c4083 100644 --- a/indra/newview/fslslbridge.cpp +++ b/indra/newview/fslslbridge.cpp @@ -177,7 +177,7 @@ bool FSLSLBridge::lslToViewer(std::string_view message, const LLUUID& fromID, co return false; } std::string_view tag = message.substr(0, tagend + 1); - std::string ourBridge = getBridgeFolder().asString(); + std::string ourBridge = findFSCategory().asString(); // FIRE-962 bool bridgeIsEnabled = gSavedSettings.getBOOL("UseLSLBridge"); @@ -214,7 +214,7 @@ bool FSLSLBridge::lslToViewer(std::string_view message, const LLUUID& fromID, co // If something that looks like our current bridge is attached but failed auth, detach and recreate. - const LLUUID catID = getBridgeFolder(); + const LLUUID catID = findFSCategory(); LLViewerInventoryItem* fsBridge = findInvObject(mCurrentFullName, catID); if (fsBridge && get_is_item_worn(fsBridge->getUUID())) { @@ -252,7 +252,7 @@ bool FSLSLBridge::lslToViewer(std::string_view message, const LLUUID& fromID, co if (!mpBridge) { - LLUUID catID = getBridgeFolder(); + LLUUID catID = findFSCategory(); LLViewerInventoryItem* fsBridge = findInvObject(mCurrentFullName, catID); mpBridge = fsBridge; } @@ -643,18 +643,19 @@ void FSLSLBridge::recreateBridge() //announce yourself report_to_nearby_chat(LLTrans::getString("fsbridge_creating")); - LLUUID catID = getBridgeFolder(); - - FSLSLBridgeInventoryPreCreationCleanupObserver* bridgeInventoryObserver = new FSLSLBridgeInventoryPreCreationCleanupObserver(catID); - bridgeInventoryObserver->startFetch(); - if (bridgeInventoryObserver->isFinished()) - { - bridgeInventoryObserver->done(); - } - else - { - gInventory.addObserver(bridgeInventoryObserver); - } + setupFSCategory([](const LLUUID& bridge_folder_id) + { + FSLSLBridgeInventoryPreCreationCleanupObserver* bridgeInventoryObserver = new FSLSLBridgeInventoryPreCreationCleanupObserver(bridge_folder_id); + bridgeInventoryObserver->startFetch(); + if (bridgeInventoryObserver->isFinished()) + { + bridgeInventoryObserver->done(); + } + else + { + gInventory.addObserver(bridgeInventoryObserver); + } + }); } void FSLSLBridge::cleanUpPreCreation() @@ -787,51 +788,53 @@ void FSLSLBridge::startCreation() LL_INFOS("FSLSLBridge") << "startCreation called. gInventory.isInventoryUsable = " << (gInventory.isInventoryUsable() ? "true" : "false") << LL_ENDL; //if bridge object doesn't exist - create and attach it, update script. - const LLUUID catID = getBridgeFolder(); - LLViewerInventoryItem* fsBridge = findInvObject(mCurrentFullName, catID); - - //detach everything else - LL_INFOS("FSLSLBridge") << "Detaching other bridges..." << LL_ENDL; - detachOtherBridges(); - - if (!fsBridge) - { - LL_INFOS("FSLSLBridge") << "Bridge not found in inventory, creating new one..." << LL_ENDL; - // Don't create on OpenSim. We need to fallback to another creation process there, unfortunately. - // There is no way to ensure a rock object will ever be in a grid's Library. -#if OPENSIM - if (LLGridManager::getInstance()->isInOpenSim()) + setupFSCategory([this](const LLUUID& bridge_folder_id) { - return; - } -#endif - setBridgeCreating(true); - mFinishCreation = false; - //announce yourself - report_to_nearby_chat(LLTrans::getString("fsbridge_creating")); + LLViewerInventoryItem* fsBridge = findInvObject(mCurrentFullName, bridge_folder_id); - createNewBridge(); - } - else - { - //TODO need versioning - see isOldBridgeVersion() - mpBridge = fsBridge; - if (!isItemAttached(mpBridge->getUUID())) - { - if (!LLAppearanceMgr::instance().getIsInCOF(mpBridge->getUUID())) + //detach everything else + LL_INFOS("FSLSLBridge") << "Detaching other bridges..." << LL_ENDL; + detachOtherBridges(); + + if (!fsBridge) { - LL_INFOS("FSLSLBridge") << "Bridge not attached but found in inventory, reattaching..." << LL_ENDL; + LL_INFOS("FSLSLBridge") << "Bridge not found in inventory, creating new one..." << LL_ENDL; + // Don't create on OpenSim. We need to fallback to another creation process there, unfortunately. + // There is no way to ensure a rock object will ever be in a grid's Library. +#if OPENSIM + if (LLGridManager::getInstance()->isInOpenSim()) + { + return; + } +#endif + setBridgeCreating(true); + mFinishCreation = false; + //announce yourself + report_to_nearby_chat(LLTrans::getString("fsbridge_creating")); - //Is this a valid bridge - wear it. - LLAttachmentsMgr::instance().addAttachmentRequest(mpBridge->getUUID(), FS_BRIDGE_POINT, TRUE, TRUE); - //from here, the attach should report to ProcessAttach and make sure bridge is valid. + createNewBridge(); } else { - LL_INFOS("FSLSLBridge") << "Bridge not found but in CoF. Waiting for automatic attach..." << LL_ENDL; + //TODO need versioning - see isOldBridgeVersion() + mpBridge = fsBridge; + if (!isItemAttached(mpBridge->getUUID())) + { + if (!LLAppearanceMgr::instance().getIsInCOF(mpBridge->getUUID())) + { + LL_INFOS("FSLSLBridge") << "Bridge not attached but found in inventory, reattaching..." << LL_ENDL; + + //Is this a valid bridge - wear it. + LLAttachmentsMgr::instance().addAttachmentRequest(mpBridge->getUUID(), FS_BRIDGE_POINT, TRUE, TRUE); + //from here, the attach should report to ProcessAttach and make sure bridge is valid. + } + else + { + LL_INFOS("FSLSLBridge") << "Bridge not found but in CoF. Waiting for automatic attach..." << LL_ENDL; + } + } } - } - } + }); } void FSLSLBridge::createNewBridge() diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index aea139d273..88bdb074cf 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -1423,7 +1423,7 @@ void LLInventoryGallery::onFocusReceived() LLInventoryGalleryItem* focus_item = NULL; for (const LLUUID& id : mSelectedItemIDs) { - if (mItemMap[id]) + if (mItemMap[id] && !mItemMap[id]->isHidden()) { focus_item = mItemMap[id]; focus_item->setSelected(true); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 043c944c96..d355bf9491 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -876,7 +876,8 @@ void LLSpatialGroup::rebound() LLControlAvatar* controlAvatar = bridge->mDrawable->getVObj()->getControlAvatar(); if (controlAvatar && controlAvatar->mDrawable && - controlAvatar->mControlAVBridge) + controlAvatar->mControlAVBridge && + controlAvatar->mControlAVBridge->mOctree)// FIRE-33367 toggling animesh state off causes a crash { llassert(controlAvatar->mControlAVBridge->mOctree); diff --git a/indra/newview/permissionstracker.cpp b/indra/newview/permissionstracker.cpp index db01feee27..6be41f59be 100644 --- a/indra/newview/permissionstracker.cpp +++ b/indra/newview/permissionstracker.cpp @@ -43,7 +43,7 @@ #include "permissionstracker.h" -#define PERMISSION_ENTRY_EXPIRY_TIME 3600.0 +constexpr F64 PERMISSION_ENTRY_EXPIRY_TIME{ 3600.0 }; PermissionsTracker::PermissionsTracker() : LLSingleton() @@ -63,18 +63,13 @@ void PermissionsTracker::addPermissionsEntry(const LLUUID& source_id, Permission mPermissionsList[source_id].objectName = LLTrans::getString("LoadingData"); // find out if the object is still in reach - LLViewerObject* vo = gObjectList.findObject(source_id); - if (!vo) - { - mPermissionsList[source_id].objectName = LLTrans::getString("ObjectOutOfRange"); - } - else + if (LLViewerObject* vo = gObjectList.findObject(source_id); vo && isAgentAvatarValid() && gAgentAvatarp->getRegion()) { mPermissionsList[source_id].attachmentID = vo->getAttachmentItemID(); LL_DEBUGS("PermissionsTracker") << "Requesting ObjectProperties for source " << source_id << LL_ENDL; // remember which object names we already requested - mRequestedIDs.push_back(source_id); + mRequestedIDs.emplace_back(source_id); // send a request out to get this object's details LLMessageSystem* msg = gMessageSystem; @@ -95,6 +90,10 @@ void PermissionsTracker::addPermissionsEntry(const LLUUID& source_id, Permission msg->addU32Fast(_PREHASH_ObjectLocalID, vo->getLocalID()); msg->sendReliable(gAgentAvatarp->getRegion()->getHost()); } + else + { + mPermissionsList[source_id].objectName = LLTrans::getString("ObjectOutOfRange"); + } } LL_DEBUGS("PermissionsTracker") << "Adding permission type " << permission_type << " to source " << source_id << LL_ENDL; @@ -141,7 +140,7 @@ void PermissionsTracker::purgePermissionsEntries() void PermissionsTracker::warnFollowcam() { std::string followcamList; - for (auto entry : mPermissionsList) + for (const auto& entry : mPermissionsList) { if (entry.second.type & PermissionsTracker::PERM_FOLLOWCAM) { @@ -167,8 +166,7 @@ void PermissionsTracker::warnFollowcam() std::string slurl = args["slurl"].asString(); if (slurl.empty()) { - LLViewerRegion* region = LLWorld::instance().getRegionFromPosAgent(gAgentAvatarp->getPositionAgent()); - if(region) + if (LLViewerRegion* region = LLWorld::instance().getRegionFromPosAgent(gAgentAvatarp->getPositionAgent()); region) { LLSLURL region_slurl(region->getName(), gAgentAvatarp->getPositionAgent()); slurl = region_slurl.getLocationString(); @@ -208,9 +206,8 @@ void PermissionsTracker::objectPropertiesCallback(LLMessageSystem* msg) LLUUID source_id; msg->getUUIDFast(_PREHASH_ObjectData, _PREHASH_ObjectID, source_id, index); - auto iter = std::find(mRequestedIDs.begin(), mRequestedIDs.end(), source_id); // if this is one of the objects we were looking for, process the data - if (iter != mRequestedIDs.end()) + if (auto iter = std::find(mRequestedIDs.begin(), mRequestedIDs.end(), source_id); iter != mRequestedIDs.end()) { // get the name of the object std::string object_name; @@ -235,15 +232,12 @@ void PermissionsTracker::objectPropertiesCallback(LLMessageSystem* msg) << ": " << avatar_name.getCompleteName() << LL_ENDL; mPermissionsList[source_id].ownerName = avatar_name.getCompleteName(); } - else + else if (mAvatarNameCacheConnections.find(object_owner) != mAvatarNameCacheConnections.end()) { - if (mAvatarNameCacheConnections.find(object_owner) != mAvatarNameCacheConnections.end()) - { - boost::signals2::connection cb_connection = LLAvatarNameCache::get(object_owner, boost::bind(&PermissionsTracker::avatarNameCallback, this, _1, _2)); - mAvatarNameCacheConnections.insert(std::make_pair(object_owner, cb_connection)); + boost::signals2::connection cb_connection = LLAvatarNameCache::get(object_owner, boost::bind(&PermissionsTracker::avatarNameCallback, this, _1, _2)); + mAvatarNameCacheConnections.insert(std::make_pair(object_owner, cb_connection)); - LL_DEBUGS("PermissionsTracker") << "Requesting avatar name for owner " << object_owner.asString() << LL_ENDL; - } + LL_DEBUGS("PermissionsTracker") << "Requesting avatar name for owner " << object_owner.asString() << LL_ENDL; } } } @@ -253,8 +247,7 @@ void PermissionsTracker::avatarNameCallback(const LLUUID& avatar_id, const LLAva { LL_DEBUGS("PermissionsTracker") << "Received avatar name " << avatar_name.getCompleteName() << LL_ENDL; - auto iter = mAvatarNameCacheConnections.find(avatar_id); - if (iter != mAvatarNameCacheConnections.end()) + if (auto iter = mAvatarNameCacheConnections.find(avatar_id); iter != mAvatarNameCacheConnections.end()) { if (iter->second.connected()) { @@ -263,7 +256,7 @@ void PermissionsTracker::avatarNameCallback(const LLUUID& avatar_id, const LLAva mAvatarNameCacheConnections.erase(iter); } - for (auto entry : mPermissionsList) + for (auto& entry : mPermissionsList) { if (entry.second.ownerID == avatar_id) { diff --git a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml index c984dbe5f7..c85b43505f 100644 --- a/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml +++ b/indra/newview/skins/default/xui/en/floater_change_item_thumbnail.xml @@ -3,6 +3,7 @@ can_resize="false" height="366" layout="topleft" + save_rect="true" name="change_item_thumbnail" help_topic="change_item_thumbnail" title="Change Item Image" diff --git a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml index b5e5698f59..7c919f4c3a 100644 --- a/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/vintage/xui/en/panel_main_inventory.xml @@ -81,6 +81,63 @@ function="Floater.Toggle" parameter="fs_protectedfolders" /> + + + + + + + + + + + + + + + + + + + + + + Pobrano [ITEM_COUNT] elementów [FILTER] + + Szafa + @@ -16,6 +19,10 @@ + + + + @@ -62,6 +69,9 @@ + + + @@ -77,7 +87,17 @@ - + + +