diff options
| author | Merov Linden <merov@lindenlab.com> | 2012-08-23 20:02:43 -0700 | 
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2012-08-23 20:02:43 -0700 | 
| commit | b19e6c295972c83a2637a29007bc5d0a92711ea9 (patch) | |
| tree | b9df565b6ec84ff6c55097431392ec792a6dc0cb | |
| parent | e537d6477dfa1eea86dc16c767b793fb530d1ebc (diff) | |
| parent | 6d84272d38a4d09819ae03f4d967195ec3bd660b (diff) | |
Pull merge from richard/viewer-chui
57 files changed, 929 insertions, 609 deletions
| @@ -36,7 +36,7 @@ indra/newview/fmod.dll  indra/newview/mozilla-theme  indra/newview/mozilla-universal-darwin.tgz  indra/newview/res/ll_icon.* -indra/newview/res-sdl +indra/newview/res-sdl/ll_icon.*  indra/newview/vivox-runtime  indra/server-linux-*  indra/temp @@ -1,355 +1,300 @@ -bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release  003dd9461bfa479049afcc34545ab3431b147c7c v2start -08398e650c222336bb2b6de0cd3bba944aef11b4 2-1rn1 -0962101bfa7df0643a6e625786025fe7f8a6dc97 2-1-beta-2 -12769e547e30067d494a6c01479a18107366ce2f beta-5 +52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3 +d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0 +7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f alpha-4 +7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f fork to viewer-20qa +d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5 +d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo +b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6  17fc2908e9a1ef34a9f53a41a393caf5c3cac390 beta-3-5 -19547b909b404552593be5ec7c18241e062a6d65 2-1-1-beta-1 -1e2b517adc2ecb342cd3c865f2a6ccf82a3cf8d7 2-1-beta-3  3469d90a115b900f8f250e137bbd9b684130f5d2 beta-4 -3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1 -434973a76ab2755f98ab55e1afc193e16692d5c5 2-1-1-beta-2 -46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start +12769e547e30067d494a6c01479a18107366ce2f beta-5  4f777ffb99fefdc6497c61385c22688ff149c659 viewer-2-0-0 -52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3  668851b2ef0f8cf8df07a0fba429e4a6c1e70abb viewer-2-0-1 -6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2 -7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f alpha-4 -7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f fork to viewer-20qa +08398e650c222336bb2b6de0cd3bba944aef11b4 2-1rn1  80bc6cff515118a36108967af49d3f8105c95bc9 viewer-2-0-2-start -87bfaf8c76f9b22d9c65d4b315358861be87c863 2-1-1-release +46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start +3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1 +0962101bfa7df0643a6e625786025fe7f8a6dc97 2-1-beta-2 +1e2b517adc2ecb342cd3c865f2a6ccf82a3cf8d7 2-1-beta-3 +c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4  b03065d018b8a2e28b7de85b293a4c992cb4c12d 2-1-release -b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6 +19547b909b404552593be5ec7c18241e062a6d65 2-1-1-beta-1 +6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2  bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2-1-1-release -c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4 -d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo -d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5 -d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0 +bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release  c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint -7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3  7076e22f9f43f479a4ea75eac447a36364bead5a 2.2.0-beta1 +7076e22f9f43f479a4ea75eac447a36364bead5a DRTVWR-5_2.2.0-beta1 +7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3  9822eb3e25f7fe0c28ffd8aba45c507caa383cbc 2.2.0-beta2 +9822eb3e25f7fe0c28ffd8aba45c507caa383cbc DRTVWR-3_2.2.0-beta2  b0cd7e150009809a0b5b0a9d5785cd4bb230413a 2.2.0-beta3 +b0cd7e150009809a0b5b0a9d5785cd4bb230413a DRTVWR-7_2.2.0-beta3  00a831292231faad7e44c69f76cb96f175b8dfad 2.2.0-beta4 -98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-beta1  1415e6538d54fd5d568ee88343424d57c6803c2c 2.2.0-release +1415e6538d54fd5d568ee88343424d57c6803c2c DRTVWR-8_2.2.0-release  98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-start  a3c12342b1af0951b8aa3b828aacef17fcea8178 2.3.0-beta1 +a3c12342b1af0951b8aa3b828aacef17fcea8178 DRTVWR-14_2.3.0-beta1  db0fe9bb65187f365e58a717dd23d0f4754a9c1d 2.3.0-beta2 +db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2  6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-beta3  6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-release +6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-13_2.3.0-release +6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-20_2.3.0-beta3  dbc206fc61d89ff4cfe15aade0bf0c7bc7fee1c9 2.4.0-start -dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1 -dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1  3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e 2.4.0-beta1 +3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e DRTVWR-26_2.4.0-beta1  25bd6007e3d2fc15db9326ed4b18a24a5969a46a 2.4.0-beta2 +25bd6007e3d2fc15db9326ed4b18a24a5969a46a DRTVWR-27_2.4.0-beta2  1ed382c6a08ba3850b6ce9061bc551ddece0ea07 2.4.0-release +1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release  a82e5b1e22c7f90e3c7977d146b80588f004ed0d 2.5.0-start -76f586a8e22b1abe6b2339758c8ac0fa718975de 76f586a8e22b -76f586a8e22b1abe6b2339758c8ac0fa718975de 76f586a8e22b -0000000000000000000000000000000000000000 76f586a8e22b -0000000000000000000000000000000000000000 76f586a8e22b -345b17e7cf630db77e840b4fe3451bd476d750a3 76f586a8e22b  345b17e7cf630db77e840b4fe3451bd476d750a3 2.5.0-beta1 -345b17e7cf630db77e840b4fe3451bd476d750a3 76f586a8e22b -0000000000000000000000000000000000000000 76f586a8e22b -54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f 2.5.0-beta2 -b542f8134a2bb5dd054ff4e509a44b2ee463b1bf nat-eventapi2-base -7076e22f9f43f479a4ea75eac447a36364bead5a DRTVWR-5_2.2.0-beta1 -9822eb3e25f7fe0c28ffd8aba45c507caa383cbc DRTVWR-3_2.2.0-beta2 -b0cd7e150009809a0b5b0a9d5785cd4bb230413a DRTVWR-7_2.2.0-beta3 -1415e6538d54fd5d568ee88343424d57c6803c2c DRTVWR-8_2.2.0-release -a3c12342b1af0951b8aa3b828aacef17fcea8178 DRTVWR-14_2.3.0-beta1 -db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2 -6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-20_2.3.0-beta3 -6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-13_2.3.0-release -3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e DRTVWR-26_2.4.0-beta1 -25bd6007e3d2fc15db9326ed4b18a24a5969a46a DRTVWR-27_2.4.0-beta2 -1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release  345b17e7cf630db77e840b4fe3451bd476d750a3 DRTVWR-32_2.5.0-beta1 +54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f 2.5.0-beta2 +54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33--2.5.0beta2  54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2  b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3 -b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3  b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-release  b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-31_2.5.0-release -3178e311da3a8739a85363665006ea3c4610cad4 dons-headless-hackathon-work +b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3 +b542f8134a2bb5dd054ff4e509a44b2ee463b1bf nat-eventapi2-base  63a6aedfce785a6c760377bf685b2dae616797d2 2.5.1-start  4dede9ae1ec74d41f6887719f6f1de7340d8578d 2.5.1-release  4dede9ae1ec74d41f6887719f6f1de7340d8578d DRTVWR-37_2.5.1-release -b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release  b53a0576eec80614d7767ed72b40ed67aeff27c9 2.5.2-release -92e58e51776a4f8c29069b1a62ff21454d2085f0 2.6.0-start -f1827b441e05bf37c68e2c15ebc6d09e9b03f527 2.6.0-start +b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release  4e9eec6a347f89b2b3f295beb72f1cf7837dff66 2.6.0-start  9283d6d1d7eb71dfe4c330e7c9144857e7356bde 2.6.0-beta1  9283d6d1d7eb71dfe4c330e7c9144857e7356bde DRTVWR-40_2.6.0-beta1 -9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2  9e4641f4a7870c0f565a25a2971368d5a29516a1 2.6.0-beta2 +9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2 +c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-beta1  c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-start  c5bdef3aaa2744626aef3c217ce29e1900d357b3 DRTVWR-43_2.6.1-beta1 -c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-beta1 -c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release -c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release  56b2778c743c2a964d82e1caf11084d76a87de2c 2.6.2-start -42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release -42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release -d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1  d1203046bb653b763f835b04d184646949d8dd5c 2.6.2-beta1 -214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release -214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release +d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1 +42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release +42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release +c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release +c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release  52b2263ab28f0976c689fd0b76c55a9eb027cdbf end-of-develop.py  ec32f1045e7c2644015245df3a9933620aa194b8 2.6.3-start -d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1  d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc 2.6.3-beta1 -0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2 +d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1  0630e977504af5ea320c58d33cae4e1ddee793e9 2.6.3-beta2 -7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd DRTVWR-50_2.6.5-beta1 +0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2 +3178e311da3a8739a85363665006ea3c4610cad4 dons-headless-hackathon-work +214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release +214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release  7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd 2.6.5-beta1 +7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd DRTVWR-50_2.6.5-beta1 +8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release +8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release  800cefce8d364ffdd2f383cbecb91294da3ea424 2.6.6-start -bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1  bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 2.6.6-beta1 +bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1  5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start -beafa8a9bd1d1b670b7523d865204dc4a4b38eef DRTVWR-55_2.6.8-beta1 -bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156 +dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release +dac76a711da5f1489a01c1fa62ec97d99c25736d DRTVWR-51_2.6.6-release  beafa8a9bd1d1b670b7523d865204dc4a4b38eef 2.6.8-beta1 -11d5d8080e67c3955914caf98f2eb116af30e55a 2.6.9-start +beafa8a9bd1d1b670b7523d865204dc4a4b38eef DRTVWR-55_2.6.8-beta1 +be2000b946f8cb3de5f44b2d419287d4c48ec4eb 2.6.8-release +be2000b946f8cb3de5f44b2d419287d4c48ec4eb DRTVWR-54_2.6.8-release  e67da2c6e3125966dd49eef98b36317afac1fcfe 2.6.9-start -77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-57_2.6.9-beta1  77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-beta1 -be2000b946f8cb3de5f44b2d419287d4c48ec4eb DRTVWR-54_2.6.8-release -be2000b946f8cb3de5f44b2d419287d4c48ec4eb 2.6.8-release -dac76a711da5f1489a01c1fa62ec97d99c25736d DRTVWR-51_2.6.6-release -dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release -8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release -8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release -77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-56_2.6.9-release  77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-release +77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-56_2.6.9-release +77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-57_2.6.9-beta1  8835e0e3c0d3a48244c287bc05811dfc2fba43ec 2.7.0-start -43c7ee846b7eed80786acbbf35d03bd016a3e85d DRTVWR-59_2.7.0-beta1  43c7ee846b7eed80786acbbf35d03bd016a3e85d 2.7.0-beta1 +43c7ee846b7eed80786acbbf35d03bd016a3e85d DRTVWR-59_2.7.0-beta1  54fd44ac92e4c61435ea33effe093a3527e18d98 2.7.1-start -0c4d0c24278074f219e5a32e72b449e78301d11b DRTVWR-61_2.7.1-beta1  0c4d0c24278074f219e5a32e72b449e78301d11b 2.7.1-beta1 -a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release -a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release +0c4d0c24278074f219e5a32e72b449e78301d11b DRTVWR-61_2.7.1-beta1  9f79a6ed8fdcd2f3dac33ea6b3236eeb278dccfe 2.7.2-start -e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1  e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb 2.7.2-beta1 +e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1  6a3e7e403bd19e45fdfc2fcc716867af3ab80861 2.7.3-start +fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release +fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release +fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release +fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release  6af10678de4736222b2c3f7e010e984fb5b327de 2.7.4-start -be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1  be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1 -057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release -057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release -a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release  be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1 -be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1 -a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release  19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start -09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1  09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1 +09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1 +e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1  e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start -502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start -c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188 -888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175 -2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155 -6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release -6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release  e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1 -e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1 -493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release -493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release -2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1 +057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release +057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release +6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release +6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release +502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start  2c7e459e0c883f8e406b932e41e60097e9ee077e 2.8.1-beta1 -29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release -29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release -4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix -4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix +2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1 +493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release +493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release  54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start -29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release -29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release  ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start -599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1 +29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release +29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release +4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix +4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix  599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1 -fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release -fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release -46a010f4885a9d223b511eac553ba5720284b1dc 3.0.0-start -b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1 -b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1 +599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1  6b678ea52f90d5c14181661dcd2546e25bde483e 3.0.0-start +b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1 +b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1 +fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release +fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release  82a2079ffcb57ecb1b3849cb41376b443e1eb912 3.0.1-start -364fd63517fbacbbcb9129d096187171ba8c9e48 DRTVWR-81_3.0.1-beta1  364fd63517fbacbbcb9129d096187171ba8c9e48 3.0.1-beta1 +364fd63517fbacbbcb9129d096187171ba8c9e48 DRTVWR-81_3.0.1-beta1  f2412ecd6740803ea9452f1d17fd872e263a0df7 3.0.2-start -1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-78_3.0.0-release -1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release -42784bf50fa01974bada2a1af3892ee09c93fcda DRTVWR-83_3.0.2-beta1  42784bf50fa01974bada2a1af3892ee09c93fcda 3.0.2-beta1 -e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2 +42784bf50fa01974bada2a1af3892ee09c93fcda DRTVWR-83_3.0.2-beta1 +1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release +1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release  e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e 3.0.2-beta2 +e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2  b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start -1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-78_3.0.0-release -0000000000000000000000000000000000000000 DRTVWR-78_3.0.0-release -1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release -6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1  6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 3.0.3-beta1 -586907287be581817b2422b5137971b22d54ea48 3.0.4-start -61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2 +6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1  61aa7974df089e8621fe9a4c69bcdefdb3cc208a 3.0.3-beta2 -0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release +61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2 +586907287be581817b2422b5137971b22d54ea48 3.0.4-start  0496d2f74043cf4e6058e76ac3db03d44cff42ce 3.0.3-release +0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release  92a3aa04775438226399b19deee12ac3b5a62838 3.0.5-start  c7282e59f374ee904bd793c3c444455e3399b0c5 3.1.0-start -2657fa785bbfac115852c41bd0adaff74c2ad5da DRTVWR-93_3.1.0-beta1  2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1 -dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2 -dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2 -dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2 -bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2 -dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2 +2657fa785bbfac115852c41bd0adaff74c2ad5da DRTVWR-93_3.1.0-beta1  bc01ee26fd0f1866e266429e85f76340523e91f1 3.1.0-beta2 -ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release +bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2  ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 3.1.0-release +ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release  a8230590e28e4f30f5105549e0e43211d9d55711 3.2.0-start -e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1  e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1 -9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2 +e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1  9bcc2b7176634254e501e3fb4c5b56c1f637852e 3.2.0-beta2 -2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3 +9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2  2a13d30ee50ccfed50268238e36bb90d738ccc9e 3.2.0-beta3 -3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release -3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release -c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start -3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release +2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3  3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release -40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start  3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release -3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release -9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1 +c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start  9e390d76807fa70d356b8716fb83b8ce42a629ef 3.2.1-beta1 -523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1 +9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1 +40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start  523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1 -80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start -a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release +523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1  a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release -a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release -fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release -a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release -fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release +a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release +80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start +3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1  3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start -a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release -fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release -a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release -fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release  3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1 -3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1 -8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start -fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release -fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release -bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release  bd6bcde2584491fd9228f1fa51c4575f4e764e19 3.2.4-release -3d2d5d244c6398a4214c666d5dd3965b0918709a DRTVWR-106_3.2.5-beta1 +bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release +8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start  3d2d5d244c6398a4214c666d5dd3965b0918709a 3.2.5-beta1 -65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d DRTVWR-107_3.2.5-beta2 +3d2d5d244c6398a4214c666d5dd3965b0918709a DRTVWR-106_3.2.5-beta1  65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d 3.2.5-beta2 -c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release +65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d DRTVWR-107_3.2.5-beta2  c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release +c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release  2174ed1c7129562428a5cfe8651ed77b8d26ae18 3.2.6-start +286d73ff5c19f6c00e023dc1b60975ed6bbe2872 3.2.6-beta1  286d73ff5c19f6c00e023dc1b60975ed6bbe2872 DRTVWR-109_3.2.6-beta1  4891c46a56fed7512c783b9cbe7cb7260727bf0c 3.2.7-start -286d73ff5c19f6c00e023dc1b60975ed6bbe2872 3.2.6-beta1 -c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release -c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release -3d75c836d178c7c7e788f256afe195f6cab764a2 DRTVWR-111_3.2.7-beta1  3d75c836d178c7c7e788f256afe195f6cab764a2 3.2.7-beta1 +3d75c836d178c7c7e788f256afe195f6cab764a2 DRTVWR-111_3.2.7-beta1  89980333c99dbaf1787fe20784f1d8849e9b5d4f 3.2.8-start -16f8e2915f3f2e4d732fb3125daf229cb0fd1875 DRTVWR-114_3.2.8-beta1 -37dd400ad721e2a89ee820ffc1e7e433c68f3ca2 3.2.9-start  16f8e2915f3f2e4d732fb3125daf229cb0fd1875 3.2.8-beta1 -089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161 -987425b1acf4752379b2e1eb20944b4b35d67a85 DRTVWR-115_3.2.8-beta2 +16f8e2915f3f2e4d732fb3125daf229cb0fd1875 DRTVWR-114_3.2.8-beta1  987425b1acf4752379b2e1eb20944b4b35d67a85 3.2.8-beta2 -51b2fd52e36aab8f670e0874e7e1472434ec4b4a DRTVWR-113_3.2.8-release +987425b1acf4752379b2e1eb20944b4b35d67a85 DRTVWR-115_3.2.8-beta2  51b2fd52e36aab8f670e0874e7e1472434ec4b4a 3.2.8-release -e9c82fca5ae6fb8a8af29012d78fb194a29323f3 DRTVWR-117_3.2.9-beta1 +51b2fd52e36aab8f670e0874e7e1472434ec4b4a DRTVWR-113_3.2.8-release +37dd400ad721e2a89ee820ffc1e7e433c68f3ca2 3.2.9-start  e9c82fca5ae6fb8a8af29012d78fb194a29323f3 3.2.9-beta1 -a01ef9bed28627f4ca543fbc1d70c79cc297a90f DRTVWR-118_3.2.9-beta2 +e9c82fca5ae6fb8a8af29012d78fb194a29323f3 DRTVWR-117_3.2.9-beta1  a01ef9bed28627f4ca543fbc1d70c79cc297a90f 3.2.9-beta2 -987425b1acf4752379b2e1eb20944b4b35d67a85 3.2.8-beta2 -d5f263687f43f278107363365938f0a214920a4b DRTVWR-119 +a01ef9bed28627f4ca543fbc1d70c79cc297a90f DRTVWR-118_3.2.9-beta2  d5f263687f43f278107363365938f0a214920a4b 3.3.0-beta1 -5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate -5e8d2662f38a66eca6c591295f5880d47afc73f7 3.3.0-release  d5f263687f43f278107363365938f0a214920a4b 3.3.0-start -dffd0457ee0745de65bf95f0642a5c9e46b8e2f0 viewer-beta-candidate  d5f263687f43f278107363365938f0a214920a4b DRTVWR-119 -d5f263687f43f278107363365938f0a214920a4b 3.3.0-beta1 -5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate  5e8d2662f38a66eca6c591295f5880d47afc73f7 3.3.0-release -28b95a6a28dca3338d9a1f4f204b96678df9f6a5 viewer-beta-candidate -b43cd25be49e3984ff5361cefad020e069131d98 3.3.1-start -3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 DRTVWR-125 -dffd0457ee0745de65bf95f0642a5c9e46b8e2f0 viewer-beta-candidate -3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 viewer-beta-candidate -3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 viewer-beta-candidate  3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 3.3.1-start +3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 DRTVWR-125  28b95a6a28dca3338d9a1f4f204b96678df9f6a5 3.3.1-beta1 -1dc545e44617975da2a4a32fe303386c687a6ca1 viewer-beta-candidate  1dc545e44617975da2a4a32fe303386c687a6ca1 3.3.1-beta2  1dc545e44617975da2a4a32fe303386c687a6ca1 DRTVWR-139 -5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate -c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate +1dc545e44617975da2a4a32fe303386c687a6ca1 viewer-beta-candidate  c623bbc854b6f7ee1b33a3718f76715046aa2937 3.3.1-release  d29a260119f8d5a5d168e25fed0c7ea6b3f40161 3.3.2-beta1  675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-beta2 -c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate -675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate  675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-release -675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate -050e48759337249130f684b4a21080b683f61732 DRTVWR-168 -b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171 -c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163 -600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162 -600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162 -9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157 -a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159 -24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153  15e90b52dc0297921b022b90d10d797436b8a1bd viewer-release-candidate +bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156  6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148 -1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c DRTVWR-144 -1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c 3.3.3-beta1 +2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155 +24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153  5910f8063a7e1ddddf504c2f35ca831cc5e8f469 DRTVWR-160 -1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c 3.3.3-beta1  f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 3.3.3-beta1 -1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c DRTVWR-144  f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 DRTVWR-144  2d6c0634b11e6f3df11002b8510a72a0433da00a DRTVWR-164 +600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162  80b5e5e9775966d3839331ffa7a16a60f9d7c930 DRTVWR-165  fdcc08a4f20ae9bb060f4693c8980d216534efdf 3.3.3-beta2  af5f3e43e6e4424b1da19d9e16f6b853a7b822ed DRTVWR-169  4b3c68199a86cabaa5d9466d7b0f7e141e901d7a 3.3.3-beta3  6428242e124b523813bfaf4c45b3d422f0298c81 3.3.3-release -57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176 +a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159 +9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157 +089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161 +c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163 +b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171 +050e48759337249130f684b4a21080b683f61732 DRTVWR-168  09ef7fd1b0781f33b8a3a9af6236b7bcb4831910 DRTVWR-170 -005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167 -f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 3.3.4-beta1  f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 DRTVWR-158 -f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 3.3.4-beta1 -cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174 -bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173  f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1 +bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173 +cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174  82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2 +57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176  eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177 -4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179  a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3  4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180 -9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184  5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183  6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4 +9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184  ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5  28e100d0379a2b0710c57647a28fc5239d3d7b99 3.3.4-release +005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167 +888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175 +4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179  a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182  1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1 -81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186 -cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181  9ee9387789701d597130f879d9011a4958753862 DRTVWR-189 +47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190 +421126293dcbde918e0da027ca0ab9deb5b4fbf2 DRTVWR-192 +33a2fc7a910ae29ff8b4850316ed7fbff9f64d33 DRTVWR-195 +e9732c739c8a72a590216951505ea9c76a526a84 DRTVWR-193 +7602f61c804a512764e349c034c02ddabeefebc4 DRTVWR-196 +ae5c83dd61d2d37c45f1d5b8bf2b036d87599f1b DRTVWR-198 +507bdfbd6bf844a511c1ffeda4baa80016ed1346 DRTVWR-197 +b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2 +37402e2b19af970d51b0a814d79892cc5647532b DRTVWR-200 +182a9bf30e81070361bb020a78003b1cf398e79c 3.4.0-beta3 +6dfb0fba782c9233dd95f24ec48146db0d3f210b DRTVWR-199 +7c9102fb998885621919f2474a002c35b583539b 3.3.4-release2 +7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201 +84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4 diff --git a/autobuild.xml b/autobuild.xml index 0ff952be5b..b7a73f2c75 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1254,11 +1254,11 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>de22a97b276913a6dd05838b7fe297af</string> +              <string>0578fa67ef9906c6aaa326f51db2669f</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/Darwin/installer/llphysicsextensions_source-0.3-darwin-20120725.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Darwin/installer/llphysicsextensions_source-0.3-darwin-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string> @@ -1268,9 +1268,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>d2dfbbc11aac34ebd551df86524c8c9c</string> +              <string>b706fdeed4ce2182d434043dc33d9d1d</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120725.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string> @@ -1280,9 +1280,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>99abccc5d117ab82cadb8cff0d85b867</string> +              <string>0cebd359ea732a7db363d88f9886a1ef</string>                <key>url</key> -              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/CYGWIN/installer/llphysicsextensions_source-0.3-windows-20120725.tar.bz2</string> +              <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/CYGWIN/installer/llphysicsextensions_source-0.3-windows-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> @@ -1306,11 +1306,11 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>3528620230fbd288fcc9dbbd8d8a6b59</string> +              <string>3ae798d4dfb54a1d806ee5f8b31f7626</string>                <key>hash_algorithm</key>                <string>md5</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/Darwin/installer/llphysicsextensions_stub-0.3-darwin-20120725.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/Darwin/installer/llphysicsextensions_stub-0.3-darwin-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>darwin</string> @@ -1320,9 +1320,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>69d188f72f9494b0e74c94ca0496f618</string> +              <string>aa8a2f25e8629cf5e6a96cc0eb93de8e</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/Linux/installer/llphysicsextensions_stub-0.3-linux-20120725.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/Linux/installer/llphysicsextensions_stub-0.3-linux-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string> @@ -1332,9 +1332,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>61fc2b84ad53cf8d98d1784c31f9928e</string> +              <string>3ea4cee6a8dd4c89fbfd3ad6abd703c2</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/CYGWIN/installer/llphysicsextensions_stub-0.3-windows-20120725.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/CYGWIN/installer/llphysicsextensions_stub-0.3-windows-20120814.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index a6f69a09e9..543075db5b 100644..100755 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -201,6 +201,15 @@ FUNCTION(LL_ADD_INTEGRATION_TEST    endif(TEST_DEBUG)    ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})    SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}") +  if (WINDOWS) +    set_target_properties(INTEGRATION_TEST_${testname} +      PROPERTIES  +      LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc" +      LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO" +      LINK_FLAGS_RELEASE "" +      ) +  endif(WINDOWS) +    if(STANDALONE)      SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")    endif(STANDALONE) diff --git a/indra/cmake/LLCommon.cmake b/indra/cmake/LLCommon.cmake index 17e211cb99..d4694ad37a 100644 --- a/indra/cmake/LLCommon.cmake +++ b/indra/cmake/LLCommon.cmake @@ -24,7 +24,7 @@ endif (LINUX)  add_definitions(${TCMALLOC_FLAG}) -set(LLCOMMON_LINK_SHARED ON CACHE BOOL "Build the llcommon target as a shared library.") +set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a shared library.")  if(LLCOMMON_LINK_SHARED)    add_definitions(-DLL_COMMON_LINK_SHARED=1)  endif(LLCOMMON_LINK_SHARED) diff --git a/indra/llcommon/llstat.cpp b/indra/llcommon/llstat.cpp index 057257057f..b82d52797e 100644 --- a/indra/llcommon/llstat.cpp +++ b/indra/llcommon/llstat.cpp @@ -40,7 +40,6 @@  S32	            LLPerfBlock::sStatsFlags = LLPerfBlock::LLSTATS_NO_OPTIONAL_STATS;       // Control what is being recorded  LLPerfBlock::stat_map_t    LLPerfBlock::sStatMap;    // Map full path string to LLStatTime objects, tracks all active objects  std::string        LLPerfBlock::sCurrentStatPath = "";    // Something like "/total_time/physics/physics step" -LLStat::stat_map_t LLStat::sStatList;  //------------------------------------------------------------------------  // Live config file to trigger stats logging @@ -771,13 +770,19 @@ void LLStat::init()  	if (!mName.empty())  	{ -		stat_map_t::iterator iter = sStatList.find(mName); -		if (iter != sStatList.end()) +		stat_map_t::iterator iter = getStatList().find(mName); +		if (iter != getStatList().end())  			llwarns << "LLStat with duplicate name: " << mName << llendl; -		sStatList.insert(std::make_pair(mName, this)); +		getStatList().insert(std::make_pair(mName, this));  	}  } +LLStat::stat_map_t& LLStat::getStatList() +{ +	static LLStat::stat_map_t stat_list; +	return stat_list; +} +  LLStat::LLStat(const U32 num_bins, const BOOL use_frame_timer)  	: mUseFrameTimer(use_frame_timer),  	  mNumBins(num_bins) @@ -803,10 +808,10 @@ LLStat::~LLStat()  	if (!mName.empty())  	{  		// handle multiple entries with the same name -		stat_map_t::iterator iter = sStatList.find(mName); -		while (iter != sStatList.end() && iter->second != this) +		stat_map_t::iterator iter = getStatList().find(mName); +		while (iter != getStatList().end() && iter->second != this)  			++iter; -		sStatList.erase(iter); +		getStatList().erase(iter);  	}  } diff --git a/indra/llcommon/llstat.h b/indra/llcommon/llstat.h index b877432e86..1a8404cc07 100644 --- a/indra/llcommon/llstat.h +++ b/indra/llcommon/llstat.h @@ -263,9 +263,9 @@ class LL_COMMON_API LLStat  {  private:  	typedef std::multimap<std::string, LLStat*> stat_map_t; -	static stat_map_t sStatList;  	void init(); +	static stat_map_t& getStatList();  public:  	LLStat(U32 num_bins = 32, BOOL use_frame_timer = FALSE); @@ -342,8 +342,8 @@ public:  	static LLStat* getStat(const std::string& name)  	{  		// return the first stat that matches 'name' -		stat_map_t::iterator iter = sStatList.find(name); -		if (iter != sStatList.end()) +		stat_map_t::iterator iter = getStatList().find(name); +		if (iter != getStatList().end())  			return iter->second;  		else  			return NULL; diff --git a/indra/llmessage/llavatarnamecache.cpp b/indra/llmessage/llavatarnamecache.cpp index 97f2792686..ff31f7665e 100644 --- a/indra/llmessage/llavatarnamecache.cpp +++ b/indra/llmessage/llavatarnamecache.cpp @@ -651,8 +651,10 @@ void LLAvatarNameCache::fireSignal(const LLUUID& agent_id,  	signal(agent_id, av_name);  } -void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot) +LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)  { +	callback_connection_t connection; +  	if (sRunning)  	{  		// ...only do immediate lookups when cache is running @@ -668,7 +670,7 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)  				{  					// ...name already exists in cache, fire callback now  					fireSignal(agent_id, slot, av_name); -					return; +					return connection;  				}  			}  		} @@ -681,7 +683,7 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)  				LLAvatarName av_name;  				buildLegacyName(full_name, &av_name);  				fireSignal(agent_id, slot, av_name); -				return; +				return connection;  			}  		}  	} @@ -698,15 +700,17 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)  	{  		// ...new callback for this id  		callback_signal_t* signal = new callback_signal_t(); -		signal->connect(slot); +		connection = signal->connect(slot);  		sSignalMap[agent_id] = signal;  	}  	else  	{  		// ...existing callback, bind additional slot  		callback_signal_t* signal = sig_it->second; -		signal->connect(slot); +		connection = signal->connect(slot);  	} + +	return connection;  } diff --git a/indra/llmessage/llavatarnamecache.h b/indra/llmessage/llavatarnamecache.h index 59c1329ffa..064942fe53 100644 --- a/indra/llmessage/llavatarnamecache.h +++ b/indra/llmessage/llavatarnamecache.h @@ -71,10 +71,11 @@ namespace LLAvatarNameCache  		void (const LLUUID& agent_id, const LLAvatarName& av_name)>  			callback_signal_t;  	typedef callback_signal_t::slot_type callback_slot_t; +	typedef boost::signals2::connection callback_connection_t;  	// Fetches name information and calls callback.  	// If name information is in cache, callback will be called immediately. -	void get(const LLUUID& agent_id, callback_slot_t slot); +	callback_connection_t get(const LLUUID& agent_id, callback_slot_t slot);  	// Allow display names to be explicitly disabled for testing.  	void setUseDisplayNames(bool use); diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index f57790aff6..11004fe390 100644 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -288,7 +288,7 @@ void LLFolderView::addFolder( LLFolderViewFolder* folder)  	//{  	//	mFolders.insert(mFolders.begin(), folder);  	//} -} +	}  void LLFolderView::closeAllFolders()  { @@ -311,7 +311,7 @@ void LLFolderView::openTopLevelFolders()  // *width should be 0  // conform show folder state works  S32 LLFolderView::arrange( S32* unused_width, S32* unused_height ) -	{ +		{  	mMinWidth = 0;  	S32 target_height; @@ -340,7 +340,7 @@ void LLFolderView::filter( LLFolderViewFilter& filter )  	filter.setFilterCount(llclamp(LLUI::sSettingGroups["config"]->getS32("FilterItemsPerFrame"), 1, 5000));  	getViewModelItem()->filter(filter); -	} +}  void LLFolderView::reshape(S32 width, S32 height, BOOL called_from_parent)  { @@ -761,8 +761,8 @@ void LLFolderView::removeSelectedItems()  				{  					// change selection on successful delete  					setSelection(item_to_select, item_to_select ? item_to_select->isOpen() : false, mParentPanel->hasFocus()); +					}  				} -			}  			arrangeAll();  		}  		else if (count > 1) @@ -858,7 +858,7 @@ void LLFolderView::propertiesSelectedItems( void )  	//		multi_propertiesp->openFloater(LLSD());  	//	}  	//} -		} +}  void LLFolderView::autoOpenItem( LLFolderViewFolder* item ) @@ -1718,14 +1718,13 @@ void LLFolderView::update()  	// filter to determine visibility before arranging  	filter(getFolderViewModel()->getFilter()); -  	// Clear the modified setting on the filter only if the filter count is non-zero after running the filter process  	// Note: if the filter count is zero, then the filter most likely halted before completing the entire set of items  	if (getFolderViewModel()->getFilter().isModified() && (getFolderViewModel()->getFilter().getFilterCount() > 0))  	{  		getFolderViewModel()->getFilter().clearModified();  	} - +			  	// automatically show matching items, and select first one if we had a selection  	if (mNeedsAutoSelect)  	{ @@ -2033,31 +2032,31 @@ void LLFolderView::onRenamerLost()  	}  } -S32 LLFolderView::getItemHeight() -{ -	if(!hasVisibleChildren()) -{ -		//We need to display status textbox, let's reserve some place for it -		return llmax(0, mStatusTextBox->getTextPixelHeight()); -} -	return 0; -} -  LLFolderViewItem* LLFolderView::getNextUnselectedItem()  {  	LLFolderViewItem* last_item = *mSelectedItems.rbegin();  	LLFolderViewItem* new_selection = last_item->getNextOpenNode(FALSE);  	while(new_selection && new_selection->isSelected()) -{ +	{  		new_selection = new_selection->getNextOpenNode(FALSE); -} +	}  	if (!new_selection) -{ +	{  		new_selection = last_item->getPreviousOpenNode(FALSE);  		while (new_selection && (new_selection->isInSelection())) -	{ +		{  			new_selection = new_selection->getPreviousOpenNode(FALSE); +		}  	} -}  	return new_selection;  } + +S32 LLFolderView::getItemHeight() +{ +	if(!hasVisibleChildren()) +{ +		//We need to display status textbox, let's reserve some place for it +		return llmax(0, mStatusTextBox->getTextPixelHeight()); +} +	return 0; +} diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp index b172359851..52923389cd 100644 --- a/indra/llui/llfolderviewitem.cpp +++ b/indra/llui/llfolderviewitem.cpp @@ -117,7 +117,7 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)  	if (mViewModelItem)  	{  		mViewModelItem->setFolderViewItem(this); -	} +}  }  BOOL LLFolderViewItem::postBuild() @@ -219,11 +219,11 @@ void LLFolderViewItem::refresh()  	mIconOpen = vmi.getIconOpen();  	mIconOverlay = vmi.getIconOverlay(); -	if (mRoot->useLabelSuffix()) -	{ +		if (mRoot->useLabelSuffix()) +		{  		mLabelStyle = vmi.getLabelStyle();  		mLabelSuffix = vmi.getLabelSuffix(); -	} +}  	//TODO RN: make sure this logic still fires  	//std::string searchable_label(mLabel); @@ -253,7 +253,7 @@ void LLFolderViewItem::arrangeAndSet(BOOL set_selection,  	LLFolderView* root = getRoot();  	if (getParentFolder())  	{ -		getParentFolder()->requestArrange(); +	getParentFolder()->requestArrange();  	}  	if(set_selection)  	{ @@ -365,12 +365,12 @@ void LLFolderViewItem::selectItem(void)  BOOL LLFolderViewItem::isMovable()  {  	return getViewModelItem()->isItemMovable(); -} +	}  BOOL LLFolderViewItem::isRemovable()  {  	return getViewModelItem()->isItemRemovable(); -	} +}  void LLFolderViewItem::destroyView()  { @@ -400,14 +400,14 @@ BOOL LLFolderViewItem::remove()  void LLFolderViewItem::buildContextMenu(LLMenuGL& menu, U32 flags)  {  	getViewModelItem()->buildContextMenu(menu, flags); -} +	}  void LLFolderViewItem::openItem( void )  {  	if (mAllowOpen)  	{  	getViewModelItem()->openItem(); -} +	}  }  void LLFolderViewItem::rename(const std::string& new_name) @@ -421,7 +421,7 @@ void LLFolderViewItem::rename(const std::string& new_name)  const std::string& LLFolderViewItem::getName( void ) const  {  	return getViewModelItem()->getName(); -} +	}  // LLView functionality  BOOL LLFolderViewItem::handleRightMouseDown( S32 x, S32 y, MASK mask ) @@ -484,7 +484,7 @@ BOOL LLFolderViewItem::handleHover( S32 x, S32 y, MASK mask )  		if( (x - mDragStartX) * (x - mDragStartX) + (y - mDragStartY) * (y - mDragStartY) > drag_and_drop_threshold() * drag_and_drop_threshold()   			&& root->getCurSelectedItem()  			&& root->startDrag()) -				{ +			{  					// RN: when starting drag and drop, clear out last auto-open  					root->autoOpenTest(NULL);  					root->setShowSelectionContext(TRUE); @@ -496,7 +496,7 @@ BOOL LLFolderViewItem::handleHover( S32 x, S32 y, MASK mask )  			getWindow()->setCursor(UI_CURSOR_ARROW);  			return TRUE; -			} +				}  		else  		{  			getWindow()->setCursor(UI_CURSOR_NOLOCKED); @@ -758,7 +758,7 @@ void LLFolderViewItem::draw()  		LLUIImage* box_image = default_params.selection_image;  		LLRect box_rect(left, top, right, bottom);  		box_image->draw(box_rect, sFilterBGColor); -	} +		}  	LLColor4 color = (mIsSelected && filled) ? sHighlightFgColor : sFgColor;  	//TODO RN: implement this in terms of getColor() @@ -785,15 +785,15 @@ void LLFolderViewItem::draw()  	//--------------------------------------------------------------------------------//  	// Highlight string match  	// -	if (filter_string_length > 0) -	{ +		if (filter_string_length > 0) +		{  		F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, mViewModelItem->getFilterStringOffset()); -		F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD; +			F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;  		font->renderUTF8( combined_string, mViewModelItem->getFilterStringOffset(), match_string_left, yy, -							sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -							filter_string_length, S32_MAX, &right_x, FALSE ); +							  sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, +							  filter_string_length, S32_MAX, &right_x, FALSE ); +		}  	} -}  const LLFolderViewModelInterface* LLFolderViewItem::getFolderViewModel( void ) const  { @@ -1384,7 +1384,7 @@ void LLFolderViewFolder::destroyView()  	}  	LLFolderViewItem::destroyView(); -} +	}  // extractItem() removes the specified item from the folder, but  // doesn't delete it. @@ -1418,7 +1418,7 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )  BOOL LLFolderViewFolder::isMovable()  {  	if( !(getViewModelItem()->isItemMovable()) ) -		{ +	{  			return FALSE;  		} @@ -1448,7 +1448,7 @@ BOOL LLFolderViewFolder::isMovable()  BOOL LLFolderViewFolder::isRemovable()  {  	if( !(getViewModelItem()->isItemRemovable()) ) -		{ +	{  			return FALSE;  		} @@ -1478,7 +1478,7 @@ BOOL LLFolderViewFolder::isRemovable()  void LLFolderViewFolder::addItem(LLFolderViewItem* item)  {  	if (item->getParentFolder()) -	{ +{  		item->getParentFolder()->extractItem(item);  	}  	item->setParentFolder(this); @@ -1487,10 +1487,10 @@ void LLFolderViewFolder::addItem(LLFolderViewItem* item)  	item->setRect(LLRect(0, 0, getRect().getWidth(), 0));  	item->setVisible(FALSE); - +	  	addChild(item);  	getViewModelItem()->addChild(item->getViewModelItem()); - +	  	//TODO RN - make sort bubble up as long as parent Folder doesn't have anything matching sort criteria  	//// Traverse parent folders and update creation date and resort, if necessary  	//LLFolderViewFolder* parentp = this; @@ -1508,11 +1508,11 @@ void LLFolderViewFolder::addItem(LLFolderViewItem* item)  // this is an internal method used for adding items to folders.   void LLFolderViewFolder::addFolder(LLFolderViewFolder* folder) -{ -	if (folder->mParentFolder)  	{ +	if (folder->mParentFolder) +		{  		folder->mParentFolder->extractItem(folder); -	} +		}  	folder->mParentFolder = this;  	mFolders.push_back(folder);  	folder->setOrigin(0, 0); @@ -1524,20 +1524,20 @@ void LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)  	addChild( folder );  	getViewModelItem()->addChild(folder->getViewModelItem()); -} +	}  void LLFolderViewFolder::requestArrange()  {   	//if ( mLastArrangeGeneration != -1)  	{ -		mLastArrangeGeneration = -1;  -		// flag all items up to root -		if (mParentFolder) -		{ -			mParentFolder->requestArrange(); +	mLastArrangeGeneration = -1;  +	// flag all items up to root +	if (mParentFolder) +	{ +		mParentFolder->requestArrange(); +	}  		}  	} -}  void LLFolderViewFolder::toggleOpen()  { diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp index ee87d01239..f8797fd257 100644 --- a/indra/llui/tests/llurlentry_stub.cpp +++ b/indra/llui/tests/llurlentry_stub.cpp @@ -40,9 +40,10 @@ bool LLAvatarNameCache::get(const LLUUID& agent_id, LLAvatarName *av_name)  	return false;  } -void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot) +LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)  { -	return; +	callback_connection_t connection; +	return connection;  }  bool LLAvatarNameCache::useDisplayNames() diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 32bb84cba5..97637c937f 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -2809,42 +2809,48 @@ const char* cursorIDToName(int id)  {  	switch (id)  	{ -		case UI_CURSOR_ARROW:			return "UI_CURSOR_ARROW"; -		case UI_CURSOR_WAIT:			return "UI_CURSOR_WAIT"; -		case UI_CURSOR_HAND:			return "UI_CURSOR_HAND"; -		case UI_CURSOR_IBEAM:			return "UI_CURSOR_IBEAM"; -		case UI_CURSOR_CROSS:			return "UI_CURSOR_CROSS"; -		case UI_CURSOR_SIZENWSE:		return "UI_CURSOR_SIZENWSE"; -		case UI_CURSOR_SIZENESW:		return "UI_CURSOR_SIZENESW"; -		case UI_CURSOR_SIZEWE:			return "UI_CURSOR_SIZEWE"; -		case UI_CURSOR_SIZENS:			return "UI_CURSOR_SIZENS"; -		case UI_CURSOR_NO:				return "UI_CURSOR_NO"; -		case UI_CURSOR_WORKING:			return "UI_CURSOR_WORKING"; -		case UI_CURSOR_TOOLGRAB:		return "UI_CURSOR_TOOLGRAB"; -		case UI_CURSOR_TOOLLAND:		return "UI_CURSOR_TOOLLAND"; -		case UI_CURSOR_TOOLFOCUS:		return "UI_CURSOR_TOOLFOCUS"; -		case UI_CURSOR_TOOLCREATE:		return "UI_CURSOR_TOOLCREATE"; -		case UI_CURSOR_ARROWDRAG:		return "UI_CURSOR_ARROWDRAG"; -		case UI_CURSOR_ARROWCOPY:		return "UI_CURSOR_ARROWCOPY"; -		case UI_CURSOR_ARROWDRAGMULTI:	return "UI_CURSOR_ARROWDRAGMULTI"; -		case UI_CURSOR_ARROWCOPYMULTI:	return "UI_CURSOR_ARROWCOPYMULTI"; -		case UI_CURSOR_NOLOCKED:		return "UI_CURSOR_NOLOCKED"; -		case UI_CURSOR_ARROWLOCKED:		return "UI_CURSOR_ARROWLOCKED"; -		case UI_CURSOR_GRABLOCKED:		return "UI_CURSOR_GRABLOCKED"; -		case UI_CURSOR_TOOLTRANSLATE:	return "UI_CURSOR_TOOLTRANSLATE"; -		case UI_CURSOR_TOOLROTATE:		return "UI_CURSOR_TOOLROTATE"; -		case UI_CURSOR_TOOLSCALE:		return "UI_CURSOR_TOOLSCALE"; -		case UI_CURSOR_TOOLCAMERA:		return "UI_CURSOR_TOOLCAMERA"; -		case UI_CURSOR_TOOLPAN:			return "UI_CURSOR_TOOLPAN"; -		case UI_CURSOR_TOOLZOOMIN:		return "UI_CURSOR_TOOLZOOMIN"; -		case UI_CURSOR_TOOLPICKOBJECT3:	return "UI_CURSOR_TOOLPICKOBJECT3"; -		case UI_CURSOR_TOOLPLAY:		return "UI_CURSOR_TOOLPLAY"; -		case UI_CURSOR_TOOLPAUSE:		return "UI_CURSOR_TOOLPAUSE"; -		case UI_CURSOR_TOOLMEDIAOPEN:	return "UI_CURSOR_TOOLMEDIAOPEN"; -		case UI_CURSOR_PIPETTE:			return "UI_CURSOR_PIPETTE"; -		case UI_CURSOR_TOOLSIT:			return "UI_CURSOR_TOOLSIT"; -		case UI_CURSOR_TOOLBUY:			return "UI_CURSOR_TOOLBUY"; -		case UI_CURSOR_TOOLOPEN:		return "UI_CURSOR_TOOLOPEN"; +		case UI_CURSOR_ARROW:							return "UI_CURSOR_ARROW"; +		case UI_CURSOR_WAIT:							return "UI_CURSOR_WAIT"; +		case UI_CURSOR_HAND:							return "UI_CURSOR_HAND"; +		case UI_CURSOR_IBEAM:							return "UI_CURSOR_IBEAM"; +		case UI_CURSOR_CROSS:							return "UI_CURSOR_CROSS"; +		case UI_CURSOR_SIZENWSE:						return "UI_CURSOR_SIZENWSE"; +		case UI_CURSOR_SIZENESW:						return "UI_CURSOR_SIZENESW"; +		case UI_CURSOR_SIZEWE:							return "UI_CURSOR_SIZEWE"; +		case UI_CURSOR_SIZENS:							return "UI_CURSOR_SIZENS"; +		case UI_CURSOR_NO:								return "UI_CURSOR_NO"; +		case UI_CURSOR_WORKING:							return "UI_CURSOR_WORKING"; +		case UI_CURSOR_TOOLGRAB:						return "UI_CURSOR_TOOLGRAB"; +		case UI_CURSOR_TOOLLAND:						return "UI_CURSOR_TOOLLAND"; +		case UI_CURSOR_TOOLFOCUS:						return "UI_CURSOR_TOOLFOCUS"; +		case UI_CURSOR_TOOLCREATE:						return "UI_CURSOR_TOOLCREATE"; +		case UI_CURSOR_ARROWDRAG:						return "UI_CURSOR_ARROWDRAG"; +		case UI_CURSOR_ARROWCOPY:						return "UI_CURSOR_ARROWCOPY"; +		case UI_CURSOR_ARROWDRAGMULTI:					return "UI_CURSOR_ARROWDRAGMULTI"; +		case UI_CURSOR_ARROWCOPYMULTI:					return "UI_CURSOR_ARROWCOPYMULTI"; +		case UI_CURSOR_NOLOCKED:						return "UI_CURSOR_NOLOCKED"; +		case UI_CURSOR_ARROWLOCKED:						return "UI_CURSOR_ARROWLOCKED"; +		case UI_CURSOR_GRABLOCKED:						return "UI_CURSOR_GRABLOCKED"; +		case UI_CURSOR_TOOLTRANSLATE:					return "UI_CURSOR_TOOLTRANSLATE"; +		case UI_CURSOR_TOOLROTATE:						return "UI_CURSOR_TOOLROTATE"; +		case UI_CURSOR_TOOLSCALE:						return "UI_CURSOR_TOOLSCALE"; +		case UI_CURSOR_TOOLCAMERA:						return "UI_CURSOR_TOOLCAMERA"; +		case UI_CURSOR_TOOLPAN:							return "UI_CURSOR_TOOLPAN"; +		case UI_CURSOR_TOOLZOOMIN:						return "UI_CURSOR_TOOLZOOMIN"; +		case UI_CURSOR_TOOLPICKOBJECT3:					return "UI_CURSOR_TOOLPICKOBJECT3"; +		case UI_CURSOR_TOOLPLAY:						return "UI_CURSOR_TOOLPLAY"; +		case UI_CURSOR_TOOLPAUSE:						return "UI_CURSOR_TOOLPAUSE"; +		case UI_CURSOR_TOOLMEDIAOPEN:					return "UI_CURSOR_TOOLMEDIAOPEN"; +		case UI_CURSOR_PIPETTE:							return "UI_CURSOR_PIPETTE"; +		case UI_CURSOR_TOOLSIT:							return "UI_CURSOR_TOOLSIT"; +		case UI_CURSOR_TOOLBUY:							return "UI_CURSOR_TOOLBUY"; +		case UI_CURSOR_TOOLOPEN:						return "UI_CURSOR_TOOLOPEN"; +		case UI_CURSOR_TOOLPATHFINDING:					return "UI_CURSOR_PATHFINDING"; +		case UI_CURSOR_TOOLPATHFINDING_PATH_START:		return "UI_CURSOR_PATHFINDING_START"; +		case UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD:	return "UI_CURSOR_PATHFINDING_START_ADD"; +		case UI_CURSOR_TOOLPATHFINDING_PATH_END:		return "UI_CURSOR_PATHFINDING_END"; +		case UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD:	return "UI_CURSOR_PATHFINDING_END_ADD"; +		case UI_CURSOR_TOOLNO:							return "UI_CURSOR_NO";  	}  	llerrs << "cursorIDToName: unknown cursor id" << id << llendl; @@ -2950,6 +2956,12 @@ void LLWindowMacOSX::updateCursor()  	case UI_CURSOR_TOOLSIT:  	case UI_CURSOR_TOOLBUY:  	case UI_CURSOR_TOOLOPEN: +	case UI_CURSOR_TOOLPATHFINDING: +	case UI_CURSOR_TOOLPATHFINDING_PATH_START: +	case UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD: +	case UI_CURSOR_TOOLPATHFINDING_PATH_END: +	case UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD: +	case UI_CURSOR_TOOLNO:  		result = setImageCursor(gCursors[mNextCursor]);  		break; @@ -2994,6 +3006,12 @@ void LLWindowMacOSX::initCursors()  	initPixmapCursor(UI_CURSOR_TOOLSIT, 20, 15);  	initPixmapCursor(UI_CURSOR_TOOLBUY, 20, 15);  	initPixmapCursor(UI_CURSOR_TOOLOPEN, 20, 15); +	initPixmapCursor(UI_CURSOR_TOOLPATHFINDING, 16, 16); +	initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START, 16, 16); +	initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD, 16, 16); +	initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END, 16, 16); +	initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD, 16, 16); +	initPixmapCursor(UI_CURSOR_TOOLNO, 8, 8);  	initPixmapCursor(UI_CURSOR_SIZENWSE, 10, 10);  	initPixmapCursor(UI_CURSOR_SIZENESW, 10, 10); diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index 3d33af9d9b..3bf4a48cb6 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -2117,6 +2117,12 @@ void LLWindowSDL::initCursors()  	mSDLCursors[UI_CURSOR_TOOLSIT] = makeSDLCursorFromBMP("toolsit.BMP",20,15);  	mSDLCursors[UI_CURSOR_TOOLBUY] = makeSDLCursorFromBMP("toolbuy.BMP",20,15);  	mSDLCursors[UI_CURSOR_TOOLOPEN] = makeSDLCursorFromBMP("toolopen.BMP",20,15); +	mSDLCursors[UI_CURSOR_TOOLPATHFINDING] = makeSDLCursorFromBMP("lltoolpathfinding.BMP", 16, 16); +	mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_START] = makeSDLCursorFromBMP("lltoolpathfindingpathstart.BMP", 16, 16); +	mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD] = makeSDLCursorFromBMP("lltoolpathfindingpathstartadd.BMP", 16, 16); +	mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END] = makeSDLCursorFromBMP("lltoolpathfindingpathend.BMP", 16, 16); +	mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD] = makeSDLCursorFromBMP("lltoolpathfindingpathendadd.BMP", 16, 16); +	mSDLCursors[UI_CURSOR_TOOLNO] = makeSDLCursorFromBMP("llno.BMP",8,8);  	if (getenv("LL_ATI_MOUSE_CURSOR_BUG") != NULL) {  		llinfos << "Disabling cursor updating due to LL_ATI_MOUSE_CURSOR_BUG" << llendl; diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index c49c625dbd..b94c33587b 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -45,7 +45,10 @@ include(VisualLeakDetector)  include(GLOD)  include(CMakeCopyIfDifferent) -add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions) +if (NOT HAVOK_TPV) +   # When using HAVOK_TPV, the library is precompiled, so no need for this +   add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions) +endif (NOT HAVOK_TPV)  include_directories(      ${DBUSGLIB_INCLUDE_DIRS} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 47e944bc26..61bc58b1df 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5045,7 +5045,7 @@      <key>LoginLocation</key>      <map>        <key>Comment</key> -      <string>Login location ('last', 'home')</string> +      <string>Default Login location ('last', 'home') preference</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -6145,7 +6145,7 @@      <key>NextLoginLocation</key>      <map>        <key>Comment</key> -      <string>Location to log into by default.</string> +      <string>Location to log into for this session - set from command line or the login panel, cleared following a successfull login.</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tifBinary files differ new file mode 100644 index 0000000000..ba6f30fa0e --- /dev/null +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tifBinary files differ new file mode 100644 index 0000000000..830d5692fd --- /dev/null +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tifBinary files differ new file mode 100644 index 0000000000..e05284214a --- /dev/null +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_END_ADD.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tifBinary files differ new file mode 100644 index 0000000000..c4822adf64 --- /dev/null +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START.tif diff --git a/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tifBinary files differ new file mode 100644 index 0000000000..5166af6e05 --- /dev/null +++ b/indra/newview/cursors_mac/UI_CURSOR_PATHFINDING_START_ADD.tif diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 1c81459912..08a1a237f5 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2669,14 +2669,6 @@ bool LLAppViewer::initConfiguration()  		}  	} -	// If automatic login from command line with --login switch -	// init StartSLURL location. In interactive login, LLPanelLogin -	// will take care of it. -	if ((clp.hasOption("login") || clp.hasOption("autologin")) && !clp.hasOption("url") && !clp.hasOption("slurl")) -	{ -		LLStartUp::setStartSLURL(LLSLURL(gSavedSettings.getString("LoginLocation"))); -	} -  	if (!gSavedSettings.getBOOL("AllowMultipleViewers"))  	{  	    // @@ -2724,12 +2716,27 @@ bool LLAppViewer::initConfiguration()          }  	} -   	// need to do this here - need to have initialized global settings first +   	// NextLoginLocation is set from the command line option  	std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );  	if ( !nextLoginLocation.empty() )  	{ +		LL_DEBUGS("AppInit")<<"set start from NextLoginLocation: "<<nextLoginLocation<<LL_ENDL;  		LLStartUp::setStartSLURL(LLSLURL(nextLoginLocation)); -	}; +	} +	else if (   (   clp.hasOption("login") || clp.hasOption("autologin")) +			 && !clp.hasOption("url") +			 && !clp.hasOption("slurl")) +	{ +		// If automatic login from command line with --login switch +		// init StartSLURL location. +		std::string start_slurl_setting = gSavedSettings.getString("LoginLocation"); +		LL_DEBUGS("AppInit") << "start slurl setting '" << start_slurl_setting << "'" << LL_ENDL; +		LLStartUp::setStartSLURL(LLSLURL(start_slurl_setting)); +	} +	else +	{ +		// the login location will be set by the login panel (see LLPanelLogin) +	}  	gLastRunVersion = gSavedSettings.getString("LastRunVersion"); diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index eca964442b..606d77f645 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -342,10 +342,10 @@ void LLVolumeImplFlexible::doIdleUpdate()  	if (drawablep)  	{  		//LLFastTimer ftm(FTM_FLEXIBLE_UPDATE); -		 +  		//ensure drawable is active  		drawablep->makeActive(); -			 +  		if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))  		{  			bool visible = drawablep->isVisible(); @@ -364,35 +364,35 @@ void LLVolumeImplFlexible::doIdleUpdate()  				if	(visible)  				{  					if (!drawablep->isState(LLDrawable::IN_REBUILD_Q1) && -					mVO->getPixelArea() > 256.f) -					{ -						U32 id; -				 -						if (mVO->isRootEdit()) -						{ -							id = mID; -						} -						else -						{ -							LLVOVolume* parent = (LLVOVolume*) mVO->getParent(); -							id = parent->getVolumeInterfaceID(); -						} - -						if ((LLDrawable::getCurrentFrame()+id)%update_period == 0) -						{ +				mVO->getPixelArea() > 256.f) +			{ +				U32 id; + +				if (mVO->isRootEdit()) +				{ +					id = mID; +				} +				else +				{ +					LLVOVolume* parent = (LLVOVolume*) mVO->getParent(); +					id = parent->getVolumeInterfaceID(); +				} + +				if ((LLDrawable::getCurrentFrame()+id)%update_period == 0) +				{  							sUpdateDelay[mInstanceIndex] = (S32) update_period-1; -							updateRenderRes(); +					updateRenderRes(); -							gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE); -						} -					} +					gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE);  				} +			} +		}  				else  				{  					sUpdateDelay[mInstanceIndex] = (S32) update_period; -				} -			} +	} +}  		}  	} diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp index 99d262344c..69c9d94dfa 100644 --- a/indra/newview/llfloaterpathfindingcharacters.cpp +++ b/indra/newview/llfloaterpathfindingcharacters.cpp @@ -134,26 +134,20 @@ void LLFloaterPathfindingCharacters::requestGetObjects()  	LLPathfindingManager::getInstance()->requestGetCharacters(getNewRequestId(), boost::bind(&LLFloaterPathfindingCharacters::handleNewObjectList, this, _1, _2, _3));  } -LLSD LLFloaterPathfindingCharacters::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr) +void LLFloaterPathfindingCharacters::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)  {  	llassert(pObjectListPtr != NULL);  	llassert(!pObjectListPtr->isEmpty()); -	LLSD scrollListData = LLSD::emptyArray(); -  	for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin();	objectIter != pObjectListPtr->end(); ++objectIter)  	{ -		const LLPathfindingCharacter *characterPtr = dynamic_cast<const LLPathfindingCharacter *>(objectIter->second.get()); -		LLSD element = buildCharacterScrollListData(characterPtr); -		scrollListData.append(element); +		const LLPathfindingObjectPtr objectPtr = objectIter->second; +		const LLPathfindingCharacter *characterPtr = dynamic_cast<const LLPathfindingCharacter *>(objectPtr.get()); +		llassert(characterPtr != NULL); -		if (characterPtr->hasOwner() && !characterPtr->hasOwnerName()) -		{ -			rebuildScrollListAfterAvatarNameLoads(characterPtr->getUUID()); -		} +		LLSD scrollListItemData = buildCharacterScrollListItemData(characterPtr); +		addObjectToScrollList(objectPtr, scrollListItemData);  	} - -	return scrollListData;  }  void LLFloaterPathfindingCharacters::updateControlsOnScrollListChange() @@ -168,6 +162,22 @@ S32 LLFloaterPathfindingCharacters::getNameColumnIndex() const  	return 0;  } +S32 LLFloaterPathfindingCharacters::getOwnerNameColumnIndex() const +{ +	return 2; +} + +std::string LLFloaterPathfindingCharacters::getOwnerName(const LLPathfindingObject *pObject) const +{ +	return (pObject->hasOwner() +		? (pObject->hasOwnerName() +		? (pObject->isGroupOwned() +		? (pObject->getOwnerName() + " " + getString("character_owner_group")) +		: pObject->getOwnerName()) +		: getString("character_owner_loading")) +		: getString("character_owner_unknown")); +} +  const LLColor4 &LLFloaterPathfindingCharacters::getBeaconColor() const  {  	return mBeaconColor; @@ -201,9 +211,9 @@ void LLFloaterPathfindingCharacters::onShowPhysicsCapsuleClicked()  	}  } -LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfindingCharacter *pCharacterPtr) const +LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListItemData(const LLPathfindingCharacter *pCharacterPtr) const  { -	LLSD columns; +	LLSD columns = LLSD::emptyArray();  	columns[0]["column"] = "name";  	columns[0]["value"] = pCharacterPtr->getName(); @@ -212,13 +222,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi  	columns[1]["value"] = pCharacterPtr->getDescription();  	columns[2]["column"] = "owner"; -	columns[2]["value"] = (pCharacterPtr->hasOwner() -			? (pCharacterPtr->hasOwnerName() -			? (pCharacterPtr->isGroupOwned() -			? (pCharacterPtr->getOwnerName() + " " + getString("character_owner_group")) -			: pCharacterPtr->getOwnerName()) -			: getString("character_owner_loading")) -			: getString("character_owner_unknown")); +	columns[2]["value"] = getOwnerName(pCharacterPtr);  	S32 cpuTime = llround(pCharacterPtr->getCPUTime());  	std::string cpuTimeString = llformat("%d", cpuTime); @@ -231,11 +235,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi  	columns[4]["column"] = "altitude";  	columns[4]["value"] = llformat("%1.0f m", pCharacterPtr->getLocation()[2]); -	LLSD element; -	element["id"] = pCharacterPtr->getUUID().asString(); -	element["column"] = columns; - -	return element; +	return columns;  }  void LLFloaterPathfindingCharacters::updateStateOnDisplayControls() diff --git a/indra/newview/llfloaterpathfindingcharacters.h b/indra/newview/llfloaterpathfindingcharacters.h index ef389ad428..4021f4f119 100644 --- a/indra/newview/llfloaterpathfindingcharacters.h +++ b/indra/newview/llfloaterpathfindingcharacters.h @@ -62,11 +62,13 @@ protected:  	virtual void                       requestGetObjects(); -	virtual LLSD                       convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr); +	virtual void                       buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);  	virtual void                       updateControlsOnScrollListChange();  	virtual S32                        getNameColumnIndex() const; +	virtual S32                        getOwnerNameColumnIndex() const; +	virtual std::string                getOwnerName(const LLPathfindingObject *pObject) const;  	virtual const LLColor4             &getBeaconColor() const;  	virtual LLPathfindingObjectListPtr getEmptyObjectList() const; @@ -74,7 +76,7 @@ protected:  private:  	void onShowPhysicsCapsuleClicked(); -	LLSD buildCharacterScrollListData(const LLPathfindingCharacter *pCharacterPtr) const; +	LLSD buildCharacterScrollListItemData(const LLPathfindingCharacter *pCharacterPtr) const;  	void updateStateOnDisplayControls();  	void showSelectedCharacterCapsules(); diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 877bd0822d..0fe0e151fb 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -215,7 +215,7 @@ void LLFloaterPathfindingLinksets::requestGetObjects()  	LLPathfindingManager::getInstance()->requestGetLinksets(getNewRequestId(), boost::bind(&LLFloaterPathfindingLinksets::handleNewObjectList, this, _1, _2, _3));  } -LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr) +void LLFloaterPathfindingLinksets::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)  {  	llassert(pObjectListPtr != NULL);  	llassert(!pObjectListPtr->isEmpty()); @@ -227,7 +227,6 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath  	bool isFilteringDescription = !descriptionFilter.empty();  	bool isFilteringLinksetUse = (linksetUseFilter != LLPathfindingLinkset::kUnknown); -	LLSD scrollListData = LLSD::emptyArray();  	const LLVector3& avatarPosition = gAgent.getPositionAgent();  	if (isFilteringName || isFilteringDescription || isFilteringLinksetUse) @@ -236,22 +235,21 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath  		LLStringUtil::toUpper(descriptionFilter);  		for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin();	objectIter != pObjectListPtr->end(); ++objectIter)  		{ -			const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectIter->second.get()); +			const LLPathfindingObjectPtr objectPtr = objectIter->second; +			const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get()); +			llassert(linksetPtr != NULL); +  			std::string linksetName = (linksetPtr->isTerrain() ? getString("linkset_terrain_name") : linksetPtr->getName());  			std::string linksetDescription = linksetPtr->getDescription();  			LLStringUtil::toUpper(linksetName);  			LLStringUtil::toUpper(linksetDescription); +  			if ((!isFilteringName || (linksetName.find(nameFilter) != std::string::npos)) &&  				(!isFilteringDescription || (linksetDescription.find(descriptionFilter) != std::string::npos)) &&  				(!isFilteringLinksetUse || (linksetPtr->getLinksetUse() == linksetUseFilter)))  			{ -				LLSD element = buildLinksetScrollListData(linksetPtr, avatarPosition); -				scrollListData.append(element); - -				if (linksetPtr->hasOwner() && !linksetPtr->hasOwnerName()) -				{ -					rebuildScrollListAfterAvatarNameLoads(linksetPtr->getUUID()); -				} +				LLSD scrollListItemData = buildLinksetScrollListItemData(linksetPtr, avatarPosition); +				addObjectToScrollList(objectPtr, scrollListItemData);  			}  		}  	} @@ -259,18 +257,14 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath  	{  		for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin();	objectIter != pObjectListPtr->end(); ++objectIter)  		{ -			const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectIter->second.get()); -			LLSD element = buildLinksetScrollListData(linksetPtr, avatarPosition); -			scrollListData.append(element); +			const LLPathfindingObjectPtr objectPtr = objectIter->second; +			const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get()); +			llassert(linksetPtr != NULL); -			if (linksetPtr->hasOwner() && !linksetPtr->hasOwnerName()) -			{ -				rebuildScrollListAfterAvatarNameLoads(linksetPtr->getUUID()); -			} +			LLSD scrollListItemData = buildLinksetScrollListItemData(linksetPtr, avatarPosition); +			addObjectToScrollList(objectPtr, scrollListItemData);  		}  	} - -	return scrollListData;  }  void LLFloaterPathfindingLinksets::updateControlsOnScrollListChange() @@ -286,6 +280,22 @@ S32 LLFloaterPathfindingLinksets::getNameColumnIndex() const  	return 0;  } +S32 LLFloaterPathfindingLinksets::getOwnerNameColumnIndex() const +{ +	return 2; +} + +std::string LLFloaterPathfindingLinksets::getOwnerName(const LLPathfindingObject *pObject) const +{ +	return (pObject->hasOwner() +		? (pObject->hasOwnerName() +		? (pObject->isGroupOwned() +		? (pObject->getOwnerName() + " " + getString("linkset_owner_group")) +		: pObject->getOwnerName()) +		: getString("linkset_owner_loading")) +		: getString("linkset_owner_unknown")); +} +  const LLColor4 &LLFloaterPathfindingLinksets::getBeaconColor() const  {  	return mBeaconColor; @@ -373,10 +383,10 @@ void LLFloaterPathfindingLinksets::updateEditFieldValues()  	}  } -LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const +LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListItemData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const  {  	llassert(pLinksetPtr != NULL); -	LLSD columns; +	LLSD columns = LLSD::emptyArray();  	if (pLinksetPtr->isTerrain())  	{ @@ -389,11 +399,14 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin  		columns[2]["column"] = "owner";  		columns[2]["value"] = getString("linkset_terrain_owner"); -		columns[3]["column"] = "land_impact"; -		columns[3]["value"] = getString("linkset_terrain_land_impact"); +		columns[3]["column"] = "scripted"; +		columns[3]["value"] = getString("linkset_terrain_scripted"); -		columns[4]["column"] = "dist_from_you"; -		columns[4]["value"] = getString("linkset_terrain_dist_from_you"); +		columns[4]["column"] = "land_impact"; +		columns[4]["value"] = getString("linkset_terrain_land_impact"); + +		columns[5]["column"] = "dist_from_you"; +		columns[5]["value"] = getString("linkset_terrain_dist_from_you");  	}  	else  	{ @@ -404,22 +417,23 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin  		columns[1]["value"] = pLinksetPtr->getDescription();  		columns[2]["column"] = "owner"; -		columns[2]["value"] = (pLinksetPtr->hasOwner() -			? (pLinksetPtr->hasOwnerName() -			? (pLinksetPtr->isGroupOwned() -			? (pLinksetPtr->getOwnerName() + " " + getString("linkset_owner_group")) -			: pLinksetPtr->getOwnerName()) -			: getString("linkset_owner_loading")) -			: getString("linkset_owner_unknown")); - -		columns[3]["column"] = "land_impact"; -		columns[3]["value"] = llformat("%1d", pLinksetPtr->getLandImpact()); - -		columns[4]["column"] = "dist_from_you"; -		columns[4]["value"] = llformat("%1.0f m", dist_vec(pAvatarPosition, pLinksetPtr->getLocation())); +		columns[2]["value"] = getOwnerName(pLinksetPtr); + +		columns[3]["column"] = "scripted"; +		columns[3]["value"] = (pLinksetPtr->hasIsScripted() +			? (pLinksetPtr->isScripted() +			? getString("linkset_is_scripted") +			: getString("linkset_is_not_scripted")) +			: getString("linkset_is_unknown_scripted")); + +		columns[4]["column"] = "land_impact"; +		columns[4]["value"] = llformat("%1d", pLinksetPtr->getLandImpact()); + +		columns[5]["column"] = "dist_from_you"; +		columns[5]["value"] = llformat("%1.0f m", dist_vec(pAvatarPosition, pLinksetPtr->getLocation()));  	} -	columns[5]["column"] = "linkset_use"; +	columns[6]["column"] = "linkset_use";  	std::string linksetUse = getLinksetUseString(pLinksetPtr->getLinksetUse());  	if (pLinksetPtr->isTerrain())  	{ @@ -437,25 +451,21 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin  	{  		linksetUse += (" " + getString("linkset_is_restricted_non_volume_state"));  	} -	columns[5]["value"] = linksetUse; - -	columns[6]["column"] = "a_percent"; -	columns[6]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientA()); +	columns[6]["value"] = linksetUse; -	columns[7]["column"] = "b_percent"; -	columns[7]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientB()); +	columns[7]["column"] = "a_percent"; +	columns[7]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientA()); -	columns[8]["column"] = "c_percent"; -	columns[8]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientC()); +	columns[8]["column"] = "b_percent"; +	columns[8]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientB()); -	columns[9]["column"] = "d_percent"; -	columns[9]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientD()); +	columns[9]["column"] = "c_percent"; +	columns[9]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientC()); -	LLSD element; -	element["id"] = pLinksetPtr->getUUID().asString(); -	element["column"] = columns; +	columns[10]["column"] = "d_percent"; +	columns[10]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientD()); -	return element; +	return columns;  }  LLSD LLFloaterPathfindingLinksets::buildLinksetUseScrollListData(const std::string &pLabel, S32 pValue) const @@ -490,6 +500,23 @@ bool LLFloaterPathfindingLinksets::isShowUnmodifiablePhantomWarning(LLPathfindin  	return isShowWarning;  } +bool LLFloaterPathfindingLinksets::isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const +{ +	bool isShowWarning = false; + +	if (pLinksetUse != LLPathfindingLinkset::kUnknown) +	{ +		LLPathfindingObjectListPtr selectedObjects = getSelectedObjects(); +		if ((selectedObjects != NULL) && !selectedObjects->isEmpty()) +		{ +			const LLPathfindingLinksetList *linksetList = dynamic_cast<const LLPathfindingLinksetList *>(selectedObjects.get()); +			isShowWarning = linksetList->isShowPhantomToggleWarning(pLinksetUse); +		} +	} + +	return isShowWarning; +} +  bool LLFloaterPathfindingLinksets::isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const  {  	bool isShowWarning = false; @@ -559,29 +586,41 @@ void LLFloaterPathfindingLinksets::applyEdit()  {  	LLPathfindingLinkset::ELinksetUse linksetUse = getEditLinksetUse(); +	bool showPhantomToggleWarning = isShowPhantomToggleWarning(linksetUse);  	bool showUnmodifiablePhantomWarning = isShowUnmodifiablePhantomWarning(linksetUse);  	bool showCannotBeVolumeWarning = isShowCannotBeVolumeWarning(linksetUse); -	if (showUnmodifiablePhantomWarning || showCannotBeVolumeWarning) +	if (showPhantomToggleWarning || showUnmodifiablePhantomWarning || showCannotBeVolumeWarning)  	{  		LLPathfindingLinkset::ELinksetUse restrictedLinksetUse = LLPathfindingLinkset::getLinksetUseWithToggledPhantom(linksetUse);  		LLSD substitutions;  		substitutions["REQUESTED_TYPE"] = getLinksetUseString(linksetUse);  		substitutions["RESTRICTED_TYPE"] = getLinksetUseString(restrictedLinksetUse); -		std::string notificationName; -		if (showUnmodifiablePhantomWarning && showCannotBeVolumeWarning) +		// Build one of the following notifications names +		//   - PathfindingLinksets_WarnOnPhantom +		//   - PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted +		//   - PathfindingLinksets_WarnOnPhantom_MismatchOnVolume +		//   - PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted_MismatchOnVolume +		//   - PathfindingLinksets_MismatchOnRestricted +		//   - PathfindingLinksets_MismatchOnVolume +		//   - PathfindingLinksets_MismatchOnRestricted_MismatchOnVolume + +		std::string notificationName = "PathfindingLinksets"; + +		if (showPhantomToggleWarning)  		{ -			notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnRestrictedAndVolume"; +			notificationName += "_WarnOnPhantom";  		} -		else if (showUnmodifiablePhantomWarning) +		if (showUnmodifiablePhantomWarning)  		{ -			notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnRestricted"; +			notificationName += "_MismatchOnRestricted";  		} -		else +		if (showCannotBeVolumeWarning)  		{ -			notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnVolume"; +			notificationName += "_MismatchOnVolume";  		} +  		LLNotificationsUtil::add(notificationName, substitutions, LLSD(), boost::bind(&LLFloaterPathfindingLinksets::handleApplyEdit, this, _1, _2));  	}  	else diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index 342a64fc77..6538308122 100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h @@ -58,11 +58,13 @@ protected:  	virtual void                       requestGetObjects(); -	virtual LLSD                       convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr); +	virtual void                       buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);  	virtual void                       updateControlsOnScrollListChange();  	virtual S32                        getNameColumnIndex() const; +	virtual S32                        getOwnerNameColumnIndex() const; +	virtual std::string                getOwnerName(const LLPathfindingObject *pObject) const;  	virtual const LLColor4             &getBeaconColor() const;  	virtual LLPathfindingObjectListPtr getEmptyObjectList() const; @@ -78,10 +80,11 @@ private:  	void clearFilters();  	void updateEditFieldValues(); -	LLSD buildLinksetScrollListData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const; +	LLSD buildLinksetScrollListItemData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const;  	LLSD buildLinksetUseScrollListData(const std::string &pLabel, S32 pValue) const;  	bool isShowUnmodifiablePhantomWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const; +	bool isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;  	bool isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;  	void updateStateOnEditFields(); diff --git a/indra/newview/llfloaterpathfindingobjects.cpp b/indra/newview/llfloaterpathfindingobjects.cpp index e246265be9..20c1215bcb 100644 --- a/indra/newview/llfloaterpathfindingobjects.cpp +++ b/indra/newview/llfloaterpathfindingobjects.cpp @@ -29,6 +29,8 @@  #include "llfloaterpathfindingobjects.h" +#include <string> +#include <map>  #include <vector>  #include <boost/bind.hpp> @@ -96,7 +98,6 @@ void LLFloaterPathfindingObjects::onOpen(const LLSD &pKey)  void LLFloaterPathfindingObjects::onClose(bool pIsAppQuitting)  { -	  	if (mGodLevelChangeSlot.connected())  	{  		mGodLevelChangeSlot.disconnect(); @@ -119,6 +120,11 @@ void LLFloaterPathfindingObjects::onClose(bool pIsAppQuitting)  	{  		mObjectsSelection.clear();  	} + +	if (pIsAppQuitting) +	{ +		clearAllObjects(); +	}  }  void LLFloaterPathfindingObjects::draw() @@ -168,13 +174,13 @@ LLFloaterPathfindingObjects::LLFloaterPathfindingObjects(const LLSD &pSeed)  	mReturnButton(NULL),  	mDeleteButton(NULL),  	mTeleportButton(NULL), -	mLoadingAvatarNames(),  	mDefaultBeaconColor(),  	mDefaultBeaconTextColor(),  	mErrorTextColor(),  	mWarningTextColor(),  	mMessagingState(kMessagingUnknown),  	mMessagingRequestId(0U), +	mMissingNameObjectsScrollListItems(),  	mObjectList(),  	mObjectsSelection(),  	mHasObjectsToBeSelected(false), @@ -186,6 +192,7 @@ LLFloaterPathfindingObjects::LLFloaterPathfindingObjects(const LLSD &pSeed)  LLFloaterPathfindingObjects::~LLFloaterPathfindingObjects()  { +	clearAllObjects();  }  BOOL LLFloaterPathfindingObjects::postBuild() @@ -343,54 +350,21 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()  	S32 origScrollPosition = mObjectsScrollList->getScrollPos();  	mObjectsScrollList->deleteAllItems(); +	mMissingNameObjectsScrollListItems.clear();  	if ((mObjectList != NULL) && !mObjectList->isEmpty())  	{ -		LLSD scrollListData = convertObjectsIntoScrollListData(mObjectList); -		llassert(scrollListData.isArray()); +		buildObjectsScrollList(mObjectList); -		LLScrollListCell::Params cellParams; -		cellParams.font = LLFontGL::getFontSansSerif(); - -		for (LLSD::array_const_iterator rowElementIter = scrollListData.beginArray(); rowElementIter != scrollListData.endArray(); ++rowElementIter) +		mObjectsScrollList->selectMultiple(mObjectsToBeSelected); +		if (mHasObjectsToBeSelected)  		{ -			const LLSD &rowElement = *rowElementIter; - -			LLScrollListItem::Params rowParams; -			llassert(rowElement.has("id")); -			llassert(rowElement.get("id").isString()); -			rowParams.value = rowElement.get("id"); - -			llassert(rowElement.has("column")); -			llassert(rowElement.get("column").isArray()); -			const LLSD &columnElement = rowElement.get("column"); -			for (LLSD::array_const_iterator cellIter = columnElement.beginArray(); cellIter != columnElement.endArray(); ++cellIter) -			{ -				const LLSD &cellElement = *cellIter; - -				llassert(cellElement.has("column")); -				llassert(cellElement.get("column").isString()); -				cellParams.column = cellElement.get("column").asString(); - -				llassert(cellElement.has("value")); -				llassert(cellElement.get("value").isString()); -				cellParams.value = cellElement.get("value").asString(); - -				rowParams.columns.add(cellParams); -			} - -			mObjectsScrollList->addRow(rowParams); +			mObjectsScrollList->scrollToShowSelected(); +		} +		else +		{ +			mObjectsScrollList->setScrollPos(origScrollPosition);  		} -	} - -	mObjectsScrollList->selectMultiple(mObjectsToBeSelected); -	if (mHasObjectsToBeSelected) -	{ -		mObjectsScrollList->scrollToShowSelected(); -	} -	else -	{ -		mObjectsScrollList->setScrollPos(origScrollPosition);  	}  	mObjectsToBeSelected.clear(); @@ -399,20 +373,42 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()  	updateControlsOnScrollListChange();  } -LLSD LLFloaterPathfindingObjects::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr) +void LLFloaterPathfindingObjects::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)  {  	llassert(0); -	LLSD nullObjs = LLSD::emptyArray(); -	return nullObjs;  } -void LLFloaterPathfindingObjects::rebuildScrollListAfterAvatarNameLoads(const LLUUID &pAvatarId) +void LLFloaterPathfindingObjects::addObjectToScrollList(const LLPathfindingObjectPtr pObjectPtr, const LLSD &pScrollListItemData)  { -	std::set<LLUUID>::const_iterator iter = mLoadingAvatarNames.find(pAvatarId); -	if (iter == mLoadingAvatarNames.end()) +	LLScrollListCell::Params cellParams; +	cellParams.font = LLFontGL::getFontSansSerif(); + +	LLScrollListItem::Params rowParams; +	rowParams.value = pObjectPtr->getUUID().asString(); + +	llassert(pScrollListItemData.isArray()); +	for (LLSD::array_const_iterator cellIter = pScrollListItemData.beginArray(); +		cellIter != pScrollListItemData.endArray(); ++cellIter) +	{ +		const LLSD &cellElement = *cellIter; + +		llassert(cellElement.has("column")); +		llassert(cellElement.get("column").isString()); +		cellParams.column = cellElement.get("column").asString(); + +		llassert(cellElement.has("value")); +		llassert(cellElement.get("value").isString()); +		cellParams.value = cellElement.get("value").asString(); + +		rowParams.columns.add(cellParams); +	} + +	LLScrollListItem *scrollListItem = mObjectsScrollList->addRow(rowParams); + +	if (pObjectPtr->hasOwner() && !pObjectPtr->hasOwnerName())  	{ -		mLoadingAvatarNames.insert(pAvatarId); -		LLAvatarNameCache::get(pAvatarId, boost::bind(&LLFloaterPathfindingObjects::handleAvatarNameLoads, this, _1, _2)); +		mMissingNameObjectsScrollListItems.insert(std::make_pair<std::string, LLScrollListItem *>(pObjectPtr->getUUID().asString(), scrollListItem)); +		pObjectPtr->registerOwnerNameListener(boost::bind(&LLFloaterPathfindingObjects::handleObjectNameResponse, this, _1));  	}  } @@ -434,6 +430,18 @@ S32 LLFloaterPathfindingObjects::getNameColumnIndex() const  	return 0;  } +S32 LLFloaterPathfindingObjects::getOwnerNameColumnIndex() const +{ +	return 2; +} + +std::string LLFloaterPathfindingObjects::getOwnerName(const LLPathfindingObject *pObject) const +{ +	llassert(0); +	std::string returnVal; +	return returnVal; +} +  const LLColor4 &LLFloaterPathfindingObjects::getBeaconColor() const  {  	return mDefaultBeaconColor; @@ -496,6 +504,7 @@ void LLFloaterPathfindingObjects::clearAllObjects()  {  	selectNoneObjects();  	mObjectsScrollList->deleteAllItems(); +	mMissingNameObjectsScrollListItems.clear();  	mObjectList.reset();  } @@ -683,13 +692,22 @@ void LLFloaterPathfindingObjects::onGodLevelChange(U8 pGodLevel)  	requestGetObjects();  } -void LLFloaterPathfindingObjects::handleAvatarNameLoads(const LLUUID &pAvatarId, const LLAvatarName &pAvatarName) +void LLFloaterPathfindingObjects::handleObjectNameResponse(const LLPathfindingObject *pObject)  { -	llassert(mLoadingAvatarNames.find(pAvatarId) != mLoadingAvatarNames.end()); -	mLoadingAvatarNames.erase(pAvatarId); -	if (mLoadingAvatarNames.empty()) +	llassert(pObject != NULL); +	const std::string uuid = pObject->getUUID().asString(); +	scroll_list_item_map::iterator scrollListItemIter = mMissingNameObjectsScrollListItems.find(uuid); +	if (scrollListItemIter != mMissingNameObjectsScrollListItems.end())  	{ -		rebuildObjectsScrollList(); +		LLScrollListItem *scrollListItem = scrollListItemIter->second; +		llassert(scrollListItem != NULL); + +		LLScrollListCell *scrollListCell = scrollListItem->getColumn(getOwnerNameColumnIndex()); +		LLSD ownerName = getOwnerName(pObject); + +		scrollListCell->setValue(ownerName); + +		mMissingNameObjectsScrollListItems.erase(scrollListItemIter);  	}  } diff --git a/indra/newview/llfloaterpathfindingobjects.h b/indra/newview/llfloaterpathfindingobjects.h index e8d446b598..4024e15fd6 100644 --- a/indra/newview/llfloaterpathfindingobjects.h +++ b/indra/newview/llfloaterpathfindingobjects.h @@ -27,7 +27,8 @@  #ifndef LL_LLFLOATERPATHFINDINGOBJECTS_H  #define LL_LLFLOATERPATHFINDINGOBJECTS_H -#include <set> +#include <string> +#include <map>  #include <boost/signals2.hpp> @@ -80,14 +81,15 @@ protected:  	void                               handleUpdateObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList);  	void                               rebuildObjectsScrollList(); -	virtual LLSD                       convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr); - -	void                               rebuildScrollListAfterAvatarNameLoads(const LLUUID &pAvatarId); +	virtual void                       buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr); +	void                               addObjectToScrollList(const LLPathfindingObjectPtr pObjectPr, const LLSD &pScrollListItemData);  	virtual void                       updateControlsOnScrollListChange();  	virtual void                       updateControlsOnInWorldSelectionChange();  	virtual S32                        getNameColumnIndex() const; +	virtual S32                        getOwnerNameColumnIndex() const; +	virtual std::string                getOwnerName(const LLPathfindingObject *pObject) const;  	virtual const LLColor4             &getBeaconColor() const;  	virtual const LLColor4             &getBeaconTextColor() const;  	virtual S32                        getBeaconWidth() const; @@ -126,7 +128,7 @@ private:  	void                   onRegionBoundaryCrossed();  	void                   onGodLevelChange(U8 pGodLevel); -	void                   handleAvatarNameLoads(const LLUUID &pAvatarId, const LLAvatarName &pAvatarName); +	void                   handleObjectNameResponse(const LLPathfindingObject *pObject);  	void                   updateMessagingStatus();  	void                   updateStateOnListControls(); @@ -151,8 +153,6 @@ private:  	LLButton                           *mDeleteButton;  	LLButton                           *mTeleportButton; -	std::set<LLUUID>                   mLoadingAvatarNames; -  	LLColor4                           mDefaultBeaconColor;  	LLColor4                           mDefaultBeaconTextColor;  	LLColor4                           mErrorTextColor; @@ -161,6 +161,9 @@ private:  	EMessagingState                    mMessagingState;  	LLPathfindingManager::request_id_t mMessagingRequestId; +	typedef std::map<std::string, LLScrollListItem *> scroll_list_item_map; +	scroll_list_item_map               mMissingNameObjectsScrollListItems; +  	LLPathfindingObjectListPtr         mObjectList;  	LLObjectSelectionHandle            mObjectsSelection; diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 4d38f5834e..7cf358c8e5 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -133,7 +133,6 @@ public:  		if(tools_floater)  		{  			tools_floater->updateLandImpacts(); -			tools_floater->dirty();  		}  	}  }; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 215a08b34a..49a856de61 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1153,7 +1153,7 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,  		default:  			llinfos << "Unhandled asset type (llassetstorage.h): "  					<< (S32)asset_type << " (" << LLAssetType::lookup(asset_type) << ")" << llendl; -			break;	 +			break;  	}  	if (new_listener) @@ -1548,7 +1548,7 @@ void LLItemBridge::buildDisplayName() const  	else  	{  		mDisplayName.assign(LLStringUtil::null); -	} +}  	mSearchableName.assign(mDisplayName);  	mSearchableName.append(getLabelSuffix()); @@ -1556,10 +1556,10 @@ void LLItemBridge::buildDisplayName() const      //Name set, so trigger a sort      if(mParent) -    { +{          mParent->requestSort(); -    } -} +	} +	}  LLFontGL::StyleFlags LLItemBridge::getLabelStyle() const  { @@ -1692,7 +1692,7 @@ BOOL LLItemBridge::removeItem()  	{  		return FALSE;  	} -	 +  	// move it to the trash  	LLPreview::hide(mUUID, TRUE);  	LLInventoryModel* model = getInventoryModel(); @@ -3466,9 +3466,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items  			// it's all on its way - add an observer, and the inventory will call done for us when everything is here.  			inc_busy_count();  			gInventory.addObserver(fetch); -		}  	}  } +}  void LLFolderBridge::buildContextMenuFolderOptions(U32 flags,   menuentry_vec_t& items, menuentry_vec_t& disabled_items)  { @@ -6511,16 +6511,16 @@ LLInvFVBridge* LLRecentInventoryBridgeBuilder::createBridge(  		new_listener = new LLRecentItemsFolderBridge(inv_type, inventory, root, uuid);  	}  	else -	{ +		{  		new_listener = LLInventoryFolderViewModelBuilder::createBridge(asset_type, -																actual_asset_type, -																inv_type, -																inventory, +				actual_asset_type, +				inv_type, +				inventory,  																view_model, -																root, -																uuid, -																flags); -	} +				root, +				uuid, +				flags); +		}  	return new_listener;  } diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index a8049b1b03..44ff62e290 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -145,12 +145,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	// change z sort of clickable text to be behind buttons  	sendChildToBack(getChildView("forgot_password_text")); - -	if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION) -	{ -		LLSLURL slurl(gSavedSettings.getString("LoginLocation")); -		LLStartUp::setStartSLURL(slurl); -	}  	LLComboBox* location_combo = getChild<LLComboBox>("start_location_combo");  	updateLocationSelectorsVisibility(); // separate so that it can be called from preferences @@ -182,6 +176,29 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  							 ADD_TOP);	  	server_choice_combo->selectFirstItem();		 +	LLSLURL start_slurl(LLStartUp::getStartSLURL()); +	if ( !start_slurl.isSpatial() ) // has a start been established by the command line or NextLoginLocation ?  +	{ +		// no, so get the preference setting +		std::string defaultStartLocation = gSavedSettings.getString("LoginLocation"); +		LL_INFOS("AppInit")<<"default LoginLocation '"<<defaultStartLocation<<"'"<<LL_ENDL; +		LLSLURL defaultStart(defaultStartLocation); +		if ( defaultStart.isSpatial() ) +		{ +			LLStartUp::setStartSLURL(defaultStart); +		} +		else +		{ +			LL_INFOS("AppInit")<<"no valid LoginLocation, using home"<<LL_ENDL; +			LLSLURL homeStart(LLSLURL::SIM_LOCATION_HOME); +			LLStartUp::setStartSLURL(homeStart); +		} +	} +	else +	{ +		LLPanelLogin::onUpdateStartSLURL(start_slurl); // updates grid if needed +	} +	  	childSetAction("connect_btn", onClickConnect, this);  	getChild<LLPanel>("login")->setDefaultBtn("connect_btn"); @@ -645,8 +662,11 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)  	 * specify a particular grid; in those cases we want to change the grid  	 * and the grid selector to match the new value.  	 */ -	if ( LLSLURL::LOCATION == new_start_slurl.getType() ) +	enum LLSLURL::SLURL_TYPE new_slurl_type = new_start_slurl.getType(); +	switch ( new_slurl_type )  	{ +	case LLSLURL::LOCATION: +	  {  		std::string slurl_grid = LLGridManager::getInstance()->getGrid(new_start_slurl.getGrid());  		if ( ! slurl_grid.empty() ) // is that a valid grid?  		{ @@ -668,8 +688,24 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)  		{  			// the grid specified by the slurl is not known  			LLNotificationsUtil::add("InvalidLocationSLURL"); +			LL_WARNS("AppInit")<<"invalid LoginLocation:"<<new_start_slurl.asString()<<LL_ENDL;  			location_combo->setTextEntry(LLStringUtil::null);  		} +	  } + 	break; + +	case LLSLURL::HOME_LOCATION: +		location_combo->setCurrentByIndex(1); // home location +		break; +		 +	case LLSLURL::LAST_LOCATION: +		location_combo->setCurrentByIndex(0); // last location +		break; + +	default: +		LL_WARNS("AppInit")<<"invalid login slurl, using home"<<LL_ENDL; +		location_combo->setCurrentByIndex(1); // home location +		break;  	}  } diff --git a/indra/newview/llpathfindinglinkset.cpp b/indra/newview/llpathfindinglinkset.cpp index fe4daabd89..50b76378f5 100644 --- a/indra/newview/llpathfindinglinkset.cpp +++ b/indra/newview/llpathfindinglinkset.cpp @@ -39,6 +39,7 @@  #define LINKSET_MODIFIABLE_FIELD    "modifiable"  #define LINKSET_CATEGORY_FIELD      "navmesh_category"  #define LINKSET_CAN_BE_VOLUME       "can_be_volume" +#define LINKSET_IS_SCRIPTED_FIELD   "is_scripted"  #define LINKSET_PHANTOM_FIELD       "phantom"  #define LINKSET_WALKABILITY_A_FIELD "A"  #define LINKSET_WALKABILITY_B_FIELD "B" @@ -62,6 +63,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLSD& pTerrainData)  	mLandImpact(0U),  	mIsModifiable(FALSE),  	mCanBeVolume(FALSE), +	mIsScripted(FALSE), +	mHasIsScripted(TRUE),  	mLinksetUse(kUnknown),  	mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),  	mWalkabilityCoefficientB(MIN_WALKABILITY_VALUE), @@ -77,6 +80,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&  	mLandImpact(0U),  	mIsModifiable(TRUE),  	mCanBeVolume(TRUE), +	mIsScripted(FALSE), +	mHasIsScripted(FALSE),  	mLinksetUse(kUnknown),  	mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),  	mWalkabilityCoefficientB(MIN_WALKABILITY_VALUE), @@ -93,6 +98,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLPathfindingLinkset& pOther)  	mLandImpact(pOther.mLandImpact),  	mIsModifiable(pOther.mIsModifiable),  	mCanBeVolume(pOther.mCanBeVolume), +	mIsScripted(pOther.mIsScripted), +	mHasIsScripted(pOther.mHasIsScripted),  	mLinksetUse(pOther.mLinksetUse),  	mWalkabilityCoefficientA(pOther.mWalkabilityCoefficientA),  	mWalkabilityCoefficientB(pOther.mWalkabilityCoefficientB), @@ -113,6 +120,8 @@ LLPathfindingLinkset& LLPathfindingLinkset::operator =(const LLPathfindingLinkse  	mLandImpact = pOther.mLandImpact;  	mIsModifiable = pOther.mIsModifiable;  	mCanBeVolume = pOther.mCanBeVolume; +	mIsScripted = pOther.mIsScripted; +	mHasIsScripted = pOther.mHasIsScripted;  	mLinksetUse = pOther.mLinksetUse;  	mWalkabilityCoefficientA = pOther.mWalkabilityCoefficientA;  	mWalkabilityCoefficientB = pOther.mWalkabilityCoefficientB; @@ -140,6 +149,11 @@ bool LLPathfindingLinkset::isShowUnmodifiablePhantomWarning(ELinksetUse pLinkset  	return (!isModifiable() && (isPhantom() != isPhantom(pLinksetUse)));  } +bool LLPathfindingLinkset::isShowPhantomToggleWarning(ELinksetUse pLinksetUse) const +{ +	return (isModifiable() && (isPhantom() != isPhantom(pLinksetUse))); +} +  bool LLPathfindingLinkset::isShowCannotBeVolumeWarning(ELinksetUse pLinksetUse) const  {  	return (!canBeVolume() && ((pLinksetUse == kMaterialVolume) || (pLinksetUse == kExclusionVolume))); @@ -193,6 +207,13 @@ void LLPathfindingLinkset::parseLinksetData(const LLSD &pLinksetData)  	llassert(pLinksetData.has(LINKSET_MODIFIABLE_FIELD));  	llassert(pLinksetData.get(LINKSET_MODIFIABLE_FIELD).isBoolean());  	mIsModifiable = pLinksetData.get(LINKSET_MODIFIABLE_FIELD).asBoolean(); + +	mHasIsScripted = pLinksetData.has(LINKSET_IS_SCRIPTED_FIELD); +	if (mHasIsScripted) +	{ +		llassert(pLinksetData.get(LINKSET_IS_SCRIPTED_FIELD).isBoolean()); +		mIsScripted = pLinksetData.get(LINKSET_IS_SCRIPTED_FIELD).asBoolean(); +	}  }  void LLPathfindingLinkset::parsePathfindingData(const LLSD &pLinksetData) diff --git a/indra/newview/llpathfindinglinkset.h b/indra/newview/llpathfindinglinkset.h index 73b4d6bad4..308a3a1e0f 100644 --- a/indra/newview/llpathfindinglinkset.h +++ b/indra/newview/llpathfindinglinkset.h @@ -63,12 +63,16 @@ public:  	inline ELinksetUse getLinksetUse() const               {return mLinksetUse;}; +	inline BOOL        isScripted() const                  {return mIsScripted;}; +	inline BOOL        hasIsScripted() const               {return mHasIsScripted;}; +  	inline S32         getWalkabilityCoefficientA() const  {return mWalkabilityCoefficientA;};  	inline S32         getWalkabilityCoefficientB() const  {return mWalkabilityCoefficientB;};  	inline S32         getWalkabilityCoefficientC() const  {return mWalkabilityCoefficientC;};  	inline S32         getWalkabilityCoefficientD() const  {return mWalkabilityCoefficientD;};  	bool               isShowUnmodifiablePhantomWarning(ELinksetUse pLinksetUse) const; +	bool               isShowPhantomToggleWarning(ELinksetUse pLinksetUse) const;  	bool               isShowCannotBeVolumeWarning(ELinksetUse pLinksetUse) const;  	LLSD               encodeAlteredFields(ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const; @@ -98,6 +102,8 @@ private:  	U32          mLandImpact;  	BOOL         mIsModifiable;  	BOOL         mCanBeVolume; +	BOOL         mIsScripted; +	BOOL         mHasIsScripted;  	ELinksetUse  mLinksetUse;  	S32          mWalkabilityCoefficientA;  	S32          mWalkabilityCoefficientB; diff --git a/indra/newview/llpathfindinglinksetlist.cpp b/indra/newview/llpathfindinglinksetlist.cpp index 746fa342a1..b886e46765 100644 --- a/indra/newview/llpathfindinglinksetlist.cpp +++ b/indra/newview/llpathfindinglinksetlist.cpp @@ -113,6 +113,20 @@ bool LLPathfindingLinksetList::isShowUnmodifiablePhantomWarning(LLPathfindingLin  	return isShowWarning;  } +bool LLPathfindingLinksetList::isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const +{ +	bool isShowWarning = false; + +	for (const_iterator objectIter = begin(); !isShowWarning && (objectIter != end()); ++objectIter) +	{ +		const LLPathfindingObjectPtr objectPtr = objectIter->second; +		const LLPathfindingLinkset *linkset = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get()); +		isShowWarning = linkset->isShowPhantomToggleWarning(pLinksetUse); +	} + +	return isShowWarning; +} +  bool LLPathfindingLinksetList::isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const  {  	bool isShowWarning = false; diff --git a/indra/newview/llpathfindinglinksetlist.h b/indra/newview/llpathfindinglinksetlist.h index 77c6358640..1d38e4c11a 100644 --- a/indra/newview/llpathfindinglinksetlist.h +++ b/indra/newview/llpathfindinglinksetlist.h @@ -43,6 +43,7 @@ public:  	LLSD encodeTerrainFields(LLPathfindingLinkset::ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const;  	bool isShowUnmodifiablePhantomWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const; +	bool isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;  	bool isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;  	void determinePossibleStates(BOOL &pCanBeWalkable, BOOL &pCanBeStaticObstacle, BOOL &pCanBeDynamicObstacle, diff --git a/indra/newview/llpathfindingobject.cpp b/indra/newview/llpathfindingobject.cpp index 916eceb4c8..858d3203c0 100644 --- a/indra/newview/llpathfindingobject.cpp +++ b/indra/newview/llpathfindingobject.cpp @@ -55,8 +55,10 @@ LLPathfindingObject::LLPathfindingObject()  	mOwnerUUID(),  	mHasOwnerName(false),  	mOwnerName(), +	mAvatarNameCacheConnection(),  	mIsGroupOwned(false), -	mLocation() +	mLocation(), +	mOwnerNameSignal()  {  } @@ -67,8 +69,10 @@ LLPathfindingObject::LLPathfindingObject(const std::string &pUUID, const LLSD &p  	mOwnerUUID(),  	mHasOwnerName(false),  	mOwnerName(), +	mAvatarNameCacheConnection(),  	mIsGroupOwned(false), -	mLocation() +	mLocation(), +	mOwnerNameSignal()  {  	parseObjectData(pObjectData);  } @@ -80,14 +84,17 @@ LLPathfindingObject::LLPathfindingObject(const LLPathfindingObject& pOther)  	mOwnerUUID(pOther.mOwnerUUID),  	mHasOwnerName(false),  	mOwnerName(), +	mAvatarNameCacheConnection(),  	mIsGroupOwned(pOther.mIsGroupOwned), -	mLocation(pOther.mLocation) +	mLocation(pOther.mLocation), +	mOwnerNameSignal()  {  	fetchOwnerName();  }  LLPathfindingObject::~LLPathfindingObject()  { +	disconnectAvatarNameCacheConnection();  }  LLPathfindingObject &LLPathfindingObject::operator =(const LLPathfindingObject& pOther) @@ -115,6 +122,23 @@ std::string LLPathfindingObject::getOwnerName() const  	return ownerName;  } +LLPathfindingObject::name_connection_t LLPathfindingObject::registerOwnerNameListener(name_callback_t pOwnerNameCallback) +{ +	llassert(hasOwner()); + +	name_connection_t connection; +	if (hasOwnerName()) +	{ +		pOwnerNameCallback(this); +	} +	else +	{ +		connection = mOwnerNameSignal.connect(pOwnerNameCallback); +	} + +	return connection; +} +  void LLPathfindingObject::parseObjectData(const LLSD &pObjectData)  {  	llassert(pObjectData.has(PATHFINDING_OBJECT_NAME_FIELD)); @@ -149,7 +173,7 @@ void LLPathfindingObject::fetchOwnerName()  		mHasOwnerName = LLAvatarNameCache::get(mOwnerUUID, &mOwnerName);  		if (!mHasOwnerName)  		{ -			LLAvatarNameCache::get(mOwnerUUID, boost::bind(&LLPathfindingObject::handleAvatarNameFetch, this, _1, _2)); +			mAvatarNameCacheConnection = LLAvatarNameCache::get(mOwnerUUID, boost::bind(&LLPathfindingObject::handleAvatarNameFetch, this, _1, _2));  		}  	}  } @@ -157,6 +181,19 @@ void LLPathfindingObject::fetchOwnerName()  void LLPathfindingObject::handleAvatarNameFetch(const LLUUID &pOwnerUUID, const LLAvatarName &pAvatarName)  {  	llassert(mOwnerUUID == pOwnerUUID); +  	mOwnerName = pAvatarName;  	mHasOwnerName = true; + +	disconnectAvatarNameCacheConnection(); + +	mOwnerNameSignal(this); +} + +void LLPathfindingObject::disconnectAvatarNameCacheConnection() +{ +	if (mAvatarNameCacheConnection.connected()) +	{ +		mAvatarNameCacheConnection.disconnect(); +	}  } diff --git a/indra/newview/llpathfindingobject.h b/indra/newview/llpathfindingobject.h index d45cc554fd..b8d3ca2364 100644 --- a/indra/newview/llpathfindingobject.h +++ b/indra/newview/llpathfindingobject.h @@ -30,8 +30,11 @@  #include <string>  #include <boost/shared_ptr.hpp> +#include <boost/function.hpp> +#include <boost/signals2.hpp>  #include "llavatarname.h" +#include "llavatarnamecache.h"  #include "lluuid.h"  #include "v3math.h" @@ -59,6 +62,12 @@ public:  	inline BOOL               isGroupOwned() const   {return mIsGroupOwned;};  	inline const LLVector3&   getLocation() const    {return mLocation;}; +	typedef boost::function<void (const LLPathfindingObject *)>         name_callback_t; +	typedef boost::signals2::signal<void (const LLPathfindingObject *)> name_signal_t; +	typedef boost::signals2::connection                                 name_connection_t; + +	name_connection_t registerOwnerNameListener(name_callback_t pOwnerNameCallback); +  protected:  private: @@ -66,15 +75,18 @@ private:  	void fetchOwnerName();  	void handleAvatarNameFetch(const LLUUID &pOwnerUUID, const LLAvatarName &pAvatarName); +	void disconnectAvatarNameCacheConnection(); -	LLUUID       mUUID; -	std::string  mName; -	std::string  mDescription; -	LLUUID       mOwnerUUID; -	bool         mHasOwnerName; -	LLAvatarName mOwnerName; -	BOOL         mIsGroupOwned; -	LLVector3    mLocation; +	LLUUID                                   mUUID; +	std::string                              mName; +	std::string                              mDescription; +	LLUUID                                   mOwnerUUID; +	bool                                     mHasOwnerName; +	LLAvatarName                             mOwnerName; +	LLAvatarNameCache::callback_connection_t mAvatarNameCacheConnection; +	BOOL                                     mIsGroupOwned; +	LLVector3                                mLocation; +	name_signal_t                            mOwnerNameSignal;  };  #endif // LL_LLPATHFINDINGOBJECT_H diff --git a/indra/newview/llpathfindingobjectlist.cpp b/indra/newview/llpathfindingobjectlist.cpp index 68a7e736e6..f1ecb45fc0 100644 --- a/indra/newview/llpathfindingobjectlist.cpp +++ b/indra/newview/llpathfindingobjectlist.cpp @@ -45,6 +45,7 @@ LLPathfindingObjectList::LLPathfindingObjectList()  LLPathfindingObjectList::~LLPathfindingObjectList()  { +	clear();  }  bool LLPathfindingObjectList::isEmpty() const @@ -52,6 +53,15 @@ bool LLPathfindingObjectList::isEmpty() const  	return mObjectMap.empty();  } +void LLPathfindingObjectList::clear() +{ +	for (LLPathfindingObjectMap::iterator objectIter = mObjectMap.begin(); objectIter != mObjectMap.end(); ++objectIter) +	{ +		objectIter->second.reset(); +	} +	mObjectMap.clear(); +} +  void LLPathfindingObjectList::update(LLPathfindingObjectPtr pUpdateObjectPtr)  {  	if (pUpdateObjectPtr != NULL) diff --git a/indra/newview/llpathfindingobjectlist.h b/indra/newview/llpathfindingobjectlist.h index 3ad8e8b096..61580582d3 100644 --- a/indra/newview/llpathfindingobjectlist.h +++ b/indra/newview/llpathfindingobjectlist.h @@ -47,6 +47,8 @@ public:  	bool isEmpty() const; +	void clear(); +  	void update(LLPathfindingObjectPtr pUpdateObjectPtr);  	void update(LLPathfindingObjectListPtr pUpdateObjectListPtr); @@ -56,7 +58,6 @@ public:  	const_iterator begin() const;  	const_iterator end() const; -  protected:  	LLPathfindingObjectMap &getObjectMap(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index ba9c2c9e2f..ab72b4e512 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2820,22 +2820,33 @@ bool LLStartUp::dispatchURL()  void LLStartUp::setStartSLURL(const LLSLURL& slurl)   { -  sStartSLURL = slurl; -  LL_DEBUGS("AppInit")<<slurl.asString()<<LL_ENDL; +	LL_DEBUGS("AppInit")<<slurl.asString()<<LL_ENDL; -  switch(slurl.getType()) -    { -    case LLSLURL::HOME_LOCATION: -    case LLSLURL::LAST_LOCATION: -    case LLSLURL::LOCATION: -		gSavedSettings.setString("LoginLocation", LLSLURL::SIM_LOCATION_HOME); +	if ( slurl.isSpatial() ) +	{ +		std::string new_start = slurl.getSLURLString(); +		LL_DEBUGS("AppInit")<<new_start<<LL_ENDL; +		sStartSLURL = slurl;  		LLPanelLogin::onUpdateStartSLURL(slurl); // updates grid if needed -		break; -    default: -		break; -    } + +		// remember that this is where we wanted to log in...if the login fails, +		// the next attempt will default to the same place. +		gSavedSettings.setString("NextLoginLocation", new_start); +		// following a successful login, this is cleared +		// and the default reverts to LoginLocation +	} +	else +	{ +		LL_WARNS("AppInit")<<"Invalid start SLURL (ignored): "<<slurl.asString()<<LL_ENDL; +	}  } +// static +LLSLURL& LLStartUp::getStartSLURL() +{ +	return sStartSLURL; +}  +  /**   * Read all proxy configuration settings and set up both the HTTP proxy and   * SOCKS proxy as needed. diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h index 3754aaf966..760e38890b 100644 --- a/indra/newview/llstartup.h +++ b/indra/newview/llstartup.h @@ -111,7 +111,7 @@ public:  	static void postStartupState();  	static void setStartSLURL(const LLSLURL& slurl);  -	static LLSLURL& getStartSLURL() { return sStartSLURL; }  +	static LLSLURL& getStartSLURL();  	static bool startLLProxy(); // Initialize the SOCKS 5 proxy diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 4ad0547379..b2e6dc4571 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2043,7 +2043,14 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  	{  		if (new_angv != old_angv)  		{ -			resetRot(); +			if (flagUsePhysics()) +			{ +				resetRot(); +			} +			else +			{ +				resetRotTime(); +			}  		}  		// Set the rotation of the object followed by adjusting for the accumulated angular velocity (llSetTargetOmega) @@ -5439,9 +5446,14 @@ void LLViewerObject::applyAngularVelocity(F32 dt)  	}  } -void LLViewerObject::resetRot() +void LLViewerObject::resetRotTime()  {  	mRotTime = 0.0f; +} + +void LLViewerObject::resetRot() +{ +	resetRotTime();  	// Reset the accumulated angular velocity rotation  	mAngularVelocityRot.loadIdentity();  diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index e60c8a8d52..22e0de681e 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -198,6 +198,9 @@ public:  	virtual BOOL		updateLOD();  	virtual BOOL		setDrawableParent(LLDrawable* parentp);  	F32					getRotTime() { return mRotTime; } +private: +	void				resetRotTime(); +public:  	void				resetRot();  	void				applyAngularVelocity(F32 dt); @@ -210,7 +213,7 @@ public:  	LLViewerRegion* getRegion() const				{ return mRegionp; }  	BOOL isSelected() const							{ return mUserSelected; } -	virtual void setSelected(BOOL sel)				{ mUserSelected = sel; mRotTime = 0.f;} +	virtual void setSelected(BOOL sel)				{ mUserSelected = sel; resetRot();}  	const LLUUID &getID() const						{ return mID; }  	U32 getLocalID() const							{ return mLocalID; } diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index ae9c31bfe7..2bb2e92279 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -545,9 +545,6 @@ LLParcelSelectionHandle LLViewerParcelMgr::selectLand(const LLVector3d &corner1,  	mRequestResult = PARCEL_RESULT_NO_DATA; -	// clear the list of segments to prevent flashing -	resetSegments(mHighlightSegments); -  	mFloatingParcelSelection->setParcel(mCurrentParcel);  	mCurrentParcelSelection->setParcel(NULL);  	mCurrentParcelSelection = new LLParcelSelection(mCurrentParcel); diff --git a/indra/newview/res-sdl/lltoolpathfinding.BMP b/indra/newview/res-sdl/lltoolpathfinding.BMPBinary files differ new file mode 100644 index 0000000000..a567951b7a --- /dev/null +++ b/indra/newview/res-sdl/lltoolpathfinding.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathend.BMP b/indra/newview/res-sdl/lltoolpathfindingpathend.BMPBinary files differ new file mode 100644 index 0000000000..aacea8237f --- /dev/null +++ b/indra/newview/res-sdl/lltoolpathfindingpathend.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMPBinary files differ new file mode 100644 index 0000000000..fa19f3f105 --- /dev/null +++ b/indra/newview/res-sdl/lltoolpathfindingpathendadd.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstart.BMPBinary files differ new file mode 100644 index 0000000000..912b7f931a --- /dev/null +++ b/indra/newview/res-sdl/lltoolpathfindingpathstart.BMP diff --git a/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP b/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMPBinary files differ new file mode 100644 index 0000000000..4e8999ae0b --- /dev/null +++ b/indra/newview/res-sdl/lltoolpathfindingpathstartadd.BMP diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml index eaed92ac55..9bc5c7d5a4 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -4,9 +4,9 @@      can_resize="true"      can_tear_off="false"      height="395" -    width="1015" +    width="1075"      min_height="395" -    min_width="1015" +    min_width="1075"      layout="topleft"      name="floater_pathfinding_linksets"      help_topic="floater_pathfinding_linksets" @@ -25,11 +25,15 @@    <floater.string name="linkset_terrain_name">[Terrain]</floater.string>    <floater.string name="linkset_terrain_description">--</floater.string>    <floater.string name="linkset_terrain_owner">--</floater.string> +  <floater.string name="linkset_terrain_scripted">--</floater.string>    <floater.string name="linkset_terrain_land_impact">--</floater.string>    <floater.string name="linkset_terrain_dist_from_you">--</floater.string>    <floater.string name="linkset_owner_loading">[Loading]</floater.string>    <floater.string name="linkset_owner_unknown">[Unknown]</floater.string>    <floater.string name="linkset_owner_group">[group]</floater.string> +  <floater.string name="linkset_is_scripted">Yes</floater.string> +  <floater.string name="linkset_is_not_scripted">No</floater.string> +  <floater.string name="linkset_is_unknown_scripted">Unknown</floater.string>    <floater.string name="linkset_use_walkable">Walkable</floater.string>    <floater.string name="linkset_use_static_obstacle">Static obstacle</floater.string>    <floater.string name="linkset_use_dynamic_obstacle">Movable obstacle</floater.string> @@ -47,7 +51,7 @@        follows="left|top|right|bottom"        layout="topleft"        height="226" -      width="999"> +      width="1059">      <text          height="13"          word_wrap="false" @@ -155,7 +159,7 @@          layout="topleft"          name="apply_filters"          top_pad="-21" -        left_pad="31" +        left_pad="91"          width="73"/>      <button          follows="right|top" @@ -177,7 +181,7 @@          tab_stop="false"          multi_select="true"          name="objects_scroll_list" -        width="980"> +        width="1040">        <scroll_list.columns            label="Name (root prim)"            name="name" @@ -191,6 +195,10 @@            name="owner"            width="141" />        <scroll_list.columns +          label="Scripted" +          name="scripted" +          width="60" /> +      <scroll_list.columns            label="Impact"            name="land_impact"            width="55" /> @@ -230,7 +238,7 @@          layout="topleft"          name="messaging_status"          top_pad="17" -        width="619"> +        width="679">        Linksets:      </text>      <button @@ -269,7 +277,7 @@        name="horiz_separator"        top_pad="0"        left="18" -      width="979"/> +      width="1039"/>    <panel        border="false"        bevel_style="none" @@ -277,7 +285,7 @@        layout="topleft"        left="0"        height="67" -      width="950"> +      width="1010">      <text          height="13"          word_wrap="false" @@ -327,7 +335,7 @@          layout="topleft"          name="teleport_me_to_object"          top_pad="-21" -        left_pad="206" +        left_pad="239"          width="160"/>      <button          follows="right|bottom" @@ -336,7 +344,7 @@          layout="topleft"          name="return_objects"          top_pad="-21" -        left_pad="220" +        left_pad="252"          width="95"/>      <button          follows="right|bottom" @@ -356,7 +364,7 @@        name="horiz_separator"        top_pad="0"        left="18" -      width="979"/> +      width="1039"/>    <panel        border="false"        bevel_style="none" @@ -364,7 +372,7 @@        layout="topleft"        left="0"        height="75" -      width="950"> +      width="1010">      <text          height="13"          word_wrap="false" @@ -376,7 +384,7 @@          layout="topleft"          left="18"          top_pad="8" -        width="912"> +        width="972">        Edit attributes of selected linksets and press the button to apply changes      </text>      <combo_box diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 933135954f..606fdd33d9 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -2894,7 +2894,7 @@ You have been moved into a nearby region.     name="AvatarMovedLast"     type="alertmodal">     <tag>fail</tag> -Your last location is not currently available. +Your requested location is not currently available.  You have been moved into a nearby region.    </notification> @@ -8134,9 +8134,26 @@ The site at '<nolink>[HOST_NAME]</nolink>' in realm '    <notification     icon="alertmodal.tga" -   name="PathfindingLinksets_SetLinksetUseMismatchOnRestricted" +   name="PathfindingLinksets_WarnOnPhantom"     type="alertmodal"> -    Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. +Some selected linksets will have the Phantom flag toggled. + +Do you wish to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Some selected linksets phantom flag will be toggled." +     name="okcancelignore" +     notext="Cancel" +     yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga" +   name="PathfindingLinksets_MismatchOnRestricted" +   type="alertmodal"> +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. + +Do you wish to continue?      <tag>confirm</tag>      <usetemplate       ignoretext="Some selected linksets cannot be set because of permission restrictions on the linkset." @@ -8147,9 +8164,11 @@ The site at '<nolink>[HOST_NAME]</nolink>' in realm '    <notification     icon="alertmodal.tga" -   name="PathfindingLinksets_SetLinksetUseMismatchOnVolume" +   name="PathfindingLinksets_MismatchOnVolume"     type="alertmodal"> -    Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. + +Do you wish to continue?      <tag>confirm</tag>      <usetemplate       ignoretext="Some selected linksets cannot be set because the shape is non-convex" @@ -8160,10 +8179,47 @@ The site at '<nolink>[HOST_NAME]</nolink>' in realm '    <notification     icon="alertmodal.tga" -   name="PathfindingLinksets_SetLinksetUseMismatchOnRestrictedAndVolume" +   name="PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted" +   type="alertmodal"> +Some selected linksets will have the Phantom flag toggled. + +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. + +Do you wish to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Some selected linksets phantom flag will be toggled and others cannot be set because of permission restrictions on the linkset." +     name="okcancelignore" +     notext="Cancel" +     yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga" +   name="PathfindingLinksets_WarnOnPhantom_MismatchOnVolume" +   type="alertmodal"> +Some selected linksets will have the Phantom flag toggled. + +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. + +Do you wish to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Some selected linksets phantom flag will be toggled and others cannot be set because the shape is non-convex" +     name="okcancelignore" +     notext="Cancel" +     yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga" +   name="PathfindingLinksets_MismatchOnRestricted_MismatchOnVolume"     type="alertmodal"> -    Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. - Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. These linksets' use types will not change. +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. + +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. These linksets' use types will not change. + +Do you wish to continue?      <tag>confirm</tag>      <usetemplate       ignoretext="Some selected linksets cannot be set because of permission restrictions on the linkset and because the shape is non-convex." @@ -8174,6 +8230,25 @@ The site at '<nolink>[HOST_NAME]</nolink>' in realm '    <notification     icon="alertmodal.tga" +   name="PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted_MismatchOnVolume" +   type="alertmodal"> +Some selected linksets will have the Phantom flag toggled. + +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because of permission restrictions on the linkset.  These linksets will be set to be '[RESTRICTED_TYPE]' instead. + +Some selected linksets cannot be set to be '[REQUESTED_TYPE]' because the shape is non-convex. These linksets' use types will not change. + +Do you wish to continue? +    <tag>confirm</tag> +    <usetemplate +     ignoretext="Some selected linksets phantom flag will be toggled and others cannot be set because of permission restrictions on the linkset and because the shape is non-convex." +     name="okcancelignore" +     notext="Cancel" +     yestext="OK"/> +  </notification> + +  <notification +   icon="alertmodal.tga"     name="PathfindingLinksets_ChangeToFlexiblePath"     type="alertmodal">      The selected object affects the navmesh.  Changing it to a Flexible Path will remove it from the navmesh. diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index b7e81c4199..7705b4c567 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -60,6 +60,7 @@ static LLEventStream gTestPump("test_pump");  #include "../llslurl.h"  #include "../llstartup.h"  LLSLURL LLStartUp::sStartSLURL; +LLSLURL& LLStartUp::getStartSLURL() { return sStartSLURL; }  #include "lllogin.h" diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp index c6aa9b0f11..4da774a5f6 100644 --- a/indra/viewer_components/updater/llupdatechecker.cpp +++ b/indra/viewer_components/updater/llupdatechecker.cpp @@ -30,7 +30,9 @@  #include "llsd.h"  #include "llupdatechecker.h"  #include "lluri.h" - +#if LL_DARWIN +#include <CoreServices/CoreServices.h> +#endif  #if LL_WINDOWS  #pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally @@ -55,7 +57,7 @@ class LLUpdateChecker::Implementation:  public:  	Implementation(Client & client);  	~Implementation(); -	void check(std::string const & protocolVersion, std::string const & hostUrl,  +	void checkVersion(std::string const & protocolVersion, std::string const & hostUrl,   			   std::string const & servicePath, std::string channel, std::string version);  	// Responder: @@ -91,10 +93,10 @@ LLUpdateChecker::LLUpdateChecker(LLUpdateChecker::Client & client):  } -void LLUpdateChecker::check(std::string const & protocolVersion, std::string const & hostUrl,  +void LLUpdateChecker::checkVersion(std::string const & protocolVersion, std::string const & hostUrl,   							std::string const & servicePath, std::string channel, std::string version)  { -	mImplementation->check(protocolVersion, hostUrl, servicePath, channel, version); +	mImplementation->checkVersion(protocolVersion, hostUrl, servicePath, channel, version);  } @@ -120,7 +122,7 @@ LLUpdateChecker::Implementation::~Implementation()  } -void LLUpdateChecker::Implementation::check(std::string const & protocolVersion, std::string const & hostUrl,  +void LLUpdateChecker::Implementation::checkVersion(std::string const & protocolVersion, std::string const & hostUrl,   											std::string const & servicePath, std::string channel, std::string version)  {  	llassert(!mInProgress); @@ -179,7 +181,18 @@ std::string LLUpdateChecker::Implementation::buildUrl(std::string const & protoc  #ifdef LL_WINDOWS  	static const char * platform = "win";  #elif LL_DARWIN -	static const char * platform = "mac"; +    long versMin; +    Gestalt(gestaltSystemVersionMinor, &versMin); +     +    static const char *platform; +    if (versMin == 5) //OS 10.5 +    { +        platform = "mac_legacy"; +    } +    else  +    { +        platform = "mac"; +    }  #else  	static const char * platform = "lnx";  #endif diff --git a/indra/viewer_components/updater/llupdatechecker.h b/indra/viewer_components/updater/llupdatechecker.h index cea1f13647..d882169068 100644 --- a/indra/viewer_components/updater/llupdatechecker.h +++ b/indra/viewer_components/updater/llupdatechecker.h @@ -44,7 +44,7 @@ public:  	LLUpdateChecker(Client & client);  	// Check status of current app on the given host for the channel and version provided. -	void check(std::string const & protocolVersion, std::string const & hostUrl,  +	void checkVersion(std::string const & protocolVersion, std::string const & hostUrl,   			   std::string const & servicePath, std::string channel, std::string version);  private: diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index 2e18218667..bc73c72ddc 100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -509,7 +509,7 @@ bool LLUpdaterServiceImpl::onMainLoop(LLSD const & event)  		}  		else  		{ -			mUpdateChecker.check(mProtocolVersion, mUrl, mPath, mChannel, mVersion); +			mUpdateChecker.checkVersion(mProtocolVersion, mUrl, mPath, mChannel, mVersion);  			setState(LLUpdaterService::CHECKING_FOR_UPDATE);  		}  	}  diff --git a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp index e19d5724f1..7c016fecf9 100644 --- a/indra/viewer_components/updater/tests/llupdaterservice_test.cpp +++ b/indra/viewer_components/updater/tests/llupdaterservice_test.cpp @@ -1,4 +1,4 @@ -/** +/**    * @file   llupdaterservice_test.cpp   * @brief  Tests of llupdaterservice.cpp.   *  @@ -44,7 +44,7 @@  *****************************************************************************/  LLUpdateChecker::LLUpdateChecker(LLUpdateChecker::Client & client)  {} -void LLUpdateChecker::check(std::string const & protocolVersion, std::string const & hostUrl,  +void LLUpdateChecker::checkVersion(std::string const & protocolVersion, std::string const & hostUrl,   								  std::string const & servicePath, std::string channel, std::string version)  {}  LLUpdateDownloader::LLUpdateDownloader(Client & ) {} | 
