diff --git a/autobuild.xml b/autobuild.xml index c2196fcf21..2c8a254a75 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1,2492 +1,2491 @@ - - - - installables - - GLOD - - license - GLOD - license_file - LICENSES/glod.txt - name - GLOD - platforms - - darwin - - archive - - hash - 930bdd987a321eda1838caba8cd6098f - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/Darwin/installer/glod-1.0pre4-darwin-20110519.tar.bz2 - - name - darwin - - linux - - archive - - hash - fb33b6cac2e6b98f93c5efa2af2e5a00 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/Linux/installer/glod-1.0pre4-linux-20110519.tar.bz2 - - name - linux - - windows - - archive - - hash - 388cf0e292f756b4bb37696622f0bbc5 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/CYGWIN/installer/glod-1.0pre4-windows-20110519.tar.bz2 - - name - windows - - - - SDL - - license - lgpl - license_file - LICENSES/SDL.txt - name - SDL - platforms - - linux - - archive - - hash - 69ae3b1c9cdb0ebc0d0e1ac8413e3eb7 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/SDL-1.2.14-linux-20110309.tar.bz2 - - name - linux - - - - apr_suite - - license - apache - license_file - LICENSES/apr_suite.txt - name - apr_suite - platforms - - darwin - - archive - - hash - 9868bfa0b6954e4884c49c6f30068c80 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-darwin-20110217.tar.bz2 - - name - darwin - - linux - - archive - - hash - ff62946c518a247c86e1066c1e9a5855 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-linux-20110309.tar.bz2 - - name - linux - - windows - - archive - - hash - 73785c200a5b4ef74a1230b028bb680d - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-windows-20110217.tar.bz2 - - name - windows - - - - ares - - license - c-ares - license_file - LICENSES/c-ares.txt - name - ares - platforms - - darwin - - archive - - hash - e6caaeea16131e1f2343ecd7765e3147 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.7.1-darwin-20110217.tar.bz2 - - name - darwin - - linux - - archive - - hash - 0745872db83d45f4ab3bdc697d98e264 - url - 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 - - name - linux - - windows - - archive - - hash - 1dcec6babd249a2597114d4ac226c461 - url - 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 - - name - windows - - - - boost - - license - boost - license_file - LICENSES/boost.txt - name - boost - platforms - - darwin - - archive - - hash - d98078791ce345bf6168ce9ba53ca2d7 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/222752/arch/Darwin/installer/boost-1.45.0-darwin-20110304.tar.bz2 - - name - darwin - - linux - - archive - - hash - a34e7fffdb94a6a4d8a2966b1f216da3 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-linux-20110310.tar.bz2 - - name - linux - - windows - - archive - - hash - 98be22c8833aa2bca184b9fa09fbb82b - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-windows-20110124.tar.bz2 - - name - windows - - - - colladadom - - license - scea - license_file - LICENSES/collada.txt - name - colladadom - platforms - - darwin - - archive - - hash - 480b27a0cb39a4adfcdeabef895de3e1 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/227230/arch/Darwin/installer/colladadom-2.2-darwin-20110420.tar.bz2 - - name - darwin - - linux - - archive - - hash - d05be8fc196e9ce7b6636b931cf13dff - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/226716/arch/Linux/installer/colladadom-2.2-linux-20110415.tar.bz2 - - name - linux - - windows - - archive - - hash - a9f548eb6f9aaf292508a8b09c7f2f73 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/226584/arch/CYGWIN/installer/colladadom-2.2-windows-20110413.tar.bz2 - - name - windows - - - - curl - - license - curl - license_file - LICENSES/curl.txt - name - curl - platforms - - darwin - - archive - - hash - aaea644191807f51051cefa2fac11069 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-darwin-20110316.tar.bz2 - - name - darwin - - linux - - archive - - hash - 2d9377951d99a1aa4735cea8d4b5aa71 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-linux-20110316.tar.bz2 - - name - linux - - windows - - archive - - hash - fea96aa2a7d513397317194f3d6c979b - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-windows-20110211.tar.bz2 - - name - windows - - - - db - - license - bsd - license_file - LICENSES/db.txt - name - db - platforms - - linux - - archive - - hash - 8f57c413e0786681cbcb9ed2fb8a6d37 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/db-5.1.25-linux-20110309.tar.bz2 - - name - linux - - - - dbusglib - - license - AFL2.1 - license_file - LICENSES/dbus-glib.txt - name - dbusglib - platforms - - linux - - archive - - hash - 94b058b9a81114dc4567bd78e4335425 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/dbus_glib-0.76-linux-20110310.tar.bz2 - - name - linux - - - - elfio - - license - lgpl - license_file - LICENSES/elfio.txt - name - elfio - platforms - - linux - - archive - - hash - 031e6315a5c0829c9b9a2ec18aeb7ae3 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-elfio/rev/222074/arch/Linux/installer/elfio-1.0.3-linux-20110225.tar.bz2 - - name - linux - - - - expat - - license - mit - license_file - LICENSES/expat.txt - name - expat - platforms - - darwin - - archive - - hash - 180e03d0be1f1acfc3244e78742d7bef - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-expat/rev/221695/arch/Darwin/installer/expat-2.0.1-darwin-20110218.tar.bz2 - - name - darwin - - linux - - archive - - hash - 9bd79781b58e556ab1c36084ec4a1c0c - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-expat/rev/221695/arch/Linux/installer/expat-2.0.1-linux-20110219.tar.bz2 - - name - linux - - windows - - archive - - hash - e72db1bda49b205ebdf4945d4ed2b8f8 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/expat-2.0.1-windows-20110215.tar.bz2 - - name - windows - - - - fmod - - license - fmod - license_file - LICENSES/fmod.txt - name - fmod - platforms - - darwin - - archive - - hash - 61ead113e6479452e6b690c84b4e9d30 - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Darwin/installer/fmod-3.75-darwin-20110222.tar.bz2 - - name - darwin - - linux - - archive - - hash - 0c61d643db54d2e5999be8254569d8b3 - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Linux/installer/fmod-3.75-linux-20110223.tar.bz2 - - name - linux - - windows - - archive - - hash - d9a9a6ad86895353bcd63374a4c1a91d - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/CYGWIN/installer/fmod-3.75-windows-20110222.tar.bz2 - - name - windows - - - - fontconfig - - license - mit - license_file - LICENSES/fontconfig.txt - name - fontconfig - platforms - - linux - - archive - - hash - d8b08b657247566bde5fd853c7622478 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/fontconfig-2.8.0-linux-20110311.tar.bz2 - - name - linux - - - - freeglut - - license - mit - license_file - LICENSES/freeglut.txt - name - freeglut - platforms - - windows - - archive - - hash - 825d5a9bafcc5bfe28dc4c1c4f87c576 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freeglut/rev/221064/arch/CYGWIN/installer/freeglut-2.6.0-windows-20110214.tar.bz2 - - name - windows - - - - freetype - - license - freetype - license_file - LICENSES/freetype.txt - name - freetype - platforms - - darwin - - archive - - hash - c0eacb6348e032fbc69cfdc4bd215ee4 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-darwin-20110307.tar.bz2 - - name - darwin - - linux - - archive - - hash - 9f8a9dc39fd7c3da0fb3533782d1fddf - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/226814/arch/Linux/installer/freetype-2.3.9-linux-20110418.tar.bz2 - - name - linux - - windows - - archive - - hash - 271349827b939406162ce42e42cd18e0 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-windows-20110218.tar.bz2 - - name - windows - - - - glext - - license - glext - license_file - LICENSES/glext.txt - name - glext - platforms - - linux - - archive - - hash - 5de58ca0fe19abf68b25956762ee0d29 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glext-68-windows-20110406.tar.bz2 - - name - linux - - windows - - archive - - hash - 5de58ca0fe19abf68b25956762ee0d29 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glext-68-windows-20110406.tar.bz2 - - name - windows - - - - glh_linear - - license - glh_linear - license_file - LICENSES/glh_linear.txt - name - glh_linear - platforms - - darwin - - archive - - hash - 366f940f2634b0e05954646927620bfd - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-darwin-20101004.tar.bz2 - - name - darwin - - linux - - archive - - hash - 26f2df1f0b0fa01e94e0253e322f3583 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-linux-20101001.tar.bz2 - - name - linux - - windows - - archive - - hash - 57f8be28bbaa2505ae3b59deb2c77cdf - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-windows-20101011.tar.bz2 - - name - windows - - - - glui - - license - lgpl - license_file - LICENSES/glui.txt - name - glui - platforms - - darwin - - archive - - hash - bd2f84ef8bd308570e2e532a371dc2ef - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glui-2.36-darwin-20110309.tar.bz2 - - name - darwin - - windows - - archive - - hash - e006635a741420a15f40bbdac13bd8d7 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glui-2.36-windows-20110214.tar.bz2 - - name - windows - - - - google_breakpad - - license - bsd - license_file - LICENSES/google_breakpad.txt - name - google_breakpad - platforms - - darwin - - archive - - hash - 21babc394dbf8572830f2e85adec7b9f - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-darwin-20110202.tar.bz2 - - name - darwin - - linux - - archive - - hash - 204b02a9480c411232255798839431a2 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-linux-20110311.tar.bz2 - - name - linux - - windows - - archive - - hash - 627c51136e14e64c5d39933f3abd3bdf - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-windows-20110218.tar.bz2 - - name - windows - - - - googlemock - - license - bsd - license_file - LICENSES/googlemock.txt - name - googlemock - platforms - - darwin - - archive - - hash - 886ee428f058005ab7f90f61784ec9d9 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-darwin-20101004.tar.bz2 - - name - darwin - - linux - - archive - - hash - 782ca04e56d8eab755adcae297cafa7c - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-linux-20101001.tar.bz2 - - name - linux - - windows - - archive - - hash - 212701468920519f3989677cea9ca4f1 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gmock-1.5.0-windows-20110224.tar.bz2 - - name - windows - - - - gstreamer - - license - lgpl - license_file - LICENSES/gstreamer.txt - name - gstreamer - platforms - - linux - - archive - - hash - ddbc0a64ad788107877fee777403592c - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gstreamer-linux-20101013.tar.bz2 - - name - linux - - - - gtk-atk-pango-glib - - license - lgpl - license_file - LICENSES/gtk-atk-pango-glib.txt - name - gtk-atk-pango-glib - platforms - - linux - - archive - - hash - 03694ade27f53199229c03cbbda89214 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gtk-atk-pango-glib-linux-20101001.tar.bz2 - - name - linux - - windows - - archive - - hash - c257d718abdde8cfe8a0af26175161a7 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gtk-atk-pango-glib-windows-20101001a.tar.bz2 - - name - windows - - - - jpeglib - - license - jpeglib - license_file - LICENSES/jpeglib.txt - name - jpeglib - platforms - - darwin - - archive - - hash - 71bd6efbf508e1f2e7d98a6195a93e9e - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-8c-darwin-20110228.tar.bz2 - - name - darwin - - linux - - archive - - hash - dcca1db348831cdb7c6b26dc4076c597 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-jpeglib/rev/224895/arch/Linux/installer/jpeglib-8c-linux-20110323.tar.bz2 - - name - linux - - windows - - archive - - hash - a202ec58cef9097c94acfa958ed6da8d - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-8c-windows-20110217.tar.bz2 - - name - windows - - - - jsoncpp - - license - jsoncpp - license_file - LICENSES/jsoncpp.txt - name - jsoncpp - platforms - - darwin - - archive - - hash - de8b96120c274e052abb4f692861be46 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-darwin-20110131.tar.bz2 - - name - darwin - - linux - - archive - - hash - 840cd9455638c0ea52c613cfddd07d5b - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-linux-20110315.tar.bz2 - - name - linux - - windows - - archive - - hash - afff2018e6a887c281b072eecdd9343e - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-windows-20110208.tar.bz2 - - name - windows - - - - kdu - - license - kdu - license_file - LICENSES/kdu.txt - name - kdu - platforms - - darwin - - archive - - hash - d91e1f483209cd3eba04135c6a59e829 - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/Darwin/installer/kdu-6.4.1-darwin-20110218.tar.bz2 - - name - darwin - - linux - - archive - - hash - fbf8a4f78dff986d7c16b3a0437e033e - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/223538/arch/Linux/installer/kdu-6.4.1-linux-20110311.tar.bz2 - - name - linux - - windows - - archive - - hash - 6cd9f36465ef73a3df34bf2b3bba2ced - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/CYGWIN/installer/kdu-6.4.1-windows-20110218.tar.bz2 - - name - windows - - - - libpng - - license - libpng - license_file - LICENSES/libpng.txt - name - libpng - platforms - - darwin - - archive - - hash - 6fe1adf12d98bce9111f60ee762007b9 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-darwin-20110222.tar.bz2 - - name - darwin - - linux - - archive - - hash - 0681ab7e1988dfdbdad7dd9edb7760ee - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-linux-20110223.tar.bz2 - - name - linux - - windows - - archive - - hash - f194ba857ca8dd86483a3ef24535d0db - url - 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 - - name - windows - - - - libuuid - - license - lgpl - license_file - LICENSES/libuuid.txt - name - libuuid - platforms - - linux - - archive - - hash - 873e8e99d29711df2efa30646dca1795 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/uuid-1.6.2-linux-20110315.tar.bz2 - - name - linux - - - - libxml - - license - mit - license_file - LICENSES/libxml.txt - name - libxml - platforms - - linux - - archive - - hash - 6414642528f42dac1cd9a012c99cd748 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libxml-2.6.24-linux-20101013.tar.bz2 - - name - linux - - - - llconvexdecomposition - - license - havok - license_file - on_file - name - llconvexdecomposition - platforms - - darwin - - archive - - hash - 6e45ad68506cd1ba49fd35a3201f0478 - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Darwin/installer/llconvexdecomposition-0.1-darwin-20110504.tar.bz2 - - name - darwin - - linux - - archive - - hash - 00ff5144612c2e261a0811a4503ce3ba - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Linux/installer/llconvexdecomposition-0.1-linux-20110504.tar.bz2 - - name - linux - - windows - - archive - - hash - a4635dcbbe0915ce023dd41d3b848d4c - url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/CYGWIN/installer/llconvexdecomposition-0.1-windows-20110504.tar.bz2 - - name - windows - - - - llconvexdecompositionstub - - license - lgpl - license_file - LICENSES/lgpl.txt - name - llconvexdecompositionstub - platforms - - darwin - - archive - - hash - bc1388fc28dbb3bba1fe7cb8d09f49b4 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/Darwin/installer/llconvexdecompositionstub-0.3-darwin-20110421.tar.bz2 - - name - darwin - - linux - - archive - - hash - 3295bd4a0514b7c15dda9044f40c175e - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/Linux/installer/llconvexdecompositionstub-0.3-linux-20110422.tar.bz2 - - name - linux - - windows - - archive - - hash - 92f1dff3249024c1534b55343ed79ea3 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/CYGWIN/installer/llconvexdecompositionstub-0.3-windows-20110421.tar.bz2 - - name - windows - - - - llqtwebkit - - license - lgpl - license_file - LICENSES/llqtwebkit.txt - name - llqtwebkit - platforms - - darwin - - archive - - hash - 76c1015eafcba5ca9932c3009533b51c - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/225273/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20110329.tar.bz2 - - name - darwin - - linux - - archive - - hash - c05a33ee8b6f253b5a744596dfc3707d - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-qt4.6-20101013.tar.bz2 - - name - linux - - windows - - archive - - hash - 1b1b8e104e39c542d69eb37b5ee81818 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/225249/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20110329.tar.bz2 - - name - windows - - - - mesa - - license - mesa - license_file - LICENSES/mesa.txt - name - mesa - platforms - - linux - - archive - - hash - 1f600840463c7327ea17486821425750 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/mesa-7.0-linux-20100930.tar.bz2 - - name - linux - - - - ndofdev - - license - linden - license_file - LICENSES/libndofdev.txt - name - ndofdev - platforms - - darwin - - archive - - hash - 674d37d2ba76a2df7f18c47bf50b5d03 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libndofdev-0.1-darwin-20110308.tar.bz2 - - name - darwin - - linux - - archive - - hash - c81bacf922bb3b540d92b660364c48ce - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ndofdev-linux-0.2-20101013.tar.bz2 - - name - linux - - windows - - archive - - hash - 3a4bec9562ed6ac53e85abcb1afc5fc0 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libndofdev-0.1-windows-20110223.tar.bz2 - - name - windows - - - - ogg-vorbis - - license - ogg-vorbis - license_file - LICENSES/ogg-vorbis.txt - name - ogg-vorbis - platforms - - darwin - - archive - - hash - e849bc2b779fb7cc5e81aeb021a542c0 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/Darwin/installer/ogg_vorbis-1.2.2-1.3.2-darwin-20110510.tar.bz2 - - name - darwin - - linux - - archive - - hash - 71eaa462eb0bf8842277a3436483a354 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2-linux-20110511.tar.bz2 - - name - linux - - windows - - archive - - hash - 291dbba89dd8162b76f2c2d82e908c6f - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/CYGWIN/installer/ogg_vorbis-1.2.2-1.3.2-windows-20110510.tar.bz2 - - name - windows - - - - openSSL - - license - openSSL - license_file - LICENSES/openssl.txt - name - openSSL - platforms - - darwin - - archive - - hash - facee34b8bd57ad602157e65a5af1a49 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openssl-0.9.8q-darwin-20110211.tar.bz2 - - name - darwin - - linux - - archive - - hash - 3d40be8566fa4b9df9a38e2a0f9ea467 - url - 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 - - name - linux - - windows - - archive - - hash - 774c7f0a0312bee3054757a623e227bc - url - 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 - - name - windows - - - - openal_soft - - license - lgpl - license_file - LICENSES/OPENAL.txt - name - openal_soft - platforms - - linux - - archive - - hash - fccdca18a950ac9363c6fb39118b80e1 - hash_algorithm - md5 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-3ad86a1c-linux-20110114.tar.bz2 - - name - linux - - windows - - archive - - hash - 04df406f3e5d04cf176660bdac66c3a1 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-1.12.854-1.1.0-windows-20110301.tar.bz2 - - name - windows - - - version - 3ad86a1c - - openjpeg - - license - openjpeg - license_file - LICENSES/openjpeg.txt - name - openjpeg - platforms - - darwin - - archive - - hash - 4be51c7cca7d84831e30b63279df7ae5 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-darwin-20110302.tar.bz2 - - name - darwin - - linux - - archive - - hash - fb2382014c79e0049746e4e29bd834f9 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-linux-20110314.tar.bz2 - - name - linux - - windows - - archive - - hash - ca5765af55f798724d601720afdf6953 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-windows-20110302.tar.bz2 - - name - windows - - - - pcre - - license - bsd - license_file - LICENSES/pcre-license.txt - name - pcre - platforms - - darwin - - archive - - hash - a8e74694a0f4248228c13c845ed0a6f8 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Darwin/installer/pcre-7.6-darwin-20110504.tar.bz2 - - name - darwin - - linux - - archive - - hash - bb0abe962b3b8208ed2dab0424aab33d - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Linux/installer/pcre-7.6-linux-20110504.tar.bz2 - - name - linux - - - - quicktime - - license - quicktime - license_file - LICENSES/quicktime.txt - name - quicktime - platforms - - windows - - archive - - hash - 52e49ab6937b09882389da0dbaec17f5 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/quicktime-7.3-windows-20110127.tar.bz2 - - name - windows - - - - slvoice - - license - vivox - license_file - LICENSES/slvoice.txt - name - slvoice - platforms - - darwin - - archive - - hash - e19576af3c0affc71293d8f0bcce2606 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-darwin-20110120.tar.bz2 - - name - darwin - - linux - - archive - - hash - 53fefed8120d7c6a0eb6778edae6fa32 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-linux-20110120.tar.bz2 - - name - linux - - windows - - archive - - hash - 44f84b3b45f7067a104a7c34d50d62f0 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-windows-20110120.tar.bz2 - - name - windows - - - - tcmalloc - - license - bsd - license_file - LICENSES/google-perftools.txt - name - tcmalloc - platforms - - linux - - archive - - hash - dde928cb24d22a267004a8c17669ba65 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226426/arch/Linux/installer/google_perftools-1.7-linux-20110412.tar.bz2 - - name - linux - - windows - - archive - - hash - 8308f7bd68bb7083655753b7abe7225f - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226287/arch/CYGWIN/installer/google_perftools-1.7-windows-20110411.tar.bz2 - - name - windows - - - - tut - - license - bsd - license_file - LICENSES/tut.txt - name - tut - platforms - - common - - archive - - hash - 5c6d3e606f027e78f056cb77b20f228e - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/tut-2008-11-30-common-20101001.tar.bz2 - - name - common - - - - xmlrpc-epi - - license - xmlrpc-epi - license_file - LICENSES/xmlrpc-epi.txt - name - xmlrpc-epi - platforms - - darwin - - archive - - hash - a3e0fb4b4a51b01690a99747a1cca531 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-darwin-20110307.tar.bz2 - - name - darwin - - linux - - archive - - hash - 174ab797440157956eda7061dae37564 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-linux-20110314.tar.bz2 - - name - linux - - windows - - archive - - hash - 5181d1a8f2516928ac064d72acf164a4 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-windows-20110224.tar.bz2 - - name - windows - - - - zlib - - license - zlib - license_file - LICENSES/zlib.txt - name - zlib - platforms - - darwin - - archive - - hash - 49b8de20f3bb43537f51311894a72de1 - url - http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/zlib-1.2.5-darwin-20110211.tar.bz2 - - name - darwin - - linux - - archive - - hash - 7b4cf3aa2c04937d0a20761516587896 - url - 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 - - name - linux - - windows - - archive - - hash - 5852192646681817fc3c3a8c95e91c1e - url - 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 - - name - windows - - - - - package_description - - name - viewer_development - platforms - - common - - configurations - - Debug - - build - - - configure - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=Debug - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=TRUE - - - name - Debug - - DebugOS - - configure - - arguments - - ../indra - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=Debug - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=FALSE - - - name - DebugOS - - RelWithDebInfo - - build - - - configure - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=TRUE - - - name - RelWithDebInfo - - RelWithDebInfoOS - - configure - - arguments - - ../indra - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=FALSE - - - name - RelWithDebInfoOS - - Release - - build - - - configure - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=Release - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=TRUE - - - name - Release - - ReleaseOS - - configure - - arguments - - ../indra - - command - cmake - options - - -DCMAKE_BUILD_TYPE:STRING=Release - -DWORD_SIZE:STRING=32 - -DROOT_PROJECT_NAME:STRING=SecondLife - -DINSTALL_PROPRIETARY=FALSE - - - name - ReleaseOS - - - name - common - - darwin - - build_directory - build-darwin-i386 - configurations - - Debug - - build - - arguments - - | - grep - -v - setenv - - command - xcodebuild - options - - -configuration Debug - -project SecondLife.xcodeproj - - - configure - - arguments - - ../indra - - options - - -G - 'Xcode' - - - name - Debug - - DebugOS - - build - - command - xcodebuild - options - - -configuration Debug - -project SecondLife.xcodeproj - - - configure - - options - - -G - 'Xcode' - - - name - DebugOS - - RelWithDebInfo - - build - - arguments - - | - grep - -v - setenv - - command - xcodebuild - options - - -configuration RelWithDebInfo - -project SecondLife.xcodeproj - - - configure - - arguments - - ../indra - - options - - -G - 'Xcode' - - - default - True - name - RelWithDebInfo - - RelWithDebInfoOS - - build - - command - xcodebuild - options - - -configuration RelWithDebInfo - -project SecondLife.xcodeproj - - - configure - - options - - -G - 'Xcode' - - - name - RelWithDebInfoOS - - Release - - build - - arguments - - | - grep - -v - setenv - - command - xcodebuild - options - - -configuration Release - -project SecondLife.xcodeproj - - - configure - - arguments - - ../indra - - options - - -G - 'Xcode' - - - name - Release - - ReleaseOS - - build - - command - xcodebuild - options - - -configuration Release - -project SecondLife.xcodeproj - - - configure - - options - - -G - 'Xcode' - - - name - ReleaseOS - - - name - darwin - - linux - - build_directory - build-linux-i686 - configurations - - Debug - - build - - command - make - options - - -j 12 - - - configure - - arguments - - ../indra - - options - - -G - 'Unix Makefiles' - - - name - Debug - - DebugOS - - build - - command - make - options - - -j 2 - - - configure - - options - - -G - 'Unix Makefiles' - - - name - DebugOS - - RelWithDebInfo - - build - - command - make - options - - -j 12 - - - configure - - arguments - - ../indra - - options - - -G - 'Unix Makefiles' - - - default - True - name - RelWithDebInfo - - RelWithDebInfoOS - - build - - command - make - options - - -j 2 - - - configure - - options - - -G - 'Unix Makefiles' - - - name - RelWithDebInfoOS - - Release - - build - - command - make - options - - -j 12 - - - configure - - arguments - - ../indra - - options - - -G - 'Unix Makefiles' - - - name - Release - - ReleaseOS - - build - - command - make - options - - -j 2 - - - configure - - options - - -G - 'Unix Makefiles' - - - name - ReleaseOS - - default - - build - - - name - default - - - name - linux - - windows - - build_directory - build-vc100 - configurations - - Debug - - build - - arguments - - SecondLife.sln - - command - BuildConsole - options - - /build - "/cfg=Debug|Win32" - - - configure - - arguments - - ..\indra - && - ..\indra\tools\vstool\VSTool.exe - --solution - SecondLife.sln - --config - Debug - --startup - secondlife-bin - - options - - -G - "Visual Studio 10" - - - name - Debug - - DebugOS - - build - - arguments - - SecondLife.sln - - command - msbuild.exe - options - - /p:Configuration=Debug - /p:Platform=Win32 - /t:Build - /p:useenv=true - /verbosity:minimal - /toolsversion:4.0 - /p:"VCBuildAdditionalOptions= /incremental" - - - configure - - options - - -G - "Visual Studio 10" - -DUNATTENDED:BOOL=ON - -DINSTALL_PROPRIETARY=TRUE - -DUSE_KDU=FALSE - -DFMOD=FALSE - - - name - DebugOS - - RelWithDebInfo - - build - - arguments - - SecondLife.sln - - command - BuildConsole - options - - /build - "/cfg=RelWithDebInfo|Win32" - - - configure - - arguments - - ..\indra - && - ..\indra\tools\vstool\VSTool.exe - --solution - SecondLife.sln - --config - RelWithDebInfo - --startup - secondlife-bin - - options - - -G - "Visual Studio 10" - - - default - True - name - RelWithDebInfo - - RelWithDebInfoOS - - build - - arguments - - SecondLife.sln - - command - msbuild.exe - options - - /p:Configuration=RelWithDebInfo - /p:Platform=Win32 - /t:Build - /p:useenv=true - /verbosity:minimal - /toolsversion:4.0 - /p:"VCBuildAdditionalOptions= /incremental" - - - configure - - options - - -G - "Visual Studio 10" - -DUNATTENDED:BOOL=ON - -DINSTALL_PROPRIETARY=TRUE - -DUSE_KDU=FALSE - -DFMOD=FALSE - - - name - RelWithDebInfoOS - - Release - - build - - arguments - - SecondLife.sln - - command - BuildConsole - options - - /build - "/cfg=Release|Win32" - "/CL_ADD=/m:1" - - - configure - - arguments - - ..\indra - && - ..\indra\tools\vstool\VSTool.exe - --solution - SecondLife.sln - --config - Release - --startup - secondlife-bin - - options - - -G - "Visual Studio 10" - - - name - Release - - ReleaseOS - - build - - arguments - - SecondLife.sln - - command - msbuild.exe - options - - /p:Configuration=Release - /p:Platform=Win32 - /t:Build - /p:useenv=true - /verbosity:minimal - /toolsversion:4.0 - /p:"VCBuildAdditionalOptions= /incremental" - - - configure - - options - - -G - "Visual Studio 10" - -DUNATTENDED:BOOL=ON - -DINSTALL_PROPRIETARY=TRUE - -DUSE_KDU=FALSE - -DFMOD=FALSE - - - name - ReleaseOS - - - name - windows - - - - type - autobuild - version - 1.2 - - + + + + installables + + GLOD + + license + GLOD + license_file + LICENSES/glod.txt + name + GLOD + platforms + + darwin + + archive + + hash + 930bdd987a321eda1838caba8cd6098f + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/Darwin/installer/glod-1.0pre4-darwin-20110519.tar.bz2 + + name + darwin + + linux + + archive + + hash + fb33b6cac2e6b98f93c5efa2af2e5a00 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/Linux/installer/glod-1.0pre4-linux-20110519.tar.bz2 + + name + linux + + windows + + archive + + hash + 388cf0e292f756b4bb37696622f0bbc5 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-glod/rev/230348/arch/CYGWIN/installer/glod-1.0pre4-windows-20110519.tar.bz2 + + name + windows + + + + SDL + + license + lgpl + license_file + LICENSES/SDL.txt + name + SDL + platforms + + linux + + archive + + hash + 69ae3b1c9cdb0ebc0d0e1ac8413e3eb7 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/SDL-1.2.14-linux-20110309.tar.bz2 + + name + linux + + + + apr_suite + + license + apache + license_file + LICENSES/apr_suite.txt + name + apr_suite + platforms + + darwin + + archive + + hash + 9868bfa0b6954e4884c49c6f30068c80 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-darwin-20110217.tar.bz2 + + name + darwin + + linux + + archive + + hash + ff62946c518a247c86e1066c1e9a5855 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-linux-20110309.tar.bz2 + + name + linux + + windows + + archive + + hash + 73785c200a5b4ef74a1230b028bb680d + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-windows-20110217.tar.bz2 + + name + windows + + + + ares + + license + c-ares + license_file + LICENSES/c-ares.txt + name + ares + platforms + + darwin + + archive + + hash + e6caaeea16131e1f2343ecd7765e3147 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.7.1-darwin-20110217.tar.bz2 + + name + darwin + + linux + + archive + + hash + 0745872db83d45f4ab3bdc697d98e264 + url + 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 + + name + linux + + windows + + archive + + hash + 1dcec6babd249a2597114d4ac226c461 + url + 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 + + name + windows + + + + boost + + license + boost + license_file + LICENSES/boost.txt + name + boost + platforms + + darwin + + archive + + hash + d98078791ce345bf6168ce9ba53ca2d7 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/222752/arch/Darwin/installer/boost-1.45.0-darwin-20110304.tar.bz2 + + name + darwin + + linux + + archive + + hash + a34e7fffdb94a6a4d8a2966b1f216da3 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-linux-20110310.tar.bz2 + + name + linux + + windows + + archive + + hash + 98be22c8833aa2bca184b9fa09fbb82b + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-windows-20110124.tar.bz2 + + name + windows + + + + colladadom + + license + scea + license_file + LICENSES/collada.txt + name + colladadom + platforms + + darwin + + archive + + hash + 480b27a0cb39a4adfcdeabef895de3e1 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/227230/arch/Darwin/installer/colladadom-2.2-darwin-20110420.tar.bz2 + + name + darwin + + linux + + archive + + hash + d05be8fc196e9ce7b6636b931cf13dff + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/226716/arch/Linux/installer/colladadom-2.2-linux-20110415.tar.bz2 + + name + linux + + windows + + archive + + hash + a9f548eb6f9aaf292508a8b09c7f2f73 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-colladadom/rev/226584/arch/CYGWIN/installer/colladadom-2.2-windows-20110413.tar.bz2 + + name + windows + + + + curl + + license + curl + license_file + LICENSES/curl.txt + name + curl + platforms + + darwin + + archive + + hash + aaea644191807f51051cefa2fac11069 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-darwin-20110316.tar.bz2 + + name + darwin + + linux + + archive + + hash + 2d9377951d99a1aa4735cea8d4b5aa71 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-linux-20110316.tar.bz2 + + name + linux + + windows + + archive + + hash + fea96aa2a7d513397317194f3d6c979b + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-windows-20110211.tar.bz2 + + name + windows + + + + db + + license + bsd + license_file + LICENSES/db.txt + name + db + platforms + + linux + + archive + + hash + 8f57c413e0786681cbcb9ed2fb8a6d37 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/db-5.1.25-linux-20110309.tar.bz2 + + name + linux + + + + dbusglib + + license + AFL2.1 + license_file + LICENSES/dbus-glib.txt + name + dbusglib + platforms + + linux + + archive + + hash + 94b058b9a81114dc4567bd78e4335425 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/dbus_glib-0.76-linux-20110310.tar.bz2 + + name + linux + + + + elfio + + license + lgpl + license_file + LICENSES/elfio.txt + name + elfio + platforms + + linux + + archive + + hash + 031e6315a5c0829c9b9a2ec18aeb7ae3 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-elfio/rev/222074/arch/Linux/installer/elfio-1.0.3-linux-20110225.tar.bz2 + + name + linux + + + + expat + + license + mit + license_file + LICENSES/expat.txt + name + expat + platforms + + darwin + + archive + + hash + 180e03d0be1f1acfc3244e78742d7bef + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-expat/rev/221695/arch/Darwin/installer/expat-2.0.1-darwin-20110218.tar.bz2 + + name + darwin + + linux + + archive + + hash + 9bd79781b58e556ab1c36084ec4a1c0c + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-expat/rev/221695/arch/Linux/installer/expat-2.0.1-linux-20110219.tar.bz2 + + name + linux + + windows + + archive + + hash + e72db1bda49b205ebdf4945d4ed2b8f8 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/expat-2.0.1-windows-20110215.tar.bz2 + + name + windows + + + + fmod + + license + fmod + license_file + LICENSES/fmod.txt + name + fmod + platforms + + darwin + + archive + + hash + 61ead113e6479452e6b690c84b4e9d30 + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Darwin/installer/fmod-3.75-darwin-20110222.tar.bz2 + + name + darwin + + linux + + archive + + hash + 0c61d643db54d2e5999be8254569d8b3 + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/Linux/installer/fmod-3.75-linux-20110223.tar.bz2 + + name + linux + + windows + + archive + + hash + d9a9a6ad86895353bcd63374a4c1a91d + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-fmod-private/rev/221852/arch/CYGWIN/installer/fmod-3.75-windows-20110222.tar.bz2 + + name + windows + + + + fontconfig + + license + mit + license_file + LICENSES/fontconfig.txt + name + fontconfig + platforms + + linux + + archive + + hash + d8b08b657247566bde5fd853c7622478 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/fontconfig-2.8.0-linux-20110311.tar.bz2 + + name + linux + + + + freeglut + + license + mit + license_file + LICENSES/freeglut.txt + name + freeglut + platforms + + windows + + archive + + hash + 825d5a9bafcc5bfe28dc4c1c4f87c576 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freeglut/rev/221064/arch/CYGWIN/installer/freeglut-2.6.0-windows-20110214.tar.bz2 + + name + windows + + + + freetype + + license + freetype + license_file + LICENSES/freetype.txt + name + freetype + platforms + + darwin + + archive + + hash + c0eacb6348e032fbc69cfdc4bd215ee4 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-darwin-20110307.tar.bz2 + + name + darwin + + linux + + archive + + hash + 9f8a9dc39fd7c3da0fb3533782d1fddf + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-freetype/rev/226814/arch/Linux/installer/freetype-2.3.9-linux-20110418.tar.bz2 + + name + linux + + windows + + archive + + hash + 271349827b939406162ce42e42cd18e0 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.4.4-windows-20110218.tar.bz2 + + name + windows + + + + glext + + license + glext + license_file + LICENSES/glext.txt + name + glext + platforms + + linux + + archive + + hash + 5de58ca0fe19abf68b25956762ee0d29 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glext-68-windows-20110406.tar.bz2 + + name + linux + + windows + + archive + + hash + 5de58ca0fe19abf68b25956762ee0d29 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glext-68-windows-20110406.tar.bz2 + + name + windows + + + + glh_linear + + license + glh_linear + license_file + LICENSES/glh_linear.txt + name + glh_linear + platforms + + darwin + + archive + + hash + 366f940f2634b0e05954646927620bfd + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-darwin-20101004.tar.bz2 + + name + darwin + + linux + + archive + + hash + 26f2df1f0b0fa01e94e0253e322f3583 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-linux-20101001.tar.bz2 + + name + linux + + windows + + archive + + hash + 57f8be28bbaa2505ae3b59deb2c77cdf + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glh_linear-windows-20101011.tar.bz2 + + name + windows + + + + glui + + license + lgpl + license_file + LICENSES/glui.txt + name + glui + platforms + + darwin + + archive + + hash + bd2f84ef8bd308570e2e532a371dc2ef + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glui-2.36-darwin-20110309.tar.bz2 + + name + darwin + + windows + + archive + + hash + e006635a741420a15f40bbdac13bd8d7 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/glui-2.36-windows-20110214.tar.bz2 + + name + windows + + + + google_breakpad + + license + bsd + license_file + LICENSES/google_breakpad.txt + name + google_breakpad + platforms + + darwin + + archive + + hash + 21babc394dbf8572830f2e85adec7b9f + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-darwin-20110202.tar.bz2 + + name + darwin + + linux + + archive + + hash + 204b02a9480c411232255798839431a2 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-linux-20110311.tar.bz2 + + name + linux + + windows + + archive + + hash + 627c51136e14e64c5d39933f3abd3bdf + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/google_breakpad-0.0.0-rev599-windows-20110218.tar.bz2 + + name + windows + + + + googlemock + + license + bsd + license_file + LICENSES/googlemock.txt + name + googlemock + platforms + + darwin + + archive + + hash + 886ee428f058005ab7f90f61784ec9d9 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-darwin-20101004.tar.bz2 + + name + darwin + + linux + + archive + + hash + 782ca04e56d8eab755adcae297cafa7c + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/googlemock-1.1.0-linux-20101001.tar.bz2 + + name + linux + + windows + + archive + + hash + 212701468920519f3989677cea9ca4f1 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gmock-1.5.0-windows-20110224.tar.bz2 + + name + windows + + + + gstreamer + + license + lgpl + license_file + LICENSES/gstreamer.txt + name + gstreamer + platforms + + linux + + archive + + hash + ddbc0a64ad788107877fee777403592c + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gstreamer-linux-20101013.tar.bz2 + + name + linux + + + + gtk-atk-pango-glib + + license + lgpl + license_file + LICENSES/gtk-atk-pango-glib.txt + name + gtk-atk-pango-glib + platforms + + linux + + archive + + hash + 03694ade27f53199229c03cbbda89214 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gtk-atk-pango-glib-linux-20101001.tar.bz2 + + name + linux + + windows + + archive + + hash + c257d718abdde8cfe8a0af26175161a7 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/gtk-atk-pango-glib-windows-20101001a.tar.bz2 + + name + windows + + + + jpeglib + + license + jpeglib + license_file + LICENSES/jpeglib.txt + name + jpeglib + platforms + + darwin + + archive + + hash + 71bd6efbf508e1f2e7d98a6195a93e9e + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-8c-darwin-20110228.tar.bz2 + + name + darwin + + linux + + archive + + hash + dcca1db348831cdb7c6b26dc4076c597 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-jpeglib/rev/224895/arch/Linux/installer/jpeglib-8c-linux-20110323.tar.bz2 + + name + linux + + windows + + archive + + hash + a202ec58cef9097c94acfa958ed6da8d + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-8c-windows-20110217.tar.bz2 + + name + windows + + + + jsoncpp + + license + jsoncpp + license_file + LICENSES/jsoncpp.txt + name + jsoncpp + platforms + + darwin + + archive + + hash + de8b96120c274e052abb4f692861be46 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-darwin-20110131.tar.bz2 + + name + darwin + + linux + + archive + + hash + 840cd9455638c0ea52c613cfddd07d5b + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-linux-20110315.tar.bz2 + + name + linux + + windows + + archive + + hash + afff2018e6a887c281b072eecdd9343e + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jsoncpp-0.5.0-windows-20110208.tar.bz2 + + name + windows + + + + kdu + + license + kdu + license_file + LICENSES/kdu.txt + name + kdu + platforms + + darwin + + archive + + hash + d91e1f483209cd3eba04135c6a59e829 + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/Darwin/installer/kdu-6.4.1-darwin-20110218.tar.bz2 + + name + darwin + + linux + + archive + + hash + fbf8a4f78dff986d7c16b3a0437e033e + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/223538/arch/Linux/installer/kdu-6.4.1-linux-20110311.tar.bz2 + + name + linux + + windows + + archive + + hash + 6cd9f36465ef73a3df34bf2b3bba2ced + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/CYGWIN/installer/kdu-6.4.1-windows-20110218.tar.bz2 + + name + windows + + + + libpng + + license + libpng + license_file + LICENSES/libpng.txt + name + libpng + platforms + + darwin + + archive + + hash + 6fe1adf12d98bce9111f60ee762007b9 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-darwin-20110222.tar.bz2 + + name + darwin + + linux + + archive + + hash + 0681ab7e1988dfdbdad7dd9edb7760ee + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.5.1-linux-20110223.tar.bz2 + + name + linux + + windows + + archive + + hash + f194ba857ca8dd86483a3ef24535d0db + url + 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 + + name + windows + + + + libuuid + + license + lgpl + license_file + LICENSES/libuuid.txt + name + libuuid + platforms + + linux + + archive + + hash + 873e8e99d29711df2efa30646dca1795 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/uuid-1.6.2-linux-20110315.tar.bz2 + + name + linux + + + + libxml + + license + mit + license_file + LICENSES/libxml.txt + name + libxml + platforms + + linux + + archive + + hash + 6414642528f42dac1cd9a012c99cd748 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libxml-2.6.24-linux-20101013.tar.bz2 + + name + linux + + + + llconvexdecomposition + + license + havok + license_file + on_file + name + llconvexdecomposition + platforms + + darwin + + archive + + hash + 6e45ad68506cd1ba49fd35a3201f0478 + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Darwin/installer/llconvexdecomposition-0.1-darwin-20110504.tar.bz2 + + name + darwin + + linux + + archive + + hash + 00ff5144612c2e261a0811a4503ce3ba + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Linux/installer/llconvexdecomposition-0.1-linux-20110504.tar.bz2 + + name + linux + + windows + + archive + + hash + a4635dcbbe0915ce023dd41d3b848d4c + url + http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/CYGWIN/installer/llconvexdecomposition-0.1-windows-20110504.tar.bz2 + + name + windows + + + + llconvexdecompositionstub + + license + lgpl + license_file + LICENSES/lgpl.txt + name + llconvexdecompositionstub + platforms + + darwin + + archive + + hash + bc1388fc28dbb3bba1fe7cb8d09f49b4 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/Darwin/installer/llconvexdecompositionstub-0.3-darwin-20110421.tar.bz2 + + name + darwin + + linux + + archive + + hash + 3295bd4a0514b7c15dda9044f40c175e + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/Linux/installer/llconvexdecompositionstub-0.3-linux-20110422.tar.bz2 + + name + linux + + windows + + archive + + hash + 92f1dff3249024c1534b55343ed79ea3 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llconvexdecompositionstub/rev/227399/arch/CYGWIN/installer/llconvexdecompositionstub-0.3-windows-20110421.tar.bz2 + + name + windows + + + + llqtwebkit + + license + lgpl + license_file + LICENSES/llqtwebkit.txt + name + llqtwebkit + platforms + + darwin + + archive + + hash + 76c1015eafcba5ca9932c3009533b51c + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/225273/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20110329.tar.bz2 + + name + darwin + + linux + + archive + + hash + c05a33ee8b6f253b5a744596dfc3707d + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-qt4.6-20101013.tar.bz2 + + name + linux + + windows + + archive + + hash + 1b1b8e104e39c542d69eb37b5ee81818 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/225249/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20110329.tar.bz2 + + name + windows + + + + mesa + + license + mesa + license_file + LICENSES/mesa.txt + name + mesa + platforms + + linux + + archive + + hash + 1f600840463c7327ea17486821425750 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/mesa-7.0-linux-20100930.tar.bz2 + + name + linux + + + + ndofdev + + license + linden + license_file + LICENSES/libndofdev.txt + name + ndofdev + platforms + + darwin + + archive + + hash + 674d37d2ba76a2df7f18c47bf50b5d03 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libndofdev-0.1-darwin-20110308.tar.bz2 + + name + darwin + + linux + + archive + + hash + c81bacf922bb3b540d92b660364c48ce + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ndofdev-linux-0.2-20101013.tar.bz2 + + name + linux + + windows + + archive + + hash + 3a4bec9562ed6ac53e85abcb1afc5fc0 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libndofdev-0.1-windows-20110223.tar.bz2 + + name + windows + + + + ogg-vorbis + + license + ogg-vorbis + license_file + LICENSES/ogg-vorbis.txt + name + ogg-vorbis + platforms + + darwin + + archive + + hash + e849bc2b779fb7cc5e81aeb021a542c0 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/Darwin/installer/ogg_vorbis-1.2.2-1.3.2-darwin-20110510.tar.bz2 + + name + darwin + + linux + + archive + + hash + 71eaa462eb0bf8842277a3436483a354 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2-linux-20110511.tar.bz2 + + name + linux + + windows + + archive + + hash + 291dbba89dd8162b76f2c2d82e908c6f + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ogvorbis/rev/229529/arch/CYGWIN/installer/ogg_vorbis-1.2.2-1.3.2-windows-20110510.tar.bz2 + + name + windows + + + + openSSL + + license + openSSL + license_file + LICENSES/openssl.txt + name + openSSL + platforms + + darwin + + archive + + hash + facee34b8bd57ad602157e65a5af1a49 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openssl-0.9.8q-darwin-20110211.tar.bz2 + + name + darwin + + linux + + archive + + hash + 3d40be8566fa4b9df9a38e2a0f9ea467 + url + 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 + + name + linux + + windows + + archive + + hash + 774c7f0a0312bee3054757a623e227bc + url + 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 + + name + windows + + + + openal_soft + + license + lgpl + license_file + LICENSES/OPENAL.txt + name + openal_soft + platforms + + linux + + archive + + hash + fccdca18a950ac9363c6fb39118b80e1 + hash_algorithm + md5 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-3ad86a1c-linux-20110114.tar.bz2 + + name + linux + + windows + + archive + + hash + 04df406f3e5d04cf176660bdac66c3a1 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-1.12.854-1.1.0-windows-20110301.tar.bz2 + + name + windows + + + version + 3ad86a1c + + openjpeg + + license + openjpeg + license_file + LICENSES/openjpeg.txt + name + openjpeg + platforms + + darwin + + archive + + hash + 4be51c7cca7d84831e30b63279df7ae5 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-darwin-20110302.tar.bz2 + + name + darwin + + linux + + archive + + hash + fb2382014c79e0049746e4e29bd834f9 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-linux-20110314.tar.bz2 + + name + linux + + windows + + archive + + hash + ca5765af55f798724d601720afdf6953 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openjpeg-1.4-windows-20110302.tar.bz2 + + name + windows + + + + pcre + + license + bsd + license_file + LICENSES/pcre-license.txt + name + pcre + platforms + + darwin + + archive + + hash + a8e74694a0f4248228c13c845ed0a6f8 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Darwin/installer/pcre-7.6-darwin-20110504.tar.bz2 + + name + darwin + + linux + + archive + + hash + bb0abe962b3b8208ed2dab0424aab33d + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-pcre/rev/228822/arch/Linux/installer/pcre-7.6-linux-20110504.tar.bz2 + + name + linux + + + + quicktime + + license + quicktime + license_file + LICENSES/quicktime.txt + name + quicktime + platforms + + windows + + archive + + hash + 52e49ab6937b09882389da0dbaec17f5 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/quicktime-7.3-windows-20110127.tar.bz2 + + name + windows + + + + slvoice + + license + vivox + license_file + LICENSES/slvoice.txt + name + slvoice + platforms + + darwin + + archive + + hash + e19576af3c0affc71293d8f0bcce2606 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-darwin-20110120.tar.bz2 + + name + darwin + + linux + + archive + + hash + 53fefed8120d7c6a0eb6778edae6fa32 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-linux-20110120.tar.bz2 + + name + linux + + windows + + archive + + hash + 44f84b3b45f7067a104a7c34d50d62f0 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/slvoice-3.2.0002.9361-windows-20110120.tar.bz2 + + name + windows + + + + tcmalloc + + license + bsd + license_file + LICENSES/google-perftools.txt + name + tcmalloc + platforms + + linux + + archive + + hash + dde928cb24d22a267004a8c17669ba65 + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226426/arch/Linux/installer/google_perftools-1.7-linux-20110412.tar.bz2 + + name + linux + + windows + + archive + + hash + 8308f7bd68bb7083655753b7abe7225f + url + http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226287/arch/CYGWIN/installer/google_perftools-1.7-windows-20110411.tar.bz2 + + name + windows + + + + tut + + license + bsd + license_file + LICENSES/tut.txt + name + tut + platforms + + common + + archive + + hash + 5c6d3e606f027e78f056cb77b20f228e + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/tut-2008-11-30-common-20101001.tar.bz2 + + name + common + + + + xmlrpc-epi + + license + xmlrpc-epi + license_file + LICENSES/xmlrpc-epi.txt + name + xmlrpc-epi + platforms + + darwin + + archive + + hash + a3e0fb4b4a51b01690a99747a1cca531 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-darwin-20110307.tar.bz2 + + name + darwin + + linux + + archive + + hash + 174ab797440157956eda7061dae37564 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-linux-20110314.tar.bz2 + + name + linux + + windows + + archive + + hash + 5181d1a8f2516928ac064d72acf164a4 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc_epi-0.54.1-windows-20110224.tar.bz2 + + name + windows + + + + zlib + + license + zlib + license_file + LICENSES/zlib.txt + name + zlib + platforms + + darwin + + archive + + hash + 49b8de20f3bb43537f51311894a72de1 + url + http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/zlib-1.2.5-darwin-20110211.tar.bz2 + + name + darwin + + linux + + archive + + hash + 7b4cf3aa2c04937d0a20761516587896 + url + 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 + + name + linux + + windows + + archive + + hash + 5852192646681817fc3c3a8c95e91c1e + url + 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 + + name + windows + + + + + package_description + + name + viewer_development + platforms + + common + + configurations + + Debug + + build + + + configure + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=Debug + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=TRUE + + + name + Debug + + DebugOS + + configure + + arguments + + ../indra + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=Debug + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=FALSE + + + name + DebugOS + + RelWithDebInfo + + build + + + configure + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=TRUE + + + name + RelWithDebInfo + + RelWithDebInfoOS + + configure + + arguments + + ../indra + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=FALSE + + + name + RelWithDebInfoOS + + Release + + build + + + configure + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=Release + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=TRUE + + + name + Release + + ReleaseOS + + configure + + arguments + + ../indra + + command + cmake + options + + -DCMAKE_BUILD_TYPE:STRING=Release + -DWORD_SIZE:STRING=32 + -DROOT_PROJECT_NAME:STRING=SecondLife + -DINSTALL_PROPRIETARY=FALSE + + + name + ReleaseOS + + + name + common + + darwin + + build_directory + build-darwin-i386 + configurations + + Debug + + build + + arguments + + | + grep + -v + setenv + + command + xcodebuild + options + + -configuration Debug + -project SecondLife.xcodeproj + + + configure + + arguments + + ../indra + + options + + -G + 'Xcode' + + + name + Debug + + DebugOS + + build + + command + xcodebuild + options + + -configuration Debug + -project SecondLife.xcodeproj + + + configure + + options + + -G + 'Xcode' + + + name + DebugOS + + RelWithDebInfo + + build + + arguments + + | + grep + -v + setenv + + command + xcodebuild + options + + -configuration RelWithDebInfo + -project SecondLife.xcodeproj + + + configure + + arguments + + ../indra + + options + + -G + 'Xcode' + + + default + True + name + RelWithDebInfo + + RelWithDebInfoOS + + build + + command + xcodebuild + options + + -configuration RelWithDebInfo + -project SecondLife.xcodeproj + + + configure + + options + + -G + 'Xcode' + + + name + RelWithDebInfoOS + + Release + + build + + arguments + + | + grep + -v + setenv + + command + xcodebuild + options + + -configuration Release + -project SecondLife.xcodeproj + + + configure + + arguments + + ../indra + + options + + -G + 'Xcode' + + + name + Release + + ReleaseOS + + build + + command + xcodebuild + options + + -configuration Release + -project SecondLife.xcodeproj + + + configure + + options + + -G + 'Xcode' + + + name + ReleaseOS + + + name + darwin + + linux + + build_directory + build-linux-i686 + configurations + + Debug + + build + + command + make + options + + -j 12 + + + configure + + arguments + + ../indra + + options + + -G + 'Unix Makefiles' + + + name + Debug + + DebugOS + + build + + command + make + options + + -j 2 + + + configure + + options + + -G + 'Unix Makefiles' + + + name + DebugOS + + RelWithDebInfo + + build + + command + make + options + + -j 12 + + + configure + + arguments + + ../indra + + options + + -G + 'Unix Makefiles' + + + default + True + name + RelWithDebInfo + + RelWithDebInfoOS + + build + + command + make + options + + -j 2 + + + configure + + options + + -G + 'Unix Makefiles' + + + name + RelWithDebInfoOS + + Release + + build + + command + make + options + + -j 12 + + + configure + + arguments + + ../indra + + options + + -G + 'Unix Makefiles' + + + name + Release + + ReleaseOS + + build + + command + make + options + + -j 2 + + + configure + + options + + -G + 'Unix Makefiles' + + + name + ReleaseOS + + default + + build + + + name + default + + + name + linux + + windows + + build_directory + build-vc100 + configurations + + Debug + + build + + arguments + + SecondLife.sln + + command + BuildConsole + options + + /build + "/cfg=Debug|Win32" + + + configure + + arguments + + ..\indra + && + ..\indra\tools\vstool\VSTool.exe + --solution + SecondLife.sln + --config + Debug + --startup + secondlife-bin + + options + + -G + "Visual Studio 10" + + + name + Debug + + DebugOS + + build + + arguments + + SecondLife.sln + + command + msbuild.exe + options + + /p:Configuration=Debug + /p:Platform=Win32 + /t:Build + /p:useenv=true + /verbosity:minimal + /toolsversion:4.0 + /p:"VCBuildAdditionalOptions= /incremental" + + + configure + + options + + -G + "Visual Studio 10" + -DUNATTENDED:BOOL=ON + -DUSE_KDU=FALSE + -DFMOD=FALSE + + + name + DebugOS + + RelWithDebInfo + + build + + arguments + + SecondLife.sln + + command + BuildConsole + options + + /build + "/cfg=RelWithDebInfo|Win32" + + + configure + + arguments + + ..\indra + && + ..\indra\tools\vstool\VSTool.exe + --solution + SecondLife.sln + --config + RelWithDebInfo + --startup + secondlife-bin + + options + + -G + "Visual Studio 10" + + + default + True + name + RelWithDebInfo + + RelWithDebInfoOS + + build + + arguments + + SecondLife.sln + + command + msbuild.exe + options + + /p:Configuration=RelWithDebInfo + /p:Platform=Win32 + /t:Build + /p:useenv=true + /verbosity:minimal + /toolsversion:4.0 + /p:"VCBuildAdditionalOptions= /incremental" + + + configure + + options + + -G + "Visual Studio 10" + -DUNATTENDED:BOOL=ON + -DINSTALL_PROPRIETARY=FALSE + -DUSE_KDU=FALSE + -DFMOD=FALSE + + + name + RelWithDebInfoOS + + Release + + build + + arguments + + SecondLife.sln + + command + BuildConsole + options + + /build + "/cfg=Release|Win32" + "/CL_ADD=/m:1" + + + configure + + arguments + + ..\indra + && + ..\indra\tools\vstool\VSTool.exe + --solution + SecondLife.sln + --config + Release + --startup + secondlife-bin + + options + + -G + "Visual Studio 10" + + + name + Release + + ReleaseOS + + build + + arguments + + SecondLife.sln + + command + msbuild.exe + options + + /p:Configuration=Release + /p:Platform=Win32 + /t:Build + /p:useenv=true + /verbosity:minimal + /toolsversion:4.0 + /p:"VCBuildAdditionalOptions= /incremental" + + + configure + + options + + -G + "Visual Studio 10" + -DUNATTENDED:BOOL=ON + -DINSTALL_PROPRIETARY=FALSE + -DUSE_KDU=FALSE + -DFMOD=FALSE + + + name + ReleaseOS + + + name + windows + + + + type + autobuild + version + 1.2 + + diff --git a/build.sh b/build.sh index b322d30daf..4268c76e78 100755 --- a/build.sh +++ b/build.sh @@ -32,19 +32,23 @@ build_dir_CYGWIN() installer_Darwin() { - ls -1td "$(build_dir_Darwin Release)/newview/"*.dmg 2>/dev/null | sed 1q + ls -1td "$(build_dir_Darwin ${last_built_variant:-Release})/newview/"*.dmg 2>/dev/null | sed 1q } installer_Linux() { - ls -1td "$(build_dir_Linux Release)/newview/"*.tar.bz2 2>/dev/null | sed 1q + ls -1td "$(build_dir_Linux ${last_built_variant:-Release})/newview/"*.tar.bz2 2>/dev/null | sed 1q } installer_CYGWIN() { - d=$(build_dir_CYGWIN Release) - p=$(sed 's:.*=::' "$d/newview/Release/touched.bat") - echo "$d/newview/Release/$p" + v=${last_built_variant:-Release} + d=$(build_dir_CYGWIN $v) + if [ -r "$d/newview/$v/touched.bat" ] + then + p=$(sed 's:.*=::' "$d/newview/$v/touched.bat") + echo "$d/newview/$v/$p" + fi } pre_build() diff --git a/doc/contributions.txt b/doc/contributions.txt index 163667c8ad..dfbccb5a6c 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -158,6 +158,7 @@ Ann Congrejo Ansariel Hiller STORM-1101 Ardy Lay + STORM-859 VWR-19499 VWR-24917 Argent Stonecutter @@ -254,6 +255,8 @@ Dale Glass VWR-2502 VWR-1358 VWR-2041 +Draconis Neurocam + STORM-1259 Drew Dri VWR-19683 Drewan Keats @@ -367,6 +370,7 @@ Ian Kas Ima Mechanique OPEN-50 OPEN-61 + STORM-1175 Irene Muni CT-324 CT-352 @@ -435,6 +439,7 @@ Jonathan Yap STORM-956 STORM-1095 STORM-1236 + STORM-1259 Kage Pixel VWR-11 Ken March @@ -452,6 +457,7 @@ Kitty Barnett STORM-799 STORM-800 STORM-1001 + STORM-1175 VWR-24217 Kunnis Basiat VWR-82 @@ -460,6 +466,8 @@ Lance Corrimal VWR-25269 Latif Khalifa VWR-5370 +leliel Mirihi + STORM-1100 Lisa Lowe CT-218 CT-219 @@ -762,6 +770,8 @@ Strife Onizuka VWR-2265 VWR-4111 SNOW-691 +TankMaster Finesmith + STORM-1100 Tayra Dagostino SNOW-517 SNOW-543 @@ -823,6 +833,8 @@ Tofu Buzzard VWR-24509 TraductoresAnonimos Alter CT-324 +TriloByte Zanzibar + STORM-1100 Tue Torok CT-68 CT-69 @@ -889,6 +901,7 @@ WolfPup Lowenhar STORM-674 STORM-776 STORM-825 + STORM-859 STORM-1098 VWR-20741 VWR-20933 diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 320a9be8ab..ce2d1e0386 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -109,6 +109,8 @@ def main(command, libpath=[], vars={}): os.environ.update(dict([(str(key), str(value)) for key, value in vars.iteritems()])) # Run the child process. print "Running: %s" % " ".join(command) + # Make sure we see all relevant output *before* child-process output. + sys.stdout.flush() return subprocess.call(command) if __name__ == "__main__": diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 79124a5a37..7703132d90 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,8 +28,8 @@ #define LL_LLVERSIONVIEWER_H const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 6; -const S32 LL_VERSION_PATCH = 9; +const S32 LL_VERSION_MINOR = 7; +const S32 LL_VERSION_PATCH = 0; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index bdac125eb0..6085c61f9a 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1532,7 +1532,7 @@ bool LLNotifications::loadVisibilityRules() // Add a simple notification (from XUI) void LLNotifications::addFromCallback(const LLSD& name) { - add(LLNotification::Params().name(name.asString())); + add(name.asString(), LLSD(), LLSD()); } LLNotificationPtr LLNotifications::add(const std::string& name, diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp index 5536ed8f69..041436ed92 100644 --- a/indra/llvfs/lldiriterator.cpp +++ b/indra/llvfs/lldiriterator.cpp @@ -55,7 +55,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) // Check if path exists. if (!fs::exists(dir_path)) { - llerrs << "Invalid path: \"" << dir_path.string() << "\"" << llendl; + llwarns << "Invalid path: \"" << dir_path.string() << "\"" << llendl; return; } @@ -100,7 +100,7 @@ bool LLDirIterator::Impl::next(std::string &fname) if (!mIsValid) { - llerrs << "The iterator is not correctly initialized." << llendl; + llwarns << "The iterator is not correctly initialized." << llendl; return false; } diff --git a/indra/llxuixml/lltrans.cpp b/indra/llxuixml/lltrans.cpp index b403b86048..5388069c24 100644 --- a/indra/llxuixml/lltrans.cpp +++ b/indra/llxuixml/lltrans.cpp @@ -30,6 +30,7 @@ #include "llfasttimer.h" // for call count statistics #include "llxuiparser.h" +#include "llsd.h" #include "llxmlnode.h" #include @@ -155,13 +156,28 @@ std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil:: } else { - LLSD args; - args["STRING_NAME"] = xml_desc; LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; + return "MissingString("+xml_desc+")"; + } +} - //LLNotificationsUtil::add("MissingString", args); // *TODO: resurrect - //return xml_desc; +//static +std::string LLTrans::getString(const std::string &xml_desc, const LLSD& msg_args) +{ + // Don't care about time as much as call count. Make sure we're not + // calling LLTrans::getString() in an inner loop. JC + LLFastTimer timer(FTM_GET_TRANS); + template_map_t::iterator iter = sStringTemplates.find(xml_desc); + if (iter != sStringTemplates.end()) + { + std::string text = iter->second.mText; + LLStringUtil::format(text, msg_args); + return text; + } + else + { + LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; return "MissingString("+xml_desc+")"; } } @@ -183,11 +199,27 @@ bool LLTrans::findString(std::string &result, const std::string &xml_desc, const } else { - LLSD args; - args["STRING_NAME"] = xml_desc; - LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; - //LLNotificationsUtil::add("MissingString", args); - + LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; + return false; + } +} + +//static +bool LLTrans::findString(std::string &result, const std::string &xml_desc, const LLSD& msg_args) +{ + LLFastTimer timer(FTM_GET_TRANS); + + template_map_t::iterator iter = sStringTemplates.find(xml_desc); + if (iter != sStringTemplates.end()) + { + std::string text = iter->second.mText; + LLStringUtil::format(text, msg_args); + result = text; + return true; + } + else + { + LL_WARNS_ONCE("configuration") << "Missing String in strings.xml: [" << xml_desc << "]" << LL_ENDL; return false; } } diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h index b7091f77e8..128b51d383 100644 --- a/indra/llxuixml/lltrans.h +++ b/indra/llxuixml/lltrans.h @@ -34,6 +34,8 @@ class LLXMLNode; +class LLSD; + /** * @brief String template loaded from strings.xml */ @@ -74,7 +76,9 @@ public: * @returns Translated string */ static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args); + static std::string getString(const std::string &xml_desc, const LLSD& args); static bool findString(std::string &result, const std::string &xml_desc, const LLStringUtil::format_map_t& args); + static bool findString(std::string &result, const std::string &xml_desc, const LLSD& args); // Returns translated string with [COUNT] replaced with a number, following // special per-language logic for plural nouns. For example, some languages diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 2ecce0ebd3..cbf22b75e8 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -76,6 +76,7 @@ include_directories( ) set(viewer_SOURCE_FILES + groupchatlistener.cpp llagent.cpp llagentaccess.cpp llagentcamera.cpp @@ -624,6 +625,7 @@ endif (LINUX) set(viewer_HEADER_FILES CMakeLists.txt ViewerInstall.cmake + groupchatlistener.h llagent.h llagentaccess.h llagentcamera.h diff --git a/indra/newview/app_settings/windlight/postprocesseffects.xml b/indra/newview/app_settings/windlight/postprocesseffects.xml index 4645215a47..60fbfd3483 100644 --- a/indra/newview/app_settings/windlight/postprocesseffects.xml +++ b/indra/newview/app_settings/windlight/postprocesseffects.xml @@ -1,2 +1 @@ Asi Weirdbloom_strength4.5799999237060547bloom_width12.539999961853027brightness0.89999997615814209brightness_multiplier3contrast0.22999998927116394contrast_base1110.5enable_bloom1enable_color_filter1enable_night_vision0extract_high1extract_low0.47999998927116394noise_size25noise_strength0.40000000000000002saturation-1NegativeSaturationbloom_strength1.5bloom_width2.25brightness1brightness_multiplier3contrast1contrast_base1110.5enable_bloom0enable_color_filter1enable_night_vision0extract_high1extract_low0.94999999999999996noise_size25noise_strength0.40000000000000002saturation-1NightVisionbloom_strength1.5bloom_width2.25brightness1brightness_multiplier3contrast1contrast_base1110.5enable_bloom0enable_color_filter0enable_night_vision1extract_high1extract_low0.94999999999999996noise_size25noise_strength0.40000000000000002saturation1WGhostbloom_strength2.0399999618530273bloom_width2.25brightness1brightness_multiplier3contrast1contrast_base1110.5enable_bloom1enable_color_filter0enable_night_vision0extract_high1extract_low0.22999998927116394noise_size25noise_strength0.40000000000000002saturation1defaultbloom_strength1.5bloom_width2.25brightness1brightness_multiplier3contrast1contrast_base1110.5enable_bloom0enable_color_filter0enable_night_vision0extract_high1extract_low0.94999999999999996noise_size25noise_strength0.40000000000000002saturation1 ->bloom_strength1.5bloom_width2.25brightness1brightness_multiplier3contrast1contrast_base1110.5enable_bloom0enable_color_filter0enable_night_vision0extract_high1extract_low0.94999999999999996noise_size25noise_strength0.40000000000000002saturation1 diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index 66b3b97f00..6ed4e3b7f7 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -1,10 +1,20 @@ -// +// // Categorizes graphics chips into various classes by name // -// The table contains chip names regular expressions to match +// The table contains regular expressions to match // against driver strings, a class number, and whether we claim // to support them or not. // +// If you modify this table, use the (perl) gpu_table_tester +// to compare the results of recognizing known cards (it is easy +// to mess this up by putting things in the wrong order): +// +// perl ../../scripts/gpu_table_tester -g gpu_table.txt tests/gpus_seen.txt | diff - tests/gpus_results.txt +// +// Format: +// Fields are separated by one or more tab (not space) characters +// +// // Class Numbers: // 0 - Defaults to low graphics settings. No shaders on by default // 1 - Defaults to mid graphics settings. Basic shaders on by default @@ -15,336 +25,495 @@ // 0 - We claim to not support this card. // 1 - We claim to support this card. // -// Format: -// -// -3Dfx .*3Dfx.* 0 0 -3Dlabs .*3Dlabs.* 0 0 -ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 -ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 -ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 -ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 -ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 -ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 -ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 -ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 2 1 -ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 -ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 -ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 -ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 -ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 -ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 -ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1 -ATI ASUS AH34xx .*ATI.*ASUS.*AH34.* 1 1 -ATI ASUS AH36xx .*ATI.*ASUS.*AH36.* 3 1 -ATI ASUS AH46xx .*ATI.*ASUS.*AH46.* 3 1 -ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1 -ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 -ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 -ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 -ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 -ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 -ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 -ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 -ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 1 1 -ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 -ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 -ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 -ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1 -ATI Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 -ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 -ATI Radeon X500 .*ATI.*Diamond X5.* 1 1 -ATI Radeon X13xx .*ATI.*Diamond X13.* 1 1 -ATI Radeon X16xx .*ATI.*Diamond X16.* 1 1 -ATI Radeon X19xx .*ATI.*Diamond X19.* 1 1 -ATI Display Adapter .*ATI.*display adapter.* 0 1 -ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 -ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 -ATI FireGL .*ATI.*Fire.*GL.* 0 1 -ATI FireMV .*ATI.*FireMV.* 0 0 -ATI Generic .*ATI.*Generic.* 0 0 -ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 -ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 -ATI M52 .*ATI.*M52.* 1 1 -ATI M54 .*ATI.*M54.* 1 1 -ATI M56 .*ATI.*M56.* 1 1 -ATI M71 .*ATI.*M71.* 1 1 -ATI M72 .*ATI.*M72.* 1 1 -ATI M76 .*ATI.*M76.* 3 1 -ATI Mobility Radeon 4100 .*ATI.*Mobility *41.* 0 1 -ATI Mobility Radeon 7xxx .*ATI.*Mobility *Radeon 7.* 0 1 -ATI Mobility Radeon 8xxx .*ATI.*Mobility *Radeon 8.* 0 1 -ATI Mobility Radeon 9800 .*ATI.*Mobility *98.* 0 1 -ATI Mobility Radeon 9700 .*ATI.*Mobility *97.* 0 1 -ATI Mobility Radeon 9600 .*ATI.*Mobility *96.* 0 1 -ATI Mobility Radeon HD 2300 .*ATI.*Mobility *HD *23.* 1 1 -ATI Mobility Radeon HD 2400 .*ATI.*Mobility *HD *24.* 1 1 -ATI Mobility Radeon HD 2600 .*ATI.*Mobility *HD *26.* 3 1 -ATI Mobility Radeon HD 3400 .*ATI.*Mobility *HD *34.* 1 1 -ATI Mobility Radeon HD 3600 .*ATI.*Mobility *HD *36.* 3 1 -ATI Mobility Radeon HD 3800 .*ATI.*Mobility *HD *38.* 3 1 -ATI Mobility Radeon HD 5400 .*ATI.*Mobility *HD *54.* 1 1 -ATI Mobility Radeon HD 5500 .*ATI.*Mobility *HD *55.* 1 1 -ATI Mobility Radeon X1xxx .*ATI.*Mobility *X1.* 0 1 -ATI Mobility Radeon X2xxx .*ATI.*Mobility *X2.* 0 1 -ATI Mobility Radeon X3xx .*ATI.*Mobility *X3.* 1 1 -ATI Mobility Radeon X6xx .*ATI.*Mobility *X6.* 1 1 -ATI Mobility Radeon X7xx .*ATI.*Mobility *X7.* 1 1 -ATI Mobility Radeon Xxxx .*ATI.*Mobility *X.* 0 1 -ATI Radeon HD 2300 .*ATI.*Radeon HD *23.* 0 1 -ATI Radeon HD 2400 .*ATI.*Radeon HD *24.* 1 1 -ATI Radeon HD 2600 .*ATI.*Radeon HD *26.* 2 1 -ATI Radeon HD 2900 .*ATI.*Radeon HD *29.* 3 1 -ATI Radeon HD 3200 .*ATI.*Radeon *HD *32.* 0 1 -ATI Radeon HD 3300 .*ATI.*Radeon HD *33.* 1 1 -ATI Radeon HD 3400 .*ATI.*Radeon HD *34.* 1 1 -ATI Radeon HD 3600 .*ATI.*Radeon HD *36.* 3 1 -ATI Radeon HD 3800 .*ATI.*Radeon HD *38.* 3 1 -ATI Radeon HD 4200 .*ATI.*Radeon HD *42.* 1 1 -ATI Radeon HD 4300 .*ATI.*Radeon HD *43.* 1 1 -ATI Radeon HD 4500 .*ATI.*Radeon HD *45.* 3 1 -ATI Radeon HD 4600 .*ATI.*Radeon HD *46.* 3 1 -ATI Radeon HD 4700 .*ATI.*Radeon HD *47.* 3 1 -ATI Radeon HD 4800 .*ATI.*Radeon.*HD *48.* 3 1 -ATI Radeon HD 5400 .*ATI.*Radeon.*HD *54.* 3 1 -ATI Radeon HD 5500 .*ATI.*Radeon.*HD *55.* 3 1 -ATI Radeon HD 5600 .*ATI.*Radeon.*HD *56.* 3 1 -ATI Radeon HD 5700 .*ATI.*Radeon.*HD *57.* 3 1 -ATI Radeon HD 5800 .*ATI.*Radeon.*HD *58.* 3 1 -ATI Radeon HD 5900 .*ATI.*Radeon.*HD *59.* 3 1 -ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 -ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 -ATI Radeon 3000 .*ATI.*Radeon 30.* 0 1 -ATI Radeon 3100 .*ATI.*Radeon 31.* 0 1 -ATI Radeon 7xxx .*ATI.*Radeon 7.* 0 1 -ATI Radeon 8xxx .*ATI.*Radeon 8.* 0 1 -ATI Radeon 9000 .*ATI.*Radeon 90.* 0 1 -ATI Radeon 9100 .*ATI.*Radeon 91.* 0 1 -ATI Radeon 9200 .*ATI.*Radeon 92.* 0 1 -ATI Radeon 9500 .*ATI.*Radeon 95.* 0 1 -ATI Radeon 9600 .*ATI.*Radeon 96.* 0 1 -ATI Radeon 9700 .*ATI.*Radeon 97.* 1 1 -ATI Radeon 9800 .*ATI.*Radeon 98.* 1 1 -ATI Radeon RV250 .*ATI.*RV250.* 0 1 -ATI Radeon RV600 .*ATI.*RV6.* 1 1 -ATI Radeon RX700 .*ATI.*RX70.* 1 1 -ATI Radeon RX800 .*ATI.*Radeon *RX80.* 2 1 -ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 -ATI Radeon VE .*ATI.*Radeon.*VE.* 0 0 -ATI Radeon X1000 .*ATI.*Radeon *X10.* 0 1 -ATI Radeon X1200 .*ATI.*Radeon *X12.* 0 1 -ATI Radeon X1300 .*ATI.*Radeon *X13.* 1 1 -ATI Radeon X1400 .*ATI.*Radeon *X14.* 1 1 -ATI Radeon X1500 .*ATI.*Radeon *X15.* 1 1 -ATI Radeon X1600 .*ATI.*Radeon *X16.* 1 1 -ATI Radeon X1700 .*ATI.*Radeon *X17.* 1 1 -ATI Radeon X1800 .*ATI.*Radeon *X18.* 3 1 -ATI Radeon X1900 .*ATI.*Radeon *X19.* 3 1 -ATI Radeon X300 .*ATI.*Radeon *X3.* 0 1 -ATI Radeon X400 .*ATI.*Radeon X4.* 0 1 -ATI Radeon X500 .*ATI.*Radeon X5.* 0 1 -ATI Radeon X600 .*ATI.*Radeon X6.* 1 1 -ATI Radeon X700 .*ATI.*Radeon X7.* 1 1 -ATI Radeon X800 .*ATI.*Radeon X8.* 2 1 -ATI Radeon X900 .*ATI.*Radeon X9.* 2 1 -ATI Radeon Xpress .*ATI.*Radeon Xpress.* 0 0 -ATI Rage 128 .*ATI.*Rage 128.* 0 1 -ATI RV250 .*ATI.*RV250.* 0 1 -ATI RV380 .*ATI.*RV380.* 0 1 -ATI RV530 .*ATI.*RV530.* 1 1 -ATI RX700 .*ATI.*RX700.* 1 1 -Intel X3100 .*Intel.*X3100.* 0 1 -Intel 830M .*Intel.*830M 0 0 -Intel 845G .*Intel.*845G 0 0 -Intel 855GM .*Intel.*855GM 0 0 -Intel 865G .*Intel.*865G 0 0 -Intel 900 .*Intel.*900.*900 0 0 -Intel 915GM .*Intel.*915GM 0 0 -Intel 915G .*Intel.*915G 0 0 -Intel 945GM .*Intel.*945GM.* 0 1 -Intel 945G .*Intel.*945G.* 0 1 -Intel 950 .*Intel.*950.* 0 1 -Intel 965 .*Intel.*965.* 0 1 -Intel G33 .*Intel.*G33.* 0 0 -Intel G41 .*Intel.*G41.* 0 1 -Intel G45 .*Intel.*G45.* 0 1 -Intel Bear Lake .*Intel.*Bear Lake.* 0 0 -Intel Broadwater .*Intel.*Broadwater.* 0 0 -Intel Brookdale .*Intel.*Brookdale.* 0 0 -Intel Cantiga .*Intel.*Cantiga.* 0 0 -Intel Eaglelake .*Intel.*Eaglelake.* 0 1 -Intel Graphics Media HD .*Intel(R) Graphics Media.*HD.* 0 1 -Intel HD Graphics .*Intel(R) HD Graphics.* 0 1 -Intel Mobile 4 Series .*Intel.*Mobile.*4 Series.* 0 1 -Intel Media Graphics HD .*Intel Media Graphics HD.* 0 1 -Intel Montara .*Intel.*Montara.* 0 0 -Intel Pineview .*Intel.*Pineview.* 0 1 -Intel Springdale .*Intel.*Springdale.* 0 0 -Matrox .*Matrox.* 0 0 -Mesa .*Mesa.* 0 0 -NVIDIA 310M .*NVIDIA.*GeForce 310M.* 0 1 -NVIDIA 310 .*NVIDIA.*GeForce 310.* 0 1 -NVIDIA 320M .*NVIDIA.*GeForce 320M.* 0 1 -NVIDIA G100M .*NVIDIA.*GeForce G *100M.* 0 1 -NVIDIA G102M .*NVIDIA.*GeForce G *102M.* 0 1 -NVIDIA G103M .*NVIDIA.*GeForce G *103M.* 0 1 -NVIDIA G105M .*NVIDIA.*GeForce G *105M.* 0 1 -NVIDIA G210M .*NVIDIA.*GeForce G210M.* 0 1 -NVIDIA GT 120 .*NVIDIA.*GeForce GT 12.* 1 1 -NVIDIA GT 130 .*NVIDIA.*GeForce GT 13.* 1 1 -NVIDIA GT 220 .*NVIDIA.*GeForce GT 22.* 1 1 -NVIDIA GT 230 .*NVIDIA.*GeForce GT 23.* 1 1 -NVIDIA GT 240 .*NVIDIA.*GeForce GT 24.* 1 1 -NVIDIA GT 320 .*NVIDIA.*GeForce GT 32.* 0 1 -NVIDIA GT 330M .*NVIDIA.*GeForce GT 330M.* 1 1 -NVIDIA GTS 240 .*NVIDIA.*GeForce GTS 24.* 1 1 -NVIDIA GTS 250 .*NVIDIA.*GeForce GTS 25.* 3 1 -NVIDIA GTS 360M .*NVIDIA.*GeForce GTS 360M.* 3 1 -NVIDIA GTX 260 .*NVIDIA.*GeForce GTX 26.* 3 1 -NVIDIA GTX 270 .*NVIDIA.*GeForce GTX 27.* 3 1 -NVIDIA GTX 280 .*NVIDIA.*GeForce GTX 28.* 3 1 -NVIDIA GTX 290 .*NVIDIA.*GeForce GTX 29.* 3 1 -NVIDIA GTX 470 .*NVIDIA.*GeForce GTX 47.* 3 1 -NVIDIA GTX 480 .*NVIDIA.*GeForce GTX 48.* 3 1 -NVIDIA GTX 580 .*NVIDIA.*GeForce GTX 58.* 3 1 -NVIDIA C51 .*NVIDIA.*C51.* 0 1 -NVIDIA G72 .*NVIDIA.*G72.* 1 1 -NVIDIA G73 .*NVIDIA.*G73.* 1 1 -NVIDIA G84 .*NVIDIA.*G84.* 3 1 -NVIDIA G86 .*NVIDIA.*G86.* 3 1 -NVIDIA G92 .*NVIDIA.*G92.* 3 1 -NVIDIA GeForce .*GeForce 256.* 0 0 -NVIDIA GeForce 2 .*GeForce2.* 0 1 -NVIDIA GeForce 3 .*GeForce3.* 0 1 -NVIDIA GeForce 4 Go .*NVIDIA.*GeForce4.*Go.* 0 1 -NVIDIA GeForce 4 MX .*NVIDIA.*GeForce4 MX.* 0 1 -NVIDIA GeForce 4 Ti .*NVIDIA.*GeForce4 Ti.* 0 1 -NVIDIA GeForce 6100 .*NVIDIA.*GeForce 61.* 0 1 -NVIDIA GeForce 6200 .*NVIDIA.*GeForce 62.* 0 1 -NVIDIA GeForce 6500 .*NVIDIA.*GeForce 65.* 0 1 -NVIDIA GeForce 6600 .*NVIDIA.*GeForce 66.* 1 1 -NVIDIA GeForce 6700 .*NVIDIA.*GeForce 67.* 2 1 -NVIDIA GeForce 6800 .*NVIDIA.*GeForce 68.* 2 1 -NVIDIA GeForce 7000 .*NVIDIA.*GeForce 70.* 0 1 -NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1 -NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 -NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 -NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 -NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 1 1 -NVIDIA GeForce 7800 .*NVIDIA.*GeForce 78.* 1 1 -NVIDIA GeForce 7900 .*NVIDIA.*GeForce 79.* 1 1 -NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 -NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 -NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 -NVIDIA GeForce 8400 .*NVIDIA.*GeForce 84.* 1 1 -NVIDIA GeForce 8500 .*GeForce 85.* 1 1 -NVIDIA GeForce 8600M .*NVIDIA.*GeForce.*8600M.* 1 1 -NVIDIA GeForce 8600 .*NVIDIA.*GeForce 86.* 3 1 -NVIDIA GeForce 8700 .*NVIDIA.*GeForce 87.* 3 1 -NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 -NVIDIA GeForce 9100 .*NVIDIA.*GeForce 9100.* 0 1 -NVIDIA GeForce 9200 .*NVIDIA.*GeForce 9200.* 0 1 -NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 -NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 -NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 -NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 3 1 -NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 3 1 -NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 -NVIDIA GeForce 9400 .*GeForce 94.* 1 1 -NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 -NVIDIA GeForce 9600 .*NVIDIA.*GeForce.*96.* 3 1 -NVIDIA GeForce 9800 .*NVIDIA.*GeForce.*98.* 3 1 -NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1 -NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1 -NVIDIA GeForce FX 5500 .*NVIDIA.*GeForce FX 55.* 0 1 -NVIDIA GeForce FX 5600 .*NVIDIA.*GeForce FX 56.* 0 1 -NVIDIA GeForce FX 5700 .*NVIDIA.*GeForce FX 57.* 1 1 -NVIDIA GeForce FX 5800 .*NVIDIA.*GeForce FX 58.* 1 1 -NVIDIA GeForce FX 5900 .*NVIDIA.*GeForce FX 59.* 1 1 -NVIDIA GeForce FX Go5100 .*NVIDIA.*GeForce FX Go51.* 0 1 -NVIDIA GeForce FX Go5200 .*NVIDIA.*GeForce FX Go52.* 0 1 -NVIDIA GeForce FX Go5300 .*NVIDIA.*GeForce FX Go53.* 0 1 -NVIDIA GeForce FX Go5500 .*NVIDIA.*GeForce FX Go55.* 0 1 -NVIDIA GeForce FX Go5600 .*NVIDIA.*GeForce FX Go56.* 0 1 -NVIDIA GeForce FX Go5700 .*NVIDIA.*GeForce FX Go57.* 1 1 -NVIDIA GeForce FX Go5800 .*NVIDIA.*GeForce FX Go58.* 1 1 -NVIDIA GeForce FX Go5900 .*NVIDIA.*GeForce FX Go59.* 1 1 -NVIDIA GeForce Go 6100 .*NVIDIA.*GeForce Go 61.* 0 1 -NVIDIA GeForce Go 6200 .*NVIDIA.*GeForce Go 62.* 0 1 -NVIDIA GeForce Go 6500 .*NVIDIA.*GeForce Go 65.* 1 1 -NVIDIA GeForce Go 6600 .*NVIDIA.*GeForce Go 66.* 1 1 -NVIDIA GeForce Go 6700 .*NVIDIA.*GeForce Go 67.* 1 1 -NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 -NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 -NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 -NVIDIA GeForce Go 7300 LE .*NVIDIA.*GeForce Go 73.*LE.* 0 1 -NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 -NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 -NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 -NVIDIA GeForce Go 7800 .*NVIDIA.*GeForce Go 78.* 2 1 -NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1 -NVIDIA D9M .*D9M.* 1 1 -NVIDIA G84 .*G84.* 1 1 -NVIDIA G92 .*G92.* 3 1 -NVIDIA G94 .*G94.* 3 1 -NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 -NVIDIA ION .*NVIDIA ION.* 1 1 -NVIDIA NB9M .*GeForce NB9M.* 1 1 -NVIDIA NB9P .*GeForce NB9P.* 1 1 -NVIDIA GeForce PCX .*GeForce PCX.* 0 1 -NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 -NVIDIA NV17 .*GeForce NV17.* 0 1 -NVIDIA NV34 .*NVIDIA.*NV34.* 0 1 -NVIDIA NV35 .*NVIDIA.*NV35.* 0 1 -NVIDIA NV36 .*GeForce NV36.* 1 1 -NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 -NVIDIA NV44 .*NVIDIA.*NV44.* 1 1 -NVIDIA nForce .*NVIDIA.*nForce.* 0 0 -NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1 -NVIDIA Quadro2 .*Quadro2.* 0 1 -NVIDIA Quadro4 .*Quadro4.* 0 1 -NVIDIA Quadro DCC .*Quadro DCC.* 0 1 -NVIDIA Quadro FX 1400 .*Quadro.*FX.*1400.* 1 1 -NVIDIA Quadro FX 1500 .*Quadro.*FX.*1500.* 1 1 -NVIDIA Quadro FX 1700 .*Quadro.*FX.*1700.* 2 1 -NVIDIA Quadro FX 1800 .*Quadro.*FX.*1800.* 2 1 -NVIDIA Quadro FX 3400 .*Quadro.*FX.*3400.* 1 1 -NVIDIA Quadro FX 3450 .*Quadro.*FX.*3450.* 1 1 -NVIDIA Quadro FX 3500 .*Quadro.*FX.*3500.* 1 1 -NVIDIA Quadro FX 3700 .*Quadro.*FX.*3700.* 2 1 -NVIDIA Quadro FX 3800 .*Quadro.*FX.*3800.* 2 1 -NVIDIA Quadro FX 370 .*Quadro.*FX.*370.* 2 1 -NVIDIA Quadro FX 380 .*Quadro.*FX.*380.* 2 1 -NVIDIA Quadro FX 4000 .*Quadro.*FX.*4000.* 1 1 -NVIDIA Quadro FX 4500 .*Quadro.*FX.*4500.* 1 1 -NVIDIA Quadro FX 4600 .*Quadro.*FX.*4600.* 2 1 -NVIDIA Quadro FX 4700 .*Quadro.*FX.*4700.* 2 1 -NVIDIA Quadro FX 4800 .*Quadro.*FX.*4800.* 2 1 -NVIDIA Quadro FX 470 .*Quadro.*FX.*470.* 2 1 -NVIDIA Quadro FX 5500 .*Quadro.*FX.*5500.* 1 1 -NVIDIA Quadro FX 5600 .*Quadro.*FX.*5600.* 2 1 -NVIDIA Quadro FX 5700 .*Quadro.*FX.*5700.* 2 1 -NVIDIA Quadro FX 5800 .*Quadro.*FX.*5800.* 2 1 -NVIDIA Quadro FX 540 .*Quadro.*FX.*540.* 1 1 -NVIDIA Quadro FX 550 .*Quadro.*FX.*550.* 1 1 -NVIDIA Quadro FX 560 .*Quadro.*FX.*560.* 1 1 -NVIDIA Quadro FX 570 .*Quadro.*FX.*570.* 2 1 -NVIDIA Quadro FX 580 .*Quadro.*FX.*580.* 2 1 -NVIDIA Quadro FX .*Quadro FX.* 0 1 -NVIDIA Quadro VX 200 .*Quadro VX.*200.* 2 1 -NVIDIA Quadro 2000 .*Quadro.*2000.* 2 1 -NVIDIA Quadro 4000 .*Quadro.*4000.* 2 1 -NVIDIA Quadro 5000 .*Quadro.*5000.* 2 1 -NVIDIA Quadro 6000 .*Quadro.*6000.* 2 1 -NVIDIA Quadro 600 .*Quadro.*600.* 2 1 -NVIDIA Quadro NVS .*Quadro NVS.* 0 1 -NVIDIA RIVA TNT .*RIVA TNT.* 0 0 -S3 .*S3 Graphics.* 0 0 -SiS SiS.* 0 0 -Trident Trident.* 0 0 -Tungsten Graphics Tungsten.* 0 0 -XGI XGI.* 0 0 -VIA VIA.* 0 0 -Apple Generic Apple.*Generic.* 0 0 -Apple Software Renderer Apple.*Software Renderer.* 0 0 +3Dfx .*3Dfx.* 0 0 +3Dlabs .*3Dlabs.* 0 0 +ATI 3D-Analyze .*ATI.*3D-Analyze.* 0 0 +ATI All-in-Wonder 7500 .*ATI.*All-in-Wonder 75.* 0 1 +ATI All-in-Wonder 8500 .*ATI.*All-in-Wonder 85.* 0 1 +ATI All-in-Wonder 9200 .*ATI.*All-in-Wonder 92.* 0 1 +ATI All-in-Wonder 9xxx .*ATI.*All-in-Wonder 9.* 1 1 +ATI All-in-Wonder HD .*ATI.*All-in-Wonder HD.* 1 1 +ATI All-in-Wonder X600 .*ATI.*All-in-Wonder X6.* 1 1 +ATI All-in-Wonder X800 .*ATI.*All-in-Wonder X8.* 2 1 +ATI All-in-Wonder X1800 .*ATI.*All-in-Wonder X18.* 3 1 +ATI All-in-Wonder X1900 .*ATI.*All-in-Wonder X19.* 3 1 +ATI All-in-Wonder PCI-E .*ATI.*All-in-Wonder.*PCI-E.* 1 1 +ATI All-in-Wonder Radeon .*ATI.*All-in-Wonder Radeon.* 0 1 +ATI ASUS A9xxx .*ATI.*ASUS.*A9.* 1 1 +ATI ASUS AH24xx .*ATI.*ASUS.*AH24.* 1 1 +ATI ASUS AH26xx .*ATI.*ASUS.*AH26.* 3 1 +ATI ASUS AH34xx .*ATI.*ASUS.*AH34.* 1 1 +ATI ASUS AH36xx .*ATI.*ASUS.*AH36.* 3 1 +ATI ASUS AH46xx .*ATI.*ASUS.*AH46.* 3 1 +ATI ASUS AX3xx .*ATI.*ASUS.*AX3.* 1 1 +ATI ASUS AX5xx .*ATI.*ASUS.*AX5.* 1 1 +ATI ASUS AX8xx .*ATI.*ASUS.*AX8.* 2 1 +ATI ASUS EAH24xx .*ATI.*ASUS.*EAH24.* 2 1 +ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 +ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 +ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 +ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 +ATI ASUS EAH43xx .*ATI.*ASUS.*EAH43.* 1 1 +ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 +ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 +ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 +ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 3 1 +ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 +ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 +ATI Radeon X1xxx .*ATI.*X1.* 0 1 +ATI Radeon X13xx .*ATI.*Diamond X13.* 1 1 +ATI Radeon X16xx .*ATI.*Diamond X16.* 1 1 +ATI Radeon X19xx .*ATI.*Diamond X19.* 1 1 +ATI Display Adapter .*ATI.*display adapter.* 0 1 +ATI FireGL 5200 .*ATI.*FireGL V52.* 0 1 +ATI FireGL 5xxx .*ATI.*FireGL V5.* 1 1 +ATI FireGL .*ATI.*Fire.*GL.* 0 1 +ATI FirePro M3900 .*ATI.*FirePro.*M39.* 2 1 +ATI FirePro M5800 .*ATI.*FirePro.*M58.* 3 1 +ATI FirePro M7740 .*ATI.*FirePro.*M77.* 3 1 +ATI FirePro M7820 .*ATI.*FirePro.*M78.* 3 1 +ATI FireMV .*ATI.*FireMV.* 0 1 +ATI Geforce 9500 GT .*ATI.*Geforce 9500 *GT 2 1 +ATI Geforce 9800 GT .*ATI.*Geforce 9800 *GT 2 1 +ATI Generic .*ATI.*Generic.* 0 0 +ATI Hercules 9800 .*ATI.*Hercules.*9800.* 1 1 +ATI IGP 340M .*ATI.*IGP.*340M.* 0 0 +ATI M52 .*ATI.*M52.* 1 1 +ATI M54 .*ATI.*M54.* 1 1 +ATI M56 .*ATI.*M56.* 1 1 +ATI M71 .*ATI.*M71.* 1 1 +ATI M72 .*ATI.*M72.* 1 1 +ATI M76 .*ATI.*M76.* 3 1 +ATI Mobility Radeon 4100 .*ATI.*(Mobility|MOBILITY).*41.* 0 1 +ATI Mobility Radeon 7xxx .*ATI.*(Mobility|MOBILITY).*Radeon 7.* 0 1 +ATI Mobility Radeon 8xxx .*ATI.*(Mobility|MOBILITY).*Radeon 8.* 0 1 +ATI Mobility Radeon 9800 .*ATI.*(Mobility|MOBILITY).*98.* 1 1 +ATI Mobility Radeon 9700 .*ATI.*(Mobility|MOBILITY).*97.* 1 1 +ATI Mobility Radeon 9600 .*ATI.*(Mobility|MOBILITY).*96.* 0 1 +ATI Mobility Radeon HD 530v .*ATI.*(Mobility|MOBILITY).*HD *530v.* 1 1 +ATI Mobility Radeon HD 540v .*ATI.*(Mobility|MOBILITY).*HD *540v.* 2 1 +ATI Mobility Radeon HD 545v .*ATI.*(Mobility|MOBILITY).*HD *545v.* 2 1 +ATI Mobility Radeon HD 550v .*ATI.*(Mobility|MOBILITY).*HD *550v.* 2 1 +ATI Mobility Radeon HD 560v .*ATI.*(Mobility|MOBILITY).*HD *560v.* 2 1 +ATI Mobility Radeon HD 565v .*ATI.*(Mobility|MOBILITY).*HD *565v.* 2 1 +ATI Mobility Radeon HD 2300 .*ATI.*(Mobility|MOBILITY).*HD *23.* 1 1 +ATI Mobility Radeon HD 2400 .*ATI.*(Mobility|MOBILITY).*HD *24.* 1 1 +ATI Mobility Radeon HD 2600 .*ATI.*(Mobility|MOBILITY).*HD *26.* 3 1 +ATI Mobility Radeon HD 2700 .*ATI.*(Mobility|MOBILITY).*HD *27.* 3 1 +ATI Mobility Radeon HD 3100 .*ATI.*(Mobility|MOBILITY).*HD *31.* 0 1 +ATI Mobility Radeon HD 3200 .*ATI.*(Mobility|MOBILITY).*HD *32.* 0 1 +ATI Mobility Radeon HD 3400 .*ATI.*(Mobility|MOBILITY).*HD *34.* 2 1 +ATI Mobility Radeon HD 3600 .*ATI.*(Mobility|MOBILITY).*HD *36.* 3 1 +ATI Mobility Radeon HD 3800 .*ATI.*(Mobility|MOBILITY).*HD *38.* 3 1 +ATI Mobility Radeon HD 4200 .*ATI.*(Mobility|MOBILITY).*HD *42.* 2 1 +ATI Mobility Radeon HD 4300 .*ATI.*(Mobility|MOBILITY).*HD *43.* 2 1 +ATI Mobility Radeon HD 4500 .*ATI.*(Mobility|MOBILITY).*HD *45.* 3 1 +ATI Mobility Radeon HD 4600 .*ATI.*(Mobility|MOBILITY).*HD *46.* 3 1 +ATI Mobility Radeon HD 4800 .*ATI.*(Mobility|MOBILITY).*HD *48.* 3 1 +ATI Mobility Radeon HD 5100 .*ATI.*(Mobility|MOBILITY).*HD *51.* 2 1 +ATI Mobility Radeon HD 5300 .*ATI.*(Mobility|MOBILITY).*HD *53.* 2 1 +ATI Mobility Radeon HD 5400 .*ATI.*(Mobility|MOBILITY).*HD *54.* 2 1 +ATI Mobility Radeon HD 5500 .*ATI.*(Mobility|MOBILITY).*HD *55.* 2 1 +ATI Mobility Radeon HD 5600 .*ATI.*(Mobility|MOBILITY).*HD *56.* 2 1 +ATI Mobility Radeon HD 5700 .*ATI.*(Mobility|MOBILITY).*HD *57.* 3 1 +ATI Mobility Radeon HD 6200 .*ATI.*(Mobility|MOBILITY).*HD *62.* 2 1 +ATI Mobility Radeon HD 6300 .*ATI.*(Mobility|MOBILITY).*HD *63.* 2 1 +ATI Mobility Radeon HD 6400M .*ATI.*(Mobility|MOBILITY).*HD *64.* 3 1 +ATI Mobility Radeon HD 6500M .*ATI.*(Mobility|MOBILITY).*HD *65.* 3 1 +ATI Mobility Radeon HD 6600M .*ATI.*(Mobility|MOBILITY).*HD *66.* 3 1 +ATI Mobility Radeon HD 6700M .*ATI.*(Mobility|MOBILITY).*HD *67.* 3 1 +ATI Mobility Radeon HD 6800M .*ATI.*(Mobility|MOBILITY).*HD *68.* 3 1 +ATI Mobility Radeon HD 6900M .*ATI.*(Mobility|MOBILITY).*HD *69.* 3 1 +ATI Mobility Radeon X1xxx .*ATI.*(Mobility|MOBILITY).*X1.* 0 1 +ATI Mobility Radeon X2xxx .*ATI.*(Mobility|MOBILITY).*X2.* 0 1 +ATI Mobility Radeon X3xx .*ATI.*(Mobility|MOBILITY).*X3.* 1 1 +ATI Mobility Radeon X6xx .*ATI.*(Mobility|MOBILITY).*X6.* 1 1 +ATI Mobility Radeon X7xx .*ATI.*(Mobility|MOBILITY).*X7.* 1 1 +ATI Mobility Radeon Xxxx .*ATI.*(Mobility|MOBILITY).*X.* 0 1 +ATI Mobility Radeon .*ATI.*(Mobility|MOBILITY).* 0 1 +ATI Radeon HD 2300 .*ATI.*(Radeon|RADEON) HD *23.* 0 1 +ATI Radeon HD 2400 .*ATI.*(Radeon|RADEON) HD *24.* 1 1 +ATI Radeon HD 2600 .*ATI.*(Radeon|RADEON) HD *26.* 2 1 +ATI Radeon HD 2900 .*ATI.*(Radeon|RADEON) HD *29.* 3 1 +ATI Radeon HD 3000 .*ATI.*(Radeon|RADEON) HD *30.* 0 1 +ATI Radeon HD 3100 .*ATI.*(Radeon|RADEON) HD *31.* 1 1 +ATI Radeon HD 3200 .*ATI.*(Radeon|RADEON) HD *32.* 0 1 +ATI Radeon HD 3300 .*ATI.*(Radeon|RADEON) HD *33.* 1 1 +ATI Radeon HD 3400 .*ATI.*(Radeon|RADEON) HD *34.* 1 1 +ATI Radeon HD 3500 .*ATI.*(Radeon|RADEON) HD *35.* 1 1 +ATI Radeon HD 3600 .*ATI.*(Radeon|RADEON) HD *36.* 3 1 +ATI Radeon HD 3700 .*ATI.*(Radeon|RADEON) HD *37.* 3 1 +ATI Radeon HD 3800 .*ATI.*(Radeon|RADEON) HD *38.* 3 1 +ATI Radeon HD 4200 .*ATI.*(Radeon|RADEON) HD *42.* 1 1 +ATI Radeon HD 4300 .*ATI.*(Radeon|RADEON) HD *43.* 1 1 +ATI Radeon HD 4400 .*ATI.*(Radeon|RADEON) HD *44.* 1 1 +ATI Radeon HD 4500 .*ATI.*(Radeon|RADEON) HD *45.* 3 1 +ATI Radeon HD 4600 .*ATI.*(Radeon|RADEON) HD *46.* 3 1 +ATI Radeon HD 4700 .*ATI.*(Radeon|RADEON) HD *47.* 3 1 +ATI Radeon HD 4800 .*ATI.*(Radeon|RADEON) HD *48.* 3 1 +ATI Radeon HD 5400 .*ATI.*(Radeon|RADEON) HD *54.* 3 1 +ATI Radeon HD 5500 .*ATI.*(Radeon|RADEON) HD *55.* 3 1 +ATI Radeon HD 5600 .*ATI.*(Radeon|RADEON) HD *56.* 3 1 +ATI Radeon HD 5700 .*ATI.*(Radeon|RADEON) HD *57.* 3 1 +ATI Radeon HD 5800 .*ATI.*(Radeon|RADEON) HD *58.* 3 1 +ATI Radeon HD 5900 .*ATI.*(Radeon|RADEON) HD *59.* 3 1 +ATI Radeon HD 6200 .*ATI.*(Radeon|RADEON) HD *62.* 2 1 +ATI Radeon HD 6300 .*ATI.*(Radeon|RADEON) HD *63.* 2 1 +ATI Radeon HD 6400 .*ATI.*(Radeon|RADEON) HD *64.* 3 1 +ATI Radeon HD 6500 .*ATI.*(Radeon|RADEON) HD *65.* 3 1 +ATI Radeon HD 66xx .*ATI.*(Radeon|RADEON) HD *66.* 3 1 +ATI Radeon HD 6700 .*ATI.*(Radeon|RADEON) HD *67.* 3 1 +ATI Radeon HD 6800 .*ATI.*(Radeon|RADEON) HD *68.* 3 1 +ATI Radeon HD 6900 .*ATI.*(Radeon|RADEON) HD *69.* 3 1 +ATI Radeon OpenGL .*ATI.*(Radeon|RADEON) OpenGL.* 0 0 +ATI Radeon 2100 .*ATI.*(Radeon|RADEON) 21.* 0 1 +ATI Radeon 3000 .*ATI.*(Radeon|RADEON) 30.* 0 1 +ATI Radeon 3100 .*ATI.*(Radeon|RADEON) 31.* 1 1 +ATI Radeon 5xxx .*ATI.*(Radeon|RADEON) 5.* 3 1 +ATI Radeon 7xxx .*ATI.*(Radeon|RADEON) 7.* 0 1 +ATI Radeon 8xxx .*ATI.*(Radeon|RADEON) 8.* 0 1 +ATI Radeon 9000 .*ATI.*(Radeon|RADEON) 90.* 0 1 +ATI Radeon 9100 .*ATI.*(Radeon|RADEON) 91.* 0 1 +ATI Radeon 9200 .*ATI.*(Radeon|RADEON) 92.* 0 1 +ATI Radeon 9500 .*ATI.*(Radeon|RADEON) 95.* 0 1 +ATI Radeon 9600 .*ATI.*(Radeon|RADEON) 96.* 0 1 +ATI Radeon 9700 .*ATI.*(Radeon|RADEON) 97.* 1 1 +ATI Radeon 9800 .*ATI.*(Radeon|RADEON) 98.* 1 1 +ATI Radeon RV250 .*ATI.*RV250.* 0 1 +ATI Radeon RV600 .*ATI.*RV6.* 1 1 +ATI Radeon RX700 .*ATI.*RX70.* 1 1 +ATI Radeon RX800 .*ATI.*(Radeon|RADEON) *RX80.* 2 1 +ATI RS880M .*ATI.*RS880M 1 1 +ATI Radeon RX9550 .*ATI.*RX9550.* 1 1 +ATI Radeon VE .*ATI.*(Radeon|RADEON).*VE.* 0 0 +ATI Radeon X1000 .*ATI.*(Radeon|RADEON) *X10.* 0 1 +ATI Radeon X1200 .*ATI.*(Radeon|RADEON) *X12.* 0 1 +ATI Radeon X1300 .*ATI.*(Radeon|RADEON) *X13.* 1 1 +ATI Radeon X1400 .*ATI.*(Radeon|RADEON) *X14.* 1 1 +ATI Radeon X1500 .*ATI.*(Radeon|RADEON) *X15.* 1 1 +ATI Radeon X1600 .*ATI.*(Radeon|RADEON) *X16.* 1 1 +ATI Radeon X1700 .*ATI.*(Radeon|RADEON) *X17.* 1 1 +ATI Radeon X1800 .*ATI.*(Radeon|RADEON) *X18.* 3 1 +ATI Radeon X1900 .*ATI.*(Radeon|RADEON) *X19.* 3 1 +ATI Radeon X300 .*ATI.*(Radeon|RADEON) *X3.* 0 1 +ATI Radeon X400 .*ATI.*(Radeon|RADEON) X4.* 0 1 +ATI Radeon X500 .*ATI.*(Radeon|RADEON) X5.* 0 1 +ATI Radeon X600 .*ATI.*(Radeon|RADEON) X6.* 1 1 +ATI Radeon X700 .*ATI.*(Radeon|RADEON) X7.* 1 1 +ATI Radeon X800 .*ATI.*(Radeon|RADEON) X8.* 2 1 +ATI Radeon X900 .*ATI.*(Radeon|RADEON) X9.* 2 1 +ATI Radeon Xpress .*ATI.*(Radeon|RADEON) (Xpress|XPRESS).* 0 1 +ATI Rage 128 .*ATI.*Rage 128.* 0 1 +ATI R350 (9800) .*(ATI)?.*R350.* 1 1 +ATI R580 (X1900) .*(ATI)?.*R580.* 3 1 +ATI RC410 (Xpress 200) .*(ATI)?.*RC410.* 0 0 +ATI RS48x (Xpress 200x) .*(ATI)?.*RS48.* 0 0 +ATI RS600 (Xpress 3200) .*(ATI)?.*RS600.* 0 0 +ATI RV350 (9600) .*(ATI)?.*RV350.* 0 1 +ATI RV370 (X300) .*(ATI)?.*RV370.* 0 1 +ATI RV410 (X700) .*(ATI)?.*RV410.* 1 1 +ATI RV515 .*(ATI)?.*RV515.* 1 1 +ATI RV570 (X1900 GT/PRO) .*(ATI)?.*RV570.* 3 1 +ATI RV380 .*(ATI)?.*RV380.* 0 1 +ATI RV530 .*(ATI)?.*RV530.* 1 1 +ATI RX480 (Xpress 200P) .*(ATI)?.*RX480.* 0 1 +ATI RX700 .*(ATI)?.*RX700.* 1 1 +AMD ANTILLES (HD 6990) .*(AMD|ATI).*(Antilles|ANTILLES).* 3 1 +AMD BARTS (HD 6800) .*(AMD|ATI).*(Barts|BARTS).* 3 1 +AMD CAICOS (HD 6400) .*(AMD|ATI).*(Caicos|CAICOS).* 3 1 +AMD CAYMAN (HD 6900) .*(AMD|ATI).*(Cayman|CAYMAM).* 3 1 +AMD CEDAR (HD 5450) .*(AMD|ATI).*(Cedar|CEDAR).* 2 1 +AMD CYPRESS (HD 5800) .*(AMD|ATI).*(Cypress|CYPRESS).* 3 1 +AMD HEMLOCK (HD 5970) .*(AMD|ATI).*(Hemlock|HEMLOCK).* 3 1 +AMD JUNIPER (HD 5700) .*(AMD|ATI).*(Juniper|JUNIPER).* 3 1 +AMD PARK .*(AMD|ATI).*(Park|PARK).* 3 1 +AMD REDWOOD (HD 5500/5600) .*(AMD|ATI).*(Redwood|REDWOOD).* 3 1 +AMD TURKS (HD 6500/6600) .*(AMD|ATI).*(Turks|TURKS).* 3 1 +AMD RS780 (HD 3200) .*(AMD|ATI)?.*RS780.* 0 1 +AMD RS880 (HD 4200) .*(AMD|ATI)?.*RS880.* 1 1 +AMD RV610 (HD 2400) .*(AMD|ATI)?.*RV610.* 1 1 +AMD RV620 (HD 3400) .*(AMD|ATI)?.*RV620.* 1 1 +AMD RV630 (HD 2600) .*(AMD|ATI)?.*RV630.* 2 1 +AMD RV635 (HD 3600) .*(AMD|ATI)?.*RV635.* 3 1 +AMD RV670 (HD 3800) .*(AMD|ATI)?.*RV670.* 3 1 +AMD R680 (HD 3870 X2) .*(AMD|ATI)?.*R680.* 3 1 +AMD R700 (HD 4800 X2) .*(AMD|ATI)?.*R700.* 3 1 +AMD RV710 (HD 4300) .*(AMD|ATI)?.*RV710.* 1 1 +AMD RV730 (HD 4600) .*(AMD|ATI)?.*RV730.* 3 1 +AMD RV740 (HD 4700) .*(AMD|ATI)?.*RV740.* 3 1 +AMD RV770 (HD 4800) .*(AMD|ATI)?.*RV770.* 3 1 +AMD RV790 (HD 4800) .*(AMD|ATI)?.*RV790.* 3 1 +ATI 760G/Radeon 3000 .*ATI.*AMD 760G.* 1 1 +ATI 780L/Radeon 3000 .*ATI.*AMD 780L.* 1 1 +ATI Radeon DDR .*ATI.*(Radeon|RADEON) ?DDR.* 0 1 +ATI FirePro 2000 .*ATI.*FirePro 2.* 1 1 +ATI FirePro 3000 .*ATI.*FirePro V3.* 1 1 +ATI FirePro 4000 .*ATI.*FirePro V4.* 2 1 +ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 +ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 +ATI FirePro M .*ATI.*FirePro M.* 3 1 +ATI Technologies .*ATI *Technologies.* 0 1 +// This entry is last to work around the "R300" driver problem. +ATI R300 (9700) .*(ATI)?.*R300.* 1 1 +ATI Radeon .*ATI.*Radeon.* 0 1 +Intel X3100 .*Intel.*X3100.* 0 1 +Intel 830M .*Intel.*830M 0 0 +Intel 845G .*Intel.*845G 0 0 +Intel 855GM .*Intel.*855GM 0 0 +Intel 865G .*Intel.*865G 0 0 +Intel 900 .*Intel.*900.*900 0 0 +Intel 915GM .*Intel.*915GM 0 0 +Intel 915G .*Intel.*915G 0 0 +Intel 945GM .*Intel.*945GM.* 0 1 +Intel 945G .*Intel.*945G.* 0 1 +Intel 950 .*Intel.*950.* 0 1 +Intel 965 .*Intel.*965.* 0 1 +Intel G33 .*Intel.*G33.* 0 0 +Intel G41 .*Intel.*G41.* 0 1 +Intel G45 .*Intel.*G45.* 0 1 +Intel Bear Lake .*Intel.*Bear Lake.* 0 0 +Intel Broadwater .*Intel.*Broadwater.* 0 0 +Intel Brookdale .*Intel.*Brookdale.* 0 0 +Intel Cantiga .*Intel.*Cantiga.* 0 0 +Intel Eaglelake .*Intel.*Eaglelake.* 0 1 +Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 0 1 +Intel HD Graphics .*Intel.*HD Graphics.* 2 1 +Intel Mobile 4 Series .*Intel.*Mobile *4 Series.* 0 1 +Intel Media Graphics HD .*Intel.*Media Graphics HD.* 0 1 +Intel Montara .*Intel.*Montara.* 0 0 +Intel Pineview .*Intel.*Pineview.* 0 1 +Intel Springdale .*Intel.*Springdale.* 0 0 +Intel HD Graphics 2000 .*Intel.*HD2000.* 1 1 +Intel HD Graphics 3000 .*Intel.*HD3000.* 2 1 +Matrox .*Matrox.* 0 0 +Mesa .*Mesa.* 0 0 +NVIDIA 205 .*NVIDIA.*GeForce 205.* 2 1 +NVIDIA 210 .*NVIDIA.*GeForce 210.* 2 1 +NVIDIA 310M .*NVIDIA.*GeForce 310M.* 1 1 +NVIDIA 310 .*NVIDIA.*GeForce 310.* 3 1 +NVIDIA 315M .*NVIDIA.*GeForce 315M.* 2 1 +NVIDIA 315 .*NVIDIA.*GeForce 315.* 3 1 +NVIDIA 320M .*NVIDIA.*GeForce 320M.* 2 1 +NVIDIA G100M .*NVIDIA *(GeForce)? *(G)? ?100M.* 0 1 +NVIDIA G100 .*NVIDIA *(GeForce)? *(G)? ?100.* 0 1 +NVIDIA G102M .*NVIDIA *(GeForce)? *(G)? ?102M.* 0 1 +NVIDIA G103M .*NVIDIA *(GeForce)? *(G)? ?103M.* 0 1 +NVIDIA G105M .*NVIDIA *(GeForce)? *(G)? ?105M.* 0 1 +NVIDIA G 110M .*NVIDIA *(GeForce)? *(G)? ?110M.* 0 1 +NVIDIA G 120M .*NVIDIA *(GeForce)? *(G)? ?120M.* 1 1 +NVIDIA G 200 .*NVIDIA *(GeForce)? *(G)? ?200(M)?.* 0 1 +NVIDIA G 205M .*NVIDIA *(GeForce)? *(G)? ?205(M)?.* 0 1 +NVIDIA G 210 .*NVIDIA *(GeForce)? *(G)? ?210(M)?.* 1 1 +NVIDIA 305M .*NVIDIA *(GeForce)? *(G)? ?305(M)?.* 1 1 +NVIDIA G 310M .*NVIDIA *(GeForce)? *(G)? ?310(M)?.* 2 1 +NVIDIA G 315 .*NVIDIA *(GeForce)? *(G)? ?315(M)?.* 2 1 +NVIDIA G 320M .*NVIDIA *(GeForce)? *(G)? ?320(M)?.* 2 1 +NVIDIA G 405 .*NVIDIA *(GeForce)? *(G)? ?405(M)?.* 1 1 +NVIDIA G 410M .*NVIDIA *(GeForce)? *(G)? ?410(M)?.* 1 1 +NVIDIA GT 120M .*NVIDIA.*(GeForce)? *GT *120(M)?.* 2 1 +NVIDIA GT 120 .*NVIDIA.*GT.*120 2 1 +NVIDIA GT 130M .*NVIDIA.*(GeForce)? *GT *130(M)?.* 2 1 +NVIDIA GT 140M .*NVIDIA.*(GeForce)? *GT *140(M)?.* 2 1 +NVIDIA GT 150M .*NVIDIA.*(GeForce)? *GT(S)? *150(M)?.* 2 1 +NVIDIA GT 160M .*NVIDIA.*(GeForce)? *GT *160(M)?.* 2 1 +NVIDIA GT 220M .*NVIDIA.*(GeForce)? *GT *220(M)?.* 2 1 +NVIDIA GT 230M .*NVIDIA.*(GeForce)? *GT *230(M)?.* 2 1 +NVIDIA GT 240M .*NVIDIA.*(GeForce)? *GT *240(M)?.* 2 1 +NVIDIA GT 250M .*NVIDIA.*(GeForce)? *GT *250(M)?.* 2 1 +NVIDIA GT 260M .*NVIDIA.*(GeForce)? *GT *260(M)?.* 2 1 +NVIDIA GT 320M .*NVIDIA.*(GeForce)? *GT *320(M)?.* 2 1 +NVIDIA GT 325M .*NVIDIA.*(GeForce)? *GT *325(M)?.* 0 1 +NVIDIA GT 330M .*NVIDIA.*(GeForce)? *GT *330(M)?.* 3 1 +NVIDIA GT 335M .*NVIDIA.*(GeForce)? *GT *335(M)?.* 1 1 +NVIDIA GT 340M .*NVIDIA.*(GeForce)? *GT *340(M)?.* 2 1 +NVIDIA GT 415M .*NVIDIA.*(GeForce)? *GT *415(M)?.* 2 1 +NVIDIA GT 420M .*NVIDIA.*(GeForce)? *GT *420(M)?.* 2 1 +NVIDIA GT 425M .*NVIDIA.*(GeForce)? *GT *425(M)?.* 3 1 +NVIDIA GT 430M .*NVIDIA.*(GeForce)? *GT *430(M)?.* 3 1 +NVIDIA GT 435M .*NVIDIA.*(GeForce)? *GT *435(M)?.* 3 1 +NVIDIA GT 440M .*NVIDIA.*(GeForce)? *GT *440(M)?.* 3 1 +NVIDIA GT 445M .*NVIDIA.*(GeForce)? *GT *445(M)?.* 3 1 +NVIDIA GT 450M .*NVIDIA.*(GeForce)? *GT *450(M)?.* 3 1 +NVIDIA GT 520M .*NVIDIA.*(GeForce)? *GT *520(M)?.* 3 1 +NVIDIA GT 525M .*NVIDIA.*(GeForce)? *GT *525(M)?.* 3 1 +NVIDIA GT 540M .*NVIDIA.*(GeForce)? *GT *540(M)?.* 3 1 +NVIDIA GT 550M .*NVIDIA.*(GeForce)? *GT *550(M)?.* 3 1 +NVIDIA GT 555M .*NVIDIA.*(GeForce)? *GT *555(M)?.* 3 1 +NVIDIA GTS 160M .*NVIDIA.*(GeForce)? *GT(S)? *160(M)?.* 2 1 +NVIDIA GTS 240 .*NVIDIA.*(GeForce)? *GTS *24.* 3 1 +NVIDIA GTS 250 .*NVIDIA.*(GeForce)? *GTS *25.* 3 1 +NVIDIA GTS 350M .*NVIDIA.*(GeForce)? *GTS *350M.* 3 1 +NVIDIA GTS 360M .*NVIDIA.*(GeForce)? *GTS *360M.* 3 1 +NVIDIA GTS 360 .*NVIDIA.*(GeForce)? *GTS *360.* 3 1 +NVIDIA GTS 450 .*NVIDIA.*(GeForce)? *GTS *45.* 3 1 +NVIDIA GTX 260 .*NVIDIA.*(GeForce)? *GTX *26.* 3 1 +NVIDIA GTX 275 .*NVIDIA.*(GeForce)? *GTX *275.* 3 1 +NVIDIA GTX 270 .*NVIDIA.*(GeForce)? *GTX *27.* 3 1 +NVIDIA GTX 285 .*NVIDIA.*(GeForce)? *GTX *285.* 3 1 +NVIDIA GTX 280 .*NVIDIA.*(GeForce)? *GTX *280.* 3 1 +NVIDIA GTX 290 .*NVIDIA.*(GeForce)? *GTX *290.* 3 1 +NVIDIA GTX 295 .*NVIDIA.*(GeForce)? *GTX *295.* 3 1 +NVIDIA GTX 460M .*NVIDIA.*(GeForce)? *GTX *460M.* 3 1 +NVIDIA GTX 465 .*NVIDIA.*(GeForce)? *GTX *465.* 3 1 +NVIDIA GTX 460 .*NVIDIA.*(GeForce)? *GTX *46.* 3 1 +NVIDIA GTX 470M .*NVIDIA.*(GeForce)? *GTX *470M.* 3 1 +NVIDIA GTX 470 .*NVIDIA.*(GeForce)? *GTX *47.* 3 1 +NVIDIA GTX 480M .*NVIDIA.*(GeForce)? *GTX *480M.* 3 1 +NVIDIA GTX 485M .*NVIDIA.*(GeForce)? *GTX *485M.* 3 1 +NVIDIA GTX 480 .*NVIDIA.*(GeForce)? *GTX *48.* 3 1 +NVIDIA GTX 530 .*NVIDIA.*(GeForce)? *GTX *53.* 3 1 +NVIDIA GTX 550 .*NVIDIA.*(GeForce)? *GTX *55.* 3 1 +NVIDIA GTX 560 .*NVIDIA.*(GeForce)? *GTX *56.* 3 1 +NVIDIA GTX 570 .*NVIDIA.*(GeForce)? *GTX *57.* 3 1 +NVIDIA GTX 580M .*NVIDIA.*(GeForce)? *GTX *580M.* 3 1 +NVIDIA GTX 580 .*NVIDIA.*(GeForce)? *GTX *58.* 3 1 +NVIDIA GTX 590 .*NVIDIA.*(GeForce)? *GTX *59.* 3 1 +NVIDIA C51 .*NVIDIA.*(GeForce)? *C51.* 0 1 +NVIDIA G72 .*NVIDIA.*(GeForce)? *G72.* 1 1 +NVIDIA G73 .*NVIDIA.*(GeForce)? *G73.* 1 1 +NVIDIA G84 .*NVIDIA.*(GeForce)? *G84.* 2 1 +NVIDIA G86 .*NVIDIA.*(GeForce)? *G86.* 3 1 +NVIDIA G92 .*NVIDIA.*(GeForce)? *G92.* 3 1 +NVIDIA GeForce .*GeForce 256.* 0 0 +NVIDIA GeForce 2 .*GeForce ?2 ?.* 0 1 +NVIDIA GeForce 3 .*GeForce ?3 ?.* 0 1 +NVIDIA GeForce 3 Ti .*GeForce ?3 Ti.* 0 1 +NVIDIA GeForce 4 .*NVIDIA.*GeForce ?4.* 0 1 +NVIDIA GeForce 4 Go .*NVIDIA.*GeForce ?4.*Go.* 0 1 +NVIDIA GeForce 4 MX .*NVIDIA.*GeForce ?4 MX.* 0 1 +NVIDIA GeForce 4 PCX .*NVIDIA.*GeForce ?4 PCX.* 0 1 +NVIDIA GeForce 4 Ti .*NVIDIA.*GeForce ?4 Ti.* 0 1 +NVIDIA GeForce 6100 .*NVIDIA.*GeForce 61.* 0 1 +NVIDIA GeForce 6200 .*NVIDIA.*GeForce 62.* 0 1 +NVIDIA GeForce 6500 .*NVIDIA.*GeForce 65.* 0 1 +NVIDIA GeForce 6600 .*NVIDIA.*GeForce 66.* 1 1 +NVIDIA GeForce 6700 .*NVIDIA.*GeForce 67.* 2 1 +NVIDIA GeForce 6800 .*NVIDIA.*GeForce 68.* 2 1 +NVIDIA GeForce 7000 .*NVIDIA.*GeForce 70.* 0 1 +NVIDIA GeForce 7100 .*NVIDIA.*GeForce 71.* 0 1 +NVIDIA GeForce 7200 .*NVIDIA.*GeForce 72.* 1 1 +NVIDIA GeForce 7300 .*NVIDIA.*GeForce 73.* 1 1 +NVIDIA GeForce 7500 .*NVIDIA.*GeForce 75.* 1 1 +NVIDIA GeForce 7600 .*NVIDIA.*GeForce 76.* 2 1 +NVIDIA GeForce 7800 .*NVIDIA.*GeForce 78.* 2 1 +NVIDIA GeForce 7900 .*NVIDIA.*GeForce 79.* 2 1 +NVIDIA GeForce 8100 .*NVIDIA.*GeForce 81.* 1 1 +NVIDIA GeForce 8200M .*NVIDIA.*GeForce 8200M.* 1 1 +NVIDIA GeForce 8200 .*NVIDIA.*GeForce 82.* 1 1 +NVIDIA GeForce 8300 .*NVIDIA.*GeForce 83.* 1 1 +NVIDIA GeForce 8400M .*NVIDIA.*GeForce 8400M.* 1 1 +NVIDIA GeForce 8400 .*NVIDIA.*GeForce 84.* 1 1 +NVIDIA GeForce 8500 .*NVIDIA.*GeForce 85.* 3 1 +NVIDIA GeForce 8600M .*NVIDIA.*GeForce 8600M.* 1 1 +NVIDIA GeForce 8600 .*NVIDIA.*GeForce 86.* 3 1 +NVIDIA GeForce 8700M .*NVIDIA.*GeForce 8700M.* 3 1 +NVIDIA GeForce 8700 .*NVIDIA.*GeForce 87.* 3 1 +NVIDIA GeForce 8800M .*NVIDIA.*GeForce 8800M.* 3 1 +NVIDIA GeForce 8800 .*NVIDIA.*GeForce 88.* 3 1 +NVIDIA GeForce 9100M .*NVIDIA.*GeForce 9100M.* 0 1 +NVIDIA GeForce 9100 .*NVIDIA.*GeForce 91.* 0 1 +NVIDIA GeForce 9200M .*NVIDIA.*GeForce 9200M.* 1 1 +NVIDIA GeForce 9200 .*NVIDIA.*GeForce 92.* 1 1 +NVIDIA GeForce 9300M .*NVIDIA.*GeForce 9300M.* 1 1 +NVIDIA GeForce 9300 .*NVIDIA.*GeForce 93.* 1 1 +NVIDIA GeForce 9400M .*NVIDIA.*GeForce 9400M.* 1 1 +NVIDIA GeForce 9400 .*NVIDIA.*GeForce 94.* 1 1 +NVIDIA GeForce 9500M .*NVIDIA.*GeForce 9500M.* 2 1 +NVIDIA GeForce 9500 .*NVIDIA.*GeForce 95.* 2 1 +NVIDIA GeForce 9600M .*NVIDIA.*GeForce 9600M.* 3 1 +NVIDIA GeForce 9600 .*NVIDIA.*GeForce 96.* 2 1 +NVIDIA GeForce 9700M .*NVIDIA.*GeForce 9700M.* 2 1 +NVIDIA GeForce 9800M .*NVIDIA.*GeForce 9800M.* 3 1 +NVIDIA GeForce 9800 .*NVIDIA.*GeForce 98.* 3 1 +NVIDIA GeForce FX 5100 .*NVIDIA.*GeForce FX 51.* 0 1 +NVIDIA GeForce FX 5200 .*NVIDIA.*GeForce FX 52.* 0 1 +NVIDIA GeForce FX 5300 .*NVIDIA.*GeForce FX 53.* 0 1 +NVIDIA GeForce FX 5500 .*NVIDIA.*GeForce FX 55.* 0 1 +NVIDIA GeForce FX 5600 .*NVIDIA.*GeForce FX 56.* 0 1 +NVIDIA GeForce FX 5700 .*NVIDIA.*GeForce FX 57.* 1 1 +NVIDIA GeForce FX 5800 .*NVIDIA.*GeForce FX 58.* 1 1 +NVIDIA GeForce FX 5900 .*NVIDIA.*GeForce FX 59.* 1 1 +NVIDIA GeForce FX Go5100 .*NVIDIA.*GeForce FX Go51.* 0 1 +NVIDIA GeForce FX Go5200 .*NVIDIA.*GeForce FX Go52.* 0 1 +NVIDIA GeForce FX Go5300 .*NVIDIA.*GeForce FX Go53.* 0 1 +NVIDIA GeForce FX Go5500 .*NVIDIA.*GeForce FX Go55.* 0 1 +NVIDIA GeForce FX Go5600 .*NVIDIA.*GeForce FX Go56.* 0 1 +NVIDIA GeForce FX Go5700 .*NVIDIA.*GeForce FX Go57.* 1 1 +NVIDIA GeForce FX Go5800 .*NVIDIA.*GeForce FX Go58.* 1 1 +NVIDIA GeForce FX Go5900 .*NVIDIA.*GeForce FX Go59.* 1 1 +NVIDIA GeForce FX Go5xxx .*NVIDIA.*GeForce FX Go.* 0 1 +NVIDIA GeForce Go 6100 .*NVIDIA.*GeForce Go 61.* 0 1 +NVIDIA GeForce Go 6200 .*NVIDIA.*GeForce Go 62.* 0 1 +NVIDIA GeForce Go 6400 .*NVIDIA.*GeForce Go 64.* 1 1 +NVIDIA GeForce Go 6500 .*NVIDIA.*GeForce Go 65.* 1 1 +NVIDIA GeForce Go 6600 .*NVIDIA.*GeForce Go 66.* 1 1 +NVIDIA GeForce Go 6700 .*NVIDIA.*GeForce Go 67.* 1 1 +NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 +NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 +NVIDIA GeForce Go 7300 LE .*NVIDIA.*GeForce Go 73.*LE.* 0 1 +NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 +NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 +NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 +NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 +NVIDIA GeForce Go 7800 .*NVIDIA.*GeForce Go 78.* 2 1 +NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1 +NVIDIA D9M .*NVIDIA.*D9M.* 1 1 +NVIDIA G94 .*NVIDIA.*G94.* 3 1 +NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 +NVIDIA ION 2 .*NVIDIA ION 2.* 2 1 +NVIDIA ION .*NVIDIA ION.* 2 1 +NVIDIA NB9M .*GeForce NB9M.* 1 1 +NVIDIA NB9P .*GeForce NB9P.* 1 1 +NVIDIA GeForce PCX .*GeForce PCX.* 0 1 +NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 +NVIDIA NV17 .*GeForce NV17.* 0 1 +NVIDIA NV34 .*NVIDIA.*NV34.* 0 1 +NVIDIA NV35 .*NVIDIA.*NV35.* 0 1 +NVIDIA NV36 .*GeForce NV36.* 1 1 +NVIDIA NV43 .*NVIDIA *NV43.* 1 1 +NVIDIA NV44 .*NVIDIA *NV44.* 1 1 +NVIDIA nForce .*NVIDIA *nForce.* 0 0 +NVIDIA MCP78 .*NVIDIA *MCP78.* 1 1 +NVIDIA Quadro2 .*Quadro2.* 0 1 +NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 +NVIDIA Quadro 2000 M/D .*Quadro.*2000(M|D)?.* 3 1 +NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1 +NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 +NVIDIA Quadro 50x0 M .*Quadro.*50.0(M)?.* 3 1 +NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 +NVIDIA Quadro 400 .*Quadro.*400.* 2 1 +NVIDIA Quadro 600 .*Quadro.*600.* 2 1 +NVIDIA Quadro4 .*Quadro4.* 0 1 +NVIDIA Quadro DCC .*Quadro DCC.* 0 1 +NVIDIA Quadro FX 770M .*Quadro.*FX *770M.* 2 1 +NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 +NVIDIA Quadro FX 1600M .*Quadro.*FX *1600M.* 2 1 +NVIDIA Quadro FX 2500M .*Quadro.*FX *2500M.* 2 1 +NVIDIA Quadro FX 2700M .*Quadro.*FX *2700M.* 3 1 +NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 +NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 +NVIDIA Quadro FX 3600 .*Quadro.*FX *3600.* 3 1 +NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 +NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 +NVIDIA Quadro FX 4500 .*Quadro.*FX *45.* 3 1 +NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 +NVIDIA Quadro FX 4800 .*NVIDIA.*Quadro *FX *4800.* 3 1 +NVIDIA Quadro FX .*Quadro FX.* 1 1 +NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 +NVIDIA Quadro NVS 300M .*NVIDIA.*NVS *300M.* 2 1 +NVIDIA Quadro NVS 320M .*NVIDIA.*NVS *320M.* 2 1 +NVIDIA Quadro NVS 2100M .*NVIDIA.*NVS *2100M.* 2 1 +NVIDIA Quadro NVS 3100M .*NVIDIA.*NVS *3100M.* 2 1 +NVIDIA Quadro NVS 4200M .*NVIDIA.*NVS *4200M.* 2 1 +NVIDIA Quadro NVS 5100M .*NVIDIA.*NVS *5100M.* 2 1 +NVIDIA Quadro NVS .*NVIDIA.*NVS 0 1 +NVIDIA RIVA TNT .*RIVA TNT.* 0 0 +S3 .*S3 Graphics.* 0 0 +SiS SiS.* 0 0 +Trident Trident.* 0 0 +Tungsten Graphics Tungsten.* 0 0 +XGI XGI.* 0 0 +VIA VIA.* 0 0 +Apple Generic Apple.*Generic.* 0 0 +Apple Software Renderer Apple.*Software Renderer.* 0 0 diff --git a/indra/newview/groupchatlistener.cpp b/indra/newview/groupchatlistener.cpp new file mode 100644 index 0000000000..3758896b85 --- /dev/null +++ b/indra/newview/groupchatlistener.cpp @@ -0,0 +1,59 @@ +/** + * @file groupchatlistener.cpp + * @author Nat Goodspeed + * @date 2011-04-11 + * @brief Implementation for groupchatlistener. + * + * $LicenseInfo:firstyear=2011&license=internal$ + * Copyright (c) 2011, Linden Research, Inc. + * $/LicenseInfo$ + */ + +// Precompiled header +#include "llviewerprecompiledheaders.h" +// associated header +#include "groupchatlistener.h" +// STL headers +// std headers +// external library headers +// other Linden headers +#include "llgroupactions.h" +#include "llimview.h" + + +namespace { + void startIm_wrapper(LLSD const & event) + { + LLUUID session_id = LLGroupActions::startIM(event["id"].asUUID()); + sendReply(LLSDMap("session_id", LLSD(session_id)), event); + } + + void send_message_wrapper(const std::string& text, const LLUUID& session_id, const LLUUID& group_id) + { + LLIMModel::sendMessage(text, session_id, group_id, IM_SESSION_GROUP_START); + } +} + + +GroupChatListener::GroupChatListener(): + LLEventAPI("GroupChat", + "API to enter, leave, send and intercept group chat messages") +{ + add("startIM", + "Enter a group chat in group with UUID [\"id\"]\n" + "Assumes the logged-in agent is already a member of this group.", + &startIm_wrapper); + add("endIM", + "Leave a group chat in group with UUID [\"id\"]\n" + "Assumes a prior successful startIM request.", + &LLGroupActions::endIM, + LLSDArray("id")); + add("sendIM", + "send a groupchat IM", + &send_message_wrapper, + LLSDArray("text")("session_id")("group_id")); +} +/* + static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id, + const LLUUID& other_participant_id, EInstantMessage dialog); +*/ diff --git a/indra/newview/groupchatlistener.h b/indra/newview/groupchatlistener.h new file mode 100644 index 0000000000..719e3e877f --- /dev/null +++ b/indra/newview/groupchatlistener.h @@ -0,0 +1,23 @@ +/** + * @file groupchatlistener.h + * @author Nat Goodspeed + * @date 2011-04-11 + * @brief + * + * $LicenseInfo:firstyear=2011&license=internal$ + * Copyright (c) 2011, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#if ! defined(LL_GROUPCHATLISTENER_H) +#define LL_GROUPCHATLISTENER_H + +#include "lleventapi.h" + +class GroupChatListener: public LLEventAPI +{ +public: + GroupChatListener(); +}; + +#endif /* ! defined(LL_GROUPCHATLISTENER_H) */ diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp index ed24febf41..9cea33c7c6 100644 --- a/indra/newview/llagentlistener.cpp +++ b/indra/newview/llagentlistener.cpp @@ -64,6 +64,12 @@ LLAgentListener::LLAgentListener(LLAgent &agent) "[\"quat\"]: array of [x, y, z, w] quaternion values", &LLAgentListener::getAxes, LLSDMap("reply", LLSD())); + add("getGroups", + "Send on [\"reply\"], in [\"groups\"], an array describing agent's groups:\n" + "[\"id\"]: UUID of group\n" + "[\"name\"]: name of group", + &LLAgentListener::getGroups, + LLSDMap("reply", LLSD())); } void LLAgentListener::requestTeleport(LLSD const & event_data) const @@ -140,3 +146,21 @@ void LLAgentListener::getAxes(const LLSD& event) const ("euler", LLSDMap("roll", roll)("pitch", pitch)("yaw", yaw)), event); } + +void LLAgentListener::getGroups(const LLSD& event) const +{ + LLSD reply(LLSD::emptyArray()); + for (LLDynamicArray::const_iterator + gi(mAgent.mGroups.begin()), gend(mAgent.mGroups.end()); + gi != gend; ++gi) + { + reply.append(LLSDMap + ("id", gi->mID) + ("name", gi->mName) + ("insignia", gi->mInsigniaID) + ("notices", bool(gi->mAcceptNotices)) + ("display", bool(gi->mListInProfile)) + ("contrib", gi->mContribution)); + } + sendReply(LLSDMap("groups", reply), event); +} diff --git a/indra/newview/llagentlistener.h b/indra/newview/llagentlistener.h index 0aa58d0b16..5a89a99f6a 100644 --- a/indra/newview/llagentlistener.h +++ b/indra/newview/llagentlistener.h @@ -46,6 +46,7 @@ private: void requestStand(LLSD const & event_data) const; void resetAxes(const LLSD& event) const; void getAxes(const LLSD& event) const; + void getGroups(const LLSD& event) const; private: LLAgent & mAgent; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 746d2480b8..75b6c18c57 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -308,7 +308,7 @@ BOOL gLogoutInProgress = FALSE; //////////////////////////////////////////////////////////// // Internal globals... that should be removed. -static std::string gArgs = "Mesh Beta"; +static std::string gArgs; const std::string MARKER_FILE_NAME("SecondLife.exec_marker"); const std::string ERROR_MARKER_FILE_NAME("SecondLife.error_marker"); diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index b7aabe2aeb..d1bff9f423 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -1,795 +1,807 @@ -/** - * @file llfeaturemanager.cpp - * @brief LLFeatureManager class implementation - * - * $LicenseInfo:firstyear=2003&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include -#include - -#include - -#include "llfeaturemanager.h" -#include "lldir.h" - -#include "llsys.h" -#include "llgl.h" -#include "llsecondlifeurls.h" - -#include "llappviewer.h" -#include "llhttpclient.h" -#include "llnotificationsutil.h" -#include "llviewercontrol.h" -#include "llworld.h" -#include "lldrawpoolterrain.h" -#include "llviewertexturelist.h" -#include "llversioninfo.h" -#include "llwindow.h" -#include "llui.h" -#include "llcontrol.h" -#include "llboost.h" -#include "llweb.h" - -#if LL_WINDOWS -#include "lldxhardware.h" -#endif - - -#if LL_DARWIN -const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt"; -const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_mac.%s.txt"; -#elif LL_LINUX -const char FEATURE_TABLE_FILENAME[] = "featuretable_linux.txt"; -const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_linux.%s.txt"; -#elif LL_SOLARIS -const char FEATURE_TABLE_FILENAME[] = "featuretable_solaris.txt"; -const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_solaris.%s.txt"; -#else -const char FEATURE_TABLE_FILENAME[] = "featuretable%s.txt"; -const char FEATURE_TABLE_VER_FILENAME[] = "featuretable%s.%s.txt"; -#endif - -const char GPU_TABLE_FILENAME[] = "gpu_table.txt"; -const char GPU_TABLE_VER_FILENAME[] = "gpu_table.%s.txt"; - -LLFeatureInfo::LLFeatureInfo(const std::string& name, const BOOL available, const F32 level) - : mValid(TRUE), mName(name), mAvailable(available), mRecommendedLevel(level) -{ -} - -LLFeatureList::LLFeatureList(const std::string& name) - : mName(name) -{ -} - -LLFeatureList::~LLFeatureList() -{ -} - -void LLFeatureList::addFeature(const std::string& name, const BOOL available, const F32 level) -{ - if (mFeatures.count(name)) - { - LL_WARNS("RenderInit") << "LLFeatureList::Attempting to add preexisting feature " << name << LL_ENDL; - } - - LLFeatureInfo fi(name, available, level); - mFeatures[name] = fi; -} - -BOOL LLFeatureList::isFeatureAvailable(const std::string& name) -{ - if (mFeatures.count(name)) - { - return mFeatures[name].mAvailable; - } - - LL_WARNS("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL; - - // changing this to TRUE so you have to explicitly disable - // something for it to be disabled - return TRUE; -} - -F32 LLFeatureList::getRecommendedValue(const std::string& name) -{ - if (mFeatures.count(name) && isFeatureAvailable(name)) - { - return mFeatures[name].mRecommendedLevel; - } - - LL_WARNS("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL; - return 0; -} - -BOOL LLFeatureList::maskList(LLFeatureList &mask) -{ - //llinfos << "Masking with " << mask.mName << llendl; - // - // Lookup the specified feature mask, and overlay it on top of the - // current feature mask. - // - - LLFeatureInfo mask_fi; - - feature_map_t::iterator feature_it; - for (feature_it = mask.mFeatures.begin(); feature_it != mask.mFeatures.end(); ++feature_it) - { - mask_fi = feature_it->second; - // - // Look for the corresponding feature - // - if (!mFeatures.count(mask_fi.mName)) - { - LL_WARNS("RenderInit") << "Feature " << mask_fi.mName << " in mask not in top level!" << LL_ENDL; - continue; - } - - LLFeatureInfo &cur_fi = mFeatures[mask_fi.mName]; - if (mask_fi.mAvailable && !cur_fi.mAvailable) - { - LL_WARNS("RenderInit") << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << LL_ENDL; - continue; - } - cur_fi.mAvailable = mask_fi.mAvailable; - cur_fi.mRecommendedLevel = llmin(cur_fi.mRecommendedLevel, mask_fi.mRecommendedLevel); - LL_DEBUGS("RenderInit") << "Feature mask " << mask.mName - << " Feature " << mask_fi.mName - << " Mask: " << mask_fi.mRecommendedLevel - << " Now: " << cur_fi.mRecommendedLevel << LL_ENDL; - } - - LL_DEBUGS("RenderInit") << "After applying mask " << mask.mName << std::endl; - // Will conditionally call dump only if the above message will be logged, thanks - // to it being wrapped by the LL_DEBUGS and LL_ENDL macros. - dump(); - LL_CONT << LL_ENDL; - - return TRUE; -} - -void LLFeatureList::dump() -{ - LL_DEBUGS("RenderInit") << "Feature list: " << mName << LL_ENDL; - LL_DEBUGS("RenderInit") << "--------------" << LL_ENDL; - - LLFeatureInfo fi; - feature_map_t::iterator feature_it; - for (feature_it = mFeatures.begin(); feature_it != mFeatures.end(); ++feature_it) - { - fi = feature_it->second; - LL_DEBUGS("RenderInit") << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << LL_ENDL; - } - LL_DEBUGS("RenderInit") << LL_ENDL; -} - -LLFeatureList *LLFeatureManager::findMask(const std::string& name) -{ - if (mMaskList.count(name)) - { - return mMaskList[name]; - } - - return NULL; -} - -BOOL LLFeatureManager::maskFeatures(const std::string& name) -{ - LLFeatureList *maskp = findMask(name); - if (!maskp) - { - LL_DEBUGS("RenderInit") << "Unknown feature mask " << name << LL_ENDL; - return FALSE; - } - LL_DEBUGS("RenderInit") << "Applying Feature Mask: " << name << LL_ENDL; - return maskList(*maskp); -} - -BOOL LLFeatureManager::loadFeatureTables() -{ - // *TODO - if I or anyone else adds something else to the skipped list - // make this data driven. Put it in the feature table and parse it - // correctly - mSkippedFeatures.insert("RenderAnisotropic"); - mSkippedFeatures.insert("RenderGamma"); - mSkippedFeatures.insert("RenderVBOEnable"); - mSkippedFeatures.insert("RenderFogRatio"); - - // first table is install with app - std::string app_path = gDirUtilp->getAppRODataDir(); - app_path += gDirUtilp->getDirDelimiter(); - - std::string filename; - std::string http_filename; -#if LL_WINDOWS - std::string os_string = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); - if (os_string.find("Microsoft Windows XP") == 0) - { - filename = llformat(FEATURE_TABLE_FILENAME, "_xp"); - http_filename = llformat(FEATURE_TABLE_VER_FILENAME, "_xp", LLVersionInfo::getVersion().c_str()); - } - else - { - filename = llformat(FEATURE_TABLE_FILENAME, ""); - http_filename = llformat(FEATURE_TABLE_VER_FILENAME, "", LLVersionInfo::getVersion().c_str()); - } -#else - filename = FEATURE_TABLE_FILENAME; - http_filename = llformat(FEATURE_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); -#endif - - app_path += filename; - - - // second table is downloaded with HTTP - std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); - - // use HTTP table if it exists - std::string path; - if (gDirUtilp->fileExists(http_path)) - { - path = http_path; - } - else - { - path = app_path; - } - - - return parseFeatureTable(path); -} - - -BOOL LLFeatureManager::parseFeatureTable(std::string filename) -{ - llinfos << "Looking for feature table in " << filename << llendl; - - llifstream file; - std::string name; - U32 version; - - file.open(filename); /*Flawfinder: ignore*/ - - if (!file) - { - LL_WARNS("RenderInit") << "Unable to open feature table " << filename << LL_ENDL; - return FALSE; - } - - // Check file version - file >> name; - file >> version; - if (name != "version") - { - LL_WARNS("RenderInit") << filename << " does not appear to be a valid feature table!" << LL_ENDL; - return FALSE; - } - - mTableVersion = version; - - LLFeatureList *flp = NULL; - while (file >> name) - { - char buffer[MAX_STRING]; /*Flawfinder: ignore*/ - - if (name.substr(0,2) == "//") - { - // This is a comment. - file.getline(buffer, MAX_STRING); - continue; - } - - if (name == "list") - { - if (flp) - { - //flp->dump(); - } - // It's a new mask, create it. - file >> name; - if (mMaskList.count(name)) - { - LL_ERRS("RenderInit") << "Overriding mask " << name << ", this is invalid!" << LL_ENDL; - } - - flp = new LLFeatureList(name); - mMaskList[name] = flp; - } - else - { - if (!flp) - { - LL_ERRS("RenderInit") << "Specified parameter before keyword!" << LL_ENDL; - return FALSE; - } - S32 available; - F32 recommended; - file >> available >> recommended; - flp->addFeature(name, available, recommended); - } - } - file.close(); - - return TRUE; -} - -void LLFeatureManager::loadGPUClass() -{ - // defaults - mGPUClass = GPU_CLASS_UNKNOWN; - mGPUString = gGLManager.getRawGLString(); - mGPUSupported = FALSE; - - // first table is in the app dir - std::string app_path = gDirUtilp->getAppRODataDir(); - app_path += gDirUtilp->getDirDelimiter(); - app_path += GPU_TABLE_FILENAME; - - // second table is downloaded with HTTP - std::string http_filename = llformat(GPU_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); - std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); - - // use HTTP table if it exists - std::string path; - if (gDirUtilp->fileExists(http_path)) - { - path = http_path; - } - else - { - path = app_path; - } - - parseGPUTable(path); -} - - -void LLFeatureManager::parseGPUTable(std::string filename) -{ - llifstream file; - - file.open(filename); - - if (!file) - { - LL_WARNS("RenderInit") << "Unable to open GPU table: " << filename << "!" << LL_ENDL; - return; - } - - std::string renderer = gGLManager.getRawGLString(); - for (std::string::iterator i = renderer.begin(); i != renderer.end(); ++i) - { - *i = tolower(*i); - } - - while (!file.eof()) - { - char buffer[MAX_STRING]; /*Flawfinder: ignore*/ - buffer[0] = 0; - - file.getline(buffer, MAX_STRING); - - if (strlen(buffer) >= 2 && /*Flawfinder: ignore*/ - buffer[0] == '/' && - buffer[1] == '/') - { - // This is a comment. - continue; - } - - if (strlen(buffer) == 0) /*Flawfinder: ignore*/ - { - // This is a blank line - continue; - } - - // setup the tokenizer - std::string buf(buffer); - std::string cls, label, expr, supported; - boost_tokenizer tokens(buf, boost::char_separator("\t\n")); - boost_tokenizer::iterator token_iter = tokens.begin(); - - // grab the label, pseudo regular expression, and class - if(token_iter != tokens.end()) - { - label = *token_iter++; - } - if(token_iter != tokens.end()) - { - expr = *token_iter++; - } - if(token_iter != tokens.end()) - { - cls = *token_iter++; - } - if(token_iter != tokens.end()) - { - supported = *token_iter++; - } - - if (label.empty() || expr.empty() || cls.empty() || supported.empty()) - { - continue; - } - - for (U32 i = 0; i < expr.length(); i++) /*Flawfinder: ignore*/ - { - expr[i] = tolower(expr[i]); - } - - // run the regular expression against the renderer - boost::regex re(expr.c_str()); - if(boost::regex_search(renderer, re)) - { - // if we found it, stop! - file.close(); - LL_INFOS("RenderInit") << "GPU is " << label << llendl; - mGPUString = label; - mGPUClass = (EGPUClass) strtol(cls.c_str(), NULL, 10); - mGPUSupported = (BOOL) strtol(supported.c_str(), NULL, 10); - file.close(); - return; - } - } - file.close(); - - LL_WARNS("RenderInit") << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << LL_ENDL; -} - -// responder saves table into file -class LLHTTPFeatureTableResponder : public LLHTTPClient::Responder -{ -public: - - LLHTTPFeatureTableResponder(std::string filename) : - mFilename(filename) - { - } - - - virtual void completedRaw(U32 status, const std::string& reason, - const LLChannelDescriptors& channels, - const LLIOPipe::buffer_ptr_t& buffer) - { - if (isGoodStatus(status)) - { - // write to file - - llinfos << "writing feature table to " << mFilename << llendl; - - S32 file_size = buffer->countAfter(channels.in(), NULL); - if (file_size > 0) - { - // read from buffer - U8* copy_buffer = new U8[file_size]; - buffer->readAfter(channels.in(), NULL, copy_buffer, file_size); - - // write to file - LLAPRFile out(mFilename, LL_APR_WB); - out.write(copy_buffer, file_size); - out.close(); - } - } - - } - -private: - std::string mFilename; -}; - -void fetch_feature_table(std::string table) -{ - const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable"); - -#if LL_WINDOWS - std::string os_string = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); - std::string filename; - if (os_string.find("Microsoft Windows XP") == 0) - { - filename = llformat(table.c_str(), "_xp", LLVersionInfo::getVersion().c_str()); - } - else - { - filename = llformat(table.c_str(), "", LLVersionInfo::getVersion().c_str()); - } -#else - const std::string filename = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); -#endif - - const std::string url = base + "/" + filename; - - const std::string path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); - - llinfos << "LLFeatureManager fetching " << url << " into " << path << llendl; - - LLHTTPClient::get(url, new LLHTTPFeatureTableResponder(path)); -} - -void fetch_gpu_table(std::string table) -{ - const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable"); - - const std::string filename = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); - - const std::string url = base + "/" + filename; - - const std::string path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); - - llinfos << "LLFeatureManager fetching " << url << " into " << path << llendl; - - LLHTTPClient::get(url, new LLHTTPFeatureTableResponder(path)); -} - -// fetch table(s) from a website (S3) -void LLFeatureManager::fetchHTTPTables() -{ - fetch_feature_table(FEATURE_TABLE_VER_FILENAME); - fetch_gpu_table(GPU_TABLE_VER_FILENAME); -} - - -void LLFeatureManager::cleanupFeatureTables() -{ - std::for_each(mMaskList.begin(), mMaskList.end(), DeletePairedPointer()); - mMaskList.clear(); -} - -void LLFeatureManager::init() -{ - // load the tables - loadFeatureTables(); - - // get the gpu class - loadGPUClass(); - - // apply the base masks, so we know if anything is disabled - applyBaseMasks(); -} - -void LLFeatureManager::applyRecommendedSettings() -{ - // apply saved settings - // cap the level at 2 (high) - S32 level = llmax(GPU_CLASS_0, llmin(mGPUClass, GPU_CLASS_2)); - - llinfos << "Applying Recommended Features" << llendl; - - setGraphicsLevel(level, false); - gSavedSettings.setU32("RenderQualityPerformance", level); - - // now apply the tweaks to draw distance - // these are double negatives, because feature masks only work by - // downgrading values, so i needed to make a true value go to false - // for certain cards, thus the awkward name, "Disregard..." - if(!gSavedSettings.getBOOL("Disregard96DefaultDrawDistance")) - { - gSavedSettings.setF32("RenderFarClip", 96.0f); - } - else if(!gSavedSettings.getBOOL("Disregard128DefaultDrawDistance")) - { - gSavedSettings.setF32("RenderFarClip", 128.0f); - } -} - -void LLFeatureManager::applyFeatures(bool skipFeatures) -{ - // see featuretable.txt / featuretable_linux.txt / featuretable_mac.txt - -#ifndef LL_RELEASE_FOR_DOWNLOAD - dump(); -#endif - - // scroll through all of these and set their corresponding control value - for(feature_map_t::iterator mIt = mFeatures.begin(); - mIt != mFeatures.end(); - ++mIt) - { - // skip features you want to skip - // do this for when you don't want to change certain settings - if(skipFeatures) - { - if(mSkippedFeatures.find(mIt->first) != mSkippedFeatures.end()) - { - continue; - } - } - - // get the control setting - LLControlVariable* ctrl = gSavedSettings.getControl(mIt->first); - if(ctrl == NULL) - { - llwarns << "AHHH! Control setting " << mIt->first << " does not exist!" << llendl; - continue; - } - - // handle all the different types - if(ctrl->isType(TYPE_BOOLEAN)) - { - gSavedSettings.setBOOL(mIt->first, (BOOL)getRecommendedValue(mIt->first)); - } - else if (ctrl->isType(TYPE_S32)) - { - gSavedSettings.setS32(mIt->first, (S32)getRecommendedValue(mIt->first)); - } - else if (ctrl->isType(TYPE_U32)) - { - gSavedSettings.setU32(mIt->first, (U32)getRecommendedValue(mIt->first)); - } - else if (ctrl->isType(TYPE_F32)) - { - gSavedSettings.setF32(mIt->first, (F32)getRecommendedValue(mIt->first)); - } - else - { - llwarns << "AHHH! Control variable is not a numeric type!" << llendl; - } - } -} - -void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures) -{ - applyBaseMasks(); - - switch (level) - { - case 0: - maskFeatures("Low"); - break; - case 1: - maskFeatures("Mid"); - break; - case 2: - maskFeatures("High"); - break; - case 3: - maskFeatures("Ultra"); - break; - default: - maskFeatures("Low"); - break; - } - - applyFeatures(skipFeatures); -} - -void LLFeatureManager::applyBaseMasks() -{ - // reapply masks - mFeatures.clear(); - - LLFeatureList* maskp = findMask("all"); - if(maskp == NULL) - { - LL_WARNS("RenderInit") << "AHH! No \"all\" in feature table!" << LL_ENDL; - return; - } - - mFeatures = maskp->getFeatures(); - - // mask class - if (mGPUClass >= 0 && mGPUClass < 4) - { - const char* class_table[] = - { - "Class0", - "Class1", - "Class2", - "Class3" - }; - - LL_INFOS("RenderInit") << "Setting GPU Class to " << class_table[mGPUClass] << LL_ENDL; - maskFeatures(class_table[mGPUClass]); - } - else - { - LL_INFOS("RenderInit") << "Setting GPU Class to Unknown" << LL_ENDL; - maskFeatures("Unknown"); - } - - // now all those wacky ones - if (!gGLManager.mHasFragmentShader) - { - maskFeatures("NoPixelShaders"); - } - if (!gGLManager.mHasVertexShader) - { - maskFeatures("NoVertexShaders"); - } - if (gGLManager.mIsNVIDIA) - { - maskFeatures("NVIDIA"); - } - if (gGLManager.mIsGF2or4MX) - { - maskFeatures("GeForce2"); - } - if (gGLManager.mIsATI) - { - maskFeatures("ATI"); - } - if (gGLManager.mHasATIMemInfo && gGLManager.mVRAM < 256) - { - maskFeatures("ATIVramLT256"); - } - if (gGLManager.mATIOldDriver) - { - maskFeatures("ATIOldDriver"); - } - if (gGLManager.mIsGFFX) - { - maskFeatures("GeForceFX"); - } - if (gGLManager.mIsIntel) - { - maskFeatures("Intel"); - } - if (gGLManager.mGLVersion < 1.5f) - { - maskFeatures("OpenGLPre15"); - } - if (gGLManager.mGLVersion < 3.f) - { - maskFeatures("OpenGLPre30"); - } - if (gGLManager.mNumTextureImageUnits <= 8) - { - maskFeatures("TexUnit8orLess"); - } - - // now mask by gpu string - // Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces - std::string gpustr = mGPUString; - for (std::string::iterator iter = gpustr.begin(); iter != gpustr.end(); ++iter) - { - if (*iter == ' ') - { - *iter = '_'; - } - } - - //llinfos << "Masking features from gpu table match: " << gpustr << llendl; - maskFeatures(gpustr); - - // now mask cpu type ones - if (gSysMemory.getPhysicalMemoryClamped() <= 256*1024*1024) - { - maskFeatures("RAM256MB"); - } - -#if LL_SOLARIS && defined(__sparc) // even low MHz SPARCs are fast -#error The 800 is hinky. Would something like a LL_MIN_MHZ make more sense here? - if (gSysCPU.getMHz() < 800) -#else - if (gSysCPU.getMHz() < 1100) -#endif - { - maskFeatures("CPUSlow"); - } - - if (isSafe()) - { - maskFeatures("safe"); - } -} +/** + * @file llfeaturemanager.cpp + * @brief LLFeatureManager class implementation + * + * $LicenseInfo:firstyear=2003&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include +#include + +#include + +#include "llfeaturemanager.h" +#include "lldir.h" + +#include "llsys.h" +#include "llgl.h" +#include "llsecondlifeurls.h" + +#include "llappviewer.h" +#include "llhttpclient.h" +#include "llnotificationsutil.h" +#include "llviewercontrol.h" +#include "llworld.h" +#include "lldrawpoolterrain.h" +#include "llviewertexturelist.h" +#include "llversioninfo.h" +#include "llwindow.h" +#include "llui.h" +#include "llcontrol.h" +#include "llboost.h" +#include "llweb.h" + +#if LL_WINDOWS +#include "lldxhardware.h" +#endif + + +#if LL_DARWIN +const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_mac.%s.txt"; +#elif LL_LINUX +const char FEATURE_TABLE_FILENAME[] = "featuretable_linux.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_linux.%s.txt"; +#elif LL_SOLARIS +const char FEATURE_TABLE_FILENAME[] = "featuretable_solaris.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable_solaris.%s.txt"; +#else +const char FEATURE_TABLE_FILENAME[] = "featuretable%s.txt"; +const char FEATURE_TABLE_VER_FILENAME[] = "featuretable%s.%s.txt"; +#endif + +const char GPU_TABLE_FILENAME[] = "gpu_table.txt"; +const char GPU_TABLE_VER_FILENAME[] = "gpu_table.%s.txt"; + +LLFeatureInfo::LLFeatureInfo(const std::string& name, const BOOL available, const F32 level) + : mValid(TRUE), mName(name), mAvailable(available), mRecommendedLevel(level) +{ +} + +LLFeatureList::LLFeatureList(const std::string& name) + : mName(name) +{ +} + +LLFeatureList::~LLFeatureList() +{ +} + +void LLFeatureList::addFeature(const std::string& name, const BOOL available, const F32 level) +{ + if (mFeatures.count(name)) + { + LL_WARNS("RenderInit") << "LLFeatureList::Attempting to add preexisting feature " << name << LL_ENDL; + } + + LLFeatureInfo fi(name, available, level); + mFeatures[name] = fi; +} + +BOOL LLFeatureList::isFeatureAvailable(const std::string& name) +{ + if (mFeatures.count(name)) + { + return mFeatures[name].mAvailable; + } + + LL_WARNS("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL; + + // changing this to TRUE so you have to explicitly disable + // something for it to be disabled + return TRUE; +} + +F32 LLFeatureList::getRecommendedValue(const std::string& name) +{ + if (mFeatures.count(name) && isFeatureAvailable(name)) + { + return mFeatures[name].mRecommendedLevel; + } + + LL_WARNS("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL; + return 0; +} + +BOOL LLFeatureList::maskList(LLFeatureList &mask) +{ + //llinfos << "Masking with " << mask.mName << llendl; + // + // Lookup the specified feature mask, and overlay it on top of the + // current feature mask. + // + + LLFeatureInfo mask_fi; + + feature_map_t::iterator feature_it; + for (feature_it = mask.mFeatures.begin(); feature_it != mask.mFeatures.end(); ++feature_it) + { + mask_fi = feature_it->second; + // + // Look for the corresponding feature + // + if (!mFeatures.count(mask_fi.mName)) + { + LL_WARNS("RenderInit") << "Feature " << mask_fi.mName << " in mask not in top level!" << LL_ENDL; + continue; + } + + LLFeatureInfo &cur_fi = mFeatures[mask_fi.mName]; + if (mask_fi.mAvailable && !cur_fi.mAvailable) + { + LL_WARNS("RenderInit") << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << LL_ENDL; + continue; + } + cur_fi.mAvailable = mask_fi.mAvailable; + cur_fi.mRecommendedLevel = llmin(cur_fi.mRecommendedLevel, mask_fi.mRecommendedLevel); + LL_DEBUGS("RenderInit") << "Feature mask " << mask.mName + << " Feature " << mask_fi.mName + << " Mask: " << mask_fi.mRecommendedLevel + << " Now: " << cur_fi.mRecommendedLevel << LL_ENDL; + } + + LL_DEBUGS("RenderInit") << "After applying mask " << mask.mName << std::endl; + // Will conditionally call dump only if the above message will be logged, thanks + // to it being wrapped by the LL_DEBUGS and LL_ENDL macros. + dump(); + LL_CONT << LL_ENDL; + + return TRUE; +} + +void LLFeatureList::dump() +{ + LL_DEBUGS("RenderInit") << "Feature list: " << mName << LL_ENDL; + LL_DEBUGS("RenderInit") << "--------------" << LL_ENDL; + + LLFeatureInfo fi; + feature_map_t::iterator feature_it; + for (feature_it = mFeatures.begin(); feature_it != mFeatures.end(); ++feature_it) + { + fi = feature_it->second; + LL_DEBUGS("RenderInit") << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << LL_ENDL; + } + LL_DEBUGS("RenderInit") << LL_ENDL; +} + +LLFeatureList *LLFeatureManager::findMask(const std::string& name) +{ + if (mMaskList.count(name)) + { + return mMaskList[name]; + } + + return NULL; +} + +BOOL LLFeatureManager::maskFeatures(const std::string& name) +{ + LLFeatureList *maskp = findMask(name); + if (!maskp) + { + LL_DEBUGS("RenderInit") << "Unknown feature mask " << name << LL_ENDL; + return FALSE; + } + LL_INFOS("RenderInit") << "Applying GPU Feature list: " << name << LL_ENDL; + return maskList(*maskp); +} + +BOOL LLFeatureManager::loadFeatureTables() +{ + // *TODO - if I or anyone else adds something else to the skipped list + // make this data driven. Put it in the feature table and parse it + // correctly + mSkippedFeatures.insert("RenderAnisotropic"); + mSkippedFeatures.insert("RenderGamma"); + mSkippedFeatures.insert("RenderVBOEnable"); + mSkippedFeatures.insert("RenderFogRatio"); + + // first table is install with app + std::string app_path = gDirUtilp->getAppRODataDir(); + app_path += gDirUtilp->getDirDelimiter(); + + std::string filename; + std::string http_filename; +#if LL_WINDOWS + std::string os_string = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); + if (os_string.find("Microsoft Windows XP") == 0) + { + filename = llformat(FEATURE_TABLE_FILENAME, "_xp"); + http_filename = llformat(FEATURE_TABLE_VER_FILENAME, "_xp", LLVersionInfo::getVersion().c_str()); + } + else + { + filename = llformat(FEATURE_TABLE_FILENAME, ""); + http_filename = llformat(FEATURE_TABLE_VER_FILENAME, "", LLVersionInfo::getVersion().c_str()); + } +#else + filename = FEATURE_TABLE_FILENAME; + http_filename = llformat(FEATURE_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); +#endif + + app_path += filename; + + + // second table is downloaded with HTTP + std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); + + // use HTTP table if it exists + std::string path; + if (gDirUtilp->fileExists(http_path)) + { + path = http_path; + } + else + { + path = app_path; + } + + + return parseFeatureTable(path); +} + + +BOOL LLFeatureManager::parseFeatureTable(std::string filename) +{ + llinfos << "Looking for feature table in " << filename << llendl; + + llifstream file; + std::string name; + U32 version; + + file.open(filename); /*Flawfinder: ignore*/ + + if (!file) + { + LL_WARNS("RenderInit") << "Unable to open feature table " << filename << LL_ENDL; + return FALSE; + } + + // Check file version + file >> name; + file >> version; + if (name != "version") + { + LL_WARNS("RenderInit") << filename << " does not appear to be a valid feature table!" << LL_ENDL; + return FALSE; + } + + mTableVersion = version; + + LLFeatureList *flp = NULL; + while (file >> name) + { + char buffer[MAX_STRING]; /*Flawfinder: ignore*/ + + if (name.substr(0,2) == "//") + { + // This is a comment. + file.getline(buffer, MAX_STRING); + continue; + } + + if (name == "list") + { + if (flp) + { + //flp->dump(); + } + // It's a new mask, create it. + file >> name; + if (mMaskList.count(name)) + { + LL_ERRS("RenderInit") << "Overriding mask " << name << ", this is invalid!" << LL_ENDL; + } + + flp = new LLFeatureList(name); + mMaskList[name] = flp; + } + else + { + if (!flp) + { + LL_ERRS("RenderInit") << "Specified parameter before keyword!" << LL_ENDL; + return FALSE; + } + S32 available; + F32 recommended; + file >> available >> recommended; + flp->addFeature(name, available, recommended); + } + } + file.close(); + + return TRUE; +} + +void LLFeatureManager::loadGPUClass() +{ + // defaults + mGPUClass = GPU_CLASS_UNKNOWN; + mGPUString = gGLManager.getRawGLString(); + mGPUSupported = FALSE; + + // first table is in the app dir + std::string app_path = gDirUtilp->getAppRODataDir(); + app_path += gDirUtilp->getDirDelimiter(); + app_path += GPU_TABLE_FILENAME; + + // second table is downloaded with HTTP + std::string http_filename = llformat(GPU_TABLE_VER_FILENAME, LLVersionInfo::getVersion().c_str()); + std::string http_path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, http_filename); + + // use HTTP table if it exists + std::string path; + if (gDirUtilp->fileExists(http_path)) + { + path = http_path; + } + else + { + path = app_path; + } + + parseGPUTable(path); +} + + +void LLFeatureManager::parseGPUTable(std::string filename) +{ + llifstream file; + + file.open(filename); + + if (!file) + { + LL_WARNS("RenderInit") << "Unable to open GPU table: " << filename << "!" << LL_ENDL; + return; + } + + std::string rawRenderer = gGLManager.getRawGLString(); + std::string renderer = rawRenderer; + for (std::string::iterator i = renderer.begin(); i != renderer.end(); ++i) + { + *i = tolower(*i); + } + + bool gpuFound; + U32 lineNumber; + for (gpuFound = false, lineNumber = 0; !gpuFound && !file.eof(); lineNumber++) + { + char buffer[MAX_STRING]; /*Flawfinder: ignore*/ + buffer[0] = 0; + + file.getline(buffer, MAX_STRING); + + if (strlen(buffer) >= 2 && /*Flawfinder: ignore*/ + buffer[0] == '/' && + buffer[1] == '/') + { + // This is a comment. + continue; + } + + if (strlen(buffer) == 0) /*Flawfinder: ignore*/ + { + // This is a blank line + continue; + } + + // setup the tokenizer + std::string buf(buffer); + std::string cls, label, expr, supported; + boost_tokenizer tokens(buf, boost::char_separator("\t\n")); + boost_tokenizer::iterator token_iter = tokens.begin(); + + // grab the label, pseudo regular expression, and class + if(token_iter != tokens.end()) + { + label = *token_iter++; + } + if(token_iter != tokens.end()) + { + expr = *token_iter++; + } + if(token_iter != tokens.end()) + { + cls = *token_iter++; + } + if(token_iter != tokens.end()) + { + supported = *token_iter++; + } + + if (label.empty() || expr.empty() || cls.empty() || supported.empty()) + { + LL_WARNS("RenderInit") << "invald gpu_table.txt:" << lineNumber << ": '" << buffer << "'" << LL_ENDL; + continue; + } + + for (U32 i = 0; i < expr.length(); i++) /*Flawfinder: ignore*/ + { + expr[i] = tolower(expr[i]); + } + + // run the regular expression against the renderer + boost::regex re(expr.c_str()); + if(boost::regex_search(renderer, re)) + { + // if we found it, stop! + gpuFound = true; + mGPUString = label; + mGPUClass = (EGPUClass) strtol(cls.c_str(), NULL, 10); + mGPUSupported = (BOOL) strtol(supported.c_str(), NULL, 10); + } + } + file.close(); + + if ( gpuFound ) + { + LL_INFOS("RenderInit") << "GPU '" << rawRenderer << "' recognized as '" << mGPUString << "'" << LL_ENDL; + if (!mGPUSupported) + { + LL_INFOS("RenderInit") << "GPU '" << mGPUString << "' is not supported." << LL_ENDL; + } + } + else + { + LL_WARNS("RenderInit") << "GPU '" << rawRenderer << "' not recognized" << LL_ENDL; + } +} + +// responder saves table into file +class LLHTTPFeatureTableResponder : public LLHTTPClient::Responder +{ +public: + + LLHTTPFeatureTableResponder(std::string filename) : + mFilename(filename) + { + } + + + virtual void completedRaw(U32 status, const std::string& reason, + const LLChannelDescriptors& channels, + const LLIOPipe::buffer_ptr_t& buffer) + { + if (isGoodStatus(status)) + { + // write to file + + llinfos << "writing feature table to " << mFilename << llendl; + + S32 file_size = buffer->countAfter(channels.in(), NULL); + if (file_size > 0) + { + // read from buffer + U8* copy_buffer = new U8[file_size]; + buffer->readAfter(channels.in(), NULL, copy_buffer, file_size); + + // write to file + LLAPRFile out(mFilename, LL_APR_WB); + out.write(copy_buffer, file_size); + out.close(); + } + } + + } + +private: + std::string mFilename; +}; + +void fetch_feature_table(std::string table) +{ + const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable"); + +#if LL_WINDOWS + std::string os_string = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); + std::string filename; + if (os_string.find("Microsoft Windows XP") == 0) + { + filename = llformat(table.c_str(), "_xp", LLVersionInfo::getVersion().c_str()); + } + else + { + filename = llformat(table.c_str(), "", LLVersionInfo::getVersion().c_str()); + } +#else + const std::string filename = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); +#endif + + const std::string url = base + "/" + filename; + + const std::string path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); + + llinfos << "LLFeatureManager fetching " << url << " into " << path << llendl; + + LLHTTPClient::get(url, new LLHTTPFeatureTableResponder(path)); +} + +void fetch_gpu_table(std::string table) +{ + const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable"); + + const std::string filename = llformat(table.c_str(), LLVersionInfo::getVersion().c_str()); + + const std::string url = base + "/" + filename; + + const std::string path = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename); + + llinfos << "LLFeatureManager fetching " << url << " into " << path << llendl; + + LLHTTPClient::get(url, new LLHTTPFeatureTableResponder(path)); +} + +// fetch table(s) from a website (S3) +void LLFeatureManager::fetchHTTPTables() +{ + fetch_feature_table(FEATURE_TABLE_VER_FILENAME); + fetch_gpu_table(GPU_TABLE_VER_FILENAME); +} + + +void LLFeatureManager::cleanupFeatureTables() +{ + std::for_each(mMaskList.begin(), mMaskList.end(), DeletePairedPointer()); + mMaskList.clear(); +} + +void LLFeatureManager::init() +{ + // load the tables + loadFeatureTables(); + + // get the gpu class + loadGPUClass(); + + // apply the base masks, so we know if anything is disabled + applyBaseMasks(); +} + +void LLFeatureManager::applyRecommendedSettings() +{ + // apply saved settings + // cap the level at 2 (high) + S32 level = llmax(GPU_CLASS_0, llmin(mGPUClass, GPU_CLASS_2)); + + llinfos << "Applying Recommended Features" << llendl; + + setGraphicsLevel(level, false); + gSavedSettings.setU32("RenderQualityPerformance", level); + + // now apply the tweaks to draw distance + // these are double negatives, because feature masks only work by + // downgrading values, so i needed to make a true value go to false + // for certain cards, thus the awkward name, "Disregard..." + if(!gSavedSettings.getBOOL("Disregard96DefaultDrawDistance")) + { + gSavedSettings.setF32("RenderFarClip", 96.0f); + } + else if(!gSavedSettings.getBOOL("Disregard128DefaultDrawDistance")) + { + gSavedSettings.setF32("RenderFarClip", 128.0f); + } +} + +void LLFeatureManager::applyFeatures(bool skipFeatures) +{ + // see featuretable.txt / featuretable_linux.txt / featuretable_mac.txt + +#ifndef LL_RELEASE_FOR_DOWNLOAD + dump(); +#endif + + // scroll through all of these and set their corresponding control value + for(feature_map_t::iterator mIt = mFeatures.begin(); + mIt != mFeatures.end(); + ++mIt) + { + // skip features you want to skip + // do this for when you don't want to change certain settings + if(skipFeatures) + { + if(mSkippedFeatures.find(mIt->first) != mSkippedFeatures.end()) + { + continue; + } + } + + // get the control setting + LLControlVariable* ctrl = gSavedSettings.getControl(mIt->first); + if(ctrl == NULL) + { + llwarns << "AHHH! Control setting " << mIt->first << " does not exist!" << llendl; + continue; + } + + // handle all the different types + if(ctrl->isType(TYPE_BOOLEAN)) + { + gSavedSettings.setBOOL(mIt->first, (BOOL)getRecommendedValue(mIt->first)); + } + else if (ctrl->isType(TYPE_S32)) + { + gSavedSettings.setS32(mIt->first, (S32)getRecommendedValue(mIt->first)); + } + else if (ctrl->isType(TYPE_U32)) + { + gSavedSettings.setU32(mIt->first, (U32)getRecommendedValue(mIt->first)); + } + else if (ctrl->isType(TYPE_F32)) + { + gSavedSettings.setF32(mIt->first, (F32)getRecommendedValue(mIt->first)); + } + else + { + llwarns << "AHHH! Control variable is not a numeric type!" << llendl; + } + } +} + +void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures) +{ + applyBaseMasks(); + + switch (level) + { + case 0: + maskFeatures("Low"); + break; + case 1: + maskFeatures("Mid"); + break; + case 2: + maskFeatures("High"); + break; + case 3: + maskFeatures("Ultra"); + break; + default: + maskFeatures("Low"); + break; + } + + applyFeatures(skipFeatures); +} + +void LLFeatureManager::applyBaseMasks() +{ + // reapply masks + mFeatures.clear(); + + LLFeatureList* maskp = findMask("all"); + if(maskp == NULL) + { + LL_WARNS("RenderInit") << "AHH! No \"all\" in feature table!" << LL_ENDL; + return; + } + + mFeatures = maskp->getFeatures(); + + // mask class + if (mGPUClass >= 0 && mGPUClass < 4) + { + const char* class_table[] = + { + "Class0", + "Class1", + "Class2", + "Class3" + }; + + LL_INFOS("RenderInit") << "Setting GPU Class to " << class_table[mGPUClass] << LL_ENDL; + maskFeatures(class_table[mGPUClass]); + } + else + { + LL_INFOS("RenderInit") << "Setting GPU Class to Unknown" << LL_ENDL; + maskFeatures("Unknown"); + } + + // now all those wacky ones + if (!gGLManager.mHasFragmentShader) + { + maskFeatures("NoPixelShaders"); + } + if (!gGLManager.mHasVertexShader) + { + maskFeatures("NoVertexShaders"); + } + if (gGLManager.mIsNVIDIA) + { + maskFeatures("NVIDIA"); + } + if (gGLManager.mIsGF2or4MX) + { + maskFeatures("GeForce2"); + } + if (gGLManager.mIsATI) + { + maskFeatures("ATI"); + } + if (gGLManager.mHasATIMemInfo && gGLManager.mVRAM < 256) + { + maskFeatures("ATIVramLT256"); + } + if (gGLManager.mATIOldDriver) + { + maskFeatures("ATIOldDriver"); + } + if (gGLManager.mIsGFFX) + { + maskFeatures("GeForceFX"); + } + if (gGLManager.mIsIntel) + { + maskFeatures("Intel"); + } + if (gGLManager.mGLVersion < 1.5f) + { + maskFeatures("OpenGLPre15"); + } + if (gGLManager.mGLVersion < 3.f) + { + maskFeatures("OpenGLPre30"); + } + if (gGLManager.mNumTextureImageUnits <= 8) + { + maskFeatures("TexUnit8orLess"); + } + + // now mask by gpu string + // Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces + std::string gpustr = mGPUString; + for (std::string::iterator iter = gpustr.begin(); iter != gpustr.end(); ++iter) + { + if (*iter == ' ') + { + *iter = '_'; + } + } + + //llinfos << "Masking features from gpu table match: " << gpustr << llendl; + maskFeatures(gpustr); + + // now mask cpu type ones + if (gSysMemory.getPhysicalMemoryClamped() <= 256*1024*1024) + { + maskFeatures("RAM256MB"); + } + +#if LL_SOLARIS && defined(__sparc) // even low MHz SPARCs are fast +#error The 800 is hinky. Would something like a LL_MIN_MHZ make more sense here? + if (gSysCPU.getMHz() < 800) +#else + if (gSysCPU.getMHz() < 1100) +#endif + { + maskFeatures("CPUSlow"); + } + + if (isSafe()) + { + maskFeatures("safe"); + } +} diff --git a/indra/newview/llgiveinventory.cpp b/indra/newview/llgiveinventory.cpp index f990b9294d..30858871ec 100644 --- a/indra/newview/llgiveinventory.cpp +++ b/indra/newview/llgiveinventory.cpp @@ -311,6 +311,9 @@ void LLGiveInventory::logInventoryOffer(const LLUUID& to_agent, const LLUUID &im std::string full_name; if (gCacheName->getFullName(to_agent, full_name)) { + // Build a new format username or firstname_lastname for legacy names + // to use it for a history log filename. + full_name = LLCacheName::buildUsername(full_name); LLIMModel::instance().logToFile(full_name, LLTrans::getString("SECOND_LIFE"), im_session_id, LLTrans::getString("inventory_item_offered-im")); } } diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 7c56e610ce..97fa551441 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -40,10 +40,12 @@ #include "llsidetray.h" #include "llstatusbar.h" // can_afford_transaction() #include "llimfloater.h" +#include "groupchatlistener.h" // // Globals // +static GroupChatListener sGroupChatListener; class LLGroupHandler : public LLCommandHandler { @@ -320,10 +322,9 @@ void LLGroupActions::closeGroup(const LLUUID& group_id) // static -void LLGroupActions::startIM(const LLUUID& group_id) +LLUUID LLGroupActions::startIM(const LLUUID& group_id) { - if (group_id.isNull()) - return; + if (group_id.isNull()) return LLUUID::null; LLGroupData group_data; if (gAgent.getGroupData(group_id, group_data)) @@ -337,12 +338,14 @@ void LLGroupActions::startIM(const LLUUID& group_id) LLIMFloater::show(session_id); } make_ui_sound("UISndStartIM"); + return session_id; } else { // this should never happen, as starting a group IM session // relies on you belonging to the group and hence having the group data make_ui_sound("UISndInvalidOp"); + return LLUUID::null; } } diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h index c52a25818b..3f9852f194 100644 --- a/indra/newview/llgroupactions.h +++ b/indra/newview/llgroupactions.h @@ -87,7 +87,7 @@ public: /** * Start group instant messaging session. */ - static void startIM(const LLUUID& group_id); + static LLUUID startIM(const LLUUID& group_id); /** * End group instant messaging session. diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 38c5ba71bd..4de6976534 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -195,7 +195,7 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& // set P2P type by default mSessionType = P2P_SESSION; - if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type) + if (IM_NOTHING_SPECIAL == mType || IM_SESSION_P2P_INVITE == mType) { mVoiceChannel = new LLVoiceChannelP2P(session_id, name, other_participant_id); mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID); @@ -249,7 +249,7 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT); } - if (IM_NOTHING_SPECIAL == type) + if (IM_NOTHING_SPECIAL == mType) { mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID); mTextIMPossible = LLVoiceClient::getInstance()->isSessionTextIMPossible(mSessionID); @@ -269,10 +269,10 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& // Localizing name of ad-hoc session. STORM-153 // Changing name should happen here- after the history file was created, so that // history files have consistent (English) names in different locales. - if (isAdHocSessionType() && IM_SESSION_INVITE == type) + if (isAdHocSessionType() && IM_SESSION_INVITE == mType) { - LLAvatarNameCache::get(mOtherParticipantID, - boost::bind(&LLIMModel::LLIMSession::onAdHocNameCache, + LLAvatarNameCache::get(mOtherParticipantID, + boost::bind(&LLIMModel::LLIMSession::onAdHocNameCache, this, _2)); } } @@ -553,23 +553,10 @@ bool LLIMModel::LLIMSession::isOtherParticipantAvaline() return !mOtherParticipantIsAvatar; } -void LLIMModel::LLIMSession::onAvatarNameCache(const LLUUID& avatar_id, const LLAvatarName& av_name) -{ - if (av_name.mUsername.empty()) - { - // display names is off, use mDisplayName which will be the legacy name - mHistoryFileName = LLCacheName::buildUsername(av_name.mDisplayName); - } - else - { - mHistoryFileName = av_name.mUsername; - } -} - void LLIMModel::LLIMSession::buildHistoryFileName() { mHistoryFileName = mName; - + //ad-hoc requires sophisticated chat history saving schemes if (isAdHoc()) { @@ -583,17 +570,35 @@ void LLIMModel::LLIMSession::buildHistoryFileName() { std::set sorted_uuids(mInitialTargetIDs.begin(), mInitialTargetIDs.end()); mHistoryFileName = mName + " hash" + generateHash(sorted_uuids); - return; } - - //in case of incoming ad-hoc sessions - mHistoryFileName = mName + " " + LLLogChat::timestamp(true) + " " + mSessionID.asString().substr(0, 4); + else + { + //in case of incoming ad-hoc sessions + mHistoryFileName = mName + " " + LLLogChat::timestamp(true) + " " + mSessionID.asString().substr(0, 4); + } } - - // look up username to use as the log name - if (isP2P()) + else if (isP2P()) // look up username to use as the log name { - LLAvatarNameCache::get(mOtherParticipantID, boost::bind(&LLIMModel::LLIMSession::onAvatarNameCache, this, _1, _2)); + LLAvatarName av_name; + // For outgoing sessions we already have a cached name + // so no need for a callback in LLAvatarNameCache::get() + if (LLAvatarNameCache::get(mOtherParticipantID, &av_name)) + { + if (av_name.mUsername.empty()) + { + // Display names are off, use mDisplayName which will be the legacy name + mHistoryFileName = LLCacheName::buildUsername(av_name.mDisplayName); + } + else + { + mHistoryFileName = av_name.mUsername; + } + } + else + { + // Incoming P2P sessions include a name that we can use to build a history file name + mHistoryFileName = LLCacheName::buildUsername(mName); + } } } @@ -615,7 +620,6 @@ std::string LLIMModel::LLIMSession::generateHash(const std::set& sorted_ return participants_md5_hash.asString(); } - void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id) { LLIMSession* session = findIMSession(old_session_id); @@ -798,11 +802,6 @@ bool LLIMModel::logToFile(const std::string& file_name, const std::string& from, } } -bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) -{ - return logToFile(LLIMModel::getInstance()->getHistoryFileName(session_id), from, from_id, utf8_text); -} - bool LLIMModel::proccessOnlineOfflineNotification( const LLUUID& session_id, const std::string& utf8_text) @@ -856,8 +855,11 @@ LLIMModel::LLIMSession* LLIMModel::addMessageSilently(const LLUUID& session_id, } addToHistory(session_id, from_name, from_id, utf8_text); - if (log2file) logToFile(session_id, from_name, from_id, utf8_text); - + if (log2file) + { + logToFile(getHistoryFileName(session_id), from_name, from_id, utf8_text); + } + session->mNumUnread++; //update count of unread messages from real participant @@ -2468,6 +2470,7 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess std::string session_name; // since we select user to share item with - his name is already in cache gCacheName->getFullName(args["user_id"], session_name); + session_name = LLCacheName::buildUsername(session_name); LLIMModel::instance().logToFile(session_name, SYSTEM_FROM, LLUUID::null, message.getString()); } } diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index a15776c207..0ee56c8070 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -98,13 +98,6 @@ public: /** ad-hoc sessions involve sophisticated chat history file naming schemes */ void buildHistoryFileName(); - void onAvatarNameCache(const LLUUID& avatar_id, const LLAvatarName& av_name); - - void onAdHocNameCache(const LLAvatarName& av_name); - - //*TODO make private - static std::string generateHash(const std::set& sorted_uuids); - LLUUID mSessionID; std::string mName; EInstantMessage mType; @@ -139,6 +132,11 @@ public: //if IM session is created for a voice call bool mStartedAsIMCall; + + private: + void onAdHocNameCache(const LLAvatarName& av_name); + + static std::string generateHash(const std::set& sorted_uuids); }; @@ -293,12 +291,7 @@ private: /** * Add message to a list of message associated with session specified by session_id */ - bool addToHistory(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text); - - /** - * Save an IM message into a file - */ - bool logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text); + bool addToHistory(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text); }; class LLIMSessionObserver diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 36c5d12897..00de6a86e1 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -608,6 +608,7 @@ void LLLoginInstance::constructAuthParams(LLPointer user_credentia request_params["channel"] = LLVersionInfo::getChannel(); request_params["id0"] = mSerialNumber; request_params["host_id"] = gSavedSettings.getString("HostID"); + request_params["extended_errors"] = true; // request message_id and message_args mRequestData.clear(); mRequestData["method"] = "login_to_simulator"; diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index 70d588db52..de90023f3b 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -27,13 +27,17 @@ #include "llviewerprecompiledheaders.h" // must be first include -#include "llnotificationhandler.h" -#include "llnotifications.h" -#include "llimview.h" -#include "llagent.h" +#include "llavatarnamecache.h" + #include "llfloaterreg.h" -#include "llnearbychat.h" +#include "llnotifications.h" +#include "llurlaction.h" + +#include "llagent.h" #include "llimfloater.h" +#include "llimview.h" +#include "llnearbychat.h" +#include "llnotificationhandler.h" using namespace LLNotificationsUI; @@ -275,7 +279,11 @@ void LLHandlerUtil::logToIM(const EInstantMessage& session_type, { from = SYSTEM_FROM; } - LLIMModel::instance().logToFile(session_name, from, from_id, message); + + // Build a new format username or firstname_lastname for legacy names + // to use it for a history log filename. + std::string user_name = LLCacheName::buildUsername(session_name); + LLIMModel::instance().logToFile(user_name, from, from_id, message); } else { diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 277d2430ce..141a81c717 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -995,6 +995,7 @@ bool idle_startup() if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState()) { + // Generic failure message std::ostringstream emsg; emsg << LLTrans::getString("LoginFailed") << "\n"; if(LLLoginInstance::getInstance()->authFailure()) @@ -1003,24 +1004,32 @@ bool idle_startup() << LLLoginInstance::getInstance()->getResponse() << LL_ENDL; LLSD response = LLLoginInstance::getInstance()->getResponse(); // Still have error conditions that may need some - // sort of handling. + // sort of handling - dig up specific message std::string reason_response = response["reason"]; std::string message_response = response["message"]; - - if(!message_response.empty()) + std::string message_id = response["message_id"]; + std::string message; // actual string to show the user + + if(!message_id.empty() && LLTrans::findString(message, message_id, response["message_args"])) { - // XUI: fix translation for strings returned during login - // We need a generic table for translations - std::string big_reason = LLAgent::sTeleportErrorMessages[ message_response ]; - if ( big_reason.size() == 0 ) - { - emsg << message_response; - } - else - { - emsg << big_reason; - } + // message will be filled in with the template and arguments } + else if(!message_response.empty()) + { + // *HACK: "no_inventory_host" sent as the message itself. + // Remove this clause when server is sending message_id as well. + message = LLAgent::sTeleportErrorMessages[ message_response ]; + } + + if (message.empty()) + { + // Fallback to server-supplied string; necessary since server + // may add strings that this viewer is not yet aware of + message = message_response; + } + + emsg << message; + if(reason_response == "key") { diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 8cfe91203a..2ed208bad1 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -1000,6 +1000,10 @@ U32 info_display_from_string(std::string info_display) { return LLPipeline::RENDER_DEBUG_AGENT_TARGET; } + else if ("sculpt" == info_display) + { + return LLPipeline::RENDER_DEBUG_SCULPTED; + } else { return 0; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 8b80e567b8..86b56df556 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2603,6 +2603,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) args["NAME"] = LLSLURL("agent", from_id, "completename").getSLURLString();; LLSD payload; payload["from_id"] = from_id; + // Passing the "SESSION_NAME" to use it for IM notification logging + // in LLTipHandler::processNotification(). See STORM-941. + payload["SESSION_NAME"] = name; LLNotificationsUtil::add("InventoryAccepted", args, payload); break; } diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp index 2596f239ca..97a9eb7f5f 100644 --- a/indra/newview/llxmlrpclistener.cpp +++ b/indra/newview/llxmlrpclistener.cpp @@ -499,6 +499,13 @@ private: // 'array' as the value of this 'key'. responses.insert(key, array); } + else if (xmlrpc_type_struct == type) + { + LLSD submap = parseValues(status_string, + STRINGIZE(key_pfx << key << ':'), + current); + responses.insert(key, submap); + } else { // whoops - unrecognized type diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h index 28813be896..01d90da971 100644 --- a/indra/newview/res/resource.h +++ b/indra/newview/res/resource.h @@ -38,6 +38,7 @@ #define IDC_CURSOR5 154 #define IDI_LCD_LL_ICON 157 #define IDC_CURSOR6 158 +#define IDC_STATIC 1000 #define IDC_RADIO_56 1000 #define IDC_RADIO_128 1001 #define IDC_RADIO_256 1002 diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc index 5e8cee1f5f..38d04b4b5c 100644 --- a/indra/newview/res/viewerRes.rc +++ b/indra/newview/res/viewerRes.rc @@ -7,7 +7,7 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "winres.h" +#include "windows.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS @@ -34,7 +34,7 @@ END 2 TEXTINCLUDE BEGIN - "#include ""winres.h""\r\n" + "#include ""windows.h""\r\n" "\0" END diff --git a/indra/newview/skins/default/textures/icons/Edit_Wrench.png b/indra/newview/skins/default/textures/icons/Edit_Wrench.png index 250697b4b1..edb40b9c96 100644 Binary files a/indra/newview/skins/default/textures/icons/Edit_Wrench.png and b/indra/newview/skins/default/textures/icons/Edit_Wrench.png differ diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index e8d5c97bbf..81046e99a0 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2348,6 +2348,16 @@ function="Advanced.ToggleInfoDisplay" parameter="raycast" /> + + + + - - You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system. diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 9ecab1a356..f20ce52125 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -204,8 +204,7 @@ name="LocalLights" top_pad="1" width="256" /> - width="256" /> - Quit http://join.secondlife.com/ + +The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer: +http://secondlife.com/download + +For more information, see our FAQ below: +http://secondlife.com/viewer-access-faq + Optional viewer update available: [VERSION] + Required viewer update: [VERSION] + This agent is already logged in. + + Sorry! We couldn't log you in. +Please check to make sure you entered the right + * Username (like bobsmith12 or steller.sunshine) + * Password +Also, please make sure your Caps Lock key is off. + As a security precaution your password has been changed. +Please go to your account page at http://secondlife.com/password +and answer the security question to reset your password. +We are very sorry for the inconvenience. + We made some changes to our system and you will need to reset your password. +Please go to your account page at http://secondlife.com/password +and answer the security question to reset your password. +We are very sorry for the inconvenience. + Second Life is temporarily closed for maintenance. +Logins are currently restricted to employees only. +Check www.secondlife.com/status for updates. + Second Life logins are temporarily restricted in order to make sure that those in-world have the best possible experience. + +People with free accounts will not be able to access Second Life during this time, to make room for those who have paid for Second Life. + Second Life cannot be accessed from this computer. +If you feel this is an error, please contact +support@secondlife.com. + Your account is not accessible until +[TIME] Pacific Time. + We are unable to complete your request at this time. +Please contact Second Life support for assistance at http://secondlife.com/support. +If you are unable to change your password, please call (866) 476-9763. + Data inconsistency found during login. +Please contact support@secondlife.com. + Your account is undergoing minor maintenance. +Your account is not accessible until +[TIME] Pacific Time. +If you feel this is an error, please contact support@secondlife.com. + Request for logout responded with a fault from simulator. + The system is logging you out right now. +Your Account will not be available until +[TIME] Pacific Time. + Unable to create valid session. + Unable to connect to a simulator. + Your account can only access Second Life +between [START] and [END] Pacific Time. +Please come back during those hours. +If you feel this is an error, please contact support@secondlife.com. + Incorrect parameters. +If you feel this is an error, please contact support@secondlife.com. + First name parameter must be alphanumeric. +If you feel this is an error, please contact support@secondlife.com. + Last name parameter must be alphanumeric. +If you feel this is an error, please contact support@secondlife.com. + Region is going offline. +Please try logging in again in a minute. + Agent not in region. +Please try logging in again in a minute. + The region was logging in another session. +Please try logging in again in a minute. + The region was logging out the previous session. +Please try logging in again in a minute. + The region is still logging out the previous session. +Please try logging in again in a minute. + Region has logged out last session. +Please try logging in again in a minute. + Region has begun the logout process. +Please try logging in again in a minute. + The system has begun logging out your last session. +Please try logging in again in a minute. + + This region may be experiencing trouble. Please check your connection to the Internet. Saving your settings... diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index 3df0f92842..9ec9fcc581 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -1,484 +1,484 @@ - - - - "Parcel_PG_Dark" - - - "Parcel_M_Dark" - - - "Parcel_R_Dark" - - - [MINUTES] minutos - - - minuto - - - [SECONDS] segundos - - - restantes - - - - - Sólo nuevos Residentes - - - Cualquiera - - - Superficie - - - [AREA] m² - - - ID de la subasta: [ID] - - - Debe aprobar su compra para modificar este terreno. - - - (Propiedad del grupo) - - - Perfil... - - - Información... - - - (público) - - - (ninguno) - - - (Venta pendiente) - - - No se ha seleccionado una parcela. -Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver sus características. - - - [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local] - - - Nombre: - - - Descripción: - - - Tipo: - - - Mainland / Homestead - - - Calificación: - - - 'Adult' - - - Propietario: - - - Grupo: - -