Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
# Conflicts: # indra/newview/lldrawable.cppmaster
commit
198bd5cfc0
|
|
@ -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 }}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
134
autobuild.xml
134
autobuild.xml
|
|
@ -28,7 +28,7 @@
|
|||
<key>hash</key>
|
||||
<string>535006965531b4a92e4951ee8dbe2745</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/SDL2-2.28.4-linux64-232750919.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/SDL2-2.28.4-linux64-232750919.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
<key>hash</key>
|
||||
<string>01f39ecf80dae64e30402ac384035b3e</string>
|
||||
<key>url</key>
|
||||
<string>http://downloads.phoenixviewer.com/gstreamer10-1.6.3.201605191852-linux-201605191852.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/gstreamer10-1.6.3.201605191852-linux-201605191852.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
<key>hash</key>
|
||||
<string>482c2b25bbfd25edc058a02f82da39b2</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/breakpad-4708e6fb-linux64_bionic-220392253.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/breakpad-4708e6fb-linux64_bionic-220392253.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
<key>hash</key>
|
||||
<string>80d157facdba399b3a59c400e29cb625</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/glib-2.64.6.230870115-linux64-230870115.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/glib-2.64.6.230870115-linux64-230870115.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -140,7 +140,7 @@
|
|||
<key>hash</key>
|
||||
<string>81fe1e927e4fe3c5e5f15ce6219ca883</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/fltk-1.3.5.202282121-linux64-202282121.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/fltk-1.3.5.202282121-linux64-202282121.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -170,7 +170,7 @@
|
|||
<key>hash</key>
|
||||
<string>0008a7b291fa1863ba41424b4e3ac302</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/jemalloc-5.3.0-linux64-222631217.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/jemalloc-5.3.0-linux64-222631217.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -196,7 +196,7 @@
|
|||
<key>hash</key>
|
||||
<string>7d375112b162e32e37262da4a6c0a702</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-202330107.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-202330107.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -208,7 +208,7 @@
|
|||
<key>hash</key>
|
||||
<string>c266a8d6124fc11e41a82c288f2bf8e4</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/ndPhysicsStub-1.202321033-linux64-202321033.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/ndPhysicsStub-1.202321033-linux64-202321033.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
<key>hash</key>
|
||||
<string>02f70159e14c7b7213b22a0225508c46</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/ndPhysicsStub-1.0-windows64-202121823.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/ndPhysicsStub-1.0-windows64-202121823.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
<key>hash</key>
|
||||
<string>94fc457c46e1fb94b31251bd4747d10f</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -258,7 +258,7 @@
|
|||
<key>hash</key>
|
||||
<string>acc1181cd31ef32c3724eda84ae4b580</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/glod-1.0pre3.180990827-linux64-180990827.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/glod-1.0pre3.180990827-linux64-180990827.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -270,7 +270,7 @@
|
|||
<key>hash</key>
|
||||
<string>e906cf08bfbfbd9d4fc78557e021e7d0</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -298,7 +298,7 @@
|
|||
<key>hash</key>
|
||||
<string>33300134846d0f00ac4f31c1a190e3e6</string>
|
||||
<key>url</key>
|
||||
<uri>http://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -310,7 +310,7 @@
|
|||
<key>hash</key>
|
||||
<string>af06208ec80b1f170cc560141602e2dc</string>
|
||||
<key>url</key>
|
||||
<uri>http://3p.firestormviewer.org/libnotify-0.4.4-linux-20101003.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/libnotify-0.4.4-linux-20101003.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -322,7 +322,7 @@
|
|||
<key>hash</key>
|
||||
<string>a333b335104b3d0df14b9be005ef1571</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -350,7 +350,7 @@
|
|||
<key>hash</key>
|
||||
<string>f63f07d4c87fbbb698b9039583f08b76</string>
|
||||
<key>url</key>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-windows64-192581529.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/discord_rpc-3.4.0-windows64-192581529.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -362,7 +362,7 @@
|
|||
<key>hash</key>
|
||||
<string>cefa1cdb50a85e36114ca89df66c0b5a</string>
|
||||
<key>url</key>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-linux64-192540843.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/discord_rpc-3.4.0-linux64-192540843.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -374,7 +374,7 @@
|
|||
<key>hash</key>
|
||||
<string>3bc297a0fa47094bb52d361f80186387</string>
|
||||
<key>url</key>
|
||||
<uri>http://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2</uri>
|
||||
<uri>https://3p.firestormviewer.org/discord_rpc-3.4.0-darwin64-192522358.tar.bz2</uri>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -392,7 +392,7 @@
|
|||
<key>hash</key>
|
||||
<string>64c1dff0e19792acec7fd32556bf4d7b</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/SDL-1.2.15-linux64-181411635.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/SDL-1.2.15-linux64-181411635.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -486,7 +486,7 @@
|
|||
<key>hash</key>
|
||||
<string>1c341bdbb5fd0c8a8930f76e6c1647d4</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/apr_suite-1.4.5.230921251-linux64-230921251.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/apr_suite-1.4.5.230921251-linux64-230921251.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -544,7 +544,7 @@
|
|||
<key>hash</key>
|
||||
<string>8d96a9d1a9a208b1f48ac677edb7ca4d</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/boost-1.72-linux64-222121224.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/boost-1.72-linux64-222121224.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -762,7 +762,7 @@
|
|||
<key>hash</key>
|
||||
<string>8e92fc9ec2b3be6d2a5387fc283f954f</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/curl-8.3.0.232750741-linux64-232750741.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/curl-8.3.0.232750741-linux64-232750741.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -806,7 +806,7 @@
|
|||
<key>hash</key>
|
||||
<string>2d59bb6f4bd38a18d9250ff010a13b59</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/dictionaries-2.46203-common-46203.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/dictionaries-2.46203-common-46203.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>common</string>
|
||||
|
|
@ -848,9 +848,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ad7b9fc10184e8145731f45ae400bfd1</string>
|
||||
<string>c539c58aee1d010928ae29ad344656a5</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/dullahan-1.12.2.202210012157_92.0.27_g274abcf_chromium-92.0.4515.159-linux64-222741156.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/dullahan-1.14.0.202311061750_118.6.8_ge44bee1_chromium-118.0.5993.117-linux64-233100650.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -908,7 +908,7 @@
|
|||
<key>hash</key>
|
||||
<string>39702f98867a319b090ee04f22d82762</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/expat-2.5.0.230021327-linux64-230021327.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/expat-2.5.0.230021327-linux64-230021327.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -949,14 +949,12 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>8ee7c21f3f109cf4e1709e4af0b4bebf</string>
|
||||
<string>bfcc4acbe6b8dddaf10f0f7a47e4aad8</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.17-darwin64-232401806.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.18-darwin64-232960129.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -965,8 +963,6 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>14846f1a55274399362db4b674fcded6</string>
|
||||
<key>hash_algorithm</key>
|
||||
|
|
@ -981,8 +977,6 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>7b38bd83eb63f25df7c5a20070a05732</string>
|
||||
<key>hash_algorithm</key>
|
||||
|
|
@ -1018,7 +1012,7 @@
|
|||
<key>hash</key>
|
||||
<string>6fdcfcc9aa1d01164c0f7ca5590859bb</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/fontconfig-2.12.6-linux64-223020909.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/fontconfig-2.12.6-linux64-223020909.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1062,7 +1056,7 @@
|
|||
<key>hash</key>
|
||||
<string>41db760508e6b48ae3a291ad2d1aef3d</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/freetype-2.8.1.223020901-linux64-223020901.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/freetype-2.8.1.223020901-linux64-223020901.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1074,7 +1068,7 @@
|
|||
<key>hash</key>
|
||||
<string>2c2151b439cf92e03d9573dddbbdd3b6</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/freetype-2.3.9.232991153-windows64-232991153.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/freetype-2.3.9.232991153-windows64-232991153.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
|
|
@ -1182,7 +1176,7 @@
|
|||
<key>hash</key>
|
||||
<string>ff459b58695c76838782847a0b792104</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9697/45717/googlemock-1.7.0.509686-linux64-509686.tar.bz2</string>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9697/45717/googlemock-1.7.0.509686-linux64-509686.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1226,7 +1220,7 @@
|
|||
<key>hash</key>
|
||||
<string>86a358f1b5a2c2baf68444b2bfc5bb32</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1330,7 +1324,7 @@
|
|||
<key>hash</key>
|
||||
<string>fd8060aa3c920e0fc63e7ecbea67bc5e</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/jpegencoderbasic-1.0-linux64-213500937.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/jpegencoderbasic-1.0-linux64-213500937.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1386,7 +1380,7 @@
|
|||
<key>hash</key>
|
||||
<string>324bb9deb00d256a12f8cbf686f413f0</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/jpeglib-8c.180841548-linux64-180841548.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/jpeglib-8c.180841548-linux64-180841548.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1444,7 +1438,7 @@
|
|||
<key>hash</key>
|
||||
<string>352ab340f2091c93eb313cf80ac0c8cc</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1485,8 +1479,6 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>3142fccbcc0e2c5a019e3177ef364290</string>
|
||||
<key>url</key>
|
||||
|
|
@ -1499,8 +1491,6 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>e13d6fe708613bb3a5d630c4cdd97a3b</string>
|
||||
<key>url</key>
|
||||
|
|
@ -1513,8 +1503,6 @@
|
|||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>creds</key>
|
||||
<string>github</string>
|
||||
<key>hash</key>
|
||||
<string>4aa7df19125708580055b42190d2511e</string>
|
||||
<key>url</key>
|
||||
|
|
@ -1562,7 +1550,7 @@
|
|||
<key>hash</key>
|
||||
<string>6555f040c686d8c1dec8e6264c2d3672</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1666,7 +1654,7 @@
|
|||
<key>hash</key>
|
||||
<string>134089ec8c1eead9436b69c326790fc0</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/libpng-1.6.38.222890126-linux64-222890126.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/libpng-1.6.38.222890126-linux64-222890126.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1710,7 +1698,7 @@
|
|||
<key>hash</key>
|
||||
<string>f3cc32c84b99f1277370ce88a0faf40e</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/libuuid-1.6.2-linux64-180841554.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/libuuid-1.6.2-linux64-180841554.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1754,7 +1742,7 @@
|
|||
<key>hash</key>
|
||||
<string>d72c6d8db827ce3d83c5703f519a2ac9</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/libxml2-2.10.3.230940019-linux64-230940019.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/libxml2-2.10.3.230940019-linux64-230940019.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1923,7 +1911,7 @@
|
|||
<key>hash</key>
|
||||
<string>f290b000b31f9e36f2489946cbc99f5e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59995/563653/llphysicsextensions_stub-1.0.542456-darwin64-542456.tar.bz2</string>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/59995/563653/llphysicsextensions_stub-1.0.542456-darwin64-542456.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1935,7 +1923,7 @@
|
|||
<key>hash</key>
|
||||
<string>711f4ec769e4b5f59ba25ee43c11bcbc</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2</string>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1947,7 +1935,7 @@
|
|||
<key>hash</key>
|
||||
<string>2e5f1f7046a49d8b0bc295aa878116bc</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60043/564063/llphysicsextensions_stub-1.0.542456-windows-542456.tar.bz2</string>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/60043/564063/llphysicsextensions_stub-1.0.542456-windows-542456.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1987,7 +1975,7 @@
|
|||
<key>hash</key>
|
||||
<string>711f4ec769e4b5f59ba25ee43c11bcbc</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2</string>
|
||||
<string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/4724/14846/llphysicsextensions_stub-1.0.504712-linux64-504712.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2027,7 +2015,7 @@
|
|||
<key>hash</key>
|
||||
<string>22c50a5d362cad311b4f413cfcffbba2</string>
|
||||
<key>url</key>
|
||||
<string>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</string>
|
||||
<string>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</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -2067,7 +2055,7 @@
|
|||
<key>hash</key>
|
||||
<string>50d647afc4e510af72f09dcd7a77e920</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/meshoptimizer-0.16.222121104-linux64-222121104.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/meshoptimizer-0.16.222121104-linux64-222121104.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2127,7 +2115,7 @@
|
|||
<key>hash</key>
|
||||
<string>ee4e3a02ad4669a4d84e9c32e509530e</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/minizip_ng-3.0.2.222121607-linux64-222121607.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/minizip_ng-3.0.2.222121607-linux64-222121607.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2187,7 +2175,7 @@
|
|||
<key>hash</key>
|
||||
<string>57670eaa6333d9127b8ba88f120e56dd</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/nghttp2-1.56.0.232750738-linux64-232750738.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/nghttp2-1.56.0.232750738-linux64-232750738.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2280,7 +2268,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>03b7df0406d7588c4fb49c2ddf0d8264</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.202241500-linux64-202241500.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.202241500-linux64-202241500.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2336,7 +2324,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>b329ed955ac63da45957d39f601e85af</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/open_libndofdev-0.13.232750923-linux64-232750923.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/open_libndofdev-0.13.232750923-linux64-232750923.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2356,7 +2344,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>4f36ae378593240701fd4453bd6074c8</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2428,7 +2416,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>b1dad7c841118a3b6e03a01722d1846a</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/openjpeg-2.5.0.230362345-linux64-230362345.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/openjpeg-2.5.0.230362345-linux64-230362345.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2486,7 +2474,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>a3b2dbffa28a2b2a63c5d3ce2c12bc85</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/openssl-1.1.1w.232750656-linux64-232750656.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/openssl-1.1.1w.232750656-linux64-232750656.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2544,7 +2532,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>742a145c1518b9dc195ae0862828e6ae</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/pcre-8.35.202021522-linux64-202021522.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/pcre-8.35.202021522-linux64-202021522.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2600,7 +2588,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>db89d5ce9695457cc1e94cf657678f1a</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/slvoice-3.2-linux64-222532329.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/slvoice-3.2-linux64-222532329.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2656,7 +2644,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>d37be064bd851276dab423d723cb9b7d</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/threejs-0.132.2-linux64-213500940.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/threejs-0.132.2-linux64-213500940.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2796,7 +2784,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>0d6832fd958ec127f089e683c9b67169</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/uriparser-0.9.4-linux64-211210958.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/uriparser-0.9.4-linux64-211210958.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -2960,11 +2948,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ad0c8b41ee4b4de216382bec46ee1c25962a3f12</string>
|
||||
<string>71a9c7c03a2c26cdb21fa476de485d9c</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst</string>
|
||||
<string>https://3p.firestormviewer.org/xmlrpc_epi-0.54.2.230940042-linux64-230940042.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -3094,7 +3082,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>hash</key>
|
||||
<string>5ee7cda65cede06190c811e59b3880b0</string>
|
||||
<key>url</key>
|
||||
<string>http://3p.firestormviewer.org/zlib_ng-2.0.5.222121000-linux64-222121000.tar.bz2</string>
|
||||
<string>https://3p.firestormviewer.org/zlib_ng-2.0.5.222121000-linux64-222121000.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<LLScrollListItem*> item_list = mAnimationList->getAllData();
|
||||
std::vector<LLScrollListItem*>::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)
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
#define ROOT_AO_FOLDER "#AO"
|
||||
#include <boost/graph/graph_concepts.hpp>
|
||||
|
||||
const F32 INVENTORY_POLLING_INTERVAL = 5.0f;
|
||||
constexpr F32 INVENTORY_POLLING_INTERVAL = 5.0f;
|
||||
|
||||
AOEngine::AOEngine() :
|
||||
LLSingleton<AOEngine>(),
|
||||
|
|
@ -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<LLInventoryObject>(item));
|
||||
LLInventoryObject::const_object_list_t obj_array{ LLConstPointer<LLInventoryObject>(item) };
|
||||
link_inventory_array(state->mInventoryUUID,
|
||||
obj_array,
|
||||
LLPointer<LLInventoryCallback>(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<std::string> 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<std::string> 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<std::string> 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<std::string> 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); //<ND/> 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); //<ND/> 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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
//</FS:TS> 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()
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -876,7 +876,8 @@ void LLSpatialGroup::rebound()
|
|||
LLControlAvatar* controlAvatar = bridge->mDrawable->getVObj()->getControlAvatar();
|
||||
if (controlAvatar &&
|
||||
controlAvatar->mDrawable &&
|
||||
controlAvatar->mControlAVBridge)
|
||||
controlAvatar->mControlAVBridge &&
|
||||
controlAvatar->mControlAVBridge->mOctree)// <FS:Beq> FIRE-33367 toggling animesh state off causes a crash
|
||||
{
|
||||
llassert(controlAvatar->mControlAVBridge->mOctree);
|
||||
|
||||
|
|
|
|||
|
|
@ -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<PermissionsTracker>()
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -81,6 +81,63 @@
|
|||
function="Floater.Toggle"
|
||||
parameter="fs_protectedfolders" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Inventory settings..."
|
||||
name="inv_settings">
|
||||
<menu_item_check.on_check
|
||||
function="Floater.Visible"
|
||||
parameter="inventory_settings" />
|
||||
<menu_item_check.on_click
|
||||
function="Floater.Toggle"
|
||||
parameter="inventory_settings" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator>
|
||||
<menu_item_separator.on_visible
|
||||
function="Inventory.GearDefault.Visible"
|
||||
parameter="single_folder_view" />
|
||||
</menu_item_separator>
|
||||
<menu_item_check
|
||||
label="List view"
|
||||
layout="topleft"
|
||||
name="list_view">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="list_view" />
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="list_view" />
|
||||
<on_visible
|
||||
function="Inventory.GearDefault.Visible"
|
||||
parameter="single_folder_view" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Gallery view"
|
||||
layout="topleft"
|
||||
name="gallery_view">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="gallery_view" />
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="gallery_view" />
|
||||
<on_visible
|
||||
function="Inventory.GearDefault.Visible"
|
||||
parameter="single_folder_view" />
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Combination view"
|
||||
layout="topleft"
|
||||
name="combination_view">
|
||||
<on_click
|
||||
function="Inventory.GearDefault.Custom.Action"
|
||||
parameter="combination_view" />
|
||||
<on_check
|
||||
function="Inventory.GearDefault.Check"
|
||||
parameter="combination_view" />
|
||||
<on_visible
|
||||
function="Inventory.GearDefault.Visible"
|
||||
parameter="single_folder_view" />
|
||||
</menu_item_check>
|
||||
<menu_item_separator />
|
||||
<menu_item_check
|
||||
label="Add objects on double click"
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
<panel.string name="ItemcountUnknown">
|
||||
Pobrano [ITEM_COUNT] elementów [FILTER]
|
||||
</panel.string>
|
||||
<panel.string name="inventory_title">
|
||||
Szafa
|
||||
</panel.string>
|
||||
<menu_bar name="inventory_menu_bar">
|
||||
<menu label="Szafa" name="inventory_inventory_menu">
|
||||
<menu_item_call name="inventory_open" label="Otwórz" />
|
||||
|
|
@ -16,6 +19,10 @@
|
|||
<menu_item_call name="replace_links" label="Zastąp linki" />
|
||||
<menu_item_call name="inventory_new_window" label="Nowe okno" />
|
||||
<menu_item_check name="Protected Folders" label="Foldery chronione" />
|
||||
<menu_item_check label="Ustawienia..." name="inv_settings" />
|
||||
<menu_item_check label="Widok listy" name="list_view" />
|
||||
<menu_item_check label="Widok galerii" name="gallery_view" />
|
||||
<menu_item_check label="Widok kombinowany" name="combination_view" />
|
||||
<menu_item_check name="add_inv_toggle" label="Dodawaj obiekty po dwukliku" />
|
||||
<menu_item_check name="add_invclothing_toggle" label="Dodawaj ubrania po dwukliku" />
|
||||
<menu_item_call name="inventory_show_filters" label="Pokaż filtry" />
|
||||
|
|
@ -62,6 +69,9 @@
|
|||
<menu_item_check name="inventory_sort_system_on_top" label="Foldery systemowe na górze" />
|
||||
</menu>
|
||||
<menu label="Szukanie" name="inventory_search_menu">
|
||||
<menu_item_check label="W strojach" name="search_outfits" />
|
||||
<menu_item_check label="W koszu" name="search_trash" />
|
||||
<menu_item_check label="W Bibliotece" name="search_library" />
|
||||
<menu_item_check name="inventory_search_by_name" label="Po nazwie" />
|
||||
<menu_item_check name="inventory_search_by_creator" label="Po twórcy" />
|
||||
<menu_item_check name="inventory_search_by_description" label="Po opisie" />
|
||||
|
|
@ -77,7 +87,17 @@
|
|||
<menu_item_check name="inventory_show_partial_results" label="Pokaż częściowe wyniki wyszukiwania" />
|
||||
</menu>
|
||||
</menu_bar>
|
||||
<filter_editor label="Filtruj Szafę" name="inventory search editor" tool_tip="Wpisz jedno lub więcej słów które chcesz wyszukać, oddzielonych za pomocą '+' "/>
|
||||
<layout_stack name="nav_stack">
|
||||
<layout_panel name="nav_buttons">
|
||||
<button name="back_btn" tool_tip="Wstecz" />
|
||||
<button name="forward_btn" tool_tip="Naprzód" />
|
||||
<button name="up_btn" tool_tip="Przejdź o jeden poziom wyżej" />
|
||||
</layout_panel>
|
||||
<layout_panel name="filter_panel">
|
||||
<filter_editor label="Filtruj Szafę" name="inventory search editor" tool_tip="Wpisz jedno lub więcej słów które chcesz wyszukać, oddzielonych za pomocą '+' "/>
|
||||
<button name="view_mode_btn" tool_tip="Przełącz między widokami" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<button name="collapse_btn" label="Zwiń"/>
|
||||
<button name="expand_btn" label="Rozwiń" />
|
||||
<text name="filter_label" value="Filtruj:"/>
|
||||
|
|
@ -98,12 +118,14 @@
|
|||
<combo_box.item value="filter_type_settings" label="Otoczenia" />
|
||||
<combo_box.item value="filter_type_custom" label="Własny filtr..." />
|
||||
</combo_box>
|
||||
<menu_button tool_tip="Pokaż opcje widoczności wyszukiwania" name="options_visibility_btn" />
|
||||
<tab_container name="inventory filter tabs">
|
||||
<inventory_panel label="Wszystkie" name="All Items"/>
|
||||
<recent_inventory_panel label="Ostatnie" name="Recent Items"/>
|
||||
<worn_inventory_panel label="Założone" name="Worn Items"/>
|
||||
</tab_container>
|
||||
<!-- <menu_button tool_tip="Pokaż opcje widoczności wyszukiwania" name="options_visibility_btn" /> -->
|
||||
<panel name="default_inventory_panel">
|
||||
<tab_container name="inventory filter tabs">
|
||||
<inventory_panel label="Wszystkie" name="All Items"/>
|
||||
<recent_inventory_panel label="Ostatnie" name="Recent Items"/>
|
||||
<worn_inventory_panel label="Założone" name="Worn Items"/>
|
||||
</tab_container>
|
||||
</panel>
|
||||
<text name="ItemcountText" tool_tip="[ITEMS] przedmiotów, [CATEGORIES] folderów">
|
||||
Elementy
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -43,6 +43,14 @@
|
|||
#include "message.h"
|
||||
#include <functional>
|
||||
|
||||
StreamTitleDisplay::~StreamTitleDisplay()
|
||||
{
|
||||
if (mMetadataUpdateConnection.connected())
|
||||
{
|
||||
mMetadataUpdateConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
void StreamTitleDisplay::initSingleton()
|
||||
{
|
||||
if (!gAudiop || !gAudiop->getStreamingAudioImpl())
|
||||
|
|
|
|||
|
|
@ -37,14 +37,14 @@ class StreamTitleDisplay : public LLSingleton<StreamTitleDisplay>
|
|||
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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Reference in New Issue