merge changes for 3.7.14-release
1
.hgtags
|
|
@ -486,3 +486,4 @@ a9f2d0cb11f73b06858e6083bb50083becc3f9cd 3.7.9-release
|
|||
64799eb298834073a3e9992cd8d27c3cb9d30b10 3.7.11-release
|
||||
3b44ea8988cb902f0dda8429e8d5e4569e304532 3.7.12-release
|
||||
d86a7e1bc96d27b683f951d3701d5b7042158c68 3.7.13-release
|
||||
a7872554f3665588f1e8347d472cec3a299254b3 3.7.14-release
|
||||
|
|
|
|||
344
autobuild.xml
|
|
@ -66,9 +66,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>69ae3b1c9cdb0ebc0d0e1ac8413e3eb7</string>
|
||||
<string>8da309d24fb0bad8eaaa667fb04c6dc7</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/SDL-1.2.14-linux-20110309.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-sdl-update/rev/290561/arch/Linux/installer/SDL-1.2.15-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -138,9 +138,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>e6caaeea16131e1f2343ecd7765e3147</string>
|
||||
<string>127c6c37726b11a0750cd4d3b920beff</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.7.1-darwin-20110217.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-ares-update/rev/290399/arch/Darwin/installer/ares-1.10.0-darwin-20140529.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -150,9 +150,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0745872db83d45f4ab3bdc697d98e264</string>
|
||||
<string>92f6a454d90b5740a38fb68e369cc13e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/223275/arch/Linux/installer/ares-1.7.1-linux-20110310.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-ares-update/rev/290399/arch/Linux/installer/ares-1.10.0-linux-20140529.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -162,9 +162,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>1dcec6babd249a2597114d4ac226c461</string>
|
||||
<string>887c93c4075beefefa44b69fb2c0461e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/220963/arch/CYGWIN/installer/ares-1.7.1-windows-20110211.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-ares-update/rev/290399/arch/CYGWIN/installer/ares-1.10.0-windows-20140529.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -186,9 +186,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>06dd7af75e1eb179aed54fd58d8688af</string>
|
||||
<string>b57789bd22dd166aade4a35ec5d36fbb</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Darwin/installer/boost-1.52.0-darwin-20130221.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-boost-update/rev/290566/arch/Darwin/installer/boost-1.55.0-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -198,9 +198,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>50c8b50b7cced52cc5656fb44e9b12cf</string>
|
||||
<string>2f076eae296600a1b810ce375dc4b42d</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/Linux/installer/boost-1.52.0-linux-20130222.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-boost-update/rev/290566/arch/Linux/installer/boost-1.55.0-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -210,9 +210,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>742fc9675b033df7f9c6f215ff250f6c</string>
|
||||
<string>8af0500013739866a41cfc2ce90e4f4b</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/270698/arch/CYGWIN/installer/boost-1.52.0-windows-20130221.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-boost-update/rev/290566/arch/CYGWIN/installer/boost-1.55.0-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -234,9 +234,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>480b27a0cb39a4adfcdeabef895de3e1</string>
|
||||
<string>68dc13f49a686331df6f0128c5483da3</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/227230/arch/Darwin/installer/colladadom-2.2-darwin-20110420.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-colladadom-update/rev/290576/arch/Darwin/installer/colladadom-2.3-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -246,9 +246,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>be7321370b69b6d66938b82a9230a067</string>
|
||||
<string>bdec5fe5fd008da4328f84115128ee61</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/233450/arch/Linux/installer/colladadom-2.2-linux-20110621.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-colladadom-update/rev/290576/arch/Linux/installer/colladadom-2.3-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -258,9 +258,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a9f548eb6f9aaf292508a8b09c7f2f73</string>
|
||||
<string>ae103c9481be20cd6c035940832b2650</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/226584/arch/CYGWIN/installer/colladadom-2.2-windows-20110413.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-colladadom-update/rev/290576/arch/CYGWIN/installer/colladadom-2.3-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -282,9 +282,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f7d9b6a9c624364389b71209881f39de</string>
|
||||
<string>f5a699c93beb1a854d0b51382b5cecc8</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/280289/arch/Darwin/installer/curl-7.24.0-darwin-20130826.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/290664/arch/Darwin/installer/curl-7.37.0-darwin-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -294,9 +294,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>58b7bf45383c1b1bc24afb303b1519c8</string>
|
||||
<string>2bc285edffd0e55e0cd6290f39854a89</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/280289/arch/Linux/installer/curl-7.24.0-linux-20130826.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/290664/arch/Linux/installer/curl-7.37.0-linux-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -306,9 +306,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>8d9ccb0277a26bfe3f346c3c49ce4b58</string>
|
||||
<string>8d3b197d7a114d2b688d2831a0a59757</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/280289/arch/CYGWIN/installer/curl-7.24.0-windows-20130826.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-curl-update/rev/290664/arch/CYGWIN/installer/curl-7.37.0-windows-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -546,9 +546,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d8b08b657247566bde5fd853c7622478</string>
|
||||
<string>2843c48e6c84a51e3d6aa05dace4c8c0</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/fontconfig-2.8.0-linux-20110311.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-fontconfig-update/rev/290569/arch/Linux/installer/fontconfig-2.11.0-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -594,9 +594,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>c0eacb6348e032fbc69cfdc4bd215ee4</string>
|
||||
<string>71c8d80de052f0c2a49e4c7ddf1a56a0</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-darwin-20110307.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-freetype-update/rev/290557/arch/Darwin/installer/freetype-2.4.4-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -606,9 +606,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>bd6f84f9fb3c2e68850676d06935373f</string>
|
||||
<string>52f87a65cc61ec4b05721c079d015b19</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/271684/arch/Linux/installer/freetype-2.4.4-linux-20130312.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-freetype-update/rev/290557/arch/Linux/installer/freetype-2.4.4-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -618,9 +618,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>271349827b939406162ce42e42cd18e0</string>
|
||||
<string>6e9fc0fe628a7c88f6f614bf3b0450ae</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-windows-20110218.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-freetype-update/rev/290557/arch/CYGWIN/installer/freetype-2.4.4-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -747,6 +747,54 @@
|
|||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>gmock</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
<string>bsd</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/gmock.txt</string>
|
||||
<key>name</key>
|
||||
<string>gmock</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>36b0ea1a8be38f5749a7b13536b871ab</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-google-mock-update/rev/290574/arch/Darwin/installer/gmock-1.7.0-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3de99704847b34c7acccf5ab87222f6c</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-google-mock-update/rev/290574/arch/Linux/installer/gmock-1.7.0-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5d91c1d03780aa26bcd5481145ee9e86</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-google-mock-update/rev/290574/arch/CYGWIN/installer/gmock-1.7.0-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>google_breakpad</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
@ -795,54 +843,6 @@
|
|||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>googlemock</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
<string>bsd</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/googlemock.txt</string>
|
||||
<key>name</key>
|
||||
<string>googlemock</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>886ee428f058005ab7f90f61784ec9d9</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-darwin-20101004.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>782ca04e56d8eab755adcae297cafa7c</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-linux-20101001.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>98994d5b0b4b3d43be22aa6a5c36e6fa</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-mock-graham/rev/272961/arch/CYGWIN/installer/gmock-1.6.0-windows-20130327.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>gperftools</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
@ -1194,9 +1194,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6fe1adf12d98bce9111f60ee762007b9</string>
|
||||
<string>80a84bbbb363e1a38f39bb6be8a3f166</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-darwin-20110222.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libpng-update/rev/290558/arch/Darwin/installer/libpng-1.6.8-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1206,9 +1206,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0681ab7e1988dfdbdad7dd9edb7760ee</string>
|
||||
<string>3368a25b361c22a03f7ec7e0f8d5ff9d</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-linux-20110223.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libpng-update/rev/290558/arch/Linux/installer/libpng-1.6.8-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1218,9 +1218,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f194ba857ca8dd86483a3ef24535d0db</string>
|
||||
<string>596f4798f90941817b1ca5009c24d16a</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-libpng/rev/226532/arch/CYGWIN/installer/libpng-1.5.1-windows-20110413.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libpng-update/rev/290558/arch/CYGWIN/installer/libpng-1.6.8-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1261,18 +1261,42 @@
|
|||
<string>libxml2</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>4a5880b8235beb5ca21f1e252a46e342</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libxml-update/rev/290562/arch/Darwin/installer/libxml2-2.9.1-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>fd34e3e818ad7dd26add1f05e6069c11</string>
|
||||
<string>7eb90f075730f8d7d176f8fb7bad5ef5</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-libxml/rev/282218/arch/Linux/installer/libxml2-2.7.8-linux-20131009.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libxml-update/rev/290562/arch/Linux/installer/libxml2-2.9.1-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ba20e2634b4c249a7064620d135f7972</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-libxml-update/rev/290562/arch/CYGWIN/installer/libxml2-2.9.1-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>llappearanceutility-source</key>
|
||||
|
|
@ -1420,9 +1444,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>4a98d727561cd1f4ac5ee02907411df1</string>
|
||||
<string>79afb464255be2be7c02fdfac10bcd5c</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/250147/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20120228.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/290663/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1432,9 +1456,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f50e5f0cc880c55b3f0f7e67dc8f7221</string>
|
||||
<string>090190a8dd80efe1f0933c7ed307e6f1</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/250147/arch/Linux/installer/llqtwebkit-4.7.1-linux-20120228.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/290663/arch/Linux/installer/llqtwebkit-4.7.1-linux-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1444,9 +1468,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5e3cd6af397e853a963a6de40d440ff4</string>
|
||||
<string>650f2a30a83eacde238fcc87ff161190</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/250147/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20120228.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-llqtwebkit2/rev/290663/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1597,54 +1621,6 @@
|
|||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>openSSL</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
<string>openSSL</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/openssl.txt</string>
|
||||
<key>name</key>
|
||||
<string>openSSL</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>facee34b8bd57ad602157e65a5af1a49</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openssl-0.9.8q-darwin-20110211.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3d40be8566fa4b9df9a38e2a0f9ea467</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/226882/arch/Linux/installer/openssl-1.0.0d-linux-20110418.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>774c7f0a0312bee3054757a623e227bc</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/220986/arch/CYGWIN/installer/openssl-0.9.8q-windows-20110211.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>openal_soft</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
@ -1733,6 +1709,54 @@
|
|||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>openssl</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
<string>openssl</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/openssl.txt</string>
|
||||
<key>name</key>
|
||||
<string>openssl</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>darwin</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>4db126327bbb125ea2490c79c73103bf</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-openssl-update/rev/290662/arch/Darwin/installer/openssl-1.0.1h-darwin-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>0665c18f8cdbe2f90cb0a2f088cfe1a6</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-openssl-update/rev/290662/arch/Linux/installer/openssl-1.0.1h-linux-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>138997e1a73c65525d45c00f43f08010</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-openssl-update/rev/290662/arch/CYGWIN/installer/openssl-1.0.1h-windows-20140605.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
</map>
|
||||
<key>pcre</key>
|
||||
<map>
|
||||
<key>license</key>
|
||||
|
|
@ -1748,9 +1772,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a8e74694a0f4248228c13c845ed0a6f8</string>
|
||||
<string>af0d38a4c56b52c4df40a4ff0d51efef</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Darwin/installer/pcre-7.6-darwin-20110504.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-pcre-update/rev/290406/arch/Darwin/installer/pcre-8.35-darwin-20140529.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1760,9 +1784,21 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>bb0abe962b3b8208ed2dab0424aab33d</string>
|
||||
<string>5e6368d39b95f2c0d5162dac2c17c67f</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Linux/installer/pcre-7.6-linux-20110504.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-pcre-update/rev/290406/arch/Linux/installer/pcre-8.35-linux-20140530.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
</map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9250f74fed826ad1b8700229e964519d</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-pcre-update/rev/290406/arch/CYGWIN/installer/pcre-8.35-windows-20140529.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1928,9 +1964,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>49b8de20f3bb43537f51311894a72de1</string>
|
||||
<string>6658071e3b54b1dd5f5279227aff402a</string>
|
||||
<key>url</key>
|
||||
<string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/zlib-1.2.5-darwin-20110211.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-zlib-update/rev/290556/arch/Darwin/installer/zlib-1.2.8-darwin-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1940,9 +1976,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>7b4cf3aa2c04937d0a20761516587896</string>
|
||||
<string>63a62bb3cbef2aad3cca49cb6f2d0aeb</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-zlib/rev/223739/arch/Linux/installer/zlib-1.2.5-linux-20110314.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-zlib-update/rev/290556/arch/Linux/installer/zlib-1.2.8-linux-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1952,9 +1988,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>5852192646681817fc3c3a8c95e91c1e</string>
|
||||
<string>ab45a628e22a495814e806ce46081806</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-zlib/rev/220983/arch/CYGWIN/installer/zlib-1.2.5-windows-20110211.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3pl_3p-zlib-update/rev/290556/arch/CYGWIN/installer/zlib-1.2.8-windows-20140602.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,344 @@
|
|||
|
||||
A short guide to compiling, linking, running and debugging issues
|
||||
in the viewer and its packaged libraries.
|
||||
|
||||
Introduction
|
||||
|
||||
A recent pass through some third-party libraries resulted in the
|
||||
collection of a lot of information about how things should and
|
||||
shouldn't be built in the viewer. Some of that is presented below
|
||||
with hints and rules about doing things well. What's presented is
|
||||
a guideline only. Not all suggestions are hard rules and you'll
|
||||
find exceptions all over. Some exceptions arise from solid
|
||||
reasoning, others may be legacy that hasn't been re-examined.
|
||||
|
||||
Use good engineering judgement when applying this information.
|
||||
|
||||
Compilation
|
||||
|
||||
Windows Targets
|
||||
|
||||
Significant compilation flags and defines follow:
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Option Release RelWithDebInfo Debug
|
||||
----------------------------------------------------------------------------
|
||||
wchar_t /Zc:wchar_t- " "
|
||||
RTL type /MD /MD /MDd
|
||||
FLoating Point /fp:fast " "
|
||||
Debug Info /Zi (app/dll), /Z7 (lib) " "
|
||||
Optimizer /O2 /Ob2 /GR /Od /Ob0 /GR /Od /GR
|
||||
Incr. Link /INCREMENTAL:NO /INCREMENTAL /INCREMENTAL:NO
|
||||
Debug /DEBUG /DEBUG /DEBUG
|
||||
/OPT:REF
|
||||
Ignore Libs LIBCMT LIBCMT LIBCMT;LIBCMTD;MSVCRT
|
||||
Alignment Default " "
|
||||
|
||||
Defines WIN32 " "
|
||||
_WINDOWS " "
|
||||
LL_RELEASE=1 LL_RELEASE=1 n/a
|
||||
LL_RELEASE_FOR_DOWNLOAD=1 n/a n/a
|
||||
NDEBUG NDEBUG _DEBUG
|
||||
n/a n/a LL_DEBUG=1
|
||||
n/a LL_RELEASE_WITH_\ n/a
|
||||
DEBUG_INFO=1
|
||||
n/a n/a _SCL_SECURE_NO_WARNINGS=1
|
||||
_SECURE_STL=0 _SECURE_STL=0 _SECURE_STL=0
|
||||
_HAS_ITERATOR_DEBUGGING=0 n/a n/a
|
||||
LL_WINDOWS=1 " "
|
||||
UNICODE " "
|
||||
_UNICODE " "
|
||||
WINVER=0x0501 " "
|
||||
_WIN32_WINNT=0x0501 " "
|
||||
LL_OS_DRAGDROP_ENABLED=1 " "
|
||||
CARES_STATICLIB " "
|
||||
LIB_NDOF=1 " "
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Notes:
|
||||
|
||||
1. /Zc:wchar_t-. Not certain where this comes from. It may be
|
||||
due to a default set of compilation flags in Qt 4.X that then
|
||||
propagates outward. In Qt 5.X, this setting is flipped back to
|
||||
default (wchar_t is a built-in). Other options for dealing with
|
||||
this include:
|
||||
|
||||
http://msdn.microsoft.com/en-us/library/dh8che7s%28v=vs.110%29.aspx
|
||||
|
||||
Recommend trying to stay with /Zc:wchar_t (the default) when
|
||||
adding libraries. If incompatible, you'll typically get some
|
||||
missing ostream '<<' operators or something similar in the stream
|
||||
headers.
|
||||
|
||||
2. /Z7 (VC 7.0 compatibility symbols) gives us debug information
|
||||
in the static libraries we build. Otherwise builds generate
|
||||
vc100.pdb files all over the place which generally aren't useful.
|
||||
DLL's and .EXEs are to get /Zi or /ZI with separate .PDB files.
|
||||
These .PDB files can then be packaged up in symbol tarballs for
|
||||
the crash dump analyzer or used in debugging. There are issues here
|
||||
for VS 2013 (see below).
|
||||
|
||||
|
||||
Mac Targets
|
||||
|
||||
Fairly straightforward, optimization level is easily changed (may
|
||||
be little or negative gain for -O3 and RelWithDebInfo should be
|
||||
kicked up to 1 or 2. Boost debug symbols to dwarf-2 with a goal
|
||||
of dwarf-2 in separate dSYM file when building .dylibs and
|
||||
executables.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Option Release RelWithDebInfo Debug
|
||||
----------------------------------------------------------------------------
|
||||
Strip Debug Symbols On " "
|
||||
During Copy
|
||||
|
||||
Generate Debug Syms On " "
|
||||
|
||||
Level Debug Syms -gdwarf-2 " "
|
||||
|
||||
Optimization -O3 -O0 -O0
|
||||
|
||||
PIC -fPIC -DPIC " "
|
||||
|
||||
Defines LL_RELEASE=1 LL_RELEASE=1 n/a
|
||||
LL_RELEASE_FOR_DOWNLOAD=1 n/a n/a
|
||||
NDEBUG NDEBUG _DEBUG
|
||||
n/a n/a LL_DEBUG=1
|
||||
n/a LL_RELEASE_WITH_\ n/a
|
||||
DEBUG_INFO=1
|
||||
LL_DARWIN=1 " "
|
||||
LL_OS_DRAGDROP_ENABLED=1 " "
|
||||
CARES_STATICLIB " "
|
||||
LIB_NDOF=1 " "
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Notes:
|
||||
|
||||
1. We’re also building dylibs in a somewhat unusual way. They’re
|
||||
currently being generated with a link path of
|
||||
‘@executable_path/../Resources/<library>’. If we were to follow
|
||||
the recommendations in dyld’s man page, we’d instead reference
|
||||
‘@loader_path/<library>’, use -rpath on the executable link
|
||||
(pointing to the ‘Resources’ subdir of the main executable), and
|
||||
be able to avoid some symlinking in the .app tree.
|
||||
|
||||
2. Use the -headerpad_max_install_names link option on all .dylibs.
|
||||
|
||||
|
||||
Linux Targets
|
||||
|
||||
Not much variety here.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Option Release RelWithDebInfo Debug
|
||||
----------------------------------------------------------------------------
|
||||
Debug Level -g (-g0/1 better?) -g -g
|
||||
During Copy
|
||||
|
||||
Optimization -O2 -O0 -O0
|
||||
|
||||
PIC -fPIC " "
|
||||
----------------------------------------------------------------------------
|
||||
Notes:
|
||||
|
||||
|
||||
Linking
|
||||
|
||||
The library update work has generally moved in the direction of
|
||||
preferring static libraries over dynamic (Qt4 being the notable
|
||||
exception). It also mostly eliminated the extremely bad practice
|
||||
of having multiple versions of a library built into an image.
|
||||
|
||||
How bad was it? Very. Appalling. A nightmare. On Windows, at
|
||||
least four versions of zlib (1.2.3, 1.2.5, 1.2.6, unknown), three
|
||||
versions of Boost (1.45, 1.48, 1.52), two versions of OpenSSL
|
||||
(0.9.8q, 1.0.0g) and three different builds of libexpat
|
||||
2.0.5/1.5.2 were used. Mac was worse with five builds or versions
|
||||
of zlib, two of PCRE, two of c-ares, and three of OpenSSL. Linux
|
||||
topped that by adding two builds of libpng.
|
||||
|
||||
DO NOT ALLOW THIS TO HAPPEN AGAIN. It isn't enough to update a
|
||||
library and then stuff a new triplet of S3 URLs into the viewer's
|
||||
autobuild.xml. If you update a library you MUST:
|
||||
|
||||
* Update the autobuild.xml of ALL consumers of the library. In
|
||||
the case of zlib, that meant updating freetype, libpng, openssl,
|
||||
libxml2, fontconfig, curl, Boost, SDL, llqtwebkit, google-mock and
|
||||
colladadom.
|
||||
|
||||
* Confirm by test and observation that the consumers actually use
|
||||
your library rather than 'call home to mother' and find
|
||||
system-supplied versions of your library. This may consist of
|
||||
watching configuration scripts, probing with ldd/depends/otool,
|
||||
pulling text out of binaries with 'strings'. The previously-
|
||||
mentioned libraries all have a README.Linden file that gives
|
||||
examples specific to the consumer library.
|
||||
|
||||
* DO NOT RE-EXPORT LIBRARIES. Colladadom was the worst offender
|
||||
of this rule. As a shared library, it was re-exporting part, but
|
||||
not all, of Boost filesystem and system, some zlib, some PCRE,
|
||||
some libxml2 and minizip. This meant that depending upon link-
|
||||
time and run-time symbol resolution, data constructed with one
|
||||
version of a library might be processed by a method built in a
|
||||
second, incompatible version of the library. Switching colladadom
|
||||
to a static library ended the re-export problem.
|
||||
|
||||
* Preventing re-export is not sufficient. other libraries will
|
||||
still be shipped as shared and they can still have Singleton and
|
||||
Fragile Base Class issues. A DLL may be built with a static
|
||||
archive of a library that has global data. That same static
|
||||
archive might be linked into the application proper. An object
|
||||
created with a method in the DLL may pass into a method in the
|
||||
application where the archive's global data has a second instance
|
||||
and no knowledge of the object. This is a failure due to an
|
||||
assumption of Singleton global data which leads to some kind of
|
||||
failure. This is the same effect as when, in Windows, both MSVCRT
|
||||
and MSVCRTD get activated in a program. If you're lucky, some
|
||||
asserts fail in that case having to do with file handle global
|
||||
data.
|
||||
|
||||
|
||||
Running
|
||||
|
||||
Windows Debug Build. Seems to have been rendered nearly useless
|
||||
by having the LL_CHECK_MEMORY define in llmemory.h calling
|
||||
_CrtCheckMemory(). Viewer is almost useful disabling this in
|
||||
llvoavatar code alone but not quite.
|
||||
|
||||
|
||||
Futures
|
||||
|
||||
Static Versus Dynamic Libraries
|
||||
|
||||
One solution to the above linking problems is the use of static
|
||||
libraries for everything. Single version, singleton instancing of
|
||||
data, etc. But it's not the 1950's and we're not running our
|
||||
applications on bare metal. Every platform comes with 100s of
|
||||
libraries waiting to interfere with operations by breaking the
|
||||
single-version and singleton-data assumption.
|
||||
|
||||
Additionally, there are libraries that simply expect to be built
|
||||
into shared libraries. Qt4 is one such. The version we're using
|
||||
now, 4.7.1, is actually trying to disable both Webkit and plugin
|
||||
modules because we're building it statically on Mac and Linux.
|
||||
It's only because of configuration bugs that we're getting the
|
||||
functionality out of it that we want.
|
||||
|
||||
With enough libraries and a single, global namespace, eventually
|
||||
there will be collisions and there may not be a warning. All it
|
||||
takes is two programmers who thought that 'FILE * open_file(const
|
||||
char *);' was a safe signature to use between compilation units in
|
||||
their libraries and glorious debugging sessions are in your
|
||||
future. Having debugged it, you will now become the proud owner
|
||||
of a one-off version of one of those libraries that uses a special
|
||||
symbol prefix which you will be maintaining forever.
|
||||
|
||||
Lastly, we have some binary blobs that we must use as delivered.
|
||||
Executables can be isolated at run-time if necessary. Shared
|
||||
libraries are a different problem. They may bring their own
|
||||
library dependencies that affect link- and run-time symbol
|
||||
resolution and they'll impose that on us according to platform
|
||||
rules.
|
||||
|
||||
So, what to do? My natural bias for large software is to use
|
||||
shared libraries for everything. It's a path to single-version
|
||||
and singleton data and isolates namespaces and prevents
|
||||
interactions. It also has some field serviceability benefits if
|
||||
you need to debug some bizarre problem a user has.
|
||||
|
||||
But there's a local preference for static. Here, my
|
||||
rules-of-thumb are:
|
||||
|
||||
* Static library used by default.
|
||||
|
||||
* Shared library where the library must be built shared.
|
||||
|
||||
* Shared library if that is the only means to enforce the
|
||||
single-version and singleton-data requirements.
|
||||
|
||||
* Shared library *on a case-by-case basis* if the library is also
|
||||
provided by the platform and some benefit is plausible. (An
|
||||
example of this is freetype/fontconfig on Linux. The .so
|
||||
versions we build with, and incompletely ship, are inferior in
|
||||
behavior to the platform libraries. By being shared libraries,
|
||||
the platform-supplied option is available to all Linux users.)
|
||||
|
||||
In all cases, beware of cmake which appears to collapse and move
|
||||
library references in links. This can drastically affect symbol
|
||||
resolution when there are multiple sources for a symbol.
|
||||
|
||||
General
|
||||
|
||||
VS 2013. The /Z7 flag is rumored to be somewhat broken in 2013.
|
||||
But it also sounds like there are explicit controls to name .PDB
|
||||
files associated with static archives. That would make this an
|
||||
ideal time to switch to /Zi or /ZI everywhere with explicit naming
|
||||
and bring all the .PDBs together.
|
||||
|
||||
The embedded browser technology (e.g. Qt4 with Webkit) is the
|
||||
800-pound gorilla in the viewer. When starting any major work,
|
||||
decide what changes you need here as those changes will propagate
|
||||
outwards forcing many other decisions (cf: /Zc:wchar_t- flag).
|
||||
|
||||
The current package structure (./include, ./lib/release,
|
||||
./lib/debug, etc.) really works against the conventions used by
|
||||
configure-like programs. I wasted a lot of time getting each
|
||||
library to work with our structure without having to go back to
|
||||
automake/autoconf. For Linux and Mac (and even for Windows), a
|
||||
structure like the following where each grouping is optional would
|
||||
probably save some work:
|
||||
|
||||
./debug/bin
|
||||
/include
|
||||
/lib
|
||||
./debug/shared/bin
|
||||
/include
|
||||
/lib
|
||||
./debug/static/bin
|
||||
/include
|
||||
/lib
|
||||
./release/bin
|
||||
/include
|
||||
/lib
|
||||
...
|
||||
|
||||
In zlib and openssl and in a few of the libraries that consume
|
||||
them, I experimented with packaging both static and shared
|
||||
libraries and then having the consumer library move the unwanted
|
||||
pieces out of the way to use the library type of choice (see
|
||||
restore_dylibs() and restore_sos() functions). It was a bit fussy
|
||||
and simplicity and clarity are the keys to maintaining libraries
|
||||
in the future.
|
||||
|
||||
But it did suggest another approach. The idea is that every build
|
||||
pre-stages inputs. Before anything is built, package pieces are
|
||||
copied or symlinked from the 'stage/packages' area to the
|
||||
'stage/input' area. Builds then proceed with a single set of
|
||||
-I/-L options for the dependencies. And products are built and
|
||||
installed in a similar output staging structure for the next
|
||||
consumer:
|
||||
|
||||
stage/packages/<package>/[above structure]
|
||||
stage/input/{bin,include,lib}
|
||||
stage/<package>/[above structure]
|
||||
|
||||
Next library project. I'd recommend working on the related set of
|
||||
libexpat, apr, aprutil, xmlrpc-epi. We know libexpat has some
|
||||
updates that should improve stability. Libapr consumes it and it
|
||||
could use some /Z7 flag work to get rid of some 1000's of PDB
|
||||
warnings and improve our debug symbols.
|
||||
|
||||
Miscellany to be sorted out:
|
||||
|
||||
* The packaging of libfreetype and libfontconfig on Linux.
|
||||
Determine what the right thing is, do it.
|
||||
|
||||
* Maybe do something with ICU4C. Qt5 will require it and a number
|
||||
of our packages can consume it typically replacing iconv or some
|
||||
other library. But it is a huge bolus of static data. It can be
|
||||
trimmed, but still.
|
||||
|
||||
* Revisit openssl. Package as a shared library? Replace with
|
||||
LibreSSL when available? Start using platform-supplied crypto?
|
||||
|
||||
|
|
@ -62,7 +62,7 @@ if (WINDOWS)
|
|||
add_definitions(
|
||||
/DLL_WINDOWS=1
|
||||
/DNOMINMAX
|
||||
/DDOM_DYNAMIC
|
||||
# /DDOM_DYNAMIC # For shared library colladadom
|
||||
/DUNICODE
|
||||
/D_UNICODE
|
||||
/GS
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ if (USESYSTEMLIBS)
|
|||
include(FindBoost)
|
||||
|
||||
set(BOOST_CONTEXT_LIBRARY boost_context-mt)
|
||||
set(BOOST_COROUTINE_LIBRARY boost_coroutine-mt)
|
||||
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
|
||||
set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt)
|
||||
set(BOOST_REGEX_LIBRARY boost_regex-mt)
|
||||
|
|
@ -17,10 +18,11 @@ if (USESYSTEMLIBS)
|
|||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(boost)
|
||||
set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
|
||||
set(BOOST_VERSION "1.52")
|
||||
set(BOOST_VERSION "1.55")
|
||||
|
||||
if (WINDOWS)
|
||||
if(MSVC80)
|
||||
# This should be obsolete at this point
|
||||
set(BOOST_CONTEXT_LIBRARY
|
||||
optimized libboost_context-vc80-mt-${BOOST_VERSION}
|
||||
debug libboost_context-vc80-mt-gd-${BOOST_VERSION})
|
||||
|
|
@ -47,6 +49,9 @@ else (USESYSTEMLIBS)
|
|||
set(BOOST_CONTEXT_LIBRARY
|
||||
optimized libboost_context-mt
|
||||
debug libboost_context-mt-gd)
|
||||
set(BOOST_COROUTINE_LIBRARY
|
||||
optimized libboost_coroutine-mt
|
||||
debug libboost_coroutine-mt-gd)
|
||||
set(BOOST_FILESYSTEM_LIBRARY
|
||||
optimized libboost_filesystem-mt
|
||||
debug libboost_filesystem-mt-gd)
|
||||
|
|
@ -70,6 +75,9 @@ else (USESYSTEMLIBS)
|
|||
set(BOOST_CONTEXT_LIBRARY
|
||||
optimized boost_context-mt
|
||||
debug boost_context-mt-d)
|
||||
set(BOOST_COROUTINE_LIBRARY
|
||||
optimized boost_coroutine-mt
|
||||
debug boost_coroutine-mt-d)
|
||||
set(BOOST_FILESYSTEM_LIBRARY
|
||||
optimized boost_filesystem-mt
|
||||
debug boost_filesystem-mt-d)
|
||||
|
|
@ -92,6 +100,9 @@ else (USESYSTEMLIBS)
|
|||
set(BOOST_CONTEXT_LIBRARY
|
||||
optimized boost_context-mt
|
||||
debug boost_context-mt-d)
|
||||
set(BOOST_COROUTINE_LIBRARY
|
||||
optimized boost_coroutine-mt
|
||||
debug boost_coroutine-mt-d)
|
||||
set(BOOST_FILESYSTEM_LIBRARY
|
||||
optimized boost_filesystem-mt
|
||||
debug boost_filesystem-mt-d)
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ if(WINDOWS)
|
|||
libapriconv-1.dll
|
||||
ssleay32.dll
|
||||
libeay32.dll
|
||||
libcollada14dom22-d.dll
|
||||
glod.dll
|
||||
libhunspell.dll
|
||||
)
|
||||
|
|
@ -53,7 +52,6 @@ if(WINDOWS)
|
|||
libapriconv-1.dll
|
||||
ssleay32.dll
|
||||
libeay32.dll
|
||||
libcollada14dom22.dll
|
||||
glod.dll
|
||||
libhunspell.dll
|
||||
)
|
||||
|
|
@ -213,15 +211,12 @@ elseif(DARWIN)
|
|||
libapr-1.dylib
|
||||
libaprutil-1.0.dylib
|
||||
libaprutil-1.dylib
|
||||
libexception_handler.dylib
|
||||
libexpat.1.5.2.dylib
|
||||
libexpat.dylib
|
||||
libGLOD.dylib
|
||||
libllqtwebkit.dylib
|
||||
libminizip.a
|
||||
libndofdev.dylib
|
||||
libhunspell-1.3.0.dylib
|
||||
libexception_handler.dylib
|
||||
libcollada14dom.dylib
|
||||
libndofdev.dylib
|
||||
)
|
||||
|
||||
if (FMODEX)
|
||||
|
|
@ -259,35 +254,21 @@ elseif(LINUX)
|
|||
libapr-1.so.0
|
||||
libaprutil-1.so.0
|
||||
libatk-1.0.so
|
||||
libboost_context-mt.so.${BOOST_VERSION}.0
|
||||
libboost_filesystem-mt.so.${BOOST_VERSION}.0
|
||||
libboost_program_options-mt.so.${BOOST_VERSION}.0
|
||||
libboost_regex-mt.so.${BOOST_VERSION}.0
|
||||
libboost_signals-mt.so.${BOOST_VERSION}.0
|
||||
libboost_system-mt.so.${BOOST_VERSION}.0
|
||||
libboost_thread-mt.so.${BOOST_VERSION}.0
|
||||
libcollada14dom.so
|
||||
libcrypto.so.1.0.0
|
||||
libdb-5.1.so
|
||||
libexpat.so
|
||||
libexpat.so.1
|
||||
libfreetype.so.6.6.2
|
||||
libfreetype.so.6
|
||||
libGLOD.so
|
||||
libgmock_main.so
|
||||
libgmock.so.0
|
||||
libgmodule-2.0.so
|
||||
libgobject-2.0.so
|
||||
libgtest_main.so
|
||||
libgtest.so.0
|
||||
libhunspell-1.3.so.0.0.0
|
||||
libminizip.so
|
||||
libopenal.so
|
||||
libopenjpeg.so
|
||||
libssl.so
|
||||
libuuid.so.16
|
||||
libuuid.so.16.0.22
|
||||
libssl.so.1.0.0
|
||||
libfontconfig.so.1.4.4
|
||||
libfontconfig.so.1.8.0
|
||||
libfontconfig.so.1
|
||||
)
|
||||
|
||||
if (USE_TCMALLOC)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ if (USESYSTEMLIBS)
|
|||
pkg_check_modules(FREETYPE REQUIRED freetype2)
|
||||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(freetype)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2/)
|
||||
set(FREETYPE_LIBRARIES freetype)
|
||||
endif (USESYSTEMLIBS)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
include(Prebuilt)
|
||||
include(Linking)
|
||||
|
||||
use_prebuilt_binary(googlemock)
|
||||
use_prebuilt_binary(gmock)
|
||||
|
||||
set(GOOGLEMOCK_INCLUDE_DIRS
|
||||
${LIBS_PREBUILT_DIR}/include)
|
||||
|
|
|
|||
|
|
@ -6,32 +6,40 @@ include(Boost)
|
|||
|
||||
use_prebuilt_binary(colladadom)
|
||||
use_prebuilt_binary(pcre)
|
||||
use_prebuilt_binary(libxml2)
|
||||
|
||||
set(LLPRIMITIVE_INCLUDE_DIRS
|
||||
${LIBS_OPEN_DIR}/llprimitive
|
||||
)
|
||||
if (WINDOWS)
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
debug llprimitive
|
||||
optimized llprimitive
|
||||
debug libcollada14dom22-d
|
||||
optimized libcollada14dom22
|
||||
debug libcollada14dom23-sd
|
||||
optimized libcollada14dom23-s
|
||||
libxml2_a
|
||||
debug pcrecppd
|
||||
optimized pcrecpp
|
||||
debug pcred
|
||||
optimized pcre
|
||||
${BOOST_SYSTEM_LIBRARIES}
|
||||
)
|
||||
elseif (LINUX)
|
||||
use_prebuilt_binary(libxml2)
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
elseif (DARWIN)
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
llprimitive
|
||||
collada14dom
|
||||
debug collada14dom-d
|
||||
optimized collada14dom
|
||||
minizip
|
||||
xml2
|
||||
pcrecpp
|
||||
pcre
|
||||
iconv # Required by libxml2
|
||||
)
|
||||
else (WINDOWS)
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
elseif (LINUX)
|
||||
set(LLPRIMITIVE_LIBRARIES
|
||||
llprimitive
|
||||
collada14dom
|
||||
debug collada14dom-d
|
||||
optimized collada14dom
|
||||
minizip
|
||||
xml2
|
||||
pcrecpp
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")
|
|||
include(Variables)
|
||||
|
||||
set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
|
||||
set(ARCH_PREBUILT_DIRS_PLUGINS ${AUTOBUILD_INSTALL_DIR}/plugins)
|
||||
set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
|
||||
set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
|
||||
if (WINDOWS)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ set(OpenSSL_FIND_REQUIRED ON)
|
|||
if (USESYSTEMLIBS)
|
||||
include(FindOpenSSL)
|
||||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(openSSL)
|
||||
use_prebuilt_binary(openssl)
|
||||
if (WINDOWS)
|
||||
set(OPENSSL_LIBRARIES ssleay32 libeay32)
|
||||
else (WINDOWS)
|
||||
|
|
@ -17,7 +17,7 @@ else (USESYSTEMLIBS)
|
|||
endif (USESYSTEMLIBS)
|
||||
|
||||
if (LINUX)
|
||||
set(CRYPTO_LIBRARIES crypto)
|
||||
set(CRYPTO_LIBRARIES crypto dl)
|
||||
elseif (DARWIN)
|
||||
set(CRYPTO_LIBRARIES crypto)
|
||||
endif (LINUX)
|
||||
|
|
|
|||
|
|
@ -9,13 +9,26 @@ if (USESYSTEMLIBS)
|
|||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(libpng)
|
||||
if (WINDOWS)
|
||||
set(PNG_LIBRARIES libpng15)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15)
|
||||
set(PNG_LIBRARIES libpng16)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
|
||||
elseif(DARWIN)
|
||||
set(PNG_LIBRARIES png15)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15)
|
||||
set(PNG_LIBRARIES png16)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
|
||||
else()
|
||||
set(PNG_LIBRARIES png15)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng15)
|
||||
#
|
||||
# When we have updated static libraries in competition with older
|
||||
# shared libraries and we want the former to win, we need to do some
|
||||
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
|
||||
# and will pull in the entire archive to the binary giving it
|
||||
# priority in symbol resolution. Beware of cmake moving the
|
||||
# achive load itself to another place on the link command line. If
|
||||
# that happens, you can try something like -Wl,-lpng16 here to hide
|
||||
# the archive. Also be aware that the linker will not tolerate a
|
||||
# second whole-archive load of the archive. See viewer's
|
||||
# CMakeLists.txt for more information.
|
||||
#
|
||||
set(PNG_PRELOAD_ARCHIVES -Wl,--whole-archive png16 -Wl,--no-whole-archive)
|
||||
set(PNG_LIBRARIES png16)
|
||||
set(PNG_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/libpng16)
|
||||
endif()
|
||||
endif (USESYSTEMLIBS)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
# -*- cmake -*-
|
||||
include(Linking)
|
||||
include(Prebuilt)
|
||||
include(OpenSSL)
|
||||
|
||||
if (USESYSTEMLIBS)
|
||||
# The minimal version, 4.4.3, is rather arbitrary: it's the version in Debian/Lenny.
|
||||
|
|
@ -36,27 +37,32 @@ endif (USESYSTEMLIBS)
|
|||
|
||||
if (WINDOWS)
|
||||
set(WEBKIT_PLUGIN_LIBRARIES
|
||||
debug llqtwebkitd
|
||||
debug QtWebKitd4
|
||||
debug QtOpenGLd4
|
||||
debug QtNetworkd4
|
||||
debug QtGuid4
|
||||
debug QtCored4
|
||||
debug qtmaind
|
||||
optimized llqtwebkit
|
||||
optimized QtWebKit4
|
||||
optimized QtOpenGL4
|
||||
optimized QtNetwork4
|
||||
optimized QtGui4
|
||||
optimized QtCore4
|
||||
optimized qtmain
|
||||
debug llqtwebkitd
|
||||
debug QtWebKitd4
|
||||
debug QtOpenGLd4
|
||||
debug QtNetworkd4
|
||||
debug QtGuid4
|
||||
debug QtCored4
|
||||
debug qtmaind
|
||||
optimized llqtwebkit
|
||||
optimized QtWebKit4
|
||||
optimized QtOpenGL4
|
||||
optimized QtNetwork4
|
||||
optimized QtGui4
|
||||
optimized QtCore4
|
||||
optimized qtmain
|
||||
)
|
||||
elseif (DARWIN)
|
||||
set(WEBKIT_PLUGIN_LIBRARIES
|
||||
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
|
||||
debug ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
|
||||
)
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.a
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libQtWebKit.4.dylib
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libQtOpenGL.4.dylib
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libQtNetwork.4.dylib
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libQtGui.4.dylib
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/libQtCore.4.dylib
|
||||
)
|
||||
elseif (LINUX)
|
||||
# *HUH: What does this do?
|
||||
set(WEBKIT_PLUGIN_LIBRARIES ${LLQTWEBKIT_LIBRARY} ${QT_LIBRARIES} ${QT_PLUGIN_LIBRARIES})
|
||||
set(WEBKIT_PLUGIN_LIBRARIES
|
||||
llqtwebkit
|
||||
|
|
@ -68,9 +74,10 @@ elseif (LINUX)
|
|||
QtWebKit
|
||||
QtOpenGL
|
||||
QtNetwork
|
||||
${OPENSSL_LIBRARIES}
|
||||
QtGui
|
||||
QtCore
|
||||
jscore
|
||||
# jscore
|
||||
# qgif
|
||||
# qjpeg
|
||||
# jpeg
|
||||
|
|
|
|||
|
|
@ -13,10 +13,23 @@ else (USESYSTEMLIBS)
|
|||
set(ZLIB_LIBRARIES
|
||||
debug zlibd
|
||||
optimized zlib)
|
||||
else (WINDOWS)
|
||||
elseif (LINUX)
|
||||
#
|
||||
# When we have updated static libraries in competition with older
|
||||
# shared libraries and we want the former to win, we need to do some
|
||||
# extra work. The *_PRELOAD_ARCHIVES settings are invoked early
|
||||
# and will pull in the entire archive to the binary giving it
|
||||
# priority in symbol resolution. Beware of cmake moving the
|
||||
# achive load itself to another place on the link command line. If
|
||||
# that happens, you can try something like -Wl,-lz here to hide
|
||||
# the archive. Also be aware that the linker will not tolerate a
|
||||
# second whole-archive load of the archive. See viewer's
|
||||
# CMakeLists.txt for more information.
|
||||
#
|
||||
set(ZLIB_PRELOAD_ARCHIVES -Wl,--whole-archive z -Wl,--no-whole-archive)
|
||||
set(ZLIB_LIBRARIES z)
|
||||
elseif (DARWIN)
|
||||
set(ZLIB_LIBRARIES z)
|
||||
endif (WINDOWS)
|
||||
if (WINDOWS OR LINUX)
|
||||
set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib)
|
||||
endif (WINDOWS OR LINUX)
|
||||
set(ZLIB_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/zlib)
|
||||
endif (USESYSTEMLIBS)
|
||||
|
|
|
|||
|
|
@ -1 +1,2 @@
|
|||
2014-02-25 10:34
|
||||
|
||||
|
|
|
|||
|
|
@ -301,7 +301,7 @@ if (LL_TESTS)
|
|||
LL_ADD_INTEGRATION_TEST(llunits "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs};${BOOST_CONTEXT_LIBRARY}")
|
||||
LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs};${BOOST_CONTEXT_LIBRARY};${BOOST_COROUTINE_LIBRARY};${BOOST_SYSTEM_LIBRARY}")
|
||||
LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")
|
||||
LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}")
|
||||
|
|
|
|||
|
|
@ -257,7 +257,8 @@ inline void ll_memcpy_nonaliased_aligned_16(char* __restrict dst, const char* __
|
|||
assert((bytes % sizeof(F32))== 0);
|
||||
ll_assert_aligned(src,16);
|
||||
ll_assert_aligned(dst,16);
|
||||
assert((src < dst) ? ((src + bytes) < dst) : ((dst + bytes) < src));
|
||||
|
||||
assert((src < dst) ? ((src + bytes) <= dst) : ((dst + bytes) <= src));
|
||||
assert(bytes%16==0);
|
||||
|
||||
char* end = dst + bytes;
|
||||
|
|
|
|||
|
|
@ -1260,9 +1260,13 @@ bool LLTransferTarget::addDelayedPacket(
|
|||
size);
|
||||
|
||||
#ifdef _DEBUG
|
||||
if (mDelayedPacketMap.find(packet_id) != mDelayedPacketMap.end())
|
||||
transfer_packet_map::iterator iter = mDelayedPacketMap.find(packet_id);
|
||||
if (iter != mDelayedPacketMap.end())
|
||||
{
|
||||
LL_ERRS() << "Packet ALREADY in delayed packet map!" << LL_ENDL;
|
||||
if (!(iter->second->mSize == size) && !(iter->second->mDatap == datap))
|
||||
{
|
||||
LL_ERRS() << "Packet ALREADY in delayed packet map!" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -121,12 +121,12 @@ if (DARWIN)
|
|||
)
|
||||
|
||||
# copy the webkit dylib to the build directory
|
||||
add_custom_command(
|
||||
TARGET media_plugin_webkit POST_BUILD
|
||||
# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/
|
||||
DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
|
||||
)
|
||||
# add_custom_command(
|
||||
# TARGET media_plugin_webkit POST_BUILD
|
||||
# # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib
|
||||
# COMMAND ${CMAKE_COMMAND} -E copy ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/
|
||||
# DEPENDS media_plugin_webkit ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
|
||||
# )
|
||||
|
||||
endif (DARWIN)
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ include(VisualLeakDetector)
|
|||
include(GLOD)
|
||||
include(CMakeCopyIfDifferent)
|
||||
include(LLAppearance)
|
||||
include(PNG)
|
||||
include(ZLIB)
|
||||
|
||||
if (NOT HAVOK_TPV)
|
||||
# When using HAVOK_TPV, the library is precompiled, so no need for this
|
||||
|
|
@ -1891,13 +1893,37 @@ else (WINDOWS)
|
|||
)
|
||||
endif (WINDOWS)
|
||||
|
||||
# *NOTE - this list is very sensitive to ordering, test carefully on all
|
||||
# *NOTE: - this list is very sensitive to ordering, test carefully on all
|
||||
# platforms if you change the releative order of the entries here.
|
||||
# In particular, cmake 2.6.4 (when buidling with linux/makefile generators)
|
||||
# appears to sometimes de-duplicate redundantly listed dependencies improperly.
|
||||
# To work around this, higher level modules should be listed before the modules
|
||||
# that they depend upon. -brad
|
||||
#
|
||||
# *NOTE: On mixing system shared libraries and updated static archives.
|
||||
# We use a number of libraries that have an existence as system libraries,
|
||||
# internal-use libraries and applications libraries. The most-referenced
|
||||
# one of these being libz where you can find four or more versions in play
|
||||
# at once. On Linux, libz can be found at link and run time via a number
|
||||
# of paths:
|
||||
#
|
||||
# => -lfreetype
|
||||
# => libz.so.1 (on install machine, not build)
|
||||
# => -lSDL
|
||||
# => libz.so.1 (on install machine, not build)
|
||||
# => -lgdk-x11-2.0
|
||||
# => libz.so.1
|
||||
# => -lz
|
||||
#
|
||||
# We generally want the newest version of the library to provide all symbol
|
||||
# resolution. To that end, when using static archives, the *_PRELOAD_ARCHIVES
|
||||
# variables, PNG_PRELOAD_ARCHIVES and ZLIB_PRELOAD_ARCHIVES, get the archives
|
||||
# dumped into the target binary and runtime lookup will find the most
|
||||
# modern version.
|
||||
|
||||
target_link_libraries(${VIEWER_BINARY_NAME}
|
||||
${PNG_PRELOAD_ARCHIVES}
|
||||
${ZLIB_PRELOAD_ARCHIVES}
|
||||
${UPDATER_LIBRARIES}
|
||||
${GOOGLE_PERFTOOLS_LIBRARIES}
|
||||
${LLAUDIO_LIBRARIES}
|
||||
|
|
@ -1924,6 +1950,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
|
|||
${BOOST_PROGRAM_OPTIONS_LIBRARY}
|
||||
${BOOST_REGEX_LIBRARY}
|
||||
${BOOST_CONTEXT_LIBRARY}
|
||||
${BOOST_COROUTINE_LIBRARY}
|
||||
${DBUSGLIB_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
${FMODWRAPPER_LIBRARY} # must come after LLAudio
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.7.14
|
||||
3.7.15
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 1020 B |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 956 B |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1009 B |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 956 B |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 150 KiB |
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* $LicenseInfo:firstyear=2000&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2012-2013, Linden Research, Inc.
|
||||
* Copyright (C) 2012-2014, 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
|
||||
|
|
@ -244,6 +244,13 @@ LLTrace::EventStatHandle<F64Milliseconds > LLTextureFetch::sCacheReadLatency("te
|
|||
static const S32 HTTP_REQUESTS_IN_QUEUE_HIGH_WATER = 40; // Maximum requests to have active in HTTP
|
||||
static const S32 HTTP_REQUESTS_IN_QUEUE_LOW_WATER = 20; // Active level at which to refill
|
||||
|
||||
// BUG-3323/SH-4375
|
||||
// *NOTE: This is a heuristic value. Texture fetches have a habit of using a
|
||||
// value of 32MB to indicate 'get the rest of the image'. Certain ISPs and
|
||||
// network equipment get confused when they see this in a Range: header. So,
|
||||
// if the request end is beyond this value, we issue an open-ended Range:
|
||||
// request (e.g. 'Range: <start>-') which seems to fix the problem.
|
||||
static const S32 HTTP_REQUESTS_RANGE_END_MAX = 20000000;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
@ -266,6 +273,9 @@ static const char* e_state_name[] =
|
|||
"DONE"
|
||||
};
|
||||
|
||||
// Log scope
|
||||
static const char * const LOG_TXT = "Texture";
|
||||
|
||||
class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
|
||||
|
||||
{
|
||||
|
|
@ -926,7 +936,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
|||
|
||||
calcWorkPriority();
|
||||
mType = host.isOk() ? LLImageBase::TYPE_AVATAR_BAKE : LLImageBase::TYPE_NORMAL;
|
||||
// LL_INFOS() << "Create: " << mID << " mHost:" << host << " Discard=" << discard << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << "Create: " << mID << " mHost:" << host << " Discard=" << discard << LL_ENDL;
|
||||
if (!mFetcher->mDebugPause)
|
||||
{
|
||||
U32 work_priority = mWorkPriority | LLWorkerThread::PRIORITY_HIGH;
|
||||
|
|
@ -937,7 +947,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
|||
|
||||
LLTextureFetchWorker::~LLTextureFetchWorker()
|
||||
{
|
||||
// LL_INFOS() << "Destroy: " << mID
|
||||
// LL_INFOS(LOG_TXT) << "Destroy: " << mID
|
||||
// << " Decoded=" << mDecodedDiscard
|
||||
// << " Requested=" << mRequestedDiscard
|
||||
// << " Desired=" << mDesiredDiscard << LL_ENDL;
|
||||
|
|
@ -1001,7 +1011,7 @@ void LLTextureFetchWorker::setupPacketData()
|
|||
mFirstPacket = (data_size - FIRST_PACKET_SIZE) / MAX_IMG_PACKET_SIZE + 1;
|
||||
if (FIRST_PACKET_SIZE + (mFirstPacket-1) * MAX_IMG_PACKET_SIZE != data_size)
|
||||
{
|
||||
LL_WARNS() << "Bad CACHED TEXTURE size: " << data_size << " removing." << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Bad CACHED TEXTURE size: " << data_size << " removing." << LL_ENDL;
|
||||
removeFromCache();
|
||||
resetFormattedData();
|
||||
clearPackets();
|
||||
|
|
@ -1124,14 +1134,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
|
||||
{
|
||||
LL_DEBUGS("Texture") << mID << " abort: mImagePriority < F_ALMOST_ZERO" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " abort: mImagePriority < F_ALMOST_ZERO" << LL_ENDL;
|
||||
return true; // abort
|
||||
}
|
||||
}
|
||||
if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
|
||||
{
|
||||
//nowhere to get data, abort.
|
||||
LL_WARNS("Texture") << mID << " abort, nowhere to get data" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " abort, nowhere to get data" << LL_ENDL;
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
|
@ -1177,8 +1187,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
setState(LOAD_FROM_TEXTURE_CACHE);
|
||||
mInCache = FALSE;
|
||||
mDesiredSize = llmax(mDesiredSize, TEXTURE_CACHE_ENTRY_SIZE); // min desired size is TEXTURE_CACHE_ENTRY_SIZE
|
||||
LL_DEBUGS("Texture") << mID << ": Priority: " << llformat("%8.0f",mImagePriority)
|
||||
<< " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Priority: " << llformat("%8.0f",mImagePriority)
|
||||
<< " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
|
||||
|
||||
// fall through
|
||||
}
|
||||
|
|
@ -1246,7 +1256,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
//
|
||||
//This should never happen
|
||||
//
|
||||
LL_DEBUGS("Texture") << mID << " this should never happen" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " this should never happen" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1267,15 +1277,15 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
mLoadedDiscard = mDesiredDiscard;
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
mInCache = TRUE;
|
||||
mWriteToCacheState = NOT_WRITE ;
|
||||
LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
|
||||
<< " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight())
|
||||
<< " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
|
||||
<< " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight())
|
||||
<< " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
|
||||
record(LLTextureFetch::sCacheHitRate, LLUnits::Ratio::fromValue(1));
|
||||
}
|
||||
else
|
||||
|
|
@ -1283,13 +1293,13 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
if (mUrl.compare(0, 7, "file://") == 0)
|
||||
{
|
||||
// failed to load local file, we're done.
|
||||
LL_WARNS("Texture") << mID << ": abort, failed to load local file " << mUrl << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << ": abort, failed to load local file " << mUrl << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
// need more data
|
||||
else
|
||||
{
|
||||
LL_DEBUGS("Texture") << mID << ": Not in Cache" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Not in Cache" << LL_ENDL;
|
||||
setState(LOAD_FROM_NETWORK);
|
||||
}
|
||||
|
||||
|
|
@ -1306,11 +1316,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
if (wait_seconds <= 0.0)
|
||||
{
|
||||
LL_INFOS() << mID << " retrying now" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << mID << " retrying now" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
//LL_INFOS() << mID << " waiting to retry for " << wait_seconds << " seconds" << LL_ENDL;
|
||||
//LL_INFOS(LOG_TXT) << mID << " waiting to retry for " << wait_seconds << " seconds" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -1333,7 +1343,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
if (mFTType != FTT_DEFAULT)
|
||||
{
|
||||
LL_WARNS() << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL;
|
||||
}
|
||||
setUrl(http_url + "/?texture_id=" + mID.asString().c_str());
|
||||
LL_DEBUGS("Texture") << "Texture URL " << mUrl << LL_ENDL;
|
||||
|
|
@ -1348,7 +1358,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
else
|
||||
{
|
||||
// This will happen if not logged in or if a region deoes not have HTTP Texture enabled
|
||||
//LL_WARNS() << "Region not found for host: " << mHost << LL_ENDL;
|
||||
//LL_WARNS(LOG_TXT) << "Region not found for host: " << mHost << LL_ENDL;
|
||||
LL_DEBUGS("Texture") << "Texture not available via HTTP: no region " << mUrl << LL_ENDL;
|
||||
mCanUseHTTP = false;
|
||||
}
|
||||
|
|
@ -1403,20 +1413,20 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
}
|
||||
if (processSimulatorPackets())
|
||||
{
|
||||
LL_DEBUGS("Texture") << mID << ": Loaded from Sim. Bytes: " << mFormattedImage->getDataSize() << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Loaded from Sim. Bytes: " << mFormattedImage->getDataSize() << LL_ENDL;
|
||||
mFetcher->removeFromNetworkQueue(this, false);
|
||||
if (mFormattedImage.isNull() || !mFormattedImage->getDataSize())
|
||||
{
|
||||
// processSimulatorPackets() failed
|
||||
// LL_WARNS() << "processSimulatorPackets() failed to load buffer" << LL_ENDL;
|
||||
LL_WARNS("Texture") << mID << " processSimulatorPackets() failed to load buffer" << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "processSimulatorPackets() failed to load buffer" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " processSimulatorPackets() failed to load buffer" << LL_ENDL;
|
||||
return true; // failed
|
||||
}
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
mWriteToCacheState = SHOULD_WRITE;
|
||||
|
|
@ -1466,7 +1476,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
if (! mCanUseHTTP)
|
||||
{
|
||||
releaseHttpSemaphore();
|
||||
LL_WARNS("Texture") << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " abort: SEND_HTTP_REQ but !mCanUseHTTP" << LL_ENDL;
|
||||
return true; // abort
|
||||
}
|
||||
|
||||
|
|
@ -1485,8 +1495,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
releaseHttpSemaphore();
|
||||
|
|
@ -1495,7 +1505,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
else
|
||||
{
|
||||
releaseHttpSemaphore();
|
||||
LL_WARNS("Texture") << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " SEND_HTTP_REQ abort: cur_size " << cur_size << " <=0" << LL_ENDL;
|
||||
return true; // abort.
|
||||
}
|
||||
}
|
||||
|
|
@ -1526,10 +1536,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
mLoaded = FALSE;
|
||||
mGetStatus = LLCore::HttpStatus();
|
||||
mGetReason.clear();
|
||||
LL_DEBUGS("Texture") << "HTTP GET: " << mID << " Offset: " << mRequestedOffset
|
||||
<< " Bytes: " << mRequestedSize
|
||||
<< " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth
|
||||
<< LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "HTTP GET: " << mID << " Offset: " << mRequestedOffset
|
||||
<< " Bytes: " << mRequestedSize
|
||||
<< " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth
|
||||
<< LL_ENDL;
|
||||
|
||||
// Will call callbackHttpGet when curl request completes
|
||||
// Only server bake images use the returned headers currently, for getting retry-after field.
|
||||
|
|
@ -1538,14 +1548,16 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
mWorkPriority,
|
||||
mUrl,
|
||||
mRequestedOffset,
|
||||
mRequestedSize,
|
||||
(mRequestedOffset + mRequestedSize) > HTTP_REQUESTS_RANGE_END_MAX
|
||||
? 0
|
||||
: mRequestedSize,
|
||||
options,
|
||||
mFetcher->mHttpHeaders,
|
||||
this);
|
||||
}
|
||||
if (LLCORE_HTTP_HANDLE_INVALID == mHttpHandle)
|
||||
{
|
||||
LL_WARNS() << "HTTP GET request failed for " << mID << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "HTTP GET request failed for " << mID << LL_ENDL;
|
||||
resetFormattedData();
|
||||
releaseHttpSemaphore();
|
||||
return true; // failed
|
||||
|
|
@ -1573,7 +1585,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
if (mFTType != FTT_MAP_TILE)
|
||||
{
|
||||
LL_WARNS() << "Texture missing from server (404): " << mUrl << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Texture missing from server (404): " << mUrl << LL_ENDL;
|
||||
}
|
||||
|
||||
if(mWriteToCacheState == NOT_WRITE) //map tiles or server bakes
|
||||
|
|
@ -1582,7 +1594,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
releaseHttpSemaphore();
|
||||
if (mFTType != FTT_MAP_TILE)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " abort: WAIT_HTTP_REQ not found" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " abort: WAIT_HTTP_REQ not found" << LL_ENDL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1600,11 +1612,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
}
|
||||
else if (http_service_unavail == mGetStatus)
|
||||
{
|
||||
LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL;
|
||||
LL_INFOS() << "503: HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus.toHex()
|
||||
<< " Reason: '" << mGetReason << "'"
|
||||
<< LL_ENDL;
|
||||
LL_INFOS_ONCE(LOG_TXT) << "Texture server busy (503): " << mUrl << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "503: HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus.toHex()
|
||||
<< " Reason: '" << mGetReason << "'"
|
||||
<< LL_ENDL;
|
||||
}
|
||||
else if (http_not_sat == mGetStatus)
|
||||
{
|
||||
|
|
@ -1613,10 +1625,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus.toTerseString()
|
||||
<< " Reason: '" << mGetReason << "'"
|
||||
<< LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus.toTerseString()
|
||||
<< " Reason: '" << mGetReason << "'"
|
||||
<< LL_ENDL;
|
||||
}
|
||||
|
||||
if (mFTType != FTT_SERVER_BAKE)
|
||||
|
|
@ -1630,8 +1642,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
releaseHttpSemaphore();
|
||||
|
|
@ -1642,7 +1654,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
resetFormattedData();
|
||||
setState(DONE);
|
||||
releaseHttpSemaphore();
|
||||
LL_WARNS("Texture") << mID << " abort: fail harder" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " abort: fail harder" << LL_ENDL;
|
||||
return true; // failed
|
||||
}
|
||||
|
||||
|
|
@ -1666,7 +1678,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
|
||||
// abort.
|
||||
setState(DONE);
|
||||
LL_WARNS("Texture") << mID << " abort: no data received" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " abort: no data received" << LL_ENDL;
|
||||
releaseHttpSemaphore();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1682,8 +1694,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
// Get back into alignment.
|
||||
if (mHttpReplyOffset > cur_size)
|
||||
{
|
||||
LL_WARNS("Texture") << "Partial HTTP response produces break in image data for texture "
|
||||
<< mID << ". Aborting load." << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Partial HTTP response produces break in image data for texture "
|
||||
<< mID << ". Aborting load." << LL_ENDL;
|
||||
setState(DONE);
|
||||
releaseHttpSemaphore();
|
||||
return true;
|
||||
|
|
@ -1734,8 +1746,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
mLoadedDiscard = mRequestedDiscard;
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS("Texture") << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " mLoadedDiscard is " << mLoadedDiscard
|
||||
<< ", should be >=0" << LL_ENDL;
|
||||
}
|
||||
setState(DECODE_IMAGE);
|
||||
if (mWriteToCacheState != NOT_WRITE)
|
||||
|
|
@ -1776,26 +1788,26 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
// We aborted, don't decode
|
||||
setState(DONE);
|
||||
LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: desired discard " << mDesiredDiscard << "<0" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: desired discard " << mDesiredDiscard << "<0" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (mFormattedImage->getDataSize() <= 0)
|
||||
{
|
||||
LL_WARNS() << "Decode entered with invalid mFormattedImage. ID = " << mID << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Decode entered with invalid mFormattedImage. ID = " << mID << LL_ENDL;
|
||||
|
||||
//abort, don't decode
|
||||
setState(DONE);
|
||||
LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: (mFormattedImage->getDataSize() <= 0)" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: (mFormattedImage->getDataSize() <= 0)" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
if (mLoadedDiscard < 0)
|
||||
{
|
||||
LL_WARNS() << "Decode entered with invalid mLoadedDiscard. ID = " << mID << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Decode entered with invalid mLoadedDiscard. ID = " << mID << LL_ENDL;
|
||||
|
||||
//abort, don't decode
|
||||
setState(DONE);
|
||||
LL_DEBUGS("Texture") << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " DECODE_IMAGE abort: mLoadedDiscard < 0" << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -1806,8 +1818,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
|
||||
mDecoded = FALSE;
|
||||
setState(DECODE_IMAGE_UPDATE);
|
||||
LL_DEBUGS("Texture") << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
|
||||
<< " All Data: " << mHaveAllData << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
|
||||
<< " All Data: " << mHaveAllData << LL_ENDL;
|
||||
mDecodeHandle = mFetcher->mImageDecodeThread->decodeImage(mFormattedImage, image_priority, discard, mNeedsAux,
|
||||
new DecodeResponder(mFetcher, mID, this));
|
||||
// fall though
|
||||
|
|
@ -1824,11 +1836,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
|
||||
if (mDecodedDiscard < 0)
|
||||
{
|
||||
LL_DEBUGS("Texture") << mID << ": Failed to Decode." << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Failed to Decode." << LL_ENDL;
|
||||
if (mCachedSize > 0 && !mInLocalCache && mRetryAttempt == 0)
|
||||
{
|
||||
// Cache file should be deleted, try again
|
||||
LL_WARNS() << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL;
|
||||
llassert_always(mDecodeHandle == 0);
|
||||
mFormattedImage = NULL;
|
||||
++mRetryAttempt;
|
||||
|
|
@ -1838,15 +1850,15 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
}
|
||||
else
|
||||
{
|
||||
// LL_WARNS() << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << LL_ENDL;
|
||||
setState(DONE); // failed
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
llassert_always(mRawImage.notNull());
|
||||
LL_DEBUGS("Texture") << mID << ": Decoded. Discard: " << mDecodedDiscard
|
||||
<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Decoded. Discard: " << mDecodedDiscard
|
||||
<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
setState(WRITE_TO_CACHE);
|
||||
}
|
||||
|
|
@ -1918,9 +1930,9 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
{
|
||||
// More data was requested, return to INIT
|
||||
setState(INIT);
|
||||
LL_DEBUGS("Texture") << mID << " more data requested, returning to INIT: "
|
||||
<< " mDecodedDiscard " << mDecodedDiscard << ">= 0 && mDesiredDiscard " << mDesiredDiscard
|
||||
<< "<" << " mDecodedDiscard " << mDecodedDiscard << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << " more data requested, returning to INIT: "
|
||||
<< " mDecodedDiscard " << mDecodedDiscard << ">= 0 && mDesiredDiscard " << mDesiredDiscard
|
||||
<< "<" << " mDecodedDiscard " << mDecodedDiscard << LL_ENDL;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1960,8 +1972,8 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
|
|||
F32 rate = fake_failure_rate;
|
||||
if (mFTType == FTT_SERVER_BAKE && (fake_failure_rate > 0.0) && (rand_val < fake_failure_rate))
|
||||
{
|
||||
LL_WARNS() << mID << " for debugging, setting fake failure status for texture " << mID
|
||||
<< " (rand was " << rand_val << "/" << rate << ")" << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << mID << " for debugging, setting fake failure status for texture " << mID
|
||||
<< " (rand was " << rand_val << "/" << rate << ")" << LL_ENDL;
|
||||
response->setStatus(LLCore::HttpStatus(503));
|
||||
}
|
||||
bool success = true;
|
||||
|
|
@ -1969,12 +1981,12 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
|
|||
LLCore::HttpStatus status(response->getStatus());
|
||||
if (!status && (mFTType == FTT_SERVER_BAKE))
|
||||
{
|
||||
LL_INFOS() << mID << " state " << e_state_name[mState] << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << mID << " state " << e_state_name[mState] << LL_ENDL;
|
||||
mFetchRetryPolicy.onFailure(response);
|
||||
F32 retry_after;
|
||||
if (mFetchRetryPolicy.shouldRetry(retry_after))
|
||||
{
|
||||
LL_INFOS() << mID << " will retry after " << retry_after << " seconds, resetting state to LOAD_FROM_NETWORK" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << mID << " will retry after " << retry_after << " seconds, resetting state to LOAD_FROM_NETWORK" << LL_ENDL;
|
||||
mFetcher->removeFromHTTPQueue(mID, S32Bytes(0));
|
||||
std::string reason(status.toString());
|
||||
setGetStatus(status, reason);
|
||||
|
|
@ -1984,7 +1996,7 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << mID << " will not retry" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << mID << " will not retry" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1992,30 +2004,20 @@ void LLTextureFetchWorker::onCompleted(LLCore::HttpHandle handle, LLCore::HttpRe
|
|||
mFetchRetryPolicy.onSuccess();
|
||||
}
|
||||
|
||||
LL_DEBUGS("Texture") << "HTTP COMPLETE: " << mID
|
||||
<< " status: " << status.toTerseString()
|
||||
<< " '" << status.toString() << "'"
|
||||
<< LL_ENDL;
|
||||
|
||||
// unsigned int offset(0), length(0), full_length(0);
|
||||
// response->getRange(&offset, &length, &full_length);
|
||||
// LL_WARNS() << "HTTP COMPLETE: " << mID << " handle: " << handle
|
||||
// << " status: " << status.toULong() << " '" << status.toString() << "'"
|
||||
// << " req offset: " << mRequestedOffset << " req length: " << mRequestedSize
|
||||
// << " offset: " << offset << " length: " << length
|
||||
// << LL_ENDL;
|
||||
|
||||
std::string reason(status.toString());
|
||||
setGetStatus(status, reason);
|
||||
LL_DEBUGS(LOG_TXT) << "HTTP COMPLETE: " << mID
|
||||
<< " status: " << status.toTerseString()
|
||||
<< " '" << reason << "'"
|
||||
<< LL_ENDL;
|
||||
|
||||
if (! status)
|
||||
{
|
||||
success = false;
|
||||
if (mFTType != FTT_MAP_TILE) // missing map tiles are normal, don't complain about them.
|
||||
{
|
||||
std::string reason(status.toString());
|
||||
setGetStatus(status, reason);
|
||||
LL_WARNS() << "CURL GET FAILED, status: " << status.toTerseString()
|
||||
<< " reason: " << reason << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "CURL GET FAILED, status: " << status.toTerseString()
|
||||
<< " reason: " << reason << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -2226,13 +2228,13 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
|
|||
|
||||
if (mState != WAIT_HTTP_REQ)
|
||||
{
|
||||
LL_WARNS() << "callbackHttpGet for unrequested fetch worker: " << mID
|
||||
<< " req=" << mSentRequest << " state= " << mState << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "callbackHttpGet for unrequested fetch worker: " << mID
|
||||
<< " req=" << mSentRequest << " state= " << mState << LL_ENDL;
|
||||
return data_size;
|
||||
}
|
||||
if (mLoaded)
|
||||
{
|
||||
LL_WARNS() << "Duplicate callback for " << mID.asString() << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Duplicate callback for " << mID.asString() << LL_ENDL;
|
||||
return data_size ; // ignore duplicate callback
|
||||
}
|
||||
if (success)
|
||||
|
|
@ -2241,7 +2243,7 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
|
|||
LLCore::BufferArray * body(response->getBody());
|
||||
data_size = body ? body->size() : 0;
|
||||
|
||||
LL_DEBUGS("Texture") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;
|
||||
if (data_size > 0)
|
||||
{
|
||||
LLViewerStatsRecorder::instance().textureFetch(data_size);
|
||||
|
|
@ -2281,10 +2283,10 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
|
|||
// response body becomes the entire dataset.
|
||||
if (data_size <= mRequestedOffset)
|
||||
{
|
||||
LL_WARNS("Texture") << "Fetched entire texture " << mID
|
||||
<< " when it was expected to be marked complete. mImageSize: "
|
||||
<< mFileSize << " datasize: " << mFormattedImage->getDataSize()
|
||||
<< LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Fetched entire texture " << mID
|
||||
<< " when it was expected to be marked complete. mImageSize: "
|
||||
<< mFileSize << " datasize: " << mFormattedImage->getDataSize()
|
||||
<< LL_ENDL;
|
||||
}
|
||||
mHaveAllData = TRUE;
|
||||
llassert_always(mDecodeHandle == 0);
|
||||
|
|
@ -2297,7 +2299,7 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
|
|||
else if (data_size > mRequestedSize)
|
||||
{
|
||||
// *TODO: This shouldn't be happening any more (REALLY don't expect this anymore)
|
||||
LL_WARNS() << "data_size = " << data_size << " > requested: " << mRequestedSize << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "data_size = " << data_size << " > requested: " << mRequestedSize << LL_ENDL;
|
||||
mHaveAllData = TRUE;
|
||||
llassert_always(mDecodeHandle == 0);
|
||||
mFormattedImage = NULL; // discard any previous data we had
|
||||
|
|
@ -2332,7 +2334,7 @@ void LLTextureFetchWorker::callbackCacheRead(bool success, LLImageFormatted* ima
|
|||
LLMutexLock lock(&mWorkMutex); // +Mw
|
||||
if (mState != LOAD_FROM_TEXTURE_CACHE)
|
||||
{
|
||||
// LL_WARNS() << "Read callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Read callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
if (success)
|
||||
|
|
@ -2357,7 +2359,7 @@ void LLTextureFetchWorker::callbackCacheWrite(bool success)
|
|||
LLMutexLock lock(&mWorkMutex); // +Mw
|
||||
if (mState != WAIT_ON_WRITE)
|
||||
{
|
||||
// LL_WARNS() << "Write callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Write callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
mWritten = TRUE;
|
||||
|
|
@ -2376,7 +2378,7 @@ void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImag
|
|||
}
|
||||
if (mState != DECODE_IMAGE_UPDATE)
|
||||
{
|
||||
// LL_WARNS() << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Decode callback for " << mID << " with state = " << mState << LL_ENDL;
|
||||
mDecodeHandle = 0;
|
||||
return;
|
||||
}
|
||||
|
|
@ -2389,17 +2391,17 @@ void LLTextureFetchWorker::callbackDecoded(bool success, LLImageRaw* raw, LLImag
|
|||
mRawImage = raw;
|
||||
mAuxImage = aux;
|
||||
mDecodedDiscard = mFormattedImage->getDiscardLevel();
|
||||
LL_DEBUGS("Texture") << mID << ": Decode Finished. Discard: " << mDecodedDiscard
|
||||
<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << mID << ": Decode Finished. Discard: " << mDecodedDiscard
|
||||
<< " Raw Image: " << llformat("%dx%d",mRawImage->getWidth(),mRawImage->getHeight()) << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "DECODE FAILED: " << mID << " Discard: " << (S32)mFormattedImage->getDiscardLevel() << LL_ENDL;
|
||||
removeFromCache();
|
||||
mDecodedDiscard = -1; // Redundant, here for clarity and paranoia
|
||||
}
|
||||
mDecoded = TRUE;
|
||||
// LL_INFOS() << mID << " : DECODE COMPLETE " << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << mID << " : DECODE COMPLETE " << LL_ENDL;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
mCacheReadTime = mCacheReadTimer.getElapsedTimeF32();
|
||||
} // -Mw
|
||||
|
|
@ -2586,8 +2588,8 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
|
|||
{
|
||||
if (worker->mHost != host)
|
||||
{
|
||||
LL_WARNS() << "LLTextureFetch::createRequest " << id << " called with multiple hosts: "
|
||||
<< host << " != " << worker->mHost << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "LLTextureFetch::createRequest " << id << " called with multiple hosts: "
|
||||
<< host << " != " << worker->mHost << LL_ENDL;
|
||||
removeRequest(worker, true);
|
||||
worker = NULL;
|
||||
return false;
|
||||
|
|
@ -2604,13 +2606,13 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
|
|||
llassert(!url.empty() && (!exten.empty() && LLImageBase::getCodecFromExtension(exten) != IMG_CODEC_J2C));
|
||||
|
||||
// Do full requests for baked textures to reduce interim blurring.
|
||||
LL_DEBUGS("Texture") << "full request for " << id << " texture is FTT_SERVER_BAKE" << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "full request for " << id << " texture is FTT_SERVER_BAKE" << LL_ENDL;
|
||||
desired_size = MAX_IMAGE_DATA_SIZE;
|
||||
desired_discard = 0;
|
||||
}
|
||||
else if (!url.empty() && (!exten.empty() && LLImageBase::getCodecFromExtension(exten) != IMG_CODEC_J2C))
|
||||
{
|
||||
LL_DEBUGS("Texture") << "full request for " << id << " exten is not J2C: " << exten << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "full request for " << id << " exten is not J2C: " << exten << LL_ENDL;
|
||||
// Only do partial requests for J2C at the moment
|
||||
desired_size = MAX_IMAGE_DATA_SIZE;
|
||||
desired_discard = 0;
|
||||
|
|
@ -2651,7 +2653,9 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
|
|||
worker->setImagePriority(priority);
|
||||
worker->setDesiredDiscard(desired_discard, desired_size);
|
||||
worker->setCanUseHTTP(can_use_http);
|
||||
worker->setUrl(url);
|
||||
|
||||
//MAINT-4184 url is always empty. Do not set with it.
|
||||
|
||||
if (!worker->haveWork())
|
||||
{
|
||||
worker->setState(LLTextureFetchWorker::INIT);
|
||||
|
|
@ -2678,8 +2682,8 @@ bool LLTextureFetch::createRequest(FTType f_type, const std::string& url, const
|
|||
worker->unlockWorkMutex(); // -Mw
|
||||
}
|
||||
|
||||
LL_DEBUGS("Texture") << "REQUESTED: " << id << " f_type " << fttype_to_string(f_type)
|
||||
<< " Discard: " << desired_discard << " size " << desired_size << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "REQUESTED: " << id << " f_type " << fttype_to_string(f_type)
|
||||
<< " Discard: " << desired_discard << " size " << desired_size << LL_ENDL;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -2874,7 +2878,7 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
|
|||
// Should only happen if we set mDebugPause...
|
||||
if (!mDebugPause)
|
||||
{
|
||||
// LL_WARNS() << "Adding work for inactive worker: " << id << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Adding work for inactive worker: " << id << LL_ENDL;
|
||||
worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
|
||||
}
|
||||
}
|
||||
|
|
@ -2891,7 +2895,7 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
|
|||
record(sCacheReadLatency, cache_read_time);
|
||||
}
|
||||
res = true;
|
||||
LL_DEBUGS("Texture") << id << ": Request Finished. State: " << worker->mState << " Discard: " << discard_level << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << id << ": Request Finished. State: " << worker->mState << " Discard: " << discard_level << LL_ENDL;
|
||||
worker->unlockWorkMutex(); // -Mw
|
||||
}
|
||||
else
|
||||
|
|
@ -2996,9 +3000,9 @@ void LLTextureFetch::commonUpdate()
|
|||
LLCore::HttpStatus status = mHttpRequest->update(0);
|
||||
if (! status)
|
||||
{
|
||||
LL_INFOS_ONCE("Texture") << "Problem during HTTP servicing. Reason: "
|
||||
<< status.toString()
|
||||
<< LL_ENDL;
|
||||
LL_INFOS_ONCE(LOG_TXT) << "Problem during HTTP servicing. Reason: "
|
||||
<< status.toString()
|
||||
<< LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3078,11 +3082,11 @@ void LLTextureFetch::startThread()
|
|||
// Threads: Ttf
|
||||
void LLTextureFetch::endThread()
|
||||
{
|
||||
LL_INFOS("Texture") << "CacheReads: " << mTotalCacheReadCount
|
||||
<< ", CacheWrites: " << mTotalCacheWriteCount
|
||||
<< ", ResWaits: " << mTotalResourceWaitCount
|
||||
<< ", TotalHTTPReq: " << getTotalNumHTTPRequests()
|
||||
<< LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "CacheReads: " << mTotalCacheReadCount
|
||||
<< ", CacheWrites: " << mTotalCacheWriteCount
|
||||
<< ", ResWaits: " << mTotalResourceWaitCount
|
||||
<< ", TotalHTTPReq: " << getTotalNumHTTPRequests()
|
||||
<< LL_ENDL;
|
||||
}
|
||||
|
||||
// Threads: Ttf
|
||||
|
|
@ -3111,7 +3115,7 @@ void LLTextureFetch::threadedUpdate()
|
|||
S32 q = mCurlGetRequest->getQueued();
|
||||
if (q > 0)
|
||||
{
|
||||
LL_INFOS() << "Queued gets: " << q << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Queued gets: " << q << LL_ENDL;
|
||||
info_timer.reset();
|
||||
}
|
||||
}
|
||||
|
|
@ -3160,7 +3164,7 @@ void LLTextureFetch::sendRequestListToSimulators()
|
|||
(req->mState != LLTextureFetchWorker::LOAD_FROM_SIMULATOR))
|
||||
{
|
||||
// We already received our URL, remove from the queue
|
||||
LL_WARNS() << "Worker: " << req->mID << " in mNetworkQueue but in wrong state: " << req->mState << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Worker: " << req->mID << " in mNetworkQueue but in wrong state: " << req->mState << LL_ENDL;
|
||||
mNetworkQueue.erase(curiter);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -3228,7 +3232,7 @@ void LLTextureFetch::sendRequestListToSimulators()
|
|||
gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, req->mImagePriority);
|
||||
gMessageSystem->addU32Fast(_PREHASH_Packet, packet);
|
||||
gMessageSystem->addU8Fast(_PREHASH_Type, req->mType);
|
||||
// LL_INFOS() << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard
|
||||
// LL_INFOS(LOG_TXT) << "IMAGE REQUEST: " << req->mID << " Discard: " << req->mDesiredDiscard
|
||||
// << " Packet: " << packet << " Priority: " << req->mImagePriority << LL_ENDL;
|
||||
|
||||
static LLCachedControl<bool> log_to_viewer_log(gSavedSettings,"LogTextureDownloadsToViewerLog", false);
|
||||
|
|
@ -3250,7 +3254,7 @@ void LLTextureFetch::sendRequestListToSimulators()
|
|||
sim_request_count++;
|
||||
if (sim_request_count >= IMAGES_PER_REQUEST)
|
||||
{
|
||||
// LL_INFOS() << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;
|
||||
|
||||
gMessageSystem->sendSemiReliable(host, NULL, NULL);
|
||||
sim_request_count = 0;
|
||||
|
|
@ -3259,7 +3263,7 @@ void LLTextureFetch::sendRequestListToSimulators()
|
|||
}
|
||||
if (gMessageSystem && sim_request_count > 0 && sim_request_count < IMAGES_PER_REQUEST)
|
||||
{
|
||||
// LL_INFOS() << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << "REQUESTING " << sim_request_count << " IMAGES FROM HOST: " << host.getIPString() << LL_ENDL;
|
||||
gMessageSystem->sendSemiReliable(host, NULL, NULL);
|
||||
sim_request_count = 0;
|
||||
}
|
||||
|
|
@ -3295,7 +3299,7 @@ void LLTextureFetch::sendRequestListToSimulators()
|
|||
gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, 0);
|
||||
gMessageSystem->addU32Fast(_PREHASH_Packet, 0);
|
||||
gMessageSystem->addU8Fast(_PREHASH_Type, 0);
|
||||
// LL_INFOS() << "CANCELING IMAGE REQUEST: " << (*iter2) << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << "CANCELING IMAGE REQUEST: " << (*iter2) << LL_ENDL;
|
||||
|
||||
request_count++;
|
||||
if (request_count >= IMAGES_PER_REQUEST)
|
||||
|
|
@ -3323,12 +3327,12 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
|
|||
mRequestedTimer.reset();
|
||||
if (index >= mTotalPackets)
|
||||
{
|
||||
// LL_WARNS() << "Received Image Packet " << index << " > max: " << mTotalPackets << " for image: " << mID << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received Image Packet " << index << " > max: " << mTotalPackets << " for image: " << mID << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
if (index > 0 && index < mTotalPackets-1 && size != MAX_IMG_PACKET_SIZE)
|
||||
{
|
||||
// LL_WARNS() << "Received bad sized packet: " << index << ", " << size << " != " << MAX_IMG_PACKET_SIZE << " for image: " << mID << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received bad sized packet: " << index << ", " << size << " != " << MAX_IMG_PACKET_SIZE << " for image: " << mID << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -3338,7 +3342,7 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
|
|||
}
|
||||
else if (mPackets[index] != NULL)
|
||||
{
|
||||
// LL_WARNS() << "Received duplicate packet: " << index << " for image: " << mID << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received duplicate packet: " << index << " for image: " << mID << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -3358,7 +3362,7 @@ void LLTextureFetchWorker::setState(e_state new_state)
|
|||
// blurry images fairly frequently. Presumably this is an
|
||||
// indication of some subtle timing or locking issue.
|
||||
|
||||
// LL_INFOS("Texture") << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << LL_ENDL;
|
||||
// LL_INFOS(LOG_TXT) << "id: " << mID << " FTType: " << mFTType << " disc: " << mDesiredDiscard << " sz: " << mDesiredSize << " state: " << e_state_name[mState] << " => " << e_state_name[new_state] << LL_ENDL;
|
||||
}
|
||||
mState = new_state;
|
||||
}
|
||||
|
|
@ -3374,13 +3378,13 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
|
|||
|
||||
if (!worker)
|
||||
{
|
||||
// LL_WARNS() << "Received header for non active worker: " << id << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received header for non active worker: " << id << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
else if (worker->mState != LLTextureFetchWorker::LOAD_FROM_NETWORK ||
|
||||
worker->mSentRequest != LLTextureFetchWorker::SENT_SIM)
|
||||
{
|
||||
// LL_WARNS() << "receiveImageHeader for worker: " << id
|
||||
// LL_WARNS(LOG_TXT) << "receiveImageHeader for worker: " << id
|
||||
// << " in state: " << LLTextureFetchWorker::sStateDescs[worker->mState]
|
||||
// << " sent: " << worker->mSentRequest << LL_ENDL;
|
||||
res = false;
|
||||
|
|
@ -3388,12 +3392,12 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
|
|||
else if (worker->mLastPacket != -1)
|
||||
{
|
||||
// check to see if we've gotten this packet before
|
||||
// LL_WARNS() << "Received duplicate header for: " << id << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received duplicate header for: " << id << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
else if (!data_size)
|
||||
{
|
||||
// LL_WARNS() << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
if (!res)
|
||||
|
|
@ -3435,17 +3439,17 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
|
|||
|
||||
if (!worker)
|
||||
{
|
||||
// LL_WARNS() << "Received packet " << packet_num << " for non active worker: " << id << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received packet " << packet_num << " for non active worker: " << id << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
else if (worker->mLastPacket == -1)
|
||||
{
|
||||
// LL_WARNS() << "Received packet " << packet_num << " before header for: " << id << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Received packet " << packet_num << " before header for: " << id << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
else if (!data_size)
|
||||
{
|
||||
// LL_WARNS() << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;
|
||||
// LL_WARNS(LOG_TXT) << "Img: " << id << ":" << " Empty Image Header" << LL_ENDL;
|
||||
res = false;
|
||||
}
|
||||
if (!res)
|
||||
|
|
@ -3473,7 +3477,7 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
|
|||
}
|
||||
else
|
||||
{
|
||||
// LL_WARNS() << "receiveImagePacket " << packet_num << "/" << worker->mLastPacket << " for worker: " << id
|
||||
// LL_WARNS(LOG_TXT) << "receiveImagePacket " << packet_num << "/" << worker->mLastPacket << " for worker: " << id
|
||||
// << " in state: " << LLTextureFetchWorker::sStateDescs[worker->mState] << LL_ENDL;
|
||||
removeFromNetworkQueue(worker, true); // failsafe
|
||||
}
|
||||
|
|
@ -3566,33 +3570,33 @@ S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& r
|
|||
|
||||
void LLTextureFetch::dump()
|
||||
{
|
||||
LL_INFOS() << "LLTextureFetch REQUESTS:" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "LLTextureFetch REQUESTS:" << LL_ENDL;
|
||||
for (request_queue_t::iterator iter = mRequestQueue.begin();
|
||||
iter != mRequestQueue.end(); ++iter)
|
||||
{
|
||||
LLQueuedThread::QueuedRequest* qreq = *iter;
|
||||
LLWorkerThread::WorkRequest* wreq = (LLWorkerThread::WorkRequest*)qreq;
|
||||
LLTextureFetchWorker* worker = (LLTextureFetchWorker*)wreq->getWorkerClass();
|
||||
LL_INFOS() << " ID: " << worker->mID
|
||||
<< " PRI: " << llformat("0x%08x",wreq->getPriority())
|
||||
<< " STATE: " << worker->sStateDescs[worker->mState]
|
||||
<< LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << " ID: " << worker->mID
|
||||
<< " PRI: " << llformat("0x%08x",wreq->getPriority())
|
||||
<< " STATE: " << worker->sStateDescs[worker->mState]
|
||||
<< LL_ENDL;
|
||||
}
|
||||
|
||||
LL_INFOS() << "LLTextureFetch ACTIVE_HTTP:" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "LLTextureFetch ACTIVE_HTTP:" << LL_ENDL;
|
||||
for (queue_t::const_iterator iter(mHTTPTextureQueue.begin());
|
||||
mHTTPTextureQueue.end() != iter;
|
||||
++iter)
|
||||
{
|
||||
LL_INFOS() << " ID: " << (*iter) << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << " ID: " << (*iter) << LL_ENDL;
|
||||
}
|
||||
|
||||
LL_INFOS() << "LLTextureFetch WAIT_HTTP_RESOURCE:" << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "LLTextureFetch WAIT_HTTP_RESOURCE:" << LL_ENDL;
|
||||
for (wait_http_res_queue_t::const_iterator iter(mHttpWaitResource.begin());
|
||||
mHttpWaitResource.end() != iter;
|
||||
++iter)
|
||||
{
|
||||
LL_INFOS() << " ID: " << (*iter) << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << " ID: " << (*iter) << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3717,10 +3721,10 @@ void LLTextureFetch::releaseHttpWaiters()
|
|||
{
|
||||
// Not in expected state, remove it, try the next one
|
||||
worker->unlockWorkMutex(); // -Mw
|
||||
LL_WARNS("Texture") << "Resource-waited texture " << worker->mID
|
||||
<< " in unexpected state: " << worker->mState
|
||||
<< ". Removing from wait list."
|
||||
<< LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Resource-waited texture " << worker->mID
|
||||
<< " in unexpected state: " << worker->mState
|
||||
<< ". Removing from wait list."
|
||||
<< LL_ENDL;
|
||||
removeHttpWaiter(worker->mID);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -3887,14 +3891,14 @@ public:
|
|||
|
||||
if (status)
|
||||
{
|
||||
LL_DEBUGS("Texture") << "Successfully delivered asset metrics to grid."
|
||||
<< LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "Successfully delivered asset metrics to grid."
|
||||
<< LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Texture") << "Error delivering asset metrics to grid. Status: "
|
||||
<< status.toTerseString()
|
||||
<< ", Reason: " << status.toString() << LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Error delivering asset metrics to grid. Status: "
|
||||
<< status.toTerseString()
|
||||
<< ", Reason: " << status.toString() << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}; // end class AssetReportHandler
|
||||
|
|
@ -4505,14 +4509,14 @@ void LLTextureFetchDebugger::debugHTTP()
|
|||
LLViewerRegion* region = gAgent.getRegion();
|
||||
if (!region)
|
||||
{
|
||||
LL_INFOS() << "Fetch Debugger : Current region undefined. Cannot fetch textures through HTTP." << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Fetch Debugger : Current region undefined. Cannot fetch textures through HTTP." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
mHTTPUrl = region->getHttpUrl();
|
||||
if (mHTTPUrl.empty())
|
||||
{
|
||||
LL_INFOS() << "Fetch Debugger : Current region URL undefined. Cannot fetch textures through HTTP." << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Fetch Debugger : Current region URL undefined. Cannot fetch textures through HTTP." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -4583,15 +4587,15 @@ S32 LLTextureFetchDebugger::fillCurlQueue()
|
|||
// Failed to queue request, log it and mark it done.
|
||||
LLCore::HttpStatus status(mFetcher->getHttpRequest().getStatus());
|
||||
|
||||
LL_WARNS("Texture") << "Couldn't issue HTTP request in debugger for texture "
|
||||
<< mFetchingHistory[i].mID
|
||||
<< ", status: " << status.toTerseString()
|
||||
<< " reason: " << status.toString()
|
||||
<< LL_ENDL;
|
||||
LL_WARNS(LOG_TXT) << "Couldn't issue HTTP request in debugger for texture "
|
||||
<< mFetchingHistory[i].mID
|
||||
<< ", status: " << status.toTerseString()
|
||||
<< " reason: " << status.toString()
|
||||
<< LL_ENDL;
|
||||
mFetchingHistory[i].mCurlState = FetchEntry::CURL_DONE;
|
||||
}
|
||||
}
|
||||
//LL_INFOS() << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << LL_ENDL;
|
||||
//LL_INFOS(LOG_TXT) << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << LL_ENDL;
|
||||
return mNbCurlRequests;
|
||||
}
|
||||
|
||||
|
|
@ -4893,7 +4897,7 @@ void LLTextureFetchDebugger::onCompleted(LLCore::HttpHandle handle, LLCore::Http
|
|||
handle_fetch_map_t::iterator iter(mHandleToFetchIndex.find(handle));
|
||||
if (mHandleToFetchIndex.end() == iter)
|
||||
{
|
||||
LL_INFOS() << "Fetch Debugger : Couldn't find handle " << handle << " in fetch list." << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Fetch Debugger : Couldn't find handle " << handle << " in fetch list." << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -4901,7 +4905,7 @@ void LLTextureFetchDebugger::onCompleted(LLCore::HttpHandle handle, LLCore::Http
|
|||
mHandleToFetchIndex.erase(iter);
|
||||
if (fetch_ind >= mFetchingHistory.size() || mFetchingHistory[fetch_ind].mHttpHandle != handle)
|
||||
{
|
||||
LL_INFOS() << "Fetch Debugger : Handle and fetch object in disagreement. Punting." << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Fetch Debugger : Handle and fetch object in disagreement. Punting." << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -4951,7 +4955,7 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon
|
|||
|
||||
S32 data_size = ba ? ba->size() : 0;
|
||||
fetch.mCurlReceivedSize += data_size;
|
||||
//LL_INFOS() << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << LL_ENDL;
|
||||
//LL_INFOS(LOG_TXT) << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << LL_ENDL;
|
||||
if ((fetch.mCurlReceivedSize >= fetch.mRequestedSize) || !partial || (fetch.mRequestedSize == 600))
|
||||
{
|
||||
U8* d_buffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), data_size);
|
||||
|
|
@ -4977,9 +4981,9 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon
|
|||
}
|
||||
else //failed
|
||||
{
|
||||
LL_INFOS() << "Fetch Debugger : CURL GET FAILED, ID = " << fetch.mID
|
||||
<< ", status: " << status.toTerseString()
|
||||
<< " reason: " << status.toString() << LL_ENDL;
|
||||
LL_INFOS(LOG_TXT) << "Fetch Debugger : CURL GET FAILED, ID = " << fetch.mID
|
||||
<< ", status: " << status.toTerseString()
|
||||
<< " reason: " << status.toString() << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -563,7 +563,7 @@ void LLGLTexMemBar::draw()
|
|||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d RAW:%d HTP:%d DEC:%d CRE:%d",
|
||||
text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d RAW:%d HTP:%d DEC:%d CRE:%d ",
|
||||
gTextureList.getNumImages(),
|
||||
LLAppViewer::getTextureFetch()->getNumRequests(), LLAppViewer::getTextureFetch()->getNumDeletes(),
|
||||
LLAppViewer::getTextureFetch()->mPacketCount, LLAppViewer::getTextureFetch()->mBadPacketCount,
|
||||
|
|
@ -585,7 +585,7 @@ void LLGLTexMemBar::draw()
|
|||
color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;
|
||||
color[VALPHA] = text_color[VALPHA];
|
||||
text = llformat("BW:%.0f/%.0f",bandwidth.value(), max_bandwidth.value());
|
||||
LLFontGL::getFontMonospace()->renderUTF8(text, 0, x_right, v_offset + line_height*2,
|
||||
LLFontGL::getFontMonospace()->renderUTF8(text, 0, x_right, v_offset + line_height*3,
|
||||
color, LLFontGL::LEFT, LLFontGL::TOP);
|
||||
|
||||
// Mesh status line
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 260 B |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 609 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 436 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 549 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 423 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 481 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 306 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 526 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 708 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 751 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 643 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 734 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 465 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 457 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 681 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 696 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 680 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 680 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 453 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 925 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 739 B |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 410 B |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 650 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 642 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 304 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 556 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 464 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 516 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 330 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 341 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 344 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 424 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 474 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 426 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 467 B |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 801 B |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 746 B |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 1.7 KiB |