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
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 @@
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
+
-
+
+
+
+
+
+
+
+
+
+
+
@@ -98,12 +118,14 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Elementy
diff --git a/indra/newview/streamtitledisplay.cpp b/indra/newview/streamtitledisplay.cpp
index a8a7466949..f16881833d 100644
--- a/indra/newview/streamtitledisplay.cpp
+++ b/indra/newview/streamtitledisplay.cpp
@@ -43,6 +43,14 @@
#include "message.h"
#include
+StreamTitleDisplay::~StreamTitleDisplay()
+{
+ if (mMetadataUpdateConnection.connected())
+ {
+ mMetadataUpdateConnection.disconnect();
+ }
+}
+
void StreamTitleDisplay::initSingleton()
{
if (!gAudiop || !gAudiop->getStreamingAudioImpl())
diff --git a/indra/newview/streamtitledisplay.h b/indra/newview/streamtitledisplay.h
index 8a3ded3eaa..1430ef9b13 100644
--- a/indra/newview/streamtitledisplay.h
+++ b/indra/newview/streamtitledisplay.h
@@ -37,14 +37,14 @@ class StreamTitleDisplay : public LLSingleton
LLSINGLETON_EMPTY_CTOR(StreamTitleDisplay);
public:
- ~StreamTitleDisplay() { }
+ ~StreamTitleDisplay();
protected:
void initSingleton() /*override*/;
void checkMetadata(const LLSD& metadata);
void sendStreamTitleToChat(std::string_view Title);
- boost::signals2::connection mMetadataUpdateConnection;
+ boost::signals2::connection mMetadataUpdateConnection{};
};
#endif // STREAMTITLEDISPLAY_H
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index cfb4144da9..fe44b5a62f 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1972,12 +1972,10 @@ class LinuxManifest(ViewerManifest):
# CEF files
with self.prefix(src=os.path.join(pkgdir, 'lib', 'release'), dst="lib"):
self.path( "libcef.so" )
+ self.path( "libEGL.so" )
+ self.path( "libGLESv2.so" )
+ self.path( "libvk_swiftshader.so" )
self.path_optional( "libminigbm.so" )
-
- with self.prefix(src=os.path.join(pkgdir, 'lib', 'release', 'swiftshader'), dst=os.path.join("bin", "swiftshader") ):
- self.path( "*.so" )
- with self.prefix(src=os.path.join(pkgdir, 'lib', 'release', 'swiftshader'), dst=os.path.join("lib", "swiftshader") ):
- self.path( "*.so" )
with self.prefix(src=os.path.join(pkgdir, 'bin', 'release'), dst="bin"):
self.path( "chrome-sandbox" )
@@ -1999,7 +1997,7 @@ class LinuxManifest(ViewerManifest):
self.path( "resources.pak" )
self.path( "icudtl.dat" )
- with self.prefix(src=os.path.join(pkgdir, 'resources', 'locales'), dst=os.path.join('bin', 'locales')):
+ with self.prefix(src=os.path.join(pkgdir, 'resources', 'locales'), dst=os.path.join('lib', 'locales')):
self.path("am.pak")
self.path("ar.pak")
self.path("bg.pak")