diff --git a/autobuild.xml b/autobuild.xml
index 7b143cea50..0a739aa4be 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -24,7 +24,7 @@
hash
aa31ee4c6315cb26bf6e2191b69598f5
url
- http://downloads.phoenixviewer.com/jemalloc-5.1.0-linux64-190582149.tar.bz2
+ http://3p.firestormviewer.org/jemalloc-5.1.0-linux64-190582149.tar.bz2
name
linux64
@@ -50,23 +50,11 @@
hash
47ddd059d48f650e39796c10ea828689
url
- http://downloads.phoenixviewer.com/ndPhysicsStub-1.0-darwin-201606211534-r77.tar.bz2
+ http://3p.firestormviewer.org/ndPhysicsStub-1.0-darwin-201606211534-r77.tar.bz2
name
darwin
- linux
-
linux64
archive
@@ -74,7 +62,7 @@
hash
99fe10fdec03a22d680de72bc8b5f85a
url
- http://downloads.phoenixviewer.com/ndPhysicsStub-1.181041840-linux64-181041840.tar.bz2
+ http://3p.firestormviewer.org/ndPhysicsStub-1.181041840-linux64-181041840.tar.bz2
name
linux64
@@ -84,9 +72,9 @@
archive
hash
- 7649dd9c2075b0cbda5b80b4edb9b90e
+ adb2d66a0f5cb473a36e24c4dc3cfa36
url
- http://downloads.phoenixviewer.com/ndPhysicsStub-1.0-windows-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/ndPhysicsStub-1.0-windows-202121822.tar.bz2
name
windows
@@ -96,9 +84,9 @@
archive
hash
- 9e2a24005a4751c3dc4655ac077e35c0
+ 02f70159e14c7b7213b22a0225508c46
url
- http://downloads.phoenixviewer.com/ndPhysicsStub-1.0-windows64-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/ndPhysicsStub-1.0-windows64-202121823.tar.bz2
name
windows64
@@ -124,7 +112,7 @@
hash
33300134846d0f00ac4f31c1a190e3e6
url
- http://downloads.phoenixviewer.com/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2
+ http://3p.firestormviewer.org/gntp_growl-1.0-darwin-201505101047-r12.tar.bz2
name
darwin
@@ -136,7 +124,7 @@
hash
af06208ec80b1f170cc560141602e2dc
url
- http://downloads.phoenixviewer.com/libnotify-0.4.4-linux-20101003.tar.bz2
+ http://3p.firestormviewer.org/libnotify-0.4.4-linux-20101003.tar.bz2
name
linux
@@ -148,7 +136,7 @@
hash
29a573c4d27d617345030cf28860ea2e
url
- http://downloads.phoenixviewer.com/gntp_growl-1.0-windows-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/gntp_growl-1.0-windows-vs2017-1906061512.tar.bz2
name
windows
@@ -160,7 +148,7 @@
hash
a333b335104b3d0df14b9be005ef1571
url
- http://downloads.phoenixviewer.com/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/gntp_growl-1.0-windows64-vs2017-1906061512.tar.bz2
name
windows64
@@ -252,7 +240,7 @@
hash
ff2e4df5bffe0203dc654b111347e617
url
- http://downloads.phoenixviewer.com/SDL-1.2.15-linux-181412059.tar.bz2
+ http://3p.firestormviewer.org/SDL-1.2.15-linux-181412059.tar.bz2
name
linux
@@ -264,7 +252,7 @@
hash
64c1dff0e19792acec7fd32556bf4d7b
url
- http://downloads.phoenixviewer.com/SDL-1.2.15-linux64-181411635.tar.bz2
+ http://3p.firestormviewer.org/SDL-1.2.15-linux64-181411635.tar.bz2
name
linux64
@@ -318,7 +306,7 @@
hash
161e07b37e2f30da004a0d72d5075ad7
url
- http://downloads.phoenixviewer.com/apr_suite-1.4.5.180871344-linux-180871344.tar.bz2
+ http://3p.firestormviewer.org/apr_suite-1.4.5.180871344-linux-180871344.tar.bz2
name
linux
@@ -330,7 +318,7 @@
hash
5c3c29851edd837d5f9518618c4a303b
url
- http://downloads.phoenixviewer.com/apr_suite-1.4.5.180841559-linux64-180841559.tar.bz2
+ http://3p.firestormviewer.org/apr_suite-1.4.5.180841559-linux64-180841559.tar.bz2
name
linux64
@@ -394,9 +382,9 @@
archive
hash
- c68630bd937509573df87a41452bc464
+ 3cc73623c9a976b4f8346a3837f7a916
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56315/526789/boost-1.72-darwin64-539869.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64088/601256/boost-1.72-darwin64-545361.tar.bz2
name
darwin64
@@ -418,9 +406,9 @@
archive
hash
- 097d04c5b064c4be4bc9edb885509a94
+ 7d4b2511976449e9a4ec7be41dc8310f
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56321/526797/boost-1.72-windows-539869.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64092/601270/boost-1.72-windows-545361.tar.bz2
name
windows
@@ -430,9 +418,9 @@
archive
hash
- 748c4d47cced7ba2b210eb6d0ed33497
+ 4ad8df0700745201cddf6b71d7b0949f
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56320/526777/boost-1.72-windows64-539869.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64091/601265/boost-1.72-windows64-545361.tar.bz2
name
windows64
@@ -524,9 +512,9 @@
archive
hash
- 76e70d1f024e089bcd1afa6748d67a62
+ 02e6a8207dcdaf243dcb6da19b8c3534
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56409/527191/colladadom-2.3.539922-darwin64-539922.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64099/601302/colladadom-2.3.545362-darwin64-545362.tar.bz2
name
darwin64
@@ -538,7 +526,7 @@
hash
d83896f28716f34b7b49d61a23283c4c
url
- http://downloads.phoenixviewer.com/colladadom-2.3.180871403-linux-180871403.tar.bz2
+ http://3p.firestormviewer.org/colladadom-2.3.180871403-linux-180871403.tar.bz2
name
linux
@@ -560,9 +548,9 @@
archive
hash
- 3d6ab0e5e08a7f03088232e5676a861e
+ 8a02a10fc69c8f504dc5335644db184a
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56415/527297/colladadom-2.3.539922-windows-539922.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64104/601313/colladadom-2.3.545362-windows-545362.tar.bz2
name
windows
@@ -572,16 +560,16 @@
archive
hash
- 5a31c4d50a04d255e84903f16597d4ed
+ 742180324fca7ab92b6a61a36aab4f9d
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56408/527200/colladadom-2.3.539922-windows64-539922.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64103/601314/colladadom-2.3.545362-windows64-545362.tar.bz2
name
windows64
version
- 2.3.539922
+ 2.3.545362
curl
@@ -614,9 +602,9 @@
archive
hash
- decf3d5bd930e9ac6113cf96c61ff230
+ f5ae57117a6518d11f49ccfbfbe0969d
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56342/526921/curl-7.54.1.539883-darwin64-539883.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64131/601402/curl-7.54.1.545369-darwin64-545369.tar.bz2
name
darwin64
@@ -628,7 +616,7 @@
hash
cade3843dfd7985f008cc8161daaefb0
url
- http://downloads.phoenixviewer.com/curl-7.54.1.180871811-linux-180871811.tar.bz2
+ http://3p.firestormviewer.org/curl-7.54.1.180871811-linux-180871811.tar.bz2
name
linux
@@ -640,7 +628,7 @@
hash
51d9ce98279709854b0be5d0f450ba63
url
- http://downloads.phoenixviewer.com/curl-7.54.1.180841943-linux64-180841943.tar.bz2
+ http://3p.firestormviewer.org/curl-7.54.1.180841943-linux64-180841943.tar.bz2
name
linux64
@@ -650,11 +638,11 @@
archive
hash
- ebd24261499e458da253d2bc1d95057a
+ 2796ae7b09e730a55ac03f74ed669520
hash_algorithm
md5
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56361/526996/curl-7.54.1.539883-windows-539883.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64130/601396/curl-7.54.1.545369-windows-545369.tar.bz2
name
windows
@@ -664,16 +652,16 @@
archive
hash
- 9eadfc1885c59ebc750f75adf4c20925
+ a8f96e5cdb8128b23d49ff4c3f2233a4
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56360/526989/curl-7.54.1.539883-windows64-539883.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64129/601382/curl-7.54.1.545369-windows64-545369.tar.bz2
name
windows64
version
- 7.54.1.539883
+ 7.54.1.545369
db
@@ -726,7 +714,7 @@
hash
9591dcb7efce2a770d77e907705e1492
url
- http://downloads.phoenixviewer.com/dbus_glib-0.76-linux-180871236.tar.bz2
+ http://3p.firestormviewer.org/dbus_glib-0.76-linux-180871236.tar.bz2
name
linux
@@ -738,7 +726,7 @@
hash
5a685a65a7066937ef580dcd5a90f9dc
url
- http://downloads.phoenixviewer.com/dbus_glib-0.76-linux64-180841549.tar.bz2
+ http://3p.firestormviewer.org/dbus_glib-0.76-linux64-180841549.tar.bz2
name
linux64
@@ -768,7 +756,7 @@
hash
2d59bb6f4bd38a18d9250ff010a13b59
url
- http://downloads.phoenixviewer.com/dictionaries-2.46203-common-46203.tar.bz2
+ http://3p.firestormviewer.org/dictionaries-2.46203-common-46203.tar.bz2
name
common
@@ -834,7 +822,7 @@
hash
79e5ef408ea7ee43fef0f738688485c6
url
- http://downloads.phoenixviewer.com/dullahan-1.8.0.202007201635_81.3.10_gb223419_chromium-81.0.4044.138-linux64-202021435.tar.bz2
+ http://3p.firestormviewer.org/dullahan-1.8.0.202007201635_81.3.10_gb223419_chromium-81.0.4044.138-linux64-202021435.tar.bz2
name
linux64
@@ -912,7 +900,7 @@
hash
b20e813b55488e43df5c197f1efd165c
url
- http://downloads.phoenixviewer.com/expat-2.1.1.180871203-linux-180871203.tar.bz2
+ http://3p.firestormviewer.org/expat-2.1.1.180871203-linux-180871203.tar.bz2
name
linux
@@ -924,7 +912,7 @@
hash
bbcfe77b920fb7f00c7f2a494ffc6c43
url
- http://downloads.phoenixviewer.com/expat-2.1.1.180841547-linux64-180841547.tar.bz2
+ http://3p.firestormviewer.org/expat-2.1.1.180841547-linux64-180841547.tar.bz2
name
linux64
@@ -976,11 +964,11 @@
archive
hash
- 371025cc40f8cbb70f0bb88f79a906a6
+ 6963689ea12131c0ff80b07a08cbe667
hash_algorithm
md5
url
- file:///opt/firestorm/fmodstudio-2.01.02-darwin-201981618.tar.bz2
+ file:///opt/firestorm/fmodstudio-2.01.03-darwin-202272255.tar.bz2
name
darwin
@@ -990,11 +978,11 @@
archive
hash
- 65f37bfb75cb13161c99a450be13fb96
+ f40d80d4432c8a25bfd6a6c3aa4eeaf0
hash_algorithm
md5
url
- file:///opt/firestorm/fmodstudio-2.01.02-linux64-201992052.tar.bz2
+ file:///opt/firestorm/fmodstudio-2.01.03-linux64-202241538.tar.bz2
name
linux64
@@ -1052,7 +1040,7 @@
hash
f7a2a70417ab9d2f999f80604cb4fa48
url
- http://downloads.phoenixviewer.com/fontconfig-2.11.0-linux-180871443.tar.bz2
+ http://3p.firestormviewer.org/fontconfig-2.11.0-linux-180871443.tar.bz2
name
linux
@@ -1064,7 +1052,7 @@
hash
5818ed2d9b29bad00878f3e26b09b7f9
url
- http://downloads.phoenixviewer.com/fontconfig-2.11.0-linux64-180841833.tar.bz2
+ http://3p.firestormviewer.org/fontconfig-2.11.0-linux64-180841833.tar.bz2
name
linux64
@@ -1118,7 +1106,7 @@
hash
ced1bc8b28a2e87093b364c2b6d8cb9c
url
- http://downloads.phoenixviewer.com/freetype-2.4.4.180871412-linux-180871412.tar.bz2
+ http://3p.firestormviewer.org/freetype-2.4.4.180871412-linux-180871412.tar.bz2
name
linux
@@ -1130,7 +1118,7 @@
hash
0dab99c682433145aa8f5e26d8940afd
url
- http://downloads.phoenixviewer.com/freetype-2.4.4.180841832-linux64-180841832.tar.bz2
+ http://3p.firestormviewer.org/freetype-2.4.4.180841832-linux64-180841832.tar.bz2
name
linux64
@@ -1142,7 +1130,7 @@
hash
0dbb1a9d15bb134096476d657f86ce41
url
- http://downloads.phoenixviewer.com/freetype-2.3.9.202022048-windows-202022048.tar.bz2
+ http://3p.firestormviewer.org/freetype-2.3.9.202022048-windows-202022048.tar.bz2
name
windows
@@ -1154,7 +1142,7 @@
hash
c000d0c98bded51c7bc7447dc7934e6c
url
- http://downloads.phoenixviewer.com/freetype-2.3.9.202022049-windows64-202022049.tar.bz2
+ http://3p.firestormviewer.org/freetype-2.3.9.202022049-windows64-202022049.tar.bz2
name
windows64
@@ -1196,7 +1184,7 @@
hash
da432b959ccd920adca1030ad7f1b6cf
url
- http://downloads.phoenixviewer.com/glext-68-linux-180871251.tar.bz2
+ http://3p.firestormviewer.org/glext-68-linux-180871251.tar.bz2
name
linux
@@ -1208,7 +1196,7 @@
hash
12b2d643a013be8297bbbe37743abe94
url
- http://downloads.phoenixviewer.com/glext-68-linux64-180841554.tar.bz2
+ http://3p.firestormviewer.org/glext-68-linux64-180841554.tar.bz2
name
linux64
@@ -1292,7 +1280,7 @@
hash_algorithm
md5
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2
name
darwin
@@ -1304,7 +1292,7 @@
hash
94fc457c46e1fb94b31251bd4747d10f
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.171101143-darwin64-171101143.tar.bz2
name
darwin64
@@ -1318,7 +1306,7 @@
hash_algorithm
md5
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.180990859-linux-180990859.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.180990859-linux-180990859.tar.bz2
name
linux
@@ -1330,7 +1318,7 @@
hash
acc1181cd31ef32c3724eda84ae4b580
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.180990827-linux64-180990827.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.180990827-linux64-180990827.tar.bz2
name
linux64
@@ -1344,7 +1332,7 @@
hash_algorithm
md5
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.vs2017-1906061512-windows-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows-vs2017-1906061512.tar.bz2
name
windows
@@ -1356,7 +1344,7 @@
hash
e906cf08bfbfbd9d4fc78557e021e7d0
url
- http://downloads.phoenixviewer.com/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2
+ http://3p.firestormviewer.org/glod-1.0pre3.vs2017-1906061512-windows64-vs2017-1906061512.tar.bz2
name
windows64
@@ -1410,7 +1398,7 @@
hash
ca43974302dc3e2019b0838c2c53b8b5
url
- http://downloads.phoenixviewer.com/google_breakpad-1413.202021450-linux64-202021450.tar.bz2
+ http://3p.firestormviewer.org/google_breakpad-1413.202021450-linux64-202021450.tar.bz2
name
linux
@@ -1486,9 +1474,9 @@
archive
hash
- 36e2e30610eb131e3522ef84cc67405d
+ f9831360ced94943ab9dfb3fbf5256d3
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56330/526832/googlemock-1.7.0.539876-darwin64-539876.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64101/601290/googlemock-1.7.0.545363-darwin64-545363.tar.bz2
name
darwin64
@@ -1500,7 +1488,7 @@
hash
5bc5ddeb97b8498d5141e27092161323
url
- http://downloads.phoenixviewer.com/googlemock-1.7.0.180871704-linux-180871704.tar.bz2
+ http://3p.firestormviewer.org/googlemock-1.7.0.180871704-linux-180871704.tar.bz2
name
linux
@@ -1522,9 +1510,9 @@
archive
hash
- 38a2c655876044efe536a8e685e74a2a
+ 8149e46b4f7abb3ac284415cfe1366e1
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56336/526861/googlemock-1.7.0.539876-windows-539876.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64102/601296/googlemock-1.7.0.545363-windows-545363.tar.bz2
name
windows
@@ -1534,16 +1522,16 @@
archive
hash
- ff4fa1fd7a1ed9ffa477c4574ffc16af
+ f3851eba809ead2810d702041569d36d
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/56334/526845/googlemock-1.7.0.539876-windows64-539876.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64100/601284/googlemock-1.7.0.545363-windows64-545363.tar.bz2
name
windows64
version
- 1.7.0.539876
+ 1.7.0.545363
gstreamer
@@ -1564,7 +1552,7 @@
hash
904540d91ea7d577c7bcbb679621f013
url
- http://downloads.phoenixviewer.com/gstreamer-0.10.6.180871246-linux-180871246.tar.bz2
+ http://3p.firestormviewer.org/gstreamer-0.10.6.180871246-linux-180871246.tar.bz2
name
linux
@@ -1576,7 +1564,7 @@
hash
86a358f1b5a2c2baf68444b2bfc5bb32
url
- http://downloads.phoenixviewer.com/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2
+ http://3p.firestormviewer.org/gstreamer-0.10.6.180841551-linux64-180841551.tar.bz2
name
linux64
@@ -1604,7 +1592,7 @@
hash
fb047d496c32cc3b9f99793ee6ebb1e3
url
- http://downloads.phoenixviewer.com/gtk_atk_pango_glib-2.1-linux-180871647.tar.bz2
+ http://3p.firestormviewer.org/gtk_atk_pango_glib-2.1-linux-180871647.tar.bz2
name
linux
@@ -1616,7 +1604,7 @@
hash
d918d894430c1d1d869b9f2e06570c65
url
- http://downloads.phoenixviewer.com/gtk_atk_pango_glib-2.1-linux64-180841902.tar.bz2
+ http://3p.firestormviewer.org/gtk_atk_pango_glib-2.1-linux64-180841902.tar.bz2
name
linux64
@@ -1760,7 +1748,7 @@
hash
a7039c9a9c4461c5f85542f068dc09e5
url
- http://downloads.phoenixviewer.com/jpeglib-8c.180871203-linux-180871203.tar.bz2
+ http://3p.firestormviewer.org/jpeglib-8c.180871203-linux-180871203.tar.bz2
name
linux
@@ -1772,7 +1760,7 @@
hash
324bb9deb00d256a12f8cbf686f413f0
url
- http://downloads.phoenixviewer.com/jpeglib-8c.180841548-linux64-180841548.tar.bz2
+ http://3p.firestormviewer.org/jpeglib-8c.180841548-linux64-180841548.tar.bz2
name
linux64
@@ -1850,7 +1838,7 @@
hash
da45220ec6fcf945f6ca1f11bc7606cf
url
- http://downloads.phoenixviewer.com/jsoncpp-0.5.0.180872045-linux-180872045.tar.bz2
+ http://3p.firestormviewer.org/jsoncpp-0.5.0.180872045-linux-180872045.tar.bz2
name
linux
@@ -1862,7 +1850,7 @@
hash
352ab340f2091c93eb313cf80ac0c8cc
url
- http://downloads.phoenixviewer.com/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2
+ http://3p.firestormviewer.org/jsoncpp-0.5.0.202052209-linux64-202052209.tar.bz2
name
linux64
@@ -1909,26 +1897,14 @@
kdu
platforms
- darwin
-
- archive
-
- hash
- f697ff80c30d3f387b2f5b42e53e574e
- url
- file:///opt/firestorm/kdu-8.0.5-darwin-202202246.tar.bz2
-
- name
- darwin
-
darwin64
archive
hash
- f697ff80c30d3f387b2f5b42e53e574e
+ c1be3db6fda7054f615621e9a8139c51
url
- file:///opt/firestorm/kdu-8.0.5-darwin-202202246.tar.bz2
+ file:///opt/firestorm/kdu-8.0.6-darwin-202302239.tar.bz2
name
darwin64
@@ -1938,9 +1914,9 @@
archive
hash
- 2d2790facd7c568e4f7c08c030987df2
+ eba43dcfeb1c14aab25f588d9f625839
url
- file:///opt/firestorm/kdu-8.0.5-linux64-202021615.tar.bz2
+ file:///opt/firestorm/kdu-8.0.6-linux64-202302217.tar.bz2
name
linux64
@@ -1950,9 +1926,9 @@
archive
hash
- 995f807a91bd251408ad0f18c13bbcf4
+ f5c682b490672aadf97ec9b938b351a9
url
- file:///c:/cygwin/opt/firestorm/kdu-8.0.5-windows-202060400.tar.bz2
+ file:///c:/cygwin/opt/firestorm/kdu-8.0.6-windows-202302209.tar.bz2
name
windows
@@ -1962,9 +1938,9 @@
archive
hash
- 995f807a91bd251408ad0f18c13bbcf4
+ f5c682b490672aadf97ec9b938b351a9
url
- file:///c:/cygwin/opt/firestorm/kdu-8.0.5-windows-202060400.tar.bz2
+ file:///c:/cygwin/opt/firestorm/kdu-8.0.6-windows-202302209.tar.bz2
name
windows64
@@ -2018,7 +1994,7 @@
hash
77996d95cf2f072f4f277a2aaff20456
url
- http://downloads.phoenixviewer.com/libhunspell-1.3.2.180871248-linux-180871248.tar.bz2
+ http://3p.firestormviewer.org/libhunspell-1.3.2.180871248-linux-180871248.tar.bz2
name
linux
@@ -2030,7 +2006,7 @@
hash
6555f040c686d8c1dec8e6264c2d3672
url
- http://downloads.phoenixviewer.com/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2
+ http://3p.firestormviewer.org/libhunspell-1.3.2.180841552-linux64-180841552.tar.bz2
name
linux64
@@ -2174,7 +2150,7 @@
hash
31754947447ec98374b3bf92e29cf68a
url
- http://downloads.phoenixviewer.com/libpng-1.6.8.180871343-linux-180871343.tar.bz2
+ http://3p.firestormviewer.org/libpng-1.6.8.180871343-linux-180871343.tar.bz2
name
linux
@@ -2186,7 +2162,7 @@
hash
83ae55031f81dace9dcf688cc5510010
url
- http://downloads.phoenixviewer.com/libpng-1.6.8.180841558-linux64-180841558.tar.bz2
+ http://3p.firestormviewer.org/libpng-1.6.8.180841558-linux64-180841558.tar.bz2
name
linux64
@@ -2240,7 +2216,7 @@
hash
1b1d83df165c947bea5c60c460277f93
url
- http://downloads.phoenixviewer.com/libuuid-1.6.2-linux-180871203.tar.bz2
+ http://3p.firestormviewer.org/libuuid-1.6.2-linux-180871203.tar.bz2
name
linux
@@ -2252,7 +2228,7 @@
hash
f3cc32c84b99f1277370ce88a0faf40e
url
- http://downloads.phoenixviewer.com/libuuid-1.6.2-linux64-180841554.tar.bz2
+ http://3p.firestormviewer.org/libuuid-1.6.2-linux64-180841554.tar.bz2
name
linux64
@@ -2306,7 +2282,7 @@
hash
b4e676d3d583264f006432510727aa05
url
- http://downloads.phoenixviewer.com/libxml2-2.9.4.180871340-linux-180871340.tar.bz2
+ http://3p.firestormviewer.org/libxml2-2.9.4.180871340-linux-180871340.tar.bz2
name
linux
@@ -2318,7 +2294,7 @@
hash
0bc56fa68f59537486c75b04646d65a9
url
- http://downloads.phoenixviewer.com/libxml2-2.9.4.180841555-linux64-180841555.tar.bz2
+ http://3p.firestormviewer.org/libxml2-2.9.4.180841555-linux64-180841555.tar.bz2
name
linux64
@@ -2399,16 +2375,16 @@
archive
hash
- 3d2122c39abb8bc6f46c0ddc0838ab2a
+ 8501cbaa7e0f254614694da784a9c61c
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/58176/544556/llca-202004280657.541101-common-541101.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64944/606925/llca-202008010216.546021-common-546021.tar.bz2
name
common
version
- 202004280657.541101
+ 202008010216.546021
llphysicsextensions_source
@@ -2624,9 +2600,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
hash
- 95b69e37b9b4435698682f4ff702cca5
+ 937ce1a2158c0cfff37f5989f5b24aba
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54855/510169/nghttp2-1.25.0.538985-darwin64-538985.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64066/601156/nghttp2-1.40.0.545354-darwin64-545354.tar.bz2
name
darwin64
@@ -2638,7 +2614,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
24c50d563fe8ff10ca819088ffbef7a6
url
- http://downloads.phoenixviewer.com/nghttp2-1.25.0.180871240-linux-180871240.tar.bz2
+ http://3p.firestormviewer.org/nghttp2-1.25.0.180871240-linux-180871240.tar.bz2
name
linux
@@ -2650,7 +2626,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
b460d5bac2d20b38cb73b54d0ab1b6e3
url
- http://downloads.phoenixviewer.com/nghttp2-1.25.0.180841549-linux64-180841549.tar.bz2
+ http://3p.firestormviewer.org/nghttp2-1.25.0.180841549-linux64-180841549.tar.bz2
name
linux64
@@ -2660,9 +2636,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
hash
- 246dd8445be87c698aa7fa318bcdd7e5
+ 138b881bdf37dff4e626e022a50dd11f
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55035/511985/nghttp2-1.25.0.538985-windows-538985.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64069/601181/nghttp2-1.40.0.545354-windows-545354.tar.bz2
name
windows
@@ -2672,9 +2648,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
hash
- f2fd2dbe8704ec63ab433cbe8e03f7c4
+ c23c6480c7cbea60a2bd26e257adc0a7
url
- http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55031/511978/nghttp2-1.25.0.538985-windows64-538985.tar.bz2
+ http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/64068/601177/nghttp2-1.40.0.545354-windows64-545354.tar.bz2
name
windows64
@@ -2683,7 +2659,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
source_type
hg
version
- 1.25.0.538985
+ 1.40.0.545354
nvapi
@@ -2772,7 +2748,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
0d3db04b9b10085b100b345c68381cb0
url
- http://downloads.phoenixviewer.com/ogg_vorbis-1.3.3-1.3.6.183570207-linux-183570207.tar.bz2
+ http://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.183570207-linux-183570207.tar.bz2
name
linux
@@ -2782,9 +2758,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
archive
hash
- 5e23c312d37367bb2d23dad395891b00
+ 03b7df0406d7588c4fb49c2ddf0d8264
url
- http://downloads.phoenixviewer.com/ogg_vorbis-1.3.3-1.3.6.183570202-linux64-183570202.tar.bz2
+ http://3p.firestormviewer.org/ogg_vorbis-1.3.3-1.3.6.202241500-linux64-202241500.tar.bz2
name
linux64
@@ -2838,7 +2814,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
246ed298944fd5200e4cac3703d6e075
url
- http://downloads.phoenixviewer.com/open_libndofdev-0.9.183150124-linux-183150124.tar.bz2
+ http://3p.firestormviewer.org/open_libndofdev-0.9.183150124-linux-183150124.tar.bz2
name
linux
@@ -2850,7 +2826,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
db8a7126178e7230fd6917a28cd67bd7
url
- http://downloads.phoenixviewer.com/open_libndofdev-0.9.183150121-linux64-183150121.tar.bz2
+ http://3p.firestormviewer.org/open_libndofdev-0.9.183150121-linux64-183150121.tar.bz2
name
linux64
@@ -2882,7 +2858,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash_algorithm
md5
url
- http://downloads.phoenixviewer.com/openal-1.12.854-1.1.0.180871246-linux-180871246.tar.bz2
+ http://3p.firestormviewer.org/openal-1.12.854-1.1.0.180871246-linux-180871246.tar.bz2
name
linux
@@ -2894,7 +2870,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
4f36ae378593240701fd4453bd6074c8
url
- http://downloads.phoenixviewer.com/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2
+ http://3p.firestormviewer.org/openal-1.12.854-1.1.0.180841552-linux64-180841552.tar.bz2
name
linux64
@@ -2950,7 +2926,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
4e278d789c5d6e448d1e39211d19bf41
url
- http://downloads.phoenixviewer.com/openjpeg-1.4.201505181816-r27-darwin-201505181816-r27.tar.bz2
+ http://3p.firestormviewer.org/openjpeg-1.4.201505181816-r27-darwin-201505181816-r27.tar.bz2
name
darwin
@@ -2974,7 +2950,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
4a5591349005afac44a688e99517a9f3
url
- http://downloads.phoenixviewer.com/openjpeg-1.5.1.180991818-linux-180991818.tar.bz2
+ http://3p.firestormviewer.org/openjpeg-1.5.1.180991818-linux-180991818.tar.bz2
name
linux
@@ -2986,7 +2962,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
addb209bb56a8f16602a7222f119191d
url
- http://downloads.phoenixviewer.com/openjpeg-1.5.1.180991822-linux64-180991822.tar.bz2
+ http://3p.firestormviewer.org/openjpeg-1.5.1.180991822-linux64-180991822.tar.bz2
name
linux64
@@ -2998,7 +2974,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
b20c18f66ae63c9d3b1970af8866aeb9
url
- http://downloads.phoenixviewer.com/openjpeg-1.4.202102107-windows-202102107.tar.bz2
+ http://3p.firestormviewer.org/openjpeg-1.4.202102107-windows-202102107.tar.bz2
name
windows
@@ -3010,7 +2986,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
6f1e1d8796301c4e5737cb0db0f696d2
url
- http://downloads.phoenixviewer.com/openjpeg-1.4.202102110-windows64-202102110.tar.bz2
+ http://3p.firestormviewer.org/openjpeg-1.4.202102110-windows64-202102110.tar.bz2
name
windows64
@@ -3064,7 +3040,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
343f6ace63617546704c4aad9b432312
url
- http://downloads.phoenixviewer.com/openssl-1.0.2l.180871731-linux-180871731.tar.bz2
+ http://3p.firestormviewer.org/openssl-1.0.2l.180871731-linux-180871731.tar.bz2
name
linux
@@ -3076,7 +3052,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
7920fce93d9addf63a420d86f91c5749
url
- http://downloads.phoenixviewer.com/openssl-1.0.2l.180841936-linux64-180841936.tar.bz2
+ http://3p.firestormviewer.org/openssl-1.0.2l.180841936-linux64-180841936.tar.bz2
name
linux64
@@ -3154,7 +3130,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
cf1c53b27e5889c7c5963ed06ab23cb2
url
- http://downloads.phoenixviewer.com/pcre-8.35.180871234-linux-180871234.tar.bz2
+ http://3p.firestormviewer.org/pcre-8.35.180871234-linux-180871234.tar.bz2
name
linux
@@ -3166,7 +3142,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
742a145c1518b9dc195ae0862828e6ae
url
- http://downloads.phoenixviewer.com/pcre-8.35.202021522-linux64-202021522.tar.bz2
+ http://3p.firestormviewer.org/pcre-8.35.202021522-linux64-202021522.tar.bz2
name
linux64
@@ -3244,7 +3220,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
6e7b0961d6489a1b3c3090eccfd6e80e
url
- http://downloads.phoenixviewer.com/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2
+ http://3p.firestormviewer.org/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2
name
linux
@@ -3256,7 +3232,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
6e7b0961d6489a1b3c3090eccfd6e80e
url
- http://downloads.phoenixviewer.com/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2
+ http://3p.firestormviewer.org/slvoice-3.2.0002.10426.298329-linux-20160717.tar.bz2
name
linux64
@@ -3364,7 +3340,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
6573a190dbdef9b23235beb9b1219bef
url
- http://downloads.phoenixviewer.com/uriparser-0.8.0.1-linux-180871244.tar.bz2
+ http://3p.firestormviewer.org/uriparser-0.8.0.1-linux-180871244.tar.bz2
name
linux
@@ -3376,7 +3352,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
df570f2b9c0087438604a8ba4dc37a85
url
- http://downloads.phoenixviewer.com/uriparser-0.8.0.1-linux64-180841550.tar.bz2
+ http://3p.firestormviewer.org/uriparser-0.8.0.1-linux64-180841550.tar.bz2
name
linux64
@@ -3442,7 +3418,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
b7167025f54c044abee21b48476ad4f2
url
- http://downloads.phoenixviewer.com/viewer_manager-1.0.180871935-linux-180871935.tar.bz2
+ http://3p.firestormviewer.org/viewer_manager-1.0.180871935-linux-180871935.tar.bz2
name
linux
@@ -3454,7 +3430,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
129b80dd47b53bfa02fc21ab1eb1901c
url
- http://downloads.phoenixviewer.com/viewer_manager-1.0.180861311-linux64-180861311.tar.bz2
+ http://3p.firestormviewer.org/viewer_manager-1.0.180861311-linux64-180861311.tar.bz2
name
linux64
@@ -3510,7 +3486,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
9f9582031af3b78d6153ec296d6dde9f
url
- http://downloads.phoenixviewer.com/vlc_bin-2.2.3-linux-201607071822-r16.tar.bz2
+ http://3p.firestormviewer.org/vlc_bin-2.2.3-linux-201607071822-r16.tar.bz2
name
linux
@@ -3522,7 +3498,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
5eace400c487011a678493fc520be24d
url
- http://downloads.phoenixviewer.com/vlc_bin-2.2.3-linux-x64-201610182130-r16.tar.bz2
+ http://3p.firestormviewer.org/vlc_bin-2.2.3-linux-x64-201610182130-r16.tar.bz2
name
linux64
@@ -3600,7 +3576,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
0f318372198fb34b3a59b4aa03c40ac7
url
- http://downloads.phoenixviewer.com/xmlrpc_epi-0.54.1.180871731-linux-180871731.tar.bz2
+ http://3p.firestormviewer.org/xmlrpc_epi-0.54.1.180871731-linux-180871731.tar.bz2
name
linux
@@ -3612,7 +3588,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
f810193590cae9b35a1c77b6c72bfb01
url
- http://downloads.phoenixviewer.com/xmlrpc_epi-0.54.1.180841935-linux64-180841935.tar.bz2
+ http://3p.firestormviewer.org/xmlrpc_epi-0.54.1.180841935-linux64-180841935.tar.bz2
name
linux64
@@ -3692,7 +3668,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash_algorithm
md5
url
- http://downloads.phoenixviewer.com/zlib-1.2.8.180871259-linux-180871259.tar.bz2
+ http://3p.firestormviewer.org/zlib-1.2.8.180871259-linux-180871259.tar.bz2
name
linux
@@ -3704,7 +3680,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
hash
15a645809cb2f14074f22e7848bb42cf
url
- http://downloads.phoenixviewer.com/zlib-1.2.8.180841547-linux64-180841547.tar.bz2
+ http://3p.firestormviewer.org/zlib-1.2.8.180841547-linux64-180841547.tar.bz2
name
linux64
diff --git a/doc/contributions.txt b/doc/contributions.txt
index ec1eba0ceb..6a0b8acc2a 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1094,6 +1094,8 @@ Nicky Dasmijn
SL-10293
SL-11061
SL-11072
+ SL-13141
+ SL-13642
Nicky Perian
OPEN-1
STORM-1087
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index ff55282456..21c4ca9912 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -165,7 +165,7 @@ elseif(DARWIN)
libndofdev.dylib
libnghttp2.dylib
libnghttp2.14.dylib
- libnghttp2.14.14.0.dylib
+ libnghttp2.14.19.0.dylib
libgrowl.dylib
libgrowl++.dylib
)
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index 80af7ff2ab..398647e58f 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -17,15 +17,10 @@ else (USESYSTEMLIBS)
if (LINUX)
use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE)
- set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux)
set (SDL_LIBRARY SDL directfb fusion direct X11)
endif (LINUX)
endif (USESYSTEMLIBS)
-if (SDL_FOUND)
- include_directories(${SDL_INCLUDE_DIR})
-endif (SDL_FOUND)
-
set(LLWINDOW_INCLUDE_DIRS
${GLEXT_INCLUDE_DIR}
${LIBS_OPEN_DIR}/llwindow
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index f78e031f97..9494d6497c 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -250,6 +250,64 @@ void _ll_apr_assert_status(apr_status_t status, const char* file, int line)
llassert(! _ll_apr_warn_status(status, file, line));
}
+//---------------------------------------------------------------------
+//
+// Scope based pool access
+//
+//---------------------------------------------------------------------
+
+class LLAPRFilePoolScope
+{
+public:
+ LLAPRFilePoolScope() : pPool(NULL), mInitialized(false) {}
+ LLAPRFilePoolScope(LLVolatileAPRPool* poolp) : mInitialized(false)
+ {
+ setFilePool(poolp);
+ }
+ ~LLAPRFilePoolScope()
+ {
+ reset();
+ }
+ apr_pool_t* getVolatileAPRPool(LLVolatileAPRPool* poolp = NULL)
+ {
+ if (!pPool)
+ {
+ setFilePool(poolp);
+ }
+ if (mInitialized)
+ {
+ // We need one clear per one get
+ // At the moment no need to support multiple calls
+ LL_ERRS() << "LLAPRFilePoolScope is not supposed to be initialized twice" << LL_ENDL;
+ }
+ mInitialized = true;
+ return pPool->getVolatileAPRPool();
+ }
+ void reset()
+ {
+ if (mInitialized)
+ {
+ pPool->clearVolatileAPRPool();
+ }
+ }
+
+private:
+ void setFilePool(LLVolatileAPRPool* poolp = NULL)
+ {
+ if (poolp)
+ {
+ pPool = poolp;
+ }
+ else
+ {
+ pPool = LLAPRFile::sAPRFilePoolp;
+ }
+ }
+
+ LLVolatileAPRPool *pPool;
+ bool mInitialized;
+};
+
//---------------------------------------------------------------------
//
// LLAPRFile functions
@@ -297,9 +355,10 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
//check if already open some file
llassert_always(!mFile) ;
llassert_always(!mCurrentFilePoolp) ;
-
- apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ;
- s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, getAPRFilePool(apr_pool));
+
+ mCurrentFilePoolp = pool ? pool : sAPRFilePoolp;
+ apr_pool_t* apr_pool = mCurrentFilePoolp->getVolatileAPRPool(); //paired with clear in close()
+ s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, apr_pool);
if (s != APR_SUCCESS || !mFile)
{
@@ -324,14 +383,10 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLV
*sizep = file_size;
}
- if(!mCurrentFilePoolp)
+ if (!mFile)
{
- mCurrentFilePoolp = pool ;
-
- if(!mFile)
- {
- close() ;
- }
+ // It will clean pool
+ close() ;
}
return s ;
@@ -358,17 +413,6 @@ apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOO
return s;
}
-apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
-{
- if(!pool)
- {
- mCurrentFilePoolp = sAPRFilePoolp ;
- return mCurrentFilePoolp->getVolatileAPRPool() ;
- }
-
- return pool ;
-}
-
// File I/O
S32 LLAPRFile::read(void *buf, S32 nbytes)
{
@@ -425,7 +469,7 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset)
//
//static
-apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
+apr_status_t LLAPRFile::close(apr_file_t* file_handle)
{
apr_status_t ret = APR_SUCCESS ;
if(file_handle)
@@ -434,29 +478,23 @@ apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool)
file_handle = NULL ;
}
- if(pool)
- {
- pool->clearVolatileAPRPool() ;
- }
-
return ret ;
}
//static
-apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
+apr_file_t* LLAPRFile::open(const std::string& filename, apr_pool_t* apr_pool, apr_int32_t flags)
{
apr_status_t s;
apr_file_t* file_handle ;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
+ s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, apr_pool);
if (s != APR_SUCCESS || !file_handle)
{
ll_apr_warn_status(s);
LL_WARNS("APR") << " Attempting to open filename: " << filename << LL_ENDL;
file_handle = NULL ;
- close(file_handle, pool) ;
+ close(file_handle) ;
return NULL;
}
@@ -499,8 +537,9 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
{
//*****************************************
- apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY);
- //*****************************************
+ LLAPRFilePoolScope scope(pool);
+ apr_file_t* file_handle = open(filename, scope.getVolatileAPRPool(), APR_READ|APR_BINARY);
+ //*****************************************
if (!file_handle)
{
return 0;
@@ -533,7 +572,7 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb
}
//*****************************************
- close(file_handle, pool) ;
+ close(file_handle) ;
//*****************************************
return (S32)bytes_read;
}
@@ -547,9 +586,10 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
flags |= APR_APPEND;
offset = 0;
}
-
+
//*****************************************
- apr_file_t* file_handle = open(filename, pool, flags);
+ LLAPRFilePoolScope scope(pool);
+ apr_file_t* file_handle = open(filename, scope.getVolatileAPRPool(), flags);
//*****************************************
if (!file_handle)
{
@@ -583,7 +623,7 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
}
//*****************************************
- LLAPRFile::close(file_handle, pool);
+ LLAPRFile::close(file_handle);
//*****************************************
return (S32)bytes_written;
@@ -594,9 +634,8 @@ bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool)
{
apr_status_t s;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool());
- pool->clearVolatileAPRPool() ;
+ LLAPRFilePoolScope scope(pool);
+ s = apr_file_remove(filename.c_str(), scope.getVolatileAPRPool());
if (s != APR_SUCCESS)
{
@@ -612,9 +651,8 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname,
{
apr_status_t s;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool());
- pool->clearVolatileAPRPool() ;
+ LLAPRFilePoolScope scope(pool);
+ s = apr_file_rename(filename.c_str(), newname.c_str(), scope.getVolatileAPRPool());
if (s != APR_SUCCESS)
{
@@ -631,18 +669,16 @@ bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, ap
apr_file_t* apr_file;
apr_status_t s;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
+ LLAPRFilePoolScope scope(pool);
+ s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, scope.getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file)
{
- pool->clearVolatileAPRPool() ;
return false;
}
else
{
apr_file_close(apr_file) ;
- pool->clearVolatileAPRPool() ;
return true;
}
}
@@ -653,14 +689,12 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_file_t* apr_file;
apr_finfo_t info;
apr_status_t s;
-
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool());
+
+ LLAPRFilePoolScope scope(pool);
+ s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, scope.getVolatileAPRPool());
if (s != APR_SUCCESS || !apr_file)
- {
- pool->clearVolatileAPRPool() ;
-
+ {
return 0;
}
else
@@ -668,7 +702,6 @@ S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file);
apr_file_close(apr_file) ;
- pool->clearVolatileAPRPool() ;
if (s == APR_SUCCESS)
{
@@ -686,9 +719,8 @@ bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool());
- pool->clearVolatileAPRPool() ;
+ LLAPRFilePoolScope scope(pool);
+ s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, scope.getVolatileAPRPool());
if (s != APR_SUCCESS)
{
@@ -704,9 +736,8 @@ bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool)
{
apr_status_t s;
- pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
- s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool());
- pool->clearVolatileAPRPool() ;
+ LLAPRFilePoolScope scope(pool);
+ s = apr_file_remove(dirname.c_str(), scope.getVolatileAPRPool());
if (s != APR_SUCCESS)
{
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index 616dcb03d8..34e9e20a36 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -176,9 +176,6 @@ public:
apr_file_t* getFileHandle() {return mFile;}
void flush(); // Forceful file flushing
-
-private:
- apr_pool_t* getAPRFilePool(apr_pool_t* pool) ;
//
//*******************************************************************************************************************************
@@ -188,8 +185,8 @@ public:
static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
private:
- static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags);
- static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ;
+ static apr_file_t* open(const std::string& filename, apr_pool_t* apr_pool, apr_int32_t flags);
+ static apr_status_t close(apr_file_t* file) ;
static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset);
public:
// returns false if failure:
diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
index 1e43c92226..478dd6e771 100644
--- a/indra/llcommon/llsdutil.cpp
+++ b/indra/llcommon/llsdutil.cpp
@@ -506,7 +506,7 @@ struct Data
const char* name;
} typedata[] =
{
-#define def(type) { LLSD::type, #type + 4 }
+#define def(type) { LLSD::type, type[4] }
def(TypeUndefined),
def(TypeBoolean),
def(TypeInteger),
diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h
index 65bdb9a48e..8678ca97f2 100644
--- a/indra/llcommon/llsdutil.h
+++ b/indra/llcommon/llsdutil.h
@@ -558,10 +558,10 @@ LLSD shallow(LLSD value, LLSD filter=LLSD()) { return llsd_shallow(value, filter
} // namespace llsd
-namespace boost{
-// Specialization for generating a hash value from an LLSD block.
+// Specialization for generating a hash value from an LLSD block.
+namespace boost
+{
template <>
-/* struct boost:hash */
struct hash
{
typedef LLSD argument_type;
diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h
index 81adb1718c..a90c2c7e08 100644
--- a/indra/llcommon/llstl.h
+++ b/indra/llcommon/llstl.h
@@ -36,8 +36,10 @@
#include
#include
-#include // For strcmp
-
+#ifdef LL_LINUX
+// For strcmp
+#include
+#endif
// Use to compare the first element only of a pair
// e.g. typedef std::set, compare_pair > some_pair_set_t;
template
diff --git a/indra/llcommon/llthreadsafequeue.h b/indra/llcommon/llthreadsafequeue.h
index 30dd507f73..26e0d71d31 100644
--- a/indra/llcommon/llthreadsafequeue.h
+++ b/indra/llcommon/llthreadsafequeue.h
@@ -304,14 +304,13 @@ template
bool LLThreadSafeQueue::isClosed()
{
lock_t lock(mLock);
- return mClosed;
+ return mClosed && mStorage.size() == 0;
}
template
LLThreadSafeQueue::operator bool()
{
- lock_t lock(mLock);
- return ! mClosed;
+ return ! isClosed();
}
#endif
diff --git a/indra/llkdu/include_kdu_xxxx.h b/indra/llkdu/include_kdu_xxxx.h
index a1dbced60b..61204b5689 100644
--- a/indra/llkdu/include_kdu_xxxx.h
+++ b/indra/llkdu/include_kdu_xxxx.h
@@ -16,7 +16,7 @@
// #include "include_kdu_xxxx.h"
// // kdu_xxxx #undef'ed by include_kdu_xxxx.h
-#if LL_DARWIN
+#if __clang__
// don't *really* want to rebuild KDU so turn off specific warnings for this header
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wself-assign-field"
diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp
index 79ed566d00..ee7b14be85 100644
--- a/indra/llkdu/tests/llimagej2ckdu_test.cpp
+++ b/indra/llkdu/tests/llimagej2ckdu_test.cpp
@@ -29,7 +29,7 @@
// Class to test
#include "llimagej2ckdu.h"
-#if LL_DARWIN
+#if __clang__
// For this source, it's true that private fields in llkdumem.h are unused.
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-private-field"
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
index 18b2b124e1..d7801b6ddc 100644
--- a/indra/llmessage/llassetstorage.cpp
+++ b/indra/llmessage/llassetstorage.cpp
@@ -426,11 +426,11 @@ void LLAssetStorage::_cleanupRequests(BOOL all, S32 error)
LLAssetRequest* tmp = *curiter;
if (tmp->mUpCallback)
{
- tmp->mUpCallback(tmp->getUUID(), tmp->mUserData, error, LL_EXSTAT_NONE);
+ tmp->mUpCallback(tmp->getUUID(), tmp->mUserData, error, LLExtStat::NONE);
}
if (tmp->mDownCallback)
{
- tmp->mDownCallback(mVFS, tmp->getUUID(), tmp->getType(), tmp->mUserData, error, LL_EXSTAT_NONE);
+ tmp->mDownCallback(mVFS, tmp->getUUID(), tmp->getType(), tmp->mUserData, error, LLExtStat::NONE);
}
if (tmp->mInfoCallback)
{
@@ -465,7 +465,7 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse
// we've already got the file
if (callback)
{
- callback(mStaticVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
+ callback(mStaticVFS, uuid, type, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
}
return true;
}
@@ -506,7 +506,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
if (callback)
{
add(sFailedDownloadCount, 1);
- callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_FAILED, LL_EXSTAT_NONE);
+ callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_FAILED, LLExtStat::NONE);
}
return;
}
@@ -517,7 +517,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
if (callback)
{
add(sFailedDownloadCount, 1);
- callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LL_EXSTAT_NULL_UUID);
+ callback(mVFS, uuid, type, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LLExtStat::NULL_UUID);
}
return;
}
@@ -540,7 +540,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid,
// unless there's a weird error
if (callback)
{
- callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
+ callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
}
LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in VFS" << LL_ENDL;
@@ -694,7 +694,7 @@ void LLAssetStorage::downloadCompleteCallback(
}
}
- removeAndCallbackPendingDownloads(file_id, file_type, callback_id, callback_type, ext_status, result);
+ removeAndCallbackPendingDownloads(file_id, file_type, callback_id, callback_type, result, ext_status);
}
void LLAssetStorage::getEstateAsset(
@@ -719,7 +719,7 @@ void LLAssetStorage::getEstateAsset(
if (callback)
{
add(sFailedDownloadCount, 1);
- callback(mVFS, asset_id, atype, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LL_EXSTAT_NULL_UUID);
+ callback(mVFS, asset_id, atype, user_data, LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE, LLExtStat::NULL_UUID);
}
return;
}
@@ -741,7 +741,7 @@ void LLAssetStorage::getEstateAsset(
// unless there's a weird error
if (callback)
{
- callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
+ callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
}
}
else
@@ -792,7 +792,7 @@ void LLAssetStorage::getEstateAsset(
if (callback)
{
add(sFailedDownloadCount, 1);
- callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LL_EXSTAT_NO_UPSTREAM);
+ callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LLExtStat::NO_UPSTREAM);
}
}
}
@@ -885,7 +885,7 @@ void LLAssetStorage::getInvItemAsset(
// unless there's a weird error
if (callback)
{
- callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
+ callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LLExtStat::VFS_CACHED);
}
}
else
@@ -936,7 +936,7 @@ void LLAssetStorage::getInvItemAsset(
if (callback)
{
add(sFailedDownloadCount, 1);
- callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LL_EXSTAT_NO_UPSTREAM);
+ callback(mVFS, asset_id, atype, user_data, LL_ERR_CIRCUIT_GONE, LLExtStat::NO_UPSTREAM);
}
}
}
@@ -1034,7 +1034,7 @@ void LLAssetStorage::processUploadComplete(LLMessageSystem *msg, void **user_dat
msg->getBOOLFast(_PREHASH_AssetBlock, _PREHASH_Success, success);
asset_type = (LLAssetType::EType)asset_type_s8;
- this_ptr->_callUploadCallbacks(uuid, asset_type, success, LL_EXSTAT_NONE);
+ this_ptr->_callUploadCallbacks(uuid, asset_type, success, LLExtStat::NONE);
}
void LLAssetStorage::_callUploadCallbacks(const LLUUID &uuid, LLAssetType::EType asset_type, BOOL success, LLExtStat ext_status )
@@ -1288,12 +1288,12 @@ bool LLAssetStorage::deletePendingRequestImpl(LLAssetStorage::request_list_t* re
// Run callbacks.
if (req->mUpCallback)
{
- req->mUpCallback(req->getUUID(), req->mUserData, error, LL_EXSTAT_REQUEST_DROPPED);
+ req->mUpCallback(req->getUUID(), req->mUserData, error, LLExtStat::REQUEST_DROPPED);
}
if (req->mDownCallback)
{
add(sFailedDownloadCount, 1);
- req->mDownCallback(mVFS, req->getUUID(), req->getType(), req->mUserData, error, LL_EXSTAT_REQUEST_DROPPED);
+ req->mDownCallback(mVFS, req->getUUID(), req->getType(), req->mUserData, error, LLExtStat::REQUEST_DROPPED);
}
if (req->mInfoCallback)
{
diff --git a/indra/llmessage/llcoproceduremanager.cpp b/indra/llmessage/llcoproceduremanager.cpp
index c52a02fdc9..652ac321dc 100644
--- a/indra/llmessage/llcoproceduremanager.cpp
+++ b/indra/llmessage/llcoproceduremanager.cpp
@@ -272,6 +272,17 @@ void LLCoprocedureManager::close(const std::string &pool)
}
}
+// Explicitly create the VAAssetStorage pool
+void LLCoprocedureManager::createPool(const std::string& poolName)
+{
+ poolMap_t::iterator it = mPoolMap.find(poolName);
+ if (it == mPoolMap.end())
+ {
+ initializePool(poolName);
+ }
+}
+// Explicitly create the VAAssetStorage pool
+
//=========================================================================
LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
mPoolName(poolName),
diff --git a/indra/llmessage/llcoproceduremanager.h b/indra/llmessage/llcoproceduremanager.h
index 70204ba02b..9a9cbef6d5 100644
--- a/indra/llmessage/llcoproceduremanager.h
+++ b/indra/llmessage/llcoproceduremanager.h
@@ -79,6 +79,8 @@ public:
void close();
void close(const std::string &pool);
+
+ void createPool(const std::string& poolName); // Explicitly create the VAAssetStorage pool
private:
diff --git a/indra/llmessage/llextendedstatus.h b/indra/llmessage/llextendedstatus.h
index 01d90db076..9923d73c1a 100644
--- a/indra/llmessage/llextendedstatus.h
+++ b/indra/llmessage/llextendedstatus.h
@@ -28,47 +28,36 @@
#ifndef LL_LLEXTENDEDSTATUS_H
#define LL_LLEXTENDEDSTATUS_H
-// Very tentative fix for clang error constant-conversion
-// This happens due to LLExtStat being a S32 but LL_EXSTAT_RES_RESULT/LL_EXSTAT_VFS_RESULT shifting into the sign bit.
-// To not screw everything up right now LLExtStatus only gets to be a U32 when LINUX and CLANG
-
-//typedef S32 LLExtStat;
-#if defined(LL_LINUX) && defined(__clang__)
-typedef U32 LLExtStat;
-#else
-typedef S32 LLExtStat;
-#endif
-
-// Status provider groups - Top bits indicate which status type it is
-// Zero is common status code (next section)
-const LLExtStat LL_EXSTAT_CURL_RESULT = 1L<<30; // serviced by curl - use 1L if we really implement the below
-const LLExtStat LL_EXSTAT_RES_RESULT = 2L<<30; // serviced by resident copy
-const LLExtStat LL_EXSTAT_VFS_RESULT = 3L<<30; // serviced by vfs
+enum class LLExtStat: uint32_t
+{
+ // Status provider groups - Top bits indicate which status type it is
+ // Zero is common status code (next section)
+ CURL_RESULT = 1UL<<30, // serviced by curl - use 1L if we really implement the below
+ RES_RESULT = 2UL<<30, // serviced by resident copy
+ VFS_RESULT = 3UL<<30, // serviced by vfs
-// Common Status Codes
-//
-const LLExtStat LL_EXSTAT_NONE = 0x00000; // No extra info here - sorry!
-const LLExtStat LL_EXSTAT_NULL_UUID = 0x10001; // null asset ID
-const LLExtStat LL_EXSTAT_NO_UPSTREAM = 0x10002; // attempt to upload without a valid upstream method/provider
-const LLExtStat LL_EXSTAT_REQUEST_DROPPED = 0x10003; // request was dropped unserviced
-const LLExtStat LL_EXSTAT_NONEXISTENT_FILE = 0x10004; // trying to upload a file that doesn't exist
-const LLExtStat LL_EXSTAT_BLOCKED_FILE = 0x10005; // trying to upload a file that we can't open
+ // Common Status Codes
+ //
+ NONE = 0x00000, // No extra info here - sorry!
+ NULL_UUID = 0x10001, // null asset ID
+ NO_UPSTREAM = 0x10002, // attempt to upload without a valid upstream method/provider
+ REQUEST_DROPPED = 0x10003, // request was dropped unserviced
+ NONEXISTENT_FILE= 0x10004, // trying to upload a file that doesn't exist
+ BLOCKED_FILE = 0x10005, // trying to upload a file that we can't open
+ // curl status codes:
+ //
+ // Mask off CURL_RESULT for original result and
+ // see: libraries/include/curl/curl.h
-// curl status codes:
-//
-// Mask off LL_EXSTAT_CURL_RESULT for original result and
-// see: libraries/include/curl/curl.h
+ // Memory-Resident status codes:
+ // None at present
-
-// Memory-Resident status codes:
-// None at present
-
-
-// VFS status codes:
-const LLExtStat LL_EXSTAT_VFS_CACHED = LL_EXSTAT_VFS_RESULT | 0x0001;
-const LLExtStat LL_EXSTAT_VFS_CORRUPT = LL_EXSTAT_VFS_RESULT | 0x0002;
+ // VFS status codes:
+ VFS_CACHED = VFS_RESULT | 0x0001,
+ VFS_CORRUPT = VFS_RESULT | 0x0002,
+};
#endif // LL_LLEXTENDEDSTATUS_H
diff --git a/indra/llmessage/lltransfertargetvfile.cpp b/indra/llmessage/lltransfertargetvfile.cpp
index a572c68a7f..b27f0881e0 100644
--- a/indra/llmessage/lltransfertargetvfile.cpp
+++ b/indra/llmessage/lltransfertargetvfile.cpp
@@ -227,7 +227,7 @@ void LLTransferTargetVFile::completionCallback(const LLTSCode status)
mParams.getAssetID(),
mParams.getAssetType(),
mParams.mRequestDatap,
- LL_EXSTAT_NONE);
+ LLExtStat::NONE);
}
delete mParams.mRequestDatap;
mParams.mRequestDatap = NULL;
diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp
index 32e0e2cc3b..93d5cfc131 100644
--- a/indra/llmessage/llxfer.cpp
+++ b/indra/llmessage/llxfer.cpp
@@ -319,7 +319,7 @@ S32 LLXfer::processEOF()
if (mCallback)
{
- mCallback(mCallbackDataHandle,mCallbackResult,LL_EXSTAT_NONE);
+ mCallback(mCallbackDataHandle,mCallbackResult, LLExtStat::NONE);
}
return(retval);
diff --git a/indra/llmessage/llxfer_mem.cpp b/indra/llmessage/llxfer_mem.cpp
index 78a3e4f558..da8534ecdc 100644
--- a/indra/llmessage/llxfer_mem.cpp
+++ b/indra/llmessage/llxfer_mem.cpp
@@ -112,7 +112,7 @@ S32 LLXfer_Mem::processEOF()
if (mCallback)
{
- mCallback((void *)mBuffer,mBufferLength,mCallbackDataHandle,mCallbackResult,LL_EXSTAT_NONE);
+ mCallback((void *)mBuffer,mBufferLength,mCallbackDataHandle,mCallbackResult, LLExtStat::NONE);
}
return(retval);
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 14fd3e5522..a7172aa89a 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -371,6 +371,9 @@ void LLPluginClassMedia::setSizeInternal(void)
#if LL_DARWIN
if (!gHiDPISupport)
#endif
+// FIRE-30019: This clamp doesn't make sense on Linux, which can have
+// huge windows without needing to turn on HiDPI support
+#if !LL_LINUX
{
if (mRequestedMediaWidth > 2048)
mRequestedMediaWidth = 2048;
@@ -378,6 +381,7 @@ void LLPluginClassMedia::setSizeInternal(void)
if (mRequestedMediaHeight > 2048)
mRequestedMediaHeight = 2048;
}
+#endif
}
void LLPluginClassMedia::setAutoScale(bool auto_scale)
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index e06e783257..ea6b49616a 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -585,10 +585,10 @@ bool LLGLManager::initGL()
// Extract video card strings and convert to upper case to
// work around driver-to-driver variation in capitalization.
- mGLVendor = std::string((const char *)glGetString(GL_VENDOR));
+ mGLVendor = ll_safe_string((const char *)glGetString(GL_VENDOR));
LLStringUtil::toUpper(mGLVendor);
- mGLRenderer = std::string((const char *)glGetString(GL_RENDERER));
+ mGLRenderer = ll_safe_string((const char *)glGetString(GL_RENDERER));
LLStringUtil::toUpper(mGLRenderer);
parse_gl_version( &mDriverVersionMajor,
@@ -892,9 +892,9 @@ void LLGLManager::getGLInfo(LLSD& info)
}
else
{
- info["GLInfo"]["GLVendor"] = std::string((const char *)glGetString(GL_VENDOR));
- info["GLInfo"]["GLRenderer"] = std::string((const char *)glGetString(GL_RENDERER));
- info["GLInfo"]["GLVersion"] = std::string((const char *)glGetString(GL_VERSION));
+ info["GLInfo"]["GLVendor"] = ll_safe_string((const char *)glGetString(GL_VENDOR));
+ info["GLInfo"]["GLRenderer"] = ll_safe_string((const char *)glGetString(GL_RENDERER));
+ info["GLInfo"]["GLVersion"] = ll_safe_string((const char *)glGetString(GL_VERSION));
}
#if !LL_MESA_HEADLESS
@@ -944,9 +944,9 @@ void LLGLManager::printGLInfoString()
}
else
{
- LL_INFOS("RenderInit") << "GL_VENDOR: " << ((const char *)glGetString(GL_VENDOR)) << LL_ENDL;
- LL_INFOS("RenderInit") << "GL_RENDERER: " << ((const char *)glGetString(GL_RENDERER)) << LL_ENDL;
- LL_INFOS("RenderInit") << "GL_VERSION: " << ((const char *)glGetString(GL_VERSION)) << LL_ENDL;
+ LL_INFOS("RenderInit") << "GL_VENDOR: " << ll_safe_string((const char *)glGetString(GL_VENDOR)) << LL_ENDL;
+ LL_INFOS("RenderInit") << "GL_RENDERER: " << ll_safe_string((const char *)glGetString(GL_RENDERER)) << LL_ENDL;
+ LL_INFOS("RenderInit") << "GL_VERSION: " << ll_safe_string((const char *)glGetString(GL_VERSION)) << LL_ENDL;
}
#if !LL_MESA_HEADLESS
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 42ab9b87dd..938cb5f5ce 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -666,6 +666,37 @@ void LLAccordionCtrl::onScrollPosChangeCallback(S32, LLScrollbar*)
{
updateLayout(getRect().getWidth(),getRect().getHeight());
}
+
+// virtual
+void LLAccordionCtrl::onChildGotFocus(const LLUICtrl *cntrl)
+{
+ if (mScrollbar && mScrollbar->getVisible())
+ {
+ // same as scrollToShowRect
+ LLRect rect;
+ cntrl->localRectToOtherView(cntrl->getLocalRect(), &rect, this);
+
+ // Translate to parent coordinatess to check if we are in visible rectangle
+ rect.translate(getRect().mLeft, getRect().mBottom);
+
+ if (!getRect().contains(rect))
+ {
+ // for accordition's scroll, height is in pixels
+ // Back to local coords and calculate position for scroller
+ S32 bottom = mScrollbar->getDocPos() - rect.mBottom + getRect().mBottom;
+ S32 top = mScrollbar->getDocPos() - rect.mTop + getRect().mTop;
+
+ S32 scroll_pos = llclamp(mScrollbar->getDocPos(),
+ bottom, // min vertical scroll
+ top); // max vertical scroll
+
+ mScrollbar->setDocPos(scroll_pos);
+ }
+ }
+
+ LLUICtrl::onChildGotFocus(cntrl);
+}
+
void LLAccordionCtrl::onOpen (const LLSD& key)
{
for(size_t i=0;igetVisible())
+ {
+ LLRect rect;
+ cntrl->localRectToOtherView(cntrl->getLocalRect(), &rect, this);
+
+ // Translate to parent coordinatess to check if we are in visible rectangle
+ rect.translate(getRect().mLeft, getRect().mBottom);
+
+ if (!getRect().contains(rect))
+ {
+ // for accordition's scroll, height is in pixels
+ // Back to local coords and calculate position for scroller
+ S32 bottom = mScrollbar->getDocPos() - rect.mBottom + getRect().mBottom;
+ S32 top = mScrollbar->getDocPos() - rect.mTop + getRect().mTop;
+
+ S32 scroll_pos = llclamp(mScrollbar->getDocPos(),
+ bottom, // min vertical scroll
+ top); // max vertical scroll
+
+ mScrollbar->setDocPos(scroll_pos);
+ }
+ }
+
+ LLUICtrl::onChildGotFocus(cntrl);
+}
+
BOOL LLAccordionCtrlTab::handleMouseDown(S32 x, S32 y, MASK mask)
{
if(mCollapsible && mHeaderVisible && mCanOpenClose)
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 0263bce4be..53546ad5a1 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -159,6 +159,7 @@ public:
* Raises notifyParent event with "child_visibility_change" = new_visibility
*/
void onVisibilityChange(BOOL new_visibility);
+ virtual void onChildGotFocus(const LLUICtrl * cntrl);
// Changes expand/collapse state and triggers expand/collapse callbacks
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 7ff3fac205..c7f82dca0d 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3382,25 +3382,27 @@ BOOL LLMenuBarGL::handleAcceleratorKey(KEY key, MASK mask)
mAltKeyTrigger = FALSE;
}
- if(!result
- && (key == KEY_F10 && mask == MASK_CONTROL)
- && !gKeyboard->getKeyRepeated(key)
- && isInVisibleChain())
- {
- if (getHighlightedItem())
- {
- clearHoverItem();
- LLMenuGL::setKeyboardMode(FALSE);
- }
- else
- {
- // close menus originating from other menu bars when first opening menu via keyboard
- LLMenuGL::sMenuContainer->hideMenus();
- highlightNextItem(NULL);
- LLMenuGL::setKeyboardMode(TRUE);
- }
- return TRUE;
- }
+ // FIRE-30003: (CTRL-)F10 can't be used as gesture trigger
+ //if(!result
+ // && (key == KEY_F10 && mask == MASK_CONTROL)
+ // && !gKeyboard->getKeyRepeated(key)
+ // && isInVisibleChain())
+ //{
+ // if (getHighlightedItem())
+ // {
+ // clearHoverItem();
+ // LLMenuGL::setKeyboardMode(FALSE);
+ // }
+ // else
+ // {
+ // // close menus originating from other menu bars when first opening menu via keyboard
+ // LLMenuGL::sMenuContainer->hideMenus();
+ // highlightNextItem(NULL);
+ // LLMenuGL::setKeyboardMode(TRUE);
+ // }
+ // return TRUE;
+ //}
+ //
if (result && !getHighlightedItem() && LLMenuGL::sMenuContainer->hasVisibleMenu())
{
diff --git a/indra/llui/llrngwriter.cpp b/indra/llui/llrngwriter.cpp
index e4a31d6a79..4bd1561425 100644
--- a/indra/llui/llrngwriter.cpp
+++ b/indra/llui/llrngwriter.cpp
@@ -29,14 +29,7 @@
#include "llrngwriter.h"
#include "lluicolor.h"
-#if LL_DARWIN
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdelete-incomplete"
#include "lluictrlfactory.h"
-#pragma clang diagnostic pop
-#else
-#include "lluictrlfactory.h"
-#endif
#include "boost/bind.hpp"
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index f324cfe653..ce9449f587 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -709,6 +709,7 @@ void LLUICtrl::setFocus(BOOL b)
if (!hasFocus())
{
gFocusMgr.setKeyboardFocus( this );
+ onChildGotFocus(this);
}
}
else
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 4bda22978a..135ed57a4f 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -37,6 +37,7 @@
#include "llheteromap.h"
class LLView;
+void deleteView(LLView*); // Inside LLView.cpp, avoid having to potentially delete an incomplete type here.
// lookup widget constructor funcs by widget name
template
@@ -160,8 +161,8 @@ public:
LLXMLNodePtr root_node;
if (!LLUICtrlFactory::getLayeredXMLNode(filename, root_node))
- {
- LL_WARNS() << "Couldn't parse XUI file: " << instance().getCurFileName() << LL_ENDL;
+ {
+ LL_WARNS() << "Couldn't parse XUI from path: " << instance().getCurFileName() << ", from filename: " << filename << LL_ENDL;
goto fail;
}
@@ -174,14 +175,7 @@ public:
{
LL_WARNS() << "Widget in " << filename << " was of type " << typeid(view).name() << " instead of expected type " << typeid(T).name() << LL_ENDL;
-#if __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdelete-incomplete"
- delete view;
-#pragma clang diagnostic pop
-#else
- delete view;
-#endif
+ deleteView(view);
view = NULL;
}
}
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index da847b509a..63439fbf34 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -86,6 +86,11 @@ template class LLView* LLView::getChild(
static LLDefaultChildRegistry::Register r("view");
+void deleteView(LLView *aView)
+{
+ delete aView;
+}
+
namespace LLInitParam
{
void TypeValues::declareValues()
@@ -685,6 +690,16 @@ void LLView::onVisibilityChange ( BOOL new_visibility )
}
}
+// virtual
+void LLView::onChildGotFocus(const LLUICtrl * cntrl)
+{
+ LLView* parent_view = getParent();
+ if (parent_view)
+ {
+ parent_view->onChildGotFocus(cntrl);
+ }
+}
+
// virtual
void LLView::translate(S32 x, S32 y)
{
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index cd7b2b508c..bee9dd8c60 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -307,6 +307,7 @@ public:
virtual BOOL setLabelArg( const std::string& key, const LLStringExplicit& text );
virtual void onVisibilityChange ( BOOL new_visibility );
+ virtual void onChildGotFocus(const LLUICtrl * cntrl);
void pushVisible(BOOL visible) { mLastVisible = mVisible; setVisible(visible); }
void popVisible() { setVisible(mLastVisible); }
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index b43b2aca06..f2959e60ad 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -717,6 +717,7 @@ LLWindowWin32::~LLWindowWin32()
void LLWindowWin32::show()
{
+ LL_DEBUGS("Window") << "Setting window to show" << LL_ENDL;
ShowWindow(mWindowHandle, SW_SHOW);
SetForegroundWindow(mWindowHandle);
SetFocus(mWindowHandle);
@@ -1129,6 +1130,12 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
mPostQuit = FALSE;
// create window
+ LL_DEBUGS("Window") << "Creating window with X: " << window_rect.left
+ << " Y: " << window_rect.top
+ << " Width: " << (window_rect.right - window_rect.left)
+ << " Height: " << (window_rect.bottom - window_rect.top)
+ << " Fullscreen: " << mFullscreen
+ << LL_ENDL;
DestroyWindow(mWindowHandle);
mWindowHandle = CreateWindowEx(dw_ex_style,
mWindowClassName,
@@ -1960,6 +1967,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( h_wnd, GWLP_USERDATA );
+ bool debug_window_proc = gDebugWindowProc || debugLoggingEnabled("Window");
+
if (NULL != window_imp)
{
@@ -2002,9 +2011,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_DEVICECHANGE:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_DEVICECHANGE");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
- LL_INFOS() << " WM_DEVICECHANGE: wParam=" << w_param
+ LL_INFOS("Window") << " WM_DEVICECHANGE: wParam=" << w_param
<< "; lParam=" << l_param << LL_ENDL;
}
if (w_param == DBT_DEVNODES_CHANGED || w_param == DBT_DEVICEARRIVAL)
@@ -2060,7 +2069,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
BOOL activating = (BOOL) w_param;
BOOL minimized = window_imp->getMinimized();
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "WINDOWPROC ActivateApp "
<< " activating " << S32(activating)
@@ -2111,7 +2120,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// JC - I'm not sure why, but if we don't report that we handled the
// WM_ACTIVATE message, the WM_ACTIVATEAPP messages don't work
// properly when we run fullscreen.
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "WINDOWPROC Activate "
<< " activating " << S32(activating)
@@ -2183,7 +2192,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
{
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
<< " key " << S32(w_param)
@@ -2209,7 +2218,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
LL_RECORD_BLOCK_TIME(FTM_KEYHANDLER);
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
<< " key " << S32(w_param)
@@ -2225,9 +2234,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
}
case WM_IME_SETCONTEXT:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_SETCONTEXT");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
- LL_INFOS() << "WM_IME_SETCONTEXT" << LL_ENDL;
+ LL_INFOS("Window") << "WM_IME_SETCONTEXT" << LL_ENDL;
}
if (LLWinImm::isAvailable() && window_imp->mPreeditor)
{
@@ -2238,7 +2247,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_IME_STARTCOMPOSITION:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_STARTCOMPOSITION");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS() << "WM_IME_STARTCOMPOSITION" << LL_ENDL;
}
@@ -2251,7 +2260,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_IME_ENDCOMPOSITION:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_ENDCOMPOSITION");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS() << "WM_IME_ENDCOMPOSITION" << LL_ENDL;
}
@@ -2263,7 +2272,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_IME_COMPOSITION:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_COMPOSITION");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS() << "WM_IME_COMPOSITION" << LL_ENDL;
}
@@ -2276,7 +2285,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_IME_REQUEST:
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_IME_REQUEST");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS() << "WM_IME_REQUEST" << LL_ENDL;
}
@@ -2307,7 +2316,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// characters. We just need to take care of surrogate pairs sent as two WM_CHAR's
// by ourselves. It is not that tough. -- Alissa Sabre @ SL
window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_CHAR");
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
<< " key " << S32(w_param)
@@ -2750,7 +2759,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
S32 width = S32( LOWORD(l_param) );
S32 height = S32( HIWORD(l_param) );
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
BOOL maximized = ( w_param == SIZE_MAXIMIZED );
BOOL restored = ( w_param == SIZE_RESTORED );
@@ -2825,7 +2834,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
}
case WM_SETFOCUS:
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
}
@@ -2849,7 +2858,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
return 0;
case WM_KILLFOCUS:
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
}
@@ -2881,7 +2890,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
break;
default:
{
- if (gDebugWindowProc)
+ if (debug_window_proc)
{
LL_INFOS("Window") << "Unhandled windows message code: " << U32(u_msg) << LL_ENDL;
}
@@ -2891,7 +2900,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
window_imp->mCallbacks->handlePauseWatchdog(window_imp);
}
-
+ else
+ {
+ // (NULL == window_imp)
+ LL_DEBUGS("Window") << "No window implementation to handle message with, message code: " << U32(u_msg) << LL_ENDL;
+ }
// pass unhandled messages down to Windows
return DefWindowProc(h_wnd, u_msg, w_param, l_param);
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
index 17400a203e..013a422d35 100644
--- a/indra/llxml/CMakeLists.txt
+++ b/indra/llxml/CMakeLists.txt
@@ -28,7 +28,6 @@ set(llxml_HEADER_FILES
CMakeLists.txt
llcontrol.h
- llcontrolgroupreader.h
llxmlnode.h
llxmlparser.h
llxmltree.h
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index e72fdcf038..07e4ffc0dd 100644
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -34,8 +34,6 @@
#include "llrefcount.h"
#include "llinstancetracker.h"
-#include "llcontrolgroupreader.h"
-
#include
// *NOTE: boost::visit_each<> generates warning 4675 on .net 2003
diff --git a/indra/llxml/llcontrolgroupreader.h b/indra/llxml/llcontrolgroupreader.h
deleted file mode 100644
index fe77d33fc4..0000000000
--- a/indra/llxml/llcontrolgroupreader.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * @file llcontrolgroupreader.h
- * @brief Interface providing readonly access to LLControlGroup (intended for unit testing)
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLCONTROLGROUPREADER_H
-#define LL_LLCONTROLGROUPREADER_H
-
-#include "stdtypes.h"
-#include
-
-#include "v3math.h"
-#include "v3dmath.h"
-#include "v3color.h"
-#include "v4color.h"
-#include "llrect.h"
-
-class LLControlGroupReader
-{
-public:
- LLControlGroupReader() {}
- virtual ~LLControlGroupReader() {}
-
- virtual std::string getString(const std::string& name) { return ""; }
- virtual LLWString getWString(const std::string& name) { return LLWString(); }
- virtual std::string getText(const std::string& name) { return ""; }
- virtual LLVector3 getVector3(const std::string& name) { return LLVector3(); }
- virtual LLVector3d getVector3d(const std::string& name) { return LLVector3d(); }
- virtual LLRect getRect(const std::string& name) { return LLRect(); }
- virtual BOOL getBOOL(const std::string& name) { return FALSE; }
- virtual S32 getS32(const std::string& name) { return 0; }
- virtual F32 getF32(const std::string& name) {return 0.0f; }
- virtual U32 getU32(const std::string& name) {return 0; }
- virtual LLSD getLLSD(const std::string& name) { return LLSD(); }
-
- virtual LLColor4 getColor(const std::string& name) { return LLColor4(); }
- virtual LLColor4 getColor4(const std::string& name) { return LLColor4(); }
- virtual LLColor3 getColor3(const std::string& name) { return LLColor3(); }
-
- virtual void setBOOL(const std::string& name, BOOL val) {}
- virtual void setS32(const std::string& name, S32 val) {}
- virtual void setF32(const std::string& name, F32 val) {}
- virtual void setU32(const std::string& name, U32 val) {}
- virtual void setString(const std::string& name, const std::string& val) {}
- virtual void setVector3(const std::string& name, const LLVector3 &val) {}
- virtual void setVector3d(const std::string& name, const LLVector3d &val) {}
- virtual void setQuaternion(const std::string& name, const LLQuaternion &val) {}
- virtual void setRect(const std::string& name, const LLRect &val) {}
- virtual void setColor4(const std::string& name, const LLColor4 &val) {}
- virtual void setLLSD(const std::string& name, const LLSD& val) {}
-};
-
-#endif /* LL_LLCONTROLGROUPREADER_H */
-
-
-
-
-
-
-
diff --git a/indra/newview/NACLantispam.cpp b/indra/newview/NACLantispam.cpp
index 1b1ce6916d..5fee4d0621 100644
--- a/indra/newview/NACLantispam.cpp
+++ b/indra/newview/NACLantispam.cpp
@@ -348,6 +348,7 @@ bool NACLAntiSpamRegistry::checkQueue(EAntispamQueue queue, const LLUUID& source
{
// skip all checks if we're we've been administratively turned off
static LLCachedControl useAntiSpam(gSavedSettings, "UseAntiSpam");
+ static LLCachedControl useAntiSpamMine(gSavedSettings, "FSUseAntiSpamMine");
if (!useAntiSpam)
{
return false;
@@ -358,10 +359,13 @@ bool NACLAntiSpamRegistry::checkQueue(EAntispamQueue queue, const LLUUID& source
return false;
}
- LLViewerObject* obj = gObjectList.findObject(source);
- if (obj && obj->permYouOwner())
+ if (sourcetype == ANTISPAM_SOURCE_OBJECT)
{
- return false;
+ LLViewerObject* obj = gObjectList.findObject(source);
+ if (obj && obj->permYouOwner() && !useAntiSpamMine)
+ {
+ return false;
+ }
}
S32 result = 0;
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index 3c43d71599..4b20d9700d 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-6.4.7
+6.4.8
diff --git a/indra/newview/app_settings/keys.xml b/indra/newview/app_settings/keys.xml
index 42f0f55ddf..a8037fec05 100644
--- a/indra/newview/app_settings/keys.xml
+++ b/indra/newview/app_settings/keys.xml
@@ -360,4 +360,4 @@
-
+
\ No newline at end of file
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a0c0f15b88..1ff9db26cb 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -18773,7 +18773,7 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
1
- PoolSizeAssetStorage
+ PoolSizeVAssetStorage
Comment
Coroutine Pool size for AssetStorage requests
@@ -21448,6 +21448,17 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
0
+ FSEnvironmentManualTransitionTime
+
+ Comment
+ Timespan for blending between day/water/sky settings when manually changed. 0 is immediate.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
FSDisableAvatarTrackerAtCloseIn
Comment
diff --git a/indra/newview/fschathistory.cpp b/indra/newview/fschathistory.cpp
index b6849cf35f..d800a0c7a5 100644
--- a/indra/newview/fschathistory.cpp
+++ b/indra/newview/fschathistory.cpp
@@ -1148,7 +1148,10 @@ LLView* FSChatHistory::getSeparator()
LLView* FSChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params, const LLSD& args)
{
FSChatHistoryHeader* header = FSChatHistoryHeader::createInstance(mMessageHeaderFilename);
- header->setup(chat, style_params, args);
+ if (header)
+ {
+ header->setup(chat, style_params, args);
+ }
return header;
}
@@ -1504,6 +1507,12 @@ void FSChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
view = getSeparator();
p.top_pad = mTopSeparatorPad;
p.bottom_pad = mBottomSeparatorPad;
+ if (!view)
+ {
+ // Might be wiser to make this LL_ERRS, getSeparator() should work in case of correct instalation.
+ LL_WARNS() << "Failed to create separator from " << mMessageSeparatorFilename << ": can't append to history" << LL_ENDL;
+ return;
+ }
}
else
{
@@ -1514,6 +1523,11 @@ void FSChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
else
p.top_pad = mTopHeaderPad;
p.bottom_pad = mBottomHeaderPad;
+ if (!view)
+ {
+ LL_WARNS() << "Failed to create header from " << mMessageHeaderFilename << ": can't append to history" << LL_ENDL;
+ return;
+ }
}
p.view = view;
diff --git a/indra/newview/fsfloaterexport.cpp b/indra/newview/fsfloaterexport.cpp
index eefbb6dd94..af4b8442bb 100644
--- a/indra/newview/fsfloaterexport.cpp
+++ b/indra/newview/fsfloaterexport.cpp
@@ -839,7 +839,7 @@ void FSFloaterObjectExport::onLoadComplete(LLVFS* vfs, const LLUUID& asset_uuid,
if (status != 0)
{
- LL_WARNS("export") << "Problem fetching asset: " << asset_uuid << " " << status << " " << ext_status << LL_ENDL;
+ LL_WARNS("export") << "Problem fetching asset: " << asset_uuid << " " << status << " " << (U32)ext_status << LL_ENDL;
delete data;
return;
}
diff --git a/indra/newview/fspanellogin.cpp b/indra/newview/fspanellogin.cpp
index 3669fe5b82..12a7d3dcee 100644
--- a/indra/newview/fspanellogin.cpp
+++ b/indra/newview/fspanellogin.cpp
@@ -377,6 +377,10 @@ void FSPanelLogin::addFavoritesToStartLocation()
}
break;
}
+ if (combo->getValue().asString().empty())
+ {
+ combo->selectFirstItem();
+ }
LLFloaterPreference::updateShowFavoritesCheckbox(mShowFavorites);
}
@@ -1133,13 +1137,13 @@ void FSPanelLogin::onSelectServer()
{
std::string location = location_combo->getValue().asString();
LLSLURL slurl(location); // generata a slurl from the location combo contents
- if ( slurl.getType() == LLSLURL::LOCATION
- && slurl.getGrid() != LLGridManager::getInstance()->getGrid()
- )
+ if (location.empty()
+ || (slurl.getType() == LLSLURL::LOCATION
+ && slurl.getGrid() != LLGridManager::getInstance()->getGrid())
+ )
{
// the grid specified by the location is not this one, so clear the combo
location_combo->setCurrentByIndex(0); // last location on the new grid
- location_combo->setTextEntry(LLStringUtil::null);
}
}
break;
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 8de1b39efc..4f32670c44 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -975,6 +975,17 @@ bool LLAgent::enableFlying()
//
}
+// static
+bool LLAgent::isSitting()
+{
+ BOOL sitting = FALSE;
+ if (isAgentAvatarValid())
+ {
+ sitting = gAgentAvatarp->isSitting();
+ }
+ return sitting;
+}
+
void LLAgent::standUp()
{
// setControlFlags(AGENT_CONTROL_STAND_UP);
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 5e049a5a83..897b2e1661 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -363,6 +363,7 @@ public:
static void toggleFlying();
static bool enableFlying();
BOOL canFly(); // Does this parcel allow you to fly?
+ static bool isSitting();
//--------------------------------------------------------------------
// Voice
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 5391a000c7..f3b90e510d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1335,7 +1335,10 @@ bool LLAppViewer::init()
gSimLastTime = gRenderStartTime.getElapsedTimeF32();
gSimFrames = (F32)gFrameCount;
- LLViewerJoystick::getInstance()->init(false);
+ if (gSavedSettings.getBOOL("JoystickEnabled"))
+ {
+ LLViewerJoystick::getInstance()->init(false);
+ }
try {
initializeSecHandler();
@@ -2200,8 +2203,11 @@ bool LLAppViewer::cleanup()
delete gKeyboard;
gKeyboard = NULL;
- // Turn off Space Navigator and similar devices
- LLViewerJoystick::getInstance()->terminate();
+ if (LLViewerJoystick::instanceExists())
+ {
+ // Turn off Space Navigator and similar devices
+ LLViewerJoystick::getInstance()->terminate();
+ }
LL_INFOS() << "Cleaning up Objects" << LL_ENDL;
@@ -3792,8 +3798,8 @@ LLSD LLAppViewer::getViewerInfo() const
info["MEMORY_MB"] = LLSD::Integer(gSysMemory.getPhysicalMemoryKB().valueInUnits());
// Moved hack adjustment to Windows memory size into llsys.cpp
info["OS_VERSION"] = LLOSInfo::instance().getOSString();
- info["GRAPHICS_CARD_VENDOR"] = (const char*)(glGetString(GL_VENDOR));
- info["GRAPHICS_CARD"] = (const char*)(glGetString(GL_RENDERER));
+ info["GRAPHICS_CARD_VENDOR"] = ll_safe_string((const char*)(glGetString(GL_VENDOR)));
+ info["GRAPHICS_CARD"] = ll_safe_string((const char*)(glGetString(GL_RENDERER)));
#if LL_WINDOWS
std::string drvinfo = gDXHardware.getDriverVersionWMI();
@@ -3815,7 +3821,7 @@ LLSD LLAppViewer::getViewerInfo() const
// [RLVa:KB] - Checked: 2010-04-18 (RLVa-1.2.0)
info["RLV_VERSION"] = (rlv_handler_t::isEnabled()) ? RlvStrings::getVersionAbout() : LLTrans::getString("RLVaStatusDisabled");
// [/RLVa:KB]
- info["OPENGL_VERSION"] = (const char*)(glGetString(GL_VERSION));
+ info["OPENGL_VERSION"] = ll_safe_string((const char*)(glGetString(GL_VERSION)));
info["LIBCURL_VERSION"] = LLCore::LLHttp::getCURLVersion();
// Settings
@@ -4764,6 +4770,7 @@ static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_q
void LLAppViewer::userQuit()
{
+ LL_INFOS() << "User requested quit" << LL_ENDL;
if (gDisconnected
|| !gViewerWindow
|| !gViewerWindow->getProgressView()
@@ -5362,6 +5369,7 @@ void LLAppViewer::saveFinalSnapshot()
gViewerWindow->getWindowWidthRaw(),
gViewerWindow->getWindowHeightRaw(),
FALSE,
+ gSavedSettings.getBOOL("RenderHUDInSnapshot"),
TRUE,
LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
diff --git a/indra/newview/llappviewerlistener.cpp b/indra/newview/llappviewerlistener.cpp
index 94250f1fc2..2380a8ebf0 100644
--- a/indra/newview/llappviewerlistener.cpp
+++ b/indra/newview/llappviewerlistener.cpp
@@ -52,10 +52,12 @@ LLAppViewerListener::LLAppViewerListener(const LLAppViewerGetter& getter):
void LLAppViewerListener::requestQuit(const LLSD& event)
{
+ LL_INFOS() << "Listener requested quit" << LL_ENDL;
mAppViewerGetter()->requestQuit();
}
void LLAppViewerListener::forceQuit(const LLSD& event)
{
+ LL_INFOS() << "Listener requested force quit" << LL_ENDL;
mAppViewerGetter()->forceQuit();
}
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index bd56adf3de..a91322541d 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -1138,7 +1138,8 @@ LLView* LLChatHistory::getSeparator()
LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params, const LLSD& args)
{
LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename);
- header->setup(chat, style_params, args);
+ if (header)
+ header->setup(chat, style_params, args);
return header;
}
@@ -1364,6 +1365,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
view = getSeparator();
p.top_pad = mTopSeparatorPad;
p.bottom_pad = mBottomSeparatorPad;
+ if (!view)
+ {
+ // Might be wiser to make this LL_ERRS, getSeparator() should work in case of correct instalation.
+ LL_WARNS() << "Failed to create separator from " << mMessageSeparatorFilename << ": can't append to history" << LL_ENDL;
+ return;
+ }
}
else
{
@@ -1372,7 +1379,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
p.top_pad = 0;
else
p.top_pad = mTopHeaderPad;
- p.bottom_pad = mBottomHeaderPad;
+ p.bottom_pad = mBottomHeaderPad;
+ if (!view)
+ {
+ LL_WARNS() << "Failed to create header from " << mMessageHeaderFilename << ": can't append to history" << LL_ENDL;
+ return;
+ }
}
p.view = view;
diff --git a/indra/newview/llcommandhandler.cpp b/indra/newview/llcommandhandler.cpp
index 76d965b1f1..23e2271eae 100644
--- a/indra/newview/llcommandhandler.cpp
+++ b/indra/newview/llcommandhandler.cpp
@@ -222,7 +222,7 @@ struct symbol_info
#define ent(SYMBOL) \
{ \
- #SYMBOL + 28, /* skip "LLCommandHandler::UNTRUSTED_" prefix */ \
+ SYMBOL[28], /* skip "LLCommandHandler::UNTRUSTED_" prefix */ \
SYMBOL \
}
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp
index 1addc3f085..9fa14a1d70 100644
--- a/indra/newview/llconversationlog.cpp
+++ b/indra/newview/llconversationlog.cpp
@@ -500,6 +500,10 @@ bool LLConversationLog::saveToFile(const std::string& filename)
conv_it->getSessionID().toString(conversation_id);
conv_it->getParticipantID().toString(participant_id);
+ bool is_adhoc = (conv_it->getConversationType() == LLIMModel::LLIMSession::ADHOC_SESSION);
+ std::string conv_name = is_adhoc ? conv_it->getConversationName() : LLURI::escape(conv_it->getConversationName());
+ std::string file_name = is_adhoc ? conv_it->getHistoryFileName() : LLURI::escape(conv_it->getHistoryFileName());
+
// examples of two file entries
// [1343221177] 0 1 0 John Doe| 7e4ec5be-783f-49f5-71dz-16c58c64c145 4ec62a74-c246-0d25-2af6-846beac2aa55 john.doe|
// [1343222639] 2 0 0 Ad-hoc Conference| c3g67c89-c479-4c97-b21d-32869bcfe8rc 68f1c33e-4135-3e3e-a897-8c9b23115c09 Ad-hoc Conference hash597394a0-9982-766d-27b8-c75560213b9a|
@@ -508,10 +512,10 @@ bool LLConversationLog::saveToFile(const std::string& filename)
(S32)conv_it->getConversationType(),
(S32)0,
(S32)conv_it->hasOfflineMessages(),
- LLURI::escape(conv_it->getConversationName()).c_str(),
+ conv_name.c_str(),
participant_id.c_str(),
conversation_id.c_str(),
- LLURI::escape(conv_it->getHistoryFileName()).c_str());
+ file_name.c_str());
}
fclose(fp);
return true;
@@ -567,14 +571,18 @@ bool LLConversationLog::loadFromFile(const std::string& filename)
conv_id_buffer,
history_file_name);
+ bool is_adhoc = ((SessionType)stype == LLIMModel::LLIMSession::ADHOC_SESSION);
+ std::string conv_name = is_adhoc ? conv_name_buffer : LLURI::unescape(conv_name_buffer);
+ std::string file_name = is_adhoc ? history_file_name : LLURI::unescape(history_file_name);
+
ConversationParams params;
params.time(LLUnits::Seconds::fromValue(time))
.conversation_type((SessionType)stype)
.has_offline_ims(has_offline_ims)
- .conversation_name(LLURI::unescape(conv_name_buffer))
+ .conversation_name(conv_name)
.participant_id(LLUUID(part_id_buffer))
.session_id(LLUUID(conv_id_buffer))
- .history_filename(LLURI::unescape(history_file_name));
+ .history_filename(file_name);
LLConversation conversation(params);
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index a850d1bbda..d818c454ab 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -1283,12 +1283,33 @@ void LLEnvironment::setEnvironment(EnvSelection_t env, const LLUUID &assetId, S3
setEnvironment(env, assetId, LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET);
}
-
-void LLEnvironment::setEnvironment(EnvSelection_t env,
- const LLUUID &assetId,
- LLSettingsDay::Seconds daylength,
- LLSettingsDay::Seconds dayoffset,
- S32 env_version)
+// FIRE-29926 - allow manually selected environments to have a user defined transition time.
+void LLEnvironment::setManualEnvironment(EnvSelection_t env, const LLUUID &assetId, S32 env_version)
+{
+ LLSettingsBase::Seconds transitionTime(static_cast(gSavedSettings.getF32("FSEnvironmentManualTransitionTime")));
+ setEnvironmentWithTransition(env, assetId, LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET, transitionTime);
+}
+void LLEnvironment::setEnvironmentWithTransition(
+ EnvSelection_t env,
+ const LLUUID &assetId,
+ LLSettingsDay::Seconds daylength,
+ LLSettingsDay::Seconds dayoffset,
+ LLSettingsBase::Seconds transition,
+ S32 env_version)
+{
+ LLSettingsVOBase::getSettingsAsset(assetId,
+ [this, env, daylength, dayoffset, transition, env_version](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat)
+ {
+ onSetEnvAssetLoaded(env, asset_id, settings, daylength, dayoffset, transition, status, env_version);
+ });
+}
+//
+void LLEnvironment::setEnvironment(
+ EnvSelection_t env,
+ const LLUUID &assetId,
+ LLSettingsDay::Seconds daylength,
+ LLSettingsDay::Seconds dayoffset,
+ S32 env_version)
{
LLSettingsVOBase::getSettingsAsset(assetId,
[this, env, daylength, dayoffset, env_version](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat)
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index bbd0adaca8..a974e3893c 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -145,6 +145,10 @@ public:
void setEnvironment(EnvSelection_t env, const LLSettingsWater::ptr_t & fixed, S32 env_version = NO_VERSION) { setEnvironment(env, fixedEnvironment_t(LLSettingsSky::ptr_t(), fixed), env_version); }
void setEnvironment(EnvSelection_t env, const LLSettingsSky::ptr_t & fixeds, const LLSettingsWater::ptr_t & fixedw, S32 env_version = NO_VERSION) { setEnvironment(env, fixedEnvironment_t(fixeds, fixedw), env_version); }
void setEnvironment(EnvSelection_t env, const LLUUID &assetId, LLSettingsDay::Seconds daylength, LLSettingsDay::Seconds dayoffset, S32 env_version = NO_VERSION);
+ // FIRE-29926 - Allow configurable transition times
+ void setEnvironmentWithTransition(EnvSelection_t env, const LLUUID &assetId, LLSettingsDay::Seconds daylength, LLSettingsDay::Seconds dayoffset, LLSettingsBase::Seconds transition, S32 env_version = NO_VERSION);
+ void setManualEnvironment(EnvSelection_t env, const LLUUID &assetId, S32 env_version = NO_VERSION);
+ //
void setEnvironment(EnvSelection_t env, const LLUUID &assetId, S32 env_version = NO_VERSION);
void setSharedEnvironment();
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 829e707674..08c808ebe3 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -1768,19 +1768,35 @@ void LLFavoritesOrderStorage::load()
<< LL_ENDL;
in_file.close();
// FIRE-10122 - User@grid stored_favorites.xml
- //user_llsd = fav_llsd[gAgentUsername];
- user_llsd = fav_llsd[gAgentUsername + " @ " + LLGridManager::getInstance()->getGridLabel()];
+ //if (fav_llsd.isMap() && fav_llsd.has(gAgentUsername))
+ //{
+ // user_llsd = fav_llsd[gAgentUsername];
+ if (fav_llsd.isMap() && fav_llsd.has(gAgentUsername + " @ " + LLGridManager::getInstance()->getGridLabel()))
+ {
+ user_llsd = fav_llsd[gAgentUsername + " @ " + LLGridManager::getInstance()->getGridLabel()];
//
- S32 index = 0;
- for (LLSD::array_iterator iter = user_llsd.beginArray();
+ S32 index = 0;
+ bool needs_validation = gSavedPerAccountSettings.getBOOL("ShowFavoritesOnLogin");
+ for (LLSD::array_iterator iter = user_llsd.beginArray();
iter != user_llsd.endArray(); ++iter)
- {
- mSortIndexes.insert(std::make_pair(iter->get("id").asUUID(), index));
- index++;
+ {
+ // Validation
+ LLUUID fv_id = iter->get("id").asUUID();
+ if (needs_validation
+ && (fv_id.isNull()
+ || iter->get("asset_id").asUUID().isNull()
+ || iter->get("name").asString().empty()
+ || iter->get("slurl").asString().empty()))
+ {
+ mRecreateFavoriteStorage = true;
+ }
+
+ mSortIndexes.insert(std::make_pair(fv_id, index));
+ index++;
+ }
}
}
-
else
{
LL_WARNS("FavoritesBar") << "unable to open favorites from '" << filename << "'" << LL_ENDL;
@@ -2035,6 +2051,8 @@ void LLFavoritesOrderStorage::rearrangeFavoriteLandmarks(const LLUUID& source_it
BOOL LLFavoritesOrderStorage::saveFavoritesRecord(bool pref_changed)
{
+ pref_changed |= mRecreateFavoriteStorage;
+ mRecreateFavoriteStorage = false;
LLUUID favorite_folder= gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE);
if (favorite_folder.isNull())
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 664413fc09..907eab9e9f 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -255,6 +255,7 @@ private:
slurls_map_t mSLURLs;
std::set mMissingSLURLs;
bool mIsDirty;
+ bool mRecreateFavoriteStorage;
struct IsNotInFavorites
{
@@ -285,7 +286,9 @@ private:
inline
LLFavoritesOrderStorage::LLFavoritesOrderStorage() :
- mIsDirty(false), mUpdateRequired(false)
+ mIsDirty(false),
+ mUpdateRequired(false),
+ mRecreateFavoriteStorage(false)
{ load(); }
#endif // LL_LLFAVORITESBARCTRL_H
diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp
index 8fe5f3f964..2edbf7c0cd 100644
--- a/indra/newview/llfloaterauction.cpp
+++ b/indra/newview/llfloaterauction.cpp
@@ -185,8 +185,11 @@ void LLFloaterAuction::onClickSnapshot(void* data)
BOOL success = gViewerWindow->rawSnapshot(raw,
gViewerWindow->getWindowWidthScaled(),
gViewerWindow->getWindowHeightScaled(),
- TRUE, FALSE,
- FALSE, FALSE);
+ TRUE,
+ FALSE,
+ FALSE, //UI
+ FALSE, //HUD
+ FALSE);
gForceRenderLandFence = FALSE;
if (success)
diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h
index 31384ef247..c5becd46fc 100644
--- a/indra/newview/llfloatercolorpicker.h
+++ b/indra/newview/llfloatercolorpicker.h
@@ -202,7 +202,6 @@ class LLFloaterColorPicker
F32 mContextConeOutAlpha;
F32 mContextConeFadeTime;
-
// Add float LSL color entry widgets
protected:
static void onClickCopyLSL ( void* data );
diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp
index 99ce2d342b..0cd109cfb5 100644
--- a/indra/newview/llfloaterjoystick.cpp
+++ b/indra/newview/llfloaterjoystick.cpp
@@ -61,6 +61,11 @@ static LLTrace::SampleStatHandle<>* sJoystickAxes[6] =
LLFloaterJoystick::LLFloaterJoystick(const LLSD& data)
: LLFloater(data)
{
+ if (!LLViewerJoystick::getInstance()->isJoystickInitialized())
+ {
+ LLViewerJoystick::getInstance()->init(false);
+ }
+
initFromSettings();
}
diff --git a/indra/newview/llfloaterloadprefpreset.cpp b/indra/newview/llfloaterloadprefpreset.cpp
index fa17a9d40e..f89daf3e04 100644
--- a/indra/newview/llfloaterloadprefpreset.cpp
+++ b/indra/newview/llfloaterloadprefpreset.cpp
@@ -66,6 +66,11 @@ void LLFloaterLoadPrefPreset::onOpen(const LLSD& key)
EDefaultOptions option = DEFAULT_TOP;
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
+ std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive");
+ if (!preset_graphic_active.empty())
+ {
+ combo->setSimple(preset_graphic_active);
+ }
}
void LLFloaterLoadPrefPreset::onPresetsListChange()
@@ -74,6 +79,11 @@ void LLFloaterLoadPrefPreset::onPresetsListChange()
EDefaultOptions option = DEFAULT_TOP;
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
+ std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive");
+ if (!preset_graphic_active.empty())
+ {
+ combo->setSimple(preset_graphic_active);
+ }
}
void LLFloaterLoadPrefPreset::onBtnCancel()
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index bbf4d31f17..8494d3a4ad 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -145,6 +145,7 @@
#include "llviewermenufile.h" // FIRE-23606 Reveal path to external script editor in prefernces
#include "lldiriterator.h" // for populating the fonts combo
#include "llline.h"
+#include "lllocationhistory.h"
#include "llpanelblockedlist.h"
#include "llpanelmaininventory.h"
#include "llscrolllistctrl.h"
@@ -393,6 +394,11 @@ bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response
LLNavigationBar::instance().clearHistory();
//
+ // FIRE-29761: Clear Location History does not clear Typed Locations history
+ LLLocationHistory::getInstance()->removeItems();
+ LLLocationHistory::getInstance()->save();
+ //
+
LLTeleportHistoryStorage::getInstance()->purgeItems();
LLTeleportHistoryStorage::getInstance()->save();
}
@@ -589,8 +595,8 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
mCommitCallbackRegistrar.add("Pref.ClickActionChange", boost::bind(&LLFloaterPreference::onClickActionChange, this));
- gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
- gSavedSettings.getControl("NameTagShowFriends")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
+ gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
+ gSavedSettings.getControl("NameTagShowFriends")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2));
gSavedSettings.getControl("UseDisplayNames")->getCommitSignal()->connect(boost::bind(&handleDisplayNamesOptionChanged, _2));
gSavedSettings.getControl("AppearanceCameraMovement")->getCommitSignal()->connect(boost::bind(&handleAppearanceCameraMovementChanged, _2));
@@ -2084,12 +2090,12 @@ void LLFloaterPreference::buildPopupLists()
if (it->second.asBoolean())
{
row["columns"][1]["value"] = formp->getElement(it->first)["ignore"].asString();
+ row["columns"][1]["font"] = "SANSSERIF_SMALL";
+ row["columns"][1]["width"] = 360;
break;
}
}
}
- row["columns"][1]["font"] = "SANSSERIF_SMALL";
- row["columns"][1]["width"] = 360;
}
#endif
item = disabled_popups.addElement(row);
@@ -3109,6 +3115,9 @@ void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im
// FIRE-22564: Route llOwnerSay to scipt debug window
getChildView("FSllOwnerSayToScriptDebugWindow_checkbox")->setEnabled(TRUE);
+
+ // Clear Cache button actually clears per-account cache items
+ getChildView("clear_webcache")->setEnabled(TRUE);
}
@@ -4359,7 +4368,7 @@ void LLPanelPreferenceGraphics::setPresetText()
//
// Graphic preset controls independent from XUI
- //if (hasDirtyChilds() && !preset_graphic_active.empty())
+ //if (hasDirtyChilds() && !preset_graphic_active.empty())
//{
// gSavedSettings.setString("PresetGraphicActive", "");
// preset_graphic_active.clear();
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index c5f95b7260..3bc66e55ce 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -948,7 +948,7 @@ void LLFloaterReporter::takeNewSnapshot(bool refresh)
// Take a screenshot, but don't draw this floater.
setVisible(FALSE);
- if( !gViewerWindow->rawSnapshot(mImageRaw, IMAGE_WIDTH, IMAGE_HEIGHT, TRUE, FALSE, TRUE, FALSE))
+ if (!gViewerWindow->rawSnapshot(mImageRaw, IMAGE_WIDTH, IMAGE_HEIGHT, TRUE, FALSE, gSavedSettings.getBOOL("RenderHUDInSnapshot"), TRUE, FALSE))
{
LL_WARNS() << "Unable to take screenshot" << LL_ENDL;
setVisible(TRUE);
diff --git a/indra/newview/llfloatersaveprefpreset.cpp b/indra/newview/llfloatersaveprefpreset.cpp
index cf8aae0831..ef7f2ddf5a 100644
--- a/indra/newview/llfloatersaveprefpreset.cpp
+++ b/indra/newview/llfloatersaveprefpreset.cpp
@@ -96,7 +96,10 @@ void LLFloaterSavePrefPreset::onBtnSave()
}
//
- if ((name == LLTrans::getString(PRESETS_DEFAULT)) || (name == PRESETS_DEFAULT))
+ std::string upper_name(name);
+ LLStringUtil::toUpper(upper_name);
+
+ if ((name == LLTrans::getString(PRESETS_DEFAULT)) || (upper_name == PRESETS_DEFAULT_UPPER))
{
LLNotificationsUtil::add("DefaultPresetNotSaved");
}
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index aa86ff108f..776f31b929 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -305,21 +305,34 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLFolderViewModelItemInvent
// Pass if this item's type is of the correct filter type
if (filterTypes & FILTERTYPE_OBJECT)
{
-
- // If it has no type, pass it, unless it's a link.
- if (object_type == LLInventoryType::IT_NONE)
- {
- if (object && object->getIsLinkType())
- {
- return FALSE;
- }
- }
- else if ((1LL << object_type & mFilterOps.mFilterObjectTypes) == U64(0))
- {
- return FALSE;
- }
+ switch (object_type)
+ {
+ case LLInventoryType::IT_NONE:
+ // If it has no type, pass it, unless it's a link.
+ if (object && object->getIsLinkType())
+ {
+ return FALSE;
+ }
+ break;
+ case LLInventoryType::IT_UNKNOWN:
+ {
+ // Unknows are only shown when we show every type.
+ // Unknows are 255 and won't fit in 64 bits.
+ if (mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL)
+ {
+ return FALSE;
+ }
+ break;
+ }
+ default:
+ if ((1LL << object_type & mFilterOps.mFilterObjectTypes) == U64(0))
+ {
+ return FALSE;
+ }
+ break;
+ }
}
-
+
//
//if(filterTypes & FILTERTYPE_WORN)
//{
@@ -475,18 +488,32 @@ bool LLInventoryFilter::checkAgainstFilterType(const LLInventoryItem* item) cons
// Pass if this item's type is of the correct filter type
if (filterTypes & FILTERTYPE_OBJECT)
{
- // If it has no type, pass it, unless it's a link.
- if (object_type == LLInventoryType::IT_NONE)
- {
- if (item && item->getIsLinkType())
- {
- return false;
- }
- }
- else if ((1LL << object_type & mFilterOps.mFilterObjectTypes) == U64(0))
- {
- return false;
- }
+ switch (object_type)
+ {
+ case LLInventoryType::IT_NONE:
+ // If it has no type, pass it, unless it's a link.
+ if (item && item->getIsLinkType())
+ {
+ return FALSE;
+ }
+ break;
+ case LLInventoryType::IT_UNKNOWN:
+ {
+ // Unknows are only shown when we show every type.
+ // Unknows are 255 and won't fit in 64 bits.
+ if (mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL)
+ {
+ return FALSE;
+ }
+ break;
+ }
+ default:
+ if ((1LL << object_type & mFilterOps.mFilterObjectTypes) == U64(0))
+ {
+ return FALSE;
+ }
+ break;
+ }
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index 40b68be79a..c643c0fcdc 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -347,7 +347,7 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event)
{
data["certificate"] = response["certificate"];
}
-
+
if (gViewerWindow)
gViewerWindow->setShowProgress(FALSE, FALSE);
LLFloaterReg::showInstance("message_critical", data);
@@ -363,31 +363,13 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event)
// login.cgi is insisting on a required update. We were called with an
// event that bundles both the login.cgi 'response' and the
// synchronization event from the 'updater'.
- std::string login_version = response["message_args"]["VERSION"];
- std::string vvm_version = updater["VERSION"];
- std::string relnotes = updater["URL"];
- LL_WARNS("LLLogin") << "Login failed because an update to version " << login_version << " is required." << LL_ENDL;
- // vvm_version might be empty because we might not have gotten
- // SLVersionChecker's LoginSync handshake. But if it IS populated, it
- // should (!) be the same as the version we got from login.cgi.
- if ((! vvm_version.empty()) && vvm_version != login_version)
- {
- LL_WARNS("LLLogin") << "VVM update version " << vvm_version
- << " differs from login version " << login_version
- << "; presenting VVM version to match release notes URL"
- << LL_ENDL;
- login_version = vvm_version;
- }
- if (relnotes.empty())
- {
- // I thought this would be available in strings.xml or some such
- relnotes = "https://secondlife.com/support/downloads/";
- }
+ std::string required_version = response["message_args"]["VERSION"];
+ LL_WARNS("LLLogin") << "Login failed because an update to version " << required_version << " is required." << LL_ENDL;
if (gViewerWindow)
gViewerWindow->setShowProgress(FALSE, FALSE);
- LLSD args(LLSDMap("VERSION", login_version)("URL", relnotes));
+ LLSD args(LLSDMap("VERSION", required_version));
if (updater.isUndefined())
{
// If the updater failed to shake hands, better advise the user to
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index bbf10844e0..cbd909e349 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -902,7 +902,7 @@ LLMeshRepoThread::~LLMeshRepoThread()
void LLMeshRepoThread::run()
{
LLCDResult res = LLConvexDecomposition::initThread();
- if (res != LLCD_OK)
+ if (res != LLCD_OK && LLConvexDecomposition::isFunctional())
{
LL_WARNS(LOG_MESH) << "Convex decomposition unable to be loaded. Expect severe problems." << LL_ENDL;
}
@@ -1168,7 +1168,7 @@ void LLMeshRepoThread::run()
}
res = LLConvexDecomposition::quitThread();
- if (res != LLCD_OK)
+ if (res != LLCD_OK && LLConvexDecomposition::isFunctional())
{
LL_WARNS(LOG_MESH) << "Convex decomposition unable to be quit." << LL_ENDL;
}
@@ -3575,6 +3575,11 @@ void LLMeshRepository::init()
LLConvexDecomposition::getInstance()->initSystem();
+ if (!LLConvexDecomposition::isFunctional())
+ {
+ LL_INFOS(LOG_MESH) << "Using STUB for LLConvexDecomposition" << LL_ENDL;
+ }
+
mDecompThread = new LLPhysicsDecomp();
mDecompThread->start();
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index f972dcf251..d00b239a7b 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -1050,6 +1050,7 @@ void LLOutfitGallery::updateSnapshotFolderObserver()
void LLOutfitGallery::refreshOutfit(const LLUUID& category_id)
{
LLViewerInventoryCategory* category = gInventory.getCategory(category_id);
+ if (category)
{
bool photo_loaded = false;
LLInventoryModel::cat_array_t sub_cat_array;
@@ -1367,6 +1368,7 @@ void LLOutfitGallery::onSelectPhoto(LLUUID selected_outfit_id)
texture_floaterp->setOnFloaterCommitCallback(boost::bind(&LLOutfitGallery::onTexturePickerCommit, this, _1, _2));
texture_floaterp->setOnUpdateImageStatsCallback(boost::bind(&LLOutfitGallery::onTexturePickerUpdateImageStats, this, _1));
texture_floaterp->setLocalTextureEnabled(FALSE);
+ texture_floaterp->setCanApply(false, true);
}
floaterp->openFloater();
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 6fb04d9823..d00f4b4d1a 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -1192,6 +1192,7 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
bool enabled = (editable && isIdenticalPlanarTexgen());
childSetValue("checkbox planar align", align_planar && enabled);
+ childSetVisible("checkbox planar align", enabled);
childSetEnabled("checkbox planar align", enabled);
childSetEnabled("button align textures", enabled && LLSelectMgr::getInstance()->getSelection()->getObjectCount() > 1);
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 3ac1fab1e0..e84adbdd65 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -43,7 +43,6 @@
#include "llcommandhandler.h" // for secondlife:///app/login/
#include "llcombobox.h"
#include "llviewercontrol.h"
-#include "llfloaterpreference.h"
#include "llfocusmgr.h"
#include "lllineeditor.h"
#include "llnotificationsutil.h"
@@ -458,6 +457,10 @@ void LLPanelLogin::addFavoritesToStartLocation()
}
break;
}
+ if (combo->getValue().asString().empty())
+ {
+ combo->selectFirstItem();
+ }
}
LLPanelLogin::~LLPanelLogin()
@@ -1332,13 +1335,13 @@ void LLPanelLogin::onSelectServer()
{
std::string location = location_combo->getValue().asString();
LLSLURL slurl(location); // generata a slurl from the location combo contents
- if ( slurl.getType() == LLSLURL::LOCATION
- && slurl.getGrid() != LLGridManager::getInstance()->getGrid()
- )
+ if (location.empty()
+ || (slurl.getType() == LLSLURL::LOCATION
+ && slurl.getGrid() != LLGridManager::getInstance()->getGrid())
+ )
{
// the grid specified by the location is not this one, so clear the combo
location_combo->setCurrentByIndex(0); // last location on the new grid
- location_combo->setTextEntry(LLStringUtil::null);
}
}
break;
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 07ea4b0f97..fe4fcacd37 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -55,6 +55,7 @@ LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
mMyOutfitsPanel(NULL),
mCurrentOutfitPanel(NULL),
mActivePanel(NULL),
+ mAppearanceTabs(NULL),
mInitialized(false)
{
gAgentWearables.addLoadedCallback(boost::bind(&LLPanelOutfitsInventory::onWearablesLoaded, this));
@@ -352,6 +353,7 @@ void LLPanelOutfitsInventory::initTabPanels()
void LLPanelOutfitsInventory::onTabChange()
{
+ if (!mAppearanceTabs) return;
mActivePanel = dynamic_cast(mAppearanceTabs->getCurrentPanel());
if (!mActivePanel) return;
diff --git a/indra/newview/llpanelpresetspulldown.cpp b/indra/newview/llpanelpresetspulldown.cpp
index 7170dc4e0a..7f1b2aba0f 100644
--- a/indra/newview/llpanelpresetspulldown.cpp
+++ b/indra/newview/llpanelpresetspulldown.cpp
@@ -33,8 +33,8 @@
#include "llbutton.h"
#include "lltabcontainer.h"
+#include "llfloater.h"
#include "llfloaterreg.h"
-#include "llfloaterpreference.h"
#include "llpresetsmanager.h"
#include "llsliderctrl.h"
#include "llscrolllistctrl.h"
diff --git a/indra/newview/llpresetsmanager.h b/indra/newview/llpresetsmanager.h
index eee4156c94..244e76e339 100644
--- a/indra/newview/llpresetsmanager.h
+++ b/indra/newview/llpresetsmanager.h
@@ -33,6 +33,7 @@
#include
static const std::string PRESETS_DEFAULT = "Default";
+static const std::string PRESETS_DEFAULT_UPPER = "DEFAULT";
static const std::string PRESETS_DIR = "presets";
static const std::string PRESETS_GRAPHIC = "graphic";
static const std::string PRESETS_CAMERA = "camera";
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index 9feaab50e2..45c6b20b61 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -63,6 +63,7 @@
#include "llfloatersearchreplace.h"
// [/SL:KB]
#include "llautoreplace.h"
+#include "llscrollcontainer.h"
///----------------------------------------------------------------------------
/// Class LLPreviewNotecard
@@ -72,6 +73,9 @@
LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id,
: LLPreview( key ),
mLiveFile(NULL)
+ // FIRE-24306: Retain cursor position when saving notecards
+ ,mCursorPos(0)
+ ,mScrollPos(0)
{
const LLInventoryItem *item = getItem();
if (item)
@@ -407,6 +411,10 @@ void LLPreviewNotecard::onLoadComplete(LLVFS *vfs,
preview->setEnabled(modifiable);
preview->syncExternal();
preview->mAssetStatus = PREVIEW_ASSET_LOADED;
+
+ // FIRE-24306: Retain cursor position when saving notecards
+ preview->mEditor->setCursorPos(preview->mCursorPos);
+ preview->mEditor->getScrollContainer()->getScrollbar(LLScrollContainer::VERTICAL)->setDocPos(preview->mScrollPos);
}
else
{
@@ -545,6 +553,10 @@ bool LLPreviewNotecard::saveIfNeeded(LLInventoryItem* copyitem, bool sync)
return false;
}
+ // FIRE-24306: Retain cursor position when saving notecards
+ mCursorPos = editor->getCursorPos();
+ mScrollPos = editor->getScrollContainer()->getScrollbar(LLScrollContainer::VERTICAL)->getDocPos();
+
editor->makePristine();
const LLInventoryItem* item = getItem();
// save it out to database
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
index 6685bff41d..0bc4db2e49 100644
--- a/indra/newview/llpreviewnotecard.h
+++ b/indra/newview/llpreviewnotecard.h
@@ -133,6 +133,10 @@ protected:
LLUUID mObjectID;
LLLiveLSLFile* mLiveFile;
+
+ // FIRE-24306: Retain cursor position when saving notecards
+ S32 mCursorPos;
+ S32 mScrollPos;
};
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index 3076d0d48d..dce2981d11 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -634,6 +634,7 @@ void LLProgressView::onCancelButtonClicked(void*)
// cancel is pressed while teleporting inside region (EXT-4911)
if (LLStartUp::getStartupState() < STATE_STARTED)
{
+ LL_INFOS() << "User requesting quit during login" << LL_ENDL;
LLAppViewer::instance()->requestQuit();
}
else
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index 5a4427a7b7..1e5b893cbc 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -329,7 +329,7 @@ void LLSettingsVOBase::onAssetDownloadComplete(LLVFS *vfs, const LLUUID &asset_i
}
else
{
- LL_WARNS("SETTINGS") << "Error retrieving asset " << asset_id << ". Status code=" << status << "(" << LLAssetStorage::getErrorString(status) << ") ext_status=" << ext_status << LL_ENDL;
+ LL_WARNS("SETTINGS") << "Error retrieving asset " << asset_id << ". Status code=" << status << "(" << LLAssetStorage::getErrorString(status) << ") ext_status=" << (U32)ext_status << LL_ENDL;
}
if (callback)
callback(asset_id, settings, status, ext_status);
diff --git a/indra/newview/llsnapshotlivepreview.cpp b/indra/newview/llsnapshotlivepreview.cpp
index d7da7d94b8..eb46895b10 100644
--- a/indra/newview/llsnapshotlivepreview.cpp
+++ b/indra/newview/llsnapshotlivepreview.cpp
@@ -671,6 +671,7 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
width, height,
//
mAllowRenderUI && gSavedSettings.getBOOL("RenderUIInSnapshot"),
+ gSavedSettings.getBOOL("RenderHUDInSnapshot"),
FALSE,
mSnapshotBufferType) )
{
@@ -829,6 +830,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
previewp->mKeepAspectRatio,//gSavedSettings.getBOOL("KeepAspectForSnapshot"),
previewp->getSnapshotType() == LLSnapshotModel::SNAPSHOT_TEXTURE,
previewp->mAllowRenderUI && gSavedSettings.getBOOL("RenderUIInSnapshot"),
+ gSavedSettings.getBOOL("RenderHUDInSnapshot"),
FALSE,
previewp->mSnapshotBufferType,
previewp->getMaxImageSize()))
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index bed5f233c5..8506db9d02 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -108,7 +108,6 @@
//#include "llfirstuse.h"
#include "llfloaterhud.h"
#include "llfloaterland.h"
-#include "llfloaterpreference.h"
#include "llfloatertopobjects.h"
#include "llfloaterworldmap.h"
#include "llgesturemgr.h"
@@ -1252,6 +1251,7 @@ bool idle_startup()
show_debug_menus();
// Hide the splash screen
+ LL_DEBUGS("AppInit") << "Hide the splash screen and show window" << LL_ENDL;
LLSplashScreen::hide();
// Push our window frontmost
gViewerWindow->getWindow()->show();
@@ -1259,9 +1259,12 @@ bool idle_startup()
// DEV-16927. The following code removes errant keystrokes that happen while the window is being
// first made visible.
#ifdef _WIN32
+ LL_DEBUGS("AppInit") << "Processing PeekMessage" << LL_ENDL;
MSG msg;
while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) )
- { }
+ {
+ }
+ LL_DEBUGS("AppInit") << "PeekMessage processed" << LL_ENDL;
#endif
display_startup();
timeout.reset();
@@ -1712,6 +1715,8 @@ bool idle_startup()
// Its either downloading or declined.
// If optional was skipped this case shouldn't
// be reached.
+
+ LL_INFOS() << "Forcing a quit due to update." << LL_ENDL;
LLLoginInstance::getInstance()->disconnect();
LLAppViewer::instance()->forceQuit();
}
@@ -3851,6 +3856,9 @@ void LLStartUp::setStartSLURL(const LLSLURL& slurl)
LLGridManager::getInstance()->setGridChoice(slurl.getGrid());
break;
}
+
+ // FIRE-29994: Start location doesn't get updated when selection a destination from the login splash screen
+ FSPanelLogin::onUpdateStartSLURL(sStartSLURL);
}
// static
diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp
index 43ab1a7876..a0513b8c44 100644
--- a/indra/newview/lltoolgrab.cpp
+++ b/indra/newview/lltoolgrab.cpp
@@ -145,8 +145,9 @@ BOOL LLToolGrabBase::handleMouseDown(S32 x, S32 y, MASK mask)
// call the base class to propogate info to sim
LLTool::handleMouseDown(x, y, mask);
-
- if (!gAgent.leftButtonGrabbed())
+
+ // leftButtonGrabbed() checks if controls are reserved by scripts, but does not take masks into account
+ if (!gAgent.leftButtonGrabbed() || ((mask & DEFAULT_GRAB_MASK) != 0 && !gAgentCamera.cameraMouselook()))
{
// can grab transparent objects (how touch event propagates, scripters rely on this)
gViewerWindow->pickAsync(x, y, mask, pickCallback, /*BOOL pick_transparent*/ TRUE);
diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h
index 02ed5c26d7..ce0de0f946 100644
--- a/indra/newview/lltoolgrab.h
+++ b/indra/newview/lltoolgrab.h
@@ -44,6 +44,7 @@ class LLPickInfo;
void send_ObjectGrab_message(LLViewerObject* object, const LLPickInfo & pick, const LLVector3 &grab_offset);
void send_ObjectDeGrab_message(LLViewerObject* object, const LLPickInfo & pick);
+const MASK DEFAULT_GRAB_MASK = MASK_CONTROL;
/**
* LLToolGrabBase contains most of the semantics of LLToolGrab. It's just that
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 6411c01a46..3cec52a9c2 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1773,7 +1773,7 @@ LLTool* LLToolPie::getOverrideTool(MASK mask)
if (enableGrab)
//
{
- if (mask == MASK_CONTROL)
+ if (mask == DEFAULT_GRAB_MASK)
{
return LLToolGrab::getInstance();
}
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index e0dee2781a..047d7cc3f4 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -116,6 +116,8 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
mCountSucceeded(0),
mTotalBytesFetched(0)
{
+ // Explicitly create the VAAssetStorage pool
+ LLCoprocedureManager::instance().createPool(VIEWER_ASSET_STORAGE_CORO_POOL);
}
@@ -129,6 +131,8 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
mCountSucceeded(0),
mTotalBytesFetched(0)
{
+ // Explicitly create the VAAssetStorage pool
+ LLCoprocedureManager::instance().createPool(VIEWER_ASSET_STORAGE_CORO_POOL);
}
LLViewerAssetStorage::~LLViewerAssetStorage()
@@ -181,7 +185,7 @@ void LLViewerAssetStorage::storeAssetData(
delete req;
if (callback)
{
- callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_FAILED, LL_EXSTAT_VFS_CORRUPT);
+ callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_FAILED, LLExtStat::VFS_CORRUPT);
}
return;
}
@@ -222,7 +226,7 @@ void LLViewerAssetStorage::storeAssetData(
if (callback)
{
- callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_NONEXISTENT_FILE, LL_EXSTAT_VFS_CORRUPT);
+ callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_NONEXISTENT_FILE, LLExtStat::VFS_CORRUPT);
}
return;
}
@@ -249,7 +253,7 @@ void LLViewerAssetStorage::storeAssetData(
reportMetric( asset_id, asset_type, LLStringUtil::null, LLUUID::null, 0, MR_ZERO_SIZE, __FILE__, __LINE__, "The file didn't exist or was zero length (VFS - can't tell which)" );
if (callback)
{
- callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_NONEXISTENT_FILE, LL_EXSTAT_NONEXISTENT_FILE);
+ callback(asset_id, user_data, LL_ERR_ASSET_REQUEST_NONEXISTENT_FILE, LLExtStat::NONEXISTENT_FILE);
}
}
}
@@ -260,7 +264,7 @@ void LLViewerAssetStorage::storeAssetData(
reportMetric( asset_id, asset_type, LLStringUtil::null, LLUUID::null, 0, MR_NO_UPSTREAM, __FILE__, __LINE__, "No upstream provider" );
if (callback)
{
- callback(asset_id, user_data, LL_ERR_CIRCUIT_GONE, LL_EXSTAT_NO_UPSTREAM);
+ callback(asset_id, user_data, LL_ERR_CIRCUIT_GONE, LLExtStat::NO_UPSTREAM);
}
}
}
@@ -347,7 +351,7 @@ void LLViewerAssetStorage::storeAssetData(
}
if (callback)
{
- callback(asset_id, user_data, LL_ERR_CANNOT_OPEN_FILE, LL_EXSTAT_BLOCKED_FILE);
+ callback(asset_id, user_data, LL_ERR_CANNOT_OPEN_FILE, LLExtStat::BLOCKED_FILE);
}
}
}
@@ -460,13 +464,18 @@ void LLViewerAssetStorage::assetRequestCoro(
mCountStarted++;
S32 result_code = LL_ERR_NOERR;
- LLExtStat ext_status = LL_EXSTAT_NONE;
+ LLExtStat ext_status = LLExtStat::NONE;
+ if (!gAssetStorage)
+ {
+ LL_WARNS_ONCE("ViewerAsset") << "Asset request fails: asset storage no longer exists" << LL_ENDL;
+ return;
+ }
if (!gAgent.getRegion())
{
LL_WARNS_ONCE("ViewerAsset") << "Asset request fails: no region set" << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_NONE;
+ ext_status = LLExtStat::NONE;
removeAndCallbackPendingDownloads(uuid, atype, uuid, atype, result_code, ext_status);
return;
}
@@ -520,7 +529,7 @@ void LLViewerAssetStorage::assetRequestCoro(
// [UDP Assets]
LL_WARNS_ONCE("ViewerAsset") << "asset request fails: caps received but no viewer asset cap found" << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_NONE;
+ ext_status = LLExtStat::NONE;
removeAndCallbackPendingDownloads(uuid, atype, uuid, atype, result_code, ext_status);
// [UDP Assets]
}
@@ -547,7 +556,7 @@ void LLViewerAssetStorage::assetRequestCoro(
LLSD result = httpAdapter->getRawAndSuspend(httpRequest, url, httpOpts);
- if (LLApp::isQuitting())
+ if (LLApp::isQuitting() || !gAssetStorage)
{
// Bail out if result arrives after shutdown has been started.
return;
@@ -561,7 +570,7 @@ void LLViewerAssetStorage::assetRequestCoro(
{
LL_DEBUGS("ViewerAsset") << "request failed, status " << status.toTerseString() << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_NONE;
+ ext_status = LLExtStat::NONE;
}
else
{
@@ -587,13 +596,13 @@ void LLViewerAssetStorage::assetRequestCoro(
// TODO asset-http: handle error
LL_WARNS("ViewerAsset") << "Failure in vf.write()" << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_VFS_CORRUPT;
+ ext_status = LLExtStat::VFS_CORRUPT;
}
else if (!vf.rename(uuid, atype))
{
LL_WARNS("ViewerAsset") << "rename failed" << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_VFS_CORRUPT;
+ ext_status = LLExtStat::VFS_CORRUPT;
}
else
{
@@ -605,7 +614,7 @@ void LLViewerAssetStorage::assetRequestCoro(
// TODO asset-http: handle invalid size case
LL_WARNS("ViewerAsset") << "bad size" << LL_ENDL;
result_code = LL_ERR_ASSET_REQUEST_FAILED;
- ext_status = LL_EXSTAT_NONE;
+ ext_status = LLExtStat::NONE;
}
}
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 67de856a0a..d25d89b22b 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -162,6 +162,10 @@ void display_startup()
{
LLViewerDynamicTexture::updateAllInstances();
}
+ else
+ {
+ LL_DEBUGS("Window") << "First display_startup frame" << LL_ENDL;
+ }
LLGLState::checkStates();
LLGLState::checkTextureChannels();
@@ -279,6 +283,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
if (gWindowResized)
{ //skip render on frames where window has been resized
+ LL_DEBUGS("Window") << "Resizing window" << LL_ENDL;
LL_RECORD_BLOCK_TIME(FTM_RESIZE_WINDOW);
gGL.flush();
glClear(GL_COLOR_BUFFER_BIT);
diff --git a/indra/newview/llviewerjoystick.cpp b/indra/newview/llviewerjoystick.cpp
index 07cc3090ea..3e1b7663f2 100644
--- a/indra/newview/llviewerjoystick.cpp
+++ b/indra/newview/llviewerjoystick.cpp
@@ -329,10 +329,13 @@ void LLViewerJoystick::init(bool autoenable)
void LLViewerJoystick::terminate()
{
#if LIB_NDOF
-
- ndof_libcleanup();
- LL_INFOS("joystick") << "Terminated connection with NDOF device." << LL_ENDL;
- mDriverState = JDS_UNINITIALIZED;
+ if (mNdofDev != NULL)
+ {
+ ndof_libcleanup(); // frees alocated memory in mNdofDev
+ mDriverState = JDS_UNINITIALIZED;
+ mNdofDev = NULL;
+ LL_INFOS("joystick") << "Terminated connection with NDOF device." << LL_ENDL;
+ }
#endif
}
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 512c5a8279..8bf1ad2441 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -79,7 +79,7 @@ class LLViewerMedia: public LLSingleton
public:
// String to get/set media autoplay in gSavedSettings
- static const char* AUTO_PLAY_MEDIA_SETTING;
+ static const char* AUTO_PLAY_MEDIA_SETTING;
static const char* SHOW_MEDIA_ON_OTHERS_SETTING;
static const char* SHOW_MEDIA_WITHIN_PARCEL_SETTING;
static const char* SHOW_MEDIA_OUTSIDE_PARCEL_SETTING;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index e443eabcd0..4bbb6f8edd 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -10804,28 +10804,40 @@ class LLWorldEnvSettings : public view_listener_t
if (event_name == "sunrise")
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNRISE);
+ // FIRE-29926 - allow manually selected environments to have a user defined transition time.
+ // LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNRISE);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNRISE);
+ //
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
defocusEnvFloaters();
}
else if (event_name == "noon")
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDDAY);
+ // FIRE-29926 - allow manually selected environments to have a user defined transition time.
+ // LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDDAY);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDDAY);
+ //
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
defocusEnvFloaters();
}
else if (event_name == "sunset")
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNSET);
+ // FIRE-29926 - allow manually selected environments to have a user defined transition time.
+ // LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNSET);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_SUNSET);
+ //
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
defocusEnvFloaters();
}
else if (event_name == "midnight")
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDNIGHT);
+ // FIRE-29926 - allow manually selected environments to have a user defined transition time.
+ // LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDNIGHT);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::KNOWN_SKY_MIDNIGHT);
+ //
LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
LLEnvironment::instance().updateEnvironment();
defocusEnvFloaters();
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index f1dca806dc..cbf5c5c4d9 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -718,10 +718,16 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
S32 width = gViewerWindow->getWindowWidthRaw();
S32 height = gViewerWindow->getWindowHeightRaw();
+ bool render_ui = gSavedSettings.getBOOL("RenderUIInSnapshot");
+ bool render_hud = gSavedSettings.getBOOL("RenderHUDInSnapshot");
+
if (gSavedSettings.getBOOL("HighResSnapshot"))
{
width *= 2;
height *= 2;
+ // not compatible wirh UI/HUD
+ render_ui = false;
+ render_hud = false;
}
if (gViewerWindow->rawSnapshot(raw,
@@ -729,7 +735,8 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
height,
TRUE,
FALSE,
- gSavedSettings.getBOOL("RenderUIInSnapshot"),
+ render_ui,
+ render_hud,
FALSE))
{
LLPointer formatted;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 719597316e..f7fc19c282 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2863,10 +2863,29 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
chat.mChatType = (EChatType)type_temp;
// NaCL - Antispam Registry
- if (chat.mChatType != CHAT_TYPE_START && chat.mChatType != CHAT_TYPE_STOP)
+ static LLCachedControl useAntiSpam(gSavedSettings, "UseAntiSpam");
+ static LLCachedControl useAntiSpamMine(gSavedSettings, "FSUseAntiSpamMine");
+ bool deferred_spam_check = false;
+ if (useAntiSpam && chat.mChatType != CHAT_TYPE_START && chat.mChatType != CHAT_TYPE_STOP)
{
+ if (chat.mSourceType == CHAT_SOURCE_OBJECT)
+ {
+ LLViewerObject* source = gObjectList.findObject(from_id);
+ if (source)
+ {
+ if (source->permYouOwner() && useAntiSpamMine)
+ {
+ // Only check if not a debug message
+ deferred_spam_check = chat.mChatType != CHAT_TYPE_DEBUG_MSG;
+ }
+ else if (!source->permYouOwner() && chat.mChatType != CHAT_TYPE_DEBUG_MSG && NACLAntiSpamRegistry::instance().checkQueue(ANTISPAM_QUEUE_CHAT, from_id, ANTISPAM_SOURCE_OBJECT))
+ {
+ return;
+ }
+ }
+ }
// owner_id = from_id for agents
- if (NACLAntiSpamRegistry::instance().checkQueue(ANTISPAM_QUEUE_CHAT, owner_id, ANTISPAM_SOURCE_AGENT))
+ else if (NACLAntiSpamRegistry::instance().checkQueue(ANTISPAM_QUEUE_CHAT, owner_id, ANTISPAM_SOURCE_AGENT))
{
return;
}
@@ -2994,8 +3013,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
// NaCl - Newline flood protection
static LLCachedControl useAntiSpam(gSavedSettings, "UseAntiSpam");
// FIRE-23138: Add option to antispam user's own objects
- bool deferred_spam_check = false;
- static LLCachedControl useAntiSpamMine(gSavedSettings, "FSUseAntiSpamMine");
+ bool deferred_newline_spam_check = false;
if (useAntiSpam)
{
bool doCheck = true;
@@ -3021,7 +3039,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
if (doCheck && useAntiSpamMine)
{
// If it's the user's object, defer the check so RLV commands still work
- deferred_spam_check = true;
+ deferred_newline_spam_check = true;
}
// FIRE-23138
}
@@ -3292,7 +3310,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
break;
}
// FIRE-23138: Enable spam checking for user's own objects
- if (deferred_spam_check && NACLAntiSpamRegistry::instance().checkNewlineFlood(ANTISPAM_QUEUE_CHAT, from_id, mesg))
+ if (deferred_spam_check && NACLAntiSpamRegistry::instance().checkQueue(ANTISPAM_QUEUE_CHAT, from_id, ANTISPAM_SOURCE_OBJECT))
+ {
+ return;
+ }
+ if (deferred_newline_spam_check && NACLAntiSpamRegistry::instance().checkNewlineFlood(ANTISPAM_QUEUE_CHAT, from_id, mesg))
{
return;
}
@@ -6348,7 +6370,14 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
snap_filename += LLStartUp::getScreenHomeFilename();
- gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
+ gViewerWindow->saveSnapshot(snap_filename,
+ gViewerWindow->getWindowWidthRaw(),
+ gViewerWindow->getWindowHeightRaw(),
+ FALSE, //UI
+ gSavedSettings.getBOOL("RenderHUDInSnapshot"),
+ FALSE,
+ LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
+ LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
if (notificationID == "RegionRestartMinutes" ||
@@ -6410,7 +6439,7 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
snap_filename += LLStartUp::getScreenHomeFilename();
- if (gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG))
+ if (gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, gSavedSettings.getBOOL("RenderHUDInSnapshot"), FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG))
{
LL_INFOS() << LLStartUp::getScreenHomeFilename() << " saved successfully." << LL_ENDL;
}
@@ -6482,7 +6511,14 @@ static void process_special_alert_messages(const std::string & message)
std::string snap_filename = gDirUtilp->getLindenUserDir();
snap_filename += gDirUtilp->getDirDelimiter();
snap_filename += LLStartUp::getScreenHomeFilename();
- gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw(), FALSE, FALSE, LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
+ gViewerWindow->saveSnapshot(snap_filename,
+ gViewerWindow->getWindowWidthRaw(),
+ gViewerWindow->getWindowHeightRaw(),
+ FALSE,
+ gSavedSettings.getBOOL("RenderHUDInSnapshot"),
+ FALSE,
+ LLSnapshotModel::SNAPSHOT_TYPE_COLOR,
+ LLSnapshotModel::SNAPSHOT_FORMAT_PNG);
}
}
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 3f728928a4..90fbb4805c 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4953,7 +4953,9 @@ LLViewerTexture* LLViewerObject::getBakedTextureForMagicId(const LLUUID& id)
}
LLVOAvatar* avatar = getAvatar();
- if (avatar)
+ if (avatar && !isHUDAttachment()
+ && isMesh()
+ && getVolume() && getVolume()->getParams().getSculptID().notNull()) // checking for the rigged mesh by params instead of using isRiggedMesh() to avoid false negatives when skin info isn't ready
{
LLAvatarAppearanceDefines::EBakedTextureIndex texIndex = LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::assetIdToBakedTextureIndex(id);
LLViewerTexture* bakedTexture = avatar->getBakedTexture(texIndex);
diff --git a/indra/newview/llviewerparcelaskplay.cpp b/indra/newview/llviewerparcelaskplay.cpp
index d4aa783f12..74586dadc3 100644
--- a/indra/newview/llviewerparcelaskplay.cpp
+++ b/indra/newview/llviewerparcelaskplay.cpp
@@ -78,6 +78,8 @@ void LLViewerParcelAskPlay::askToPlay(const LLUUID ®ion_id, const S32 &parcel
default:
{
// create or re-create notification
+ // Note: will create and immediately cancel one notification if region has both media and music
+ // since ask play does not distinguish media from music and media can be used as music
cancelNotification();
if (LLStartUp::getStartupState() > STATE_PRECACHE)
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index 8cf7e28abe..7b9687e1ea 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -81,6 +81,11 @@ mMediaParcelLocalID(0)
LLMessageSystem* msg = gMessageSystem;
msg->setHandlerFunc("ParcelMediaCommandMessage", parcelMediaCommandMessageHandler );
msg->setHandlerFunc("ParcelMediaUpdate", parcelMediaUpdateHandler );
+
+ // LLViewerParcelMediaAutoPlay will regularly check and autoplay media,
+ // might be good idea to just integrate it into LLViewerParcelMedia
+ LLSingleton::getInstance();
+
loadDomainFilterList();
}
@@ -110,11 +115,13 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
S32 parcelid = parcel->getLocalID();
LLUUID regionid = gAgent.getRegion()->getRegionID();
+ bool location_changed = false;
if (parcelid != mMediaParcelLocalID || regionid != mMediaRegionID)
{
LL_DEBUGS("Media") << "New parcel, parcel id = " << parcelid << ", region id = " << regionid << LL_ENDL;
mMediaParcelLocalID = parcelid;
mMediaRegionID = regionid;
+ location_changed = true;
}
std::string mediaUrl = std::string ( parcel->getMediaURL () );
@@ -140,7 +147,7 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
if(mMediaImpl.isNull())
{
- play(parcel);
+ // media will be autoplayed by LLViewerParcelMediaAutoPlay
return;
}
@@ -149,8 +156,9 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
|| ( mMediaImpl->getMediaTextureID() != parcel->getMediaID() )
|| ( mMediaImpl->getMimeType() != parcel->getMediaType() ))
{
- // Only play if the media types are the same.
- if(mMediaImpl->getMimeType() == parcel->getMediaType())
+ // Only play if the media types are the same and parcel stays same.
+ if(mMediaImpl->getMimeType() == parcel->getMediaType()
+ && !location_changed)
{
if (gSavedSettings.getBOOL("MediaEnableFilter"))
{
@@ -174,25 +182,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
stop();
}
}
- /*
- else
- {
- // no audio player, do a first use dialog if there is media here
- if (parcel)
- {
- std::string mediaUrl = std::string ( parcel->getMediaURL () );
- if (!mediaUrl.empty ())
- {
- if (gWarningSettings.getBOOL("QuickTimeInstalled"))
- {
- gWarningSettings.setBOOL("QuickTimeInstalled", FALSE);
-
- LLNotificationsUtil::add("NoQuickTime" );
- };
- }
- }
- }
- */
}
// static
@@ -205,12 +194,6 @@ void LLViewerParcelMedia::play(LLParcel* parcel)
if (!gSavedSettings.getBOOL("AudioStreamingMedia"))
return;
- // This test appears all over the code and really should be facotred out into a single
- // call that returns true/false (with option ask dialog) but that is outside of scope
- // for this work so we'll just directly.
- if (gSavedSettings.getS32("ParcelMediaAutoPlayEnable") == 0 )
- return;
-
std::string media_url = parcel->getMediaURL();
std::string media_current_url = parcel->getMediaCurrentURL();
std::string mime_type = parcel->getMediaType();
diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp
index 4310d93015..bc3828fcea 100644
--- a/indra/newview/llviewerparcelmediaautoplay.cpp
+++ b/indra/newview/llviewerparcelmediaautoplay.cpp
@@ -150,7 +150,7 @@ BOOL LLViewerParcelMediaAutoPlay::tick()
LLViewerParcelAskPlay::getInstance()->askToPlay(this_region->getRegionID(),
this_parcel->getLocalID(),
this_parcel->getMediaURL(),
- onStartMusicResponse);
+ onStartMediaResponse);
break;
}
}
@@ -167,7 +167,7 @@ BOOL LLViewerParcelMediaAutoPlay::tick()
}
//static
-void LLViewerParcelMediaAutoPlay::onStartMusicResponse(const LLUUID ®ion_id, const S32 &parcel_id, const std::string &url, const bool &play)
+void LLViewerParcelMediaAutoPlay::onStartMediaResponse(const LLUUID ®ion_id, const S32 &parcel_id, const std::string &url, const bool &play)
{
if (play)
{
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index cf8e9a97e7..d71fd4c075 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -39,7 +39,8 @@ public:
static void playStarted();
private:
- static void onStartMusicResponse(const LLUUID ®ion_id, const S32 &parcel_id, const std::string &url, const bool &play);
+ // for askToPlay
+ static void onStartMediaResponse(const LLUUID ®ion_id, const S32 &parcel_id, const std::string &url, const bool &play);
private:
S32 mLastParcelID;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 56d5f679d8..644f7a1fa3 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -304,7 +304,8 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
regionp = NULL;
result = httpAdapter->postAndSuspend(httpRequest, url, capabilityNames);
- ++mSeedCapAttempts;
+ // Fix seed cap retry count
+ //++mSeedCapAttempts;
regionp = LLWorld::getInstance()->getRegionFromHandle(regionHandle);
if (!regionp) //region was removed
@@ -317,6 +318,7 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
{
LL_WARNS("AppInit", "Capabilities") << "Received results for a stale capabilities request!" << LL_ENDL;
// setup for retry.
+ ++mSeedCapAttempts; // Fix seed cap retry count
continue;
}
@@ -324,6 +326,7 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
{
LL_WARNS("AppInit", "Capabilities") << "Malformed response" << LL_ENDL;
// setup for retry.
+ ++mSeedCapAttempts; // Fix seed cap retry count
continue;
}
@@ -333,6 +336,7 @@ void LLViewerRegionImpl::requestBaseCapabilitiesCoro(U64 regionHandle)
{
LL_WARNS("AppInit", "Capabilities") << "HttpStatus error " << LL_ENDL;
// setup for retry.
+ ++mSeedCapAttempts; // Fix seed cap retry count
continue;
}
diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp
index 3277acd3ec..4af37c3703 100644
--- a/indra/newview/llviewertexlayer.cpp
+++ b/indra/newview/llviewertexlayer.cpp
@@ -592,12 +592,12 @@ public:
if (result == "complete"
&& mBakdedUploadData != NULL)
{// Invoke
- LLViewerTexLayerSetBuffer::onTextureUploadComplete(newAssetId, (void*) mBakdedUploadData, 0, LL_EXSTAT_NONE);
+ LLViewerTexLayerSetBuffer::onTextureUploadComplete(newAssetId, (void*) mBakdedUploadData, 0, LLExtStat::NONE);
mBakdedUploadData = NULL;// deleted in onTextureUploadComplete()
}
else
{// Invoke the original callback with an error result
- LLViewerTexLayerSetBuffer::onTextureUploadComplete(newAssetId, (void*) mBakdedUploadData, -1, LL_EXSTAT_NONE);
+ LLViewerTexLayerSetBuffer::onTextureUploadComplete(newAssetId, (void*) mBakdedUploadData, -1, LLExtStat::NONE);
mBakdedUploadData = NULL;// deleted in onTextureUploadComplete()
}
}
@@ -605,7 +605,7 @@ public:
{
LL_WARNS() << "Uploading baked texture resulted in http " << status.getType() << ll_pretty_print_sd( aResult ) << LL_ENDL;
// Invoke the original callback with an error result
- LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakdedUploadData, -1, LL_EXSTAT_NONE);
+ LLViewerTexLayerSetBuffer::onTextureUploadComplete(LLUUID(), (void*) mBakdedUploadData, -1, LLExtStat::NONE);
mBakdedUploadData = NULL;// deleted in onTextureUploadComplete()
}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2119ce1963..a613cc2056 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1482,6 +1482,7 @@ BOOL LLViewerWindow::handleCloseRequest(LLWindow *window)
void LLViewerWindow::handleQuit(LLWindow *window)
{
+ LL_INFOS() << "Window forced quit" << LL_ENDL;
LLAppViewer::instance()->forceQuit();
}
@@ -5759,12 +5760,12 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
}
-BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
+BOOL LLViewerWindow::saveSnapshot(const std::string& filepath, S32 image_width, S32 image_height, BOOL show_ui, BOOL show_hud, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, LLSnapshotModel::ESnapshotFormat format)
{
LL_INFOS() << "Saving snapshot to: " << filepath << LL_ENDL;
LLPointer raw = new LLImageRaw;
- BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, do_rebuild);
+ BOOL success = rawSnapshot(raw, image_width, image_height, TRUE, FALSE, show_ui, show_hud, do_rebuild);
if (success)
{
@@ -5826,16 +5827,16 @@ void LLViewerWindow::resetSnapshotLoc() const
gSavedPerAccountSettings.setString("SnapshotBaseDir", std::string());
}
-BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type)
+BOOL LLViewerWindow::thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL show_hud, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type)
{
- return rawSnapshot(raw, preview_width, preview_height, FALSE, FALSE, show_ui, do_rebuild, type);
+ return rawSnapshot(raw, preview_width, preview_height, FALSE, FALSE, show_ui, show_hud, do_rebuild, type);
}
// Saves the image from the screen to a raw image
// Since the required size might be bigger than the available screen, this method rerenders the scene in parts (called subimages) and copy
// the results over to the final raw image.
BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height,
- BOOL keep_window_aspect, BOOL is_texture, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, S32 max_size)
+ BOOL keep_window_aspect, BOOL is_texture, BOOL show_ui, BOOL show_hud, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type, S32 max_size)
{
if (!raw)
{
@@ -5869,7 +5870,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
LLPipeline::toggleRenderDebugFeature(LLPipeline::RENDER_DEBUG_FEATURE_UI);
}
- BOOL hide_hud = !gSavedSettings.getBOOL("RenderHUDInSnapshot") && LLPipeline::sShowHUDAttachments;
+ BOOL hide_hud = !show_hud && LLPipeline::sShowHUDAttachments;
if (hide_hud)
{
LLPipeline::sShowHUDAttachments = FALSE;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 1b9193c098..307e3f474f 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -354,10 +354,10 @@ public:
// snapshot functionality.
// perhaps some of this should move to llfloatershapshot? -MG
- BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
+ BOOL saveSnapshot(const std::string& filename, S32 image_width, S32 image_height, BOOL show_ui = TRUE, BOOL show_hud = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, LLSnapshotModel::ESnapshotFormat format = LLSnapshotModel::SNAPSHOT_FORMAT_BMP);
BOOL rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_height, BOOL keep_window_aspect = TRUE, BOOL is_texture = FALSE,
- BOOL show_ui = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
- BOOL thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type);
+ BOOL show_ui = TRUE, BOOL show_hud = TRUE, BOOL do_rebuild = FALSE, LLSnapshotModel::ESnapshotLayerType type = LLSnapshotModel::SNAPSHOT_TYPE_COLOR, S32 max_size = MAX_SNAPSHOT_IMAGE_SIZE);
+ BOOL thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL show_hud, BOOL do_rebuild, LLSnapshotModel::ESnapshotLayerType type);
BOOL isSnapshotLocSet() const;
void resetSnapshotLoc() const;
diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp
index 97b405c1d0..acf25b9792 100644
--- a/indra/newview/llviewerwindowlistener.cpp
+++ b/indra/newview/llviewerwindowlistener.cpp
@@ -50,10 +50,11 @@ LLViewerWindowListener::LLViewerWindowListener(LLViewerWindow* llviewerwindow):
// saveSnapshotArgs["width"] = LLSD::Integer();
// saveSnapshotArgs["height"] = LLSD::Integer();
// saveSnapshotArgs["showui"] = LLSD::Boolean();
+// saveSnapshotArgs["showhud"] = LLSD::Boolean();
// saveSnapshotArgs["rebuild"] = LLSD::Boolean();
// saveSnapshotArgs["type"] = LLSD::String();
add("saveSnapshot",
- "Save screenshot: [\"filename\"], [\"width\"], [\"height\"], [\"showui\"], [\"rebuild\"], [\"type\"]\n"
+ "Save screenshot: [\"filename\"], [\"width\"], [\"height\"], [\"showui\"], [\"showhud\"], [\"rebuild\"], [\"type\"]\n"
"type: \"COLOR\", \"DEPTH\"\n"
"Post on [\"reply\"] an event containing [\"ok\"]",
&LLViewerWindowListener::saveSnapshot,
@@ -83,6 +84,9 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const
bool showui = true;
if (event.has("showui"))
showui = event["showui"].asBoolean();
+ bool showhud = true;
+ if (event.has("showhud"))
+ showhud = event["showhud"].asBoolean();
bool rebuild(event["rebuild"]); // defaults to false
LLSnapshotModel::ESnapshotLayerType type(LLSnapshotModel::SNAPSHOT_TYPE_COLOR);
if (event.has("type"))
@@ -96,7 +100,7 @@ void LLViewerWindowListener::saveSnapshot(const LLSD& event) const
}
type = found->second;
}
- bool ok = mViewerWindow->saveSnapshot(event["filename"], width, height, showui, rebuild, type);
+ bool ok = mViewerWindow->saveSnapshot(event["filename"], width, height, showui, showhud, rebuild, type);
sendReply(LLSDMap("ok", ok), event);
}
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 291633ec1e..5e8c0c5433 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -277,8 +277,10 @@ void LLVOVolume::markDead()
{
if (!mDead)
{
- if( getVolume() ) // Check for corrupted volume.
- LLSculptIDSize::instance().rem(getVolume()->getParams().getSculptID());
+ if (getVolume())
+ {
+ LLSculptIDSize::instance().rem(getVolume()->getParams().getSculptID());
+ }
if(getMDCImplCount() > 0)
{
@@ -4818,8 +4820,9 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
{
U8 mode = mat->getDiffuseAlphaMode();
- if (mode == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE ||
- mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE)
+ if (mode == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE
+ || mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE
+ || (mode == LLMaterial::DIFFUSE_ALPHA_MODE_MASK && mat->getAlphaMaskCutoff() == 0))
{
ignore_alpha = true;
}
diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp
index 663a75156f..bae615232e 100644
--- a/indra/newview/llxmlrpclistener.cpp
+++ b/indra/newview/llxmlrpclistener.cpp
@@ -101,7 +101,7 @@ public:
{
// from curl.h
// skip the "CURLE_" prefix for each of these strings
-#define def(sym) (mMap[sym] = #sym + 6)
+#define def(sym) (mMap[sym] = sym[6])
def(CURLE_OK);
def(CURLE_UNSUPPORTED_PROTOCOL); /* 1 */
def(CURLE_FAILED_INIT); /* 2 */
diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp
index 6334549f51..75c9b7e893 100644
--- a/indra/newview/quickprefs.cpp
+++ b/indra/newview/quickprefs.cpp
@@ -827,6 +827,8 @@ void FloaterQuickPrefs::selectSkyPreset(const LLSD& preset)
// Need to preserve current sky manually in this case in contrast to asset-based settings
LLSettingsWater::ptr_t current_water = LLEnvironment::instance().getCurrentWater();
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, legacy_sky, current_water);
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().updateEnvironment(static_cast(gSavedSettings.getF32("FSEnvironmentManualTransitionTime")));
}
else
{
@@ -837,10 +839,10 @@ void FloaterQuickPrefs::selectSkyPreset(const LLSD& preset)
else // note the else here bridges the endif
#endif
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
}
- LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
+ // LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST);
}
void FloaterQuickPrefs::selectWaterPreset(const LLSD& preset)
@@ -856,6 +858,8 @@ void FloaterQuickPrefs::selectWaterPreset(const LLSD& preset)
// Need to preserve current sky manually in this case in contrast to asset-based settings
LLSettingsSky::ptr_t current_sky = LLEnvironment::instance().getCurrentSky();
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, current_sky, legacy_water);
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().updateEnvironment(static_cast(gSavedSettings.getF32("FSEnvironmentManualTransitionTime")));
}
else
{
@@ -866,10 +870,9 @@ void FloaterQuickPrefs::selectWaterPreset(const LLSD& preset)
else // beware the trailing else here.
#endif
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
}
- LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
}
void FloaterQuickPrefs::selectDayCyclePreset(const LLSD& preset)
@@ -883,6 +886,8 @@ void FloaterQuickPrefs::selectDayCyclePreset(const LLSD& preset)
if (legacyday)
{
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, legacyday);
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().updateEnvironment(static_cast(gSavedSettings.getF32("FSEnvironmentManualTransitionTime")));
}
else
{
@@ -893,10 +898,9 @@ void FloaterQuickPrefs::selectDayCyclePreset(const LLSD& preset)
else // beware trailing else that bridges the endif
#endif
{
- LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().setManualEnvironment(LLEnvironment::ENV_LOCAL, preset.asUUID());
}
- LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
}
void FloaterQuickPrefs::onChangeWaterPreset()
diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml
index cc24914bd9..f2ab43d242 100644
--- a/indra/newview/skins/default/xui/da/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_about_land.xml
@@ -64,7 +64,7 @@
Gå til 'Verden' > 'Om land' eller vælg en anden parcel for at se detaljer.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Navn:
diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml
index d0dca8863a..30a9e173d3 100644
--- a/indra/newview/skins/default/xui/da/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/da/floater_inspect.xml
@@ -1,7 +1,7 @@
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
index fbc7fe2319..9e3c0c6d1d 100644
--- a/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/da/floater_texture_ctrl.xml
@@ -7,7 +7,8 @@
Flere teksturer
- Størrelse: [DIMENSIONS]
+ Størrelse:
+[DIMENSIONS]
diff --git a/indra/newview/skins/default/xui/da/panel_landmark_info.xml b/indra/newview/skins/default/xui/da/panel_landmark_info.xml
index c75acb610a..17e1080cb3 100644
--- a/indra/newview/skins/default/xui/da/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/da/panel_landmark_info.xml
@@ -16,7 +16,7 @@
Information om dette sted er ikke tilgængelig på grund af begrænsning i rettigheder. Check venligst dine adgangsrettigheder med ejeren af parcellen.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
index 6d48180707..5908d7d12f 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
log på for at ændre
-
+
(Lokationer, billeder, web, søge historik)
diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
index d52845160b..522aafef2c 100644
--- a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
@@ -13,7 +13,7 @@
Ejer kan:
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
(Beholdning)
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index dda7681553..a15254f642 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -72,7 +72,7 @@
Keine Parzelle ausgewählt.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Parzellen-ID konnte nicht ermittelt werden.
diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml
index d93fe2d26d..f8058a1a24 100644
--- a/indra/newview/skins/default/xui/de/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/de/floater_inspect.xml
@@ -1,7 +1,7 @@
- [wkday,datetime,local] [day,datetime,local]. [mth,datetime,local] [year,datetime,local], [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ [wkday,datetime,slt] [day,datetime,slt]. [mth,datetime,slt] [year,datetime,slt], [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]
(Gruppe)
diff --git a/indra/newview/skins/default/xui/de/floater_select_key.xml b/indra/newview/skins/default/xui/de/floater_select_key.xml
index fd71844122..a3d5ca238d 100644
--- a/indra/newview/skins/default/xui/de/floater_select_key.xml
+++ b/indra/newview/skins/default/xui/de/floater_select_key.xml
@@ -1,7 +1,24 @@
-
-
-
- Eine Taste drücken, um die Auslösetaste zum Sprechen festzulegen.
+
+
+ Tastatur
+
+
+ Maustasten
+
+
+ Taste oder Maustaste drücken, um Auslöser zu setzen.
+Zulässige Eingabe: [INPUT].
+
+
+ Kombination [KEYSTR] ist vom Menü reserviert.
+
+
+ Taste oder Maustaste drücken, um Auslöser zu setzen.
+Zulässige Eingabe: [INPUT].
+
+
+
+
diff --git a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
index 667f3e65de..1d89785c58 100644
--- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml
@@ -22,7 +22,7 @@
-
+
Vorschau deaktiviert
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 924808b000..d5dc6f291c 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -5240,7 +5240,9 @@ Der Sicherungspfad konnte nicht gefunden werden.
Möchten Sie wirklich eine Sicherung in diesem Verzeichnis erstellen?
+
[DIRECTORY]
+
Bestehende Sicherungen in diesem Verzeichnis werden überschrieben!
diff --git a/indra/newview/skins/default/xui/de/panel_fs_contacts_groups.xml b/indra/newview/skins/default/xui/de/panel_fs_contacts_groups.xml
index 6c542e71d7..a18901957a 100644
--- a/indra/newview/skins/default/xui/de/panel_fs_contacts_groups.xml
+++ b/indra/newview/skins/default/xui/de/panel_fs_contacts_groups.xml
@@ -14,7 +14,7 @@
left_delta="262"
width="85" />
-
+
- Du bist derzeit ausgeloggt. Bitte beachte, dass benutzerspezifische Einstellungen nur gesichert und wiederhergestellt werden können, wenn du eingeloggt bist. Globale Einstellungen, die für alle Accounts gültig sind, können gesichert werden, ohne eingeloggt zu sein.
+ Sie sind derzeit ausgeloggt. Bitte beachten Sie, dass benutzerspezifische Einstellungen nur gesichert und wiederhergestellt werden können, wenn Sie eingeloggt sind. Globale Einstellungen, die für alle Accounts gültig sind, können gesichert werden, ohne eingeloggt zu sein.
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
index e9c254b3d3..95f6a17755 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_firestorm.xml
@@ -37,9 +37,9 @@
+
-
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
index 4c41fda995..30d996468d 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
@@ -15,7 +15,7 @@
Anmelden, um Änderungen vorzunehmen
-
+
(Standorte, Bilder, Web, Suchverlauf)
diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
index b4ba82a603..0f8e893445 100644
--- a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml
@@ -19,7 +19,7 @@
Eigentümer kann:
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
(Inventar)
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 3a6a65580b..9e50ab0066 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -5431,7 +5431,7 @@ Setzen Sie den Editorpfad in Anführungszeichen
Esc
- Space
+ Leertaste
Enter
@@ -5440,19 +5440,19 @@ Setzen Sie den Editorpfad in Anführungszeichen
Tab
- Ins
+ Einfg
- Del
+ Entf
Backsp
- Shift
+ Umschalt
- Ctrl
+ Strg
Alt
@@ -5460,6 +5460,18 @@ Setzen Sie den Editorpfad in Anführungszeichen
CapsLock
+
+ Links
+
+
+ Rechts
+
+
+ Auf
+
+
+ Ab
+
Pos1
@@ -5467,10 +5479,10 @@ Setzen Sie den Editorpfad in Anführungszeichen
Ende
- PgUp
+ Bild auf
- PgDn
+ Bild ab
F1
@@ -5521,91 +5533,91 @@ Setzen Sie den Editorpfad in Anführungszeichen
Dividieren
- PAD_DIVIDE
+ PAD_Dividieren
- PAD_LEFT
+ PAD_Links
- PAD_RIGHT
+ PAD_Rechts
- PAD_DOWN
+ PAD_Ab
- PAD_UP
+ PAD_Auf
- PAD_HOME
+ PAD_Pos1
- PAD_END
+ PAD_Ende
- PAD_PGUP
+ PAD_Bild auf
- PAD_PGDN
+ PAD_bild ab
- PAD_CENTER
+ PAD_Mitte
- PAD_INS
+ PAD_Einfg
- PAD_DEL
+ PAD_Entf
PAD_Enter
- PAD_BUTTON0
+ PAD_Taste 0
- PAD_BUTTON1
+ PAD_Taste 1
- PAD_BUTTON2
+ PAD_Taste 2
- PAD_BUTTON3
+ PAD_Taste 3
- PAD_BUTTON4
+ PAD_Taste 4
- PAD_BUTTON5
+ PAD_Taste 5
- PAD_BUTTON6
+ PAD_Taste 6
- PAD_BUTTON7
+ PAD_Taste 7
- PAD_BUTTON8
+ PAD_Taste 8
- PAD_BUTTON9
+ PAD_Taste 9
- PAD_BUTTON10
+ PAD_Taste 10
- PAD_BUTTON11
+ PAD_Taste 11
- PAD_BUTTON12
+ PAD_Taste 12
- PAD_BUTTON13
+ PAD_Taste 13
- PAD_BUTTON14
+ PAD_Taste 14
- PAD_BUTTON15
+ PAD_Taste 15
-
@@ -5736,6 +5748,24 @@ Setzen Sie den Editorpfad in Anführungszeichen
Z
+
+ LMT
+
+
+ MMT
+
+
+ RMT
+
+
+ MT4
+
+
+ MT5
+
+
+ Doppel-LMT
+
Partikel-Beacons werden angezeigt (blau)
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 7998bbded3..b51831db75 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -122,8 +122,8 @@
No parcel selected.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
-
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
+
The parcel ID could not be resolved.
diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml
index dea53ccb44..70d441b072 100644
--- a/indra/newview/skins/default/xui/en/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/en/floater_inspect.xml
@@ -13,7 +13,7 @@
width="610">
- [year,datetime,local] [mth,datetime,local] [day,datetime,local], [hour,datetime,local]:[min,datetime,local]:[second,datetime,local], [wkday,datetime,local]
+ [year,datetime,slt] [mth,datetime,slt] [day,datetime,slt], [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt], [wkday,datetime,slt]
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
index 7e13aa00d4..fa012f1ea7 100644
--- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
@@ -156,14 +156,15 @@
width="28" />
+ width="87" />
-
Version [VERSION] is required for login.
-Release notes: [URL]
Click OK to download and install.
confirm
Version [VERSION] has been downloaded and is ready to install.
-Release notes: [URL]
Click OK to install.
confirm
Version [VERSION] has been downloaded and is ready to install.
-Release notes: [URL]
Proceed?
confirm
+ type="alertmodal">
fail
The region you're trying to visit contains content exceeding your current preferences. You can change your preferences using Avatar > Preferences > General.
+
Are you sure you want to save a backup to this directory?
+
[DIRECTORY]
+
Any existing backups in that location will be overwritten!
-
+
Do zalogowania się wymagana jest wersja [VERSION].
-Informacje o wydaniu: [URL]
Kliknij OK, aby pobrać i zainstalować.
Wersja [VERSION] została pobrana i jest gotowa do zainstalowania.
-Informacje o wydaniu: [URL]
Kliknij OK, aby zainstalować.
Wersja [VERSION] została pobrana i jest gotowa do zainstalowania.
-Informacje o wydaniu: [URL]
Kontynuować?
@@ -4811,7 +4808,9 @@ Poprzedni symulator: [OLDVERSION]
Czy na pewno chcesz zapisać kopię zapasową w tym katalogu?
+
[DIRECTORY]
+
Wszelkie istniejące kopie zapasowe w tej lokalizacji zostaną nadpisane!
diff --git a/indra/newview/skins/default/xui/pl/panel_fs_contacts_groups.xml b/indra/newview/skins/default/xui/pl/panel_fs_contacts_groups.xml
index 9435516548..951742d363 100644
--- a/indra/newview/skins/default/xui/pl/panel_fs_contacts_groups.xml
+++ b/indra/newview/skins/default/xui/pl/panel_fs_contacts_groups.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_firestorm.xml b/indra/newview/skins/default/xui/pl/panel_preferences_firestorm.xml
index c0440451dc..ba723a6ccf 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_firestorm.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_firestorm.xml
@@ -33,6 +33,7 @@
+
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
index de26b74031..ca0ef28619 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml
@@ -14,7 +14,7 @@
Zaloguj się, by zmienić
-
+
(miejsca, obrazy, strony web, historia wyszukiwarki)
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 235f7e6dc0..98ad751c84 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -6408,4 +6408,7 @@ Twoja aktualna pozycja: [AVATAR_POS]
(Nieznany skrypt)
+
+ [COST]L$
+
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 9e9c92a0ca..9a7f4ae215 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -73,7 +73,7 @@
Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar os detalhes.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Nome:
diff --git a/indra/newview/skins/default/xui/pt/floater_inspect.xml b/indra/newview/skins/default/xui/pt/floater_inspect.xml
index 6a00b1a628..8aa7521d25 100644
--- a/indra/newview/skins/default/xui/pt/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/pt/floater_inspect.xml
@@ -1,7 +1,7 @@
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
index d06c16d8c8..5cc70f0e9b 100644
--- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
@@ -15,7 +15,8 @@
- Tamanho: [DIMENSÕES]
+ Tamanho:
+[DIMENSÕES]
diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
index a5eb1b4ea2..56c7667b40 100644
--- a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml
@@ -16,7 +16,7 @@
Os dados deste lugar não estão indisponíveis devido a restrições de acesso. Verifique as permissões com o proprietário do terreno ou parcela.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
index 904a6cbc33..df84cf8898 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
autentique-se para mudar
-
+
(Locações, imagens, web, histórico de busca)
diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
index 9afcb67d3d..fdf72fa5c8 100644
--- a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml
@@ -19,7 +19,7 @@
Proprietário pode:
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
(Inventário)
diff --git a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
index b91dd4036f..3929a130cc 100644
--- a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
@@ -16,7 +16,7 @@
Информация об этом месте недоступна, поскольку у вас нет прав на ее просмотр. Узнайте о своих правах, связавшись с владельцем участка.
- [wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ [wkday,datetime,slt], [day,datetime,slt] [mth,datetime,slt] [year,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
index 7ddb9ca92c..174a7db368 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
@@ -14,7 +14,7 @@
Войдите для изменений
-
+
(Места, изображения, интернет, история поиска)
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
index 79a645f536..8c3e28c12d 100644
--- a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
@@ -19,7 +19,7 @@
Владелец может:
- [wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ [wkday,datetime,slt], [day,datetime,slt] [mth,datetime,slt] [year,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]
(инвентарь)
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
index 3d811e3aad..f3d93b7bae 100644
--- a/indra/newview/skins/default/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -72,7 +72,7 @@
Seçili parsel yok.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Ad:
diff --git a/indra/newview/skins/default/xui/tr/floater_inspect.xml b/indra/newview/skins/default/xui/tr/floater_inspect.xml
index 09130a31f3..a85fae6d0f 100644
--- a/indra/newview/skins/default/xui/tr/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/tr/floater_inspect.xml
@@ -1,7 +1,7 @@
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
index 1a16709127..7bf5d6a081 100644
--- a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -15,7 +15,8 @@
- Büyüklük: [DIMENSIONS]
+ Büyüklük:
+[DIMENSIONS]
diff --git a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
index 5c80b0ed65..0d176ae728 100644
--- a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
@@ -16,7 +16,7 @@
Erişim kısıtlamaları nedeniyle bu konum hakkında bilgiye erişilemiyor. Lütfen parsel sahibi nezdinde izinlerinizi kontrol edin.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
index f1ed78cd1e..32fbb8cafa 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
değiştirmek için oturum açın
-
+
(Konumlar, görüntüler, web, arama geçmişi)
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
index 9c1b6a8dfd..133b5690a3 100644
--- a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
@@ -19,7 +19,7 @@
Sahip şunu yapabilir:
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
(Envanter)
diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml
index 0d11a4c6fa..610d59539f 100644
--- a/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -72,7 +72,7 @@
未選擇地段。
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
名稱:
diff --git a/indra/newview/skins/default/xui/zh/floater_inspect.xml b/indra/newview/skins/default/xui/zh/floater_inspect.xml
index 4e1f4b24fd..3bc093a25f 100644
--- a/indra/newview/skins/default/xui/zh/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/zh/floater_inspect.xml
@@ -1,7 +1,7 @@
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
index 881ca40338..de43666043 100644
--- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -15,7 +15,8 @@
- 尺寸:[DIMENSIONS]
+ 尺寸:
+[DIMENSIONS]
diff --git a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml
index a99b635eec..e31242f60b 100644
--- a/indra/newview/skins/default/xui/zh/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/zh/panel_landmark_info.xml
@@ -16,7 +16,7 @@
權限不足,無法取得此位置的資訊。 請向地段所有人查詢你的權限。
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
index aa2486e988..72d39e3768 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
@@ -3,7 +3,7 @@
登入以改變
-
+
(位置、圖像、網頁、搜尋的歷史紀錄)
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml
index 61c52066d0..9772dc1224 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_item_info.xml
@@ -19,7 +19,7 @@
所有人可以:
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
(收納區)
diff --git a/indra/newview/skins/latency/xui/de/floater_about_land.xml b/indra/newview/skins/latency/xui/de/floater_about_land.xml
index 6b14cc67b8..231a5b4824 100644
--- a/indra/newview/skins/latency/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/latency/xui/de/floater_about_land.xml
@@ -72,7 +72,7 @@
Keine Parzelle ausgewählt.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Parzellen-ID konnte nicht ermittelt werden.
diff --git a/indra/newview/skins/latency/xui/en/floater_about_land.xml b/indra/newview/skins/latency/xui/en/floater_about_land.xml
index 2092292573..4229b12ae8 100644
--- a/indra/newview/skins/latency/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/latency/xui/en/floater_about_land.xml
@@ -121,7 +121,7 @@
No parcel selected.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
The parcel ID could not be resolved.
diff --git a/indra/newview/skins/vintage/xui/de/floater_about_land.xml b/indra/newview/skins/vintage/xui/de/floater_about_land.xml
index 6b14cc67b8..231a5b4824 100644
--- a/indra/newview/skins/vintage/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/de/floater_about_land.xml
@@ -72,7 +72,7 @@
Keine Parzelle ausgewählt.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Parzellen-ID konnte nicht ermittelt werden.
diff --git a/indra/newview/skins/vintage/xui/en/floater_about_land.xml b/indra/newview/skins/vintage/xui/en/floater_about_land.xml
index 141dd1d83c..2a367ac6f8 100644
--- a/indra/newview/skins/vintage/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/en/floater_about_land.xml
@@ -121,8 +121,8 @@
No parcel selected.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
-
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
+
The parcel ID could not be resolved.
diff --git a/indra/newview/skins/vintage/xui/es/floater_about_land.xml b/indra/newview/skins/vintage/xui/es/floater_about_land.xml
index 3c9b41abba..9c6a799e28 100644
--- a/indra/newview/skins/vintage/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/es/floater_about_land.xml
@@ -55,7 +55,7 @@
Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver sus características.
- [wkday,datetime,local] [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ [wkday,datetime,slt] [day,datetime,slt] [mth,datetime,slt] [year,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]
No se ha podido resolver la id. de la parcela.
diff --git a/indra/newview/skins/vintage/xui/fr/floater_about_land.xml b/indra/newview/skins/vintage/xui/fr/floater_about_land.xml
index 13dd9288af..4869d85092 100644
--- a/indra/newview/skins/vintage/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/fr/floater_about_land.xml
@@ -63,7 +63,7 @@
Aucune parcelle sélectionnée.
- [wkday,datetime,local] [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+ [wkday,datetime,slt] [day,datetime,slt] [mth,datetime,slt] [year,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt]
Nom :
diff --git a/indra/newview/skins/vintage/xui/it/floater_about_land.xml b/indra/newview/skins/vintage/xui/it/floater_about_land.xml
index 14682175cf..9e3fc64bbb 100644
--- a/indra/newview/skins/vintage/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/it/floater_about_land.xml
@@ -64,7 +64,7 @@
Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezzamento per vederne i dettagli.
- [wkday,datetime,local] [day,datetime,local] [mth,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [day,datetime,slt] [mth,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Nome:
diff --git a/indra/newview/skins/vintage/xui/ja/floater_about_land.xml b/indra/newview/skins/vintage/xui/ja/floater_about_land.xml
index 7e72363390..bf825fcc67 100644
--- a/indra/newview/skins/vintage/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/ja/floater_about_land.xml
@@ -63,7 +63,7 @@
区画が選択されていません。
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
該当の区画IDがありませんでした。
diff --git a/indra/newview/skins/vintage/xui/pt/floater_about_land.xml b/indra/newview/skins/vintage/xui/pt/floater_about_land.xml
index e862868cf4..4a2bdd3ee6 100644
--- a/indra/newview/skins/vintage/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/pt/floater_about_land.xml
@@ -64,7 +64,7 @@
Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar os detalhes.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Nome:
diff --git a/indra/newview/skins/vintage/xui/tr/floater_about_land.xml b/indra/newview/skins/vintage/xui/tr/floater_about_land.xml
index 1a07a1de02..32f6a4a658 100644
--- a/indra/newview/skins/vintage/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/vintage/xui/tr/floater_about_land.xml
@@ -63,7 +63,7 @@
Seçili parsel yok.
- [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+ [wkday,datetime,slt] [mth,datetime,slt] [day,datetime,slt] [hour,datetime,slt]:[min,datetime,slt]:[second,datetime,slt] [year,datetime,slt]
Ad: