diff options
76 files changed, 1735 insertions, 5243 deletions
| @@ -17,6 +17,8 @@ build-darwin-*  build-vc80/  build-vc100/  build-vc120/ +build-vc120-32/ +build-vc120-64/  indra/build-vc[0-9]*  indra/CMakeFiles  indra/lib/mono/1.0/*.dll diff --git a/BuildParams b/BuildParams index 09cc06e83a..5adf249269 100755 --- a/BuildParams +++ b/BuildParams @@ -34,6 +34,10 @@ Linux.distcc_version =  Linux.gcc_version = /usr/bin/gcc-4.6  Linux.cxx_version = /usr/bin/g++-4.6 +# Need viewer-build-variables as well as other shared repositories +buildscripts_shared_more_NAMEs="build_variables" +build_variables_repostory_url = "https://bitbucket.org/lindenlab/viewer-build-variables" +  ################################################################  ####      Examples of how to set the viewer_channel         ####  # diff --git a/autobuild.xml b/autobuild.xml index f485aa0cb7..c33f24477e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -29,6 +29,18 @@              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7ea2df03bfc35c06acf23dd9e734adac</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1103/2554/SDL-1.2.15-linux64-501092.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>          </map>          <key>version</key>          <string>1.2.15</string> @@ -59,33 +71,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ae733dd8f2c83055030ea6e08c623306</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/745/1534/apr_suite-1.4.5.500735-darwin64-500735.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>402552cf158e2fe953b7224f4615a957</string> +              <string>1aa2e5355bb9df09f9196d14a72b6705</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/apr_3p-update-apr/rev/297252/arch/Linux/installer/apr_suite-1.4.5.297252-linux-297252.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-apr/rev/314241/arch/Linux/installer/apr_suite-1.4.5.314241-linux-314241.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>bc8855c8253b8293c7e61af7b1ed0f05</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/744/1545/apr_suite-1.4.5.500735-linux64-500735.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>8f865b509bb5011caf3dd95a22a4589d</string> +              <string>7d97a3788ea4f89eccb7789e4f015bb3</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/apr_3p-update-apr/rev/297252/arch/CYGWIN/installer/apr_suite-1.4.5.297252-windows-297252.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/747/1540/apr_suite-1.4.5.500735-windows-500735.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>8820c4df1079a9af53f52485f50ff179</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/746/1537/apr_suite-1.4.5.500735-windows64-500735.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.4.5.297252</string> +        <string>1.4.5.500735</string>        </map>        <key>boost</key>        <map> @@ -113,30 +161,66 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>d318c25353e41215f1f523d58cacfd44</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/893/1984/boost-1.57-darwin64-500883.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>fb1537f7ad0b490fcb4f096c15dce9cd</string> +              <string>f1fdb548fd6c09a083c86f3a23d7f041</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/boost_3p-update-boost/rev/297445/arch/Linux/installer/boost-1.57-linux-297445.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-boost/rev/317807/arch/Linux/installer/boost-1.57-linux-317807.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>8e7ee97c3083f44385b09420655ebd04</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/892/1989/boost-1.57-linux64-500883.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>76a607d8a625062b9a63a88b62819894</string> +              <string>80b1963d635e883cb5ed223e94406adb</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/boost_3p-update-boost/rev/297445/arch/CYGWIN/installer/boost-1.57-windows-297445.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/894/1976/boost-1.57-windows-500883.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>3d6a6373ed0daa490cdb4f92db45de52</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/895/1979/boost-1.57-windows64-500883.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key>          <string>1.57</string> @@ -165,33 +249,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>fa93a9a10fa379091e3e7b85665690d9</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/913/2026/colladadom-2.3.500902-darwin64-500902.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>d627c2a679f3afb8d3e090d42f53cd2e</string> +              <string>78b9a6506fb7d53da166f7a65f2278f4</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/Linux/installer/colladadom-2.3.297450-linux-297450.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-colladadom/rev/317826/arch/Linux/installer/colladadom-2.3.317826-linux-317826.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>868127582794d6fd32fa69c9be4e83e4</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/912/2031/colladadom-2.3.500902-linux64-500902.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>220897a1893a188aa9d31efb48909878</string> +              <string>5bd7875e16e7f88e21f4c44fe7c6433f</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/colladadom_3p-update-colladadom/rev/297450/arch/CYGWIN/installer/colladadom-2.3.297450-windows-297450.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/915/2035/colladadom-2.3.500902-windows-500902.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>8a647129a0a0a31594557785ea85f840</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/914/2034/colladadom-2.3.500902-windows64-500902.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>2.3.297450</string> +        <string>2.3.500902</string>        </map>        <key>curl</key>        <map> @@ -219,35 +339,71 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>99fbc15f514be77c36280f300d257d5a</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1077/2495/curl-7.47.0.501064-darwin64-501064.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>f49d4ed203b03852a3f6b01b18319f7a</string> +              <string>9430c08954c00736117099046694e1b1</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/312763/arch/Linux/installer/curl-7.47.0.312763-linux-312763.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-curl/rev/314230/arch/Linux/installer/curl-7.47.0.314230-linux-314230.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>e5d1b0439235f5f3829662a45e566743</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1075/2484/curl-7.47.0.501064-linux64-501064.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>5e0d4f4a5a5bbcba610aafbb91c30b2b</string> +              <string>bda9f237d3e8238440bc5bedc2657547</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/312763/arch/CYGWIN/installer/curl-7.47.0.312763-windows-312763.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1078/2487/curl-7.47.0.501064-windows-501064.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>f7fa42c7157cd5007283ae7a5d97393d</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1079/2490/curl-7.47.0.501064-windows64-501064.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>7.47.0.312763</string> +        <string>7.47.0.501064</string>        </map>        <key>db</key>        <map> @@ -298,13 +454,25 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>c11ff7e2e0bd59e6e59628f24902bbcd</string> +              <string>6d676abd9ad8d2883b855dbe397d9034</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/dbus-glib_3p-update-dbus-glib/rev/297768/arch/Linux/installer/dbus_glib-0.76-linux-297768.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-dbus-glib/rev/314266/arch/Linux/installer/dbus_glib-0.76-linux-314266.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7ee7b9aed3c0c8c09e7bf26bba7af8e1</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-dbus-glib/rev/314266/arch/Linux/installer/dbus_glib-0.76-linux64-314266.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>          </map>          <key>version</key>          <string>0.76</string> @@ -328,16 +496,16 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>a62723a6deea8187702a2f926e98a35f</string> +              <string>2fa9e9e89a81ed2ed686a170681f6bbc</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/dictionaries_3p-update-dictionaries/rev/297347/arch/Linux/installer/dictionaries-1.297347-common-297347.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/571/1225/dictionaries-1.500564-common-500564.tar.bz2</string>              </map>              <key>name</key>              <string>common</string>            </map>          </map>          <key>version</key> -        <string>1.297347</string> +        <string>1.500564</string>        </map>        <key>elfio</key>        <map> @@ -389,33 +557,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>fd182ab5bed66c94899dec3035310945</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/384/954/expat-2.1.1.500375-darwin64-500375.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>f546615d76bc0f9e8bc2b9ef89f0ca86</string> +              <string>387c90b9bb5ec412587fbe7a56261dd1</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/expat_3p-update-expat/rev/297014/arch/Linux/installer/expat-2.0.1.297014-linux-297014.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-expat/rev/314211/arch/Linux/installer/expat-2.1.1.314211-linux-314211.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>5e1f025d1cebd12db542080aa755257f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/380/943/expat-2.1.1.500375-linux64-500375.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>c70c72a8a0a1e508691a9b35739b373f</string> +              <string>09ece3f04ec0bd21dd0d401235aa20f7</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/expat_3p-update-expat/rev/297014/arch/CYGWIN/installer/expat-2.0.1.297014-windows-297014.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/383/949/expat-2.1.1.500375-windows-500375.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>5c82a3482799fe22b3c8fcb317f87bbb</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/382/946/expat-2.1.1.500375-windows64-500375.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>2.0.1.297014</string> +        <string>2.1.1.500375</string>        </map>        <key>fmodex</key>        <map> @@ -441,33 +645,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>5fe125f2341501bc64848645d31b58ef</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/356/893/fmodex-4.44.61.500350-darwin64-500350.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>dd0135d53706a4040d65974f7e804d6f</string> +              <string>b847ec838da1ad1dd646df9d74e9b395</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/fmodex_3p-update-fmodex/rev/297261/arch/Linux/installer/fmodex-4.44.31.297261-linux-297261.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_3p-fmodex/rev/314207/arch/Linux/installer/fmodex-4.44.61.314207-linux-314207.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>270c3eddbe2960d5edb8d316db063d07</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/355/888/fmodex-4.44.61.500350-linux64-500350.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>5aa7b826e7c1cf95e9cd3ef77e314f35</string> +              <string>ad5bb66f2aaa12636b5a69a020ea9f18</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/fmodex_3p-update-fmodex/rev/297261/arch/CYGWIN/installer/fmodex-4.44.31.297261-windows-297261.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1191/2796/fmodex-4.44.61.501175-windows-501175.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>6722f0efc2b55542bd71514b9a09e377</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1190/2791/fmodex-4.44.61.501175-windows64-501175.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>4.44.31.297261</string> +        <string>4.44.61.501175</string>        </map>        <key>fontconfig</key>        <map> @@ -488,46 +728,28 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>864f9361661748ecf0e2cec7110d70b3</string> +              <string>a20a3d0ab7fc3401bc2ca81e9309f630</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/fontconfig_3p-update-fontconfig/rev/297551/arch/Linux/installer/fontconfig-2.11.0-linux-297551.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-fontconfig/rev/314281/arch/Linux/installer/fontconfig-2.11.0-linux-314281.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> -        </map> -        <key>version</key> -        <string>2.11.0</string> -      </map> -      <key>freeglut</key> -      <map> -        <key>copyright</key> -        <string>Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.</string> -        <key>description</key> -        <string>freeglut is a completely OpenSourced alternative to the OpenGL Utility Toolkit (GLUT) library.</string> -        <key>license</key> -        <string>freeglut</string> -        <key>license_file</key> -        <string>LICENSES/freeglut.txt</string> -        <key>name</key> -        <string>freeglut</string> -        <key>platforms</key> -        <map> -          <key>windows</key> +          <key>linux64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>58e328a8b2f3788f932c57ad77e3e117</string> +              <string>e2419d56960c160670051fbb055fb729</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freeglut_3p-update-freeglut/rev/295926/arch/CYGWIN/installer/freeglut-2.6.0.295926-windows-295926.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-fontconfig/rev/314281/arch/Linux/installer/fontconfig-2.11.0-linux64-314281.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>linux64</string>            </map>          </map>          <key>version</key> -        <string>2.6.0.295926</string> +        <string>2.11.0</string>        </map>        <key>freetype</key>        <map> @@ -555,33 +777,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>3f0698d53acf14b3f0a11dba889d67f3</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/875/1919/freetype-2.4.4.500865-darwin64-500865.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>1ac3152b440287c58509d8af0a50326d</string> +              <string>1b401394106cedc86926bd488f5aa45e</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freetype_3p-update-freetype/rev/297053/arch/Linux/installer/freetype-2.4.4.297053-linux-297053.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-freetype/rev/314215/arch/Linux/installer/freetype-2.4.4.314215-linux-314215.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>94cf61dfdbc86aae5bbaf0b5cb8a366c</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/874/1914/freetype-2.4.4.500865-linux64-500865.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>207aa1a29bfe4ba63edbca38170970a1</string> +              <string>b7a8df22cfc910180c66bb1c1ed89cd4</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/freetype_3p-update-freetype/rev/297053/arch/CYGWIN/installer/freetype-2.4.4.297053-windows-297053.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/876/1922/freetype-2.4.4.500865-windows-500865.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ff72a895012ed603935083496b0a7bc9</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/877/1925/freetype-2.4.4.500865-windows64-500865.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>2.4.4.297053</string> +        <string>2.4.4.500865</string>        </map>        <key>glext</key>        <map> @@ -602,30 +860,54 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>4bf4f9e65168138eebbc769e9e12230b</string> +              <string>baf1fd13e1fe6aef586200fc87a70f53</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glext_3p-update-glext/rev/296893/arch/Linux/installer/glext-68-linux-296893.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux-314200.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>5f3c9d61b620f949b199ebd8885218ed</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux64-314200.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>6eb51c6f17e717a5617b112858d41c80</string> +              <string>731d4adecfcbd9f7d20c4bbd2c183962</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glext_3p-update-glext/rev/296893/arch/CYGWIN/installer/glext-68-windows-296893.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/CYGWIN/installer/glext-68-windows-314200.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>9635e7e6fded468dfc0874a2ead54123</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/CYGWIN/installer/glext-68-windows64-314200.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key>          <string>68</string>        </map> -      <key>glh-linear</key> +      <key>glh_linear</key>        <map>          <key>copyright</key>          <string>Copyright (c) 2000 Cass Everitt</string> @@ -636,7 +918,7 @@          <key>license_file</key>          <string>LICENSES/glh-linear.txt</string>          <key>name</key> -        <string>glh-linear</string> +        <string>glh_linear</string>          <key>platforms</key>          <map>            <key>common</key> @@ -644,9 +926,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>44c596c659d32a86972ac9c6f206cb68</string> +              <string>fa41756977ad8b9fd2d1465dadd4f956</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glh-linear_3p-glh-linear/rev/303446/arch/Linux/installer/glh_linear-0.0.0-common-303446.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/529/1139/glh_linear-0.0.0-common-500522.tar.bz2</string>              </map>              <key>name</key>              <string>common</string> @@ -681,91 +963,73 @@              <key>name</key>              <string>darwin</string>            </map> -          <key>linux</key> +          <key>darwin64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>fffd130f17cbbe2b93cc241b27262647</string> -              <key>hash_algorithm</key> -              <string>md5</string> +              <string>047ce52d5fe3e9ac70763de0098cf530</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glod_3p-update-glod/rev/296895/arch/Linux/installer/glod-1.0pre4.296895-linux-296895.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/719/1462/glod-1.0pre3.500710-darwin64-500710.tar.bz2</string>              </map>              <key>name</key> -            <string>linux</string> +            <string>darwin64</string>            </map> -          <key>windows</key> +          <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>b0b32155319c6441997c034bdae28a22</string> +              <string>58113bcbbacbaeb2d278f745867ae6f0</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glod_3p-update-glod/rev/296895/arch/CYGWIN/installer/glod-1.0pre4.296895-windows-296895.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glod/rev/314201/arch/Linux/installer/glod-1.0pre4.314201-linux-314201.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>linux</string>            </map> -        </map> -        <key>version</key> -        <string>1.0pre4.296895</string> -      </map> -      <key>glui</key> -      <map> -        <key>copyright</key> -        <string>Copyright 2006 Paul Rademacher</string> -        <key>description</key> -        <string>GLUI is a GLUT-based C++ user interface library which provides controls such as buttons, checkboxes, radio buttons, and spinners to OpenGL applications.</string> -        <key>license</key> -        <string>ZLIB</string> -        <key>license_file</key> -        <string>LICENSES/glui.txt</string> -        <key>name</key> -        <string>glui</string> -        <key>platforms</key> -        <map> -          <key>darwin</key> +          <key>linux64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>9b7e2ab9b208b3001803294f83d2b610</string> +              <string>8cb665230ec24048aa3b733f2b1c3b00</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/Darwin/installer/glui-2.36.297273-darwin-297273.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glod/rev/314201/arch/Linux/installer/glod-1.0pre4.314201-linux64-314201.tar.bz2</string>              </map>              <key>name</key> -            <string>darwin</string> +            <string>linux64</string>            </map> -          <key>linux</key> +          <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>f330b3acd03526d827030eefeeb06240</string> +              <string>511d066e35bbc14dd512c831b53a2fad</string> +              <key>hash_algorithm</key> +              <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/Linux/installer/glui-2.36.297273-linux-297273.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/720/1465/glod-1.0pre3.500710-windows-500710.tar.bz2</string>              </map>              <key>name</key> -            <string>linux</string> +            <string>windows</string>            </map> -          <key>windows</key> +          <key>windows64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>75b16a5a606c78aaeb2f8e6046310a58</string> +              <string>7fa6f187fc5e4175a13d3e0d4b6658a4</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/glui_3p-update-glui/rev/297273/arch/CYGWIN/installer/glui-2.36.297273-windows-297273.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/721/1468/glod-1.0pre3.500710-windows64-500710.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>2.36.297273</string> +        <string>1.0pre3.500710</string>        </map>        <key>google_breakpad</key>        <map> @@ -793,33 +1057,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>0b76c9551ae3ef1ede9a9abee865f55b</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/568/1209/google_breakpad-1413.500560-darwin64-500560.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>0bf69fbc829d964820b798a0494278c9</string> +              <string>352e673897e8f36f8470150b8ace6ce9</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298033/arch/Linux/installer/google_breakpad-1413.298033-linux-298033.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-google-breakpad/rev/314225/arch/Linux/installer/google_breakpad-1413.314225-linux-314225.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>066ce05521a0e1cff2da8aeecfefd7f1</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/567/1217/google_breakpad-1413.500560-linux64-500560.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>c73a7c9aa53a4e266df2d5230a650fbf</string> +              <string>c6a4497fbf3af4e06f74d529f4f084b0</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-breakpad_3p-update-google-breakpad/rev/298127/arch/CYGWIN/installer/google_breakpad-1413.298127-windows-298127.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/570/1220/google_breakpad-1413.500560-windows-500560.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>46409efe7425f637a7757c3a578e7baa</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/569/1212/google_breakpad-1413.500560-windows64-500560.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1413.298127</string> +        <string>1413.500560</string>        </map>        <key>googlemock</key>        <map> @@ -847,87 +1147,69 @@              <key>name</key>              <string>darwin</string>            </map> -          <key>linux</key> +          <key>darwin64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>e08b0e9e269b80b549f6044c4e608fb5</string> +              <string>1a8081953bdf1bbbc9b8a8e6e062c02d</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/googlemock_3p-update-googlemock/rev/297460/arch/Linux/installer/googlemock-1.7.0.297460-linux-297460.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/919/2048/googlemock-1.7.0.500908-darwin64-500908.tar.bz2</string>              </map>              <key>name</key> -            <string>linux</string> +            <string>darwin64</string>            </map> -          <key>windows</key> +          <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>f30de5bf36e8ca8681883fe8fd8e0092</string> +              <string>ad51f68702f25ba245fff312c50c8876</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/googlemock_3p-update-googlemock/rev/297460/arch/CYGWIN/installer/googlemock-1.7.0.297460-windows-297460.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-googlemock/rev/317828/arch/Linux/installer/googlemock-1.7.0.317828-linux-317828.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>linux</string>            </map> -        </map> -        <key>version</key> -        <string>1.7.0.297460</string> -      </map> -      <key>gperftools</key> -      <map> -        <key>copyright</key> -        <string>Copyright (c) 2005, Google Inc.</string> -        <key>description</key> -        <string>Fast, multi-threaded malloc() and nifty performance analysis tools</string> -        <key>license</key> -        <string>BSD</string> -        <key>license_file</key> -        <string>LICENSES/gperftools.txt</string> -        <key>name</key> -        <string>gperftools</string> -        <key>platforms</key> -        <map> -          <key>darwin</key> +          <key>linux64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>0137e450bf24cff7e78634bb9a1c85e4</string> +              <string>0f606bf01f933f00edeb9bf9a2530930</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/Darwin/installer/gperftools-2.0.297263-darwin-297263.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/918/2056/googlemock-1.7.0.500908-linux64-500908.tar.bz2</string>              </map>              <key>name</key> -            <string>darwin</string> +            <string>linux64</string>            </map> -          <key>linux</key> +          <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>0c252bcaa1cb852f5c4e46a13ed459c5</string> +              <string>d01c9b12be6c5bb0749441495d45cba3</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/Linux/installer/gperftools-2.0.297263-linux-297263.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/920/2051/googlemock-1.7.0.500908-windows-500908.tar.bz2</string>              </map>              <key>name</key> -            <string>linux</string> +            <string>windows</string>            </map> -          <key>windows</key> +          <key>windows64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>2946f9bbf227dee8881af43856ebb3a1</string> +              <string>e508a2ac7900853cc551666d0cf06541</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/google-perftools_3p-update-google-perftools/rev/297263/arch/CYGWIN/installer/gperftools-2.0.297263-windows-297263.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/921/2059/googlemock-1.7.0.500908-windows64-500908.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>2.0.297263</string> +        <string>1.7.0.500908</string>        </map>        <key>gstreamer</key>        <map> @@ -946,16 +1228,28 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>fb1479533a7699b44d34e3a550037eb7</string> +              <string>5017b3e95d2c6f47bb111c3f9c075522</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/gstreamer_3p-update-gstreamer/rev/294903/arch/Linux/installer/gstreamer-0.10.6.294903-linux-294903.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gstreamer/rev/314267/arch/Linux/installer/gstreamer-0.10.6.314267-linux-314267.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7c9d7cc88add7831a6afeedc20cad2fe</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gstreamer/rev/314267/arch/Linux/installer/gstreamer-0.10.6.314267-linux64-314267.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>          </map>          <key>version</key> -        <string>0.10.6.294903</string> +        <string>0.10.6.314267</string>        </map>        <key>gtk-atk-pango-glib</key>        <map> @@ -974,16 +1268,28 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>15af375116f5c943ea6f4190bc764224</string> +              <string>a6431df705526501684d9050e04bfa5b</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/gtk_3p-gtk-atk-pango-glib/rev/294804/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux-294804.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gtk-atk-pango-glib/rev/314220/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux-314220.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>de7bba8fd2275a11b077b124413065d0</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-gtk-atk-pango-glib/rev/314220/arch/Linux/installer/gtk_atk_pango_glib-0.1-linux64-314220.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>          </map>          <key>version</key> -        <string>0.0</string> +        <string>0.1</string>        </map>        <key>havok-source</key>        <map> @@ -1011,33 +1317,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>cbaa7619050123c3fd2a88959f88bd47</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/749/1553/havok_source-2012.1-2-darwin64-500739.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>6b0f41ddddfa60d8424d8a2e0bc2077d</string> +              <string>03c1c5f7c3e93e905f635ca22b607494</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/296959/arch/Linux/installer/havok_source-2012.1-linux-296959.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_3p-havok-source/rev/314226/arch/Linux/installer/havok_source-2012.1-2-linux-314226.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>00d0333936a67059a43a6ec8ac38d564</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/748/1563/havok_source-2012.1-2-linux64-500739.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>ab30ae74a665950d73ea559f019ff358</string> +              <string>dab55cc0555d7126fda925e20af851ea</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/havok-source_3p-update-havok-source/rev/297566/arch/CYGWIN/installer/havok_source-2012.1-windows-297566.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1194/2807/havok_source-2012.1-2-windows-501181.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7bbc1c3512a5665b7576b4b0357a9eb7</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1195/2816/havok_source-2012.1-2-windows64-501181.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>2012.1</string> +        <string>2012.1-2</string>        </map>        <key>jpeglib</key>        <map> @@ -1065,33 +1407,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>2a33d85c5afa07612e8c4f314ab29545</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/478/1016/jpeglib-8c.500387-darwin64-500387.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>0a6641f030e173a7bc0dc8a3087b6c7d</string> +              <string>32560d3200da72fea2922371fcef25f5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jpeglib_3p-update-jpeglib/rev/296854/arch/Linux/installer/jpeglib-8c.296854-linux-296854.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-jpeglib/rev/314202/arch/Linux/installer/jpeglib-8c.314202-linux-314202.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7d699142394f54a334b4fd203b4c9eea</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/457/970/jpeglib-8c.500387-linux64-500387.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>98d3dc8d107d04b572fe47bd43a56e74</string> +              <string>543e25c3819399f37e0453db5eea558a</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jpeglib_3p-update-jpeglib/rev/296854/arch/CYGWIN/installer/jpeglib-8c.296854-windows-296854.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/497/1062/jpeglib-8c.500387-windows-500387.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>dbc2baf28f83d1646d7e2f66ead2a1a4</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/494/1049/jpeglib-8c.500387-windows64-500387.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>8c.296854</string> +        <string>8c.500387</string>        </map>        <key>jsoncpp</key>        <map> @@ -1119,33 +1497,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ba30bc3d67ef22700b534b15505bf976</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/606/1275/jsoncpp-0.5.0.500597-darwin64-500597.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>5b3b5dbf0c82c1046482a74ce9e11c38</string> +              <string>9d5d9fec28cbbb1651b95728173f8af7</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297281/arch/Linux/installer/jsoncpp-0.5.0.297281-linux-297281.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-jsoncpp/rev/314229/arch/Linux/installer/jsoncpp-0.5.0.314229-linux-314229.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>a88378cb3019a47f3249243384d3c5da</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/605/1270/jsoncpp-0.5.0.500597-linux64-500597.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>e5a832cffe307a1e814ca0664be30b10</string> +              <string>483ba51ff4060d02900adf8b7ca12e32</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/jsoncpp_3p-update-jsoncpp/rev/297580/arch/CYGWIN/installer/jsoncpp-0.5.0.297580-windows-297580.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/608/1281/jsoncpp-0.5.0.500597-windows-500597.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>25694d8f71efba5479e0475cd1bf3c2f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/607/1278/jsoncpp-0.5.0.500597-windows64-500597.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>0.5.0.297580</string> +        <string>0.5.0.500597</string>        </map>        <key>kdu</key>        <map> @@ -1166,13 +1580,25 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>e62f2fc1ee9ab791d603c5b717b46119</string> +              <string>c2a8811ab2ff1e60a8afc6268c5b44c1</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/kdu_3p-update-kdu/rev/296932/arch/Darwin/installer/kdu-7.2.296932-darwin-296932.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1119/2596/kdu-7.8.501106-darwin-501106.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>a13540f797be940fc9fd6d9299633a1a</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1118/2591/kdu-7.8.501106-darwin64-501106.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key> @@ -1185,21 +1611,45 @@              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>c4e560a31c009ad3e62b79daf2cc8628</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/958/2200/kdu-7.8.500948-linux64-500948.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>a0e5c050a4975c81611d9f1862ac57fb</string> +              <string>f25f1b6e36c571d5ddb5625ac5fe1633</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/kdu_3p-update-kdu/rev/296932/arch/CYGWIN/installer/kdu-7.2.296932-windows-296932.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1123/2612/kdu-7.8.501106-windows-501106.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>fc706eaebd1a81b8f6e95acb6e06cc28</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/1122/2609/kdu-7.8.501106-windows64-501106.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>7.2.296932</string> +        <string>7.8.501106</string>        </map>        <key>libhunspell</key>        <map> @@ -1227,33 +1677,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>4b238300cf9c405cdcab18030372832f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/534/1149/libhunspell-1.3.2.500526-darwin64-500526.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>988deae5c63ec638ad222b400a431f5b</string> +              <string>0d8009c3b6c1eb510593476dd1d821b5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/hunspell_3p-update-hunspell/rev/296916/arch/Linux/installer/libhunspell-1.3.2.296916-linux-296916.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-hunspell/rev/314217/arch/Linux/installer/libhunspell-1.3.2.314217-linux-314217.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ffbdd109356d66ddfefd8a5d57f63f1f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/533/1144/libhunspell-1.3.2.500526-linux64-500526.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>ada0ad726842d902c09ab20a7ad5ac8f</string> +              <string>a2025f748a6311ab390f89068b22c702</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/hunspell_3p-update-hunspell/rev/296916/arch/CYGWIN/installer/libhunspell-1.3.2.296916-windows-296916.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/535/1152/libhunspell-1.3.2.500526-windows-500526.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>233d86906ef88fa331263162a53e29f2</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/536/1155/libhunspell-1.3.2.500526-windows64-500526.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.3.2.296916</string> +        <string>1.3.2.500526</string>        </map>        <key>libndofdev</key>        <map> @@ -1281,21 +1767,45 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>840bb6219f63a789749f5f6583c44eee</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/704/1420/libndofdev-0.1.500695-darwin64-500695.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>1c40c22fb7b84ccccefbf797e2478ec4</string> +              <string>fdbebbbde3b289d93c0c8c294cf859cb</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libndofdev_3p-update-libndofdev/rev/297264/arch/CYGWIN/installer/libndofdev-0.1.297264-windows-297264.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/708/1426/libndofdev-0.1.500695-windows-500695.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>15cef2cec6c8d1980011e26249bd4e90</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/707/1423/libndofdev-0.1.500695-windows64-500695.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>0.1.297264</string> +        <string>0.1.500695</string>        </map>        <key>libpng</key>        <map> @@ -1323,33 +1833,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>537b59a75709bd9abe0abe0c7309add4</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/883/1951/libpng-1.6.8.500873-darwin64-500873.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>6dec32fc2527f8cafd616f9271ff3478</string> +              <string>0758f3cb4c02ebab61854b811b0894e9</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297051/arch/Linux/installer/libpng-1.6.8.297051-linux-297051.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libpng/rev/314214/arch/Linux/installer/libpng-1.6.8.314214-linux-314214.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>13de93ea11544051b69f238eeb644fd3</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>09eb65e66e0230ab01e57e643647a4f1</string> +              <string>9c2950f9d16566979dcd6ca6336778b3</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libpng_3p-update-libpng/rev/297708/arch/CYGWIN/installer/libpng-1.6.8.297708-windows-297708.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/885/1957/libpng-1.6.8.500873-windows-500873.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>18fe233471e91d5d3ac6d08a296b79ba</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/884/1954/libpng-1.6.8.500873-windows64-500873.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.6.8.297708</string> +        <string>1.6.8.500873</string>        </map>        <key>libuuid</key>        <map> @@ -1370,13 +1916,25 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>f231b6ec8bc2f050cfb1ee20bd83190d</string> +              <string>a2eaf9515cd129f3e21a08e92689006b</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libuuid_3p-update-libuuid/rev/295209/arch/Linux/installer/libuuid-1.6.2-linux-295209.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libuuid/rev/314269/arch/Linux/installer/libuuid-1.6.2-linux-314269.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>fb89f1281dd54d8b99b339fc5b712b27</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libuuid/rev/314269/arch/Linux/installer/libuuid-1.6.2-linux64-314269.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>          </map>          <key>version</key>          <string>1.6.2</string> @@ -1407,33 +1965,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>89a71a652a5ecd7cf6142ff56f40f018</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/891/1973/libxml2-2.9.4.500877-darwin64-500877.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>b8b584853dc1344bb3571c13b06ec39e</string> +              <string>6954173a141d928f2614076577d952de</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libxml_3p-update-libxml/rev/297050/arch/Linux/installer/libxml2-2.9.1.297050-linux-297050.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-libxml/rev/314197/arch/Linux/installer/libxml2-2.9.1.314197-linux-314197.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>740fc93f195c77b3a0c0800b31878ecb</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/890/1968/libxml2-2.9.4.500877-linux64-500877.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>37fa0e86e54f5f283aa653d770fc8ed5</string> +              <string>c2461ba7629c4cef5af623464aded3c6</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/libxml_3p-update-libxml/rev/297050/arch/CYGWIN/installer/libxml2-2.9.1.297050-windows-297050.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/888/1960/libxml2-2.9.4.500877-windows-500877.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>8ec25000f5d72e26c2e7555c73898fbb</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/889/1963/libxml2-2.9.4.500877-windows64-500877.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>2.9.1.297050</string> +        <string>2.9.4.500877</string>        </map>        <key>llappearance_utility</key>        <map> @@ -1498,18 +2092,30 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>1156121b4ccbb4aa29bc01f15c589f98</string> +              <string>640cd808de734d9a6ca564475d951980</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llceflib_3p-llceflib/rev/321153/arch/CYGWIN/installer/llceflib-1.5.3.321153-windows-321153.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1121/2604/llceflib-1.5.3.501109-windows-501109.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>f4b75f37ba344db3efeddfafff10f5f9</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1120/2601/llceflib-1.5.3.501109-windows64-501109.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.5.3.317959</string> +        <string>1.5.3.501109</string>        </map>        <key>llphysicsextensions_source</key>        <map> @@ -1537,33 +2143,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>8d66b068425d2cbc65949c83d7f37d23</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/486/1031/llphysicsextensions_source-1.0.500392-darwin64-500392.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>c94dc7ab6efe59c0d5d04fc447257c57</string> +              <string>18ebea18be4cf0d3da4a6bb73787395c</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Linux/installer/llphysicsextensions_source-1.0.313564-linux-313564.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/p64_llphysicsextensions/rev/314244/arch/Linux/installer/llphysicsextensions_source-1.0.314244-linux-314244.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>20279e8be7f8971c59f0b8f6aa513098</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/463/980/llphysicsextensions_source-1.0.500392-linux64-500392.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>e760be34addeb0cd6e2ec43394834bac</string> +              <string>0ac91b8fadeebb767d8c7a4ab5272319</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/CYGWIN/installer/llphysicsextensions_source-1.0.313564-windows-313564.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/508/1090/llphysicsextensions_source-1.0.500392-windows-500392.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ec95c627af598b6db5be99cff5559699</string> +              <key>url</key> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/507/1087/llphysicsextensions_source-1.0.500392-windows64-500392.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.0.313564</string> +        <string>1.0.500392</string>        </map>        <key>llphysicsextensions_stub</key>        <map> @@ -1591,33 +2233,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>c7676595a2b49e41aa3e32bf99e5cf2f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1081/2505/llphysicsextensions_stub-1.0.501069-darwin64-501069.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>e99afb25a4fd5b08c5cd3060ae9c1d59</string> +              <string>f7dc825d13dec920a36641823f87dd94</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/Linux/installer/llphysicsextensions_stub-1.0.313563-linux-313563.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_llphysicsextensions/rev/314246/arch/Linux/installer/llphysicsextensions_stub-1.0.314246-linux-314246.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>430a1c16c2a0f999742411389e6bb50f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1080/2500/llphysicsextensions_stub-1.0.501069-linux64-501069.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>6f4307a35c692e44b872125d7932df8e</string> +              <string>72b163adfc692d4930fa391043329c88</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions/rev/313563/arch/CYGWIN/installer/llphysicsextensions_stub-1.0.313563-windows-313563.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1083/2511/llphysicsextensions_stub-1.0.501069-windows-501069.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>b0a066c3fcee095843d9077ccbc8a75b</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1082/2508/llphysicsextensions_stub-1.0.501069-windows64-501069.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.0.313563</string> +        <string>1.0.501069</string>        </map>        <key>mesa</key>        <map> @@ -1664,16 +2342,28 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>9e30c9e228d6a825b6774b97ff052973</string> +              <string>22c7be12c1d2ee87b059be903d7f2fbd</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/nvapi_3p-update-nvapi/rev/295118/arch/CYGWIN/installer/nvapi-304-windows-295118.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-nvapi/rev/314405/arch/CYGWIN/installer/nvapi-352.314405-windows-314405.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>90e32843a0e21037001dc88240008e1f</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-nvapi/rev/314405/arch/CYGWIN/installer/nvapi-352.314405-windows64-314405.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>304</string> +        <string>352.314405</string>        </map>        <key>ogg_vorbis</key>        <map> @@ -1701,33 +2391,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>bb8bed08fd5973a040c509ef8b545ec8</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/490/1046/ogg_vorbis-1.2.2-1.3.2.500397-darwin64-500397.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>b0cd31d5b07a9fc25c4d69ba2f95eace</string> +              <string>5c9d94dce4551b19790057766ff939ea</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oggvorbis_3p-update-oggvorbis/rev/296878/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2.296878-linux-296878.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-oggvorbis/rev/314224/arch/Linux/installer/ogg_vorbis-1.2.2-1.3.2.314224-linux-314224.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>45ebd074053dc9cae8c5c74b52085d4b</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/465/990/ogg_vorbis-1.2.2-1.3.2.500397-linux64-500397.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>f358717739c288ec7401d6d1936ef878</string> +              <string>f7edf86dcf2d9be7bee98c91256fa569</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/oggvorbis_3p-update-oggvorbis/rev/296878/arch/CYGWIN/installer/ogg_vorbis-1.2.2-1.3.2.296878-windows-296878.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/512/1108/ogg_vorbis-1.2.2-1.3.2.500397-windows-500397.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>497ec6ac26c2e136ee65acbed86cb2ef</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/511/1105/ogg_vorbis-1.2.2-1.3.2.500397-windows64-500397.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.2.2-1.3.2.296878</string> +        <string>1.2.2-1.3.2.500397</string>        </map>        <key>open-libndofdev</key>        <map> @@ -1778,37 +2504,61 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>15ebe611213c9577691ffbade081549d</string> +              <string>24b91eda3831a51c7774644016c4cb09</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openal_3p-update-openal/rev/297677/arch/Linux/installer/openal-1.12.854-1.1.0.297677-linux-297677.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/Linux/installer/openal-1.12.854-1.1.0.314223-linux-314223.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7530fab3979312da75a903d87b73e3a9</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/Linux/installer/openal-1.12.854-1.1.0.314223-linux64-314223.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>3bf6e26aeec71f36c8b6e20c6b883fe9</string> +              <string>d9c86f79a6bb56a670e2801c33fd2dd1</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openal_3p-update-openal/rev/297677/arch/CYGWIN/installer/openal-1.12.854-1.1.0.297677-windows-297677.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows-314223.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>e0fdd9394a8cd8c6360b922f6f237e57</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows64-314223.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.12.854-1.1.0.297677</string> +        <string>1.12.854-1.1.0.314223</string>        </map>        <key>openjpeg</key>        <map>          <key>copyright</key> -        <string>Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium, Copyright (c) 2002-2007, Professor Benoit Macq, Copyright (c) 2001-2003, David Janssens, Copyright (c) 2002-2003, Yannick Verschueren, Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe, Copyright (c) 2005, Herve Drolon, FreeImage Team</string> +        <string>Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium; Copyright (c) 2002-2007, Professor Benoit Macq; Copyright (c) 2001-2003, David Janssens; Copyright (c) 2002-2003, Yannick Verschueren; Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe; Copyright (c) 2005, Herve Drolon, FreeImage Team; Copyright (c) 2006-2007, Parvatha Elangovan; Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>; Copyright (c) 2010-2011, Kaori Hagihara; Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France; Copyright (c) 2012, CS Systemes d'Information, France;</string>          <key>description</key>          <string>The OpenJPEG library is an open-source JPEG 2000 codec written in C language.</string>          <key>license</key> @@ -1831,33 +2581,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>f7013e1f0b6a877090622fd73ec72cbc</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1114/2576/openjpeg-1.5.1.501102-darwin64-501102.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>675c283030879d3d9c49082bfa2192eb</string> +              <string>e82317482647559d46a818ba48e9423a</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openjpeg_3p-update-openjpeg/rev/297018/arch/Linux/installer/openjpeg-1.4.297018-linux-297018.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openjpeg/rev/314205/arch/Linux/installer/openjpeg-2.0.0.314205-linux-314205.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>ac66f3197010b1549a5e4467aebbc27d</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1113/2571/openjpeg-1.5.1.501102-linux64-501102.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>b35adcf74d22c128045aa87aade74736</string> +              <string>8a7f0be5647e07235d205ac00805fb78</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openjpeg_3p-update-openjpeg/rev/297018/arch/CYGWIN/installer/openjpeg-1.4.297018-windows-297018.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1116/2586/openjpeg-1.5.1.501102-windows-501102.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>398544058036bc27097fcff208934d11</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1115/2581/openjpeg-1.5.1.501102-windows64-501102.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.4.297018</string> +        <string>1.5.1.501102</string>        </map>        <key>openssl</key>        <map> @@ -1885,33 +2671,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>7011482b07b32b375ecc3e891c37f469</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1063/2462/openssl-1.0.1u.501051-darwin64-501051.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>c310ba9971cbd796b303c3be67fb11c6</string> +              <string>f46a601d60b7dbcfde32afc0cb64453e</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openssl_3p-update-openssl/rev/297168/arch/Linux/installer/openssl-1.0.1h.297168-linux-297168.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openssl/rev/314227/arch/Linux/installer/openssl-1.0.1h.314227-linux-314227.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>50bb9aca605a599cb1a46da3c45f78ac</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1062/2473/openssl-1.0.1u.501051-linux64-501051.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>398743f47578cbb44f5504128780369f</string> +              <string>7d9801f9ce049ffd30fbe06b6bac4c91</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/openssl_3p-update-openssl/rev/297168/arch/CYGWIN/installer/openssl-1.0.1h.297168-windows-297168.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1064/2465/openssl-1.0.1u.501051-windows-501051.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>c3e404a9cc51d64c71ec13dbd44b8409</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1065/2468/openssl-1.0.1u.501051-windows64-501051.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.0.1h.297168</string> +        <string>1.0.1u.501051</string>        </map>        <key>pcre</key>        <map> @@ -1939,63 +2761,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>addfbc0635b0ea65d7a151dd7ec5ef85</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/909/2015/pcre-8.35.500898-darwin64-500898.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>b82817bcc2f63094d9c915d018d0b036</string> +              <string>24a119b18e63017ad932ad54df8161bc</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/pcre_3p-update-pcre/rev/297155/arch/Linux/installer/pcre-8.35.-linux-297155.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-pcre/rev/314136/arch/Linux/installer/pcre-8.35.314136-linux-314136.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>0f058ca2176e7d02d51e54c66a96f336</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/908/2010/pcre-8.35.500898-linux64-500898.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>96ed836c89a99dfc22f9c16a0d7272d3</string> +              <string>150220f39f0aa5a8d9e609b450a9b147</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/pcre_3p-update-pcre/rev/297155/arch/CYGWIN/installer/pcre-8.35.-windows-297155.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/911/2021/pcre-8.35.500898-windows-500898.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> -        </map> -        <key>version</key> -        <string>8.35.</string> -      </map> -      <key>quicktime</key> -      <map> -        <key>copyright</key> -        <string>2010 Apple</string> -        <key>description</key> -        <string>QuickTime 7.3 SDK for Windows</string> -        <key>license</key> -        <string>unknown</string> -        <key>license_file</key> -        <string>LICENSES/quicktime.txt</string> -        <key>name</key> -        <string>quicktime</string> -        <key>platforms</key> -        <map> -          <key>windows</key> +          <key>windows64</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>78650a79bda6435e623a940ad425a593</string> +              <string>eaebfb4a96a6306ee8e0b18434d125f9</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/quicktime_3p-update-quicktime/rev/300073/arch/CYGWIN/installer/quicktime-7.3-windows-300073.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/910/2018/pcre-8.35.500898-windows64-500898.tar.bz2</string>              </map>              <key>name</key> -            <string>windows</string> +            <string>windows64</string>            </map>          </map>          <key>version</key> -        <string>7.3</string> +        <string>8.35.500898</string>        </map>        <key>slvoice</key>        <map> @@ -2016,40 +2844,76 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>3dd9bf4185bf2df413d890ca9eeab76c</string> +              <string>8c2f921001a8ee29b826a45181465735</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/Darwin/installer/slvoice-4.6.0017.22050.302004-darwin-302004.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-slvoice/rev/314209/arch/Darwin/installer/slvoice-4.6.0017.21209.314209-darwin-314209.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>c9b0d816cf14bebba138ea6f9f463553</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/614/1294/slvoice-4.6.0017.21209.500605-darwin64-500605.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>06c3a9b1005249f0c94a8b9f3775f3d3</string> +              <string>e5832a68562c3409a56a3583d101864b</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/Linux/installer/slvoice-3.2.0002.10426.302004-linux-302004.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-slvoice/rev/314209/arch/Linux/installer/slvoice-3.2.0002.10426.314209-linux-314209.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>92b0ae08832bd0e99c34ef8f3e6346ad</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/613/1289/slvoice-3.2.0002.10426.500605-linux64-500605.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>47a3316dae47cc4e7c1ea7b74ba8dd1e</string> +              <string>3ce62e3696f26a1e09e0c769280e5608</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/vivox_3p-slvoice/rev/302004/arch/CYGWIN/installer/slvoice-4.6.0017.22050.302004-windows-302004.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/616/1300/slvoice-4.6.0017.21209.500605-windows-500605.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>61c41dd565e2caa38bd0056970094749</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/615/1297/slvoice-4.6.0017.21209.500605-windows64-500605.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>3.2.0002.10426.302004</string> +        <string>4.6.0017.21209.500605</string>        </map>        <key>tut</key>        <map> @@ -2070,9 +2934,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>2f32faa00e600911f838a7d82da5a8db</string> +              <string>722563bd6e2ae0c7e53c027d267154f7</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/tut_3p-update-tut/rev/297257/arch/Linux/installer/tut-2008.11.30-common-297257.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/496/1054/tut-2008.11.30-common-500403.tar.bz2</string>              </map>              <key>name</key>              <string>common</string> @@ -2107,6 +2971,18 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>5b9cd1d6fac519aad59f6d53a54229c5</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/347/872/uriparser-0.8.0.1-darwin64-500342.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key> @@ -2119,18 +2995,42 @@              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>087375378f104cdac0cb0fe0ca43dd4d</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/346/880/uriparser-0.8.0.1-linux64-500342.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>e4520158dda88453e46942eab6f9c0a8</string> +              <string>1becd11c19dd1763f0322ba4d1a5ee06</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/uriparser_3p-update-uriparser/rev/299435/arch/CYGWIN/installer/uriparser-0.8.0.1-windows-299435.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/521/1129/uriparser-0.8.0.1-windows-500342.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>587db55a2a3ce57628374b5e27b3272e</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/349/875/uriparser-0.8.0.1-windows64-500342.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key>          <string>0.8.0.1</string> @@ -2201,33 +3101,69 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>b2d31df56a10c634657eed856c8d7895</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/728/1494/xmlrpc_epi-0.54.1.500719-darwin64-500719.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>30bb26d6cc78c16047fc85a63f48fcdb</string> +              <string>b63f828e798287d475991134cdcfbca3</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/xmlrpc-emi_3p-update-xmlrpc-epi/rev/297075/arch/Linux/installer/xmlrpc_epi-0.54.1.297075-linux-297075.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-xmlrpc-epi/rev/314240/arch/Linux/installer/xmlrpc_epi-0.54.1.314240-linux-314240.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>35df17c3eb673030dea4bde9191aa506</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/727/1489/xmlrpc_epi-0.54.1.500719-linux64-500719.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>a7e1a8369a5afd52e1b6fc1f14155033</string> +              <string>6c16f020bf01155e6746487af0b26173</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/xmlrpc-emi_3p-update-xmlrpc-epi/rev/297075/arch/CYGWIN/installer/xmlrpc_epi-0.54.1.297075-windows-297075.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/729/1497/xmlrpc_epi-0.54.1.500719-windows-500719.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>a9dda7caa8835c52b3735711cfee4eb9</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/730/1500/xmlrpc_epi-0.54.1.500719-windows64-500719.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>0.54.1.297075</string> +        <string>0.54.1.500719</string>        </map>        <key>zlib</key>        <map> @@ -2255,35 +3191,71 @@              <key>name</key>              <string>darwin</string>            </map> +          <key>darwin64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>e204dee29902549f50af1af2bb098df5</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/867/1903/zlib-1.2.8.500857-darwin64-500857.tar.bz2</string> +            </map> +            <key>name</key> +            <string>darwin64</string> +          </map>            <key>linux</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>2eb8e59b6464222dcf4435016ad5f618</string> +              <string>98a8c775c581ca80bb559e8b4e8eaae7</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/zlib_3p-update-zlib/rev/296881/arch/Linux/installer/zlib-1.2.8.296881-linux-296881.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-zlib/rev/314131/arch/Linux/installer/zlib-1.2.8.314131-linux-314131.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string>            </map> +          <key>linux64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>dab6be8b0596c1e3354f2b6d41335131</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/866/1898/zlib-1.2.8.500857-linux64-500857.tar.bz2</string> +            </map> +            <key>name</key> +            <string>linux64</string> +          </map>            <key>windows</key>            <map>              <key>archive</key>              <map>                <key>hash</key> -              <string>ae420ec6d30411c07aac2502d7bbc0f3</string> +              <string>f92cbb0ab5e5d20789bf6102f9a27aa6</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/zlib_3p-update-zlib/rev/296881/arch/CYGWIN/installer/zlib-1.2.8.296881-windows-296881.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/868/1906/zlib-1.2.8.500857-windows-500857.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string>            </map> +          <key>windows64</key> +          <map> +            <key>archive</key> +            <map> +              <key>hash</key> +              <string>70a56767f6a109af412838875d0b5f1b</string> +              <key>url</key> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/869/1909/zlib-1.2.8.500857-windows64-500857.tar.bz2</string> +            </map> +            <key>name</key> +            <string>windows64</string> +          </map>          </map>          <key>version</key> -        <string>1.2.8.296881</string> +        <string>1.2.8.500857</string>        </map>      </map>      <key>package_description</key> @@ -2316,7 +3288,7 @@                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> -                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string>                  </array> @@ -2337,7 +3309,7 @@                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo</string> -                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                  </array> @@ -2357,7 +3329,7 @@                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> -                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=TRUE</string>                  </array> @@ -2378,7 +3350,7 @@                  <key>options</key>                  <array>                    <string>-DCMAKE_BUILD_TYPE:STRING=Release</string> -                  <string>-DWORD_SIZE:STRING=32</string> +                  <string>-DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE</string>                    <string>-DROOT_PROJECT_NAME:STRING=SecondLife</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                  </array> @@ -2390,7 +3362,7 @@            <key>name</key>            <string>common</string>          </map> -        <key>darwin</key> +        <key>darwin64</key>          <map>            <key>build_directory</key>            <string>build-darwin-i386</string> @@ -2408,8 +3380,10 @@                  </array>                  <key>options</key>                  <array> -                  <string>-configuration RelWithDebInfo</string> -                  <string>-project SecondLife.xcodeproj</string> +                  <string>-configuration</string> +                  <string>RelWithDebInfo</string> +                  <string>-project</string> +                  <string>SecondLife.xcodeproj</string>                  </array>                </map>                <key>configure</key> @@ -2421,7 +3395,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Xcode'</string> +                  <string>Xcode</string>                  </array>                </map>                <key>default</key> @@ -2437,8 +3411,10 @@                  <string>xcodebuild</string>                  <key>options</key>                  <array> -                  <string>-configuration RelWithDebInfo</string> -                  <string>-project SecondLife.xcodeproj</string> +                  <string>-configuration</string> +                  <string>RelWithDebInfo</string> +                  <string>-project</string> +                  <string>SecondLife.xcodeproj</string>                  </array>                </map>                <key>configure</key> @@ -2446,7 +3422,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Xcode'</string> +                  <string>Xcode</string>                  </array>                </map>                <key>name</key> @@ -2464,10 +3440,12 @@                  </array>                  <key>options</key>                  <array> -                  <string>-configuration Release</string> -                  <string>-project SecondLife.xcodeproj</string> +                  <string>-configuration</string> +                  <string>Release</string> +                  <string>-project</string> +                  <string>SecondLife.xcodeproj</string>                    <string>-DENABLE_SIGNING:BOOL=YES</string> -                  <string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string> +                  <string>-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.</string>                  </array>                </map>                <key>configure</key> @@ -2479,7 +3457,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Xcode'</string> +                  <string>Xcode</string>                  </array>                </map>                <key>name</key> @@ -2496,7 +3474,7 @@                    <string>-configuration Release</string>                    <string>-project SecondLife.xcodeproj</string>                    <string>-DENABLE_SIGNING:BOOL=YES</string> -                  <string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string> +                  <string>-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.</string>                  </array>                </map>                <key>configure</key> @@ -2504,7 +3482,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Xcode'</string> +                  <string>Xcode</string>                  </array>                </map>                <key>name</key> @@ -2512,7 +3490,7 @@              </map>            </map>            <key>name</key> -          <string>darwin</string> +          <string>darwin64</string>          </map>          <key>linux</key>          <map> @@ -2528,7 +3506,8 @@                  <string>make</string>                  <key>options</key>                  <array> -                  <string>-j 12</string> +                  <string>-j</string> +                  <string>12</string>                  </array>                </map>                <key>configure</key> @@ -2540,7 +3519,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Unix Makefiles'</string> +                  <string>Unix Makefiles</string>                  </array>                </map>                <key>default</key> @@ -2556,7 +3535,8 @@                  <string>make</string>                  <key>options</key>                  <array> -                  <string>-j 7</string> +                  <string>-j</string> +                  <string>7</string>                  </array>                </map>                <key>configure</key> @@ -2564,7 +3544,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Unix Makefiles'</string> +                  <string>Unix Makefiles</string>                  </array>                </map>                <key>name</key> @@ -2578,7 +3558,8 @@                  <string>make</string>                  <key>options</key>                  <array> -                  <string>-j 12</string> +                  <string>-j</string> +                  <string>12</string>                  </array>                </map>                <key>configure</key> @@ -2590,7 +3571,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Unix Makefiles'</string> +                  <string>Unix Makefiles</string>                  </array>                </map>                <key>name</key> @@ -2604,7 +3585,8 @@                  <string>make</string>                  <key>options</key>                  <array> -                  <string>-j 7</string> +                  <string>-j</string> +                  <string>7</string>                  </array>                </map>                <key>configure</key> @@ -2612,7 +3594,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>'Unix Makefiles'</string> +                  <string>Unix Makefiles</string>                  </array>                </map>                <key>name</key> @@ -2633,7 +3615,7 @@          <key>windows</key>          <map>            <key>build_directory</key> -          <string>build-vc120</string> +          <string>build-vc120-$AUTOBUILD_ADDRSIZE</string>            <key>configurations</key>            <map>              <key>RelWithDebInfo</key> @@ -2649,7 +3631,7 @@                  <key>options</key>                  <array>                    <string>/build</string> -                  <string>"RelWithDebInfo|Win32"</string> +                  <string>RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>                  </array>                </map>                <key>configure</key> @@ -2661,7 +3643,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>"Visual Studio 12"</string> +                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>                  </array>                </map>                <key>default</key> @@ -2682,12 +3664,12 @@                  <key>options</key>                  <array>                    <string>/p:Configuration=RelWithDebInfo</string> -                  <string>/p:Platform=Win32</string> +                  <string>/p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>                    <string>/t:Build</string>                    <string>/p:useenv=true</string>                    <string>/verbosity:minimal</string>                    <string>/toolsversion:4.0</string> -                  <string>/p:"VCBuildAdditionalOptions= /incremental"</string> +                  <string>/p:VCBuildAdditionalOptions= /incremental</string>                  </array>                </map>                <key>configure</key> @@ -2699,7 +3681,8 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>"Visual Studio 12"</string> +                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> +                  <string>-DUNATTENDED:BOOL=ON</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                    <string>-DUSE_KDU=FALSE</string>                  </array> @@ -2720,7 +3703,7 @@                  <key>options</key>                  <array>                    <string>/build</string> -                  <string>"Release|Win32"</string> +                  <string>Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>                  </array>                </map>                <key>configure</key> @@ -2732,7 +3715,7 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>"Visual Studio 12"</string> +                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string>                  </array>                </map>                <key>name</key> @@ -2751,12 +3734,12 @@                  <key>options</key>                  <array>                    <string>/p:Configuration=Release</string> -                  <string>/p:Platform=Win32</string> +                  <string>/p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN}</string>                    <string>/t:Build</string>                    <string>/p:useenv=true</string>                    <string>/verbosity:minimal</string>                    <string>/toolsversion:4.0</string> -                  <string>/p:"VCBuildAdditionalOptions= /incremental"</string> +                  <string>/p:VCBuildAdditionalOptions= /incremental</string>                  </array>                </map>                <key>configure</key> @@ -2768,7 +3751,8 @@                  <key>options</key>                  <array>                    <string>-G</string> -                  <string>"Visual Studio 12"</string> +                  <string>${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN}</string> +                  <string>-DUNATTENDED:BOOL=ON</string>                    <string>-DINSTALL_PROPRIETARY=FALSE</string>                    <string>-DUSE_KDU=FALSE</string>                  </array> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index adc134c48c..96ff9a645e 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -2,16 +2,28 @@  #  # Compilation options shared by all Second Life components. +#***************************************************************************** +#   It's important to realize that CMake implicitly concatenates +#   CMAKE_CXX_FLAGS with (e.g.) CMAKE_CXX_FLAGS_RELEASE for Release builds. So +#   set switches in CMAKE_CXX_FLAGS that should affect all builds, but in +#   CMAKE_CXX_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELWITHDEBINFO for switches +#   that should affect only that build variant. +# +#   Also realize that CMAKE_CXX_FLAGS may already be partially populated on +#   entry to this file. +#***************************************************************************** +  if(NOT DEFINED ${CMAKE_CURRENT_LIST_FILE}_INCLUDED)  set(${CMAKE_CURRENT_LIST_FILE}_INCLUDED "YES")  include(Variables)  # Portable compilation flags. +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DADDRESS_SIZE=${ADDRESS_SIZE}") +  set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG -DLL_DEBUG=1")  set(CMAKE_CXX_FLAGS_RELEASE      "-DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DNDEBUG")  -  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO       "-DLL_RELEASE=1 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") @@ -74,9 +86,14 @@ if (WINDOWS)        /nologo        /Oy-        /Zc:wchar_t- -      /arch:SSE2 +#      /arch:SSE2        /fp:fast        ) + +  # Nicky: x64 implies SSE2 +  if( ADDRESS_SIZE EQUAL 32 ) +    add_definitions( /arch:SSE2 ) +  endif()    # Are we using the crummy Visual Studio KDU build workaround?    if (NOT VS_DISABLE_FATAL_WARNINGS) @@ -133,13 +150,6 @@ if (LINUX)    # Let's actually get a numerical version of gxx's version    STRING(REGEX REPLACE ".* ([0-9])\\.([0-9])\\.([0-9]).*" "\\1\\2\\3" CXX_VERSION_NUMBER ${CXX_VERSION}) -  # Hacks to work around gcc 4.1 TC build pool machines which can't process pragma warning disables -  # This is pure rubbish; I wish there was another way. -  # -  if(${CXX_VERSION_NUMBER} LESS 420) -    set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-uninitialized -Wno-unused-variable -Wno-unused-function ${CMAKE_CXX_FLAGS}") -  endif (${CXX_VERSION_NUMBER} LESS 420) -    if(${CXX_VERSION_NUMBER} GREATER 459)      set(CMAKE_CXX_FLAGS "-Wno-deprecated -Wno-unused-but-set-variable -Wno-unused-variable ${CMAKE_CXX_FLAGS}")    endif (${CXX_VERSION_NUMBER} GREATER 459) @@ -173,9 +183,9 @@ if (LINUX)    add_definitions(-fvisibility=hidden)    # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work.  Sigh!  The viewer doesn't need to catch SIGCHLD anyway.    add_definitions(-DLL_IGNORE_SIGCHLD) -  if (WORD_SIZE EQUAL 32) +  if (ADDRESS_SIZE EQUAL 32)      add_definitions(-march=pentium4) -  endif (WORD_SIZE EQUAL 32) +  endif (ADDRESS_SIZE EQUAL 32)    add_definitions(-mfpmath=sse)    #add_definitions(-ftree-vectorize) # THIS CRASHES GCC 3.1-3.2    if (NOT USESYSTEMLIBS) @@ -201,8 +211,9 @@ if (DARWIN)    # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")    set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}") -  set(ENABLE_SIGNING TRUE) -  set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.") +## Really?? On developer machines too? +##set(ENABLE_SIGNING TRUE) +##set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")  endif (DARWIN) @@ -226,22 +237,17 @@ if (LINUX OR DARWIN)    set(CMAKE_C_FLAGS "${GCC_WARNINGS} ${CMAKE_C_FLAGS}")    set(CMAKE_CXX_FLAGS "${GCC_CXX_WARNINGS} ${CMAKE_CXX_FLAGS}") -  if (WORD_SIZE EQUAL 32) -    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") -    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") -  elseif (WORD_SIZE EQUAL 64) -    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") -    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64") -  endif (WORD_SIZE EQUAL 32) +  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m${ADDRESS_SIZE}") +  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${ADDRESS_SIZE}")  endif (LINUX OR DARWIN)  if (USESYSTEMLIBS)    add_definitions(-DLL_USESYSTEMLIBS=1) -  if (LINUX AND ${ARCH} STREQUAL "i686") +  if (LINUX AND ADDRESS_SIZE EQUAL 32)      add_definitions(-march=pentiumpro) -  endif (LINUX AND ${ARCH} STREQUAL "i686") +  endif (LINUX AND ADDRESS_SIZE EQUAL 32)  else (USESYSTEMLIBS)    set(${ARCH}_linux_INCLUDES diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt index 13a31cbce7..100645611e 100644 --- a/indra/cmake/CMakeLists.txt +++ b/indra/cmake/CMakeLists.txt @@ -30,7 +30,6 @@ set(cmake_SOURCE_FILES      FindFMODEX.cmake      FindGLH.cmake      FindGoogleBreakpad.cmake -    FindGooglePerfTools.cmake      FindHUNSPELL.cmake      FindJsonCpp.cmake      FindNDOF.cmake @@ -46,11 +45,8 @@ set(cmake_SOURCE_FILES      GLOD.cmake  ##  GStreamer010Plugin.cmake      GetPrerequisites_2_8.cmake -##  Glui.cmake -    Glut.cmake      GoogleBreakpad.cmake      GoogleMock.cmake -    GooglePerfTools.cmake      Havok.cmake      Hunspell.cmake      JPEG.cmake @@ -90,7 +86,6 @@ set(cmake_SOURCE_FILES      Prebuilt.cmake      PulseAudio.cmake      Python.cmake -    QuickTimePlugin.cmake      TemplateCheck.cmake      Tut.cmake      UI.cmake diff --git a/indra/cmake/ConfigurePkgConfig.cmake b/indra/cmake/ConfigurePkgConfig.cmake index 82ee3e7a5b..55d865392e 100644 --- a/indra/cmake/ConfigurePkgConfig.cmake +++ b/indra/cmake/ConfigurePkgConfig.cmake @@ -6,17 +6,17 @@ SET(DEBUG_PKG_CONFIG "YES")  IF("$ENV{PKG_CONFIG_LIBDIR}" STREQUAL "")    # Guess at architecture-specific system library paths. -  if (WORD_SIZE EQUAL 32) +  if (ADDRESS_SIZE EQUAL 32)      SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib32 /usr/lib)      SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib32 /usr/local/lib)      SET(PKG_CONFIG_MULTI_GUESS /usr/lib/i386-linux-gnu)      SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/i386-linux-gnu) -  else (WORD_SIZE EQUAL 32) +  else (ADDRESS_SIZE EQUAL 32)      SET(PKG_CONFIG_NO_MULTI_GUESS /usr/lib64 /usr/lib)      SET(PKG_CONFIG_NO_MULTI_LOCAL_GUESS /usr/local/lib64 /usr/local/lib)      SET(PKG_CONFIG_MULTI_GUESS /usr/local/lib/x86_64-linux-gnu)      SET(PKG_CONFIG_MULTI_LOCAL_GUESS /usr/local/lib/x86_64-linux-gnu) -  endif (WORD_SIZE EQUAL 32) +  endif (ADDRESS_SIZE EQUAL 32)    # Use DPKG architecture, if available.    IF (${DPKG_ARCH}) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 70d85b864c..5b59666796 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -30,17 +30,16 @@ if(WINDOWS)      #*******************************      # Misc shared libs  -    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") -    set(debug_files -        openjpegd.dll -        libapr-1.dll -        libaprutil-1.dll -        libapriconv-1.dll -        ssleay32.dll -        libeay32.dll -        glod.dll     -        libhunspell.dll -        ) +#    set(debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") +#    set(debug_files +#        libapr-1.dll +#        libaprutil-1.dll +#        libapriconv-1.dll +#        ssleay32.dll +#        libeay32.dll +#        glod.dll     +#        libhunspell.dll +#        )      set(release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}")      set(release_files @@ -54,13 +53,8 @@ if(WINDOWS)          libhunspell.dll          ) -    if(USE_TCMALLOC) -      set(debug_files ${debug_files} libtcmalloc_minimal-debug.dll) -      set(release_files ${release_files} libtcmalloc_minimal.dll) -    endif(USE_TCMALLOC) -      if (FMODEX) -      set(debug_files ${debug_files} fmodexL.dll) +#      set(debug_files ${debug_files} fmodexL.dll)        set(release_files ${release_files} fmodex.dll)      endif (FMODEX) @@ -234,10 +228,6 @@ elseif(LINUX)          libfontconfig.so.1         ) -    if (USE_TCMALLOC) -      set(release_files ${release_files} "libtcmalloc_minimal.so") -    endif (USE_TCMALLOC) -      if (FMODEX)        set(debug_files ${debug_files} "libfmodexL.so")        set(release_files ${release_files} "libfmodex.so") @@ -294,13 +284,13 @@ set(third_party_targets ${third_party_targets} ${out_targets}) -copy_if_different( -    ${debug_src_dir} -    "${SHARED_LIB_STAGING_DIR_DEBUG}" -    out_targets -    ${debug_files} -    ) -set(third_party_targets ${third_party_targets} ${out_targets}) +#copy_if_different( +#    ${debug_src_dir} +#    "${SHARED_LIB_STAGING_DIR_DEBUG}" +#    out_targets +#    ${debug_files} +#    ) +#set(third_party_targets ${third_party_targets} ${out_targets})  copy_if_different(      ${release_src_dir} diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake index 2a08c8fbae..9fd3923bfd 100644 --- a/indra/cmake/GLEXT.cmake +++ b/indra/cmake/GLEXT.cmake @@ -5,6 +5,6 @@ if (NOT USESYSTEMLIBS)    if (WINDOWS OR LINUX)      use_prebuilt_binary(glext)    endif (WINDOWS OR LINUX) -  use_prebuilt_binary(glh-linear) +  use_prebuilt_binary(glh_linear)    set(GLEXT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include)  endif (NOT USESYSTEMLIBS) diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake index d0992f57b8..d5262f2efa 100644 --- a/indra/cmake/GLH.cmake +++ b/indra/cmake/GLH.cmake @@ -7,5 +7,5 @@ set(GLH_FIND_QUIETLY TRUE)  if (USESYSTEMLIBS)    include(FindGLH)  else (USESYSTEMLIBS) -  use_prebuilt_binary(glh-linear) +  use_prebuilt_binary(glh_linear)  endif (USESYSTEMLIBS) diff --git a/indra/cmake/Glui.cmake b/indra/cmake/Glui.cmake deleted file mode 100644 index db353a91ec..0000000000 --- a/indra/cmake/Glui.cmake +++ /dev/null @@ -1,28 +0,0 @@ -# -*- cmake -*- -include(Linking) -include(Prebuilt) - -if (USESYSTEMLIBS) -    set(GLUI OFF CACHE BOOL -        "GLUI support for the llplugin/llmedia test apps.") -else (USESYSTEMLIBS) -    use_prebuilt_binary(glui) -    set(GLUI ON CACHE BOOL -        "GLUI support for the llplugin/llmedia test apps.") -endif (USESYSTEMLIBS) - -if (LINUX) -    set(GLUI ON CACHE BOOL -        "llplugin media apps HACK for Linux.") -endif (LINUX) - -if (DARWIN OR LINUX) -    set(GLUI_LIBRARY -        glui) -endif (DARWIN OR LINUX) - -if (WINDOWS) -    set(GLUI_LIBRARY -        debug glui32.lib -        optimized glui32.lib) -endif (WINDOWS) diff --git a/indra/cmake/Glut.cmake b/indra/cmake/Glut.cmake deleted file mode 100644 index 314da30652..0000000000 --- a/indra/cmake/Glut.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# -*- cmake -*- -include(Linking) -include(Prebuilt) - -if (WINDOWS) -    use_prebuilt_binary(freeglut) -    set(GLUT_LIBRARY -        debug freeglut_static.lib -        optimized freeglut_static.lib) -endif (WINDOWS) - -if (LINUX) -  FIND_LIBRARY(GLUT_LIBRARY glut) -endif (LINUX) - -if (DARWIN) -  include(CMakeFindFrameworks) -  find_library(GLUT_LIBRARY GLUT) -endif (DARWIN) diff --git a/indra/cmake/GooglePerfTools.cmake b/indra/cmake/GooglePerfTools.cmake deleted file mode 100644 index c1faeb9325..0000000000 --- a/indra/cmake/GooglePerfTools.cmake +++ /dev/null @@ -1,61 +0,0 @@ -# -*- cmake -*- -include(Prebuilt) - -# If you want to enable or disable TCMALLOC in viewer builds, this is the place. -# set ON or OFF as desired. -set (USE_TCMALLOC OFF) - -if (USESYSTEMLIBS) -  include(FindGooglePerfTools) -else (USESYSTEMLIBS) -  if (WINDOWS) -    if (USE_TCMALLOC) -       use_prebuilt_binary(gperftools) -       set(TCMALLOC_LIBRARIES  -         debug libtcmalloc_minimal-debug -         optimized libtcmalloc_minimal) -       set(TCMALLOC_LINK_FLAGS  "/INCLUDE:__tcmalloc") -    else (USE_TCMALLOC) -      set(TCMALLOC_LIBRARIES) -      set(TCMALLOC_LINK_FLAGS) -    endif (USE_TCMALLOC) -    set(GOOGLE_PERFTOOLS_FOUND "YES") -  endif (WINDOWS) -  if (LINUX) -    if (USE_TCMALLOC) -      use_prebuilt_binary(gperftools) -      set(TCMALLOC_LIBRARIES  -        tcmalloc) -    else (USE_TCMALLOC) -      set(TCMALLOC_LIBRARIES) -    endif (USE_TCMALLOC) -    set(PROFILER_LIBRARIES profiler) -    set(GOOGLE_PERFTOOLS_INCLUDE_DIR -        ${LIBS_PREBUILT_DIR}/include) -    set(GOOGLE_PERFTOOLS_FOUND "YES") -  endif (LINUX) -endif (USESYSTEMLIBS) - -if (GOOGLE_PERFTOOLS_FOUND) -  # XXX Disable temporarily, until we have compilation issues on 64-bit -  # Etch sorted. -  set(USE_GOOGLE_PERFTOOLS OFF CACHE BOOL "Build with Google PerfTools support.") -endif (GOOGLE_PERFTOOLS_FOUND) - -if (WINDOWS) -   set(USE_GOOGLE_PERFTOOLS ON) -endif (WINDOWS) - -if (USE_GOOGLE_PERFTOOLS) -  if (USE_TCMALLOC) -    set(TCMALLOC_FLAG -DLL_USE_TCMALLOC=1) -  else (USE_TCMALLOC) -    set(TCMALLOC_FLAG -ULL_USE_TCMALLOC) -  endif (USE_TCMALLOC) -endif (USE_GOOGLE_PERFTOOLS) - -if (USE_GOOGLE_PERFTOOLS) -  include_directories(${GOOGLE_PERFTOOLS_INCLUDE_DIR}) -  set(GOOGLE_PERFTOOLS_LIBRARIES ${TCMALLOC_LIBRARIES} ${STACKTRACE_LIBRARIES} ${PROFILER_LIBRARIES}) -else (USE_GOOGLE_PERFTOOLS) -endif (USE_GOOGLE_PERFTOOLS) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index b50b4bcdb2..3e29297c58 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -4,7 +4,6 @@ include(APR)  include(Boost)  include(EXPAT)  include(ZLIB) -include(GooglePerfTools)  set(LLCOMMON_INCLUDE_DIRS      ${LIBS_OPEN_DIR}/llcommon @@ -34,8 +33,6 @@ else (LINUX)          ${BOOST_SYSTEM_LIBRARY} )  endif (LINUX) -# add_definitions(${TCMALLOC_FLAG}) -  set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a static library.")  if(LLCOMMON_LINK_SHARED)    add_definitions(-DLL_COMMON_LINK_SHARED=1) diff --git a/indra/cmake/QuickTimePlugin.cmake b/indra/cmake/QuickTimePlugin.cmake deleted file mode 100644 index c08e153ee3..0000000000 --- a/indra/cmake/QuickTimePlugin.cmake +++ /dev/null @@ -1,48 +0,0 @@ -# -*- cmake -*- - -if(INSTALL_PROPRIETARY) -  include(Prebuilt) -  if (WINDOWS) -    use_prebuilt_binary(quicktime) -  endif (WINDOWS) -endif(INSTALL_PROPRIETARY) - -if (DARWIN) -  include(CMakeFindFrameworks) -  find_library(QUICKTIME_LIBRARY QuickTime) -elseif (WINDOWS) -  set(QUICKTIME_SDK_DIR "$ENV{PROGRAMFILES}/QuickTime SDK" -      CACHE PATH "Location of the QuickTime SDK.") - -  find_library(DEBUG_QUICKTIME_LIBRARY qtmlclient.lib -               PATHS -               ${ARCH_PREBUILT_DIRS_DEBUG} -               "${QUICKTIME_SDK_DIR}\\libraries" -               ) - -  find_library(RELEASE_QUICKTIME_LIBRARY qtmlclient.lib -               PATHS -               ${ARCH_PREBUILT_DIRS_RELEASE} -               "${QUICKTIME_SDK_DIR}\\libraries" -               ) - -  if (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) -    set(QUICKTIME_LIBRARY  -        optimized ${RELEASE_QUICKTIME_LIBRARY} -        debug ${DEBUG_QUICKTIME_LIBRARY} -        ) -         -  endif (DEBUG_QUICKTIME_LIBRARY AND RELEASE_QUICKTIME_LIBRARY) -   -  include_directories( -    ${LIBS_PREBUILT_DIR}/include/quicktime -    "${QUICKTIME_SDK_DIR}\\CIncludes" -    ) -endif (DARWIN) - -mark_as_advanced(QUICKTIME_LIBRARY) - -if (QUICKTIME_LIBRARY) -  set(QUICKTIME ON CACHE BOOL "Build with QuickTime streaming media support.") -endif (QUICKTIME_LIBRARY) - diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake index 31174209a3..77fd505df3 100644 --- a/indra/cmake/UI.cmake +++ b/indra/cmake/UI.cmake @@ -32,9 +32,9 @@ if (USESYSTEMLIBS)      add_definitions(${${pkg}_CFLAGS_OTHERS})    endforeach(pkg)  else (USESYSTEMLIBS) -  if (LINUX OR WINDOWS) +  if (LINUX)      use_prebuilt_binary(gtk-atk-pango-glib) -  endif (LINUX OR WINDOWS) +  endif (LINUX)    if (LINUX)      set(UI_LIBRARIES diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index 63e296b556..3d0cb0a3c9 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -60,46 +60,55 @@ if (NOT CMAKE_BUILD_TYPE)        "Build type.  One of: Debug Release RelWithDebInfo" FORCE)  endif (NOT CMAKE_BUILD_TYPE) +# If someone has specified an address size, use that to determine the +# architecture.  Otherwise, let the architecture specify the address size. +if (ADDRESS_SIZE EQUAL 32) +  #message(STATUS "ADDRESS_SIZE is 32") +  set(ARCH i686) +elseif (ADDRESS_SIZE EQUAL 64) +  #message(STATUS "ADDRESS_SIZE is 64") +  set(ARCH x86_64) +else (ADDRESS_SIZE EQUAL 32) +  #message(STATUS "ADDRESS_SIZE is UNRECOGNIZED: '${ADDRESS_SIZE}'") +  # Use Python's platform.machine() since uname -m isn't available everywhere. +  # Even if you can assume cygwin uname -m, the answer depends on whether +  # you're running 32-bit cygwin or 64-bit cygwin! But even 32-bit Python will +  # report a 64-bit processor. +  execute_process(COMMAND +                  "${PYTHON_EXECUTABLE}" "-c" +                  "import platform; print platform.machine()" +                  OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) +  # We expect values of the form i386, i686, x86_64, AMD64. +  # In CMake, expressing ARCH.endswith('64') is awkward: +  string(LENGTH "${ARCH}" ARCH_LENGTH) +  math(EXPR ARCH_LEN_2 "${ARCH_LENGTH} - 2") +  string(SUBSTRING "${ARCH}" ${ARCH_LEN_2} 2 ARCH_LAST_2) +  if (ARCH_LAST_2 STREQUAL 64) +    #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}") +    set(ADDRESS_SIZE 64) +  else () +    #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}") +    set(ADDRESS_SIZE 32) +  endif () +endif (ADDRESS_SIZE EQUAL 32) +  if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")    set(WINDOWS ON BOOL FORCE) -  set(ARCH i686)    set(LL_ARCH ${ARCH}_win32)    set(LL_ARCH_DIR ${ARCH}-win32) -  set(WORD_SIZE 32)  endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")  if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")    set(LINUX ON BOOl FORCE) -  # If someone has specified a word size, use that to determine the -  # architecture.  Otherwise, let the architecture specify the word size. -  if (WORD_SIZE EQUAL 32) -    #message(STATUS "WORD_SIZE is 32") -    set(ARCH i686) -  elseif (WORD_SIZE EQUAL 64) -    #message(STATUS "WORD_SIZE is 64") -    set(ARCH x86_64) -  else (WORD_SIZE EQUAL 32) -    #message(STATUS "WORD_SIZE is UNDEFINED") -    execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/ -                    OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) -    if (ARCH STREQUAL x86_64) -      #message(STATUS "ARCH is detected as 64; ARCH is ${ARCH}") -      set(WORD_SIZE 64) -    else (ARCH STREQUAL x86_64) -      #message(STATUS "ARCH is detected as 32; ARCH is ${ARCH}") -      set(WORD_SIZE 32) -    endif (ARCH STREQUAL x86_64) -  endif (WORD_SIZE EQUAL 32) - -  if (WORD_SIZE EQUAL 32) +  if (ADDRESS_SIZE EQUAL 32)      set(DEB_ARCHITECTURE i386)      set(FIND_LIBRARY_USE_LIB64_PATHS OFF)      set(CMAKE_SYSTEM_LIBRARY_PATH /usr/lib32 ${CMAKE_SYSTEM_LIBRARY_PATH}) -  else (WORD_SIZE EQUAL 32) +  else (ADDRESS_SIZE EQUAL 32)      set(DEB_ARCHITECTURE amd64)      set(FIND_LIBRARY_USE_LIB64_PATHS ON) -  endif (WORD_SIZE EQUAL 32) +  endif (ADDRESS_SIZE EQUAL 32)    execute_process(COMMAND dpkg-architecture -a${DEB_ARCHITECTURE} -qDEB_HOST_MULTIARCH         RESULT_VARIABLE DPKG_RESULT @@ -140,18 +149,15 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")    set(CMAKE_XCODE_ATTRIBUTE_GCC_STRICT_ALIASING NO)    set(CMAKE_XCODE_ATTRIBUTE_GCC_FAST_MATH NO)    set(CMAKE_XCODE_ATTRIBUTE_CLANG_X86_VECTOR_INSTRUCTIONS ssse3) -  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libstdc++") +  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")    set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym) -  # Build only for i386 by default, system default on MacOSX 10.6+ is x86_64 -  if (NOT CMAKE_OSX_ARCHITECTURES) -    set(CMAKE_OSX_ARCHITECTURES "i386") -  endif (NOT CMAKE_OSX_ARCHITECTURES) +  set(CMAKE_OSX_ARCHITECTURES "${ARCH}") +  string(REPLACE "i686"  "i386"   CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") +  string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") -  set(ARCH ${CMAKE_OSX_ARCHITECTURES})    set(LL_ARCH ${ARCH}_darwin)    set(LL_ARCH_DIR universal-darwin) -  set(WORD_SIZE 32)  endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")  # Default deploy grid diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 5bce2b8809..622ff6f1a4 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -10,7 +10,6 @@ include(Boost)  include(LLSharedLibs)  include(JsonCpp)  include(GoogleBreakpad) -include(GooglePerfTools)  include(Copy3rdPartyLibs)  include(ZLIB)  include(URIPARSER) @@ -250,13 +249,13 @@ list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})  if(LLCOMMON_LINK_SHARED)    add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) -  if(NOT WORD_SIZE EQUAL 32) +  if(NOT ADDRESS_SIZE EQUAL 32)      if(WINDOWS) -      add_definitions(/FIXED:NO) +      ##add_definitions(/FIXED:NO)      else(WINDOWS) # not windows therefore gcc LINUX and DARWIN        add_definitions(-fPIC)      endif(WINDOWS) -  endif(NOT WORD_SIZE EQUAL 32) +  endif(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS)      # always generate llcommon.pdb, even for "Release" builds      set_target_properties(llcommon PROPERTIES LINK_FLAGS "/DEBUG") @@ -339,8 +338,4 @@ if (LL_TESTS)  ## throwing and catching exceptions.  ##LL_ADD_INTEGRATION_TEST(llexception "" "${test_libs}") -  # *TODO - reenable these once tcmalloc libs no longer break the build. -  #ADD_BUILD_TEST(llallocator llcommon) -  #ADD_BUILD_TEST(llallocator_heap_profile llcommon) -  #ADD_BUILD_TEST(llmemtype llcommon)  endif (LL_TESTS) diff --git a/indra/llcommon/llallocator.cpp b/indra/llcommon/llallocator.cpp index 34fc28d8cc..ac97fb71dd 100644 --- a/indra/llcommon/llallocator.cpp +++ b/indra/llcommon/llallocator.cpp @@ -27,47 +27,6 @@  #include "linden_common.h"  #include "llallocator.h" -#if (LL_USE_TCMALLOC && LL_USE_HEAP_PROFILER) - -#include "google/heap-profiler.h" -#include "google/commandlineflags_public.h" - -DECLARE_bool(heap_profile_use_stack_trace); -//DECLARE_double(tcmalloc_release_rate); - -void LLAllocator::setProfilingEnabled(bool should_enable) -{ -    // NULL disables dumping to disk -    static char const * const PREFIX = NULL; -    if(should_enable) -    { -		HeapProfilerSetUseStackTrace(false); -        HeapProfilerStart(PREFIX); -    } -    else -    { -        HeapProfilerStop(); -    } -} - -// static -bool LLAllocator::isProfiling() -{ -    return IsHeapProfilerRunning(); -} - -std::string LLAllocator::getRawProfile() -{ -    // *TODO - fix google-perftools to accept an buffer to avoid this -    // malloc-copy-free cycle. -    char * buffer = GetHeapProfile(); -    std::string ret = buffer; -    free(buffer); -    return ret; -} - -#else // LL_USE_TCMALLOC -  //  // stub implementations for when tcmalloc is disabled  // @@ -87,8 +46,6 @@ std::string LLAllocator::getRawProfile()      return std::string();  } -#endif // LL_USE_TCMALLOC -  LLAllocatorHeapProfile const & LLAllocator::getProfile()  {      mProf.mLines.clear(); diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 8e516d8beb..bc72faca5d 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -101,7 +101,11 @@ LLCoros::LLCoros():      // Previously we used      // boost::context::guarded_stack_allocator::default_stacksize();      // empirically this is 64KB on Windows and Linux. Try quadrupling. +#if ADDRESS_SIZE == 64 +    mStackSize(512*1024) +#else      mStackSize(256*1024) +#endif  {      // Register our cleanup() method for "mainloop" ticks      LLEventPumps::instance().obtain("mainloop").listen( diff --git a/indra/llcommon/lldependencies.h b/indra/llcommon/lldependencies.h index 125bd6a835..db2bbab8b0 100644 --- a/indra/llcommon/lldependencies.h +++ b/indra/llcommon/lldependencies.h @@ -124,8 +124,8 @@ public:      virtual std::string describe(bool full=true) const;  protected: -    typedef std::vector< std::pair<int, int> > EdgeList; -    typedef std::vector<int> VertexList; +    typedef std::vector< std::pair<std::size_t, std::size_t> > EdgeList; +    typedef std::vector<std::size_t> VertexList;      VertexList topo_sort(int vertices, const EdgeList& edges) const;      /** @@ -508,7 +508,7 @@ public:              // been explicitly added. Rely on std::map rejecting a second attempt              // to insert the same key. Use the map's size() as the vertex number              // to get a distinct value for each successful insertion. -            typedef std::map<KEY, int> VertexMap; +            typedef std::map<KEY, std::size_t> VertexMap;              VertexMap vmap;              // Nest each of these loops because !@#$%? MSVC warns us that its              // former broken behavior has finally been fixed -- and our builds diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index f56e5596f5..2024d707da 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -90,33 +90,15 @@ public:  #if LL_FASTTIMER_USE_RDTSC  	static U32 getCPUClockCount32()  	{ -		U32 ret_val; -		__asm -		{ -			_emit   0x0f -				_emit   0x31 -				shr eax,8 -				shl edx,24 -				or eax, edx -				mov dword ptr [ret_val], eax -		} -		return ret_val; +		unsigned __int64 val = __rdtsc(); +		val = val >> 8; +		return static_cast<U32>(val);  	}  	// return full timer value, *not* shifted by 8 bits  	static U64 getCPUClockCount64()  	{ -		U64 ret_val; -		__asm -		{ -			_emit   0x0f -				_emit   0x31 -				mov eax,eax -				mov edx,edx -				mov dword ptr [ret_val+4], edx -				mov dword ptr [ret_val], eax -		} -		return ret_val; +		return static_cast<U64>( __rdtsc() );  	}  #else @@ -173,16 +155,16 @@ public:  	// Mac+Linux+Solaris FAST x86 implementation of CPU clock  	static U32 getCPUClockCount32()  	{ -		U64 x; -		__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); -		return (U32)(x >> 8); +		U32 low(0),high(0); +		__asm__ volatile (".byte 0x0f, 0x31": "=a"(low), "=d"(high) ); +		return (low>>8) | (high<<24);  	}  	static U64 getCPUClockCount64()  	{ -		U64 x; -		__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); -		return x; +		U32 low(0),high(0); +		__asm__ volatile (".byte 0x0f, 0x31": "=a"(low), "=d"(high) ); +		return (U64)low | ( ((U64)high) << 32);  	}  #endif diff --git a/indra/llcommon/llfile.h b/indra/llcommon/llfile.h index 3e25228aeb..315e18e4f2 100644 --- a/indra/llcommon/llfile.h +++ b/indra/llcommon/llfile.h @@ -45,7 +45,7 @@ typedef FILE	LLFILE;  typedef struct _stat	llstat;  #else  typedef struct stat		llstat; -#include <bits/postypes.h> +#include <sys/types.h>  #endif  #ifndef S_ISREG diff --git a/indra/llcommon/llmake.h b/indra/llcommon/llmake.h index 9a662a0640..08744f90fb 100644 --- a/indra/llcommon/llmake.h +++ b/indra/llcommon/llmake.h @@ -12,12 +12,10 @@   *    *         also relevant:   * - *         Template parameter deduction for constructors - *         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0091r0.html - * - *         https://github.com/viboes/std-make - * - *         but obviously we're not there yet. + *         Template argument deduction for class templates + *         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0091r3.html + *         was apparently adopted in June 2016? Unclear when compilers will + *         portably support this, but there is hope.   *   * $LicenseInfo:firstyear=2015&license=viewerlgpl$   * Copyright (c) 2015, Linden Research, Inc. diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index 3a8eabac09..1e04044269 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -591,7 +591,7 @@ char* LLPrivateMemoryPool::LLMemoryBlock::allocate()  void  LLPrivateMemoryPool::LLMemoryBlock::freeMem(void* addr)   {  	//bit index -	U32 idx = ((U32)addr - (U32)mBuffer - mDummySize) / mSlotSize ; +	uintptr_t idx = ((uintptr_t)addr - (uintptr_t)mBuffer - mDummySize) / mSlotSize ;  	U32* bits = &mUsageBits ;  	if(idx >= 32) @@ -773,7 +773,7 @@ char* LLPrivateMemoryPool::LLMemoryChunk::allocate(U32 size)  void LLPrivateMemoryPool::LLMemoryChunk::freeMem(void* addr)  {	 -	U32 blk_idx = getPageIndex((U32)addr) ; +	U32 blk_idx = getPageIndex((uintptr_t)addr) ;  	LLMemoryBlock* blk = (LLMemoryBlock*)(mMetaBuffer + blk_idx * sizeof(LLMemoryBlock)) ;  	blk = blk->mSelf ; @@ -798,7 +798,7 @@ bool LLPrivateMemoryPool::LLMemoryChunk::empty()  bool LLPrivateMemoryPool::LLMemoryChunk::containsAddress(const char* addr) const  { -	return (U32)mBuffer <= (U32)addr && (U32)mBuffer + mBufferSize > (U32)addr ; +	return (uintptr_t)mBuffer <= (uintptr_t)addr && (uintptr_t)mBuffer + mBufferSize > (uintptr_t)addr ;  }  //debug use @@ -831,13 +831,13 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()  	for(U32 i = 1 ; i < blk_list.size(); i++)  	{  		total_size += blk_list[i]->getBufferSize() ; -		if((U32)blk_list[i]->getBuffer() < (U32)blk_list[i-1]->getBuffer() + blk_list[i-1]->getBufferSize()) +		if((uintptr_t)blk_list[i]->getBuffer() < (uintptr_t)blk_list[i-1]->getBuffer() + blk_list[i-1]->getBufferSize())  		{  			LL_ERRS() << "buffer corrupted." << LL_ENDL ;  		}  	} -	llassert_always(total_size + mMinBlockSize >= mBufferSize - ((U32)mDataBuffer - (U32)mBuffer)) ; +	llassert_always(total_size + mMinBlockSize >= mBufferSize - ((uintptr_t)mDataBuffer - (uintptr_t)mBuffer)) ;  	U32 blk_num = (mBufferSize - (mDataBuffer - mBuffer)) / mMinBlockSize ;  	for(U32 i = 0 ; i < blk_num ; ) @@ -860,7 +860,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()  #endif  #if 0  	LL_INFOS() << "---------------------------" << LL_ENDL ; -	LL_INFOS() << "Chunk buffer: " << (U32)getBuffer() << " size: " << getBufferSize() << LL_ENDL ; +	LL_INFOS() << "Chunk buffer: " << (uintptr_t)getBuffer() << " size: " << getBufferSize() << LL_ENDL ;  	LL_INFOS() << "available blocks ... " << LL_ENDL ;  	for(S32 i = 0 ; i < mBlockLevels ; i++) @@ -868,7 +868,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()  		LLMemoryBlock* blk = mAvailBlockList[i] ;  		while(blk)  		{ -			LL_INFOS() << "blk buffer " << (U32)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ; +			LL_INFOS() << "blk buffer " << (uintptr_t)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;  			blk = blk->mNext ;  		}  	} @@ -879,7 +879,7 @@ void LLPrivateMemoryPool::LLMemoryChunk::dump()  		LLMemoryBlock* blk = mFreeSpaceList[i] ;  		while(blk)  		{ -			LL_INFOS() << "blk buffer " << (U32)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ; +			LL_INFOS() << "blk buffer " << (uintptr_t)blk->getBuffer() << " size: " << blk->getBufferSize() << LL_ENDL ;  			blk = blk->mNext ;  		}  	} @@ -1155,9 +1155,9 @@ void LLPrivateMemoryPool::LLMemoryChunk::addToAvailBlockList(LLMemoryBlock* blk)  	return ;  } -U32 LLPrivateMemoryPool::LLMemoryChunk::getPageIndex(U32 addr) +U32 LLPrivateMemoryPool::LLMemoryChunk::getPageIndex(uintptr_t addr)  { -	return (addr - (U32)mDataBuffer) / mMinBlockSize ; +	return (addr - (uintptr_t)mDataBuffer) / mMinBlockSize ;  }  //for mAvailBlockList @@ -1495,7 +1495,7 @@ void LLPrivateMemoryPool::removeChunk(LLMemoryChunk* chunk)  U16 LLPrivateMemoryPool::findHashKey(const char* addr)  { -	return (((U32)addr) / CHUNK_SIZE) % mHashFactor ; +	return (((uintptr_t)addr) / CHUNK_SIZE) % mHashFactor ;  }  LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::findChunk(const char* addr) @@ -1720,7 +1720,7 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()  		S32 k = 0 ;  		for(mem_allocation_info_t::iterator iter = sMemAllocationTracker.begin() ; iter != sMemAllocationTracker.end() ; ++iter)  		{ -			LL_INFOS() << k++ << ", " << (U32)iter->first << " : " << iter->second << LL_ENDL ; +			LL_INFOS() << k++ << ", " << (uintptr_t)iter->first << " : " << iter->second << LL_ENDL ;  		}  		sMemAllocationTracker.clear() ;  	} diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 575edddc43..5a3c9bd762 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -138,7 +138,6 @@ template <typename T> T* LL_NEXT_ALIGNED_ADDRESS_64(T* address)  //------------------------------------------------------------------------------------------------  //------------------------------------------------------------------------------------------------ -#if !LL_USE_TCMALLOC  inline void* ll_aligned_malloc_16(size_t size) // returned hunk MUST be freed with ll_aligned_free_16().  {  #if defined(LL_WINDOWS) @@ -187,13 +186,6 @@ inline void* ll_aligned_realloc_16(void* ptr, size_t size, size_t old_size) // r  #endif  } -#else // USE_TCMALLOC -// ll_aligned_foo_16 are not needed with tcmalloc -#define ll_aligned_malloc_16 malloc -#define ll_aligned_realloc_16(a,b,c) realloc(a,b) -#define ll_aligned_free_16 free -#endif // USE_TCMALLOC -  inline void* ll_aligned_malloc_32(size_t size) // returned hunk MUST be freed with ll_aligned_free_32().  {  #if defined(LL_WINDOWS) @@ -423,7 +415,7 @@ public:  		{  			bool operator()(const LLMemoryBlock* const& lhs, const LLMemoryBlock* const& rhs)  			{ -				return (U32)lhs->getBuffer() < (U32)rhs->getBuffer(); +				return (uintptr_t)lhs->getBuffer() < (uintptr_t)rhs->getBuffer();  			}  		};  	}; @@ -454,7 +446,7 @@ public:  		void dump() ;  	private: -		U32 getPageIndex(U32 addr) ; +		U32 getPageIndex(uintptr_t addr) ;  		U32 getBlockLevel(U32 size) ;  		U16 getPageLevel(U32 size) ;  		LLMemoryBlock* addBlock(U32 blk_idx) ; diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 2c4bcc91f6..3698d9db44 100644 --- a/indra/llcommon/llpreprocessor.h +++ b/indra/llcommon/llpreprocessor.h @@ -138,6 +138,12 @@  #pragma warning( 3      :  4266 )	// 'function' : no override available for virtual member function from base 'type'; function is hidden  #pragma warning (disable : 4180)	// qualifier applied to function type has no meaning; ignored  //#pragma warning( disable : 4284 )	// silly MS warning deep inside their <map> include file + +#if ADDRESS_SIZE == 64 +// That one is all over the place for x64 builds. +#pragma warning( disable : 4267 )   // 'var' : conversion from 'size_t' to 'type', possible loss of data) +#endif +  #pragma warning( disable : 4503 )	// 'decorated name length exceeded, name was truncated'. Does not seem to affect compilation.  #pragma warning( disable : 4800 )	// 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)  #pragma warning( disable : 4996 )	// warning: deprecated diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index e3e1d0c391..65b4507e2d 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -398,7 +398,7 @@ static F64 calculate_cpu_frequency(U32 measure_msecs)  	HANDLE hThread = GetCurrentThread();  	unsigned long dwCurPriorityClass = GetPriorityClass(hProcess);  	int iCurThreadPriority = GetThreadPriority(hThread); -	unsigned long dwProcessMask, dwSystemMask, dwNewMask = 1; +	DWORD_PTR dwProcessMask, dwSystemMask, dwNewMask = 1;  	GetProcessAffinityMask(hProcess, &dwProcessMask, &dwSystemMask);  	SetPriorityClass(hProcess, REALTIME_PRIORITY_CLASS); diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index c3f235c6ee..52255bfaeb 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -63,7 +63,7 @@ void set_thread_name( DWORD dwThreadID, const char* threadName)  	__try  	{ -		::RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info ); +		::RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (ULONG_PTR*)&info );  	}  	__except(EXCEPTION_CONTINUE_EXECUTION)  	{ diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt index 0bb0348d26..6f362df921 100644 --- a/indra/llcorehttp/CMakeLists.txt +++ b/indra/llcorehttp/CMakeLists.txt @@ -213,7 +213,7 @@ endif (DARWIN)      # The following come from LLAddBuildTest.cmake's INTEGRATION_TEST_xxxx target.      set_target_properties(http_texture_load                            PROPERTIES -                          LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE ${TCMALLOC_LINK_FLAGS}" +                          LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:CONSOLE"                            LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"                            LINK_FLAGS_RELEASE ""                            ) diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index 6c5f37d407..3ec9cd7d4c 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -44,6 +44,11 @@ from SocketServer import ThreadingMixIn  from llbase.fastest_elementtree import parse as xml_parse  from llbase import llsd + +# we're in llcorehttp/tests ; testrunner.py is found in llmessage/tests +sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, +                             "llmessage", "tests")) +  from testrunner import freeport, run, debug, VERBOSE  class TestHTTPRequestHandler(BaseHTTPRequestHandler): diff --git a/indra/llcorehttp/tests/testrunner.py b/indra/llcorehttp/tests/testrunner.py deleted file mode 100755 index 9a2de71142..0000000000 --- a/indra/llcorehttp/tests/testrunner.py +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env python -"""\ -@file   testrunner.py -@author Nat Goodspeed -@date   2009-03-20 -@brief  Utilities for writing wrapper scripts for ADD_COMM_BUILD_TEST unit tests - -$LicenseInfo:firstyear=2009&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$ -""" - -from __future__ import with_statement - -import os -import sys -import re -import errno -import socket - -VERBOSE = os.environ.get("INTEGRATION_TEST_VERBOSE", "0") # default to quiet -# Support usage such as INTEGRATION_TEST_VERBOSE=off -- distressing to user if -# that construct actually turns on verbosity... -VERBOSE = not re.match(r"(0|off|false|quiet)$", VERBOSE, re.IGNORECASE) - -if VERBOSE: -    def debug(fmt, *args): -        print fmt % args -        sys.stdout.flush() -else: -    debug = lambda *args: None - -def freeport(portlist, expr): -    """ -    Find a free server port to use. Specifically, evaluate 'expr' (a -    callable(port)) until it stops raising EADDRINUSE exception. - -    Pass: - -    portlist: an iterable (e.g. xrange()) of ports to try. If you exhaust the -    range, freeport() lets the socket.error exception propagate. If you want -    unbounded, you could pass itertools.count(baseport), though of course in -    practice the ceiling is 2^16-1 anyway. But it seems prudent to constrain -    the range much more sharply: if we're iterating an absurd number of times, -    probably something else is wrong. - -    expr: a callable accepting a port number, specifically one of the items -    from portlist. If calling that callable raises socket.error with -    EADDRINUSE, freeport() retrieves the next item from portlist and retries. - -    Returns: (expr(port), port) - -    port: the value from portlist for which expr(port) succeeded - -    Raises: - -    Any exception raised by expr(port) other than EADDRINUSE. - -    socket.error if, for every item from portlist, expr(port) raises -    socket.error. The exception you see is the one from the last item in -    portlist. - -    StopIteration if portlist is completely empty. - -    Example: - -    class Server(HTTPServer): -        # If you use BaseHTTPServer.HTTPServer, turning off this flag is -        # essential for proper operation of freeport()! -        allow_reuse_address = False -    # ... -    server, port = freeport(xrange(8000, 8010), -                            lambda port: Server(("localhost", port), -                                                MyRequestHandler)) -    # pass 'port' to client code -    # call server.serve_forever() -    """ -    try: -        # If portlist is completely empty, let StopIteration propagate: that's an -        # error because we can't return meaningful values. We have no 'port', -        # therefore no 'expr(port)'. -        portiter = iter(portlist) -        port = portiter.next() - -        while True: -            try: -                # If this value of port works, return as promised. -                value = expr(port) - -            except socket.error, err: -                # Anything other than 'Address already in use', propagate -                if err.args[0] != errno.EADDRINUSE: -                    raise - -                # Here we want the next port from portiter. But on StopIteration, -                # we want to raise the original exception rather than -                # StopIteration. So save the original exc_info(). -                type, value, tb = sys.exc_info() -                try: -                    try: -                        port = portiter.next() -                    except StopIteration: -                        raise type, value, tb -                finally: -                    # Clean up local traceback, see docs for sys.exc_info() -                    del tb - -            else: -                debug("freeport() returning %s on port %s", value, port) -                return value, port - -            # Recap of the control flow above: -            # If expr(port) doesn't raise, return as promised. -            # If expr(port) raises anything but EADDRINUSE, propagate that -            # exception. -            # If portiter.next() raises StopIteration -- that is, if the port -            # value we just passed to expr(port) was the last available -- reraise -            # the EADDRINUSE exception. -            # If we've actually arrived at this point, portiter.next() delivered a -            # new port value. Loop back to pass that to expr(port). - -    except Exception, err: -        debug("*** freeport() raising %s: %s", err.__class__.__name__, err) -        raise - -def run(*args, **kwds): -    """All positional arguments collectively form a command line, executed as -    a synchronous child process. -    In addition, pass server=new_thread_instance as an explicit keyword (to -    differentiate it from an additional command-line argument). -    new_thread_instance should be an instantiated but not yet started Thread -    subclass instance, e.g.: -    run("python", "-c", 'print "Hello, world!"', server=TestHTTPServer(name="httpd")) -    """ -    # If there's no server= keyword arg, don't start a server thread: simply -    # run a child process. -    try: -        thread = kwds.pop("server") -    except KeyError: -        pass -    else: -        # Start server thread. Note that this and all other comm server -        # threads should be daemon threads: we'll let them run "forever," -        # confident that the whole process will terminate when the main thread -        # terminates, which will be when the child process terminates. -        thread.setDaemon(True) -        thread.start() -    # choice of os.spawnv(): -    # - [v vs. l] pass a list of args vs. individual arguments, -    # - [no p] don't use the PATH because we specifically want to invoke the -    #   executable passed as our first arg, -    # - [no e] child should inherit this process's environment. -    debug("Running %s...", " ".join(args)) -    if kwds.get("use_path", False): -        rc = os.spawnvp(os.P_WAIT, args[0], args) -    else: -        rc = os.spawnv(os.P_WAIT, args[0], args) -    debug("%s returned %s", args[0], rc) -    return rc - -# **************************************************************************** -#   test code -- manual at this point, see SWAT-564 -# **************************************************************************** -def test_freeport(): -    # ------------------------------- Helpers -------------------------------- -    from contextlib import contextmanager -    # helper Context Manager for expecting an exception -    # with exc(SomeError): -    #     raise SomeError() -    # raises AssertionError otherwise. -    @contextmanager -    def exc(exception_class, *args): -        try: -            yield -        except exception_class, err: -            for i, expected_arg in enumerate(args): -                assert expected_arg == err.args[i], \ -                       "Raised %s, but args[%s] is %r instead of %r" % \ -                       (err.__class__.__name__, i, err.args[i], expected_arg) -            print "Caught expected exception %s(%s)" % \ -                  (err.__class__.__name__, ', '.join(repr(arg) for arg in err.args)) -        else: -            assert False, "Failed to raise " + exception_class.__class__.__name__ - -    # helper to raise specified exception -    def raiser(exception): -        raise exception - -    # the usual -    def assert_equals(a, b): -        assert a == b, "%r != %r" % (a, b) - -    # ------------------------ Sanity check the above ------------------------ -    class SomeError(Exception): pass -    # Without extra args, accept any err.args value -    with exc(SomeError): -        raiser(SomeError("abc")) -    # With extra args, accept only the specified value -    with exc(SomeError, "abc"): -        raiser(SomeError("abc")) -    with exc(AssertionError): -        with exc(SomeError, "abc"): -            raiser(SomeError("def")) -    with exc(AssertionError): -        with exc(socket.error, errno.EADDRINUSE): -            raiser(socket.error(errno.ECONNREFUSED, 'Connection refused')) - -    # ----------- freeport() without engaging socket functionality ----------- -    # If portlist is empty, freeport() raises StopIteration. -    with exc(StopIteration): -        freeport([], None) - -    assert_equals(freeport([17], str), ("17", 17)) - -    # This is the magic exception that should prompt us to retry -    inuse = socket.error(errno.EADDRINUSE, 'Address already in use') -    # Get the iterator to our ports list so we can check later if we've used all -    ports = iter(xrange(5)) -    with exc(socket.error, errno.EADDRINUSE): -        freeport(ports, lambda port: raiser(inuse)) -    # did we entirely exhaust 'ports'? -    with exc(StopIteration): -        ports.next() - -    ports = iter(xrange(2)) -    # Any exception but EADDRINUSE should quit immediately -    with exc(SomeError): -        freeport(ports, lambda port: raiser(SomeError())) -    assert_equals(ports.next(), 1) - -    # ----------- freeport() with platform-dependent socket stuff ------------ -    # This is what we should've had unit tests to begin with (see CHOP-661). -    def newbind(port): -        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -        sock.bind(('127.0.0.1', port)) -        return sock - -    bound0, port0 = freeport(xrange(7777, 7780), newbind) -    assert_equals(port0, 7777) -    bound1, port1 = freeport(xrange(7777, 7780), newbind) -    assert_equals(port1, 7778) -    bound2, port2 = freeport(xrange(7777, 7780), newbind) -    assert_equals(port2, 7779) -    with exc(socket.error, errno.EADDRINUSE): -        bound3, port3 = freeport(xrange(7777, 7780), newbind) - -if __name__ == "__main__": -    test_freeport() diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index f71607096c..a6cbcc131e 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -1218,9 +1218,10 @@ void LLImageRaw::fill( const LLColor4U& color )  	if( 4 == getComponents() )  	{  		U32* data = (U32*) getData(); +		U32 rgbaColor = color.asRGBA();  		for( S32 i = 0; i < pixels; i++ )  		{ -			data[i] = color.mAll; +			data[ i ] = rgbaColor;  		}  	}  	else diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index 3bb1778d9d..925da5674b 100644 --- a/indra/llimagej2coj/llimagej2coj.cpp +++ b/indra/llimagej2coj/llimagej2coj.cpp @@ -41,8 +41,12 @@ LLImageJ2CImpl* fallbackCreateLLImageJ2CImpl()  std::string LLImageJ2COJ::getEngineInfo() const  { +#ifdef OPENJPEG_VERSION  	return std::string("OpenJPEG: " OPENJPEG_VERSION ", Runtime: ")  		+ opj_version(); +#else +	return std::string("OpenJPEG runtime: ") + opj_version(); +#endif  }  // Return string from message, eliminating final \n if present diff --git a/indra/llkdu/CMakeLists.txt b/indra/llkdu/CMakeLists.txt index b8f8b420c3..cb0e204e91 100644 --- a/indra/llkdu/CMakeLists.txt +++ b/indra/llkdu/CMakeLists.txt @@ -40,6 +40,14 @@ set_source_files_properties(${llkdu_HEADER_FILES}  list(APPEND llkdu_SOURCE_FILES ${llkdu_HEADER_FILES}) +# Our KDU package is built with KDU_X86_INTRINSICS in its .vcxproj file. +# Unless that macro is also set for every consumer build, KDU freaks out, +# spamming the viewer log with alignment FUD. +set_source_files_properties(${llkdu_SOURCE_FILES} +                            PROPERTIES +                            COMPILE_DEFINITIONS +                            "KDU_X86_INTRINSICS") +  if (USE_KDU)    add_library (llkdu ${llkdu_SOURCE_FILES}) diff --git a/indra/llkdu/include_kdu_xxxx.h b/indra/llkdu/include_kdu_xxxx.h new file mode 100644 index 0000000000..a1dbced60b --- /dev/null +++ b/indra/llkdu/include_kdu_xxxx.h @@ -0,0 +1,40 @@ +/** + * @file   include_kdu_xxxx.h + * @author Nat Goodspeed + * @date   2016-04-25 + * @brief   + *  + * $LicenseInfo:firstyear=2016&license=viewerlgpl$ + * Copyright (c) 2016, Linden Research, Inc. + * $/LicenseInfo$ + */ + +// This file specifically omits #include guards of its own: it's sort of an +// #include macro used to wrap KDU #includes with proper incantations. Usage: + +// #define kdu_xxxx "kdu_compressed.h" // or whichever KDU header +// #include "include_kdu_xxxx.h" +// // kdu_xxxx #undef'ed by include_kdu_xxxx.h + +#if LL_DARWIN +// don't *really* want to rebuild KDU so turn off specific warnings for this header +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wself-assign-field" +#pragma clang diagnostic ignored "-Wunused-private-field" +#include kdu_xxxx +#pragma clang diagnostic pop +#elif LL_WINDOWS +// With warnings-as-errors in effect, strange relationship between +// jp2_output_box and its subclass jp2_target in kdu_compressed.h +// causes build failures. Specifically: +// warning C4263: 'void kdu_supp::jp2_target::open(kdu_supp::jp2_family_tgt *)' : member function does not override any base class virtual member function +// warning C4264: 'void kdu_supp::jp2_output_box::open(kdu_core::kdu_uint32)' : no override available for virtual member function from base 'kdu_supp::jp2_output_box'; function is hidden +#pragma warning(push) +#pragma warning(disable : 4263 4264) +#include kdu_xxxx +#pragma warning(pop) +#else // some other platform +#include kdu_xxxx +#endif + +#undef kdu_xxxx diff --git a/indra/llkdu/llimagej2ckdu.cpp b/indra/llkdu/llimagej2ckdu.cpp index aa405362e8..cb29da8f5f 100644 --- a/indra/llkdu/llimagej2ckdu.cpp +++ b/indra/llkdu/llimagej2ckdu.cpp @@ -25,21 +25,37 @@   */  #include "linden_common.h" +  #include "llimagej2ckdu.h"  #include "lltimer.h"  #include "llpointer.h"  #include "llmath.h"  #include "llkdumem.h" -#include "stringize.h" -#include "kdu_block_coding.h" +#define kdu_xxxx "kdu_block_coding.h" +#include "include_kdu_xxxx.h" + +// Avoid ubiquitous necessity of kdu_core:: qualification +using namespace kdu_core;  #include "llexception.h"  #include <boost/exception/diagnostic_information.hpp>  #include <sstream>  #include <iomanip> +// stream kdu_dims to std::ostream +// Turns out this must NOT be in the anonymous namespace! +// It must also precede #include "stringize.h". +inline +std::ostream& operator<<(std::ostream& out, const kdu_dims& dims) +{ +	return out << "(" << dims.pos.x << "," << dims.pos.y << ")," +				  "[" << dims.size.x << "x" << dims.size.y << "]"; +} + +#include "stringize.h" +  namespace {  // Failure to load an image shouldn't crash the whole viewer.  struct KDUError: public LLContinueError @@ -82,19 +98,10 @@ std::string report_kdu_exception(kdu_exception mb)  }  } // anonymous namespace -// stream kdu_dims to std::ostream -// Turns out this must NOT be in the anonymous namespace! -inline -std::ostream& operator<<(std::ostream& out, const kdu_dims& dims) -{ -	return out << "(" << dims.pos.x << "," << dims.pos.y << ")," -				  "[" << dims.size.x << "x" << dims.size.y << "]"; -} -  class kdc_flow_control {  public: -	kdc_flow_control(kdu_image_in_base *img_in, kdu_codestream codestream); +	kdc_flow_control(kdu_supp::kdu_image_in_base *img_in, kdu_codestream codestream);  	~kdc_flow_control();  	bool advance_components();  	void process_components(); @@ -103,7 +110,7 @@ private:  	struct kdc_component_flow_control {  	public: -		kdu_image_in_base *reader; +		kdu_supp::kdu_image_in_base *reader;  		int vert_subsampling;  		int ratio_counter;  /*  Initialized to 0, decremented by `count_delta';                                  when < 0, a new line must be processed, after @@ -143,7 +150,8 @@ std::string LLImageJ2CKDU::getEngineInfo() const  class LLKDUDecodeState  {  public: -	LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap); +	LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap, +					 kdu_codestream* codestreamp);  	~LLKDUDecodeState();  	bool processTileDecode(F32 decode_time, bool limit_time = true); @@ -345,9 +353,9 @@ void LLImageJ2CKDU::setupCodeStream(LLImageJ2C &base, bool keep_codestream, ECod  			// This method is only called from methods that catch KDUError.  			// We want to fail the image load, not crash the viewer.  			LLTHROW(KDUError(STRINGIZE("Component " << idx << " dimensions " -									 << other_dims -									 << " do not match component 0 dimensions " -									 << dims << "!"))); +									   << stringize(other_dims) +									   << " do not match component 0 dimensions " +									   << stringize(dims) << "!")));  		}  	} @@ -559,7 +567,8 @@ bool LLImageJ2CKDU::decodeImpl(LLImageJ2C &base, LLImageRaw &raw_image, F32 deco  					kdu_coords offset = tile_dims.pos - dims.pos;  					int row_gap = channels*dims.size.x; // inter-row separation  					kdu_byte *buf = buffer + offset.y*row_gap + offset.x*channels; -					mDecodeState.reset(new LLKDUDecodeState(tile, buf, row_gap)); +					mDecodeState.reset(new LLKDUDecodeState(tile, buf, row_gap, +															mCodeStreamp.get()));  				}  				// Do the actual processing  				F32 remaining_time = decode_time - decode_timer.getElapsedTimeF32(); @@ -1247,7 +1256,8 @@ all necessary level shifting, type conversion, rounding and truncation. */  	}  } -LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap) +LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap, +								   kdu_codestream* codestreamp)  {  	S32 c; @@ -1293,7 +1303,7 @@ LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap)  			mEngines[c] = kdu_synthesis(res,&mAllocator,use_shorts);  		}  	} -	mAllocator.finalize(); // Actually creates buffering resources +	mAllocator.finalize(*codestreamp); // Actually creates buffering resources  	for (c = 0; c < mNumComponents; c++)  	{  		mLines[c].create(); // Grabs resources from the allocator. @@ -1351,7 +1361,7 @@ separation between consecutive rows in the real buffer. */  // kdc_flow_control  -kdc_flow_control::kdc_flow_control (kdu_image_in_base *img_in, kdu_codestream codestream) +kdc_flow_control::kdc_flow_control (kdu_supp::kdu_image_in_base *img_in, kdu_codestream codestream)  {  	int n; diff --git a/indra/llkdu/llimagej2ckdu.h b/indra/llkdu/llimagej2ckdu.h index 7d234435a4..b57e4cc40e 100644 --- a/indra/llkdu/llimagej2ckdu.h +++ b/indra/llkdu/llimagej2ckdu.h @@ -37,15 +37,8 @@  #include "kdu_messaging.h"  #include "kdu_params.h" -// don't *really* want to rebuild KDU so turn off specific warnings for this header -#if LL_DARWIN -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-private-field" -#include "kdu_compressed.h" -#pragma clang diagnostic pop -#else -#include "kdu_compressed.h" -#endif +#define kdu_xxxx "kdu_compressed.h" +#include "include_kdu_xxxx.h"  #include "kdu_sample_processing.h"  #include <boost/scoped_ptr.hpp> @@ -111,17 +104,19 @@ private:  			}  		} -		kdu_codestream* operator->() { return &mCodeStream; } +		// for those few times when you need a raw kdu_codestream* +		kdu_core::kdu_codestream* get() { return &mCodeStream; } +		kdu_core::kdu_codestream* operator->() { return &mCodeStream; }  	private: -		kdu_codestream mCodeStream; +		kdu_core::kdu_codestream mCodeStream;  	};  	// Encode variable  	boost::scoped_ptr<LLKDUMemSource> mInputp;  	CodeStreamHolder mCodeStreamp; -	boost::scoped_ptr<kdu_coords> mTPosp; // tile position -	boost::scoped_ptr<kdu_dims> mTileIndicesp; +	boost::scoped_ptr<kdu_core::kdu_coords> mTPosp; // tile position +	boost::scoped_ptr<kdu_core::kdu_dims> mTileIndicesp;  	int mBlocksSize;  	int mPrecinctsSize;  	int mLevels; diff --git a/indra/llkdu/llkdumem.cpp b/indra/llkdu/llkdumem.cpp index 0347475559..96e9da25d8 100644 --- a/indra/llkdu/llkdumem.cpp +++ b/indra/llkdu/llkdumem.cpp @@ -28,6 +28,9 @@  #include "llkdumem.h"  #include "llerror.h" +using namespace kdu_core; +using kd_supp_image_local::image_line_buf; +  #if defined(LL_WINDOWS)  # pragma warning(disable: 4702) // unreachable code  #endif diff --git a/indra/llkdu/llkdumem.h b/indra/llkdu/llkdumem.h index fab913d93b..09d81f38de 100644 --- a/indra/llkdu/llkdumem.h +++ b/indra/llkdu/llkdumem.h @@ -29,26 +29,22 @@  // Support classes for reading and writing from memory buffers in KDU  #define KDU_NO_THREADS -// don't *really* want to rebuild KDU so turn off specific warnings for this header -#if LL_DARWIN -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wself-assign-field" -#pragma clang diagnostic ignored "-Wunused-private-field" -#include "kdu_image.h" -#pragma clang diagnostic pop -#else -#include "kdu_image.h" -#endif + +#define kdu_xxxx "kdu_image.h" +#include "include_kdu_xxxx.h"  #include "kdu_elementary.h"  #include "kdu_messaging.h"  #include "kdu_params.h" -#include "kdu_compressed.h" + +#define kdu_xxxx "kdu_compressed.h" +#include "include_kdu_xxxx.h" +  #include "kdu_sample_processing.h"  #include "image_local.h"  #include "stdtypes.h" -class LLKDUMemSource: public kdu_compressed_source +class LLKDUMemSource: public kdu_core::kdu_compressed_source  {  public:  	LLKDUMemSource(U8 *input_buffer, U32 size) @@ -62,7 +58,7 @@ public:  	{  	} -	int read(kdu_byte *buf, int num_bytes) +	int read(kdu_core::kdu_byte *buf, int num_bytes)  	{  		U32 num_out;  		num_out = num_bytes; @@ -87,7 +83,7 @@ private:  	U32 mCurPos;  }; -class LLKDUMemTarget: public kdu_compressed_target +class LLKDUMemTarget: public kdu_core::kdu_compressed_target  {  public:  	LLKDUMemTarget(U8 *output_buffer, U32 &output_size, const U32 buffer_size) @@ -102,7 +98,7 @@ public:  	{  	} -	bool write(const kdu_byte *buf, int num_bytes) +	bool write(const kdu_core::kdu_byte *buf, int num_bytes)  	{  		U32 num_out;  		num_out = num_bytes; @@ -126,7 +122,7 @@ private:  	U32 *mOutputSize;  }; -class LLKDUMemIn : public kdu_image_in_base +class LLKDUMemIn : public kdu_supp::kdu_image_in_base  {  public:  	LLKDUMemIn(const U8 *data, @@ -134,10 +130,10 @@ public:  				const U16 rows,  				const U16 cols,  				U8 in_num_components, -				siz_params *siz); +				kdu_core::siz_params *siz);  	~LLKDUMemIn(); -	bool get(int comp_idx, kdu_line_buf &line, int x_tnum); +	bool get(int comp_idx, kdu_core::kdu_line_buf &line, int x_tnum);  private:  	const U8 *mData; @@ -146,8 +142,8 @@ private:  	int rows, cols;  	int alignment_bytes; // Number of 0's at end of each line.  	int precision[3]; -	image_line_buf *incomplete_lines; // Each "sample" represents a full pixel -	image_line_buf *free_lines; +	kd_supp_image_local::image_line_buf *incomplete_lines; // Each "sample" represents a full pixel +	kd_supp_image_local::image_line_buf *free_lines;  	int num_unread_rows;  	U32 mCurPos; diff --git a/indra/llkdu/tests/llimagej2ckdu_test.cpp b/indra/llkdu/tests/llimagej2ckdu_test.cpp index e8b550baa6..e386a9f71b 100644 --- a/indra/llkdu/tests/llimagej2ckdu_test.cpp +++ b/indra/llkdu/tests/llimagej2ckdu_test.cpp @@ -30,6 +30,7 @@  #include "llimagej2ckdu.h"  #if LL_DARWIN +// For this source, it's true that private fields in llkdumem.h are unused.  #pragma clang diagnostic push  #pragma clang diagnostic ignored "-Wunused-private-field"  #include "llkdumem.h" @@ -37,7 +38,6 @@  #else  #include "llkdumem.h"  #endif -  #include "kdu_block_coding.h"  // Tut header  #include "lltut.h" @@ -113,17 +113,19 @@ void LLImageJ2C::setLastError(const std::string&, const std::string&) { }  bool LLImageJ2C::updateData() { return false; }  void LLImageJ2C::updateRawDiscardLevel() { } -LLKDUMemIn::LLKDUMemIn(const U8*, const U32, const U16, const U16, const U8, siz_params*) { } +LLKDUMemIn::LLKDUMemIn(const U8*, const U32, const U16, const U16, const U8, kdu_core::siz_params*) { }  LLKDUMemIn::~LLKDUMemIn() { } -bool LLKDUMemIn::get(int, kdu_line_buf&, int) { return false; } +bool LLKDUMemIn::get(int, kdu_core::kdu_line_buf&, int) { return false; }  // Stub Kakadu Library calls +// they're all namespaced now +namespace kdu_core {  kdu_tile_comp kdu_tile::access_component(int ) { kdu_tile_comp a; return a; }  kdu_block_encoder::kdu_block_encoder() { }  kdu_block_decoder::kdu_block_decoder() { }  void kdu_block::set_max_passes(int , bool ) { }  void kdu_block::set_max_bytes(int , bool ) { } -void kdu_tile::close(kdu_thread_env* ) { } +void kdu_tile::close(kdu_thread_env *, bool) {}  int kdu_tile::get_num_components() { return 0; }  bool kdu_tile::get_ycc() { return false; }  void kdu_tile::set_components_of_interest(int , const int* ) { } @@ -156,14 +158,14 @@ void kdu_codestream::set_fussy() { }  void kdu_codestream::get_dims(int, kdu_dims&, bool ) { }  int kdu_codestream::get_min_dwt_levels() { return 5; }  int kdu_codestream::get_max_tile_layers() { return 1; } -void kdu_codestream::change_appearance(bool, bool, bool) { } +void kdu_codestream::change_appearance(bool, bool, bool, kdu_thread_env *) {}  void kdu_codestream::get_tile_dims(kdu_coords, int, kdu_dims&, bool ) { }  void kdu_codestream::destroy() { }  void kdu_codestream::collect_timing_stats(int ) { }  void kdu_codestream::set_max_bytes(kdu_long, bool, bool ) { }  void kdu_codestream::get_valid_tiles(kdu_dims& ) { }  void kdu_codestream::create(kdu_compressed_source*, kdu_thread_env*) { } -void kdu_codestream::apply_input_restrictions( int, int, int, int, kdu_dims*, kdu_component_access_mode ) { } +void kdu_codestream::apply_input_restrictions(int, int, int, int, kdu_dims const *, kdu_component_access_mode, kdu_thread_env *, kdu_quality_limiter const *) {}  void kdu_codestream::get_subsampling(int , kdu_coords&, bool ) { }  void kdu_codestream::flush(kdu_long *, int, kdu_uint16 *, bool, bool, double, kdu_thread_env*, int) { }  void kdu_codestream::set_resilient(bool ) { } @@ -178,13 +180,15 @@ siz_params* kdu_codestream::access_siz() { return NULL; }  kdu_tile kdu_codestream::open_tile(kdu_coords , kdu_thread_env* ) { kdu_tile a; return a; }  kdu_codestream_comment kdu_codestream::add_comment() { kdu_codestream_comment a; return a; }  void kdu_subband::close_block(kdu_block*, kdu_thread_env*) { } -void kdu_subband::get_valid_blocks(kdu_dims &indices) { } -kdu_block* kdu_subband::open_block(kdu_coords, int*, kdu_thread_env*) { return NULL; } +void kdu_subband::get_valid_blocks(kdu_dims &indices) const { } +kdu_block * kdu_subband::open_block(kdu_coords, int *, kdu_thread_env *, int, bool) { return NULL; }  bool kdu_codestream_comment::put_text(const char*) { return false; }  void kdu_customize_warnings(kdu_message*) { }  void kdu_customize_errors(kdu_message*) { } -kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, kdu_thread_env*, kdu_thread_queue*, int, kdu_roi_image*, int) { kdu_long a = 0; return a; } +kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, kdu_thread_env *,kdu_thread_queue *, int, kdu_roi_image *, int, kdu_sample_allocator *, kdu_push_pull_params const *) { return kdu_long(0); } +void kdu_multi_analysis::destroy(kdu_thread_env *) {}  siz_params::siz_params() : kdu_params(NULL, false, false, false, false, false) { } +siz_params::~siz_params() {}  void siz_params::finalize(bool ) { }  void siz_params::copy_with_xforms(kdu_params*, int, int, bool, bool, bool) { }  int siz_params::write_marker_segment(kdu_output*, kdu_params*, int) { return 0; } @@ -193,10 +197,15 @@ bool siz_params::read_marker_segment(kdu_uint16, int, kdu_byte a[], int) { retur  kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*, int) { }  void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long, kdu_thread_env* ) { } +kdu_sample_allocator::~kdu_sample_allocator() {} +void kdu_sample_allocator::do_finalize(kdu_codestream) {}  void (*kdu_convert_ycc_to_rgb_rev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);  void (*kdu_convert_ycc_to_rgb_irrev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);  void (*kdu_convert_ycc_to_rgb_rev32)(kdu_int32*,kdu_int32*,kdu_int32*,int);  void (*kdu_convert_ycc_to_rgb_irrev32)(float*,float*,float*,int); +bool kdu_core_sample_alignment_checker(int, int, int, int, bool, bool) { return false; } +void kdu_pull_ifc::destroy() {} +} // namespace kdu_core  // -------------------------------------------------------------------------------------------  // TUT diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 93b9f22b25..92a48df53c 100644 --- a/indra/llmath/llmath.h +++ b/indra/llmath/llmath.h @@ -153,7 +153,7 @@ inline F64 llabs(const F64 a)  inline S32 lltrunc( F32 f )  { -#if LL_WINDOWS && !defined( __INTEL_COMPILER ) +#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)  		// Avoids changing the floating point control word.  		// Add or subtract 0.5 - epsilon and then round  		const static U32 zpfp[] = { 0xBEFFFFFF, 0x3EFFFFFF }; @@ -179,7 +179,7 @@ inline S32 lltrunc( F64 f )  inline S32 llfloor( F32 f )  { -#if LL_WINDOWS && !defined( __INTEL_COMPILER ) +#if LL_WINDOWS && !defined( __INTEL_COMPILER ) && (ADDRESS_SIZE == 32)  		// Avoids changing the floating point control word.  		// Accurate (unlike Stereopsis version) for all values between S32_MIN and S32_MAX and slightly faster than Stereopsis version.  		// Add -(0.5 - epsilon) and then round diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h index cebd2ace7d..54a275633f 100644 --- a/indra/llmath/llsimdmath.h +++ b/indra/llmath/llsimdmath.h @@ -31,7 +31,7 @@  #error "Please include llmath.h before this file."  #endif -#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 ) ) +#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 && ADDRESS_SIZE == 32 ) )  #error SSE2 not enabled. LLVector4a and related class will not compile.  #endif diff --git a/indra/llmath/v4coloru.h b/indra/llmath/v4coloru.h index fddad34978..704ce852d9 100644 --- a/indra/llmath/v4coloru.h +++ b/indra/llmath/v4coloru.h @@ -47,14 +47,7 @@ class LLColor4U  {  public: -	union -	{ -		U8         mV[LENGTHOFCOLOR4U]; -		U32        mAll; -		LLColor4*  mSources; -		LLColor4U* mSourcesU; -	}; - +	U8 mV[LENGTHOFCOLOR4U];  	LLColor4U();						// Initializes LLColor4U to (0, 0, 0, 1)  	LLColor4U(U8 r, U8 g, U8 b);		// Initializes LLColor4U to (r, g, b, 1) @@ -132,6 +125,9 @@ public:  		return LLColor4(*this);  	} +	U32 asRGBA() const; +	void fromRGBA( U32 aVal ); +  	static LLColor4U white;  	static LLColor4U black;  	static LLColor4U red; @@ -565,6 +561,26 @@ void LLColor4U::setVecScaleClamp(const LLColor3& color)  	mV[3] = 255;  } +inline U32 LLColor4U::asRGBA() const +{ +	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here + +	return (mV[3] << 24) | (mV[2] << 16) | (mV[1] << 8) | mV[0]; +} + +inline void LLColor4U::fromRGBA( U32 aVal ) +{ +	// Little endian: values are swapped in memory. The original code access the array like a U32, so we need to swap here + +	mV[ 0 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 1 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 2 ] = aVal & 0xFF; +	aVal >>= 8; +	mV[ 3 ] = aVal & 0xFF; +} +  #endif diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index 5b9beb359b..9a2de71142 100755 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -168,7 +168,10 @@ def run(*args, **kwds):      #   executable passed as our first arg,      # - [no e] child should inherit this process's environment.      debug("Running %s...", " ".join(args)) -    rc = os.spawnv(os.P_WAIT, args[0], args) +    if kwds.get("use_path", False): +        rc = os.spawnvp(os.P_WAIT, args[0], args) +    else: +        rc = os.spawnv(os.P_WAIT, args[0], args)      debug("%s returned %s", args[0], rc)      return rc diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt index 84667f1b82..2cdea67723 100644 --- a/indra/llplugin/CMakeLists.txt +++ b/indra/llplugin/CMakeLists.txt @@ -56,13 +56,13 @@ set(llplugin_HEADER_FILES  set_source_files_properties(${llplugin_HEADER_FILES}                              PROPERTIES HEADER_FILE_ONLY TRUE) -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  list(APPEND llplugin_SOURCE_FILES ${llplugin_HEADER_FILES}) diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 69420dd0bb..0e242a20f6 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -2039,7 +2039,8 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)  		}  	} -	mVerticesp[mCount] = mVerticesp[mCount-1]; +	if( mCount > 0 ) // ND: Guard against crashes if mCount is zero, yes it can happen +		mVerticesp[mCount] = mVerticesp[mCount-1];  }  void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp index d00d9ab47e..0d1a47408b 100644 --- a/indra/llwindow/lldragdropwin32.cpp +++ b/indra/llwindow/lldragdropwin32.cpp @@ -113,7 +113,7 @@ class LLDragDropWin32Target:  					PVOID data = GlobalLock( stgmed.hGlobal );  					mDropUrl = std::string( (char*)data );  					// XXX MAJOR MAJOR HACK! -					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); +					LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );  					if (NULL != window_imp)  					{  						LLCoordGL gl_coord( 0, 0 ); @@ -168,7 +168,7 @@ class LLDragDropWin32Target:  			if ( mAllowDrop )  			{  				// XXX MAJOR MAJOR HACK! -				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); +				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );  				if (NULL != window_imp)  				{  					LLCoordGL gl_coord( 0, 0 ); @@ -215,7 +215,7 @@ class LLDragDropWin32Target:  		HRESULT __stdcall DragLeave( void )  		{  			// XXX MAJOR MAJOR HACK! -			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(mAppWindowHandle, GWL_USERDATA); +			LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );  			if (NULL != window_imp)  			{  				LLCoordGL gl_coord( 0, 0 ); @@ -232,7 +232,7 @@ class LLDragDropWin32Target:  			if ( mAllowDrop )  			{  				// window impl stored in Window data (neat!) -				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong( mAppWindowHandle, GWL_USERDATA ); +				LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( mAppWindowHandle, GWLP_USERDATA );  				if ( NULL != window_imp )  				{  					POINT pt_client; diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 4086db8e52..55e68283b7 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -785,7 +785,7 @@ void LLWindowWin32::close()  	LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;  	// Don't process events in our mainWindowProc any longer. -	SetWindowLong(mWindowHandle, GWL_USERDATA, NULL); +	SetWindowLongPtr(mWindowHandle, GWLP_USERDATA, NULL);  	// Make sure we don't leave a blank toolbar button.  	ShowWindow(mWindowHandle, SW_HIDE); @@ -1564,7 +1564,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO  		LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;  	} -	SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this); +	SetWindowLongPtr(mWindowHandle, GWLP_USERDATA, (LONG_PTR)this);  	// register this window as handling drag/drop events from the OS  	DragAcceptFiles( mWindowHandle, TRUE ); @@ -1876,7 +1876,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_  	// This is to avoid triggering double click teleport after returning focus (see MAINT-3786).  	static bool sHandleDoubleClick = true; -	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLong(h_wnd, GWL_USERDATA); +	LLWindowWin32 *window_imp = (LLWindowWin32 *)GetWindowLongPtr( h_wnd, GWLP_USERDATA );  	if (NULL != window_imp) diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt index 9055e0111a..f654c15183 100644 --- a/indra/media_plugins/CMakeLists.txt +++ b/indra/media_plugins/CMakeLists.txt @@ -8,14 +8,10 @@ if (LINUX)  endif (LINUX)  if (DARWIN) -    add_subdirectory(quicktime)      add_subdirectory(cef)  endif (DARWIN)  if (WINDOWS)      add_subdirectory(cef) -    add_subdirectory(winmmshim)      add_subdirectory(libvlc)  endif (WINDOWS) - -### add_subdirectory(example) diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt index 7367b9e5e6..70c81d4023 100644 --- a/indra/media_plugins/base/CMakeLists.txt +++ b/indra/media_plugins/base/CMakeLists.txt @@ -28,13 +28,13 @@ include_directories(SYSTEM  ### media_plugin_base -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_base_SOURCE_FILES      media_plugin_base.cpp diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index db471c7906..5db0a8fbfd 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -34,13 +34,13 @@ include_directories(SYSTEM  ### media_plugin_cef -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_cef_SOURCE_FILES      media_plugin_cef.cpp diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp index 4eb29c98f9..d04bc16d4f 100644 --- a/indra/media_plugins/cef/media_plugin_cef.cpp +++ b/indra/media_plugins/cef/media_plugin_cef.cpp @@ -501,7 +501,10 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  				LLCEFLib::LLCEFLibSettings settings;  				settings.initial_width = 1024;  				settings.initial_height = 1024; -				settings.page_zoom_factor = message_in.getValueReal("factor"); +				// The LLCEFLibSettings struct in the Windows 32-bit +				// llceflib's build 500907 does not have a page_zoom_factor +				// member. Set below. +				//settings.page_zoom_factor = message_in.getValueReal("factor");  				settings.plugins_enabled = mPluginsEnabled;  				settings.media_stream_enabled = false; // MAINT-6060 - WebRTC media removed until we can add granualrity/query UI  				settings.javascript_enabled = mJavascriptEnabled; @@ -518,6 +521,9 @@ void MediaPluginCEF::receiveMessage(const char* message_string)  					// if this fails, the media system in viewer will put up a message  				} +				// now we can set page zoom factor +				mLLCEFLib->setPageZoom(message_in.getValueReal("factor")); +  				// Plugin gets to decide the texture parameters to use.  				mDepth = 4;  				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params"); diff --git a/indra/media_plugins/cef/windows_volume_catcher.cpp b/indra/media_plugins/cef/windows_volume_catcher.cpp index 0cfb810906..3b52941e96 100644 --- a/indra/media_plugins/cef/windows_volume_catcher.cpp +++ b/indra/media_plugins/cef/windows_volume_catcher.cpp @@ -42,44 +42,15 @@ private:  	VolumeCatcherImpl();  	~VolumeCatcherImpl(); -	typedef void (WINAPI *set_volume_func_t)(F32); -	typedef void (WINAPI *set_mute_func_t)(bool); - -	set_volume_func_t mSetVolumeFunc; -	set_mute_func_t mSetMuteFunc; - -	// tests if running on Vista, 7, 8 + once in CTOR -	bool isWindowsVistaOrHigher(); -  	F32 	mVolume;  	F32 	mPan;  	bool mSystemIsVistaOrHigher;  }; -bool VolumeCatcherImpl::isWindowsVistaOrHigher() -{ -	OSVERSIONINFO osvi; -	ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); -	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); -	GetVersionEx(&osvi); -	return osvi.dwMajorVersion >= 6; -} -  VolumeCatcherImpl::VolumeCatcherImpl()  :	mVolume(1.0f),			// default volume is max  	mPan(0.f)				// default pan is centered  { -	mSystemIsVistaOrHigher = isWindowsVistaOrHigher(); - -	if ( ! mSystemIsVistaOrHigher ) -	{ -		HMODULE handle = ::LoadLibrary(L"winmm.dll"); -		if(handle) -		{ -			mSetVolumeFunc = (set_volume_func_t)::GetProcAddress(handle, "setPluginVolume"); -			mSetMuteFunc = (set_mute_func_t)::GetProcAddress(handle, "setPluginMute"); -		} -	}  }  VolumeCatcherImpl::~VolumeCatcherImpl() @@ -90,26 +61,12 @@ void VolumeCatcherImpl::setVolume(F32 volume)  {  	mVolume = volume; -	if ( mSystemIsVistaOrHigher ) -	{ -		// set both left/right to same volume -		// TODO: use pan value to set independently -		DWORD left_channel  = (DWORD)(mVolume * 65535.0f); -		DWORD right_channel =  (DWORD)(mVolume * 65535.0f); -		DWORD hw_volume = left_channel << 16 | right_channel; -		::waveOutSetVolume(NULL, hw_volume); -	} -	else -	{ -		if (mSetMuteFunc) -		{ -			mSetMuteFunc(volume == 0.f); -		} -		if (mSetVolumeFunc) -		{ -			mSetVolumeFunc(mVolume); -		} -	} +	// set both left/right to same volume +	// TODO: use pan value to set independently +	DWORD left_channel = (DWORD)(mVolume * 65535.0f); +	DWORD right_channel = (DWORD)(mVolume * 65535.0f); +	DWORD hw_volume = left_channel << 16 | right_channel; +	::waveOutSetVolume(NULL, hw_volume);  }  void VolumeCatcherImpl::setPan(F32 pan) diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt index 171645ef04..d2a17b1d76 100644 --- a/indra/media_plugins/example/CMakeLists.txt +++ b/indra/media_plugins/example/CMakeLists.txt @@ -32,13 +32,13 @@ include_directories(SYSTEM  ### media_plugin_example -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_example_SOURCE_FILES      media_plugin_example.cpp diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt index 447f6e0689..6d18814b1e 100644 --- a/indra/media_plugins/gstreamer010/CMakeLists.txt +++ b/indra/media_plugins/gstreamer010/CMakeLists.txt @@ -33,13 +33,13 @@ include_directories(SYSTEM  ### media_plugin_gstreamer010 -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_gstreamer010_SOURCE_FILES      media_plugin_gstreamer010.cpp diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt index 535d29125b..32574c7afa 100644 --- a/indra/media_plugins/libvlc/CMakeLists.txt +++ b/indra/media_plugins/libvlc/CMakeLists.txt @@ -33,13 +33,13 @@ include_directories(SYSTEM  ### media_plugin_libvlc -if(NOT WORD_SIZE EQUAL 32) +if(NOT ADDRESS_SIZE EQUAL 32)    if(WINDOWS) -    add_definitions(/FIXED:NO) +    ##add_definitions(/FIXED:NO)    else(WINDOWS) # not windows therefore gcc LINUX and DARWIN      add_definitions(-fPIC)    endif(WINDOWS) -endif(NOT WORD_SIZE EQUAL 32) +endif(NOT ADDRESS_SIZE EQUAL 32)  set(media_plugin_libvlc_SOURCE_FILES      media_plugin_libvlc.cpp diff --git a/indra/media_plugins/quicktime/CMakeLists.txt b/indra/media_plugins/quicktime/CMakeLists.txt deleted file mode 100755 index 58391007ff..0000000000 --- a/indra/media_plugins/quicktime/CMakeLists.txt +++ /dev/null @@ -1,94 +0,0 @@ -# -*- cmake -*- - -project(media_plugin_quicktime) - -include(00-Common) -include(LLCommon) -include(LLImage) -include(LLPlugin) -include(LLMath) -include(LLRender) -include(LLWindow) -include(Linking) -include(PluginAPI) -include(MediaPluginBase) -include(OpenGL) -include(QuickTimePlugin) - -include_directories( -    ${LLPLUGIN_INCLUDE_DIRS} -    ${MEDIA_PLUGIN_BASE_INCLUDE_DIRS} -    ${LLCOMMON_INCLUDE_DIRS} -    ${LLMATH_INCLUDE_DIRS} -    ${LLIMAGE_INCLUDE_DIRS} -    ${LLRENDER_INCLUDE_DIRS} -    ${LLWINDOW_INCLUDE_DIRS} -) -include_directories(SYSTEM -    ${LLCOMMON_SYSTEM_INCLUDE_DIRS} -    ) - -if (DARWIN) -    include(CMakeFindFrameworks) -    find_library(CARBON_LIBRARY Carbon) -endif (DARWIN) - - -### media_plugin_quicktime - -set(media_plugin_quicktime_SOURCE_FILES -    media_plugin_quicktime.cpp -    ) - -add_library(media_plugin_quicktime -    SHARED -    ${media_plugin_quicktime_SOURCE_FILES} -) - -target_link_libraries(media_plugin_quicktime -  ${LLPLUGIN_LIBRARIES} -  ${MEDIA_PLUGIN_BASE_LIBRARIES} -  ${LLCOMMON_LIBRARIES} -  ${QUICKTIME_LIBRARY} -  ${PLUGIN_API_WINDOWS_LIBRARIES} -) - -add_dependencies(media_plugin_quicktime -  ${LLPLUGIN_LIBRARIES} -  ${MEDIA_PLUGIN_BASE_LIBRARIES} -  ${LLCOMMON_LIBRARIES} -) - -if (WINDOWS) -  set_target_properties( -    media_plugin_quicktime -    PROPERTIES -    LINK_FLAGS "/MANIFEST:NO" -    ) -endif (WINDOWS) - -if (QUICKTIME) - -    add_definitions(-DLL_QUICKTIME_ENABLED=1) - -    if (DARWIN) -      # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name -      set_target_properties( -        media_plugin_quicktime -        PROPERTIES -        PREFIX "" -        BUILD_WITH_INSTALL_RPATH 1 -        INSTALL_NAME_DIR "@executable_path" -        LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" -      ) - -# We use a bunch of deprecated system APIs. -    set_source_files_properties( -        media_plugin_quicktime.cpp PROPERTIES -        COMPILE_FLAGS -Wno-deprecated-declarations -        ) -    find_library(CARBON_LIBRARY Carbon) -    target_link_libraries(media_plugin_quicktime ${CARBON_LIBRARY}) -  endif (DARWIN) -endif (QUICKTIME) - diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp deleted file mode 100755 index b43598e4a5..0000000000 --- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp +++ /dev/null @@ -1,1085 +0,0 @@ -/** - * @file media_plugin_quicktime.cpp - * @brief QuickTime plugin for LLMedia API plugin system - * - * @cond - * $LicenseInfo:firstyear=2008&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$ - * @endcond - */ - -#include "linden_common.h" - -#include "llgl.h" -  -#include "llplugininstance.h" -#include "llpluginmessage.h" -#include "llpluginmessageclasses.h" -#include "media_plugin_base.h" -  -#if LL_QUICKTIME_ENABLED -  -#if defined(LL_DARWIN) -#include <QuickTime/QuickTime.h> -#elif defined(LL_WINDOWS) -#include "llwin32headers.h" -#include "MacTypes.h" -#include "QTML.h" -#include "Movies.h" -#include "QDoffscreen.h" -#include "FixMath.h" -#include "QTLoadLibraryUtils.h" -#endif - - - -// TODO: Make sure that the only symbol exported from this library is LLPluginInitEntryPoint -//////////////////////////////////////////////////////////////////////////////// -// -class MediaPluginQuickTime : public MediaPluginBase -{ -public: -	MediaPluginQuickTime(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data); -	~MediaPluginQuickTime(); - -	/* virtual */ void receiveMessage(const char *message_string); - -private: - -	int mNaturalWidth; -	int mNaturalHeight; -	Movie mMovieHandle; -	GWorldPtr mGWorldHandle; -	ComponentInstance mMovieController; -	int mCurVolume; -	bool mMediaSizeChanging; -	bool mIsLooping; -	std::string mMovieTitle; -	bool mReceivedTitle; -	const int mMinWidth; -	const int mMaxWidth; -	const int mMinHeight; -	const int mMaxHeight; -	F64 mPlayRate; -	std::string mNavigateURL; - -	enum ECommand { -		COMMAND_NONE, -		COMMAND_STOP, -		COMMAND_PLAY, -		COMMAND_FAST_FORWARD, -		COMMAND_FAST_REWIND, -		COMMAND_PAUSE, -		COMMAND_SEEK, -	}; -	ECommand mCommand; - -	// Override this to add current time and duration to the message -	/*virtual*/ void setDirty(int left, int top, int right, int bottom) -	{ -		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "updated"); - -		message.setValueS32("left", left); -		message.setValueS32("top", top); -		message.setValueS32("right", right); -		message.setValueS32("bottom", bottom); - -		if(mMovieHandle) -		{ -			message.setValueReal("current_time", getCurrentTime()); -			message.setValueReal("duration", getDuration()); -			message.setValueReal("current_rate", Fix2X(GetMovieRate(mMovieHandle))); -		} - -		sendMessage(message); -	} - - -	static Rect rectFromSize(int width, int height) -	{ -		Rect result; - - -		result.left = 0; -		result.top = 0; -		result.right = width; -		result.bottom = height; - -		return result; -	} - -	Fixed getPlayRate(void) -	{ -		Fixed result; -		if(mPlayRate == 0.0f) -		{ -			// Default to the movie's preferred rate -			result = GetMoviePreferredRate(mMovieHandle); -			if(result == 0) -			{ -				// Don't return a 0 play rate, ever. -				std::cerr << "Movie's preferred rate is 0, forcing to 1.0." << std::endl; -				result = X2Fix(1.0f); -			} -		} -		else -		{ -			result = X2Fix(mPlayRate); -		} - -		return result; -	} - -	void load( const std::string url ) -	{ - -		if ( url.empty() ) -			return; - -		// Stop and unload any existing movie before starting another one. -		unload(); - -		setStatus(STATUS_LOADING); - -		//In case std::string::c_str() makes a copy of the url data, -		//make sure there is memory to hold it before allocating memory for handle. -		//if fails, NewHandleClear(...) should return NULL. -		const char* url_string = url.c_str() ; -		Handle handle = NewHandleClear( ( Size )( url.length() + 1 ) ); - -		if ( NULL == handle || noErr != MemError() || NULL == *handle ) -		{ -			setStatus(STATUS_ERROR); -			return; -		} - -		BlockMove( url_string, *handle, ( Size )( url.length() + 1 ) ); - -		OSErr err = NewMovieFromDataRef( &mMovieHandle, newMovieActive | newMovieDontInteractWithUser | newMovieAsyncOK | newMovieIdleImportOK, nil, handle, URLDataHandlerSubType ); -		DisposeHandle( handle ); -		if ( noErr != err ) -		{ -			setStatus(STATUS_ERROR); -			return; -		}; -		 -		mNavigateURL = url; -		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_begin"); -		message.setValue("uri", mNavigateURL); -		sendMessage(message); - -		// do pre-roll actions (typically fired for streaming movies but not always) -		PrePrerollMovie( mMovieHandle, 0, getPlayRate(), moviePrePrerollCompleteCallback, ( void * )this ); - -		Rect movie_rect = rectFromSize(mWidth, mHeight); - -		// make a new movie controller -		mMovieController = NewMovieController( mMovieHandle, &movie_rect, mcNotVisible | mcTopLeftMovie ); - -		// movie controller -		MCSetActionFilterWithRefCon( mMovieController, mcActionFilterCallBack, ( long )this ); - -		SetMoviePlayHints( mMovieHandle, hintsAllowDynamicResize, hintsAllowDynamicResize ); - -		// function that gets called when a frame is drawn -		SetMovieDrawingCompleteProc( mMovieHandle, movieDrawingCallWhenChanged, movieDrawingCompleteCallback, ( long )this ); - -		setStatus(STATUS_LOADED); - -		sizeChanged(); -	}; - -	bool unload() -	{ -		// new movie and have to get title again -		mReceivedTitle = false; - -		if ( mMovieHandle ) -		{ -			StopMovie( mMovieHandle ); -			if ( mMovieController ) -			{ -				MCMovieChanged( mMovieController, mMovieHandle ); -			}; -		}; - -		if ( mMovieController ) -		{ -			MCSetActionFilterWithRefCon( mMovieController, NULL, (long)this ); -			DisposeMovieController( mMovieController ); -			mMovieController = NULL; -		}; - -		if ( mMovieHandle ) -		{ -			SetMovieDrawingCompleteProc( mMovieHandle, movieDrawingCallWhenChanged, nil, ( long )this ); -			DisposeMovie( mMovieHandle ); -			mMovieHandle = NULL; -		}; - -        mGWorldHandle = NULL; -         -		setStatus(STATUS_NONE); - -		return true; -	} - -	bool navigateTo( const std::string url ) -	{ -		unload(); -		load( url ); - -		return true; -	}; - -	bool sizeChanged() -	{ -		if ( ! mMovieHandle ) -			return false; - -		// Check to see whether the movie's natural size has updated -		{ -			int width, height; -			getMovieNaturalSize(&width, &height); -			if((width != 0) && (height != 0) && ((width != mNaturalWidth) || (height != mNaturalHeight))) -			{ -				mNaturalWidth = width; -				mNaturalHeight = height; - -				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_request"); -				message.setValue("name", mTextureSegmentName); -				message.setValueS32("width", width); -				message.setValueS32("height", height); -				sendMessage(message); -				//std::cerr << "<--- Sending size change request to application with name: " << mTextureSegmentName << " - size is " << width << " x " << height << std::endl; -			} -		} -         - -		// sanitize destination size -		Rect dest_rect = rectFromSize(mWidth, mHeight); - -		// media depth won't change -		int depth_bits = mDepth * 8; -		long rowbytes = mDepth * mTextureWidth; - -		if(mPixels != NULL) -		{ -			// We have pixels.  Set up a GWorld pointing at the texture. -			OSErr result = QTNewGWorldFromPtr( &mGWorldHandle, depth_bits, &dest_rect, NULL, NULL, 0, (Ptr)mPixels, rowbytes); -			if ( noErr != result ) -			{ -				// TODO: unrecoverable??  throw exception?  return something? -				return false; -			} -		} -		else -		{ -			// We don't have pixels. Create a fake GWorld we can point the movie at when it's not safe to render normally. -			Rect tempRect = rectFromSize(1, 1); -			OSErr result = QTNewGWorld( &mGWorldHandle, depth_bits, &tempRect, NULL, NULL, 0); -			if ( noErr != result ) -			{ -				// TODO: unrecoverable??  throw exception?  return something? -				return false; -			} -		} - -		SetMovieGWorld( mMovieHandle, mGWorldHandle, NULL ); -         -		// Set up the movie display matrix -		{ -			// scale movie to fit rect and invert vertically to match opengl image format -			MatrixRecord transform; -			SetIdentityMatrix( &transform );	// transforms are additive so start from identify matrix -			double scaleX = (double) mWidth / mNaturalWidth; -			double scaleY = -1.0 * (double) mHeight / mNaturalHeight; -			double centerX = mWidth / 2.0; -			double centerY = mHeight / 2.0; -			ScaleMatrix( &transform, X2Fix( scaleX ), X2Fix( scaleY ), X2Fix( centerX ), X2Fix( centerY ) ); -			SetMovieMatrix( mMovieHandle, &transform ); -		} - -		// update movie controller -		if ( mMovieController ) -		{ -			MCSetControllerPort( mMovieController, mGWorldHandle ); -			MCPositionController( mMovieController, &dest_rect, &dest_rect, -								  mcTopLeftMovie | mcPositionDontInvalidate ); -			MCMovieChanged( mMovieController, mMovieHandle ); -		} - - -		// Emit event with size change so the calling app knows about it too -		// TODO: -		//LLMediaEvent event( this ); -		//mEventEmitter.update( &LLMediaObserver::onMediaSizeChange, event ); - -		return true; -	} -	static Boolean mcActionFilterCallBack( MovieController mc, short action, void *params, long ref ) -	{ -		Boolean result = false; - -		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref; - -		switch( action ) -		{ -			// handle window resizing -			case mcActionControllerSizeChanged: -				// Ensure that the movie draws correctly at the new size -				self->sizeChanged(); -				break; - -			// Block any movie controller actions that open URLs. -			case mcActionLinkToURL: -			case mcActionGetNextURL: -			case mcActionLinkToURLExtended: -				// Prevent the movie controller from handling the message -				result = true; -				break; - -			default: -				break; -		}; - -		return result; -	}; - -	static OSErr movieDrawingCompleteCallback( Movie call_back_movie, long ref ) -	{ -		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref; - -		// IMPORTANT: typically, a consumer who is observing this event will set a flag -		// when this event is fired then render later. Be aware that the media stream -		// can change during this period - dimensions, depth, format etc. -		//LLMediaEvent event( self ); -//		self->updateQuickTime(); -		// TODO ^^^ - - -		if ( self->mWidth > 0 && self->mHeight > 0 ) -			self->setDirty( 0, 0, self->mWidth, self->mHeight ); - -		return noErr; -	}; - -	static void moviePrePrerollCompleteCallback( Movie movie, OSErr preroll_err, void *ref ) -	{ -		MediaPluginQuickTime* self = ( MediaPluginQuickTime* )ref; - -		// TODO: -		//LLMediaEvent event( self ); -		//self->mEventEmitter.update( &LLMediaObserver::onMediaPreroll, event ); -		 -		// Send a "navigate complete" event. -		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete"); -		message.setValue("uri", self->mNavigateURL); -		message.setValueS32("result_code", 200); -		message.setValue("result_string", "OK"); -		self->sendMessage(message); -	}; - - -	void rewind() -	{ -		GoToBeginningOfMovie( mMovieHandle ); -		MCMovieChanged( mMovieController, mMovieHandle ); -	}; - -	bool processState() -	{ -		if ( mCommand == COMMAND_PLAY ) -		{ -			if ( mStatus == STATUS_LOADED || mStatus == STATUS_PAUSED || mStatus == STATUS_PLAYING || mStatus == STATUS_DONE ) -			{ -				long state = GetMovieLoadState( mMovieHandle ); - -				if ( state >= kMovieLoadStatePlaythroughOK ) -				{ -					// if the movie is at the end (generally because it reached it naturally) -					// and we play is requested, jump back to the start of the movie. -					// note: this is different from having loop flag set. -					if ( IsMovieDone( mMovieHandle ) ) -					{ -						Fixed rate = X2Fix( 0.0 ); -						MCDoAction( mMovieController, mcActionPlay, (void*)rate ); -						rewind(); -					}; - -					MCDoAction( mMovieController, mcActionPrerollAndPlay, (void*)getPlayRate() ); -					MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume ); -					setStatus(STATUS_PLAYING); -					mCommand = COMMAND_NONE; -				}; -			}; -		} -		else -		if ( mCommand == COMMAND_STOP ) -		{ -			if ( mStatus == STATUS_PLAYING || mStatus == STATUS_PAUSED || mStatus == STATUS_DONE ) -			{ -				if ( GetMovieLoadState( mMovieHandle ) >= kMovieLoadStatePlaythroughOK ) -				{ -					Fixed rate = X2Fix( 0.0 ); -					MCDoAction( mMovieController, mcActionPlay, (void*)rate ); -					rewind(); - -					setStatus(STATUS_LOADED); -					mCommand = COMMAND_NONE; -				}; -			}; -		} -		else -		if ( mCommand == COMMAND_PAUSE ) -		{ -			if ( mStatus == STATUS_PLAYING ) -			{ -				if ( GetMovieLoadState( mMovieHandle ) >= kMovieLoadStatePlaythroughOK ) -				{ -					Fixed rate = X2Fix( 0.0 ); -					MCDoAction( mMovieController, mcActionPlay, (void*)rate ); -					setStatus(STATUS_PAUSED); -					mCommand = COMMAND_NONE; -				}; -			}; -		}; - -		return true; -	}; - -	void play(F64 rate) -	{ -		mPlayRate = rate; -		mCommand = COMMAND_PLAY; -	}; - -	void stop() -	{ -		mCommand = COMMAND_STOP; -	}; - -	void pause() -	{ -		mCommand = COMMAND_PAUSE; -	}; - -	void getMovieNaturalSize(int *movie_width, int *movie_height) -	{ -		Rect rect; - -		GetMovieNaturalBoundsRect( mMovieHandle, &rect ); - -		int width  = ( rect.right - rect.left ); -		int height = ( rect.bottom - rect.top ); - -		// make sure width and height fall in valid range -		if ( width < mMinWidth ) -			width = mMinWidth; - -		if ( width > mMaxWidth ) -			width = mMaxWidth; - -		if ( height < mMinHeight ) -			height = mMinHeight; - -		if ( height > mMaxHeight ) -			height = mMaxHeight; - -		// return the new rect -		*movie_width = width; -		*movie_height = height; -	} - -	void updateQuickTime(int milliseconds) -	{ -		if ( ! mMovieHandle ) -			return; - -		if ( ! mMovieController ) -			return; - -		// this wasn't required in 1.xx viewer but we have to manually  -		// work the Windows message pump now -		#if defined( LL_WINDOWS ) -		MSG msg; -		while ( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )  -		{ -			GetMessage( &msg, NULL, 0, 0 ); -			TranslateMessage( &msg ); -			DispatchMessage( &msg ); -		}; -		#endif - -		MCIdle( mMovieController ); - -		if ( ! mGWorldHandle ) -			return; - -		if ( mMediaSizeChanging ) -			return; - -		// update state machine -		processState(); - -		// see if title arrived and if so, update member variable with contents -		checkTitle(); -		 -		// QT call to see if we are at the end - can't do with controller -		if ( IsMovieDone( mMovieHandle ) ) -		{ -			// special code for looping - need to rewind at the end of the movie -			if ( mIsLooping ) -			{ -				// go back to start -				rewind(); - -				if ( mMovieController ) -				{ -					// kick off new play -					MCDoAction( mMovieController, mcActionPrerollAndPlay, (void*)getPlayRate() ); - -					// set the volume -					MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume ); -				}; -			} -			else -			{ -				if(mStatus == STATUS_PLAYING) -				{ -					setStatus(STATUS_DONE); -				} -			} -		} - -	}; -     -	void seek( F64 time ) -	{ -		if ( mMovieController ) -		{ -			TimeRecord when; -			when.scale = GetMovieTimeScale( mMovieHandle ); -			when.base = 0; - -			// 'time' is in (floating point) seconds.  The timebase time will be in 'units', where -			// there are 'scale' units per second. -			SInt64 raw_time = ( SInt64 )( time * (double)( when.scale ) ); - -			when.value.hi = ( SInt32 )( raw_time >> 32 ); -			when.value.lo = ( SInt32 )( ( raw_time & 0x00000000FFFFFFFF ) ); - -			MCDoAction( mMovieController, mcActionGoToTime, &when ); -		}; -	}; - -	F64 getLoadedDuration() 	  	  -	{ 	  	  -		TimeValue duration; 	  	  -		if(GetMaxLoadedTimeInMovie( mMovieHandle, &duration ) != noErr) 	  	  -		{ 	  	  -			// If GetMaxLoadedTimeInMovie returns an error, return the full duration of the movie. 	  	  -			duration = GetMovieDuration( mMovieHandle ); 	  	  -		} 	  	  -		TimeValue scale = GetMovieTimeScale( mMovieHandle ); 	  	  - -		return (F64)duration / (F64)scale; 	  	  -	}; 	  	  - -	F64 getDuration() -	{ -		TimeValue duration = GetMovieDuration( mMovieHandle ); -		TimeValue scale = GetMovieTimeScale( mMovieHandle ); - -		return (F64)duration / (F64)scale; -	}; - -	F64 getCurrentTime() -	{ -		TimeValue curr_time = GetMovieTime( mMovieHandle, 0 ); -		TimeValue scale = GetMovieTimeScale( mMovieHandle ); - -		return (F64)curr_time / (F64)scale; -	}; - -	void setVolume( F64 volume ) -	{ -		mCurVolume = (short)(volume * ( double ) 0x100 ); - -		if ( mMovieController ) -		{ -			MCDoAction( mMovieController, mcActionSetVolume, (void*)mCurVolume ); -		}; -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// -	void update(int milliseconds = 0) -	{ -		updateQuickTime(milliseconds); -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// -	void mouseDown( int x, int y ) -	{ -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// -	void mouseUp( int x, int y ) -	{ -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// -	void mouseMove( int x, int y ) -	{ -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// -	void keyPress( unsigned char key ) -	{ -	}; - -	//////////////////////////////////////////////////////////////////////////////// -	// Grab movie title into mMovieTitle - should be called repeatedly -	// until it returns true since movie title takes a while to become  -	// available. -	const bool getMovieTitle() -	{ -		// grab meta data from movie -		QTMetaDataRef media_data_ref; -		OSErr result = QTCopyMovieMetaData( mMovieHandle, &media_data_ref ); -		if ( noErr != result )  -			return false; - -		// look up "Display Name" in meta data -		OSType meta_data_key = kQTMetaDataCommonKeyDisplayName; -		QTMetaDataItem item = kQTMetaDataItemUninitialized; -		result = (OSErr)QTMetaDataGetNextItem( media_data_ref, kQTMetaDataStorageFormatWildcard,  -										0, kQTMetaDataKeyFormatCommon,  -										(const UInt8 *)&meta_data_key,  -										sizeof( meta_data_key ), &item ); -		if ( noErr != result )  -			return false; - -		// find the size of the title -		ByteCount size; -		result = (OSErr)QTMetaDataGetItemValue( media_data_ref, item, NULL, 0, &size ); -		if ( noErr != result || size <= 0 /*|| size > 1024  FIXME: arbitrary limit */ )  -			return false; - -		// allocate some space and grab it -		UInt8* item_data = new UInt8[ size + 1 ]; -		memset( item_data, 0, ( size + 1 ) * sizeof( UInt8 ) ); -		result = (OSErr)QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL ); -		if ( noErr != result )  -		{ -			delete [] item_data; -			return false; -		}; - -		// save it -		if ( strlen( (char*)item_data ) ) -			mMovieTitle = std::string( (char* )item_data ); -		else -			mMovieTitle = ""; - -		// clean up -		delete [] item_data; - -		return true; -	}; - -	// called regularly to see if title changed -	void checkTitle() -	{ -		// we did already receive title so keep checking -		if ( ! mReceivedTitle ) -		{ -			// grab title from movie meta data -			if ( getMovieTitle() ) -			{ -				// pass back to host application -				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text"); -				message.setValue("name", mMovieTitle ); -				sendMessage( message ); - -				// stop looking once we find a title for this movie. -				// TODO: this may to be reset if movie title changes -				// during playback but this is okay for now -				mReceivedTitle = true; -			}; -		}; -	}; -}; - -MediaPluginQuickTime::MediaPluginQuickTime( -	LLPluginInstance::sendMessageFunction host_send_func, -	void *host_user_data ) : -	MediaPluginBase(host_send_func, host_user_data), -	mMinWidth( 0 ), -	mMaxWidth( 2048 ), -	mMinHeight( 0 ), -	mMaxHeight( 2048 ) -{ -//	std::cerr << "MediaPluginQuickTime constructor" << std::endl; - -	mNaturalWidth = -1; -	mNaturalHeight = -1; -	mMovieHandle = 0; -	mGWorldHandle = 0; -	mMovieController = 0; -	mCurVolume = 0x99; -	mMediaSizeChanging = false; -	mIsLooping = false; -	mMovieTitle = std::string(); -	mReceivedTitle = false; -	mCommand = COMMAND_NONE; -	mPlayRate = 0.0f; -	mStatus = STATUS_NONE; -} - -MediaPluginQuickTime::~MediaPluginQuickTime() -{ -//	std::cerr << "MediaPluginQuickTime destructor" << std::endl; - -	ExitMovies(); - -#ifdef LL_WINDOWS -	TerminateQTML(); -//		std::cerr << "QuickTime closing down" << std::endl; -#endif -} - - -void MediaPluginQuickTime::receiveMessage(const char *message_string) -{ -//	std::cerr << "MediaPluginQuickTime::receiveMessage: received message: \"" << message_string << "\"" << std::endl; -	LLPluginMessage message_in; - -	if(message_in.parse(message_string) >= 0) -	{ -		std::string message_class = message_in.getClass(); -		std::string message_name = message_in.getName(); -		if(message_class == LLPLUGIN_MESSAGE_CLASS_BASE) -		{ -			if(message_name == "init") -			{ -				LLPluginMessage message("base", "init_response"); -				LLSD versions = LLSD::emptyMap(); -				versions[LLPLUGIN_MESSAGE_CLASS_BASE] = LLPLUGIN_MESSAGE_CLASS_BASE_VERSION; -				versions[LLPLUGIN_MESSAGE_CLASS_MEDIA] = LLPLUGIN_MESSAGE_CLASS_MEDIA_VERSION; -				// Normally a plugin would only specify one of these two subclasses, but this is a demo... -				versions[LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME] = LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME_VERSION; -				message.setValueLLSD("versions", versions); - -				#ifdef LL_WINDOWS - -				// QuickTime 7.6.4 has an issue (that was not present in 7.6.2) with initializing QuickTime -				// according to this article: http://lists.apple.com/archives/QuickTime-API/2009/Sep/msg00097.html -				// The solution presented there appears to work. -				QTLoadLibrary("qtcf.dll"); - -				// main initialization for QuickTime - only required on Windows -				OSErr result = InitializeQTML( 0L ); -				if ( result != noErr ) -				{ -					//TODO: If no QT on Windows, this fails - respond accordingly. -				} -				else -				{ -					//std::cerr << "QuickTime initialized" << std::endl; -				}; -				#endif - -				// required for both Windows and Mac -				EnterMovies(); - -				std::string plugin_version = "QuickTime media plugin, QuickTime version "; - -				long version = 0; -				Gestalt( gestaltQuickTimeVersion, &version ); -				std::ostringstream codec( "" ); -				codec << std::hex << version << std::dec; -				plugin_version += codec.str(); -				message.setValue("plugin_version", plugin_version); -				sendMessage(message); -			} -			else if(message_name == "idle") -			{ -				// no response is necessary here. -				F64 time = message_in.getValueReal("time"); - -				// Convert time to milliseconds for update() -				update((int)(time * 1000.0f)); -			} -			else if(message_name == "cleanup") -			{ -				// TODO: clean up here -			} -			else if(message_name == "shm_added") -			{ -				SharedSegmentInfo info; -				info.mAddress = message_in.getValuePointer("address"); -				info.mSize = (size_t)message_in.getValueS32("size"); -				std::string name = message_in.getValue("name"); -//				std::cerr << "MediaPluginQuickTime::receiveMessage: shared memory added, name: " << name -//					<< ", size: " << info.mSize -//					<< ", address: " << info.mAddress -//					<< std::endl; - -				mSharedSegments.insert(SharedSegmentMap::value_type(name, info)); - -			} -			else if(message_name == "shm_remove") -			{ -				std::string name = message_in.getValue("name"); - -//				std::cerr << "MediaPluginQuickTime::receiveMessage: shared memory remove, name = " << name << std::endl; - -				SharedSegmentMap::iterator iter = mSharedSegments.find(name); -				if(iter != mSharedSegments.end()) -				{ -					if(mPixels == iter->second.mAddress) -					{ -						// This is the currently active pixel buffer.  Make sure we stop drawing to it. -						mPixels = NULL; -						mTextureSegmentName.clear(); - -						// Make sure the movie GWorld is no longer pointed at the shared segment. -						sizeChanged(); -					} -					mSharedSegments.erase(iter); -				} -				else -				{ -//					std::cerr << "MediaPluginQuickTime::receiveMessage: unknown shared memory region!" << std::endl; -				} - -				// Send the response so it can be cleaned up. -				LLPluginMessage message("base", "shm_remove_response"); -				message.setValue("name", name); -				sendMessage(message); -			} -			else -			{ -//				std::cerr << "MediaPluginQuickTime::receiveMessage: unknown base message: " << message_name << std::endl; -			} -		} -		else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) -		{ -			if(message_name == "init") -			{ -				// This is the media init message -- all necessary data for initialization should have been received. - -				// Plugin gets to decide the texture parameters to use. -				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params"); -				#if defined(LL_WINDOWS) -					// Values for Windows -					mDepth = 3; -					message.setValueU32("format", GL_RGB); -					message.setValueU32("type", GL_UNSIGNED_BYTE); - -					// We really want to pad the texture width to a multiple of 32 bytes, but since we're using 3-byte pixels, it doesn't come out even. -					// Padding to a multiple of 3*32 guarantees it'll divide out properly. -					message.setValueU32("padding", 32 * 3); -				#else -					// Values for Mac -					mDepth = 4; -					message.setValueU32("format", GL_BGRA_EXT); -					#ifdef __BIG_ENDIAN__ -						message.setValueU32("type", GL_UNSIGNED_INT_8_8_8_8_REV ); -					#else -						message.setValueU32("type", GL_UNSIGNED_INT_8_8_8_8); -					#endif - -					// Pad texture width to a multiple of 32 bytes, to line up with cache lines. -					message.setValueU32("padding", 32); -				#endif -				message.setValueS32("depth", mDepth); -				message.setValueU32("internalformat", GL_RGB); - -                // note this apparently only has an effect when media is opened in 2D browser.  -                // see https://jira.secondlife.com/browse/BUG-18252 - media flipped in 2D so flipping it back. -				message.setValueBoolean("coords_opengl", true);	// true == use OpenGL-style coordinates, false == (0,0) is upper left. -				message.setValueBoolean("allow_downsample", true); -				sendMessage(message); -			} -			else if(message_name == "size_change") -			{ -				std::string name = message_in.getValue("name"); -				S32 width = message_in.getValueS32("width"); -				S32 height = message_in.getValueS32("height"); -				S32 texture_width = message_in.getValueS32("texture_width"); -				S32 texture_height = message_in.getValueS32("texture_height"); - -				//std::cerr << "---->Got size change instruction from application with name: " << name << " - size is " << width << " x " << height << std::endl; - -				LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response"); -				message.setValue("name", name); -				message.setValueS32("width", width); -				message.setValueS32("height", height); -				message.setValueS32("texture_width", texture_width); -				message.setValueS32("texture_height", texture_height); -				sendMessage(message); - -				if(!name.empty()) -				{ -					// Find the shared memory region with this name -					SharedSegmentMap::iterator iter = mSharedSegments.find(name); -					if(iter != mSharedSegments.end()) -					{ -//						std::cerr << "%%% Got size change, new size is " << width << " by " << height << std::endl; -//						std::cerr << "%%%%  texture size is " << texture_width << " by " << texture_height << std::endl; - -						mPixels = (unsigned char*)iter->second.mAddress; -						mTextureSegmentName = name; -						mWidth = width; -						mHeight = height; - -						mTextureWidth = texture_width; -						mTextureHeight = texture_height; - -						mMediaSizeChanging = false; - -						sizeChanged(); - -						update(); -					}; -				}; -			} -			else if(message_name == "load_uri") -			{ -				std::string uri = message_in.getValue("uri"); -				load( uri ); -				sendStatus(); -			} -			else if(message_name == "mouse_event") -			{ -				std::string event = message_in.getValue("event"); -				S32 x = message_in.getValueS32("x"); -				S32 y = message_in.getValueS32("y"); - -				if(event == "down") -				{ -					mouseDown(x, y); -				} -				else if(event == "up") -				{ -					mouseUp(x, y); -				} -				else if(event == "move") -				{ -					mouseMove(x, y); -				}; -			}; -		} -		else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME) -		{ -			if(message_name == "stop") -			{ -				stop(); -			} -			else if(message_name == "start") -			{ -				F64 rate = 0.0; -				if(message_in.hasValue("rate")) -				{ -					rate = message_in.getValueReal("rate"); -				} -				play(rate); -			} -			else if(message_name == "pause") -			{ -				pause(); -			} -			else if(message_name == "seek") -			{ -				F64 time = message_in.getValueReal("time"); -				seek(time); -			} -			else if(message_name == "set_loop") -			{ -				bool loop = message_in.getValueBoolean("loop"); -				mIsLooping = loop; -			} -			else if(message_name == "set_volume") -			{ -				F64 volume = message_in.getValueReal("volume"); -				setVolume(volume); -			} -		} -		else -		{ -//			std::cerr << "MediaPluginQuickTime::receiveMessage: unknown message class: " << message_class << std::endl; -		}; -	}; -} - -int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) -{ -	MediaPluginQuickTime *self = new MediaPluginQuickTime(host_send_func, host_user_data); -	*plugin_send_func = MediaPluginQuickTime::staticReceiveMessage; -	*plugin_user_data = (void*)self; - -	return 0; -} - -#else // LL_QUICKTIME_ENABLED - -// Stubbed-out class with constructor/destructor (necessary or windows linker -// will just think its dead code and optimize it all out) -class MediaPluginQuickTime : public MediaPluginBase -{ -public: -	MediaPluginQuickTime(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data); -	~MediaPluginQuickTime(); -	/* virtual */ void receiveMessage(const char *message_string); -}; - -MediaPluginQuickTime::MediaPluginQuickTime( -	LLPluginInstance::sendMessageFunction host_send_func, -	void *host_user_data ) : -	MediaPluginBase(host_send_func, host_user_data) -{ -    // no-op -} - -MediaPluginQuickTime::~MediaPluginQuickTime() -{ -    // no-op -} - -void MediaPluginQuickTime::receiveMessage(const char *message_string) -{ -    // no-op -} - -// We're building without quicktime enabled.  Just refuse to initialize. -int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) -{ -    return -1; -} - -#endif // LL_QUICKTIME_ENABLED diff --git a/indra/media_plugins/winmmshim/CMakeLists.txt b/indra/media_plugins/winmmshim/CMakeLists.txt deleted file mode 100644 index 6890589892..0000000000 --- a/indra/media_plugins/winmmshim/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# -*- cmake -*- - -project(winmm_shim) - -### winmm_shim -# *HACK - override msvcrt implementation (intialized on 00-Common) to be -# statically linked for winmm.dll this relies on vc taking the last flag on -# the command line -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") - -set(winmm_shim_SOURCE_FILES -    forwarding_api.cpp -    winmm_shim.cpp -    ) - -set(winmm_shim_HEADER_FILES -    forwarding_api.h -    winmm.def -    ) - -list(APPEND winmm_shim_SOURCE_FILES ${winmm_shim_HEADER_FILES}) - -add_library(winmm_shim -    SHARED -    ${winmm_shim_SOURCE_FILES} -) - -if (WINDOWS) -  set_target_properties( -    winmm_shim -    PROPERTIES -    LINK_FLAGS "/MANIFEST:NO" -    OUTPUT_NAME "winmm" -    ) -endif (WINDOWS) diff --git a/indra/media_plugins/winmmshim/forwarding_api.cpp b/indra/media_plugins/winmmshim/forwarding_api.cpp deleted file mode 100644 index 33f0675028..0000000000 --- a/indra/media_plugins/winmmshim/forwarding_api.cpp +++ /dev/null @@ -1,1627 +0,0 @@ -/**  - * @file forwarding_api.cpp - * @brief forwards winmm API calls to real winmm.dll - * - * $LicenseInfo:firstyear=2010&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 "forwarding_api.h" - -CloseDriver_type CloseDriver_orig; -OpenDriver_type OpenDriver_orig; -SendDriverMessage_type SendDriverMessage_orig; -DrvGetModuleHandle_type DrvGetModuleHandle_orig; -GetDriverModuleHandle_type GetDriverModuleHandle_orig; -DefDriverProc_type DefDriverProc_orig; -DriverCallback_type DriverCallback_orig; -mmsystemGetVersion_type mmsystemGetVersion_orig; -sndPlaySoundA_type sndPlaySoundA_orig; -sndPlaySoundW_type sndPlaySoundW_orig; -PlaySoundA_type PlaySoundA_orig; -PlaySoundW_type PlaySoundW_orig; -waveOutGetNumDevs_type waveOutGetNumDevs_orig; -waveOutGetDevCapsA_type waveOutGetDevCapsA_orig; -waveOutGetDevCapsW_type waveOutGetDevCapsW_orig; -waveOutGetVolume_type waveOutGetVolume_orig; -waveOutSetVolume_type waveOutSetVolume_orig; -waveOutGetErrorTextA_type waveOutGetErrorTextA_orig; -waveOutGetErrorTextW_type waveOutGetErrorTextW_orig; -waveOutOpen_type waveOutOpen_orig; -waveOutClose_type waveOutClose_orig; -waveOutPrepareHeader_type waveOutPrepareHeader_orig; -waveOutUnprepareHeader_type waveOutUnprepareHeader_orig; -waveOutWrite_type waveOutWrite_orig; -waveOutPause_type waveOutPause_orig; -waveOutRestart_type waveOutRestart_orig; -waveOutReset_type waveOutReset_orig; -waveOutBreakLoop_type waveOutBreakLoop_orig; -waveOutGetPosition_type waveOutGetPosition_orig; -waveOutGetPitch_type waveOutGetPitch_orig; -waveOutSetPitch_type waveOutSetPitch_orig; -waveOutGetPlaybackRate_type waveOutGetPlaybackRate_orig; -waveOutSetPlaybackRate_type waveOutSetPlaybackRate_orig; -waveOutGetID_type waveOutGetID_orig; -waveOutMessage_type waveOutMessage_orig; -waveInGetNumDevs_type waveInGetNumDevs_orig; -waveInGetDevCapsA_type waveInGetDevCapsA_orig; -waveInGetDevCapsW_type waveInGetDevCapsW_orig; -waveInGetErrorTextA_type waveInGetErrorTextA_orig; -waveInGetErrorTextW_type waveInGetErrorTextW_orig; -waveInOpen_type waveInOpen_orig; -waveInClose_type waveInClose_orig; -waveInPrepareHeader_type waveInPrepareHeader_orig; -waveInUnprepareHeader_type waveInUnprepareHeader_orig; -waveInAddBuffer_type waveInAddBuffer_orig; -waveInStart_type waveInStart_orig; -waveInStop_type waveInStop_orig; -waveInReset_type waveInReset_orig; -waveInGetPosition_type waveInGetPosition_orig; -waveInGetID_type waveInGetID_orig; -waveInMessage_type waveInMessage_orig; -midiOutGetNumDevs_type midiOutGetNumDevs_orig; -midiStreamOpen_type midiStreamOpen_orig; -midiStreamClose_type midiStreamClose_orig; -midiStreamProperty_type midiStreamProperty_orig; -midiStreamPosition_type midiStreamPosition_orig; -midiStreamOut_type midiStreamOut_orig; -midiStreamPause_type midiStreamPause_orig; -midiStreamRestart_type midiStreamRestart_orig; -midiStreamStop_type midiStreamStop_orig; -midiConnect_type midiConnect_orig; -midiDisconnect_type midiDisconnect_orig; -midiOutGetDevCapsA_type midiOutGetDevCapsA_orig; -midiOutGetDevCapsW_type midiOutGetDevCapsW_orig; -midiOutGetVolume_type midiOutGetVolume_orig; -midiOutSetVolume_type midiOutSetVolume_orig; -midiOutGetErrorTextA_type midiOutGetErrorTextA_orig; -midiOutGetErrorTextW_type midiOutGetErrorTextW_orig; -midiOutOpen_type midiOutOpen_orig; -midiOutClose_type midiOutClose_orig; -midiOutPrepareHeader_type midiOutPrepareHeader_orig; -midiOutUnprepareHeader_type midiOutUnprepareHeader_orig; -midiOutShortMsg_type midiOutShortMsg_orig; -midiOutLongMsg_type midiOutLongMsg_orig; -midiOutReset_type midiOutReset_orig; -midiOutCachePatches_type midiOutCachePatches_orig; -midiOutCacheDrumPatches_type midiOutCacheDrumPatches_orig; -midiOutGetID_type midiOutGetID_orig; -midiOutMessage_type midiOutMessage_orig; -midiInGetNumDevs_type midiInGetNumDevs_orig; -midiInGetDevCapsA_type midiInGetDevCapsA_orig; -midiInGetDevCapsW_type midiInGetDevCapsW_orig; -midiInGetErrorTextA_type midiInGetErrorTextA_orig; -midiInGetErrorTextW_type midiInGetErrorTextW_orig; -midiInOpen_type midiInOpen_orig; -midiInClose_type midiInClose_orig; -midiInPrepareHeader_type midiInPrepareHeader_orig; -midiInUnprepareHeader_type midiInUnprepareHeader_orig; -midiInAddBuffer_type midiInAddBuffer_orig; -midiInStart_type midiInStart_orig; -midiInStop_type midiInStop_orig; -midiInReset_type midiInReset_orig; -midiInGetID_type midiInGetID_orig; -midiInMessage_type midiInMessage_orig; -auxGetNumDevs_type auxGetNumDevs_orig; -auxGetDevCapsA_type auxGetDevCapsA_orig; -auxGetDevCapsW_type auxGetDevCapsW_orig; -auxSetVolume_type auxSetVolume_orig; -auxGetVolume_type auxGetVolume_orig; -auxOutMessage_type auxOutMessage_orig; -mixerGetNumDevs_type mixerGetNumDevs_orig; -mixerGetDevCapsA_type mixerGetDevCapsA_orig; -mixerGetDevCapsW_type mixerGetDevCapsW_orig; -mixerOpen_type mixerOpen_orig; -mixerClose_type mixerClose_orig; -mixerMessage_type mixerMessage_orig; -mixerGetLineInfoA_type mixerGetLineInfoA_orig; -mixerGetLineInfoW_type mixerGetLineInfoW_orig; -mixerGetID_type mixerGetID_orig; -mixerGetLineControlsA_type mixerGetLineControlsA_orig; -mixerGetLineControlsW_type mixerGetLineControlsW_orig; -mixerGetControlDetailsA_type mixerGetControlDetailsA_orig; -mixerGetControlDetailsW_type mixerGetControlDetailsW_orig; -mixerSetControlDetails_type mixerSetControlDetails_orig; -mmGetCurrentTask_type mmGetCurrentTask_orig; -mmTaskBlock_type mmTaskBlock_orig; -mmTaskCreate_type mmTaskCreate_orig; -mmTaskSignal_type mmTaskSignal_orig; -mmTaskYield_type mmTaskYield_orig; -timeGetSystemTime_type timeGetSystemTime_orig; -timeGetTime_type timeGetTime_orig; -timeSetEvent_type timeSetEvent_orig; -timeKillEvent_type timeKillEvent_orig; -timeGetDevCaps_type timeGetDevCaps_orig; -timeBeginPeriod_type timeBeginPeriod_orig; -timeEndPeriod_type timeEndPeriod_orig; -joyGetNumDevs_type joyGetNumDevs_orig; -joyConfigChanged_type joyConfigChanged_orig; -joyGetDevCapsA_type joyGetDevCapsA_orig; -joyGetDevCapsW_type joyGetDevCapsW_orig; -joyGetPos_type joyGetPos_orig; -joyGetPosEx_type joyGetPosEx_orig; -joyGetThreshold_type joyGetThreshold_orig; -joyReleaseCapture_type joyReleaseCapture_orig; -joySetCapture_type joySetCapture_orig; -joySetThreshold_type joySetThreshold_orig; -mmioStringToFOURCCA_type mmioStringToFOURCCA_orig; -mmioStringToFOURCCW_type mmioStringToFOURCCW_orig; -mmioInstallIOProcA_type mmioInstallIOProcA_orig; -mmioInstallIOProcW_type mmioInstallIOProcW_orig; -mmioOpenA_type mmioOpenA_orig; -mmioOpenW_type mmioOpenW_orig; -mmioRenameA_type mmioRenameA_orig; -mmioRenameW_type mmioRenameW_orig; -mmioClose_type mmioClose_orig; -mmioRead_type mmioRead_orig; -mmioWrite_type mmioWrite_orig; -mmioSeek_type mmioSeek_orig; -mmioGetInfo_type mmioGetInfo_orig; -mmioSetInfo_type mmioSetInfo_orig; -mmioSetBuffer_type mmioSetBuffer_orig; -mmioFlush_type mmioFlush_orig; -mmioAdvance_type mmioAdvance_orig; -mmioSendMessage_type mmioSendMessage_orig; -mmioDescend_type mmioDescend_orig; -mmioAscend_type mmioAscend_orig; -mmioCreateChunk_type mmioCreateChunk_orig; -mciSendCommandA_type mciSendCommandA_orig; -mciSendCommandW_type mciSendCommandW_orig; -mciSendStringA_type mciSendStringA_orig; -mciSendStringW_type mciSendStringW_orig; -mciGetDeviceIDA_type mciGetDeviceIDA_orig; -mciGetDeviceIDW_type mciGetDeviceIDW_orig; -mciGetDeviceIDFromElementIDA_type mciGetDeviceIDFromElementIDA_orig; -mciGetDeviceIDFromElementIDW_type mciGetDeviceIDFromElementIDW_orig; -mciGetDriverData_type mciGetDriverData_orig; -mciGetErrorStringA_type mciGetErrorStringA_orig; -mciGetErrorStringW_type mciGetErrorStringW_orig; -mciSetDriverData_type mciSetDriverData_orig; -mciDriverNotify_type mciDriverNotify_orig; -mciDriverYield_type mciDriverYield_orig; -mciSetYieldProc_type mciSetYieldProc_orig; -mciFreeCommandResource_type mciFreeCommandResource_orig; -mciGetCreatorTask_type mciGetCreatorTask_orig; -mciGetYieldProc_type mciGetYieldProc_orig; -mciLoadCommandResource_type mciLoadCommandResource_orig; -mciExecute_type mciExecute_orig; - -// grab pointers to function calls in the real DLL -void init_function_pointers(HMODULE winmm_handle) -{	 -	CloseDriver_orig = (CloseDriver_type)::GetProcAddress(winmm_handle, "CloseDriver"); -	OpenDriver_orig = (OpenDriver_type)::GetProcAddress(winmm_handle, "OpenDriver"); -	SendDriverMessage_orig = (SendDriverMessage_type)::GetProcAddress(winmm_handle, "SendDriverMessage"); -	DrvGetModuleHandle_orig = (DrvGetModuleHandle_type)::GetProcAddress(winmm_handle, "DrvGetModuleHandle"); -	GetDriverModuleHandle_orig = (GetDriverModuleHandle_type)::GetProcAddress(winmm_handle, "GetDriverModuleHandle"); -	DefDriverProc_orig = (DefDriverProc_type)::GetProcAddress(winmm_handle, "DefDriverProc"); -	DriverCallback_orig = (DriverCallback_type)::GetProcAddress(winmm_handle, "DriverCallback"); -	mmsystemGetVersion_orig = (mmsystemGetVersion_type)::GetProcAddress(winmm_handle, "mmsystemGetVersion"); -	sndPlaySoundA_orig = (sndPlaySoundA_type)::GetProcAddress(winmm_handle, "sndPlaySoundA"); -	sndPlaySoundW_orig = (sndPlaySoundW_type)::GetProcAddress(winmm_handle, "sndPlaySoundW"); -	PlaySoundA_orig = (PlaySoundA_type)::GetProcAddress(winmm_handle, "PlaySoundA"); -	PlaySoundW_orig = (PlaySoundW_type)::GetProcAddress(winmm_handle, "PlaySoundW"); -	waveOutGetNumDevs_orig = (waveOutGetNumDevs_type)::GetProcAddress(winmm_handle, "waveOutGetNumDevs"); -	waveOutGetDevCapsA_orig = (waveOutGetDevCapsA_type)::GetProcAddress(winmm_handle, "waveOutGetDevCapsA"); -	waveOutGetDevCapsW_orig = (waveOutGetDevCapsW_type)::GetProcAddress(winmm_handle, "waveOutGetDevCapsW"); -	waveOutGetVolume_orig = (waveOutGetVolume_type)::GetProcAddress(winmm_handle, "waveOutGetVolume"); -	waveOutSetVolume_orig = (waveOutSetVolume_type)::GetProcAddress(winmm_handle, "waveOutSetVolume"); -	waveOutGetErrorTextA_orig = (waveOutGetErrorTextA_type)::GetProcAddress(winmm_handle, "waveOutGetErrorTextA"); -	waveOutGetErrorTextW_orig = (waveOutGetErrorTextW_type)::GetProcAddress(winmm_handle, "waveOutGetErrorTextW"); -	waveOutOpen_orig = (waveOutOpen_type)::GetProcAddress(winmm_handle, "waveOutOpen"); -	waveOutClose_orig = (waveOutClose_type)::GetProcAddress(winmm_handle, "waveOutClose"); -	waveOutPrepareHeader_orig = (waveOutPrepareHeader_type)::GetProcAddress(winmm_handle, "waveOutPrepareHeader"); -	waveOutUnprepareHeader_orig = (waveOutUnprepareHeader_type)::GetProcAddress(winmm_handle, "waveOutUnprepareHeader"); -	waveOutWrite_orig = (waveOutWrite_type)::GetProcAddress(winmm_handle, "waveOutWrite"); -	waveOutPause_orig = (waveOutPause_type)::GetProcAddress(winmm_handle, "waveOutPause"); -	waveOutRestart_orig = (waveOutRestart_type)::GetProcAddress(winmm_handle, "waveOutRestart"); -	waveOutReset_orig = (waveOutReset_type)::GetProcAddress(winmm_handle, "waveOutReset"); -	waveOutBreakLoop_orig = (waveOutBreakLoop_type)::GetProcAddress(winmm_handle, "waveOutBreakLoop"); -	waveOutGetPosition_orig = (waveOutGetPosition_type)::GetProcAddress(winmm_handle, "waveOutGetPosition"); -	waveOutGetPitch_orig = (waveOutGetPitch_type)::GetProcAddress(winmm_handle, "waveOutGetPitch"); -	waveOutSetPitch_orig = (waveOutSetPitch_type)::GetProcAddress(winmm_handle, "waveOutSetPitch"); -	waveOutGetPlaybackRate_orig = (waveOutGetPlaybackRate_type)::GetProcAddress(winmm_handle, "waveOutGetPlaybackRate"); -	waveOutSetPlaybackRate_orig = (waveOutSetPlaybackRate_type)::GetProcAddress(winmm_handle, "waveOutSetPlaybackRate"); -	waveOutGetID_orig = (waveOutGetID_type)::GetProcAddress(winmm_handle, "waveOutGetID"); -	waveOutMessage_orig = (waveOutMessage_type)::GetProcAddress(winmm_handle, "waveOutMessage"); -	waveInGetNumDevs_orig = (waveInGetNumDevs_type)::GetProcAddress(winmm_handle, "waveInGetNumDevs"); -	waveInGetDevCapsA_orig = (waveInGetDevCapsA_type)::GetProcAddress(winmm_handle, "waveInGetDevCapsA"); -	waveInGetDevCapsW_orig = (waveInGetDevCapsW_type)::GetProcAddress(winmm_handle, "waveInGetDevCapsW"); -	waveInGetErrorTextA_orig = (waveInGetErrorTextA_type)::GetProcAddress(winmm_handle, "waveInGetErrorTextA"); -	waveInGetErrorTextW_orig = (waveInGetErrorTextW_type)::GetProcAddress(winmm_handle, "waveInGetErrorTextW"); -	waveInOpen_orig = (waveInOpen_type)::GetProcAddress(winmm_handle, "waveInOpen"); -	waveInClose_orig = (waveInClose_type)::GetProcAddress(winmm_handle, "waveInClose"); -	waveInPrepareHeader_orig = (waveInPrepareHeader_type)::GetProcAddress(winmm_handle, "waveInPrepareHeader"); -	waveInUnprepareHeader_orig = (waveInUnprepareHeader_type)::GetProcAddress(winmm_handle, "waveInUnprepareHeader"); -	waveInAddBuffer_orig = (waveInAddBuffer_type)::GetProcAddress(winmm_handle, "waveInAddBuffer"); -	waveInStart_orig = (waveInStart_type)::GetProcAddress(winmm_handle, "waveInStart"); -	waveInStop_orig = (waveInStop_type)::GetProcAddress(winmm_handle, "waveInStop"); -	waveInReset_orig = (waveInReset_type)::GetProcAddress(winmm_handle, "waveInReset"); -	waveInGetPosition_orig = (waveInGetPosition_type)::GetProcAddress(winmm_handle, "waveInGetPosition"); -	waveInGetID_orig = (waveInGetID_type)::GetProcAddress(winmm_handle, "waveInGetID"); -	waveInMessage_orig = (waveInMessage_type)::GetProcAddress(winmm_handle, "waveInMessage"); -	midiOutGetNumDevs_orig = (midiOutGetNumDevs_type)::GetProcAddress(winmm_handle, "midiOutGetNumDevs"); -	midiStreamOpen_orig = (midiStreamOpen_type)::GetProcAddress(winmm_handle, "midiStreamOpen"); -	midiStreamClose_orig = (midiStreamClose_type)::GetProcAddress(winmm_handle, "midiStreamClose"); -	midiStreamProperty_orig = (midiStreamProperty_type)::GetProcAddress(winmm_handle, "midiStreamProperty"); -	midiStreamPosition_orig = (midiStreamPosition_type)::GetProcAddress(winmm_handle, "midiStreamPosition"); -	midiStreamOut_orig = (midiStreamOut_type)::GetProcAddress(winmm_handle, "midiStreamOut"); -	midiStreamPause_orig = (midiStreamPause_type)::GetProcAddress(winmm_handle, "midiStreamPause"); -	midiStreamRestart_orig = (midiStreamRestart_type)::GetProcAddress(winmm_handle, "midiStreamRestart"); -	midiStreamStop_orig = (midiStreamStop_type)::GetProcAddress(winmm_handle, "midiStreamStop"); -	midiConnect_orig = (midiConnect_type)::GetProcAddress(winmm_handle, "midiConnect"); -	midiDisconnect_orig = (midiDisconnect_type)::GetProcAddress(winmm_handle, "midiDisconnect"); -	midiOutGetDevCapsA_orig = (midiOutGetDevCapsA_type)::GetProcAddress(winmm_handle, "midiOutGetDevCapsA"); -	midiOutGetDevCapsW_orig = (midiOutGetDevCapsW_type)::GetProcAddress(winmm_handle, "midiOutGetDevCapsW"); -	midiOutGetVolume_orig = (midiOutGetVolume_type)::GetProcAddress(winmm_handle, "midiOutGetVolume"); -	midiOutSetVolume_orig = (midiOutSetVolume_type)::GetProcAddress(winmm_handle, "midiOutSetVolume"); -	midiOutGetErrorTextA_orig = (midiOutGetErrorTextA_type)::GetProcAddress(winmm_handle, "midiOutGetErrorTextA"); -	midiOutGetErrorTextW_orig = (midiOutGetErrorTextW_type)::GetProcAddress(winmm_handle, "midiOutGetErrorTextW"); -	midiOutOpen_orig = (midiOutOpen_type)::GetProcAddress(winmm_handle, "midiOutOpen"); -	midiOutClose_orig = (midiOutClose_type)::GetProcAddress(winmm_handle, "midiOutClose"); -	midiOutPrepareHeader_orig = (midiOutPrepareHeader_type)::GetProcAddress(winmm_handle, "midiOutPrepareHeader"); -	midiOutUnprepareHeader_orig = (midiOutUnprepareHeader_type)::GetProcAddress(winmm_handle, "midiOutUnprepareHeader"); -	midiOutShortMsg_orig = (midiOutShortMsg_type)::GetProcAddress(winmm_handle, "midiOutShortMsg"); -	midiOutLongMsg_orig = (midiOutLongMsg_type)::GetProcAddress(winmm_handle, "midiOutLongMsg"); -	midiOutReset_orig = (midiOutReset_type)::GetProcAddress(winmm_handle, "midiOutReset"); -	midiOutCachePatches_orig = (midiOutCachePatches_type)::GetProcAddress(winmm_handle, "midiOutCachePatches"); -	midiOutCacheDrumPatches_orig = (midiOutCacheDrumPatches_type)::GetProcAddress(winmm_handle, "midiOutCacheDrumPatches"); -	midiOutGetID_orig = (midiOutGetID_type)::GetProcAddress(winmm_handle, "midiOutGetID"); -	midiOutMessage_orig = (midiOutMessage_type)::GetProcAddress(winmm_handle, "midiOutMessage"); -	midiInGetNumDevs_orig = (midiInGetNumDevs_type)::GetProcAddress(winmm_handle, "midiInGetNumDevs"); -	midiInGetDevCapsA_orig = (midiInGetDevCapsA_type)::GetProcAddress(winmm_handle, "midiInGetDevCapsA"); -	midiInGetDevCapsW_orig = (midiInGetDevCapsW_type)::GetProcAddress(winmm_handle, "midiInGetDevCapsW"); -	midiInGetErrorTextA_orig = (midiInGetErrorTextA_type)::GetProcAddress(winmm_handle, "midiInGetErrorTextA"); -	midiInGetErrorTextW_orig = (midiInGetErrorTextW_type)::GetProcAddress(winmm_handle, "midiInGetErrorTextW"); -	midiInOpen_orig = (midiInOpen_type)::GetProcAddress(winmm_handle, "midiInOpen"); -	midiInClose_orig = (midiInClose_type)::GetProcAddress(winmm_handle, "midiInClose"); -	midiInPrepareHeader_orig = (midiInPrepareHeader_type)::GetProcAddress(winmm_handle, "midiInPrepareHeader"); -	midiInUnprepareHeader_orig = (midiInUnprepareHeader_type)::GetProcAddress(winmm_handle, "midiInUnprepareHeader"); -	midiInAddBuffer_orig = (midiInAddBuffer_type)::GetProcAddress(winmm_handle, "midiInAddBuffer"); -	midiInStart_orig = (midiInStart_type)::GetProcAddress(winmm_handle, "midiInStart"); -	midiInStop_orig = (midiInStop_type)::GetProcAddress(winmm_handle, "midiInStop"); -	midiInReset_orig = (midiInReset_type)::GetProcAddress(winmm_handle, "midiInReset"); -	midiInGetID_orig = (midiInGetID_type)::GetProcAddress(winmm_handle, "midiInGetID"); -	midiInMessage_orig = (midiInMessage_type)::GetProcAddress(winmm_handle, "midiInMessage"); -	auxGetNumDevs_orig = (auxGetNumDevs_type)::GetProcAddress(winmm_handle, "auxGetNumDevs"); -	auxGetDevCapsA_orig = (auxGetDevCapsA_type)::GetProcAddress(winmm_handle, "auxGetDevCapsA"); -	auxGetDevCapsW_orig = (auxGetDevCapsW_type)::GetProcAddress(winmm_handle, "auxGetDevCapsW"); -	auxSetVolume_orig = (auxSetVolume_type)::GetProcAddress(winmm_handle, "auxSetVolume"); -	auxGetVolume_orig = (auxGetVolume_type)::GetProcAddress(winmm_handle, "auxGetVolume"); -	auxOutMessage_orig = (auxOutMessage_type)::GetProcAddress(winmm_handle, "auxOutMessage"); -	mixerGetNumDevs_orig = (mixerGetNumDevs_type)::GetProcAddress(winmm_handle, "mixerGetNumDevs"); -	mixerGetDevCapsA_orig = (mixerGetDevCapsA_type)::GetProcAddress(winmm_handle, "mixerGetDevCapsA"); -	mixerGetDevCapsW_orig = (mixerGetDevCapsW_type)::GetProcAddress(winmm_handle, "mixerGetDevCapsW"); -	mixerOpen_orig = (mixerOpen_type)::GetProcAddress(winmm_handle, "mixerOpen"); -	mixerClose_orig = (mixerClose_type)::GetProcAddress(winmm_handle, "mixerClose"); -	mixerMessage_orig = (mixerMessage_type)::GetProcAddress(winmm_handle, "mixerMessage"); -	mixerGetLineInfoA_orig = (mixerGetLineInfoA_type)::GetProcAddress(winmm_handle, "mixerGetLineInfoA"); -	mixerGetLineInfoW_orig = (mixerGetLineInfoW_type)::GetProcAddress(winmm_handle, "mixerGetLineInfoW"); -	mixerGetID_orig = (mixerGetID_type)::GetProcAddress(winmm_handle, "mixerGetID"); -	mixerGetLineControlsA_orig = (mixerGetLineControlsA_type)::GetProcAddress(winmm_handle, "mixerGetLineControlsA"); -	mixerGetLineControlsW_orig = (mixerGetLineControlsW_type)::GetProcAddress(winmm_handle, "mixerGetLineControlsW"); -	mixerGetControlDetailsA_orig = (mixerGetControlDetailsA_type)::GetProcAddress(winmm_handle, "mixerGetControlDetailsA"); -	mixerGetControlDetailsW_orig = (mixerGetControlDetailsW_type)::GetProcAddress(winmm_handle, "mixerGetControlDetailsW"); -	mixerSetControlDetails_orig = (mixerSetControlDetails_type)::GetProcAddress(winmm_handle, "mixerSetControlDetails"); -	mmGetCurrentTask_orig = (mmGetCurrentTask_type)::GetProcAddress(winmm_handle, "mmGetCurrentTask"); -	mmTaskBlock_orig = (mmTaskBlock_type)::GetProcAddress(winmm_handle, "mmTaskBlock"); -	mmTaskCreate_orig = (mmTaskCreate_type)::GetProcAddress(winmm_handle, "mmTaskCreate"); -	mmTaskSignal_orig = (mmTaskSignal_type)::GetProcAddress(winmm_handle, "mmTaskSignal"); -	mmTaskYield_orig = (mmTaskYield_type)::GetProcAddress(winmm_handle, "mmTaskYield"); -	timeGetSystemTime_orig = (timeGetSystemTime_type)::GetProcAddress(winmm_handle, "timeGetSystemTime"); -	timeGetTime_orig = (timeGetTime_type)::GetProcAddress(winmm_handle, "timeGetTime"); -	timeSetEvent_orig = (timeSetEvent_type)::GetProcAddress(winmm_handle, "timeSetEvent"); -	timeKillEvent_orig = (timeKillEvent_type)::GetProcAddress(winmm_handle, "timeKillEvent"); -	timeGetDevCaps_orig = (timeGetDevCaps_type)::GetProcAddress(winmm_handle, "timeGetDevCaps"); -	timeBeginPeriod_orig = (timeBeginPeriod_type)::GetProcAddress(winmm_handle, "timeBeginPeriod"); -	timeEndPeriod_orig = (timeEndPeriod_type)::GetProcAddress(winmm_handle, "timeEndPeriod"); -	joyGetNumDevs_orig = (joyGetNumDevs_type)::GetProcAddress(winmm_handle, "joyGetNumDevs"); -	joyConfigChanged_orig = (joyConfigChanged_type)::GetProcAddress(winmm_handle, "joyConfigChanged"); -	joyGetDevCapsA_orig = (joyGetDevCapsA_type)::GetProcAddress(winmm_handle, "joyGetDevCapsA"); -	joyGetDevCapsW_orig = (joyGetDevCapsW_type)::GetProcAddress(winmm_handle, "joyGetDevCapsW"); -	joyGetPos_orig = (joyGetPos_type)::GetProcAddress(winmm_handle, "joyGetPos"); -	joyGetPosEx_orig = (joyGetPosEx_type)::GetProcAddress(winmm_handle, "joyGetPosEx"); -	joyGetThreshold_orig = (joyGetThreshold_type)::GetProcAddress(winmm_handle, "joyGetThreshold"); -	joyReleaseCapture_orig = (joyReleaseCapture_type)::GetProcAddress(winmm_handle, "joyReleaseCapture"); -	joySetCapture_orig = (joySetCapture_type)::GetProcAddress(winmm_handle, "joySetCapture"); -	joySetThreshold_orig = (joySetThreshold_type)::GetProcAddress(winmm_handle, "joySetThreshold"); -	mciDriverNotify_orig = (mciDriverNotify_type)::GetProcAddress(winmm_handle, "mciDriverNotify"); -	mciDriverYield_orig = (mciDriverYield_type)::GetProcAddress(winmm_handle, "mciDriverYield"); -	mmioStringToFOURCCA_orig = (mmioStringToFOURCCA_type)::GetProcAddress(winmm_handle, "mmioStringToFOURCCA"); -	mmioStringToFOURCCW_orig = (mmioStringToFOURCCW_type)::GetProcAddress(winmm_handle, "mmioStringToFOURCCW"); -	mmioInstallIOProcA_orig = (mmioInstallIOProcA_type)::GetProcAddress(winmm_handle, "mmioInstallIOProcA"); -	mmioInstallIOProcW_orig = (mmioInstallIOProcW_type)::GetProcAddress(winmm_handle, "mmioInstallIOProcW"); -	mmioOpenA_orig = (mmioOpenA_type)::GetProcAddress(winmm_handle, "mmioOpenA"); -	mmioOpenW_orig = (mmioOpenW_type)::GetProcAddress(winmm_handle, "mmioOpenW"); -	mmioRenameA_orig = (mmioRenameA_type)::GetProcAddress(winmm_handle, "mmioRenameA"); -	mmioRenameW_orig = (mmioRenameW_type)::GetProcAddress(winmm_handle, "mmioRenameW"); -	mmioClose_orig = (mmioClose_type)::GetProcAddress(winmm_handle, "mmioClose"); -	mmioRead_orig = (mmioRead_type)::GetProcAddress(winmm_handle, "mmioRead"); -	mmioWrite_orig = (mmioWrite_type)::GetProcAddress(winmm_handle, "mmioWrite"); -	mmioSeek_orig = (mmioSeek_type)::GetProcAddress(winmm_handle, "mmioSeek"); -	mmioGetInfo_orig = (mmioGetInfo_type)::GetProcAddress(winmm_handle, "mmioGetInfo"); -	mmioSetInfo_orig = (mmioSetInfo_type)::GetProcAddress(winmm_handle, "mmioSetInfo"); -	mmioSetBuffer_orig = (mmioSetBuffer_type)::GetProcAddress(winmm_handle, "mmioSetBuffer"); -	mmioFlush_orig = (mmioFlush_type)::GetProcAddress(winmm_handle, "mmioFlush"); -	mmioAdvance_orig = (mmioAdvance_type)::GetProcAddress(winmm_handle, "mmioAdvance"); -	mmioSendMessage_orig = (mmioSendMessage_type)::GetProcAddress(winmm_handle, "mmioSendMessage"); -	mmioDescend_orig = (mmioDescend_type)::GetProcAddress(winmm_handle, "mmioDescend"); -	mmioAscend_orig = (mmioAscend_type)::GetProcAddress(winmm_handle, "mmioAscend"); -	mmioCreateChunk_orig = (mmioCreateChunk_type)::GetProcAddress(winmm_handle, "mmioCreateChunk"); -	mciSendCommandA_orig = (mciSendCommandA_type)::GetProcAddress(winmm_handle, "mciSendCommandA"); -	mciSendCommandW_orig = (mciSendCommandW_type)::GetProcAddress(winmm_handle, "mciSendCommandW"); -	mciSendStringA_orig = (mciSendStringA_type)::GetProcAddress(winmm_handle, "mciSendStringA"); -	mciSendStringW_orig = (mciSendStringW_type)::GetProcAddress(winmm_handle, "mciSendStringW"); -	mciGetDeviceIDA_orig = (mciGetDeviceIDA_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDA"); -	mciGetDeviceIDW_orig = (mciGetDeviceIDW_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDW"); -	mciGetDeviceIDFromElementIDA_orig = (mciGetDeviceIDFromElementIDA_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDFromElementIDA"); -	mciGetDeviceIDFromElementIDW_orig = (mciGetDeviceIDFromElementIDW_type)::GetProcAddress(winmm_handle, "mciGetDeviceIDFromElementIDW"); -	mciGetDriverData_orig = (mciGetDriverData_type)::GetProcAddress(winmm_handle, "mciGetDriverData"); -	mciGetErrorStringA_orig = (mciGetErrorStringA_type)::GetProcAddress(winmm_handle, "mciGetErrorStringA"); -	mciGetErrorStringW_orig = (mciGetErrorStringW_type)::GetProcAddress(winmm_handle, "mciGetErrorStringW"); -	mciSetDriverData_orig = (mciSetDriverData_type)::GetProcAddress(winmm_handle, "mciSetDriverData"); -	mciSetYieldProc_orig = (mciSetYieldProc_type)::GetProcAddress(winmm_handle, "mciSetYieldProc"); -	mciFreeCommandResource_orig = (mciFreeCommandResource_type)::GetProcAddress(winmm_handle, "mciFreeCommandResource"); -	mciGetCreatorTask_orig = (mciGetCreatorTask_type)::GetProcAddress(winmm_handle, "mciGetCreatorTask"); -	mciGetYieldProc_orig = (mciGetYieldProc_type)::GetProcAddress(winmm_handle, "mciGetYieldProc"); -	mciLoadCommandResource_orig = (mciLoadCommandResource_type)::GetProcAddress(winmm_handle, "mciLoadCommandResource"); -	mciExecute_orig = (mciExecute_type)::GetProcAddress(winmm_handle, "mciExecute"); -} - -extern "C" { -	LRESULT   WINAPI CloseDriver( HDRVR hDriver, LPARAM lParam1, LPARAM lParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"CloseDriver\n"); -		return CloseDriver_orig( hDriver, lParam1, lParam2); -	} - -	HDRVR     WINAPI OpenDriver( LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"OpenDriver\n"); -		return OpenDriver_orig( szDriverName, szSectionName, lParam2); -	} - -	LRESULT   WINAPI SendDriverMessage( HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"SendDriverMessage\n"); -		return SendDriverMessage_orig( hDriver, message, lParam1, lParam2); -	} - -	HMODULE   WINAPI DrvGetModuleHandle( HDRVR hDriver) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"DrvGetModuleHandle\n"); -		return DrvGetModuleHandle_orig( hDriver); -	} - -	HMODULE   WINAPI GetDriverModuleHandle( HDRVR hDriver) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"GetDriverModuleHandle\n"); -		return GetDriverModuleHandle_orig( hDriver); -	} - -	LRESULT   WINAPI DefDriverProc( DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"DefDriverProc\n"); -		return DefDriverProc_orig( dwDriverIdentifier, hdrvr, uMsg, lParam1, lParam2); -	} - -	BOOL WINAPI DriverCallback( DWORD dwCallBack, DWORD dwFlags, HDRVR hdrvr, DWORD msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"DriverCallback\n"); -		return DriverCallback_orig(dwCallBack, dwFlags, hdrvr, msg, dwUser, dwParam1, dwParam2); -	} - -	UINT WINAPI mmsystemGetVersion(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmsystemGetVersion\n"); -		return mmsystemGetVersion_orig(); -	} - -	BOOL WINAPI sndPlaySoundA( LPCSTR pszSound, UINT fuSound) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"sndPlaySoundA\n"); -		return sndPlaySoundA_orig( pszSound, fuSound); -	} - -	BOOL WINAPI sndPlaySoundW( LPCWSTR pszSound, UINT fuSound) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"sndPlaySoundW\n"); -		return sndPlaySoundW_orig( pszSound, fuSound); -	} - -	BOOL WINAPI PlaySoundA( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"PlaySoundA\n"); -		return PlaySoundA_orig( pszSound, hmod, fdwSound); -	} - -	BOOL WINAPI PlaySoundW( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"PlaySoundW\n"); -		return PlaySoundW_orig( pszSound, hmod, fdwSound); -	} - -	UINT WINAPI waveOutGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetNumDevs\n"); -		return waveOutGetNumDevs_orig(); -	} - -	MMRESULT WINAPI waveOutGetDevCapsA( UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetDevCapsA\n"); -		return waveOutGetDevCapsA_orig( uDeviceID, pwoc, cbwoc); -	} - -	MMRESULT WINAPI waveOutGetDevCapsW( UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetDevCapsW\n"); -		return waveOutGetDevCapsW_orig( uDeviceID, pwoc, cbwoc); -	} - - -	MMRESULT WINAPI waveOutGetVolume( HWAVEOUT hwo, LPDWORD pdwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetVolume\n"); -		return waveOutGetVolume_orig( hwo, pdwVolume); -	} - -	MMRESULT WINAPI waveOutSetVolume( HWAVEOUT hwo, DWORD dwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutSetVolume\n"); -		return waveOutSetVolume_orig( hwo, dwVolume); -	} - -	MMRESULT WINAPI waveOutGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetErrorTextA\n"); -		return waveOutGetErrorTextA_orig( mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI waveOutGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetErrorTextW\n"); -		return waveOutGetErrorTextW_orig( mmrError, pszText, cchText); -	} - -	//MMRESULT WINAPI waveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	//{ -	//	//OutputDebugString(L"waveOutGetErrorTextW\n"); -	//	return waveOutOpen_orig( phwo, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen); -	//} - -	//MMRESULT WINAPI waveOutClose( HWAVEOUT hwo) -	//{ -	//	//OutputDebugString(L"waveOutGetErrorTextW\n"); -	//	return waveOutClose_orig( hwo ); -	//} - -	MMRESULT WINAPI waveOutPrepareHeader( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutPrepareHeader\n"); -		return waveOutPrepareHeader_orig( hwo, pwh, cbwh); -	} - -	MMRESULT WINAPI waveOutUnprepareHeader( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutUnprepareHeader\n"); -		return waveOutUnprepareHeader_orig( hwo, pwh, cbwh); -	} - - -	//MMRESULT WINAPI waveOutWrite( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh) -	//{ -	//	//OutputDebugString(L"waveOutUnprepareHeader\n"); -	//	return waveOutWrite_orig( hwo, pwh, cbwh); -	//} - -	MMRESULT WINAPI waveOutPause( HWAVEOUT hwo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutPause\n"); -		return waveOutPause_orig( hwo); -	} - -	MMRESULT WINAPI waveOutRestart( HWAVEOUT hwo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutRestart\n"); -		return waveOutRestart_orig( hwo); -	} - -	MMRESULT WINAPI waveOutReset( HWAVEOUT hwo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutReset\n"); -		return waveOutReset_orig( hwo); -	} - -	MMRESULT WINAPI waveOutBreakLoop( HWAVEOUT hwo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutBreakLoop\n"); -		return waveOutBreakLoop_orig( hwo); -	} - -	MMRESULT WINAPI waveOutGetPosition( HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetPosition\n"); -		return waveOutGetPosition_orig( hwo, pmmt, cbmmt); -	} - -	MMRESULT WINAPI waveOutGetPitch( HWAVEOUT hwo, LPDWORD pdwPitch) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetPitch\n"); -		return waveOutGetPitch_orig( hwo, pdwPitch); -	} - -	MMRESULT WINAPI waveOutSetPitch( HWAVEOUT hwo, DWORD dwPitch) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutSetPitch\n"); -		return waveOutSetPitch_orig( hwo, dwPitch); -	} - -	MMRESULT WINAPI waveOutGetPlaybackRate( HWAVEOUT hwo, LPDWORD pdwRate) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetPlaybackRate\n"); -		return waveOutGetPlaybackRate_orig( hwo, pdwRate); -	} - -	MMRESULT WINAPI waveOutSetPlaybackRate( HWAVEOUT hwo, DWORD dwRate) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutSetPlaybackRate\n"); -		return waveOutSetPlaybackRate_orig( hwo, dwRate); -	} - -	MMRESULT WINAPI waveOutGetID( HWAVEOUT hwo, LPUINT puDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutGetID\n"); -		return waveOutGetID_orig( hwo, puDeviceID); -	} - -	MMRESULT WINAPI waveOutMessage( HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveOutMessage\n"); -		return waveOutMessage_orig( hwo, uMsg, dw1, dw2); -	} - -	UINT WINAPI waveInGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetNumDevs\n"); -		return waveInGetNumDevs_orig(); -	} - -	MMRESULT WINAPI waveInGetDevCapsA( UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetDevCapsA\n"); -		return waveInGetDevCapsA_orig( uDeviceID, pwic, cbwic); -	} - -	MMRESULT WINAPI waveInGetDevCapsW( UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetDevCapsW\n"); -		return waveInGetDevCapsW_orig( uDeviceID, pwic, cbwic); -	} - -	MMRESULT WINAPI waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetErrorTextA\n"); -		return waveInGetErrorTextA_orig(mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetErrorTextW\n"); -		return waveInGetErrorTextW_orig(mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI waveInOpen( LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInOpen\n"); -		return waveInOpen_orig(phwi, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen); -	} - -	MMRESULT WINAPI waveInClose( HWAVEIN hwi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInClose\n"); -		return waveInClose_orig( hwi); -	} - -	MMRESULT WINAPI waveInPrepareHeader( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInPrepareHeader\n"); -		return waveInPrepareHeader_orig( hwi, pwh, cbwh); -	} - -	MMRESULT WINAPI waveInUnprepareHeader( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInUnprepareHeader\n"); -		return waveInUnprepareHeader_orig( hwi, pwh, cbwh); -	} - -	MMRESULT WINAPI waveInAddBuffer( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInAddBuffer\n"); -		return waveInAddBuffer_orig( hwi, pwh, cbwh); -	} - -	MMRESULT WINAPI waveInStart( HWAVEIN hwi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInStart\n"); -		return waveInStart_orig( hwi); -	} - -	MMRESULT WINAPI waveInStop( HWAVEIN hwi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInStop\n"); -		return waveInStop_orig(hwi); -	} - -	MMRESULT WINAPI waveInReset( HWAVEIN hwi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInReset\n"); -		return waveInReset_orig(hwi); -	} - -	MMRESULT WINAPI waveInGetPosition( HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetPosition\n"); -		return waveInGetPosition_orig( hwi, pmmt, cbmmt); -	} - -	MMRESULT WINAPI waveInGetID( HWAVEIN hwi, LPUINT puDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInGetID\n"); -		return waveInGetID_orig( hwi, puDeviceID); -	} - -	MMRESULT WINAPI waveInMessage( HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"waveInMessage\n"); -		return waveInMessage_orig( hwi, uMsg, dw1, dw2); -	} - -	UINT WINAPI midiOutGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetNumDevs\n"); -		return midiOutGetNumDevs_orig(); -	} - -	MMRESULT WINAPI midiStreamOpen( LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamOpen\n"); -		return midiStreamOpen_orig( phms, puDeviceID, cMidi, dwCallback, dwInstance, fdwOpen); -	} - -	MMRESULT WINAPI midiStreamClose( HMIDISTRM hms) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamClose\n"); -		return midiStreamClose_orig( hms); -	} - -	MMRESULT WINAPI midiStreamProperty( HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamProperty\n"); -		return midiStreamProperty_orig( hms, lppropdata, dwProperty); -	} - -	MMRESULT WINAPI midiStreamPosition( HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamPosition\n"); -		return midiStreamPosition_orig( hms, lpmmt, cbmmt); -	} - -	MMRESULT WINAPI midiStreamOut( HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamOut\n"); -		return midiStreamOut_orig( hms, pmh, cbmh); -	} - -	MMRESULT WINAPI midiStreamPause( HMIDISTRM hms) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamPause\n"); -		return midiStreamPause_orig( hms); -	} - -	MMRESULT WINAPI midiStreamRestart( HMIDISTRM hms) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamRestart\n"); -		return midiStreamRestart_orig( hms); -	} - -	MMRESULT WINAPI midiStreamStop( HMIDISTRM hms) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiStreamStop\n"); -		return midiStreamStop_orig( hms); -	} - -	MMRESULT WINAPI midiConnect( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiConnect\n"); -		return midiConnect_orig( hmi, hmo, pReserved); -	} - -	MMRESULT WINAPI midiDisconnect( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiDisconnect\n"); -		return midiDisconnect_orig( hmi, hmo, pReserved); -	} - -	MMRESULT WINAPI midiOutGetDevCapsA( UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetDevCapsA\n"); -		return midiOutGetDevCapsA_orig( uDeviceID, pmoc, cbmoc); -	} - -	MMRESULT WINAPI midiOutGetDevCapsW( UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetDevCapsW\n"); -		return midiOutGetDevCapsW_orig( uDeviceID, pmoc, cbmoc); -	} - -	MMRESULT WINAPI midiOutGetVolume( HMIDIOUT hmo, LPDWORD pdwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetVolume\n"); -		return midiOutGetVolume_orig( hmo, pdwVolume); -	} - -	MMRESULT WINAPI midiOutSetVolume( HMIDIOUT hmo, DWORD dwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutSetVolume\n"); -		return midiOutSetVolume_orig( hmo, dwVolume); -	} - -	MMRESULT WINAPI midiOutGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetErrorTextA\n"); -		return midiOutGetErrorTextA_orig( mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI midiOutGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetErrorTextW\n"); -		return midiOutGetErrorTextW_orig( mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI midiOutOpen( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutOpen\n"); -		return midiOutOpen_orig(phmo, uDeviceID, dwCallback, dwInstance, fdwOpen); -	} - -	MMRESULT WINAPI midiOutClose( HMIDIOUT hmo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutClose\n"); -		return midiOutClose_orig( hmo); -	} - -	MMRESULT WINAPI midiOutPrepareHeader( HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutPrepareHeader\n"); -		return midiOutPrepareHeader_orig( hmo, pmh, cbmh); -	} - -	MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutUnprepareHeader\n"); -		return midiOutUnprepareHeader_orig(hmo, pmh, cbmh); -	} - -	MMRESULT WINAPI midiOutShortMsg( HMIDIOUT hmo, DWORD dwMsg) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutShortMsg\n"); -		return midiOutShortMsg_orig( hmo, dwMsg); -	} - -	MMRESULT WINAPI midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutLongMsg\n"); -		return midiOutLongMsg_orig(hmo, pmh, cbmh); -	} - -	MMRESULT WINAPI midiOutReset( HMIDIOUT hmo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutReset\n"); -		return midiOutReset_orig( hmo); -	} - -	MMRESULT WINAPI midiOutCachePatches( HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutCachePatches\n"); -		return midiOutCachePatches_orig( hmo, uBank, pwpa, fuCache); -	} - -	MMRESULT WINAPI midiOutCacheDrumPatches( HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutCacheDrumPatches\n"); -		return midiOutCacheDrumPatches_orig( hmo, uPatch, pwkya, fuCache); -	} - -	MMRESULT WINAPI midiOutGetID( HMIDIOUT hmo, LPUINT puDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutGetID\n"); -		return midiOutGetID_orig( hmo, puDeviceID); -	} - -	MMRESULT WINAPI midiOutMessage( HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiOutMessage\n"); -		return midiOutMessage_orig( hmo, uMsg, dw1, dw2); -	} - -	UINT WINAPI midiInGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetNumDevs\n"); -		return midiInGetNumDevs_orig(); -	} - -	MMRESULT WINAPI midiInGetDevCapsA( UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetDevCapsA\n"); -		return midiInGetDevCapsA_orig( uDeviceID, pmic, cbmic); -	} - -	MMRESULT WINAPI midiInGetDevCapsW( UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetDevCapsW\n"); -		return midiInGetDevCapsW_orig( uDeviceID, pmic, cbmic); -	} - -	MMRESULT WINAPI midiInGetErrorTextA( MMRESULT mmrError, LPSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetErrorTextA\n"); -		return midiInGetErrorTextA_orig( mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI midiInGetErrorTextW( MMRESULT mmrError, LPWSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetErrorTextW\n"); -		return midiInGetErrorTextW_orig( mmrError, pszText, cchText); -	} - -	MMRESULT WINAPI midiInOpen( LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInOpen\n"); -		return midiInOpen_orig(phmi, uDeviceID, dwCallback, dwInstance, fdwOpen); -	} - -	MMRESULT WINAPI midiInClose( HMIDIIN hmi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInClose\n"); -		return midiInClose_orig( hmi); -	} - -	MMRESULT WINAPI midiInPrepareHeader( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInPrepareHeader\n"); -		return midiInPrepareHeader_orig( hmi, pmh, cbmh); -	} - -	MMRESULT WINAPI midiInUnprepareHeader( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInUnprepareHeader\n"); -		return midiInUnprepareHeader_orig( hmi, pmh, cbmh); -	} - -	MMRESULT WINAPI midiInAddBuffer( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInAddBuffer\n"); -		return midiInAddBuffer_orig( hmi, pmh, cbmh); -	} - -	MMRESULT WINAPI midiInStart( HMIDIIN hmi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInStart\n"); -		return midiInStart_orig( hmi); -	} - -	MMRESULT WINAPI midiInStop( HMIDIIN hmi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInStop\n"); -		return midiInStop_orig(hmi); -	} - -	MMRESULT WINAPI midiInReset( HMIDIIN hmi) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInReset\n"); -		return midiInReset_orig( hmi); -	} - -	MMRESULT WINAPI midiInGetID( HMIDIIN hmi, LPUINT puDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInGetID\n"); -		return midiInGetID_orig( hmi, puDeviceID); -	} - -	MMRESULT WINAPI midiInMessage( HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"midiInMessage\n"); -		return midiInMessage_orig( hmi, uMsg, dw1, dw2); -	} - -	UINT WINAPI auxGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxGetNumDevs\n"); -		return auxGetNumDevs_orig(); -	} - -	MMRESULT WINAPI auxGetDevCapsA( UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxGetDevCapsA\n"); -		return auxGetDevCapsA_orig( uDeviceID, pac, cbac); -	} - -	MMRESULT WINAPI auxGetDevCapsW( UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxGetDevCapsW\n"); -		return auxGetDevCapsW_orig( uDeviceID, pac, cbac); -	} - -	MMRESULT WINAPI auxSetVolume( UINT uDeviceID, DWORD dwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxSetVolume\n"); -		return auxSetVolume_orig( uDeviceID, dwVolume); -	} - -	MMRESULT WINAPI auxGetVolume( UINT uDeviceID, LPDWORD pdwVolume) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxGetVolume\n"); -		return auxGetVolume_orig( uDeviceID, pdwVolume); -	} - -	MMRESULT WINAPI auxOutMessage( UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"auxOutMessage\n"); -		return auxOutMessage_orig( uDeviceID, uMsg, dw1, dw2); -	} - -	UINT WINAPI mixerGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetNumDevs\n"); -		return mixerGetNumDevs_orig(); -	} - -	MMRESULT WINAPI mixerGetDevCapsA( UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetDevCapsA\n"); -		return mixerGetDevCapsA_orig( uMxId, pmxcaps, cbmxcaps); -	} - -	MMRESULT WINAPI mixerGetDevCapsW( UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetDevCapsW\n"); -		return mixerGetDevCapsW_orig( uMxId, pmxcaps, cbmxcaps); -	} - -	MMRESULT WINAPI mixerOpen( LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerOpen\n"); -		return mixerOpen_orig( phmx, uMxId, dwCallback, dwInstance, fdwOpen); -	} - -	MMRESULT WINAPI mixerClose( HMIXER hmx) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerClose\n"); -		return mixerClose_orig( hmx); -	} - -	DWORD WINAPI mixerMessage( HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerMessage\n"); -		return mixerMessage_orig( hmx, uMsg, dwParam1, dwParam2); -	} - -	MMRESULT WINAPI mixerGetLineInfoA( HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetLineInfoA\n"); -		return mixerGetLineInfoA_orig( hmxobj, pmxl, fdwInfo); -	} - -	MMRESULT WINAPI mixerGetLineInfoW( HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetLineInfoW\n"); -		return mixerGetLineInfoW_orig( hmxobj, pmxl, fdwInfo); -	} - -	MMRESULT WINAPI mixerGetID( HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetID\n"); -		return mixerGetID_orig( hmxobj, puMxId, fdwId); -	} - -	MMRESULT WINAPI mixerGetLineControlsA( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetLineControlsA\n"); -		return mixerGetLineControlsA_orig( hmxobj, pmxlc, fdwControls); -	} - -	MMRESULT WINAPI mixerGetLineControlsW( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetLineControlsW\n"); -		return mixerGetLineControlsW_orig( hmxobj, pmxlc, fdwControls); -	} - -	MMRESULT WINAPI mixerGetControlDetailsA( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetControlDetailsA\n"); -		return mixerGetControlDetailsA_orig( hmxobj, pmxcd, fdwDetails); -	} - -	MMRESULT WINAPI mixerGetControlDetailsW( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerGetControlDetailsW\n"); -		return mixerGetControlDetailsW_orig( hmxobj, pmxcd, fdwDetails); -	} - -	MMRESULT WINAPI mixerSetControlDetails( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mixerSetControlDetails\n"); -		return mixerSetControlDetails_orig( hmxobj, pmxcd, fdwDetails); -	} - -	DWORD    WINAPI mmGetCurrentTask(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmGetCurrentTask\n"); -		return mmGetCurrentTask_orig(); -	} - -	void WINAPI mmTaskBlock(DWORD val) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmTaskBlock\n"); -		return mmTaskBlock_orig(val); -	} - -	UINT WINAPI mmTaskCreate(LPTASKCALLBACK a, HANDLE* b, DWORD_PTR c) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmTaskCreate\n"); -		return mmTaskCreate_orig(a, b, c); -	} - -	BOOL WINAPI mmTaskSignal(DWORD a) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmTaskSignal\n"); -		return mmTaskSignal_orig(a); -	} - -	VOID WINAPI mmTaskYield() -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmTaskYield\n"); -		mmTaskYield_orig(); -	} - -	MMRESULT WINAPI timeGetSystemTime( LPMMTIME pmmt, UINT cbmmt) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeGetSystemTime\n"); -		return timeGetSystemTime_orig( pmmt, cbmmt); -	} - -	DWORD WINAPI timeGetTime(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeGetTime\n"); -		return timeGetTime_orig(); -	} - -	MMRESULT WINAPI timeSetEvent( UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeSetEvent\n"); -		return timeSetEvent_orig(uDelay, uResolution, fptc, dwUser, fuEvent); -	} - -	MMRESULT WINAPI timeKillEvent( UINT uTimerID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeKillEvent\n"); -		return timeKillEvent_orig( uTimerID); -	} - -	MMRESULT WINAPI timeGetDevCaps( LPTIMECAPS ptc, UINT cbtc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeGetDevCaps\n"); -		return timeGetDevCaps_orig( ptc, cbtc); -	} - -	MMRESULT WINAPI timeBeginPeriod( UINT uPeriod) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeBeginPeriod\n"); -		return timeBeginPeriod_orig( uPeriod); -	} - -	MMRESULT WINAPI timeEndPeriod( UINT uPeriod) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"timeEndPeriod\n"); -		return timeEndPeriod_orig( uPeriod); -	} - -	UINT WINAPI joyGetNumDevs(void) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetNumDevs\n"); -		return joyGetNumDevs_orig(); -	} - -	MMRESULT WINAPI joyConfigChanged(DWORD dwFlags) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyConfigChanged\n"); -		return joyConfigChanged_orig(dwFlags); -	} - -	MMRESULT WINAPI joyGetDevCapsA( UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetDevCapsA\n"); -		return joyGetDevCapsA_orig( uJoyID, pjc, cbjc); -	} - -	MMRESULT WINAPI joyGetDevCapsW( UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetDevCapsW\n"); -		return joyGetDevCapsW_orig( uJoyID, pjc, cbjc); -	} - -	MMRESULT WINAPI joyGetPos( UINT uJoyID, LPJOYINFO pji) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetPos\n"); -		return joyGetPos_orig( uJoyID, pji); -	} - -	MMRESULT WINAPI joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetPosEx\n"); -		return joyGetPosEx_orig( uJoyID, pji); -	} - -	MMRESULT WINAPI joyGetThreshold( UINT uJoyID, LPUINT puThreshold) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyGetThreshold\n"); -		return joyGetThreshold_orig( uJoyID, puThreshold); -	} - -	MMRESULT WINAPI joyReleaseCapture( UINT uJoyID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joyReleaseCapture\n"); -		return joyReleaseCapture_orig( uJoyID); -	} - -	MMRESULT WINAPI joySetCapture( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joySetCapture\n"); -		return joySetCapture_orig(hwnd, uJoyID, uPeriod, fChanged); -	} - -	MMRESULT WINAPI joySetThreshold( UINT uJoyID, UINT uThreshold) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"joySetThreshold\n"); -		return joySetThreshold_orig( uJoyID, uThreshold); -	} - -	BOOL WINAPI mciDriverNotify(HANDLE hwndCallback, MCIDEVICEID uDeviceID, UINT uStatus) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciDriverNotify\n"); -		return mciDriverNotify_orig(hwndCallback, uDeviceID, uStatus); -	} - -	UINT WINAPI  mciDriverYield(UINT uDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciDriverYield\n"); -		return mciDriverYield_orig(uDeviceID); -	}	 - -	FOURCC WINAPI mmioStringToFOURCCA( LPCSTR sz, UINT uFlags) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioStringToFOURCCA\n"); -		return mmioStringToFOURCCA_orig( sz, uFlags); -	} - -	FOURCC WINAPI mmioStringToFOURCCW( LPCWSTR sz, UINT uFlags) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioStringToFOURCCW\n"); -		return mmioStringToFOURCCW_orig( sz, uFlags); -	} - -	LPMMIOPROC WINAPI mmioInstallIOProcA( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioInstallIOProcA\n"); -		return mmioInstallIOProcA_orig( fccIOProc, pIOProc, dwFlags); -	} - -	LPMMIOPROC WINAPI mmioInstallIOProcW( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioInstallIOProcW\n"); -		return mmioInstallIOProcW_orig( fccIOProc, pIOProc, dwFlags); -	} - -	HMMIO WINAPI mmioOpenA( LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioOpenA\n"); -		return mmioOpenA_orig( pszFileName, pmmioinfo, fdwOpen); -	} - -	HMMIO WINAPI mmioOpenW( LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioOpenW\n"); -		return mmioOpenW_orig( pszFileName, pmmioinfo, fdwOpen); -	} - -	MMRESULT WINAPI mmioRenameA( LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioRenameA\n"); -		return mmioRenameA_orig( pszFileName, pszNewFileName, pmmioinfo, fdwRename); -	} - -	MMRESULT WINAPI mmioRenameW( LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioRenameW\n"); -		return mmioRenameW_orig( pszFileName, pszNewFileName, pmmioinfo, fdwRename); -	} - -	MMRESULT WINAPI mmioClose( HMMIO hmmio, UINT fuClose) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioClose\n"); -		return mmioClose_orig( hmmio, fuClose); -	} - -	LONG WINAPI mmioRead( HMMIO hmmio, HPSTR pch, LONG cch) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioRead\n"); -		return mmioRead_orig( hmmio, pch, cch); -	} - -	LONG WINAPI mmioWrite( HMMIO hmmio, const char _huge* pch, LONG cch) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioWrite\n"); -		return mmioWrite_orig( hmmio, pch, cch); -	} - -	LONG WINAPI mmioSeek( HMMIO hmmio, LONG lOffset, int iOrigin) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioSeek\n"); -		return mmioSeek_orig(hmmio, lOffset, iOrigin); -	} - -	MMRESULT WINAPI mmioGetInfo( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioGetInfo\n"); -		return mmioGetInfo_orig( hmmio, pmmioinfo, fuInfo); -	} - -	MMRESULT WINAPI mmioSetInfo( HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioSetInfo\n"); -		return mmioSetInfo_orig( hmmio, pmmioinfo, fuInfo); -	} - -	MMRESULT WINAPI mmioSetBuffer( HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioSetBuffer\n"); -		return mmioSetBuffer_orig(hmmio, pchBuffer, cchBuffer, fuBuffer); -	} - -	MMRESULT WINAPI mmioFlush( HMMIO hmmio, UINT fuFlush) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioFlush\n"); -		return mmioFlush_orig( hmmio, fuFlush); -	} - -	MMRESULT WINAPI mmioAdvance( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioAdvance\n"); -		return mmioAdvance_orig( hmmio, pmmioinfo, fuAdvance); -	} - -	LRESULT WINAPI mmioSendMessage( HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioSendMessage\n"); -		return mmioSendMessage_orig(hmmio, uMsg, lParam1, lParam2); -	} - -	MMRESULT WINAPI mmioDescend( HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioDescend\n"); -		return mmioDescend_orig(hmmio, pmmcki, pmmckiParent, fuDescend); -	} - -	MMRESULT WINAPI mmioAscend( HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioAscend\n"); -		return mmioAscend_orig( hmmio, pmmcki, fuAscend); -	} - -	MMRESULT WINAPI mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mmioCreateChunk\n"); -		return mmioCreateChunk_orig(hmmio, pmmcki, fuCreate); -	} - -	MCIERROR WINAPI mciSendCommandA( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSendCommandA\n"); -		return mciSendCommandA_orig( mciId, uMsg, dwParam1, dwParam2); -	} - -	MCIERROR WINAPI mciSendCommandW( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSendCommandW\n"); -		return mciSendCommandW_orig( mciId, uMsg, dwParam1, dwParam2); -	} - -	MCIERROR  WINAPI mciSendStringA( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSendStringA\n"); -		return mciSendStringA_orig( lpstrCommand, lpstrReturnString, uReturnLength, hwndCallback); -	} - -	MCIERROR  WINAPI mciSendStringW( LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSendStringW\n"); -		return mciSendStringW_orig( lpstrCommand, lpstrReturnString, uReturnLength, hwndCallback); -	} - -	MCIDEVICEID WINAPI mciGetDeviceIDA( LPCSTR pszDevice) -	{ -		//OutputDebugString(L"mciGetDeviceIDA\n"); -		return mciGetDeviceIDA_orig( pszDevice); -	} - -	MCIDEVICEID WINAPI mciGetDeviceIDW( LPCWSTR pszDevice) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetDeviceIDW\n"); -		return mciGetDeviceIDW_orig( pszDevice); -	} - -	MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA( DWORD dwElementID, LPCSTR lpstrType ) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetDeviceIDFromElementIDA\n"); -		return mciGetDeviceIDFromElementIDA_orig( dwElementID, lpstrType ); -	} - -	MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW( DWORD dwElementID, LPCWSTR lpstrType ) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetDeviceIDFromElementIDW\n"); -		return mciGetDeviceIDFromElementIDW_orig( dwElementID, lpstrType ); -	} - -	DWORD_PTR WINAPI  mciGetDriverData(UINT uDeviceID) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetDriverData\n"); -		return mciGetDriverData_orig(uDeviceID); -	} - -	BOOL WINAPI mciGetErrorStringA( MCIERROR mcierr, LPSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetErrorStringA\n"); -		return mciGetErrorStringA_orig( mcierr, pszText, cchText); -	} - -	BOOL WINAPI mciGetErrorStringW( MCIERROR mcierr, LPWSTR pszText, UINT cchText) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetErrorStringW\n"); -		return mciGetErrorStringW_orig( mcierr, pszText, cchText); -	} - -	BOOL WINAPI  mciSetDriverData(UINT uDeviceID, DWORD_PTR dwData) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSetDriverData_type\n"); -		return mciSetDriverData_orig( uDeviceID, dwData ); -	} - -	BOOL WINAPI mciSetYieldProc( MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciSetYieldProc\n"); -		return mciSetYieldProc_orig(mciId, fpYieldProc, dwYieldData); -	} - -	BOOL WINAPI  mciFreeCommandResource(UINT uTable) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciFreeCommandResource\n"); -		return mciFreeCommandResource_orig(uTable); -	} - -	HTASK WINAPI mciGetCreatorTask( MCIDEVICEID mciId) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetCreatorTask\n"); -		return mciGetCreatorTask_orig( mciId); -	} - -	YIELDPROC WINAPI mciGetYieldProc( MCIDEVICEID mciId, LPDWORD pdwYieldData) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciGetYieldProc\n"); -		return mciGetYieldProc_orig( mciId, pdwYieldData); -	} - -	UINT WINAPI mciLoadCommandResource(HANDLE hInstance, LPCWSTR lpResName, UINT uType) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciLoadCommandResource"); -		return mciLoadCommandResource_orig(hInstance, lpResName, uType); -	} -	 - -	BOOL WINAPI mciExecute(LPCSTR pszCommand) -	{ -		ll_winmm_shim_initialize(); -		//OutputDebugString(L"mciExecute\n"); -		return mciExecute_orig(pszCommand); -	} -} diff --git a/indra/media_plugins/winmmshim/forwarding_api.h b/indra/media_plugins/winmmshim/forwarding_api.h deleted file mode 100644 index 1418fc9e1d..0000000000 --- a/indra/media_plugins/winmmshim/forwarding_api.h +++ /dev/null @@ -1,390 +0,0 @@ -/**  - * @file forwarding_api.h - * @brief forwards winmm API calls to real winmm.dll - * - * $LicenseInfo:firstyear=2010&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$ - */ - -// this turns off __declspec(dllimport) for the functions declared in mmsystem.h -#define _WINMM_ -#include <windows.h> -#include <mmsystem.h> - -void init_function_pointers(HMODULE winmm_handle); -void ll_winmm_shim_initialize(); - -typedef VOID (*LPTASKCALLBACK)(DWORD_PTR dwInst); - -typedef LRESULT   (WINAPI *CloseDriver_type)( HDRVR hDriver, LPARAM lParam1, LPARAM lParam2); -extern CloseDriver_type CloseDriver_orig; -typedef HDRVR     (WINAPI *OpenDriver_type)( LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2); -extern OpenDriver_type OpenDriver_orig; -typedef LRESULT   (WINAPI *SendDriverMessage_type)( HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2); -extern SendDriverMessage_type SendDriverMessage_orig; -typedef HMODULE   (WINAPI *DrvGetModuleHandle_type)( HDRVR hDriver); -extern DrvGetModuleHandle_type DrvGetModuleHandle_orig; -typedef HMODULE   (WINAPI *GetDriverModuleHandle_type)( HDRVR hDriver); -extern GetDriverModuleHandle_type GetDriverModuleHandle_orig; -typedef LRESULT   (WINAPI *DefDriverProc_type)( DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2); -extern DefDriverProc_type DefDriverProc_orig; -typedef BOOL (WINAPI *DriverCallback_type)(DWORD dwCallBack, DWORD dwFlags, HDRVR hdrvr, DWORD msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -extern DriverCallback_type DriverCallback_orig; -typedef UINT (WINAPI *mmsystemGetVersion_type)(void); -extern mmsystemGetVersion_type mmsystemGetVersion_orig; -typedef BOOL (WINAPI *sndPlaySoundA_type)( LPCSTR pszSound, UINT fuSound); -extern sndPlaySoundA_type sndPlaySoundA_orig; -typedef BOOL (WINAPI *sndPlaySoundW_type)( LPCWSTR pszSound, UINT fuSound); -extern sndPlaySoundW_type sndPlaySoundW_orig; -typedef BOOL (WINAPI *PlaySoundA_type)( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); -extern PlaySoundA_type PlaySoundA_orig; -typedef BOOL (WINAPI *PlaySoundW_type)( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); -extern PlaySoundW_type PlaySoundW_orig; -typedef UINT (WINAPI *waveOutGetNumDevs_type)(void); -extern waveOutGetNumDevs_type waveOutGetNumDevs_orig; -typedef MMRESULT (WINAPI *waveOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc); -extern waveOutGetDevCapsA_type waveOutGetDevCapsA_orig; -typedef MMRESULT (WINAPI *waveOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc); -extern waveOutGetDevCapsW_type waveOutGetDevCapsW_orig; -typedef MMRESULT (WINAPI *waveOutGetVolume_type)( HWAVEOUT hwo, LPDWORD pdwVolume); -extern waveOutGetVolume_type waveOutGetVolume_orig; -typedef MMRESULT (WINAPI *waveOutSetVolume_type)( HWAVEOUT hwo, DWORD dwVolume); -extern waveOutSetVolume_type waveOutSetVolume_orig; -typedef MMRESULT (WINAPI *waveOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText); -extern waveOutGetErrorTextA_type waveOutGetErrorTextA_orig; -typedef MMRESULT (WINAPI *waveOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText); -extern waveOutGetErrorTextW_type waveOutGetErrorTextW_orig; -typedef MMRESULT (WINAPI *waveOutOpen_type)( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern waveOutOpen_type waveOutOpen_orig; -typedef MMRESULT (WINAPI *waveOutClose_type)( HWAVEOUT hwo); -extern waveOutClose_type waveOutClose_orig; -typedef MMRESULT (WINAPI *waveOutPrepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); -extern waveOutPrepareHeader_type waveOutPrepareHeader_orig; -typedef MMRESULT (WINAPI *waveOutUnprepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); -extern waveOutUnprepareHeader_type waveOutUnprepareHeader_orig; -typedef MMRESULT (WINAPI *waveOutWrite_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); -extern waveOutWrite_type waveOutWrite_orig; -typedef MMRESULT (WINAPI *waveOutPause_type)( HWAVEOUT hwo); -extern waveOutPause_type waveOutPause_orig; -typedef MMRESULT (WINAPI *waveOutRestart_type)( HWAVEOUT hwo); -extern waveOutRestart_type waveOutRestart_orig; -typedef MMRESULT (WINAPI *waveOutReset_type)( HWAVEOUT hwo); -extern waveOutReset_type waveOutReset_orig; -typedef MMRESULT (WINAPI *waveOutBreakLoop_type)( HWAVEOUT hwo); -extern waveOutBreakLoop_type waveOutBreakLoop_orig; -typedef MMRESULT (WINAPI *waveOutGetPosition_type)( HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt); -extern waveOutGetPosition_type waveOutGetPosition_orig; -typedef MMRESULT (WINAPI *waveOutGetPitch_type)( HWAVEOUT hwo, LPDWORD pdwPitch); -extern waveOutGetPitch_type waveOutGetPitch_orig; -typedef MMRESULT (WINAPI *waveOutSetPitch_type)( HWAVEOUT hwo, DWORD dwPitch); -extern waveOutSetPitch_type waveOutSetPitch_orig; -typedef MMRESULT (WINAPI *waveOutGetPlaybackRate_type)( HWAVEOUT hwo, LPDWORD pdwRate); -extern waveOutGetPlaybackRate_type waveOutGetPlaybackRate_orig; -typedef MMRESULT (WINAPI *waveOutSetPlaybackRate_type)( HWAVEOUT hwo, DWORD dwRate); -extern waveOutSetPlaybackRate_type waveOutSetPlaybackRate_orig; -typedef MMRESULT (WINAPI *waveOutGetID_type)( HWAVEOUT hwo, LPUINT puDeviceID); -extern waveOutGetID_type waveOutGetID_orig; -typedef MMRESULT (WINAPI *waveOutMessage_type)( HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); -extern waveOutMessage_type waveOutMessage_orig; -typedef UINT (WINAPI *waveInGetNumDevs_type)(void); -extern waveInGetNumDevs_type waveInGetNumDevs_orig; -typedef MMRESULT (WINAPI *waveInGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic); -extern waveInGetDevCapsA_type waveInGetDevCapsA_orig; -typedef MMRESULT (WINAPI *waveInGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic); -extern waveInGetDevCapsW_type waveInGetDevCapsW_orig; -typedef MMRESULT (WINAPI *waveInGetErrorTextA_type)(MMRESULT mmrError, LPSTR pszText, UINT cchText); -extern waveInGetErrorTextA_type waveInGetErrorTextA_orig; -typedef MMRESULT (WINAPI *waveInGetErrorTextW_type)(MMRESULT mmrError, LPWSTR pszText, UINT cchText); -extern waveInGetErrorTextW_type waveInGetErrorTextW_orig; -typedef MMRESULT (WINAPI *waveInOpen_type)( LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern waveInOpen_type waveInOpen_orig; -typedef MMRESULT (WINAPI *waveInClose_type)( HWAVEIN hwi); -extern waveInClose_type waveInClose_orig; -typedef MMRESULT (WINAPI *waveInPrepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); -extern waveInPrepareHeader_type waveInPrepareHeader_orig; -typedef MMRESULT (WINAPI *waveInUnprepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); -extern waveInUnprepareHeader_type waveInUnprepareHeader_orig; -typedef MMRESULT (WINAPI *waveInAddBuffer_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); -extern waveInAddBuffer_type waveInAddBuffer_orig; -typedef MMRESULT (WINAPI *waveInStart_type)( HWAVEIN hwi); -extern waveInStart_type waveInStart_orig; -typedef MMRESULT (WINAPI *waveInStop_type)( HWAVEIN hwi); -extern waveInStop_type waveInStop_orig; -typedef MMRESULT (WINAPI *waveInReset_type)( HWAVEIN hwi); -extern waveInReset_type waveInReset_orig; -typedef MMRESULT (WINAPI *waveInGetPosition_type)( HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt); -extern waveInGetPosition_type waveInGetPosition_orig; -typedef MMRESULT (WINAPI *waveInGetID_type)( HWAVEIN hwi, LPUINT puDeviceID); -extern waveInGetID_type waveInGetID_orig; -typedef MMRESULT (WINAPI *waveInMessage_type)( HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); -extern waveInMessage_type waveInMessage_orig; -typedef UINT (WINAPI *midiOutGetNumDevs_type)(void); -extern midiOutGetNumDevs_type midiOutGetNumDevs_orig; -typedef MMRESULT (WINAPI *midiStreamOpen_type)( LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern midiStreamOpen_type midiStreamOpen_orig; -typedef MMRESULT (WINAPI *midiStreamClose_type)( HMIDISTRM hms); -extern midiStreamClose_type midiStreamClose_orig; -typedef MMRESULT (WINAPI *midiStreamProperty_type)( HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty); -extern midiStreamProperty_type midiStreamProperty_orig; -typedef MMRESULT (WINAPI *midiStreamPosition_type)( HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt); -extern midiStreamPosition_type midiStreamPosition_orig; -typedef MMRESULT (WINAPI *midiStreamOut_type)( HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh); -extern midiStreamOut_type midiStreamOut_orig; -typedef MMRESULT (WINAPI *midiStreamPause_type)( HMIDISTRM hms); -extern midiStreamPause_type midiStreamPause_orig; -typedef MMRESULT (WINAPI *midiStreamRestart_type)( HMIDISTRM hms); -extern midiStreamRestart_type midiStreamRestart_orig; -typedef MMRESULT (WINAPI *midiStreamStop_type)( HMIDISTRM hms); -extern midiStreamStop_type midiStreamStop_orig; -typedef MMRESULT (WINAPI *midiConnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); -extern midiConnect_type midiConnect_orig; -typedef MMRESULT (WINAPI *midiDisconnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); -extern midiDisconnect_type midiDisconnect_orig; -typedef MMRESULT (WINAPI *midiOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc); -extern midiOutGetDevCapsA_type midiOutGetDevCapsA_orig; -typedef MMRESULT (WINAPI *midiOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc); -extern midiOutGetDevCapsW_type midiOutGetDevCapsW_orig; -typedef MMRESULT (WINAPI *midiOutGetVolume_type)( HMIDIOUT hmo, LPDWORD pdwVolume); -extern midiOutGetVolume_type midiOutGetVolume_orig; -typedef MMRESULT (WINAPI *midiOutSetVolume_type)( HMIDIOUT hmo, DWORD dwVolume); -extern midiOutSetVolume_type midiOutSetVolume_orig; -typedef MMRESULT (WINAPI *midiOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText); -extern midiOutGetErrorTextA_type midiOutGetErrorTextA_orig; -typedef MMRESULT (WINAPI *midiOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText); -extern midiOutGetErrorTextW_type midiOutGetErrorTextW_orig; -typedef MMRESULT (WINAPI *midiOutOpen_type)( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern midiOutOpen_type midiOutOpen_orig; -typedef MMRESULT (WINAPI *midiOutClose_type)( HMIDIOUT hmo); -extern midiOutClose_type midiOutClose_orig; -typedef MMRESULT (WINAPI *midiOutPrepareHeader_type)( HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); -extern midiOutPrepareHeader_type midiOutPrepareHeader_orig; -typedef MMRESULT (WINAPI *midiOutUnprepareHeader_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); -extern midiOutUnprepareHeader_type midiOutUnprepareHeader_orig; -typedef MMRESULT (WINAPI *midiOutShortMsg_type)( HMIDIOUT hmo, DWORD dwMsg); -extern midiOutShortMsg_type midiOutShortMsg_orig; -typedef MMRESULT (WINAPI *midiOutLongMsg_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); -extern midiOutLongMsg_type midiOutLongMsg_orig; -typedef MMRESULT (WINAPI *midiOutReset_type)( HMIDIOUT hmo); -extern midiOutReset_type midiOutReset_orig; -typedef MMRESULT (WINAPI *midiOutCachePatches_type)( HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache); -extern midiOutCachePatches_type midiOutCachePatches_orig; -typedef MMRESULT (WINAPI *midiOutCacheDrumPatches_type)( HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache); -extern midiOutCacheDrumPatches_type midiOutCacheDrumPatches_orig; -typedef MMRESULT (WINAPI *midiOutGetID_type)( HMIDIOUT hmo, LPUINT puDeviceID); -extern midiOutGetID_type midiOutGetID_orig; -typedef MMRESULT (WINAPI *midiOutMessage_type)( HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); -extern midiOutMessage_type midiOutMessage_orig; -typedef UINT (WINAPI *midiInGetNumDevs_type)(void); -extern midiInGetNumDevs_type midiInGetNumDevs_orig; -typedef MMRESULT (WINAPI *midiInGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic); -extern midiInGetDevCapsA_type midiInGetDevCapsA_orig; -typedef MMRESULT (WINAPI *midiInGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic); -extern midiInGetDevCapsW_type midiInGetDevCapsW_orig; -typedef MMRESULT (WINAPI *midiInGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText); -extern midiInGetErrorTextA_type midiInGetErrorTextA_orig; -typedef MMRESULT (WINAPI *midiInGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText); -extern midiInGetErrorTextW_type midiInGetErrorTextW_orig; -typedef MMRESULT (WINAPI *midiInOpen_type)( LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern midiInOpen_type midiInOpen_orig; -typedef MMRESULT (WINAPI *midiInClose_type)( HMIDIIN hmi); -extern midiInClose_type midiInClose_orig; -typedef MMRESULT (WINAPI *midiInPrepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); -extern midiInPrepareHeader_type midiInPrepareHeader_orig; -typedef MMRESULT (WINAPI *midiInUnprepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); -extern midiInUnprepareHeader_type midiInUnprepareHeader_orig; -typedef MMRESULT (WINAPI *midiInAddBuffer_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); -extern midiInAddBuffer_type midiInAddBuffer_orig; -typedef MMRESULT (WINAPI *midiInStart_type)( HMIDIIN hmi); -extern midiInStart_type midiInStart_orig; -typedef MMRESULT (WINAPI *midiInStop_type)( HMIDIIN hmi); -extern midiInStop_type midiInStop_orig; -typedef MMRESULT (WINAPI *midiInReset_type)( HMIDIIN hmi); -extern midiInReset_type midiInReset_orig; -typedef MMRESULT (WINAPI *midiInGetID_type)( HMIDIIN hmi, LPUINT puDeviceID); -extern midiInGetID_type midiInGetID_orig; -typedef MMRESULT (WINAPI *midiInMessage_type)( HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); -extern midiInMessage_type midiInMessage_orig; -typedef UINT (WINAPI *auxGetNumDevs_type)(void); -extern auxGetNumDevs_type auxGetNumDevs_orig; -typedef MMRESULT (WINAPI *auxGetDevCapsA_type)( UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac); -extern auxGetDevCapsA_type auxGetDevCapsA_orig; -typedef MMRESULT (WINAPI *auxGetDevCapsW_type)( UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac); -extern auxGetDevCapsW_type auxGetDevCapsW_orig; -typedef MMRESULT (WINAPI *auxSetVolume_type)( UINT uDeviceID, DWORD dwVolume); -extern auxSetVolume_type auxSetVolume_orig; -typedef MMRESULT (WINAPI *auxGetVolume_type)( UINT uDeviceID, LPDWORD pdwVolume); -extern auxGetVolume_type auxGetVolume_orig; -typedef MMRESULT (WINAPI *auxOutMessage_type)( UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); -extern auxOutMessage_type auxOutMessage_orig; -typedef UINT (WINAPI *mixerGetNumDevs_type)(void); -extern mixerGetNumDevs_type mixerGetNumDevs_orig; -typedef MMRESULT (WINAPI *mixerGetDevCapsA_type)( UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps); -extern mixerGetDevCapsA_type mixerGetDevCapsA_orig; -typedef MMRESULT (WINAPI *mixerGetDevCapsW_type)( UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps); -extern mixerGetDevCapsW_type mixerGetDevCapsW_orig; -typedef MMRESULT (WINAPI *mixerOpen_type)( LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); -extern mixerOpen_type mixerOpen_orig; -typedef MMRESULT (WINAPI *mixerClose_type)( HMIXER hmx); -extern mixerClose_type mixerClose_orig; -typedef DWORD (WINAPI *mixerMessage_type)( HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); -extern mixerMessage_type mixerMessage_orig; -typedef MMRESULT (WINAPI *mixerGetLineInfoA_type)( HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo); -extern mixerGetLineInfoA_type mixerGetLineInfoA_orig; -typedef MMRESULT (WINAPI *mixerGetLineInfoW_type)( HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo); -extern mixerGetLineInfoW_type mixerGetLineInfoW_orig; -typedef MMRESULT (WINAPI *mixerGetID_type)( HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId); -extern mixerGetID_type mixerGetID_orig; -typedef MMRESULT (WINAPI *mixerGetLineControlsA_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls); -extern mixerGetLineControlsA_type mixerGetLineControlsA_orig; -typedef MMRESULT (WINAPI *mixerGetLineControlsW_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls); -extern mixerGetLineControlsW_type mixerGetLineControlsW_orig; -typedef MMRESULT (WINAPI *mixerGetControlDetailsA_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); -extern mixerGetControlDetailsA_type mixerGetControlDetailsA_orig; -typedef MMRESULT (WINAPI *mixerGetControlDetailsW_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); -extern mixerGetControlDetailsW_type mixerGetControlDetailsW_orig; -typedef MMRESULT (WINAPI *mixerSetControlDetails_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); -extern mixerSetControlDetails_type mixerSetControlDetails_orig; -typedef DWORD    (WINAPI *mmGetCurrentTask_type)(void); -extern mmGetCurrentTask_type mmGetCurrentTask_orig; -typedef void (WINAPI *mmTaskBlock_type)(DWORD); -extern mmTaskBlock_type mmTaskBlock_orig; -typedef UINT (WINAPI *mmTaskCreate_type)(LPTASKCALLBACK, HANDLE*, DWORD_PTR); -extern mmTaskCreate_type mmTaskCreate_orig; -typedef BOOL (WINAPI *mmTaskSignal_type)(DWORD); -extern mmTaskSignal_type mmTaskSignal_orig; -typedef VOID (WINAPI *mmTaskYield_type)(VOID); -extern mmTaskYield_type mmTaskYield_orig; -typedef MMRESULT (WINAPI *timeGetSystemTime_type)( LPMMTIME pmmt, UINT cbmmt); -extern timeGetSystemTime_type timeGetSystemTime_orig; -typedef DWORD (WINAPI *timeGetTime_type)(void); -extern timeGetTime_type timeGetTime_orig; -typedef MMRESULT (WINAPI *timeSetEvent_type)( UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent); -extern timeSetEvent_type timeSetEvent_orig; -typedef MMRESULT (WINAPI *timeKillEvent_type)( UINT uTimerID); -extern timeKillEvent_type timeKillEvent_orig; -typedef MMRESULT (WINAPI *timeGetDevCaps_type)( LPTIMECAPS ptc, UINT cbtc); -extern timeGetDevCaps_type timeGetDevCaps_orig; -typedef MMRESULT (WINAPI *timeBeginPeriod_type)( UINT uPeriod); -extern timeBeginPeriod_type timeBeginPeriod_orig; -typedef MMRESULT (WINAPI *timeEndPeriod_type)( UINT uPeriod); -extern timeEndPeriod_type timeEndPeriod_orig; -typedef UINT (WINAPI *joyGetNumDevs_type)(void); -extern joyGetNumDevs_type joyGetNumDevs_orig; -typedef MMRESULT (WINAPI *joyConfigChanged_type)(DWORD dwFlags); -extern joyConfigChanged_type joyConfigChanged_orig; -typedef MMRESULT (WINAPI *joyGetDevCapsA_type)( UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc); -extern joyGetDevCapsA_type joyGetDevCapsA_orig; -typedef MMRESULT (WINAPI *joyGetDevCapsW_type)( UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc); -extern joyGetDevCapsW_type joyGetDevCapsW_orig; -typedef MMRESULT (WINAPI *joyGetPos_type)( UINT uJoyID, LPJOYINFO pji); -extern joyGetPos_type joyGetPos_orig; -typedef MMRESULT (WINAPI *joyGetPosEx_type)( UINT uJoyID, LPJOYINFOEX pji); -extern joyGetPosEx_type joyGetPosEx_orig; -typedef MMRESULT (WINAPI *joyGetThreshold_type)( UINT uJoyID, LPUINT puThreshold); -extern joyGetThreshold_type joyGetThreshold_orig; -typedef MMRESULT (WINAPI *joyReleaseCapture_type)( UINT uJoyID); -extern joyReleaseCapture_type joyReleaseCapture_orig; -typedef MMRESULT (WINAPI *joySetCapture_type)( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged); -extern joySetCapture_type joySetCapture_orig; -typedef MMRESULT (WINAPI *joySetThreshold_type)( UINT uJoyID, UINT uThreshold); -extern joySetThreshold_type joySetThreshold_orig; -typedef BOOL(WINAPI  *mciDriverNotify_type)(HANDLE hwndCallback, MCIDEVICEID uDeviceID, UINT uStatus); -extern mciDriverNotify_type mciDriverNotify_orig; -typedef UINT (WINAPI  *mciDriverYield_type)(UINT uDeviceID); -extern mciDriverYield_type mciDriverYield_orig; -typedef FOURCC (WINAPI *mmioStringToFOURCCA_type)( LPCSTR sz, UINT uFlags); -extern mmioStringToFOURCCA_type mmioStringToFOURCCA_orig; -typedef FOURCC (WINAPI *mmioStringToFOURCCW_type)( LPCWSTR sz, UINT uFlags); -extern mmioStringToFOURCCW_type mmioStringToFOURCCW_orig; -typedef LPMMIOPROC (WINAPI *mmioInstallIOProcA_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); -extern mmioInstallIOProcA_type mmioInstallIOProcA_orig; -typedef LPMMIOPROC (WINAPI *mmioInstallIOProcW_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); -extern mmioInstallIOProcW_type mmioInstallIOProcW_orig; -typedef HMMIO (WINAPI *mmioOpenA_type)( LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); -extern mmioOpenA_type mmioOpenA_orig; -typedef HMMIO (WINAPI *mmioOpenW_type)( LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); -extern mmioOpenW_type mmioOpenW_orig; -typedef MMRESULT (WINAPI *mmioRenameA_type)( LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); -extern mmioRenameA_type mmioRenameA_orig; -typedef MMRESULT (WINAPI *mmioRenameW_type)( LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); -extern mmioRenameW_type mmioRenameW_orig; -typedef MMRESULT (WINAPI *mmioClose_type)( HMMIO hmmio, UINT fuClose); -extern mmioClose_type mmioClose_orig; -typedef LONG (WINAPI *mmioRead_type)( HMMIO hmmio, HPSTR pch, LONG cch); -extern mmioRead_type mmioRead_orig; -typedef LONG (WINAPI *mmioWrite_type)( HMMIO hmmio, const char _huge* pch, LONG cch); -extern mmioWrite_type mmioWrite_orig; -typedef LONG (WINAPI *mmioSeek_type)( HMMIO hmmio, LONG lOffset, int iOrigin); -extern mmioSeek_type mmioSeek_orig; -typedef MMRESULT (WINAPI *mmioGetInfo_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo); -extern mmioGetInfo_type mmioGetInfo_orig; -typedef MMRESULT (WINAPI *mmioSetInfo_type)( HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo); -extern mmioSetInfo_type mmioSetInfo_orig; -typedef MMRESULT (WINAPI *mmioSetBuffer_type)( HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer); -extern mmioSetBuffer_type mmioSetBuffer_orig; -typedef MMRESULT (WINAPI *mmioFlush_type)( HMMIO hmmio, UINT fuFlush); -extern mmioFlush_type mmioFlush_orig; -typedef MMRESULT (WINAPI *mmioAdvance_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance); -extern mmioAdvance_type mmioAdvance_orig; -typedef LRESULT (WINAPI *mmioSendMessage_type)( HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2); -extern mmioSendMessage_type mmioSendMessage_orig; -typedef MMRESULT (WINAPI *mmioDescend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend); -extern mmioDescend_type mmioDescend_orig; -typedef MMRESULT (WINAPI *mmioAscend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend); -extern mmioAscend_type mmioAscend_orig; -typedef MMRESULT (WINAPI *mmioCreateChunk_type)(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate); -extern mmioCreateChunk_type mmioCreateChunk_orig; -typedef MCIERROR (WINAPI *mciSendCommandA_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); -extern mciSendCommandA_type mciSendCommandA_orig; -typedef MCIERROR (WINAPI *mciSendCommandW_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); -extern mciSendCommandW_type mciSendCommandW_orig; -typedef MCIERROR  (WINAPI *mciSendStringA_type)( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); -extern mciSendStringA_type mciSendStringA_orig; -typedef MCIERROR  (WINAPI *mciSendStringW_type)( LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); -extern mciSendStringW_type mciSendStringW_orig; -typedef MCIDEVICEID (WINAPI *mciGetDeviceIDA_type)( LPCSTR pszDevice); -extern mciGetDeviceIDA_type mciGetDeviceIDA_orig; -typedef MCIDEVICEID (WINAPI *mciGetDeviceIDW_type)( LPCWSTR pszDevice); -extern mciGetDeviceIDW_type mciGetDeviceIDW_orig; -typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDA_type)( DWORD dwElementID, LPCSTR lpstrType ); -extern mciGetDeviceIDFromElementIDA_type mciGetDeviceIDFromElementIDA_orig; -typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDW_type)( DWORD dwElementID, LPCWSTR lpstrType ); -extern mciGetDeviceIDFromElementIDW_type mciGetDeviceIDFromElementIDW_orig; -typedef DWORD_PTR (WINAPI  *mciGetDriverData_type)(UINT uDeviceID); -extern mciGetDriverData_type mciGetDriverData_orig; -typedef BOOL (WINAPI *mciGetErrorStringA_type)( MCIERROR mcierr, LPSTR pszText, UINT cchText); -extern mciGetErrorStringA_type mciGetErrorStringA_orig; -typedef BOOL (WINAPI *mciGetErrorStringW_type)( MCIERROR mcierr, LPWSTR pszText, UINT cchText); -extern mciGetErrorStringW_type mciGetErrorStringW_orig; -typedef BOOL (WINAPI  *mciSetDriverData_type)(UINT uDeviceID, DWORD_PTR dwData); -extern mciSetDriverData_type mciSetDriverData_orig; -typedef BOOL (WINAPI *mciSetYieldProc_type)( MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData); -extern mciSetYieldProc_type mciSetYieldProc_orig; -typedef BOOL (WINAPI  *mciFreeCommandResource_type)(UINT uTable); -extern mciFreeCommandResource_type mciFreeCommandResource_orig; -typedef HTASK (WINAPI *mciGetCreatorTask_type)( MCIDEVICEID mciId); -extern mciGetCreatorTask_type mciGetCreatorTask_orig; -typedef YIELDPROC (WINAPI *mciGetYieldProc_type)( MCIDEVICEID mciId, LPDWORD pdwYieldData); -extern mciGetYieldProc_type mciGetYieldProc_orig; -typedef UINT (WINAPI *mciLoadCommandResource_type)(HANDLE hInstance, LPCWSTR lpResName, UINT uType); -extern mciLoadCommandResource_type mciLoadCommandResource_orig; -typedef BOOL (WINAPI *mciExecute_type)(LPCSTR pszCommand); -extern mciExecute_type mciExecute_orig; diff --git a/indra/media_plugins/winmmshim/winmm.def b/indra/media_plugins/winmmshim/winmm.def deleted file mode 100755 index c55a2845f8..0000000000 --- a/indra/media_plugins/winmmshim/winmm.def +++ /dev/null @@ -1,218 +0,0 @@ -;  -;   winmm.def -; -;   Exports for WINMM DLL -; - -LIBRARY WINMM -EXPORTS -CloseDriver -DefDriverProc -DriverCallback -DrvGetModuleHandle -GetDriverModuleHandle -;MigrateAllDrivers -;MigrateSoundEvents -;NotifyCallbackData -OpenDriver -;PlaySound -PlaySoundA -PlaySoundW -SendDriverMessage -;WOW32DriverCallback -;WOW32ResolveMultiMediaHandle -;WOWAppExit -;WinmmLogoff -;WinmmLogon -;aux32Message -auxGetDevCapsA -auxGetDevCapsW -auxGetNumDevs -auxGetVolume -auxOutMessage -auxSetVolume -;gfxAddGfx -;gfxBatchChange -;gfxCreateGfxFactoriesList -;gfxCreateZoneFactoriesList -;gfxDestroyDeviceInterfaceList -;gfxEnumerateGfxs -;gfxLogoff -;gfxLogon -;gfxModifyGfx -;gfxOpenGfx -;gfxRemoveGfx -;joy32Message -joyConfigChanged -joyGetDevCapsA -joyGetDevCapsW -joyGetNumDevs -joyGetPos -joyGetPosEx -joyGetThreshold -joyReleaseCapture -joySetCapture -joySetThreshold -;mci32Message -mciDriverNotify -mciDriverYield -mciExecute -mciFreeCommandResource -mciGetCreatorTask -mciGetDeviceIDA -mciGetDeviceIDFromElementIDA -mciGetDeviceIDFromElementIDW -mciGetDeviceIDW -mciGetDriverData -mciGetErrorStringA -mciGetErrorStringW -mciGetYieldProc -mciLoadCommandResource -mciSendCommandA -mciSendCommandW -mciSendStringA -mciSendStringW -mciSetDriverData -mciSetYieldProc -;mid32Message -midiConnect -midiDisconnect -midiInAddBuffer -midiInClose -midiInGetDevCapsA -midiInGetDevCapsW -midiInGetErrorTextA -midiInGetErrorTextW -midiInGetID -midiInGetNumDevs -midiInMessage -midiInOpen -midiInPrepareHeader -midiInReset -midiInStart -midiInStop -midiInUnprepareHeader -midiOutCacheDrumPatches -midiOutCachePatches -midiOutClose -midiOutGetDevCapsA -midiOutGetDevCapsW -midiOutGetErrorTextA -midiOutGetErrorTextW -midiOutGetID -midiOutGetNumDevs -midiOutGetVolume -midiOutLongMsg -midiOutMessage -midiOutOpen -midiOutPrepareHeader -midiOutReset -midiOutSetVolume -midiOutShortMsg -midiOutUnprepareHeader -midiStreamClose -midiStreamOpen -midiStreamOut -midiStreamPause -midiStreamPosition -midiStreamProperty -midiStreamRestart -midiStreamStop -mixerClose -mixerGetControlDetailsA -mixerGetControlDetailsW -mixerGetDevCapsA -mixerGetDevCapsW -mixerGetID -mixerGetLineControlsA -mixerGetLineControlsW -mixerGetLineInfoA -mixerGetLineInfoW -mixerGetNumDevs -mixerMessage -mixerOpen -mixerSetControlDetails -;mmDrvInstall -mmGetCurrentTask -mmTaskBlock -mmTaskCreate -mmTaskSignal -mmTaskYield -mmioAdvance -mmioAscend -mmioClose -mmioCreateChunk -mmioDescend -mmioFlush -mmioGetInfo -mmioInstallIOProcA -mmioInstallIOProcW -mmioOpenA -mmioOpenW -mmioRead -mmioRenameA -mmioRenameW -mmioSeek -mmioSendMessage -mmioSetBuffer -mmioSetInfo -mmioStringToFOURCCA -mmioStringToFOURCCW -mmioWrite -mmsystemGetVersion -;mod32Message -;mxd32Message -sndPlaySoundA -sndPlaySoundW -;tid32Message -timeBeginPeriod -timeEndPeriod -timeGetDevCaps -timeGetSystemTime -timeGetTime -timeKillEvent -timeSetEvent -waveInAddBuffer -waveInClose -waveInGetDevCapsA -waveInGetDevCapsW -waveInGetErrorTextA -waveInGetErrorTextW -waveInGetID -waveInGetNumDevs -waveInGetPosition -waveInMessage -waveInOpen -waveInPrepareHeader -waveInReset -waveInStart -waveInStop -waveInUnprepareHeader -waveOutBreakLoop -waveOutClose -waveOutGetDevCapsA -waveOutGetDevCapsW -waveOutGetErrorTextA -waveOutGetErrorTextW -waveOutGetID -waveOutGetNumDevs -waveOutGetPitch -waveOutGetPlaybackRate -waveOutGetPosition -waveOutGetVolume -waveOutMessage -waveOutOpen -waveOutPause -waveOutPrepareHeader -waveOutReset -waveOutRestart -waveOutSetPitch -waveOutSetPlaybackRate -waveOutSetVolume -waveOutUnprepareHeader -waveOutWrite -;wid32Message -;winmmSetDebugLevel -;wod32Message -setPluginVolume -setPluginMute
\ No newline at end of file diff --git a/indra/media_plugins/winmmshim/winmm_shim.cpp b/indra/media_plugins/winmmshim/winmm_shim.cpp deleted file mode 100644 index 78f7a9b0da..0000000000 --- a/indra/media_plugins/winmmshim/winmm_shim.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/**  - * @file winmmshim.cpp - * @brief controls volume level of process by intercepting calls to winmm.dll - * - * $LicenseInfo:firstyear=2010&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010-2014, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * 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 "forwarding_api.h" -#include <xmmintrin.h> -#include <map> -#include <math.h> - -using std::wstring; - -static float sVolumeLevel = 1.f;		// Could be covered by critical section, -static bool sMute = false;				// not needed with atomicity and alignment. -static CRITICAL_SECTION sCriticalSection; - -BOOL APIENTRY DllMain( HMODULE hModule, -                       DWORD  ul_reason_for_call, -                       LPVOID lpReserved -					 ) -{ -	if (ul_reason_for_call == DLL_PROCESS_ATTACH) -	{ -		InitializeCriticalSection(&sCriticalSection); -	} -	return TRUE; -} - -void ll_winmm_shim_initialize(){ -	static volatile bool initialized = false; - -	// do this only once using double-check locking -	if (!initialized) -	{ -		EnterCriticalSection(&sCriticalSection); -		if (!initialized) -		{	// bind to original winmm.dll -			TCHAR system_path[MAX_PATH]; -			TCHAR dll_path[MAX_PATH]; -			::GetSystemDirectory(system_path, MAX_PATH); - -			// grab winmm.dll from system path, where it should live -			wsprintf(dll_path, "%s\\winmm.dll", system_path); -			HMODULE winmm_handle = ::LoadLibrary(dll_path); - -			if (winmm_handle != NULL) -			{	// we have a dll, let's get out pointers! -				init_function_pointers(winmm_handle); -				::OutputDebugStringA("WINMM_SHIM.DLL: real winmm.dll initialized successfully\n"); -				initialized = true;		// Last thing after completing setup -			} -			else -			{ -				// failed to initialize real winmm.dll -				::OutputDebugStringA("WINMM_SHIM.DLL: Failed to initialize real winmm.dll\n"); -			} -		} -		LeaveCriticalSection(&sCriticalSection); -	} -} - - -extern "C"  -{ -	// tracks the requested format for a given waveout buffer -	struct WaveOutFormat -	{ -		WaveOutFormat(int bits_per_sample) -		:	mBitsPerSample(bits_per_sample) -		{} -		int	mBitsPerSample; -	}; -	typedef std::map<HWAVEOUT, WaveOutFormat*> wave_out_map_t; -	static wave_out_map_t sWaveOuts;						// Covered by sCriticalSection - -	MMRESULT WINAPI waveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen) -	{ -		ll_winmm_shim_initialize(); -		if (pwfx->wFormatTag != WAVE_FORMAT_PCM -			|| (pwfx->wBitsPerSample != 8 && pwfx->wBitsPerSample != 16)) -		{ // uncompressed 8 and 16 bit sound are the only types we support -			return WAVERR_BADFORMAT; -		} - -		MMRESULT result = waveOutOpen_orig(phwo, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen); -		if (result == MMSYSERR_NOERROR  -			&& ((fdwOpen & WAVE_FORMAT_QUERY) == 0)) // not just querying for format support -		{	// remember the requested bits per sample, and associate with the given handle -			WaveOutFormat* wave_outp = new WaveOutFormat(pwfx->wBitsPerSample); -			EnterCriticalSection(&sCriticalSection); -			sWaveOuts.insert(std::make_pair(*phwo, wave_outp)); -			LeaveCriticalSection(&sCriticalSection); -		} -		return result; -	} - -	MMRESULT WINAPI waveOutClose( HWAVEOUT hwo) -	{ -		ll_winmm_shim_initialize(); -		EnterCriticalSection(&sCriticalSection); -		wave_out_map_t::iterator found_it = sWaveOuts.find(hwo); -		if (found_it != sWaveOuts.end()) -		{	// forget what we know about this handle -			delete found_it->second; -			sWaveOuts.erase(found_it); -		} -		LeaveCriticalSection(&sCriticalSection); -		return waveOutClose_orig(hwo); -	} - -	MMRESULT WINAPI waveOutWrite( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh) -	{ -		ll_winmm_shim_initialize(); -		MMRESULT result = MMSYSERR_NOERROR; - -		if (sMute) -		{ // zero out the audio buffer when muted -			memset(pwh->lpData, 0, pwh->dwBufferLength); -		} -		else if (sVolumeLevel != 1.f)  -		{ // need to apply volume level -			int bits_per_sample(0); -			 -			EnterCriticalSection(&sCriticalSection); -			wave_out_map_t::iterator found_it = sWaveOuts.find(hwo); -			if (found_it != sWaveOuts.end()) -			{ -				bits_per_sample = found_it->second->mBitsPerSample; -			} -			LeaveCriticalSection(&sCriticalSection); -			if (bits_per_sample) -			{ -				switch (bits_per_sample) -				{ -				case 8: -					{ -						char volume = (char)(sVolumeLevel * 127.f); -						for (unsigned int i = 0; i < pwh->dwBufferLength; i++) -						{ -							// unsigned multiply doesn't use most significant bit, so shift by 7 bits -							// to get resulting value back into 8 bits -							pwh->lpData[i] = (pwh->lpData[i] * volume) >> 7; -						} -						break; -					} -				case 16: -					{ -						short volume_16 = (short)(sVolumeLevel * 32767.f); - -						// copy volume level 4 times into 64 bit MMX register -						__m64 volume_64 = _mm_set_pi16(volume_16, volume_16, volume_16, volume_16); -						__m64* sample_64; -						__m64* last_sample_64 =  (__m64*)(pwh->lpData + pwh->dwBufferLength - sizeof(__m64)); -						// for everything that can be addressed in 64 bit multiples... -						for (sample_64 = (__m64*)pwh->lpData; -							sample_64 <= last_sample_64; -							++sample_64) -						{ -							//...multiply the samples by the volume... -							__m64 scaled_sample = _mm_mulhi_pi16(*sample_64, volume_64); -							// ...and shift left 1 bit since an unsigned multiple loses the most significant bit -							// 0x7FFF * 0x7FFF = 0x3fff0001 -							// 0x3fff0001 << 1 = 0x7ffe0002 -							// notice that the LSB is always 0...should consider dithering -							*sample_64 =  _mm_slli_pi16(scaled_sample, 1);  -						} - -						// the captain has turned off the MMX sign, you are now free to use floating point registers -						_mm_empty(); - -						// finish remaining samples that didn't fit into 64 bit register -						for (short* sample_16 = (short*)sample_64; -							sample_16 < (short*)(pwh->lpData + pwh->dwBufferLength); -							++sample_16) -						{	 -							*sample_16 = (*sample_16 * volume_16) >> 15; -						} - -						break; -					} -				default: -					// don't do anything -					break; -				} -			} -		} -		return waveOutWrite_orig( hwo, pwh, cbwh); -	} - -	void WINAPI setPluginVolume(float volume) -	{ -		sVolumeLevel = volume; -	} - -	void WINAPI setPluginMute(bool mute) -	{ -		sMute = mute; -	} -} diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index d6d7d2c563..45ba8d6eb7 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -13,7 +13,6 @@ include(DragDrop)  include(EXPAT)  include(FMODEX)  include(GLOD) -include(GooglePerfTools)  include(Hunspell)  include(JsonCpp)  include(LLAppearance) @@ -1682,7 +1681,7 @@ if (WINDOWS)      set_target_properties(${VIEWER_BINARY_NAME}          PROPERTIES          # *TODO -reenable this once we get server usage sorted out -        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS ${TCMALLOC_LINK_FLAGS} /LARGEADDRESSAWARE" +        LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /LARGEADDRESSAWARE"          LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO /LARGEADDRESSAWARE"          LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF /LARGEADDRESSAWARE"          ) @@ -1702,20 +1701,8 @@ if (WINDOWS)      # In the meantime, if you have any ideas on how to easily maintain one list, either here or in viewer_manifest.py      # and have the build deps get tracked *please* tell me about it. -    if(USE_TCMALLOC) -      # Configure a var for tcmalloc location, if used. -      # Note the need to specify multiple names explicitly. -      set(GOOGLE_PERF_TOOLS_SOURCE -        ${SHARED_LIB_STAGING_DIR}/Release/libtcmalloc_minimal.dll -        ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libtcmalloc_minimal.dll -        ${SHARED_LIB_STAGING_DIR}/Debug/libtcmalloc_minimal-debug.dll -        ) -     endif(USE_TCMALLOC) - -      set(COPY_INPUT_DEPENDENCIES        # The following commented dependencies are determined at variably at build time. Can't do this here. -      #${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libtcmalloc_minimal.dll => None ... Skipping libtcmalloc_minimal.dll        ${CMAKE_SOURCE_DIR}/../etc/message.xml        ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg        ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/llcommon.dll @@ -1957,7 +1944,6 @@ target_link_libraries(${VIEWER_BINARY_NAME}      ${LLLOGIN_LIBRARIES}      ${LLPHYSICS_LIBRARIES}      ${LLPHYSICSEXTENSIONS_LIBRARIES} -    ${TCMALLOC_LIBRARIES}      ${LLAPPEARANCE_LIBRARIES}      ) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6621b9e269..fa39dd6c65 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -6354,17 +6354,6 @@        <key>Value</key>        <integer>512</integer>      </map> -    <key>MemProfiling</key> -    <map> -      <key>Comment</key> -      <string>You want to use tcmalloc's memory profiling options.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>0</integer> -    </map>      <key>MenuAccessKeyTime</key>      <map>        <key>Comment</key> @@ -10046,28 +10035,28 @@      <key>Value</key>      <integer>0</integer>    </map> -  <key>RenderUseFarClip</key> -  <map> -    <key>Comment</key> -    <string>If false, frustum culling will ignore far clip plane.</string> -    <key>Persist</key> -    <integer>1</integer> -    <key>Type</key> -    <string>Boolean</string> -    <key>Value</key> -    <integer>1</integer> -  </map> -  <key>RenderUseImpostors</key> -  <map> -    <key>Comment</key> +    <key>RenderUseFarClip</key> +    <map> +      <key>Comment</key> +      <string>If false, frustum culling will ignore far clip plane.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map> +    <key>RenderUseImpostors</key> +    <map> +      <key>Comment</key>      <string>OBSOLETE and UNUSED. See RenderAvatarMaxNonImpostors and RenderAvatarMaxComplexity.</string> -    <key>Persist</key> +      <key>Persist</key>      <integer>0</integer> -    <key>Type</key> -    <string>Boolean</string> -    <key>Value</key> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key>      <integer>0</integer> -  </map> +    </map>    <key>RenderAutoMuteByteLimit</key>    <map>      <key>Comment</key> diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 3d5e2d356e..50a4925c37 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -2133,7 +2133,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  			LLVector4a src;  			U32 vec[4]; -			vec[0] = vec[1] = vec[2] = vec[3] = color.mAll; +			vec[0] = vec[1] = vec[2] = vec[3] = color.asRGBA();  			src.loadua((F32*) vec); @@ -2169,7 +2169,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  			LLColor4U glow4u = LLColor4U(0,0,0,glow); -			U32 glow32 = glow4u.mAll; +			U32 glow32 = glow4u.asRGBA();  			U32 vec[4];  			vec[0] = vec[1] = vec[2] = vec[3] = glow32; diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 5fc73c67d1..72faa5a9e7 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -735,7 +735,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,  				continue;  			}  			S32 offset = px + py * image_width; -			((U32*)datap)[offset] = color.mAll; +			((U32*)datap)[offset] = color.asRGBA();  		}  		// top line @@ -748,7 +748,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,  				continue;  			}  			S32 offset = px + py * image_width; -			((U32*)datap)[offset] = color.mAll; +			((U32*)datap)[offset] = color.asRGBA();  		}  	}  	else @@ -770,7 +770,7 @@ void LLNetMap::renderPoint(const LLVector3 &pos_local, const LLColor4U &color,  					continue;  				}  				S32 offset = p_x + p_y * image_width; -				((U32*)datap)[offset] = color.mAll; +				((U32*)datap)[offset] = color.asRGBA();  			}  		}  	} diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index a0ca91672a..375dce485d 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -99,10 +99,16 @@ const std::string &LLVersionInfo::getShortVersion()  namespace  { +	// LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The +	// macro expands to the string name of the channel, but without quotes. We +	// need to turn it into a quoted string. This macro trick does that. +#define stringize_inner(x) #x +#define stringize_outer(x) stringize_inner(x) +  	/// Storage of the channel name the viewer is using.  	//  The channel name is set by hardcoded constant,   	//  or by calling LLVersionInfo::resetChannel() -	std::string sWorkingChannelName(LL_VIEWER_CHANNEL); +	std::string sWorkingChannelName(stringize_outer(LL_VIEWER_CHANNEL));  	// Storage for the "version and channel" string.  	// This will get reset too. diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 4dab213fa0..6b4a450e6f 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -283,7 +283,7 @@ void LLSkyTex::create(const F32 brightness)  			S32 offset = basic_offset * sComponents;  			U32* pix = (U32*)(data + offset);  			LLColor4U temp = LLColor4U(mSkyData[basic_offset]); -			*pix = temp.mAll; +			*pix = temp.asRGBA();  		}  	}  	createGLImage(sCurrent); diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index ee8e91fb71..9cfb9773bd 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -171,7 +171,7 @@ protected:  	{  		S32 offset = (i * sResolution + j) * sComponents;  		U32* pix = (U32*) &(mImageRaw[sCurrent]->getData()[offset]); -		*pix = col.mAll; +		*pix = col.asRGBA();  	}  	LLColor4U getPixel(const S32 i, const S32 j) @@ -179,7 +179,7 @@ protected:  		LLColor4U col;  		S32 offset = (i * sResolution + j) * sComponents;  		U32* pix = (U32*) &(mImageRaw[sCurrent]->getData()[offset]); -		col.mAll = *pix; +		col.fromRGBA( *pix );  		return col;  	} diff --git a/indra/newview/tests/llversioninfo_test.cpp b/indra/newview/tests/llversioninfo_test.cpp index 6b0be29c2d..f1f69f33f1 100644 --- a/indra/newview/tests/llversioninfo_test.cpp +++ b/indra/newview/tests/llversioninfo_test.cpp @@ -29,6 +29,13 @@  #include "../llversioninfo.h" +// LL_VIEWER_CHANNEL is a macro defined on the compiler command line. The +// macro expands to the string name of the channel, but without quotes. We +// need to turn it into a quoted string. This macro trick does that. +#define stringize_inner(x) #x +#define stringize_outer(x) stringize_inner(x) +#define ll_viewer_channel stringize_outer(LL_VIEWER_CHANNEL) +  namespace tut  {      struct versioninfo @@ -50,7 +57,7 @@ namespace tut  			mShortVersion = stream.str();  			stream.str(""); -			stream << LL_VIEWER_CHANNEL +			stream << ll_viewer_channel  				   << " "  				   << mVersion;  			mVersionAndChannel = stream.str(); @@ -89,7 +96,7 @@ namespace tut  					  LL_VIEWER_VERSION_BUILD);  		ensure_equals("Channel version",   					  LLVersionInfo::getChannel(),  -					  LL_VIEWER_CHANNEL); +					  ll_viewer_channel);  		ensure_equals("Version String",   					  LLVersionInfo::getVersion(),   					  mVersion); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 66d730d1ac..589d74a014 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -287,7 +287,8 @@ class ViewerManifest(LLManifest):          random.shuffle(names)          return ', '.join(names) -class Windows_i686_Manifest(ViewerManifest): + +class WindowsManifest(ViewerManifest):      def final_exe(self):          return self.app_name_oneword()+".exe" @@ -338,7 +339,7 @@ class Windows_i686_Manifest(ViewerManifest):              print "Doesn't exist:", src      def construct(self): -        super(Windows_i686_Manifest, self).construct() +        super(WindowsManifest, self).construct()          pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')          relpkgdir = os.path.join(pkgdir, "lib", "release") @@ -386,10 +387,7 @@ class Windows_i686_Manifest(ViewerManifest):                  print "Skipping fmodex audio library(assuming other audio engine)"              # For textures -            if self.args['configuration'].lower() == 'debug': -                self.path("openjpegd.dll") -            else: -                self.path("openjpeg.dll") +            self.path("openjpeg.dll")              # These need to be installed as a SxS assembly, currently a 'private' assembly.              # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx @@ -699,7 +697,17 @@ class Windows_i686_Manifest(ViewerManifest):          self.package_file = installer_file -class Darwin_i386_Manifest(ViewerManifest): +class Windows_i686_Manifest(WindowsManifest): +    # specialize when we must +    pass + + +class Windows_x86_64_Manifest(WindowsManifest): +    # specialize when we must +    pass + + +class DarwinManifest(ViewerManifest):      def is_packaging_viewer(self):          # darwin requires full app bundle packaging even for debugging.          return True @@ -725,7 +733,7 @@ class Darwin_i386_Manifest(ViewerManifest):              # most everything goes in the Resources directory              if self.prefix(src="", dst="Resources"): -                super(Darwin_i386_Manifest, self).construct() +                super(DarwinManifest, self).construct()                  if self.prefix("cursors_mac"):                      self.path("*.tif") @@ -1052,6 +1060,20 @@ class Darwin_i386_Manifest(ViewerManifest):          self.package_file = finalname          self.remove(sparsename) + +class Darwin_i386_Manifest(DarwinManifest): +    pass + + +class Darwin_i686_Manifest(DarwinManifest): +    """alias in case arch is passed as i686 instead of i386""" +    pass + + +class Darwin_x86_64_Manifest(DarwinManifest): +    pass + +  class LinuxManifest(ViewerManifest):      def construct(self):          super(LinuxManifest, self).construct() diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt index 55442b2521..8344cead57 100644 --- a/indra/test/CMakeLists.txt +++ b/indra/test/CMakeLists.txt @@ -102,7 +102,6 @@ target_link_libraries(lltest      ${BOOST_CONTEXT_LIBRARY}      ${BOOST_SYSTEM_LIBRARY}      ${DL_LIBRARY} -    ${GOOGLE_PERFTOOLS_LIBRARIES}      )  if (WINDOWS) diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt deleted file mode 100644 index e682eaccca..0000000000 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ /dev/null @@ -1,336 +0,0 @@ -# -*- cmake -*- -project(llplugintest) - -include(00-Common) -include(OpenGL) -include(LLCommon) -include(LLPlugin) -include(Linking) -include(LLSharedLibs) -include(PluginAPI) -include(LLImage) -include(LLMath) -include(LLMessage) -include(LLRender) -include(LLWindow) -include(Glut) -include(Glui) - -include_directories( -    ${LLPLUGIN_INCLUDE_DIRS} -    ${LLCOMMON_INCLUDE_DIRS} -    ${LLIMAGE_INCLUDE_DIRS} -    ${LLMATH_INCLUDE_DIRS} -    ${LLMESSAGE_INCLUDE_DIRS} -    ${LLRENDER_INCLUDE_DIRS} -    ${LLWINDOW_INCLUDE_DIRS} -) -include_directories(SYSTEM -    ${LLCOMMON_SYSTEM_INCLUDE_DIRS} -    ) - -if (DARWIN) -    include(CMakeFindFrameworks) -    find_library(COREFOUNDATION_LIBRARY CoreFoundation) -endif (DARWIN) - -### demo_plugin - -#set(demo_plugin_SOURCE_FILES -#    demo_plugin.cpp -#    ) -# -#add_library(demo_plugin -#    SHARED -#    ${demo_plugin_SOURCE_FILES} -#) -# -#target_link_libraries(demo_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(demo_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) -# -#if (DARWIN) -#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name -#  set_target_properties( -#    demo_plugin -#    PROPERTIES -#    PREFIX "" -#    BUILD_WITH_INSTALL_RPATH 1 -#    INSTALL_NAME_DIR "@executable_path" -#  ) -#endif (DARWIN) - -### plugin_host - -#set(plugin_host_SOURCE_FILES -#    plugin_host.cpp -#    ) -# -#add_executable(plugin_host -#    WIN32 -#    ${plugin_host_SOURCE_FILES} -#) -# -#set_target_properties(plugin_host -#    PROPERTIES -#    WIN32_EXECUTABLE -#    FALSE -#) -# -#target_link_libraries(plugin_host -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(plugin_host -#  demo_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) - -### plugin_process_launcher - -#set(plugin_process_launcher_SOURCE_FILES -#    plugin_process_launcher.cpp -#    ) -# -#add_executable(plugin_process_launcher -#    WIN32 -#    ${plugin_process_launcher_SOURCE_FILES} -#) -# -#set_target_properties(plugin_process_launcher -#    PROPERTIES -#    WIN32_EXECUTABLE -#    FALSE -#) -# -#target_link_libraries(plugin_process_launcher -#  ${LLPLUGIN_LIBRARIES} -#  ${LLMESSAGE_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(plugin_process_launcher -#  SLPlugin -#  demo_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLMESSAGE_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) - -### media_simple_test - -#set(media_simple_test_SOURCE_FILES -#    media_simple_test.cpp -#    ) -# -#add_executable(media_simple_test -#    WIN32 -#    ${media_simple_test_SOURCE_FILES} -#) -# -#add_dependencies(media_simple_test stage_third_party_libs) -# -#set_target_properties(media_simple_test -#    PROPERTIES -#    WIN32_EXECUTABLE -#    FALSE -#) -# -#target_link_libraries(media_simple_test -#  ${GLUT_LIBRARY} -#  ${OPENGL_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) - -### media_plugin_test - -#set(media_plugin_test_SOURCE_FILES -#    media_plugin_test.cpp -#    ) -# -#add_executable(media_plugin_test -#    WIN32 -#    ${media_plugin_test_SOURCE_FILES} -#) -# -#set_target_properties(media_plugin_test -#    PROPERTIES -#    WIN32_EXECUTABLE -#    FALSE -#) -# -#target_link_libraries(media_plugin_test -#  ${GLUT_LIBRARY} -#  ${OPENGL_LIBRARIES} -#  ${LLPLUGIN_LIBRARIES} -#  ${LLMESSAGE_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(media_plugin_test -#  stage_third_party_libs -#  SLPlugin -#  demo_media_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLMESSAGE_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) - -### demo_media_plugin - -#set(demo_media_plugin_SOURCE_FILES -#    demo_media_plugin.cpp -#    ) -# -#add_library(demo_media_plugin -#    SHARED -#    ${demo_media_plugin_SOURCE_FILES} -#) -# -#target_link_libraries(demo_media_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(demo_media_plugin -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) -# -#if (DARWIN) -#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name -#  set_target_properties( -#    demo_media_plugin -#    PROPERTIES -#    PREFIX "" -#    BUILD_WITH_INSTALL_RPATH 1 -#    INSTALL_NAME_DIR "@executable_path" -#  ) -#endif (DARWIN) - -### demo_media_plugin_2 - -#set(demo_media_plugin_2_SOURCE_FILES -#    demo_media_plugin_2.cpp -#    ) -# -#add_library(demo_media_plugin_2 -#    SHARED -#    ${demo_media_plugin_2_SOURCE_FILES} -#) -# -#target_link_libraries(demo_media_plugin_2 -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#  ${PLUGIN_API_WINDOWS_LIBRARIES} -#) -# -#add_dependencies(demo_media_plugin_2 -#  ${LLPLUGIN_LIBRARIES} -#  ${LLCOMMON_LIBRARIES} -#) -# -#if (DARWIN) -#  # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name -#  set_target_properties( -#    demo_media_plugin_2 -#    PROPERTIES -#    PREFIX "" -#    BUILD_WITH_INSTALL_RPATH 1 -#    INSTALL_NAME_DIR "@executable_path" -#  ) -#endif (DARWIN) - -# Gather build products of the various dependencies into the build directory for the testbed. - -if(WINDOWS) -  #******************** -  # Plugin test library deploy -  # -  # Debug config runtime files required for the plugin test mule -  set(plugintest_debug_src_dir "${ARCH_PREBUILT_DIRS_DEBUG}") -  set(plugintest_debug_files -    libeay32.dll -    libglib-2.0-0.dll -    libgmodule-2.0-0.dll -    libgobject-2.0-0.dll -    libgthread-2.0-0.dll -    ssleay32.dll -    ) -  copy_if_different( -    ${plugintest_debug_src_dir} -    "${CMAKE_CURRENT_BINARY_DIR}/Debug" -    out_targets -    ${plugintest_debug_files} -    ) -  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) -   -  # Release & ReleaseDebInfo config runtime files required for the plugin test mule -  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -  set(plugintest_release_files -    libeay32.dll -    libglib-2.0-0.dll -    libgmodule-2.0-0.dll -    libgobject-2.0-0.dll -    libgthread-2.0-0.dll -    ssleay32.dll -    ) -  copy_if_different( -    ${plugintest_release_src_dir} -    "${CMAKE_CURRENT_BINARY_DIR}/Release" -    out_targets -    ${plugintest_release_files} -    ) -  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - -  copy_if_different( -    ${plugintest_release_src_dir} -    "${CMAKE_CURRENT_BINARY_DIR}/RelWithDebInfo" -    out_targets -    ${plugintest_release_files} -    ) -  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - -   add_custom_target(copy_plugintest_libs ALL -     DEPENDS  -     ${plugin_test_targets} -     ) - -endif(WINDOWS) - -if (DARWIN) -  set(plugintest_release_src_dir "${ARCH_PREBUILT_DIRS_RELEASE}") -  set(plugintest_release_files -    libexception_handler.dylib -    libaprutil-1.0.dylib -    libapr-1.0.dylib -    libexpat.1.5.2.dylib -    ) -  copy_if_different( -    ${plugintest_release_src_dir} -    "${PLUGINS_DESTINATION_DIR}" -    out_targets -    ${plugintest_release_files} -    ) -  set(plugin_test_targets ${plugin_test_targets} ${out_targets}) - -  add_custom_target(copy_plugintest_libs ALL -    DEPENDS  -    ${plugin_test_targets} -    ) - -endif (DARWIN) - diff --git a/indra/test_apps/llplugintest/README.Linden b/indra/test_apps/llplugintest/README.Linden deleted file mode 100644 index 4a9f223c21..0000000000 --- a/indra/test_apps/llplugintest/README.Linden +++ /dev/null @@ -1,21 +0,0 @@ - -1.  Description - -    Exercises SLPlugin.  Demonstrates mediakit plugin reuse and -    switchover as MIME type changes (web, quicktime, flash). - - -2.  Running - -  2.1  Mac - -    Make certain '.' is included in PATH.  E.g.: - -       PATH=.:"$PATH" open build-darwin-i386/test_apps/llmediaplugintest/RelWithDebInfo/llmediaplugintest.app - -    Otherwise the program won't find SLPlugin and will timeout and -    fail after 30 seconds and give you little information as to why. - -    Running 'dtruss' on plugin test applications will give you a great -    deal of insight into why they aren't activating. - diff --git a/indra/test_apps/llplugintest/bookmarks.txt b/indra/test_apps/llplugintest/bookmarks.txt deleted file mode 100644 index 2ff64f217f..0000000000 --- a/indra/test_apps/llplugintest/bookmarks.txt +++ /dev/null @@ -1,37 +0,0 @@ -# format is description, url (don't put ',' chars in description :) -# if no ',' found, whole line is used for both description and url -(WK) Google Home Page,http://www.google.com -(WK) BBC News Home Page,http://news.bbc.co.uk -(WK) Second Life,http://secondlife.com -(WK) WebKit Home ,http://www.webkit.org -(WK) Yahoo News,http://news.yahoo.com -(WK) Canvas Paint (DHTML version of MS Paint),http://www.canvaspaint.org -(WK) DHTML Lemmings!,http://www.elizium.nu/scripts/lemmings/ -(WK) DHTML graphics demos,http://www.dhteumeuleu.com/ -(WK) Shared paint app,http://colorillo.com/ac79?1l0q6cp -(Flash) YouTube,http://youtube.com -(Flash) Vimeo,http://www.vimeo.com/1778399 -(Flash) Simple whiteboard,http://www.imaginationcubed.com/ -(Flash) Dabble Board,http://www.dabbleboard.com/draw -(Flash) Bubble Shooter game,http://www.wiicade.com/playGame.aspx?gameID=72&gameName=Bubble%20Shooter  -(Flash) Pixlr photo editor,http://pixlr.com/editor/ -(Flash) Scribd,http://www.scribd.com/doc/14427744/Second-Life-Quickstart-Guide -(Flash) MAME,http://yvern.com/fMAME/fMAME.html -(QT) Local sample,file:///C|/Program Files/QuickTime/Sample.mov -(QT) Movie - Watchmen Trailer,http://trailers.apple.com/movies/wb/watchmen/watchmen-tlr2_480p.mov -(QT) Movie - Transformers - Revenge of the Fallen,http://trailers.apple.com/movies/paramount/transformers2/transformersrevengeofthefallen-tlr1_h.320.mov -(QT) Movie - Terminator Salvation,http://trailers.apple.com/movies/wb/terminatorsalvation/terminatorsalvation-tlr3_h.320.mov -(QT) Movie - Angels and Demons,http://trailers.apple.com/movies/sony_pictures/angelsanddemons/angelsanddemons-video_h.320.mov -(QT) Movie - Sin City Trailer,http://trailers.apple.com/movies/miramax/sin_city/sin_city_480.mov -(QT) Movie - The Incredibles Trailer,http://trailers.apple.com/movies/disney/the_incredibles/the_incredibles-tlr_a480.mov -(QT) Movie - Streaming Apple Event,http://stream.qtv.apple.com/events/mar/0903lajkszg/m_090374535329zdwg_650_ref.mov -(QT) Movie - MPEG-4 from Amazon S3,http://s3.amazonaws.com/callum-linden/flashdemo/interactive_flash_demo.mp4 -(QT) Movie - Star Trek,http://trailers.apple.com/movies/paramount/star_trek/startrek-tlr3_h.320.mov -(QT) Movie - Ice Age 3,http://trailers.apple.com/movies/fox/ice_age_iii/iceage3-tlrd_h.320.mov -(QT) Movie - AstroBoy,http://trailers.apple.com/movies/summit/astroboy/astroboy-tsr_h.320.mov -(QT) Movie - Ante Up,http://trailers.apple.com/movies/independent/anteup/anteup_h.320.mov -(QT) Movie - Every Little Step,http://trailers.apple.com/movies/sony/everylittlestep/everylittlestep-clip_h.320.mov -(QT) Movie - The Informers,http://trailers.apple.com/movies/independent/theinformers/theinformers_h.320.mov -(QT) Animated GIF,http://upload.wikimedia.org/wikipedia/commons/4/44/Optical.greysquares.arp-animated.gif -(QT) Apple Text Descriptors,http://ubrowser.com/tmp/apple_text.txt -(EX) Example Plugin,example://blah | 
