diff options
| author | Kelly Washington <kelly@lindenlab.com> | 2012-10-25 16:13:39 -0700 | 
|---|---|---|
| committer | Kelly Washington <kelly@lindenlab.com> | 2012-10-25 16:13:39 -0700 | 
| commit | 0cdff2817bdc342e0ac8b3c8711e3f7a72f1f617 (patch) | |
| tree | 0fbaca9292450f05588336eb6639b12d182156e1 | |
| parent | 03fa24f8aecc071bac920a400c122cbce0b029b4 (diff) | |
| parent | 1743e6a81330824021667000f8acdd6cf64dbf1b (diff) | |
Merge
59 files changed, 1119 insertions, 936 deletions
| @@ -69,37 +69,38 @@ b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release  4e9eec6a347f89b2b3f295beb72f1cf7837dff66 2.6.0-start  9283d6d1d7eb71dfe4c330e7c9144857e7356bde 2.6.0-beta1  9283d6d1d7eb71dfe4c330e7c9144857e7356bde DRTVWR-40_2.6.0-beta1 +461c8c65b5c799ddfe365422f9be9c0095d91e7d 2.6.0-beta1-tip  9e4641f4a7870c0f565a25a2971368d5a29516a1 2.6.0-beta2  9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2 -42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release -42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release  c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-beta1  c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-start  c5bdef3aaa2744626aef3c217ce29e1900d357b3 DRTVWR-43_2.6.1-beta1 -c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release -c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release  56b2778c743c2a964d82e1caf11084d76a87de2c 2.6.2-start  d1203046bb653b763f835b04d184646949d8dd5c 2.6.2-beta1  d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1 -214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release -214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release +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 2.6.3-beta1  d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1  0630e977504af5ea320c58d33cae4e1ddee793e9 2.6.3-beta2  0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2 -8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release -8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release  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 2.6.6-beta1  bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1 +5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start  dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release  dac76a711da5f1489a01c1fa62ec97d99c25736d DRTVWR-51_2.6.6-release -5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start  beafa8a9bd1d1b670b7523d865204dc4a4b38eef 2.6.8-beta1  beafa8a9bd1d1b670b7523d865204dc4a4b38eef DRTVWR-55_2.6.8-beta1  be2000b946f8cb3de5f44b2d419287d4c48ec4eb 2.6.8-release @@ -118,50 +119,50 @@ e67da2c6e3125966dd49eef98b36317afac1fcfe 2.6.9-start  9f79a6ed8fdcd2f3dac33ea6b3236eeb278dccfe 2.7.2-start  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 -6a3e7e403bd19e45fdfc2fcc716867af3ab80861 2.7.3-start  6af10678de4736222b2c3f7e010e984fb5b327de 2.7.4-start  be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1  be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1 -057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release -057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release  19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start  09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1  09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1 -6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release -6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release  e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1  e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start  e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1 -493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release -493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release +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  2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1 +493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release +493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release +54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start +ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start  29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release  29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release  4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix  4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix -54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start -ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start  599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1  599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1 -fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release -fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release  6b678ea52f90d5c14181661dcd2546e25bde483e 3.0.0-start  b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1  b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1 -1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release -1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release +fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release +fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release  82a2079ffcb57ecb1b3849cb41376b443e1eb912 3.0.1-start  364fd63517fbacbbcb9129d096187171ba8c9e48 3.0.1-beta1  364fd63517fbacbbcb9129d096187171ba8c9e48 DRTVWR-81_3.0.1-beta1  f2412ecd6740803ea9452f1d17fd872e263a0df7 3.0.2-start  42784bf50fa01974bada2a1af3892ee09c93fcda 3.0.2-beta1  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 @@ -169,9 +170,9 @@ b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start  6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1  61aa7974df089e8621fe9a4c69bcdefdb3cc208a 3.0.3-beta2  61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2 +586907287be581817b2422b5137971b22d54ea48 3.0.4-start  0496d2f74043cf4e6058e76ac3db03d44cff42ce 3.0.3-release  0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release -586907287be581817b2422b5137971b22d54ea48 3.0.4-start  92a3aa04775438226399b19deee12ac3b5a62838 3.0.5-start  c7282e59f374ee904bd793c3c444455e3399b0c5 3.1.0-start  2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1 @@ -192,11 +193,11 @@ e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1  c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start  9e390d76807fa70d356b8716fb83b8ce42a629ef 3.2.1-beta1  9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1 -a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release -a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release  40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start  523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1  523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1 +a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release +a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release  80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start  3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1  3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start @@ -247,67 +248,84 @@ bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156  6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148  2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155  24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153 -a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159 -9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157  5910f8063a7e1ddddf504c2f35ca831cc5e8f469 DRTVWR-160  f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 3.3.3-beta1  f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 DRTVWR-144 -089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161 -600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162 -c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163  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 +a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159 +9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157 +089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161 +c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163  b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171  050e48759337249130f684b4a21080b683f61732 DRTVWR-168  09ef7fd1b0781f33b8a3a9af6236b7bcb4831910 DRTVWR-170  f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 DRTVWR-158  f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1 -005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167  bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173  cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174  82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2  57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176  eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177  a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3 -888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175 -4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179  4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180  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  a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182  1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1 -81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186 -47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190 -cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181 -c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188  9ee9387789701d597130f879d9011a4958753862 DRTVWR-189 +47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190  421126293dcbde918e0da027ca0ab9deb5b4fbf2 DRTVWR-192 -4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191  33a2fc7a910ae29ff8b4850316ed7fbff9f64d33 DRTVWR-195  e9732c739c8a72a590216951505ea9c76a526a84 DRTVWR-193 -78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194  7602f61c804a512764e349c034c02ddabeefebc4 DRTVWR-196  ae5c83dd61d2d37c45f1d5b8bf2b036d87599f1b DRTVWR-198  507bdfbd6bf844a511c1ffeda4baa80016ed1346 DRTVWR-197  b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2  37402e2b19af970d51b0a814d79892cc5647532b DRTVWR-200  182a9bf30e81070361bb020a78003b1cf398e79c 3.4.0-beta3 -248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203  6dfb0fba782c9233dd95f24ec48146db0d3f210b DRTVWR-199  7c9102fb998885621919f2474a002c35b583539b 3.3.4-release2  7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201  84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4 -de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202  573e863be2f26d3687161def4b9fea9b7038dda8 3.4.0-beta5 -34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag -6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205 -7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206  8c9085066c78ed5f6c9379dc054c82a6fcdb1851 DRTVWR-207  351eea5f9dc192fc5ddea3b02958de97677a0a12 3.3.4-release3 +af7b28e75bd5a629cd9e0dc46fb3f1757626f493 DRTVWR-212 +015012c2b740ccdec8a8c3d6e5f898449ecfe0b8 DRTVWR-213 +62b07aa81b1957897c3846292bb9412977b0af6c 3.3.4-beta6 +ceed0b65a69f1eac20d523e0203320a32f9a3f3c DRTVWR-215 +733ceac77583874f3626ef7a15c105b83ef0f5bb 3.4.0-beta7 +97977c67245f52db20eb15f1918cc0f24778cabc 3.4.0-release +5adb2b8f96c3cac88ad7c7d996d707f1b29df336 3.4.1-beta1 +b3f74858a1c8720c82d0978f3877a3fc8ba459ec 3.4.1-beta1a +2b779f233ee6f38c89cb921650c773a96e63da92 DRTVWR-220 +0b9d95f4bfb6867cbf56eaec51633b0da2f1262d DRTVWR-221 +e6e553761829dc0270eaaa712b7cb0622535b076 3.4.1-beta3 +f00068a66a2e2f72acbe3f690b98b323e740b289 DRTVWR-222 +305950187c628a5d6743ee9ea711cc5b9177a18e 3.4.1-beta4 +dd23d4da3bcb2ffda58569e759feb7c119982973 DRTVWR-224 +0bd3744ff060452aa13ff4992eafb381df7b1012 3.4.1-beta5 +29075f8c1abed53dcf195a59f61744e27a91108f DRTVWR-226 +fba99f381b8d4ad1b7b42fa4993b29998d95be18 DRTVWR-179 +49ed253c80bed7410e238eeab35a9f14cb034364 3.4.1-beta6 +468ca3268229011a59df99229b24315844b33d34 DRTVWR-227 +524da902713e8b60322640b9825101add4a7c497 3.4.1-beta7 +173c2809f9873499c4b9d6bc044ec941c954d3fb DRTVWR-228 +1dc94555582f52718834081e7659e973ae4521f7 3.4.1-beta8 +52c164c8023a5e65f3dc1b0bbb7fa1dd0c631b6b DRTVWR-231 +9c4519aa5c70f7560111fb5c740d3a7dc20a845a 3.4.1-beta9 +464cf7a63a9a2f95bc4972dc022ca765e93de7d3 DRTVWR-233 +9c4519aa5c70f7560111fb5c740d3a7dc20a845a 3.4.1-beta9 +637fe8bbee5e24940448198c221d5ee0fa3247b4 3.4.1-beta9 +4e0d84e92132e9e95a1d52a1e49bad69c278ea05 3.4.1-beta10 diff --git a/autobuild.xml b/autobuild.xml index a86c8fd866..05e0ac28ae 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1770,9 +1770,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>dde928cb24d22a267004a8c17669ba65</string> +              <string>8aedfdcf670348c18a9991ae1b384a61</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226426/arch/Linux/installer/google_perftools-1.7-linux-20110412.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/262672/arch/Linux/installer/gperftools-2.0-linux-20120727.tar.bz2</string>              </map>              <key>name</key>              <string>linux</string> @@ -1782,9 +1782,9 @@              <key>archive</key>              <map>                <key>hash</key> -              <string>8308f7bd68bb7083655753b7abe7225f</string> +              <string>f62841804acb91e1309603a84f3f0ce8</string>                <key>url</key> -              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/226287/arch/CYGWIN/installer/google_perftools-1.7-windows-20110411.tar.bz2</string> +              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-google-perftools/rev/262672/arch/CYGWIN/installer/gperftools-2.0-windows-20120727.tar.bz2</string>              </map>              <key>name</key>              <string>windows</string> @@ -78,7 +78,7 @@ pre_build()      check_for "After 'autobuild configure'" ${build_dir}/packages/dictionaries -  end_section "Pre$variant" + end_section "Pre$variant"  }  package_llphysicsextensions_tpv() diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index ed192a9975..ca258900c7 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -289,6 +289,7 @@ void LLApp::setupErrorHandling()  	// occasionally checks to see if the app is in an error state, and sees if it needs to be run.  #if LL_WINDOWS +#if LL_SEND_CRASH_REPORTS  	// This sets a callback to handle w32 signals to the console window.  	// The viewer shouldn't be affected, sicne its a windowed app.  	SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ConsoleCtrlHandler, TRUE); @@ -300,7 +301,7 @@ void LLApp::setupErrorHandling()  		mExceptionHandler = new google_breakpad::ExceptionHandler(  			L"C:\\Temp\\", 0, windows_post_minidump_callback, 0, google_breakpad::ExceptionHandler::HANDLER_ALL);  	} - +#endif  #else  	//  	// Start up signal handling. diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp index afaf366668..70ad10ad55 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -252,21 +252,6 @@ U32 LLMemory::getAllocatedMemKB()  	return sAllocatedMemInKB ;  } -void* ll_allocate (size_t size) -{ -	if (size == 0) -	{ -		llwarns << "Null allocation" << llendl; -	} -	void *p = malloc(size); -	if (p == NULL) -	{ -		LLMemory::freeReserve(); -		llerrs << "Out of memory Error" << llendl; -	} -	return p; -} -  //----------------------------------------------------------------------------  #if defined(LL_WINDOWS) @@ -1365,7 +1350,7 @@ char* LLPrivateMemoryPool::allocate(U32 size)  	//if the asked size larger than MAX_BLOCK_SIZE, fetch from heap directly, the pool does not manage it  	if(size >= CHUNK_SIZE)  	{ -		return (char*)malloc(size) ; +		return (char*)ll_aligned_malloc_16(size) ;  	}  	char* p = NULL ; @@ -1422,7 +1407,7 @@ char* LLPrivateMemoryPool::allocate(U32 size)  			to_log = false ;  		} -		return (char*)malloc(size) ; +		return (char*)ll_aligned_malloc_16(size) ;  	}  	return p ; @@ -1441,7 +1426,7 @@ void LLPrivateMemoryPool::freeMem(void* addr)  	if(!chunk)  	{ -		free(addr) ; //release from heap +		ll_aligned_free_16(addr) ; //release from heap  	}  	else  	{ @@ -1565,7 +1550,7 @@ LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::addChunk(S32 chunk_inde  	mReservedPoolSize += preferred_size + overhead ; -	char* buffer = (char*)malloc(preferred_size + overhead) ; +	char* buffer = (char*)ll_aligned_malloc_16(preferred_size + overhead) ;  	if(!buffer)  	{  		return NULL ; @@ -1633,7 +1618,7 @@ void LLPrivateMemoryPool::removeChunk(LLMemoryChunk* chunk)  	mReservedPoolSize -= chunk->getBufferSize() ;  	//release memory -	free(chunk->getBuffer()) ; +	ll_aligned_free_16(chunk->getBuffer()) ;  }  U16 LLPrivateMemoryPool::findHashKey(const char* addr) @@ -1977,7 +1962,7 @@ char* LLPrivateMemoryPoolManager::allocate(LLPrivateMemoryPool* poolp, U32 size,  	if(!poolp)  	{ -		p = (char*)malloc(size) ; +		p = (char*)ll_aligned_malloc_16(size) ;  	}  	else  	{ @@ -2006,7 +1991,7 @@ char* LLPrivateMemoryPoolManager::allocate(LLPrivateMemoryPool* poolp, U32 size)  	}  	else  	{ -		return (char*)malloc(size) ; +		return (char*)ll_aligned_malloc_16(size) ;  	}  }  #endif @@ -2031,7 +2016,7 @@ void  LLPrivateMemoryPoolManager::freeMem(LLPrivateMemoryPool* poolp, void* addr  	{  		if(!sPrivatePoolEnabled)  		{ -			free(addr) ; //private pool is disabled. +			ll_aligned_free_16(addr) ; //private pool is disabled.  		}  		else if(!sInstance) //the private memory manager is destroyed, try the dangling list  		{ diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 9dd776ff57..10013e0f92 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -27,6 +27,13 @@  #define LLMEMORY_H  #include "llmemtype.h" + +#if LL_WINDOWS && LL_DEBUG +#define LL_CHECK_MEMORY llassert(_CrtCheckMemory()); +#else +#define LL_CHECK_MEMORY +#endif +  inline void* ll_aligned_malloc( size_t size, int align )  {  	void* mem = malloc( size + (align - 1) + sizeof(void*) ); @@ -58,31 +65,43 @@ inline void* ll_aligned_malloc_16(size_t size) // returned hunk MUST be freed wi  #endif  } -inline void* ll_aligned_realloc_16(void* ptr, size_t size) // returned hunk MUST be freed with ll_aligned_free_16(). +inline void ll_aligned_free_16(void *p)  {  #if defined(LL_WINDOWS) -	return _aligned_realloc(ptr, size, 16); +	_aligned_free(p);  #elif defined(LL_DARWIN) -	return realloc(ptr,size); // default osx malloc is 16 byte aligned. +	return free(p);  #else -	return realloc(ptr,size); // FIXME not guaranteed to be aligned. +	free(p); // posix_memalign() is compatible with heap deallocator  #endif  } -inline void ll_aligned_free_16(void *p) +inline void* ll_aligned_realloc_16(void* ptr, size_t size, size_t old_size) // returned hunk MUST be freed with ll_aligned_free_16().  {  #if defined(LL_WINDOWS) -	_aligned_free(p); +	return _aligned_realloc(ptr, size, 16);  #elif defined(LL_DARWIN) -	return free(p); +	return realloc(ptr,size); // default osx malloc is 16 byte aligned.  #else -	free(p); // posix_memalign() is compatible with heap deallocator +	//FIXME: memcpy is SLOW +	void* ret = ll_aligned_malloc_16(size); +	if (ptr) +	{ +		if (ret) +		{ +			// Only copy the size of the smallest memory block to avoid memory corruption. +			memcpy(ret, ptr, llmin(old_size, size)); +		} +		ll_aligned_free_16(ptr); +	} +	return ret;  #endif  } +  #else // USE_TCMALLOC  // ll_aligned_foo_16 are not needed with tcmalloc  #define ll_aligned_malloc_16 malloc -#define ll_aligned_realloc_16 realloc +#define ll_aligned_realloc_16(a,b,c) realloc(a,b)  #define ll_aligned_free_16 free  #endif // USE_TCMALLOC diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp index 1738c16dea..abf47a0f57 100644 --- a/indra/llcommon/llqueuedthread.cpp +++ b/indra/llcommon/llqueuedthread.cpp @@ -134,8 +134,8 @@ S32 LLQueuedThread::updateQueue(F32 max_time_ms)  		pending = getPending();  		if(pending > 0)  		{ -		unpause(); -	} +			unpause(); +		}  	}  	else  	{ diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index a6ad6b125c..c2fbb544a8 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -114,7 +114,7 @@ LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :  		apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread  	}  	mRunCondition = new LLCondition(mAPRPoolp); - +	mDataLock = new LLMutex(mAPRPoolp);  	mLocalAPRFilePoolp = NULL ;  } @@ -173,7 +173,10 @@ void LLThread::shutdown()  	}  	delete mRunCondition; -	mRunCondition = 0; +	mRunCondition = NULL; + +	delete mDataLock; +	mDataLock = NULL;  	if (mIsLocalPool && mAPRPoolp)  	{ @@ -242,28 +245,30 @@ bool LLThread::runCondition(void)  // Stop thread execution if requested until unpaused.  void LLThread::checkPause()  { -	mRunCondition->lock(); +	mDataLock->lock();  	// This is in a while loop because the pthread API allows for spurious wakeups.  	while(shouldSleep())  	{ +		mDataLock->unlock();  		mRunCondition->wait(); // unlocks mRunCondition +		mDataLock->lock();  		// mRunCondition is locked when the thread wakes up  	} - 	mRunCondition->unlock(); + 	mDataLock->unlock();  }  //============================================================================  void LLThread::setQuitting()  { -	mRunCondition->lock(); +	mDataLock->lock();  	if (mStatus == RUNNING)  	{  		mStatus = QUITTING;  	} -	mRunCondition->unlock(); +	mDataLock->unlock();  	wake();  } @@ -285,12 +290,12 @@ void LLThread::yield()  void LLThread::wake()  { -	mRunCondition->lock(); +	mDataLock->lock();  	if(!shouldSleep())  	{  		mRunCondition->signal();  	} -	mRunCondition->unlock(); +	mDataLock->unlock();  }  void LLThread::wakeLocked() @@ -481,6 +486,19 @@ LLThreadSafeRefCount::LLThreadSafeRefCount() :  {  } +LLThreadSafeRefCount::LLThreadSafeRefCount(const LLThreadSafeRefCount& src) +{ +	if (sMutex) +	{ +		sMutex->lock(); +	} +	mRef = 0; +	if (sMutex) +	{ +		sMutex->unlock(); +	} +} +  LLThreadSafeRefCount::~LLThreadSafeRefCount()  {   	if (mRef != 0) @@ -489,6 +507,7 @@ LLThreadSafeRefCount::~LLThreadSafeRefCount()  	}  } +  //============================================================================  LLResponder::~LLResponder() diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h index b52e70ab2e..115bf47553 100644 --- a/indra/llcommon/llthread.h +++ b/indra/llcommon/llthread.h @@ -97,6 +97,7 @@ private:  protected:  	std::string			mName;  	LLCondition*		mRunCondition; +	LLMutex*			mDataLock;  	apr_thread_t		*mAPRThreadp;  	apr_pool_t			*mAPRPoolp; @@ -122,15 +123,15 @@ protected:  	inline void unlockData();  	// This is the predicate that decides whether the thread should sleep.   -	// It should only be called with mRunCondition locked, since the virtual runCondition() function may need to access +	// It should only be called with mDataLock locked, since the virtual runCondition() function may need to access  	// data structures that are thread-unsafe.  	bool shouldSleep(void) { return (mStatus == RUNNING) && (isPaused() || (!runCondition())); }  	// To avoid spurious signals (and the associated context switches) when the condition may or may not have changed, you can do the following: -	// mRunCondition->lock(); +	// mDataLock->lock();  	// if(!shouldSleep())  	//     mRunCondition->signal(); -	// mRunCondition->unlock(); +	// mDataLock->unlock();  };  //============================================================================ @@ -205,12 +206,12 @@ private:  void LLThread::lockData()  { -	mRunCondition->lock(); +	mDataLock->lock();  }  void LLThread::unlockData()  { -	mRunCondition->unlock(); +	mDataLock->unlock();  } @@ -227,15 +228,27 @@ public:  private:  	static LLMutex* sMutex; -private: -	LLThreadSafeRefCount(const LLThreadSafeRefCount&); // not implemented -	LLThreadSafeRefCount&operator=(const LLThreadSafeRefCount&); // not implemented -  protected:  	virtual ~LLThreadSafeRefCount(); // use unref()  public:  	LLThreadSafeRefCount(); +	LLThreadSafeRefCount(const LLThreadSafeRefCount&); +	LLThreadSafeRefCount& operator=(const LLThreadSafeRefCount& ref)  +	{ +		if (sMutex) +		{ +			sMutex->lock(); +		} +		mRef = 0; +		if (sMutex) +		{ +			sMutex->unlock(); +		} +		return *this; +	} + +  	void ref()  	{ diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index e6b838c5b2..916c346b7a 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -1665,6 +1665,12 @@ static void avg4_colors2(const U8* a, const U8* b, const U8* c, const U8* d, U8*  	dst[1] = (U8)(((U32)(a[1]) + b[1] + c[1] + d[1])>>2);  } +void LLImageBase::setDataAndSize(U8 *data, S32 size) +{  +	ll_assert_aligned(data, 16); +	mData = data; mDataSize = size;  +}	 +  //static  void LLImageBase::generateMip(const U8* indata, U8* mipdata, S32 width, S32 height, S32 nchannels)  { diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index 99023351c2..5f54585005 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -148,7 +148,7 @@ public:  protected:  	// special accessor to allow direct setting of mData and mDataSize by LLImageFormatted -	void setDataAndSize(U8 *data, S32 size) { mData = data; mDataSize = size; }	 +	void setDataAndSize(U8 *data, S32 size);  public:  	static void generateMip(const U8 *indata, U8* mipdata, int width, int height, S32 nchannels); diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 53d56e96da..85ea14f9bc 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -6979,19 +6979,20 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con  {  	S32 new_verts = mNumVertices+1;  	S32 new_size = new_verts*16; -//	S32 old_size = mNumVertices*16; +	S32 old_size = mNumVertices*16;  	//positions -	mPositions = (LLVector4a*) ll_aligned_realloc_16(mPositions, new_size); +	mPositions = (LLVector4a*) ll_aligned_realloc_16(mPositions, new_size, old_size);  	ll_assert_aligned(mPositions,16);  	//normals -	mNormals = (LLVector4a*) ll_aligned_realloc_16(mNormals, new_size); +	mNormals = (LLVector4a*) ll_aligned_realloc_16(mNormals, new_size, old_size);  	ll_assert_aligned(mNormals,16);  	//tex coords  	new_size = ((new_verts*8)+0xF) & ~0xF; -	mTexCoords = (LLVector2*) ll_aligned_realloc_16(mTexCoords, new_size); +	old_size = ((mNumVertices*8)+0xF) & ~0xF; +	mTexCoords = (LLVector2*) ll_aligned_realloc_16(mTexCoords, new_size, old_size);  	ll_assert_aligned(mTexCoords,16); @@ -7045,7 +7046,7 @@ void LLVolumeFace::pushIndex(const U16& idx)  	S32 old_size = ((mNumIndices*2)+0xF) & ~0xF;  	if (new_size != old_size)  	{ -		mIndices = (U16*) ll_aligned_realloc_16(mIndices, new_size); +		mIndices = (U16*) ll_aligned_realloc_16(mIndices, new_size, old_size);  		ll_assert_aligned(mIndices,16);  	} @@ -7087,11 +7088,11 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat  	}  	//allocate new buffer space -	mPositions = (LLVector4a*) ll_aligned_realloc_16(mPositions, new_count*sizeof(LLVector4a)); +	mPositions = (LLVector4a*) ll_aligned_realloc_16(mPositions, new_count*sizeof(LLVector4a), mNumVertices*sizeof(LLVector4a));  	ll_assert_aligned(mPositions, 16); -	mNormals = (LLVector4a*) ll_aligned_realloc_16(mNormals, new_count*sizeof(LLVector4a)); +	mNormals = (LLVector4a*) ll_aligned_realloc_16(mNormals, new_count*sizeof(LLVector4a), mNumVertices*sizeof(LLVector4a));  	ll_assert_aligned(mNormals, 16); -	mTexCoords = (LLVector2*) ll_aligned_realloc_16(mTexCoords, (new_count*sizeof(LLVector2)+0xF) & ~0xF); +	mTexCoords = (LLVector2*) ll_aligned_realloc_16(mTexCoords, (new_count*sizeof(LLVector2)+0xF) & ~0xF, (mNumVertices*sizeof(LLVector2)+0xF) & ~0xF);  	ll_assert_aligned(mTexCoords, 16);  	mNumVertices = new_count; @@ -7138,7 +7139,7 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat  	new_count = mNumIndices + face.mNumIndices;  	//allocate new index buffer -	mIndices = (U16*) ll_aligned_realloc_16(mIndices, (new_count*sizeof(U16)+0xF) & ~0xF); +	mIndices = (U16*) ll_aligned_realloc_16(mIndices, (new_count*sizeof(U16)+0xF) & ~0xF, (mNumIndices*sizeof(U16)+0xF) & ~0xF);  	//get destination address into new index buffer  	U16* dst_idx = mIndices+mNumIndices; diff --git a/indra/llmath/tests/alignment_test.cpp b/indra/llmath/tests/alignment_test.cpp index ac0c45ae6f..9105b1c1fd 100644 --- a/indra/llmath/tests/alignment_test.cpp +++ b/indra/llmath/tests/alignment_test.cpp @@ -34,16 +34,6 @@  #include "../llsimdmath.h"  #include "../llvector4a.h" -void* operator new(size_t size) -{ -	return ll_aligned_malloc_16(size); -} - -void operator delete(void *p) -{ -	ll_aligned_free_16(p); -} -  namespace tut  { @@ -59,6 +49,27 @@ tut::alignment_test_t tut_alignment_test("LLAlignment");  LL_ALIGN_PREFIX(16)  class MyVector4a  { +public: +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void *p) +	{ +		ll_aligned_free_16(p); +	} + +	void* operator new[](size_t count) +	{	// try to allocate count bytes for an array +		return ll_aligned_malloc_16(count); +	} + +	void operator delete[](void *p) +	{ +		ll_aligned_free_16(p); +	} +  	LLQuad mQ;  } LL_ALIGN_POSTFIX(16); @@ -78,7 +89,7 @@ void alignment_test_object_t::test<1>()  		align_ptr = ll_aligned_malloc_16(sizeof(MyVector4a));  		ensure("ll_aligned_malloc_16 failed", is_aligned(align_ptr,16)); -		align_ptr = ll_aligned_realloc_16(align_ptr,2*sizeof(MyVector4a)); +		align_ptr = ll_aligned_realloc_16(align_ptr,2*sizeof(MyVector4a), sizeof(MyVector4a));  		ensure("ll_aligned_realloc_16 failed", is_aligned(align_ptr,16));  		ll_aligned_free_16(align_ptr); diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index b4ac984d57..0d01dd0e3e 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -133,12 +133,12 @@ std::string LLCurl::getVersionString()  //////////////////////////////////////////////////////////////////////////////  LLCurl::Responder::Responder() -	: mReferenceCount(0)  {  }  LLCurl::Responder::~Responder()  { +	LL_CHECK_MEMORY  }  // virtual @@ -202,23 +202,6 @@ void LLCurl::Responder::completedHeader(U32 status, const std::string& reason, c  } -namespace boost -{ -	void intrusive_ptr_add_ref(LLCurl::Responder* p) -	{ -		++p->mReferenceCount; -	} -	 -	void intrusive_ptr_release(LLCurl::Responder* p) -	{ -		if (p && 0 == --p->mReferenceCount) -		{ -			delete p; -		} -	} -}; - -  //////////////////////////////////////////////////////////////////////////////  std::set<CURL*> LLCurl::Easy::sFreeHandles; @@ -267,15 +250,18 @@ void LLCurl::Easy::releaseEasyHandle(CURL* handle)  	LLMutexLock lock(sHandleMutexp) ;  	if (sActiveHandles.find(handle) != sActiveHandles.end())  	{ +		LL_CHECK_MEMORY  		sActiveHandles.erase(handle); - +		LL_CHECK_MEMORY  		if(sFreeHandles.size() < MAX_NUM_FREE_HANDLES)  		{ -		sFreeHandles.insert(handle); -	} -	else -	{ +			sFreeHandles.insert(handle); +			LL_CHECK_MEMORY +		} +		else +		{  			LLCurl::deleteEasyHandle(handle) ; +			LL_CHECK_MEMORY  		}  	}  	else @@ -318,13 +304,15 @@ LLCurl::Easy::~Easy()  	releaseEasyHandle(mCurlEasyHandle);  	--gCurlEasyCount;  	curl_slist_free_all(mHeaders); +	LL_CHECK_MEMORY  	for_each(mStrings.begin(), mStrings.end(), DeletePointerArray()); - +	LL_CHECK_MEMORY  	if (mResponder && LLCurl::sNotQuitting) //aborted  	{	  		std::string reason("Request timeout, aborted.") ;  		mResponder->completedRaw(408, //HTTP_REQUEST_TIME_OUT, timeout, abort  			reason, mChannels, mOutput);		 +		LL_CHECK_MEMORY  	}  	mResponder = NULL;  } @@ -599,35 +587,50 @@ void LLCurl::Multi::cleanup(bool deleted)  	llassert_always(deleted || !mValid) ;  	LLMutexLock lock(mDeletionMutexp); -	 + +  	// Clean up active  	for(easy_active_list_t::iterator iter = mEasyActiveList.begin();  		iter != mEasyActiveList.end(); ++iter)  	{  		Easy* easy = *iter; +		LL_CHECK_MEMORY  		check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle())); - +		LL_CHECK_MEMORY  		if(deleted)  		{  			easy->mResponder = NULL ; //avoid triggering mResponder. +			LL_CHECK_MEMORY  		}  		delete easy; +		LL_CHECK_MEMORY  	}  	mEasyActiveList.clear();  	mEasyActiveMap.clear(); -	// Clean up freed +	LL_CHECK_MEMORY +	 +		// Clean up freed  	for_each(mEasyFreeList.begin(), mEasyFreeList.end(), DeletePointer());	  	mEasyFreeList.clear(); - +	 +	LL_CHECK_MEMORY +		  	check_curl_multi_code(LLCurl::deleteMultiHandle(mCurlMultiHandle));  	mCurlMultiHandle = NULL ; + +	LL_CHECK_MEMORY  	delete mMutexp ;  	mMutexp = NULL ; + +	LL_CHECK_MEMORY +  	delete mEasyMutexp ;  	mEasyMutexp = NULL ; +	LL_CHECK_MEMORY +  	mQueued = 0 ;  	mState = STATE_COMPLETED; @@ -1104,6 +1107,7 @@ bool LLCurlRequest::getByteRange(const std::string& url,  								 S32 offset, S32 length,  								 LLCurl::ResponderPtr responder)  { +	llassert(LLCurl::sNotQuitting);  	LLCurl::Easy* easy = allocEasy();  	if (!easy)  	{ @@ -1131,6 +1135,7 @@ bool LLCurlRequest::post(const std::string& url,  						 const LLSD& data,  						 LLCurl::ResponderPtr responder, S32 time_out)  { +	llassert(LLCurl::sNotQuitting);  	LLCurl::Easy* easy = allocEasy();  	if (!easy)  	{ @@ -1158,6 +1163,7 @@ bool LLCurlRequest::post(const std::string& url,  						 const std::string& data,  						 LLCurl::ResponderPtr responder, S32 time_out)  { +	llassert(LLCurl::sNotQuitting);  	LLCurl::Easy* easy = allocEasy();  	if (!easy)  	{ @@ -1714,29 +1720,42 @@ void LLCurl::cleanupClass()  			break ;  		}  	} +	LL_CHECK_MEMORY  	sCurlThread->shutdown() ; +	LL_CHECK_MEMORY  	delete sCurlThread ;  	sCurlThread = NULL ; +	LL_CHECK_MEMORY  #if SAFE_SSL  	CRYPTO_set_locking_callback(NULL);  	for_each(sSSLMutex.begin(), sSSLMutex.end(), DeletePointer());  #endif +	 +	LL_CHECK_MEMORY  	for (std::set<CURL*>::iterator iter = Easy::sFreeHandles.begin(); iter != Easy::sFreeHandles.end(); ++iter)  	{  		CURL* curl = *iter;  		LLCurl::deleteEasyHandle(curl);  	} +	 +	LL_CHECK_MEMORY  	Easy::sFreeHandles.clear(); +	LL_CHECK_MEMORY +  	delete Easy::sHandleMutexp ;  	Easy::sHandleMutexp = NULL ; +	LL_CHECK_MEMORY +  	delete sHandleMutexp ;  	sHandleMutexp = NULL ; +	LL_CHECK_MEMORY +  	// removed as per https://jira.secondlife.com/browse/SH-3115  	//llassert(Easy::sActiveHandles.empty());  } @@ -1744,6 +1763,8 @@ void LLCurl::cleanupClass()  //static   CURLM* LLCurl::newMultiHandle()  { +	llassert(sNotQuitting); +  	LLMutexLock lock(sHandleMutexp) ;  	if(sTotalHandles + 1 > sMaxHandles) @@ -1777,6 +1798,7 @@ CURLMcode  LLCurl::deleteMultiHandle(CURLM* handle)  //static   CURL*  LLCurl::newEasyHandle()  { +	llassert(sNotQuitting);  	LLMutexLock lock(sHandleMutexp) ;  	if(sTotalHandles + 1 > sMaxHandles) @@ -1801,7 +1823,9 @@ void  LLCurl::deleteEasyHandle(CURL* handle)  	if(handle)  	{  		LLMutexLock lock(sHandleMutexp) ; +		LL_CHECK_MEMORY  		curl_easy_cleanup(handle) ; +		LL_CHECK_MEMORY  		sTotalHandles-- ;  	}  } diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 20ebd86c06..7bcf61e233 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -44,6 +44,8 @@  #include "llthread.h"  #include "llqueuedthread.h"  #include "llframetimer.h" +#include "llpointer.h" +  class LLMutex;  class LLCurlThread; @@ -67,7 +69,7 @@ public:  		F64 mSpeedDownload;  	}; -	class Responder +	class Responder : public LLThreadSafeRefCount  	{  	//LOG_CLASS(Responder);  	public: @@ -126,13 +128,10 @@ public:  				return false;  			} -	public: /* but not really -- don't touch this */ -		U32 mReferenceCount; -  	private:  		std::string mURL;  	}; -	typedef boost::intrusive_ptr<Responder>	ResponderPtr; +	typedef LLPointer<Responder>	ResponderPtr;  	/** @@ -378,12 +377,6 @@ private:  	void cleanupMulti(LLCurl::Multi* multi) ;  } ; -namespace boost -{ -	void intrusive_ptr_add_ref(LLCurl::Responder* p); -	void intrusive_ptr_release(LLCurl::Responder* p); -}; -  class LLCurlRequest  { diff --git a/indra/llmessage/tests/llcurl_stub.cpp b/indra/llmessage/tests/llcurl_stub.cpp index d84fe0a49f..9b298d0c04 100644 --- a/indra/llmessage/tests/llcurl_stub.cpp +++ b/indra/llmessage/tests/llcurl_stub.cpp @@ -28,7 +28,6 @@  #include "llcurl.h"  LLCurl::Responder::Responder() -	: mReferenceCount(0)  {  } @@ -77,19 +76,3 @@ void LLCurl::Responder::result(LLSD const&)  {  } -namespace boost -{ -	void intrusive_ptr_add_ref(LLCurl::Responder* p) -	{ -		++p->mReferenceCount; -	} - -	void intrusive_ptr_release(LLCurl::Responder* p) -	{ -		if(p && 0 == --p->mReferenceCount) -		{ -			delete p; -		} -	} -}; - diff --git a/indra/llmessage/tests/llhttpclient_test.cpp b/indra/llmessage/tests/llhttpclient_test.cpp index e338d4ec71..a2be307cc8 100644 --- a/indra/llmessage/tests/llhttpclient_test.cpp +++ b/indra/llmessage/tests/llhttpclient_test.cpp @@ -189,9 +189,9 @@ namespace tut  			}  		public: -			static boost::intrusive_ptr<Result> build(HTTPClientTestData& client) +			static Result* build(HTTPClientTestData& client)  			{ -				return boost::intrusive_ptr<Result>(new Result(client)); +				return new Result(client);  			}  			~Result() @@ -258,7 +258,6 @@ namespace tut  	void HTTPClientTestObject::test<1>()  	{  		LLHTTPClient::get(local_server, newResult()); -  		runThePump();  		ensureStatusOK();  		ensure("result object wasn't destroyed", mResultDeleted); diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index dbd96673a1..0644d2638c 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -1074,7 +1074,7 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)  			mAuthURL = message.getValue("url");  			mAuthRealm = message.getValue("realm");  			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_AUTH_REQUEST); -		}		 +		}  		else if(message_name == "debug_message")  		{  			mDebugMessageText = message.getValue("message_text"); diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 28a14b23b9..80752231d7 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -38,6 +38,10 @@  #include "llglslshader.h"  #include "llmemory.h" +#if LL_DARWIN +#define LL_VBO_POOLING 1 +#else +#endif  //Next Highest Power Of Two  //helper function, returns first number > v that is a power of 2, or v if v is already a power of 2  U32 nhpo2(U32 v) @@ -290,8 +294,6 @@ void LLVBOPool::seedPool()  } - -  void LLVBOPool::cleanup()  {  	U32 size = LL_VBO_BLOCK_SIZE; diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 0031362210..9ada161cd8 100755 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1564,6 +1564,7 @@ set(PACKAGE ON CACHE BOOL  if (WINDOWS)      set_target_properties(${VIEWER_BINARY_NAME}          PROPERTIES +        # *TODO -reenable this once we get server usage sorted out          LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS ${TCMALLOC_LINK_FLAGS}"          LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"          LINK_FLAGS_RELEASE "/FORCE:MULTIPLE /MAP\"secondlife-bin.MAP\" /OPT:REF" diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c9458857d1..0a9d6229ef 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1891,8 +1891,17 @@ bool LLAppViewer::cleanup()  	sTextureFetch->shutDownTextureCacheThread() ;  	sTextureFetch->shutDownImageDecodeThread() ; +	llinfos << "Shutting down message system" << llendflush; +	end_messaging_system(); + +	// *NOTE:Mani - The following call is not thread safe.  +	LL_CHECK_MEMORY +	LLCurl::cleanupClass(); +	LL_CHECK_MEMORY +  	LLFilePickerThread::cleanupClass(); +	//MUST happen AFTER LLCurl::cleanupClass  	delete sTextureCache;      sTextureCache = NULL;  	delete sTextureFetch; @@ -1961,12 +1970,6 @@ bool LLAppViewer::cleanup()  	LLViewerAssetStatsFF::cleanup(); -	llinfos << "Shutting down message system" << llendflush; -	end_messaging_system(); - -	// *NOTE:Mani - The following call is not thread safe.  -	LLCurl::cleanupClass(); -  	// If we're exiting to launch an URL, do that here so the screen  	// is at the right resolution before we launch IE.  	if (!gLaunchFileOnQuit.empty()) diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 53c77fa22e..e0ca1232b0 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -131,7 +131,9 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,  	// Note: This won't work when running from the debugger unless the _NO_DEBUG_HEAP environment variable is set to 1  	// Enable to get mem debugging within visual studio. -	//_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); +#if LL_DEBUG +	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); +#else  	_CrtSetDbgFlag(0); // default, just making explicit  	ULONG ulEnableLFH = 2; @@ -146,6 +148,7 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,  			heap_enable_lfh_error[i] = GetLastError();  	}  #endif +#endif  	// *FIX: global  	gIconResource = MAKEINTRESOURCE(IDI_LL_ICON); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 65bfc990d1..7b2c536f5a 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -919,7 +919,7 @@ public:  	bool uploadConfirmationCallback(  		const LLSD& notification,  		const LLSD& response, -		boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder> responder) +		LLPointer<LLNewAgentInventoryVariablePriceResponder> responder)  	{  		S32 option;  		std::string confirmation_url; @@ -949,7 +949,7 @@ public:  	void confirmUpload(  		const std::string& confirmation_url, -		boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder> responder) +		LLPointer<LLNewAgentInventoryVariablePriceResponder> responder)  	{  		if ( getFilename().empty() )  		{ @@ -1124,7 +1124,7 @@ void LLNewAgentInventoryVariablePriceResponder::showConfirmationDialog(  		// and cause sadness.  		mImpl->confirmUpload(  			confirmation_url, -			boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder>(this)); +			LLPointer<LLNewAgentInventoryVariablePriceResponder>(this));  	}  	else  	{ @@ -1157,7 +1157,7 @@ void LLNewAgentInventoryVariablePriceResponder::showConfirmationDialog(  				mImpl,  				_1,  				_2, -				boost::intrusive_ptr<LLNewAgentInventoryVariablePriceResponder>(this))); +				LLPointer<LLNewAgentInventoryVariablePriceResponder>(this)));  	}  } diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 4eda2b92b3..954fd429a5 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -951,6 +951,12 @@ LLSpatialGroup* LLDrawable::getSpatialGroup() const  void LLDrawable::setSpatialGroup(LLSpatialGroup *groupp)  { +	//precondition: mSpatialGroupp MUST be null or DEAD or mSpatialGroupp MUST NOT contain this +	llassert(!mSpatialGroupp || mSpatialGroupp->isDead() || !mSpatialGroupp->hasElement(this)); + +	//precondition: groupp MUST be null or groupp MUST contain this +	llassert(!groupp || groupp->hasElement(this)); +  /*if (mSpatialGroupp && (groupp != mSpatialGroupp))  	{  		mSpatialGroupp->setState(LLSpatialGroup::GEOM_DIRTY); @@ -970,9 +976,12 @@ void LLDrawable::setSpatialGroup(LLSpatialGroup *groupp)  		}  	} -	mSpatialGroupp = groupp; +	//postcondition: if next group is NULL, previous group must be dead OR NULL OR binIndex must be -1 +	//postcondition: if next group is NOT NULL, binIndex must not be -1 +	llassert(groupp == NULL ? (mSpatialGroupp == NULL || mSpatialGroupp->isDead()) || getBinIndex() == -1 : +							getBinIndex() != -1); -	llassert((mSpatialGroupp == NULL) ? getBinIndex() == -1 : getBinIndex() != -1); +	mSpatialGroupp = groupp;  }  LLSpatialPartition* LLDrawable::getSpatialPartition() @@ -1400,7 +1409,7 @@ void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update)  		markDead();  		return;  	} -	 +  	if (gShiftFrame)  	{  		return; @@ -1483,13 +1492,11 @@ void LLSpatialBridge::cleanupReferences()  	LLDrawable::cleanupReferences();  	if (mDrawable)  	{ -		LLSpatialGroup* group = mDrawable->getSpatialGroup(); -		if (group) -		{ -			group->mOctreeNode->remove(mDrawable); -			mDrawable->setSpatialGroup(NULL); -		} +		/* +		DON'T DO THIS -- this should happen through octree destruction + +		mDrawable->setSpatialGroup(NULL);  		if (mDrawable->getVObj())  		{  			LLViewerObject::const_child_list_t& child_list = mDrawable->getVObj()->getChildren(); @@ -1500,15 +1507,10 @@ void LLSpatialBridge::cleanupReferences()  				LLDrawable* drawable = child->mDrawable;					  				if (drawable)  				{ -					LLSpatialGroup* group = drawable->getSpatialGroup(); -					if (group) -					{ -						group->mOctreeNode->remove(drawable); -						drawable->setSpatialGroup(NULL); -					} +					drawable->setSpatialGroup(NULL);  				}  			} -		} +		}*/  		LLDrawable* drawablep = mDrawable;  		mDrawable = NULL; diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index b4f6bf9383..313b310e1e 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -411,12 +411,6 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)  					continue;  				} -				if ((params.mVertexBuffer->getTypeMask() & mask) != mask) -				{ //FIXME! -					llwarns << "Missing required components, skipping render batch." << llendl; -					continue; -				} -  				LLRenderPass::applyModelMatrix(params); diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 7a4d711d4e..c0976d1d43 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -83,6 +83,16 @@ public:  	LLDriverParam(LLWearable *wearablep);  	~LLDriverParam(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLDriverParamInfo*		getInfo() const { return (LLDriverParamInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index 4f4d9a40b4..2c786b7f8b 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -86,7 +86,7 @@ namespace  	class LLEventPollEventTimer : public LLEventTimer  	{ -		typedef boost::intrusive_ptr<LLEventPollResponder> EventPollResponderPtr; +		typedef LLPointer<LLEventPollResponder> EventPollResponderPtr;  	public:  		LLEventPollEventTimer(F32 period, EventPollResponderPtr responder) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 4a0c94df33..188f943f13 100644..100755 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -166,7 +166,8 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)  	//special value to indicate uninitialized position  	mIndicesIndex	= 0xFFFFFFFF; - +	 +	mIndexInTex = 0;  	mTexture		= NULL;  	mTEOffset		= -1;  	mTextureIndex = 255; diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp index 809d344d01..bca4b5e447 100644 --- a/indra/newview/llfloaterbuycontents.cpp +++ b/indra/newview/llfloaterbuycontents.cpp @@ -211,8 +211,8 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,  		BOOL item_is_multi = FALSE;  		if ((inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED -		     || inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS) -		     && !(inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK)) +			|| inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS) +			&& !(inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK))  		{  			item_is_multi = TRUE;  		} diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 0fe0e151fb..1e46d7a402 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -98,7 +98,11 @@ LLFloaterPathfindingLinksets::LLFloaterPathfindingLinksets(const LLSD& pSeed)  	mLabelSuggestedUseD(NULL),  	mEditD(NULL),  	mApplyEditsButton(NULL), -	mBeaconColor() +	mBeaconColor(), +	mPreviousValueA(LLPathfindingLinkset::MAX_WALKABILITY_VALUE), +	mPreviousValueB(LLPathfindingLinkset::MAX_WALKABILITY_VALUE), +	mPreviousValueC(LLPathfindingLinkset::MAX_WALKABILITY_VALUE), +	mPreviousValueD(LLPathfindingLinkset::MAX_WALKABILITY_VALUE)  {  } @@ -168,7 +172,7 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mEditA = findChild<LLLineEditor>("edit_a_value");  	llassert(mEditA != NULL);  	mEditA->setPrevalidate(LLTextValidate::validateNonNegativeS32); -	mEditA->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1)); +	mEditA->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1, mPreviousValueA));  	mLabelEditB = findChild<LLTextBase>("edit_b_label");  	llassert(mLabelEditB != NULL); @@ -179,7 +183,7 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mEditB = findChild<LLLineEditor>("edit_b_value");  	llassert(mEditB != NULL);  	mEditB->setPrevalidate(LLTextValidate::validateNonNegativeS32); -	mEditB->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1)); +	mEditB->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1, mPreviousValueB));  	mLabelEditC = findChild<LLTextBase>("edit_c_label");  	llassert(mLabelEditC != NULL); @@ -190,7 +194,7 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mEditC = findChild<LLLineEditor>("edit_c_value");  	llassert(mEditC != NULL);  	mEditC->setPrevalidate(LLTextValidate::validateNonNegativeS32); -	mEditC->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1)); +	mEditC->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1, mPreviousValueC));  	mLabelEditD = findChild<LLTextBase>("edit_d_label");  	llassert(mLabelEditD != NULL); @@ -201,7 +205,7 @@ BOOL LLFloaterPathfindingLinksets::postBuild()  	mEditD = findChild<LLLineEditor>("edit_d_value");  	llassert(mEditD != NULL);  	mEditD->setPrevalidate(LLTextValidate::validateNonNegativeS32); -	mEditD->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1)); +	mEditD->setCommitCallback(boost::bind(&LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered, this, _1, mPreviousValueD));  	mApplyEditsButton = findChild<LLButton>("apply_edit_values");  	llassert(mApplyEditsButton != NULL); @@ -323,26 +327,38 @@ void LLFloaterPathfindingLinksets::onClearFiltersClicked()  	rebuildObjectsScrollList();  } -void LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered(LLUICtrl *pUICtrl) +void LLFloaterPathfindingLinksets::onWalkabilityCoefficientEntered(LLUICtrl *pUICtrl, LLSD &pPreviousValue)  {  	LLLineEditor *pLineEditor = static_cast<LLLineEditor *>(pUICtrl);  	llassert(pLineEditor != NULL);  	const std::string &valueString = pLineEditor->getText(); -	S32 value; -	if (LLStringUtil::convertToS32(valueString, value)) +	S32 intValue; +	LLSD value; +	bool doResetValue = false; + +	if (valueString.empty())  	{ -		if ((value < LLPathfindingLinkset::MIN_WALKABILITY_VALUE) || (value > LLPathfindingLinkset::MAX_WALKABILITY_VALUE)) -		{ -			value = llclamp(value, LLPathfindingLinkset::MIN_WALKABILITY_VALUE, LLPathfindingLinkset::MAX_WALKABILITY_VALUE); -			pLineEditor->setValue(LLSD(value)); -		} +		value = pPreviousValue; +		doResetValue = true; +	} +	else if (LLStringUtil::convertToS32(valueString, intValue)) +	{ +		doResetValue = ((intValue < LLPathfindingLinkset::MIN_WALKABILITY_VALUE) || (intValue > LLPathfindingLinkset::MAX_WALKABILITY_VALUE)); +		value = LLSD(llclamp(intValue, LLPathfindingLinkset::MIN_WALKABILITY_VALUE, LLPathfindingLinkset::MAX_WALKABILITY_VALUE));  	}  	else  	{ -		pLineEditor->setValue(LLSD(LLPathfindingLinkset::MAX_WALKABILITY_VALUE)); +		value = LLSD(LLPathfindingLinkset::MAX_WALKABILITY_VALUE); +		doResetValue = true; +	} + +	if (doResetValue) +	{ +		pLineEditor->setValue(value);  	} +	pPreviousValue = value;  }  void LLFloaterPathfindingLinksets::onApplyChangesClicked() @@ -376,10 +392,14 @@ void LLFloaterPathfindingLinksets::updateEditFieldValues()  		const LLPathfindingLinkset *linkset = dynamic_cast<const LLPathfindingLinkset *>(firstSelectedObjectPtr.get());  		setEditLinksetUse(linkset->getLinksetUse()); -		mEditA->setValue(LLSD(linkset->getWalkabilityCoefficientA())); -		mEditB->setValue(LLSD(linkset->getWalkabilityCoefficientB())); -		mEditC->setValue(LLSD(linkset->getWalkabilityCoefficientC())); -		mEditD->setValue(LLSD(linkset->getWalkabilityCoefficientD())); +		mPreviousValueA = LLSD(linkset->getWalkabilityCoefficientA()); +		mPreviousValueB = LLSD(linkset->getWalkabilityCoefficientB()); +		mPreviousValueC = LLSD(linkset->getWalkabilityCoefficientC()); +		mPreviousValueD = LLSD(linkset->getWalkabilityCoefficientD()); +		mEditA->setValue(mPreviousValueA); +		mEditB->setValue(mPreviousValueB); +		mEditC->setValue(mPreviousValueC); +		mEditD->setValue(mPreviousValueD);  	}  } diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index 6538308122..7149da9215 100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h @@ -74,7 +74,7 @@ private:  	void onApplyAllFilters();  	void onClearFiltersClicked(); -	void onWalkabilityCoefficientEntered(LLUICtrl *pUICtrl); +	void onWalkabilityCoefficientEntered(LLUICtrl *pUICtrl, LLSD &pPreviousValue);  	void onApplyChangesClicked();  	void clearFilters(); @@ -132,6 +132,11 @@ private:  	LLButton         *mApplyEditsButton;  	LLColor4         mBeaconColor; + +	LLSD             mPreviousValueA; +	LLSD             mPreviousValueB; +	LLSD             mPreviousValueC; +	LLSD             mPreviousValueD;  };  #endif // LL_LLFLOATERPATHFINDINGLINKSETS_H diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp index c5df7e16e9..a242b224cd 100644 --- a/indra/newview/llfloatertos.cpp +++ b/indra/newview/llfloatertos.cpp @@ -71,9 +71,9 @@ class LLIamHere : public LLHTTPClient::Responder  	public: -		static boost::intrusive_ptr< LLIamHere > build( LLFloaterTOS* parent ) +		static LLIamHere* build( LLFloaterTOS* parent )  		{ -			return boost::intrusive_ptr< LLIamHere >( new LLIamHere( parent ) ); +			return new LLIamHere( parent );  		};  		virtual void  setParent( LLFloaterTOS* parentIn ) @@ -102,7 +102,7 @@ class LLIamHere : public LLHTTPClient::Responder  // this is global and not a class member to keep crud out of the header file  namespace { -	boost::intrusive_ptr< LLIamHere > gResponsePtr = 0; +	LLPointer< LLIamHere > gResponsePtr = 0;  };  BOOL LLFloaterTOS::postBuild() diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index d4080ab3f7..8e540a0cc8 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -2234,12 +2234,11 @@ void LLFolderView::doIdle()  		mDebugFilters = debug_filters;  		arrangeAll();  	} -  	BOOL filter_modified_and_active = mFilter->isModified() && mFilter->isNotDefault();  	mNeedsAutoSelect = filter_modified_and_active &&  						!(gFocusMgr.childHasKeyboardFocus(this) || gFocusMgr.getMouseCapture());  	mFilter->clearModified(); -			 +  	// filter to determine visibility before arranging  	filterFromRoot(); diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index 66c9c323cb..5d75375847 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -115,8 +115,8 @@ void LLPanelMarketplaceInbox::onFocusReceived()  	if (sidepanel_inventory)  	{  		sidepanel_inventory->clearSelections(true, false); -	} - +		} +	  	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());  } @@ -168,8 +168,8 @@ U32 LLPanelMarketplaceInbox::getFreshItemCount() const  				if (inbox_item_view && inbox_item_view->isFresh())  				{  					fresh_item_count++; -				} -			} +		} +	}  		}  	} diff --git a/indra/newview/llpolymesh.cpp b/indra/newview/llpolymesh.cpp index 70f3b5335e..c6b9aaae4b 100644 --- a/indra/newview/llpolymesh.cpp +++ b/indra/newview/llpolymesh.cpp @@ -240,8 +240,7 @@ BOOL LLPolyMeshSharedData::allocateVertexData( U32 numVertices )  			mBaseCoords[i].clear();  			mBaseNormals[i].clear();  			mBaseBinormals[i].clear(); -			mTexCoords[i].clear(); -            mWeights[i] = 0.f; +			mWeights[i] = 0.f;          }          mNumVertices = numVertices;          return TRUE; diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h index ffb11a3f7e..850171d169 100644 --- a/indra/newview/llpolymesh.h +++ b/indra/newview/llpolymesh.h @@ -406,6 +406,16 @@ public:  	LLPolySkeletalDistortion(LLVOAvatar *avatarp);  	~LLPolySkeletalDistortion(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLPolySkeletalDistortionInfo*	getInfo() const { return (LLPolySkeletalDistortionInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp index d25d1420ee..bd96608641 100644 --- a/indra/newview/llpolymorph.cpp +++ b/indra/newview/llpolymorph.cpp @@ -73,9 +73,9 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  {  	const S32 numVertices = mNumIndices; -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	mCoords = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mNormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mBinormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a)));  	mTexCoords = new LLVector2[numVertices];  	mVertexIndices = new U32[numVertices]; @@ -89,17 +89,12 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  	}  } -  //-----------------------------------------------------------------------------  // ~LLPolyMorphData()  //-----------------------------------------------------------------------------  LLPolyMorphData::~LLPolyMorphData()  { -	delete [] mVertexIndices; -	delete [] mCoords; -	delete [] mNormals; -	delete [] mBinormals; -	delete [] mTexCoords; +	freeData();  }  //----------------------------------------------------------------------------- @@ -119,11 +114,16 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)  	}  	//------------------------------------------------------------------------- +	// free any existing data +	//------------------------------------------------------------------------- +	freeData(); + +	//-------------------------------------------------------------------------  	// allocate vertices  	//------------------------------------------------------------------------- -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	mCoords = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mNormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mBinormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a)));  	mTexCoords = new LLVector2[numVertices];  	// Actually, we are allocating more space than we need for the skiplist  	mVertexIndices = new U32[numVertices]; @@ -207,6 +207,42 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)  }  //----------------------------------------------------------------------------- +// freeData() +//----------------------------------------------------------------------------- +void LLPolyMorphData::freeData() +{ +	if (mCoords != NULL) +	{ +		ll_aligned_free_16(mCoords); +		mCoords = NULL; +	} + +	if (mNormals != NULL) +	{ +		ll_aligned_free_16(mNormals); +		mNormals = NULL; +	} + +	if (mBinormals != NULL) +	{ +		ll_aligned_free_16(mBinormals); +		mBinormals = NULL; +	} + +	if (mTexCoords != NULL) +	{ +		delete [] mTexCoords; +		mTexCoords = NULL; +	} + +	if (mVertexIndices != NULL) +	{ +		delete [] mVertexIndices; +		mVertexIndices = NULL; +	} +} + +//-----------------------------------------------------------------------------  // LLPolyMorphTargetInfo()  //-----------------------------------------------------------------------------  LLPolyMorphTargetInfo::LLPolyMorphTargetInfo() diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h index 46e23b7792..678599d7e1 100644 --- a/indra/newview/llpolymorph.h +++ b/indra/newview/llpolymorph.h @@ -48,6 +48,16 @@ public:  	~LLPolyMorphData();  	LLPolyMorphData(const LLPolyMorphData &rhs); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	BOOL			loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);  	const std::string& getName() { return mName; } @@ -67,6 +77,9 @@ public:  	F32					mMaxDistortion;		// maximum single vertex distortion in a given morph  	LLVector4a			mAvgDistortion;		// average vertex distortion, to infer directionality of the morph  	LLPolyMeshSharedData*	mMesh; + +private: +	void freeData();  };  //----------------------------------------------------------------------------- diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 06c87e57fc..b815439834 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -1859,6 +1859,8 @@ BOOL LLSpatialPartition::remove(LLDrawable *drawablep, LLSpatialGroup *curp)  		drawablep->setSpatialGroup(NULL);  	} +	drawablep->setSpatialGroup(NULL); +  	assert_octree_valid(mOctree);  	return TRUE; @@ -4194,7 +4196,7 @@ public:  						{  							if (index < 255)  							{ -								if (facep->mDrawInfo->mTextureList.size()<= index) +								if (facep->mDrawInfo->mTextureList.size() <= index)  								{  									llerrs << "Face texture index out of bounds." << llendl;  								} diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index f050df2b39..e63037b4a8 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -350,6 +350,8 @@ public:  	element_list& getData() { return mOctreeNode->getData(); }  	element_iter getDataBegin() { return mOctreeNode->getDataBegin(); }  	element_iter getDataEnd() { return mOctreeNode->getDataEnd(); } +	bool hasElement(LLDrawable* drawablep) { return std::find(mOctreeNode->getDataBegin(), mOctreeNode->getDataEnd(), drawablep) != mOctreeNode->getDataEnd(); } +  	U32 getElementCount() const { return mOctreeNode->getElementCount(); }  	bool isEmpty() const { return mOctreeNode->isEmpty(); } diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 467115c928..ad09af6594 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -510,7 +510,13 @@ void LLTexLayerSetBuffer::doUpload()  			BOOL valid = FALSE;  			LLPointer<LLImageJ2C> integrity_test = new LLImageJ2C;  			S32 file_size = 0; -			U8* data = LLVFile::readFile(gVFS, asset_id, LLAssetType::AT_TEXTURE, &file_size); +			 +			//data buffer MUST be allocated using LLImageBase +			LLVFile file(gVFS, asset_id, LLAssetType::AT_TEXTURE); +			file_size = file.getSize(); +			U8* data = integrity_test->allocateData(file_size); +			file.read(data, file_size); +			  			if (data)  			{  				valid = integrity_test->validate(data, file_size); // integrity_test will delete 'data' diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index 2c0da60b48..fffe20208f 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -67,6 +67,16 @@ public:  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const; +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL		parseData(LLXmlTreeNode* node);  	/*virtual*/ void		apply( ESex avatar_sex ) {} @@ -143,6 +153,16 @@ public:  	LLTexLayerParamColor( LLVOAvatar* avatar );  	/* virtual */ ~LLTexLayerParamColor(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const;  	// LLVisualParam Virtual functions diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 7adf5212c2..adffb2c706 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -2977,7 +2977,9 @@ TFReqSendMetrics::doWork(LLTextureFetch * fetcher)          ~lcl_responder()              { +				LL_CHECK_MEMORY                  mFetcher->decrCurlPOSTCount(); +				LL_CHECK_MEMORY              }  		// virtual diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index c58e1adb8c..db5ad9479c 100755 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -263,8 +263,8 @@ public :  		EService mService;  	}; -	typedef boost::intrusive_ptr<TranslationReceiver> TranslationReceiverPtr; -	typedef boost::intrusive_ptr<KeyVerificationReceiver> KeyVerificationReceiverPtr; +	typedef LLPointer<TranslationReceiver> TranslationReceiverPtr; +	typedef LLPointer<KeyVerificationReceiver> KeyVerificationReceiverPtr;  	/**  	 * Translate given text. diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 01a54509ef..d11e7e32c7 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -5134,12 +5134,6 @@ class LLEditDelete : public view_listener_t  	}  }; -bool enable_object_return() -{ -	return (!LLSelectMgr::getInstance()->getSelection()->isEmpty() && -		(gAgent.isGodlike() || can_derez(DRD_RETURN_TO_OWNER))); -} -  void handle_spellcheck_replace_with_suggestion(const LLUICtrl* ctrl, const LLSD& param)  {  	const LLContextMenu* menu = dynamic_cast<const LLContextMenu*>(ctrl->getParent()); @@ -5212,6 +5206,12 @@ bool enable_spellcheck_add_to_ignore(const LLUICtrl* ctrl)  	return (spellcheck_handler) && (spellcheck_handler->canAddToIgnore());  } +bool enable_object_return() +{ +	return (!LLSelectMgr::getInstance()->getSelection()->isEmpty() && +		(gAgent.isGodlike() || can_derez(DRD_RETURN_TO_OWNER))); +} +  bool enable_object_delete()  {  	bool new_value =  diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 903f4437a7..b048332e59 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3340,9 +3340,9 @@ public :  	{  	} -	static boost::intrusive_ptr<ChatTranslationReceiver> build(const std::string &from_lang, const std::string &to_lang, const std::string &mesg, const LLChat &chat, const LLSD &toast_args) +	static ChatTranslationReceiver* build(const std::string &from_lang, const std::string &to_lang, const std::string &mesg, const LLChat &chat, const LLSD &toast_args)  	{ -		return boost::intrusive_ptr<ChatTranslationReceiver>(new ChatTranslationReceiver(from_lang, to_lang, mesg, chat, toast_args)); +		return new ChatTranslationReceiver(from_lang, to_lang, mesg, chat, toast_args);  	}  protected: diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 444bbb2776..ae1ba710a1 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -237,6 +237,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe  	mTimeDilation(1.f),  	mRotTime(0.f),  	mAngularVelocityRot(), +	mPreviousRotation(),  	mState(0),  	mMedia(NULL),  	mClickAction(0), @@ -784,7 +785,7 @@ BOOL LLViewerObject::setDrawableParent(LLDrawable* parentp)  	}  	LLDrawable* old_parent = mDrawable->mParent;  	mDrawable->mParent = parentp;  -	 +		  	if (parentp && mDrawable->isActive())  	{  		parentp->makeActive(); @@ -1410,9 +1411,10 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  #else  					val = (U16 *) &data[count];  #endif -					setAngularVelocity(	U16_to_F32(val[VX], -size, size), +					new_angv.set(U16_to_F32(val[VX], -size, size),  										U16_to_F32(val[VY], -size, size),  										U16_to_F32(val[VZ], -size, size)); +					setAngularVelocity(new_angv);  					break;  				case 16: @@ -1436,9 +1438,10 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  					new_rot.mQ[VZ] = U8_to_F32(data[11], -1.f, 1.f);  					new_rot.mQ[VW] = U8_to_F32(data[12], -1.f, 1.f); -					setAngularVelocity(	U8_to_F32(data[13], -size, size), +					new_angv.set(U8_to_F32(data[13], -size, size),  										U8_to_F32(data[14], -size, size),  										U8_to_F32(data[15], -size, size) ); +					setAngularVelocity(new_angv);  					break;  				} @@ -1510,9 +1513,10 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  				dp->unpackU16(val[VX], "AccX");  				dp->unpackU16(val[VY], "AccY");  				dp->unpackU16(val[VZ], "AccZ"); -				setAngularVelocity(	U16_to_F32(val[VX], -64.f, 64.f), +				new_angv.set(U16_to_F32(val[VX], -64.f, 64.f),  									U16_to_F32(val[VY], -64.f, 64.f),  									U16_to_F32(val[VZ], -64.f, 64.f)); +				setAngularVelocity(new_angv);  			}  			break;  			case OUT_FULL_COMPRESSED: @@ -1556,8 +1560,8 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  				if (value & 0x80)  				{ -					dp->unpackVector3(vec, "Omega"); -					setAngularVelocity(vec); +					dp->unpackVector3(new_angv, "Omega"); +					setAngularVelocity(new_angv);  				}  				if (value & 0x20) @@ -2038,12 +2042,16 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  		}  	} -	if (new_rot != getRotation() -		|| new_angv != old_angv) +	if ((new_rot != getRotation()) +		|| (new_angv != old_angv))  	{ -		if (new_angv != old_angv) +		if (new_rot != mPreviousRotation) +		{ +			resetRot(); +		} +		else if (new_angv != old_angv)  		{ -			if (flagUsePhysics()) +			if (flagUsePhysics() || new_angv.isExactlyZero())  			{  				resetRot();  			} @@ -2053,6 +2061,9 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  			}  		} +		// Remember the last rotation value +		mPreviousRotation = new_rot; +  		// Set the rotation of the object followed by adjusting for the accumulated angular velocity (llSetTargetOmega)  		setRotation(new_rot * mAngularVelocityRot);  		setChanged(ROTATED | SILHOUETTE); @@ -2159,28 +2170,28 @@ void LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)  	if (!mDead)  	{ -		// CRO - don't velocity interp linked objects! -		// Leviathan - but DO velocity interp joints -		if (!mStatic && sVelocityInterpolate && !isSelected()) -		{ -			// calculate dt from last update -			F32 dt_raw = (F32)(time - mLastInterpUpdateSecs); -			F32 dt = mTimeDilation * dt_raw; +	// CRO - don't velocity interp linked objects! +	// Leviathan - but DO velocity interp joints +	if (!mStatic && sVelocityInterpolate && !isSelected()) +	{ +		// calculate dt from last update +		F32 dt_raw = (F32)(time - mLastInterpUpdateSecs); +		F32 dt = mTimeDilation * dt_raw;  			applyAngularVelocity(dt); -			 +  			if (isAttachment()) -			{ -				mLastInterpUpdateSecs = time; +				{ +					mLastInterpUpdateSecs = time;  				return; -			} -			else -			{	// Move object based on it's velocity and rotation -				interpolateLinearMotion(time, dt); -			}  		} +		else +		{	// Move object based on it's velocity and rotation +			interpolateLinearMotion(time, dt); +		} +	} -		updateDrawable(FALSE); +	updateDrawable(FALSE);  	}  } @@ -5384,9 +5395,9 @@ void LLViewerObject::setPhysicsShapeType(U8 type)  	mPhysicsShapeUnknown = false;  	if (type != mPhysicsShapeType)  	{ -		mPhysicsShapeType = type; -		mCostStale = true; -	} +	mPhysicsShapeType = type; +	mCostStale = true; +}  }  void LLViewerObject::setPhysicsGravity(F32 gravity) diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 277bd1c430..1fb30db8f2 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -725,6 +725,7 @@ protected:  	F32				mTimeDilation;				// Time dilation sent with the object.  	F32				mRotTime;					// Amount (in seconds) that object has rotated according to angular velocity (llSetTargetOmega)  	LLQuaternion	mAngularVelocityRot;		// accumulated rotation from the angular velocity computations +	LLQuaternion	mPreviousRotation;  	U8				mState;	// legacy  	LLViewerObjectMedia* mMedia;	// NULL if no media associated diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index d825646da0..b607afbd9d 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -255,10 +255,9 @@ public:  		}  	} -    static boost::intrusive_ptr<BaseCapabilitiesComplete> build( U64 region_handle, S32 id ) +    static BaseCapabilitiesComplete* build( U64 region_handle, S32 id )      { -		return boost::intrusive_ptr<BaseCapabilitiesComplete>(  -				new BaseCapabilitiesComplete(region_handle, id) ); +		return new BaseCapabilitiesComplete(region_handle, id);      }  private: diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 920bac93a2..678898797f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -706,6 +706,8 @@ void LLPipeline::cleanup()  	mInitialized = FALSE;  	mDeferredVB = NULL; + +	mCubeVB = NULL;  }  //============================================================================ @@ -2328,7 +2330,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl  		bound_shader = true;  		gOcclusionCubeProgram.bind();  	} - +	  	if (sUseOcclusion > 1)  	{  		if (mCubeVB.isNull()) @@ -2506,7 +2508,7 @@ void LLPipeline::doOcclusion(LLCamera& camera)  			{  				gOcclusionCubeProgram.bind();  			} -			} +		}  		if (mCubeVB.isNull())  		{ //cube VB will be used for issuing occlusion queries @@ -2563,11 +2565,6 @@ void LLPipeline::updateGL()  			glu->mInQ = FALSE;  			LLGLUpdate::sGLQ.pop_front();  		} - -	{ //seed VBO Pools -		LLFastTimer t(FTM_SEED_VBO_POOLS); -		LLVertexBuffer::seedPools(); -	}  	}  	{ //seed VBO Pools @@ -3376,11 +3373,11 @@ void renderScriptedTouchBeacons(LLDrawable* drawablep)  				if (facep)  				{  					gPipeline.mHighlightFaces.push_back(facep); -				}  			}  		}  	}  } +}  void renderPhysicalBeacons(LLDrawable* drawablep)  { @@ -3405,11 +3402,11 @@ void renderPhysicalBeacons(LLDrawable* drawablep)  				if (facep)  				{  					gPipeline.mHighlightFaces.push_back(facep); -				}  			}  		}  	}  } +}  void renderMOAPBeacons(LLDrawable* drawablep)  { @@ -3445,11 +3442,11 @@ void renderMOAPBeacons(LLDrawable* drawablep)  				if (facep)  				{  					gPipeline.mHighlightFaces.push_back(facep); -				}  			}  		}  	}  } +}  void renderParticleBeacons(LLDrawable* drawablep)  { @@ -3474,11 +3471,11 @@ void renderParticleBeacons(LLDrawable* drawablep)  				if (facep)  				{  					gPipeline.mHighlightFaces.push_back(facep); -				}  			}  		}  	}  } +}  void renderSoundHighlights(LLDrawable* drawablep)  { @@ -3496,11 +3493,11 @@ void renderSoundHighlights(LLDrawable* drawablep)  				if (facep)  				{  					gPipeline.mHighlightFaces.push_back(facep); -				}  			}  		}  	}  } +}  void LLPipeline::postSort(LLCamera& camera)  { @@ -3713,7 +3710,7 @@ void LLPipeline::postSort(LLCamera& camera)  						if (facep)  						{  							gPipeline.mSelectedFaces.push_back(facep); -						} +					}  					}  					return true;  				} diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 6ee708ed62..845df1f050 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -21,6 +21,7 @@  			<menu_item_call label="Beschäftigt" name="Set Busy"/>  		</menu>  		<menu_item_call label="L$ kaufen..." name="Buy and Sell L$"/> +		<menu_item_call label="Händler-Outbox..." name="MerchantOutbox"/>  		<menu_item_call label="Kontoübersicht..." name="Manage My Account">  			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/>  		</menu_item_call> 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 9bc5c7d5a4..4a457fb929 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml @@ -6,7 +6,7 @@      height="395"      width="1075"      min_height="395" -    min_width="1075" +    min_width="990"      layout="topleft"      name="floater_pathfinding_linksets"      help_topic="floater_pathfinding_linksets" @@ -524,7 +524,7 @@          tool_tip="Walkability for characters of type D.  Example character type is other."          width="45" />      <button -        follows="right|bottom" +        follows="left|bottom"          height="21"          label="Apply changes"          layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 2e29c61cb2..6021ba0a5a 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -134,16 +134,6 @@       top_delta="-25"       name="Pipette"       width="28" /> -   <check_box -     follows="left|bottom" -     height="20" -     initial_value="true" -     label="Live Preview" -     layout="topleft" -     left="4" -     name="apply_immediate_check" -     top="262" -     width="120" />     <text       follows="left|bottom"       height="20" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index f0a126724b..8e6de6ed4f 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7576,18 +7576,6 @@ We cannot display a preview of this texture because it is no-copy and/or no-tran    <notification     icon="alertmodal.tga" -   name="LivePreviewUnavailable" -   type="alert"> -    -We cannot display a preview of this texture because it is no-copy and/or no-transfer. -  <usetemplate -    ignoretext="Warn me that Live Preview mode is not available for no-copy and/or no-transfer textures" -    name="okignore" -    yestext="OK"/> -  </notification> - -  <notification -   icon="alertmodal.tga"     name="ConfirmLeaveCall"     type="alert">  Are you sure you want to leave this call? diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index e9a787cef0..e69a17e037 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -1,36 +1,36 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel -    height="570" -    layout="topleft" -    name="object properties" -    help_topic="object_properties" -    title="Object Profile" -    width="333"> -  <panel.string -      name="text deed continued"> -    Deed -  </panel.string> -  <panel.string -      name="text deed"> -    Deed -  </panel.string> -  <panel.string -      name="text modify info 1"> -    You can modify this object -  </panel.string> -  <panel.string -      name="text modify info 2"> -    You can modify these objects -  </panel.string> -  <panel.string -      name="text modify info 3"> -    You can't modify this object -  </panel.string> -  <panel.string -      name="text modify info 4"> -    You can't modify these objects -  </panel.string> -  <panel.string +	 height="570" +	 layout="topleft" +	 name="object properties" +	 help_topic="object_properties" +	 title="Object Profile" +	 width="333"> +	 <panel.string +	  name="text deed continued"> +		Deed +	 </panel.string> +	<panel.string +	 name="text deed"> +		Deed +	</panel.string> +            <panel.string +             name="text modify info 1"> +                You can modify this object +            </panel.string> +            <panel.string +             name="text modify info 2"> +                You can modify these objects +            </panel.string> +            <panel.string +             name="text modify info 3"> +                You can't modify this object +            </panel.string> +            <panel.string +             name="text modify info 4"> +                You can't modify these objects +            </panel.string> +            <panel.string        name="text modify info 5">      You can't modify this object across a region boundary    </panel.string> @@ -39,399 +39,399 @@      You can't modify these objects across a region boundary    </panel.string>    <panel.string -      name="text modify warning"> -    This object has linked parts -  </panel.string> -  <panel.string -      name="Cost Default"> -    Price: L$ -  </panel.string> -  <panel.string -      name="Cost Total"> -    Total Price: L$ -  </panel.string> -  <panel.string -      name="Cost Per Unit"> -    Price Per: L$ -  </panel.string> -  <panel.string -      name="Cost Mixed"> -    Mixed Price -  </panel.string> -  <panel.string -      name="Sale Mixed"> -    Mixed Sale -  </panel.string> -  <button -      follows="top|left" -      height="24" -      image_hover_unselected="BackButton_Over" -      image_pressed="BackButton_Press" -      image_unselected="BackButton_Off" -      layout="topleft" -      left="8" -      name="back_btn" -      tab_stop="false" -      top="0" -      width="30" -      use_draw_context_alpha="false" /> -  <text -      follows="top|left|right" -      font="SansSerifHuge" -      height="26" -      layout="topleft" -      left_pad="10" -      name="title" -      text_color="LtGray" -      top="0" -      use_ellipses="true" -      value="Object Profile" -      width="290" /> -  <text -      follows="top|left" -      height="13" -      layout="topleft" -      left="45" -      name="where" -      text_color="LtGray_50" -      value="(Inworld)" -      width="150" /> -  <panel -      follows="all" -      height="490" -      label="" -      layout="topleft" -      left="10" -      help_topic="" -      name="properties_panel" -      top="45" -      width="313" -      background_visible="true" -      bg_alpha_color="DkGray2"> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="10" -        layout="topleft" -        left="5" -        name="Name:" -        top="10" -        width="78"> -      Name: -    </text> -    <line_editor -        border_style="line" -        border_thickness="1" -        follows="left|top|right" -        height="20" -        layout="topleft" -        left_delta="78" -        max_length_bytes="63" -        name="Object Name" -        top_delta="0" -        width="225" /> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="10" -        layout="topleft" -        left="5" -        name="Description:" -        top_pad="10" -        width="78"> -      Description: -    </text> -    <line_editor -        border_style="line" -        border_thickness="1" -        follows="left|top|right" -        height="23" -        layout="topleft" -        name="Object Description" -        select_on_focus="true" -        left_delta="78" -        max_length_bytes="127" -        top_delta="-5" -        width="225"/> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="23" -        layout="topleft" -        left="5" -        name="CreatorNameLabel" -        top_pad="12" -        width="78"> -      Creator: -    </text> -    <text -        type="string" -        follows="left|right|top" -        font="SansSerifSmall" -        height="15" -        layout="topleft" -        left_pad="0" -        name="Creator Name" -        top_delta="0" -        translate="false" -        use_ellipses="true"  -        width="225"> -      TestString PleaseIgnore -    </text> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="23" -        layout="topleft" -        left="5" -        name="Owner:" -        top_pad="15" -        width="78"> -      Owner: -    </text> -    <text -        type="string" -        follows="left|right|top" -        font="SansSerifSmall" -        height="15" -        layout="topleft" -        left_pad="0" -        name="Owner Name" -        top_delta="0" -        translate="false" -        use_ellipses="true"  -        width="225"> -      TestString PleaseIgnore -    </text> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="23" -        layout="topleft" -        left="5" -        name="Group_label" -        top_pad="15" -        width="78"> -      Group: -    </text> +             name="text modify warning"> +                This object has linked parts +            </panel.string> +            <panel.string +             name="Cost Default"> +                Price: L$ +            </panel.string> +            <panel.string +             name="Cost Total"> +                Total Price: L$ +            </panel.string> +            <panel.string +             name="Cost Per Unit"> +                Price Per: L$ +            </panel.string> +            <panel.string +             name="Cost Mixed"> +                Mixed Price +            </panel.string> +            <panel.string +             name="Sale Mixed"> +                Mixed Sale +            </panel.string>      <button -        follows="top|left" -        height="10" -        image_disabled="Activate_Checkmark" -        image_selected="Activate_Checkmark" -        image_unselected="Activate_Checkmark" -        image_color="White_50" -        layout="topleft" -        left_pad="0" -        top_delta="0" -        name="button set group" -        tab_stop="false" -        tool_tip="Choose a group to share this object's permissions" -        width="10" /> -    <name_box -        follows="left|top" -        height="18" -        initial_value="Loading..." -        layout="topleft" -        left_pad="5" -        top_delta="-1" -        name="Group Name Proxy" -        width="150" /> -    <button -        follows="top|left" -        height="23" -        label="Deed" -        label_selected="Deed" -        layout="topleft" -        name="button deed" -        top_pad="0" -        left="81" -        tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer." -        width="100" /> -    <text -        type="string" -        length="1" -        follows="left|top" -        height="9" -        layout="topleft" -        top_pad="5" -        left="5" -        name="label click action" -        width="280"> -      Click to: -    </text> -    <combo_box -        follows="left|top" -        height="23" -        layout="topleft" -        name="clickaction" -        width="168" -        left="81"> -      <combo_box.item -          label="Touch  (default)" -          name="Touch/grab(default)" +     follows="top|left" +     height="24" +     image_hover_unselected="BackButton_Over" +     image_pressed="BackButton_Press" +     image_unselected="BackButton_Off" +     layout="topleft" +     left="8" +     name="back_btn" +     tab_stop="false" +     top="0" +     width="30" +     use_draw_context_alpha="false" /> +        <text +     follows="top|left|right" +     font="SansSerifHuge" +     height="26" +     layout="topleft" +     left_pad="10" +     name="title" +     text_color="LtGray" +     top="0" +     use_ellipses="true" +     value="Object Profile" +     width="290" /> +	    <text +     follows="top|left" +     height="13" +     layout="topleft" +     left="45" +     name="where" +     text_color="LtGray_50" +     value="(Inworld)" +     width="150" /> +	<panel +         follows="all" +         height="490" +         label="" +         layout="topleft" +         left="10" +         help_topic="" +         name="properties_panel" +         top="45" +         width="313" +   background_visible="true" +   bg_alpha_color="DkGray2"> +	    	    <text +		     type="string" +		     length="1" +		     follows="left|top" +		     height="10" +		     layout="topleft" +		     left="5" +             name="Name:" +		     top="10" +		     width="78"> +	        Name: +	    </text> +	    <line_editor +		     border_style="line" +		     border_thickness="1" +	    	 follows="left|top|right" +		     height="20" +		     layout="topleft" +	    	 left_delta="78" +		     max_length_bytes="63" +             name="Object Name" +	    	 top_delta="0" +		     width="225" /> +	    <text +	    type="string" +	    length="1" +	    follows="left|top" +	    height="10" +	    layout="topleft" +	    left="5" +             name="Description:" +	    top_pad="10" +	    width="78"> +	        Description: +	    </text> +            <line_editor +	     border_style="line" +    	     border_thickness="1" +             follows="left|top|right" +             height="23" +             layout="topleft" +             name="Object Description" +             select_on_focus="true" +    		 left_delta="78" +		     max_length_bytes="127" +	    	 top_delta="-5" +	    	 width="225"/> +	    <text +		     type="string" +		     length="1" +		     follows="left|top" +		     height="23" +		     layout="topleft" +    		 left="5" +		 name="CreatorNameLabel" +		  top_pad="12" +		     width="78"> +	        Creator: +    	</text> +	    <text +		     type="string" +     follows="left|right|top" +     font="SansSerifSmall" +     height="15" +     layout="topleft" +     left_pad="0" +             name="Creator Name" +		     top_delta="0" +		     translate="false" +         use_ellipses="true"  +		     width="225"> +	        TestString PleaseIgnore +	     </text> +	    <text +			 type="string" +			 length="1" +			 follows="left|top" +			 height="23" +			layout="topleft" +			left="5" +			name="Owner:" +			top_pad="15" +			 width="78"> +			    Owner: +	     </text> +	     <text +			    type="string" +			    follows="left|right|top" +			    font="SansSerifSmall" +			    height="15" +			    layout="topleft" +			    left_pad="0" +			    name="Owner Name" +			    top_delta="0" +			    translate="false" +          use_ellipses="true"  +			    width="225"> +			    TestString PleaseIgnore +	     </text> +	    	    <text +			 type="string" +			 length="1" +			 follows="left|top" +			 height="23" +			 layout="topleft" +			 left="5" +			name="Group_label" +			top_pad="15" +			width="78"> +			    Group: +	     </text> +      		<button +			 follows="top|left" +			 height="10" +			 image_disabled="Activate_Checkmark" +			 image_selected="Activate_Checkmark" +			 image_unselected="Activate_Checkmark" +			 image_color="White_50" +			 layout="topleft" +			 left_pad="0" +			 top_delta="0" +			 name="button set group" +			 tab_stop="false" +			 tool_tip="Choose a group to share this object's permissions" +			 width="10" /> +            <name_box +             follows="left|top" +             height="18" +             initial_value="Loading..." +             layout="topleft" +             left_pad="5" +             top_delta="-1" +             name="Group Name Proxy" +             width="150" /> +            <button +             follows="top|left" +             height="23" +             label="Deed" +             label_selected="Deed" +             layout="topleft" +             name="button deed" +             top_pad="0" +             left="81" +             tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer." +             width="100" /> +            <text +             type="string" +             length="1" +             follows="left|top" +             height="9" +             layout="topleft" +             top_pad="5" +             left="5" +             name="label click action" +             width="280"> +                Click to: +            </text> +            <combo_box +             follows="left|top" +             height="23" +             layout="topleft" +             name="clickaction" +             width="168" +             left="81"> +                <combo_box.item +                 label="Touch  (default)" +                 name="Touch/grab(default)"            value="Touch" /> -      <combo_box.item -          label="Sit on object" -          name="Sitonobject" +                <combo_box.item +                 label="Sit on object" +                 name="Sitonobject"            value="Sit" /> -      <combo_box.item -          label="Buy object" -          name="Buyobject" +                <combo_box.item +                 label="Buy object" +                 name="Buyobject"            value="Buy" /> -      <combo_box.item -          label="Pay object" -          name="Payobject" +                <combo_box.item +                 label="Pay object" +                 name="Payobject"            value="Pay" /> -      <combo_box.item -          label="Open" -          name="Open" -          value="Open" /> -    </combo_box> -    <panel -        border="false" -        follows="left|top" -        layout="topleft" -        mouse_opaque="false" -        background_visible="true" -        bg_alpha_color="DkGray" -        name="perms_inv" -        left="0" -        top_pad="15" -        height="135" -        width="313"> -      <text -          type="string" -          length="1" +                <combo_box.item +                 label="Open" +                 name="Open" +                 value="Open" /> +            </combo_box> +	 <panel +         border="false" +         follows="left|top" +         layout="topleft" +         mouse_opaque="false" +         background_visible="true" +         bg_alpha_color="DkGray" +         name="perms_inv" +         left="0" +         top_pad="15" +         height="135" +         width="313"> +	  <text +             type="string" +             length="1"            left="5" -          top_pad="15" -          text_color="EmphasisColor" -          height="15" -          follows="left|top|right" -          layout="topleft" -          name="perm_modify" -          width="310"> -        You can modify this object -      </text> -      <text -          type="string" -          length="1" -          follows="left|top" -          height="16" -          layout="topleft" -          left="10" -          name="Anyone can:" -          top_pad="8" -          width="100"> -        Anyone: -      </text> -      <check_box -          height="18" -          label="Copy" -          layout="topleft" -          left_pad="0" -          name="checkbox allow everyone copy" -          top_delta="-2" -          width="90" /> -      <check_box -          height="18" -          label="Move" -          layout="topleft" -          name="checkbox allow everyone move" -          left_pad="0" -          width="150" /> -      <text -          type="string" -          length="1" -          follows="left|top" -          height="16" -          layout="topleft" -          left="10" -          name="GroupLabel" -          top_pad="8" -          width="100"> -        Group: -      </text> -      <check_box -          height="18" -          label="Share" -          layout="topleft" -          left_pad="90" -          top_delta="-2" -          name="checkbox share with group" -          tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." -          width="150" /> -      <text -          type="string" -          length="1" -          follows="left|top" -          height="16" -          layout="topleft" -          left="10" -          name="NextOwnerLabel" -          top_pad="8" -          width="200" -          word_wrap="true"> -        Next owner: -      </text> -      <check_box -          height="18" -          label="Modify" -          layout="topleft" -          left="20" -          top_pad="0" -          name="checkbox next owner can modify" -          width="90" /> -      <check_box -          height="18" -          label="Copy" -          layout="topleft" -          left_pad="0" -          name="checkbox next owner can copy" -          width="90" /> -      <check_box -          height="18" -          label="Transfer" -          layout="topleft" -          left_pad="0" -          name="checkbox next owner can transfer" -          tool_tip="Next owner can give away or resell this object" -          width="106" /> -    </panel> -    <check_box -        height="23" -        label="For Sale" -        layout="topleft" -        left="20" -        name="checkbox for sale" -        top_pad="10" -        width="100" /> -    <combo_box -        height="23" -        left_pad="0" -        layout="topleft" -        follows="left|top" -        name="sale type" -        width="170"> -      <combo_box.item -          name="Copy" -          label="Copy" -          value="2" /> -      <combo_box.item -          name="Contents" -          label="Contents" -          value="3" /> -      <combo_box.item -          name="Original" -          label="Original" -          value="1" /> -    </combo_box> -    <spinner +             top_pad="15" +             text_color="EmphasisColor" +	     height="15" +             follows="left|top|right" +             layout="topleft" +             name="perm_modify" +             width="310"> +                You can modify this object +            </text> +	  	    <text +			 type="string" +			 length="1" +			 follows="left|top" +			 height="16" +			 layout="topleft" +			 left="10" +               name="Anyone can:" +			 top_pad="8" +			 width="100"> +			Anyone: +	    </text> +	    <check_box +			 height="18" +			 label="Copy" +			 layout="topleft" +			 left_pad="0" +             name="checkbox allow everyone copy" +			 top_delta="-2" +			 width="90" /> +	    <check_box +             height="18" +             label="Move" +             layout="topleft" +             name="checkbox allow everyone move" +			 left_pad="0" +             width="150" /> +	       	<text +			 type="string" +			 length="1" +			 follows="left|top" +			 height="16" +			 layout="topleft" +			 left="10" +			 name="GroupLabel" +			 top_pad="8" +			 width="100"> +			Group: +    	</text> +			    <check_box +			 height="18" +			 label="Share" +			 layout="topleft" +			 left_pad="90" +			 top_delta="-2" +             name="checkbox share with group" +			 tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions." +			 width="150" /> +	    	    <text +			 type="string" +			 length="1" +			 follows="left|top" +			 height="16" +			 layout="topleft" +			 left="10" +			 name="NextOwnerLabel" +			 top_pad="8" +			 width="200" +			 word_wrap="true"> +			Next owner: +	    </text> +	    <check_box +			 height="18" +			 label="Modify" +			 layout="topleft" +			 left="20" +			 top_pad="0" +             name="checkbox next owner can modify" +			 width="90" /> +	    <check_box +			 height="18" +			 label="Copy" +			 layout="topleft" +			 left_pad="0" +             name="checkbox next owner can copy" +			 width="90" /> +	    <check_box +			 height="18" +			 label="Transfer" +			 layout="topleft" +			 left_pad="0" +             name="checkbox next owner can transfer" +			 tool_tip="Next owner can give away or resell this object" +			 width="106" /> +	    </panel> +	    <check_box +			 height="23" +			 label="For Sale" +			 layout="topleft" +			 left="20" +             name="checkbox for sale" +			 top_pad="10" +			 width="100" /> +		<combo_box +			 height="23" +			 left_pad="0" +			 layout="topleft" +			 follows="left|top" +            name="sale type" +			 width="170"> +        <combo_box.item +           name="Copy" +           label="Copy" +           value="2" /> +        <combo_box.item +           name="Contents" +           label="Contents" +           value="3" /> +        <combo_box.item +           name="Original" +           label="Original" +           value="1" /> +	    </combo_box> +		<spinner          follows="left|top"          decimal_digits="0"          increment="1" @@ -445,17 +445,17 @@          min_val="1"          height="20"          max_val="999999999" /> -    <check_box -        height="20" -        width="110" -        top_pad="6" -        label="Show in search" -        layout="topleft" -        left="120" -        name="search_check" -        tool_tip="Let people see this object in search results" /> -    <text -        type="string" +      <check_box +	   height="20" +	   width="110" +	   top_pad="6" +	   label="Show in search" +       layout="topleft" +	   left="120" +       name="search_check" +       tool_tip="Let people see this object in search results" /> +            <text +             type="string"          follows="left|top"          name="pathfinding_attributes_label"          top_pad="6" @@ -466,7 +466,7 @@      <text          type="string"          follows="left|top" -        text_color="EmphasisColor" +             text_color="EmphasisColor"          name="pathfinding_attributes_value"          width="130"          word_wrap="false" @@ -475,120 +475,120 @@      <text          type="string"          text_color="EmphasisColor" -        length="1" +             length="1"          top_pad="10" -        follows="left|top" -        layout="topleft" -        left="10" -        name="B:" -        height="10" -        width="50"> -      B: -    </text> -    <text -        type="string" -        text_color="White" -        length="1" -        follows="left|top" -        layout="topleft" -        left_pad="0" -        name="O:" -        height="10" -        width="50"> -      O: -    </text> -    <text -        type="string" -        text_color="EmphasisColor" -        length="1" -        follows="left|top" -        layout="topleft" -        left_pad="0" -        name="G:" -        height="10" -        width="50"> -      G: -    </text> -    <text -        type="string" -        text_color="White" -        length="1" -        follows="left|top" -        left_pad="0" -        layout="topleft" -        name="E:" -        height="10" -        width="50"> -      E: -    </text> -    <text -        type="string" -        text_color="EmphasisColor" -        length="1" -        follows="left|top" -        layout="topleft" -        left_pad="0" -        name="N:" -        height="10" -        width="50"> -      N: -    </text> -    <text -        type="string" -        text_color="White" -        length="1" -        follows="left|top" -        layout="topleft" -        left_pad="0" -        name="F:" -        height="10" -        width="50"> -      F: -    </text> -  </panel> -  <panel -      height="25" -      layout="bottomright" -      name="button_panel" -      left="5" -      bottom="5" -      width="313"> -    <button -        follows="bottom|left" -        height="23" -        label="Open" -        layout="topleft" -        left="5" -        name="open_btn" -        top="0" -        width="73" /> -    <button -        follows="bottom|left" -        height="23" -        label="Pay" -        layout="topleft" -        left_pad="5" -        name="pay_btn" -        top="0" -        width="73" /> -    <button -        follows="bottom|left" -        height="23" -        label="Buy" -        layout="topleft" -        left_pad="5" -        name="buy_btn" -        top="0" -        width="73" /> -    <button -        follows="bottom|left" -        height="23" -        label="Details" -        layout="topleft" -        left_pad="5" -        name="details_btn" -        top="0" -        width="74" /> +             follows="left|top" +             layout="topleft" +             left="10" +             name="B:" +             height="10" +             width="50"> +                B: +            </text> +            <text +             type="string" +             text_color="White" +             length="1" +             follows="left|top" +             layout="topleft" +             left_pad="0" +             name="O:" +             height="10" +             width="50"> +                O: +            </text> +            <text +             type="string" +             text_color="EmphasisColor" +             length="1" +             follows="left|top" +             layout="topleft" +             left_pad="0" +             name="G:" +             height="10" +             width="50"> +                G: +            </text> +            <text +             type="string" +             text_color="White" +             length="1" +             follows="left|top" +             left_pad="0" +             layout="topleft" +             name="E:" +             height="10" +             width="50"> +                E: +            </text> +            <text +             type="string" +             text_color="EmphasisColor" +             length="1" +             follows="left|top" +             layout="topleft" +             left_pad="0" +             name="N:" +             height="10" +             width="50"> +                N: +            </text> +            <text +             type="string" +             text_color="White" +             length="1" +             follows="left|top" +             layout="topleft" +             left_pad="0" +             name="F:" +             height="10" +             width="50"> +                F: +            </text> +		</panel> +    <panel +		 height="25" +		 layout="bottomright" +		 name="button_panel" +		 left="5" +		 bottom="5" +		 width="313"> +        <button +		     follows="bottom|left" +		     height="23" +		     label="Open" +		     layout="topleft" +		     left="5" +		     name="open_btn" +		     top="0" +		     width="73" /> +	    <button +		     follows="bottom|left" +		     height="23" +		     label="Pay" +		     layout="topleft" +		     left_pad="5" +		     name="pay_btn" +		     top="0" +		     width="73" /> +	    <button +		     follows="bottom|left" +		     height="23" +		     label="Buy" +		     layout="topleft" +		     left_pad="5" +		     name="buy_btn" +		     top="0" +		     width="73" /> +        <button +		     follows="bottom|left" +		     height="23" +		     label="Details" +		     layout="topleft" +		     left_pad="5" +		     name="details_btn" +		     top="0" +		     width="74" /> -  </panel> +	</panel>  </panel> diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp index 10e37fae97..fd9527d631 100644 --- a/indra/newview/tests/lltranslate_test.cpp +++ b/indra/newview/tests/lltranslate_test.cpp @@ -299,11 +299,6 @@ LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLCo  std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }  LLControlGroup::~LLControlGroup() {} -namespace boost { -	void intrusive_ptr_add_ref(LLCurl::Responder*) {} -	void intrusive_ptr_release(LLCurl::Responder*) {} -} -  LLCurl::Responder::Responder() {}  void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}  void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {} @@ -314,7 +309,7 @@ void LLCurl::Responder::result(LLSD const&) {}  LLCurl::Responder::~Responder() {}  void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {} -void LLHTTPClient::get(const std::string&, boost::intrusive_ptr<LLCurl::Responder>, const LLSD&, const F32) {} +void LLHTTPClient::get(const std::string&, LLPointer<LLCurl::Responder>, const LLSD&, const F32) {}  LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer)  :	std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {} diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3c3aba23f8..99dcc90f8f 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -537,6 +537,7 @@ class WindowsManifest(ViewerManifest):                  result += 'File ' + pkg_file + '\n'              else:                  result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n' +          # at the end of a delete, just rmdir all the directories          if not install:              deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list] @@ -1086,7 +1087,6 @@ class Linux_i686Manifest(LinuxManifest):              self.path("libalut.so")              self.path("libopenal.so", "libopenal.so.1")              self.path("libopenal.so", "libvivoxoal.so.1") # vivox's sdk expects this soname -              # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs              # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1              # and libfontconfig.so. Before we added support for library-file @@ -1105,7 +1105,13 @@ class Linux_i686Manifest(LinuxManifest):              # previous call did, without having to explicitly state the              # version number.              self.path("libfontconfig.so.*.*") -            self.path("libtcmalloc.so*") #formerly called google perf tools +            try: +                self.path("libtcmalloc.so*") #formerly called google perf tools +                pass +            except: +                print "tcmalloc files not found, skipping" +                pass +              try:                      self.path("libfmod-3.75.so")                      pass diff --git a/indra/viewer_components/updater/llupdatechecker.cpp b/indra/viewer_components/updater/llupdatechecker.cpp index 4da774a5f6..5edbbf9914 100644 --- a/indra/viewer_components/updater/llupdatechecker.cpp +++ b/indra/viewer_components/updater/llupdatechecker.cpp @@ -51,37 +51,6 @@ public:  }; -class LLUpdateChecker::Implementation: -	public LLHTTPClient::Responder -{ -public: -	Implementation(Client & client); -	~Implementation(); -	void checkVersion(std::string const & protocolVersion, std::string const & hostUrl,  -			   std::string const & servicePath, std::string channel, std::string version); -	 -	// Responder: -	virtual void completed(U32 status, -						   const std::string & reason, -						   const LLSD& content); -	virtual void error(U32 status, const std::string & reason); -	 -private:	 -	static const char * sProtocolVersion; -	 -	Client & mClient; -	LLHTTPClient mHttpClient; -	bool mInProgress; -	std::string mVersion; -	 -	std::string buildUrl(std::string const & protocolVersion, std::string const & hostUrl,  -						 std::string const & servicePath, std::string channel, std::string version); - -	LOG_CLASS(LLUpdateChecker::Implementation); -}; - - -  // LLUpdateChecker  //----------------------------------------------------------------------------- @@ -134,13 +103,7 @@ void LLUpdateChecker::Implementation::checkVersion(std::string const & protocolV  	std::string checkUrl = buildUrl(protocolVersion, hostUrl, servicePath, channel, version);  	LL_INFOS("UpdateCheck") << "checking for updates at " << checkUrl << llendl; -	// The HTTP client will wrap a raw pointer in a boost::intrusive_ptr causing the -	// passed object to be silently and automatically deleted.  We pass a self- -	// referential intrusive pointer to which we add a reference to keep the -	// client from deleting the update checker implementation instance. -	LLHTTPClient::ResponderPtr temporaryPtr(this); -	boost::intrusive_ptr_add_ref(temporaryPtr.get()); -	mHttpClient.get(checkUrl, temporaryPtr); +	mHttpClient.get(checkUrl, this);  }  void LLUpdateChecker::Implementation::completed(U32 status, diff --git a/indra/viewer_components/updater/llupdatechecker.h b/indra/viewer_components/updater/llupdatechecker.h index d882169068..23f62a7c5e 100644 --- a/indra/viewer_components/updater/llupdatechecker.h +++ b/indra/viewer_components/updater/llupdatechecker.h @@ -29,6 +29,7 @@  #include <boost/shared_ptr.hpp> +#include "llhttpclient.h"  //  // Implements asynchronous checking for updates. @@ -36,7 +37,36 @@  class LLUpdateChecker {  public:  	class Client; -	class Implementation; +	class Implementation: + +	public LLHTTPClient::Responder +	{ +	public: +		Implementation(Client & client); +		~Implementation(); +		void checkVersion(std::string const & protocolVersion, std::string const & hostUrl,  +				   std::string const & servicePath, std::string channel, std::string version); +	 +		// Responder: +		virtual void completed(U32 status, +							   const std::string & reason, +							   const LLSD& content); +		virtual void error(U32 status, const std::string & reason); +	 +	private:	 +		static const char * sProtocolVersion; +	 +		Client & mClient; +		LLHTTPClient mHttpClient; +		bool mInProgress; +		std::string mVersion; +	 +		std::string buildUrl(std::string const & protocolVersion, std::string const & hostUrl,  +							 std::string const & servicePath, std::string channel, std::string version); + +		LOG_CLASS(LLUpdateChecker::Implementation); +	}; +  	// An exception that may be raised on check errors.  	class CheckError; @@ -48,7 +78,7 @@ public:  			   std::string const & servicePath, std::string channel, std::string version);  private: -	boost::shared_ptr<Implementation> mImplementation; +	LLPointer<Implementation> mImplementation;  }; | 
