diff options
28 files changed, 462 insertions, 378 deletions
| @@ -72,35 +72,35 @@ b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release  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 @@ -119,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 @@ -170,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 @@ -193,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 @@ -248,68 +248,57 @@ 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  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 -092a9effbedd1a0276fa5ced520992ce00f96fbf CHUI-PV-0  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 @@ -320,7 +309,6 @@ ceed0b65a69f1eac20d523e0203320a32f9a3f3c DRTVWR-215  97977c67245f52db20eb15f1918cc0f24778cabc 3.4.0-release  5adb2b8f96c3cac88ad7c7d996d707f1b29df336 3.4.1-beta1  b3f74858a1c8720c82d0978f3877a3fc8ba459ec 3.4.1-beta1a -b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219  2b779f233ee6f38c89cb921650c773a96e63da92 DRTVWR-220  0b9d95f4bfb6867cbf56eaec51633b0da2f1262d DRTVWR-221  e6e553761829dc0270eaaa712b7cb0622535b076 3.4.1-beta3 @@ -345,31 +333,36 @@ baf97f06ae17223614c5e31aa42e71d87cff07fe DRTVWR-236  b2f21e3442542283a80e7eaebae9f833e5a927b6 DRTVWR-237  3f9be82de642d468c5fc272cb9d96b46b5498402 3.4.1-beta12  e59ffd3fe0838ae6b09b242a6e9df71761b88f41 3.4.1-release +81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186 +cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181 +c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188 +4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191 +78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194 +248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203 +de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202 +34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag +6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205 +7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206 +b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219  32896d5e920ca9a29256ff3b747c2e99752aa5ae DRTVWR-217  704bbae7b182a1f2811a47a054e680522966f54a 3.4.2-beta1 -d799593b53ed733862e9a13871e318e886469377 DRTVWR-208 -e497dcde7a3653e384eb223a8a460030e89c294c DRTVWR-223  288539fc0408ed4b69a99665de33bbbc2c3c08fe DRTVWR-216  e664473c16df1d82ffaff382e7b3e023da202d52 3.4.2-beta2 -93ab02d83f51e30a3cabad98aff89601befd9413 DRTVWR-240  0891d7a773a31397dcad48be3fa66531d567a821 DRTVWR-242  710785535362b3cb801b6a3dc4703be3373bd0cd 3.4.2-beta3 -2aa72e3372a83dece4df9cf72fb1e7c34f90b5e3 DRTVWR-209 -f7bedce18ad52283e6072814db23318907261487 DRTVWR-238 -7b64c96fbcadf360bd2feaae19d330166b70877c DRTVWR-210  e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243  73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4  16310aabccf315870f7cc9bf966926c0ad6954fa 3.4.2-release +d799593b53ed733862e9a13871e318e886469377 DRTVWR-208 +e497dcde7a3653e384eb223a8a460030e89c294c DRTVWR-223 +93ab02d83f51e30a3cabad98aff89601befd9413 DRTVWR-240 +2aa72e3372a83dece4df9cf72fb1e7c34f90b5e3 DRTVWR-209 +f7bedce18ad52283e6072814db23318907261487 DRTVWR-238 +7b64c96fbcadf360bd2feaae19d330166b70877c DRTVWR-210  5e4e4128b256525bafc07a62e35ae8527aaa9c9d DRTVWR-241  f1d3b3fcab28ed9ea532bf50db0ba96f5c8cc8e9 DRTVWR-232  4918b150e75df6b516fb6c2616d32043fa6b4cac DRTVWR-245  94ab2b49458ab372a95d2d6949fdf574f413068d 3.4.3-beta1 -4c3460cb1fb7c6da9965e09c734d282a8e9c81f0 DRTVWR-229 -f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246 -39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247 -7c7d57d393e8ae7b61623279de06eb4a62ccae6a DRTVWR-249 -f72b50ef168c159d6e79e97aa2bcafaf8577ab99 DRTVWR-230 -b418be80903520c492e1173f3afbc4021cad5d07 DRTVWR-255  965b9a35e260c0f53be1a25f0db7abc8a67eaf47 DRTVWR-252  bb10adc4f76cf0067fca7075146f00cdc0740e9d DRTVWR-251  ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253 @@ -378,25 +371,31 @@ ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253  44e764a6ac9e672a4f3bce821a4b6a218590c374 DRTVWR-258  c23d734065ed593b2413385aecd8366d8e0ee96b DRTVWR-257  452ce96d4046dc05a3ecaecc203e2cc8ddd72e76 DRTVWR-259 -9aa1aa9f1fe13c194695a0b8f0af298296241dc2 DRTVWR-260  daca610d840625b5bebb966a57cb49581852c417 DRTVWR-265  9afbdc4e24cc04feacfb2b7a10b78a64f780901a DRTVWR-266  73280db02501f5ad041fc18b1eba68e73a81996c DRTVWR-267  870e2d79e0063fda87187f17bbc2747766733194 3.4.3-beta3  0a2ca6546b499239afeb66d17b2fadbcdbe36ab1 3.4.3-release +4c3460cb1fb7c6da9965e09c734d282a8e9c81f0 DRTVWR-229 +f4481df42f9a4a92bf475a80f0c51d1a4bbdfd59 DRTVWR-246 +39c5204b6e800983a41ccac8ad6dc993120197c6 DRTVWR-247 +7c7d57d393e8ae7b61623279de06eb4a62ccae6a DRTVWR-249 +f72b50ef168c159d6e79e97aa2bcafaf8577ab99 DRTVWR-230 +b418be80903520c492e1173f3afbc4021cad5d07 DRTVWR-255 +9aa1aa9f1fe13c194695a0b8f0af298296241dc2 DRTVWR-260  84fbaf2d4141bd161731430e760949dc787ca206 DRTVWR-244  083d2d36b5bb1c54fc3dd7caac0e7ac381a9cef0 3.4.4-beta1 -391a8c74cec7275c5d26c85ad108d4782a3e3dd9 DRTVWR-268  b634dec987c16e8c9c938e11e52591d9ead8fa9b DRTVWR-270  cd39255bd23330fd30c04105f2811e941d8524fe 3.4.4-beta2  2c4011bbc2b15b82198fd8b51f3a9fe765a08c4d DRTVWR-271  2f8a3ef687bc55828abcb17ac1ad7cde70536d7e 3.4.4-beta3  35cfd4cf5b895fa776592f2e630e330be7f0604e DRTVWR-273 -a36f1f354b02aa6e448ca13685de167d0a0a3d03 DRTVWR-272 -37dba00ad820de3a808d4039396b162a9c275b3e DRTVWR-269  c374035d459af3c03dea2dd90880dfc25de64706 DRTVWR-275  05d9f1dd7a954069af2a33abedb7713fa36a04cb 3.4.4-beta4  e1bb1ae7d8b12faeb37933a737c199cc9b9f89cc 3.4.4-release +391a8c74cec7275c5d26c85ad108d4782a3e3dd9 DRTVWR-268 +a36f1f354b02aa6e448ca13685de167d0a0a3d03 DRTVWR-272 +37dba00ad820de3a808d4039396b162a9c275b3e DRTVWR-269  7c6dfdc1b7a2ce0d8e3a8f3ce3058547ea065c0f DRTVWR-250  b9ff9730daa53a541925300cbd02bb14575a5705 DRTVWR-277  af6b711a97073431953b55ee808aaa09900c27e5 DRTVWR-276 @@ -406,8 +405,6 @@ c296133849d1f103c0e2abc41e6599daed00b67b DRTVWR-280  5df4802bec93c8d0a509946d826bb4c50c5442ec DRTVWR-281  7c1c33ba4cfd2d15ca51cc1ac440eca551331a4a DRTVWR-283  6b9c7dbebef793230d64e1b452577c8b142d4143 3.4.5-beta2 -37947e4f771f001b551581bf7cd0051c3153beed DRTVWR-282 -6482cceb91cda68b799f3e6cdc66d33bf123547a DRTVWR-284  ccf991e02dc2f63fb646324230d54832683f4a9b DRTVWR-286  2d849850558a5a0324b398d1c102d30bcbdfb88f DRTVWR-287  e06898df8644fe567bee94f817d03abc1c380993 3.4.5-beta3 @@ -420,5 +417,20 @@ b23419a2748483c98f3b84b630468a21c88feba5 DRTVWR-292  0a5d409161ef2a89b28c9a741051dd2dedc707d6 DRTVWR-297  852b69ef0b5fe6b13b69cc2217282cc64de6afab 3.4.5-beta5  a49c715243a36a8a380504d14cb7416b3039c956 3.4.5-release +37947e4f771f001b551581bf7cd0051c3153beed DRTVWR-282 +6482cceb91cda68b799f3e6cdc66d33bf123547a DRTVWR-284 +092a9effbedd1a0276fa5ced520992ce00f96fbf CHUI-PV-0  279ef1dfc9b749a6cc499cf190fec0c090b6d682 DRTVWR-288  9b19edaf1d8ddf435f60fbbb444dd25db8f63953 3.5.0-beta1 +c6b3561c7d7ad365eeba669db54eb57b5149ce75 3.5.0-beta2 +6d91ffd77bf2a20f18a2175eb7579da880ae12ac DRTVWR-302 +f6ca5bb75bca975ff0bc77e71e615f6478c4559c 3.5.0-beta3 +910b5fad950e343b58229f5a0aefa7729b9308b3 DRTVWR-303 +53cffdde0b3cc367ba9bb6abd5c83ae14df5e882 3.5.0-beta4 +4d5f6234dc59a0fb6ead5e02c7d343a0610e0488 DRTVWR-304 +dd058a6093c493120d67c8e02c812c0f7b2d3db0 3.5.0-beta5 +fd6b510e83f56830e45670c428653134899d3e25 DRTVWR-305 +55339537d99afc394d1bb7fdb7d074bf321ca62f 3.5.0-beta6 +902caf2b9fdbdbc5c399c4d5ebcecaf9cb97bab8 DRTVWR-306 +5c6098fd17d40ee3a38ca6b64f6be9db7f61f0a8 3.5.0-beta7 +adc360e6bf21390d2665380951d85937cd29a604 3.5.0-release diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index 2d5744bb5e..3bb759d458 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -464,7 +464,7 @@ void LLAvatarAppearance::computeBodySize()  	F32 old_offset = mAvatarOffset.mV[VZ]; -	mAvatarOffset.mV[VZ] = getVisualParamWeight(11001); +	mAvatarOffset.mV[VZ] = getVisualParamWeight(AVATAR_HOVER);  	mPelvisToFoot = hip.mV[VZ] * pelvis_scale.mV[VZ] -  				 	knee.mV[VZ] * hip_scale.mV[VZ] - @@ -488,6 +488,25 @@ void LLAvatarAppearance::computeBodySize()  	mAvatarOffset.mV[VX] = 0.0f;  	mAvatarOffset.mV[VY] = 0.0f; +	// Certain configurations of avatars can force the overall height (with offset) to go negative. +	// Enforce a constraint to make sure we don't go below 0.1 meters. +	// Camera positioning and other things start to break down when your avatar is "walking" while being fully underground +	if (new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] < 0.1f)  +	{ +		mAvatarOffset.mV[VZ] = -(new_body_size.mV[VZ] - 0.11f); // avoid floating point rounding making the above check continue to fail. + +		llassert(new_body_size.mV[VZ] + mAvatarOffset.mV[VZ] >= 0.1f); + +		if (mWearableData && isSelf())  +		{ +			LLWearable* shape = mWearableData->getWearable(LLWearableType::WT_SHAPE, 0); +			if (shape)  +			{ +				shape->setVisualParamWeight(AVATAR_HOVER, mAvatarOffset.mV[VZ], false); +			} +		} +	} +  	if (new_body_size != mBodySize || old_offset != mAvatarOffset.mV[VZ])  	{  		mBodySize = new_body_size; diff --git a/indra/llappearance/llavatarappearancedefines.h b/indra/llappearance/llavatarappearancedefines.h index 496f85c107..8a1d2c4707 100644 --- a/indra/llappearance/llavatarappearancedefines.h +++ b/indra/llappearance/llavatarappearancedefines.h @@ -41,6 +41,8 @@ extern const S32 SCRATCH_TEX_WIDTH;  extern const S32 SCRATCH_TEX_HEIGHT;  extern const S32 IMPOSTOR_PERIOD; +static const U32 AVATAR_HOVER = 11001; +  //--------------------------------------------------------------------  // Enums  //-------------------------------------------------------------------- diff --git a/indra/llappearance/llwearabledata.h b/indra/llappearance/llwearabledata.h index 3e92f2ead8..03bd179f25 100644 --- a/indra/llappearance/llwearabledata.h +++ b/indra/llappearance/llwearabledata.h @@ -2,7 +2,7 @@   * @file llwearabledata.h   * @brief LLWearableData class header file   * - * $LicenseInfo:firstyear=20012license=viewerlgpl$ + * $LicenseInfo:firstyear=2012&license=viewerlgpl$   * Second Life Viewer Source Code   * Copyright (C) 2010, Linden Research, Inc.   *  diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index ca8a05511a..ae5e3ecade 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@  const S32 LL_VERSION_MAJOR = 3;  const S32 LL_VERSION_MINOR = 5; -const S32 LL_VERSION_PATCH = 0; +const S32 LL_VERSION_PATCH = 1;  const S32 LL_VERSION_BUILD = 264760;  const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index b59c5a06cd..e45249b1cb 100644 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -1,173 +1,173 @@ -#!/usr/bin/env python
 -"""\
 -@file   test_llsdmessage_peer.py
 -@author Nat Goodspeed
 -@date   2008-10-09
 -@brief  This script asynchronously runs the executable (with args) specified on
 -        the command line, returning its result code. While that executable is
 -        running, we provide dummy local services for use by C++ tests.
 -
 -$LicenseInfo:firstyear=2008&license=viewerlgpl$
 -Second Life Viewer Source Code
 -Copyright (C) 2010, Linden Research, Inc.
 -
 -This library is free software; you can redistribute it and/or
 -modify it under the terms of the GNU Lesser General Public
 -License as published by the Free Software Foundation;
 -version 2.1 of the License only.
 -
 -This library is distributed in the hope that it will be useful,
 -but WITHOUT ANY WARRANTY; without even the implied warranty of
 -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 -Lesser General Public License for more details.
 -
 -You should have received a copy of the GNU Lesser General Public
 -License along with this library; if not, write to the Free Software
 -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 -
 -Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 -$/LicenseInfo$
 -"""
 -
 -import os
 -import sys
 -from threading import Thread
 -from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
 -
 -mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/
 -sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python"))
 -from indra.util.fastest_elementtree import parse as xml_parse
 -from indra.base import llsd
 -from testrunner import freeport, run, debug, VERBOSE
 -import time
 -
 -_storage=None
 -
 -class TestHTTPRequestHandler(BaseHTTPRequestHandler):
 -    """This subclass of BaseHTTPRequestHandler is to receive and echo
 -    LLSD-flavored messages sent by the C++ LLHTTPClient.
 -    """
 -    def read(self):
 -        # The following logic is adapted from the library module
 -        # SimpleXMLRPCServer.py.
 -        # Get arguments by reading body of request.
 -        # We read this in chunks to avoid straining
 -        # socket.read(); around the 10 or 15Mb mark, some platforms
 -        # begin to have problems (bug #792570).
 -        try:
 -            size_remaining = int(self.headers["content-length"])
 -        except (KeyError, ValueError):
 -            return ""
 -        max_chunk_size = 10*1024*1024
 -        L = []
 -        while size_remaining:
 -            chunk_size = min(size_remaining, max_chunk_size)
 -            chunk = self.rfile.read(chunk_size)
 -            L.append(chunk)
 -            size_remaining -= len(chunk)
 -        return ''.join(L)
 -        # end of swiped read() logic
 -
 -    def read_xml(self):
 -        # This approach reads the entire POST data into memory first
 -        return llsd.parse(self.read())
 -##         # This approach attempts to stream in the LLSD XML from self.rfile,
 -##         # assuming that the underlying XML parser reads its input file
 -##         # incrementally. Unfortunately I haven't been able to make it work.
 -##         tree = xml_parse(self.rfile)
 -##         debug("Finished raw parse")
 -##         debug("parsed XML tree %s", tree)
 -##         debug("parsed root node %s", tree.getroot())
 -##         debug("root node tag %s", tree.getroot().tag)
 -##         return llsd.to_python(tree.getroot())
 -
 -    def do_HEAD(self):
 -        self.do_GET(withdata=False)
 -
 -    def do_GET(self, withdata=True):
 -        # Of course, don't attempt to read data.
 -        data = dict(reply="success", body="avatar", random=17)
 -        self.answer(data, withdata=withdata)
 -
 -    def do_POST(self):
 -        # Read the provided POST data.
 -        self.answer(self.read_xml())
 -
 -    def do_PUT(self):
 -        # Read the provided PUT data.
 -        self.answer(self.read_xml())
 -
 -    def answer(self, data, withdata=True):
 -        global _storage
 -        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path)
 -        if "fail" in self.path or "test/error" in self.path: # fail requested
 -            status = data.get("status", 500)
 -            # self.responses maps an int status to a (short, long) pair of
 -            # strings. We want the longer string. That's why we pass a string
 -            # pair to get(): the [1] will select the second string, whether it
 -            # came from self.responses or from our default pair.
 -            reason = data.get("reason",
 -                               self.responses.get(status,
 -                                                  ("fail requested",
 -                                                   "Your request specified failure status %s "
 -                                                   "without providing a reason" % status))[1])
 -            debug("fail requested: %s: %r", status, reason)
 -            self.send_error(status, reason)
 -        else:
 -            if "web/echo" in self.path:
 -                pass
 -            elif "test/timeout" in self.path:
 -                time.sleep(5.0)
 -                return
 -            elif "test/storage" in self.path:
 -                if "GET" == self.command:
 -                    data = _storage
 -                else:
 -                    _storage = data
 -                    data = "ok"
 -            else:
 -                data = data.copy()          # we're going to modify
 -                # Ensure there's a "reply" key in data, even if there wasn't before
 -                data["reply"] = data.get("reply", llsd.LLSD("success"))
 -            response = llsd.format_xml(data)
 -            debug("success: %s", response)
 -            self.send_response(200)
 -            self.send_header("Content-type", "application/llsd+xml")
 -            self.send_header("Content-Length", str(len(response)))
 -            self.end_headers()
 -            if withdata:
 -                self.wfile.write(response)
 -
 -    if not VERBOSE:
 -        # When VERBOSE is set, skip both these overrides because they exist to
 -        # suppress output.
 -
 -        def log_request(self, code, size=None):
 -            # For present purposes, we don't want the request splattered onto
 -            # stderr, as it would upset devs watching the test run
 -            pass
 -
 -        def log_error(self, format, *args):
 -            # Suppress error output as well
 -            pass
 -
 -class Server(HTTPServer):
 -    # This pernicious flag is on by default in HTTPServer. But proper
 -    # operation of freeport() absolutely depends on it being off.
 -    allow_reuse_address = False
 -
 -if __name__ == "__main__":
 -    # Instantiate a Server(TestHTTPRequestHandler) on the first free port
 -    # in the specified port range. Doing this inline is better than in a
 -    # daemon thread: if it blows up here, we'll get a traceback. If it blew up
 -    # in some other thread, the traceback would get eaten and we'd run the
 -    # subject test program anyway.
 -    httpd, port = freeport(xrange(8000, 8020),
 -                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler))
 -    # Pass the selected port number to the subject test program via the
 -    # environment. We don't want to impose requirements on the test program's
 -    # command-line parsing -- and anyway, for C++ integration tests, that's
 -    # performed in TUT code rather than our own.
 -    os.environ["PORT"] = str(port)
 -    debug("$PORT = %s", port)
 -    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:]))
 +#!/usr/bin/env python +"""\ +@file   test_llsdmessage_peer.py +@author Nat Goodspeed +@date   2008-10-09 +@brief  This script asynchronously runs the executable (with args) specified on +        the command line, returning its result code. While that executable is +        running, we provide dummy local services for use by C++ tests. + +$LicenseInfo:firstyear=2008&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +""" + +import os +import sys +from threading import Thread +from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler + +mydir = os.path.dirname(__file__)       # expected to be .../indra/llmessage/tests/ +sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python")) +from indra.util.fastest_elementtree import parse as xml_parse +from indra.base import llsd +from testrunner import freeport, run, debug, VERBOSE +import time + +_storage=None + +class TestHTTPRequestHandler(BaseHTTPRequestHandler): +    """This subclass of BaseHTTPRequestHandler is to receive and echo +    LLSD-flavored messages sent by the C++ LLHTTPClient. +    """ +    def read(self): +        # The following logic is adapted from the library module +        # SimpleXMLRPCServer.py. +        # Get arguments by reading body of request. +        # We read this in chunks to avoid straining +        # socket.read(); around the 10 or 15Mb mark, some platforms +        # begin to have problems (bug #792570). +        try: +            size_remaining = int(self.headers["content-length"]) +        except (KeyError, ValueError): +            return "" +        max_chunk_size = 10*1024*1024 +        L = [] +        while size_remaining: +            chunk_size = min(size_remaining, max_chunk_size) +            chunk = self.rfile.read(chunk_size) +            L.append(chunk) +            size_remaining -= len(chunk) +        return ''.join(L) +        # end of swiped read() logic + +    def read_xml(self): +        # This approach reads the entire POST data into memory first +        return llsd.parse(self.read()) +##         # This approach attempts to stream in the LLSD XML from self.rfile, +##         # assuming that the underlying XML parser reads its input file +##         # incrementally. Unfortunately I haven't been able to make it work. +##         tree = xml_parse(self.rfile) +##         debug("Finished raw parse") +##         debug("parsed XML tree %s", tree) +##         debug("parsed root node %s", tree.getroot()) +##         debug("root node tag %s", tree.getroot().tag) +##         return llsd.to_python(tree.getroot()) + +    def do_HEAD(self): +        self.do_GET(withdata=False) + +    def do_GET(self, withdata=True): +        # Of course, don't attempt to read data. +        data = dict(reply="success", body="avatar", random=17) +        self.answer(data, withdata=withdata) + +    def do_POST(self): +        # Read the provided POST data. +        self.answer(self.read_xml()) + +    def do_PUT(self): +        # Read the provided PUT data. +        self.answer(self.read_xml()) + +    def answer(self, data, withdata=True): +        global _storage +        debug("%s.answer(%s): self.path = %r", self.__class__.__name__, data, self.path) +        if "fail" in self.path or "test/error" in self.path: # fail requested +            status = data.get("status", 500) +            # self.responses maps an int status to a (short, long) pair of +            # strings. We want the longer string. That's why we pass a string +            # pair to get(): the [1] will select the second string, whether it +            # came from self.responses or from our default pair. +            reason = data.get("reason", +                               self.responses.get(status, +                                                  ("fail requested", +                                                   "Your request specified failure status %s " +                                                   "without providing a reason" % status))[1]) +            debug("fail requested: %s: %r", status, reason) +            self.send_error(status, reason) +        else: +            if "web/echo" in self.path: +                pass +            elif "test/timeout" in self.path: +                time.sleep(5.0) +                return +            elif "test/storage" in self.path: +                if "GET" == self.command: +                    data = _storage +                else: +                    _storage = data +                    data = "ok" +            else: +                data = data.copy()          # we're going to modify +                # Ensure there's a "reply" key in data, even if there wasn't before +                data["reply"] = data.get("reply", llsd.LLSD("success")) +            response = llsd.format_xml(data) +            debug("success: %s", response) +            self.send_response(200) +            self.send_header("Content-type", "application/llsd+xml") +            self.send_header("Content-Length", str(len(response))) +            self.end_headers() +            if withdata: +                self.wfile.write(response) + +    if not VERBOSE: +        # When VERBOSE is set, skip both these overrides because they exist to +        # suppress output. + +        def log_request(self, code, size=None): +            # For present purposes, we don't want the request splattered onto +            # stderr, as it would upset devs watching the test run +            pass + +        def log_error(self, format, *args): +            # Suppress error output as well +            pass + +class Server(HTTPServer): +    # This pernicious flag is on by default in HTTPServer. But proper +    # operation of freeport() absolutely depends on it being off. +    allow_reuse_address = False + +if __name__ == "__main__": +    # Instantiate a Server(TestHTTPRequestHandler) on the first free port +    # in the specified port range. Doing this inline is better than in a +    # daemon thread: if it blows up here, we'll get a traceback. If it blew up +    # in some other thread, the traceback would get eaten and we'd run the +    # subject test program anyway. +    httpd, port = freeport(xrange(8000, 8020), +                           lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler)) +    # Pass the selected port number to the subject test program via the +    # environment. We don't want to impose requirements on the test program's +    # command-line parsing -- and anyway, for C++ integration tests, that's +    # performed in TUT code rather than our own. +    os.environ["PORT"] = str(port) +    debug("$PORT = %s", port) +    sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:])) diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 6f895ed939..fd98155704 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1215,9 +1215,11 @@ void LLTabContainer::removeTabPanel(LLPanel* child)  				removeChild( tuple->mButton );  			}   			delete tuple->mButton; +            tuple->mButton = NULL;   			removeChild( tuple->mTabPanel );  // 			delete tuple->mTabPanel; +            tuple->mTabPanel = NULL;  			mTabList.erase( iter );  			delete tuple; @@ -1279,9 +1281,11 @@ void LLTabContainer::deleteAllTabs()  		removeChild( tuple->mButton );  		delete tuple->mButton; +        tuple->mButton = NULL;   		removeChild( tuple->mTabPanel );  // 		delete tuple->mTabPanel; +        tuple->mTabPanel = NULL;  	}  	// Actually delete the tuples themselves @@ -1484,9 +1488,8 @@ BOOL LLTabContainer::setTab(S32 which)  		{  			LLTabTuple* tuple = *iter;  			BOOL is_selected = ( tuple == selected_tuple ); -                          // Although the selected tab must be complete, we may have hollow LLTabTuple tucked in the list -            if (tuple->mButton) +            if (tuple && tuple->mButton)              {                  tuple->mButton->setUseEllipses(mUseTabEllipses);                  tuple->mButton->setHAlign(mFontHalign); @@ -1494,7 +1497,7 @@ BOOL LLTabContainer::setTab(S32 which)                  // RN: this limits tab-stops to active button only, which would require arrow keys to switch tabs                  tuple->mButton->setTabStop( is_selected );              } -            if (tuple->mTabPanel) +            if (tuple && tuple->mTabPanel)              {                  tuple->mTabPanel->setVisible( is_selected );                  //tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here. @@ -1525,7 +1528,7 @@ BOOL LLTabContainer::setTab(S32 which)  					else  					{  						S32 available_width_with_arrows = getRect().getWidth() - mRightTabBtnOffset - 2 * (LLPANEL_BORDER_WIDTH + tabcntr_arrow_btn_size  + tabcntr_arrow_btn_size + 1); -						S32 running_tab_width = tuple->mButton->getRect().getWidth(); +						S32 running_tab_width = (tuple && tuple->mButton ? tuple->mButton->getRect().getWidth() : 0);  						S32 j = i - 1;  						S32 min_scroll_pos = i;  						if (running_tab_width < available_width_with_arrows) @@ -1533,7 +1536,7 @@ BOOL LLTabContainer::setTab(S32 which)  							while (j >= 0)  							{  								LLTabTuple* other_tuple = getTab(j); -								running_tab_width += other_tuple->mButton->getRect().getWidth(); +								running_tab_width += (other_tuple && other_tuple->mButton ? other_tuple->mButton->getRect().getWidth() : 0);  								if (running_tab_width > available_width_with_arrows)  								{  									break; diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index c5561166fc..92a241857e 100644..100755 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -42,8 +42,8 @@  						</array>  					<key>tags</key>  						<array> -						     <string>Avatar</string>  						<!-- sample entry for debugging specific items	 +						     <string>Avatar</string>  						     <string>Voice</string>		  						-->  						</array> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 049aea844c..939d9398b2 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -4322,7 +4322,7 @@ void LLAgent::sendAgentSetAppearance()  	} -	LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL; +	LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << LL_ENDL;  	//dumpAvatarTEs( "sendAgentSetAppearance()" );  	LLMessageSystem* msg = gMessageSystem; @@ -4380,7 +4380,7 @@ void LLAgent::sendAgentSetAppearance()  		{  			dumpSentAppearance(dump_prefix);  		} -		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL; +		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "TAT: Sending cached texture data" << LL_ENDL;  		for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)  		{  			BOOL generate_valid_hash = TRUE; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 3cee7826fd..c88694ef76 100644..100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1124,19 +1124,14 @@ void LLAgentWearables::addWearableToAgentInventory(LLPointer<LLInventoryCallback  						  cb);  } -void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index, BOOL will_replace) +void LLAgentWearables::removeWearable(const LLWearableType::EType type, bool do_remove_all, U32 index)  { -	if (gAgent.isTeen() &&  +	if (gAgent.isTeen() &&  		(type == LLWearableType::WT_UNDERSHIRT || type == LLWearableType::WT_UNDERPANTS))  	{  		// Can't take off underclothing in simple UI mode or on PG accounts -		 -		if (getWearableCount(type) < 2 && !will_replace)  -		{ -			// if there is 0 or 1 undergarment worn, and we're not going to be immediately adding another, -			// we cannot allow the removal for teen accounts -			return; -		} +		// TODO: enable the removing of a single undershirt/underpants if multiple are worn. - Nyx +		return;  	}  	if (getWearableCount(type) == 0)  	{ @@ -1244,31 +1239,6 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  {  	llinfos << "setWearableOutfit() start" << llendl; -	S32 count = wearables.count(); -	llassert(items.count() == count); -	S32 i; - -	bool has_undershirt = false; -	bool has_underpants = false; - -	for (i = 0; i < count; i++) -	{ -		LLViewerWearable* new_wearable = wearables[i]; -		if (new_wearable) -		{ -			const LLWearableType::EType type = new_wearable->getType(); -			if (type == LLWearableType::WT_UNDERSHIRT)  -			{ -				has_undershirt = true; -			} -			if (type == LLWearableType::WT_UNDERPANTS)  -			{ -				has_underpants = true; -			} -		} -	} - -  	// TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later  	if (remove)  	{ @@ -1278,17 +1248,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it  		{  			if (LLWearableType::getAssetType((LLWearableType::EType)type) == LLAssetType::AT_CLOTHING)  			{ -				bool will_replace = false; -				if ((type == LLWearableType::WT_UNDERSHIRT && has_undershirt) ||  -					(type == LLWearableType::WT_UNDERPANTS && has_underpants)) -				{ -					will_replace = true; -				} -				removeWearable((LLWearableType::EType)type, true, 0, will_replace); +				removeWearable((LLWearableType::EType)type, true, 0);  			}  		}  	} +	S32 count = wearables.count(); +	llassert(items.count() == count); + +	S32 i;  	for (i = 0; i < count; i++)  	{  		LLViewerWearable* new_wearable = wearables[i]; @@ -1518,7 +1486,7 @@ void LLAgentWearables::queryWearableCache()  			gAgentAvatarp->outputRezTiming("Fetching textures from cache");  		} -		LL_INFOS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL; +		LL_DEBUGS("Avatar") << gAgentAvatarp->avString() << "Requesting texture cache entry for " << num_queries << " baked textures" << LL_ENDL;  		gMessageSystem->sendReliable(gAgent.getRegion()->getHost());  		gAgentQueryManager.mNumPendingQueries++;  		gAgentQueryManager.mWearablesCacheQueryID++; diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index f2f224a573..5be4648636 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -146,7 +146,7 @@ private:  	// Removing wearables  	//--------------------------------------------------------------------  public: -	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/, BOOL will_replace = false); +	void			removeWearable(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);  private:  	void			removeWearableFinal(const LLWearableType::EType type, bool do_remove_all /*= false*/, U32 index /*= 0*/);  protected: diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 43439bac5d..f2c0227184 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1994,7 +1994,7 @@ void LLAppearanceMgr::updateAppearanceFromCOF(bool update_base_outfit_ordering)  	BoolSetter setIsInUpdateAppearanceFromCOF(mIsInUpdateAppearanceFromCOF);  	selfStartPhase("update_appearance_from_cof"); -	LL_INFOS("Avatar") << self_av_string() << "starting" << LL_ENDL; +	LL_DEBUGS("Avatar") << self_av_string() << "starting" << LL_ENDL;  	//checking integrity of the COF in terms of ordering of wearables,   	//checking and updating links' descriptions of wearables in the COF (before analyzed for "dirty" state) @@ -3593,7 +3593,7 @@ LLAppearanceMgr::~LLAppearanceMgr()  void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)  { -	llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl; +	LL_DEBUGS("Avatar") << "setAttachmentInvLinkEnable => " << (int) val << llendl;  	mAttachmentInvLinkEnabled = val;  } diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 53926c1fef..0f138873ac 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -408,16 +408,7 @@ public:  		S32 user_name_width = user_name_rect.getWidth();  		S32 time_box_width = time_box->getRect().getWidth(); -		if (time_box->getVisible() && user_name_width <= mMinUserNameWidth) -		{ -			time_box->setVisible(FALSE); - -			user_name_rect.mRight += time_box_width; -			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight()); -			user_name->setRect(user_name_rect); -		} - -		if (!time_box->getVisible() && user_name_width > mMinUserNameWidth + time_box_width) +		if (!time_box->getVisible() && user_name_width > mMinUserNameWidth)  		{  			user_name_rect.mRight -= time_box_width;  			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight()); diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 7296ec3ced..58817485fb 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -585,6 +585,28 @@ void LLFloaterIMContainer::returnFloaterToHost()  	floater->onTearOffClicked();  } +void LLFloaterIMContainer::setMinimized(BOOL b) +{ +	bool was_minimized = isMinimized(); +	LLMultiFloater::setMinimized(b); + +	//Switching from minimized to un-minimized +	if(was_minimized && !b) +	{ +		LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(mSelectedSession); + +		if(session_floater && !session_floater->isTornOff()) +		{ +			//When in DND mode, remove stored IM notifications +			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal +			if(gAgent.isDoNotDisturb() && mSelectedSession.notNull()) +			{ +				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSelectedSession); +			} +		} +	} +} +  void LLFloaterIMContainer::setVisible(BOOL visible)  {	LLFloaterIMNearbyChat* nearby_chat;  	if (visible) @@ -597,10 +619,21 @@ void LLFloaterIMContainer::setVisible(BOOL visible)  			// *TODO: find a way to move this to XML as a default panel or something like that  			LLSD name("nearby_chat");  			LLFloaterReg::toggleInstanceOrBringToFront(name); -            setSelectedSession(LLUUID(NULL)); +            selectConversationPair(LLUUID(NULL), false, false);  		}  		openNearbyChat(); -        selectConversationPair(getSelectedSession(), false, false); +		flashConversationItemWidget(mSelectedSession,false); + +		LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(mSelectedSession); +		if(session_floater && !session_floater->isMinimized()) +		{ +			//When in DND mode, remove stored IM notifications +			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal +			if(gAgent.isDoNotDisturb() && mSelectedSession.notNull()) +			{ +				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSelectedSession); +			} +		}  	}  	nearby_chat = LLFloaterReg::findTypedInstance<LLFloaterIMNearbyChat>("nearby_chat"); @@ -1389,13 +1422,6 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool      		widget->getParentFolder()->setSelection(widget, FALSE, FALSE);      		mConversationsRoot->scrollToShowSelection();      	} - -        //When in DND mode, remove stored IM notifications -        //Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal -        if(gAgent.isDoNotDisturb() && session_id.notNull()) -        { -            LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, session_id); -        }      }      /* floater processing */ @@ -1420,14 +1446,19 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool  			{  				showStub(true);  			} + +			//When in DND mode, remove stored IM notifications +			//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal +			if(gAgent.isDoNotDisturb() && session_id.notNull()) +			{ +				LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, session_id); +			}  		}  		// Set the focus on the selected floater -		if (!session_floater->hasFocus()) +		if (!session_floater->hasFocus() && !session_floater->isMinimized())  		{ -			BOOL is_minimized = session_floater->isMinimized();  			session_floater->setFocus(focus_floater); -			session_floater->setMinimized(is_minimized);  		}  	}  	flashConversationItemWidget(session_id,false); @@ -1986,8 +2017,11 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)  {  	// Always unminimize before trying to close.  	// Most of the time the user will never see this state. -	setMinimized(FALSE); - +	if(isMinimized()) +	{ +		LLMultiFloater::setMinimized(FALSE); +	} +	  	LLFloater::closeFloater(app_quitting);  } diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 52b672241f..e39d20ec35 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -59,6 +59,7 @@ public:  	/*virtual*/ BOOL postBuild();  	/*virtual*/ void onOpen(const LLSD& key);  	/*virtual*/ void draw(); +	/*virtual*/ void setMinimized(BOOL b);  	/*virtual*/ void setVisible(BOOL visible);  	/*virtual*/ void setVisibleAndFrontmost(BOOL take_focus=TRUE, const LLSD& key = LLSD());  	/*virtual*/ void updateResizeLimits(); diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp index d86e1b3fd7..49f36a2f32 100644 --- a/indra/newview/llfloaterimnearbychat.cpp +++ b/indra/newview/llfloaterimnearbychat.cpp @@ -264,7 +264,7 @@ void LLFloaterIMNearbyChat::setVisibleAndFrontmost(BOOL take_focus, const LLSD&  	if(!isTornOff() && matchesKey(key))  	{ -		LLFloaterIMContainer::getInstance()->selectConversationPair(mSessionID, true, false); +		LLFloaterIMContainer::getInstance()->selectConversationPair(mSessionID, true, take_focus);  	}  } @@ -328,7 +328,7 @@ void LLFloaterIMNearbyChat::onChatFontChange(LLFontGL* fontp)  void LLFloaterIMNearbyChat::show()  {  		openFloater(getKey()); -	} +}  bool LLFloaterIMNearbyChat::isChatVisible() const  { diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index c536c50ae2..7b72c1e930 100644 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -39,6 +39,7 @@  #include "llchannelmanager.h"  #include "llchiclet.h"  #include "llchicletbar.h" +#include "lldonotdisturbnotificationstorage.h"  #include "llfloaterreg.h"  #include "llfloateravatarpicker.h"  #include "llfloaterimcontainer.h" // to replace separate IM Floaters with multifloater container @@ -645,6 +646,23 @@ void LLFloaterIMSession::setDocked(bool docked, bool pop_on_undock)  	}  } +void LLFloaterIMSession::setMinimized(BOOL b) +{ +	bool wasMinimized = isMinimized(); +	LLFloaterIMSessionTab::setMinimized(b); + +	//Switching from minimized state to un-minimized state +	if(wasMinimized && !b) +	{ +		//When in DND mode, remove stored IM notifications +		//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal +		if(gAgent.isDoNotDisturb()) +		{ +			LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSessionID); +		} +	} +} +  void LLFloaterIMSession::setVisible(BOOL visible)  {  	LLNotificationsUI::LLScreenChannel* channel = static_cast<LLNotificationsUI::LLScreenChannel*> @@ -713,6 +731,18 @@ BOOL LLFloaterIMSession::getVisible()  	return visible;  } +void LLFloaterIMSession::setFocus(BOOL focus) +{ +	LLFloaterIMSessionTab::setFocus(focus); + +	//When in DND mode, remove stored IM notifications +	//Nearby chat (Null) IMs are not stored while in DND mode, so can ignore removal +	if(focus && gAgent.isDoNotDisturb()) +	{ +		LLDoNotDisturbNotificationStorage::getInstance()->removeNotification(LLDoNotDisturbNotificationStorage::toastName, mSessionID); +	} +} +  //static  bool LLFloaterIMSession::toggle(const LLUUID& session_id)  { diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h index cb330bca0f..a0e0171b34 100644 --- a/indra/newview/llfloaterimsession.h +++ b/indra/newview/llfloaterimsession.h @@ -65,8 +65,10 @@ public:  	// LLView overrides  	/*virtual*/ BOOL postBuild(); +	/*virtual*/ void setMinimized(BOOL b);  	/*virtual*/ void setVisible(BOOL visible);  	/*virtual*/ BOOL getVisible(); +	/*virtual*/ void setFocus(BOOL focus);  	// Check typing timeout timer.  	/*virtual*/ void draw(); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 51f5bbd775..9c0af79923 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -183,18 +183,19 @@ void on_new_message(const LLSD& msg)  	{  		conversations_floater_status = CLOSED;  	} -	else if (!session_floater || !LLFloater::isVisible(session_floater) -	            || session_floater->isMinimized() || !session_floater->hasFocus()) +	else if (!im_box->hasFocus() && +			    !(session_floater && LLFloater::isVisible(session_floater) +	            && !session_floater->isMinimized() && session_floater->hasFocus()))  	{  		conversations_floater_status = NOT_ON_TOP;  	} -	else if ((session_floater->hasFocus()) && (im_box->getSelectedSession() == session_id)) +	else if (im_box->getSelectedSession() != session_id)  	{ -		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED; +		conversations_floater_status = ON_TOP;      }  	else  	{ -		conversations_floater_status = ON_TOP; +		conversations_floater_status = ON_TOP_AND_ITEM_IS_SELECTED;  	}      //  determine user prefs for this session @@ -227,7 +228,7 @@ void on_new_message(const LLSD& msg)      // 0. nothing - exit      if (("none" == user_preferences ||      		ON_TOP_AND_ITEM_IS_SELECTED == conversations_floater_status) -    	&& session_floater->isMessagePaneExpanded()) +    	    && session_floater->isMessagePaneExpanded())      {      	return;      } @@ -2858,6 +2859,8 @@ LLUUID LLIMMgr::addSession(  	//we don't need to show notes about online/offline, mute/unmute users' statuses for existing sessions  	if (!new_session) return session_id; +    llinfos << "LLIMMgr::addSession, new session added, name = " << name << ", session id = " << session_id << llendl; +      	//Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609)  	//*TODO After February 2010 remove this commented out line if no one will be missing that warning  	//noteOfflineUsers(session_id, floater, ids); @@ -2893,6 +2896,8 @@ void LLIMMgr::removeSession(const LLUUID& session_id)  	LLIMModel::getInstance()->clearSession(session_id); +    llinfos << "LLIMMgr::removeSession, session removed, session id = " << session_id << llendl; +  	notifyObserverSessionRemoved(session_id);  } diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 065ec093f7..8d7478233a 100644..100755 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -2003,8 +2003,9 @@ bool LLInventoryModel::loadSkeleton(  		{  			LLViewerInventoryCategory* cat = (*invalid_cat_it).get();  			cat->setVersion(NO_VERSION); -			llinfos << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl; +			LL_DEBUGS("Inventory") << "Invalidating category name: " << cat->getName() << " UUID: " << cat->getUUID() << " due to invalid descendents cache" << llendl;  		} +		LL_INFOS("Inventory") << "Invalidated " << invalid_categories.size() << " categories due to invalid descendents cache" << llendl;  		// At this point, we need to set the known descendents for each  		// category which successfully cached so that we do not diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 731b2e9427..beca08203f 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -8291,8 +8291,6 @@ void initialize_menus()  	view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts"); - -	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));  	enable.add("Conversation.IsConversationLoggingAllowed", boost::bind(&LLFloaterIMContainer::isConversationLoggingAllowed));  	// Agent diff --git a/indra/newview/llviewertexlayer.cpp b/indra/newview/llviewertexlayer.cpp index f3c9921819..777e1f9c76 100644..100755 --- a/indra/newview/llviewertexlayer.cpp +++ b/indra/newview/llviewertexlayer.cpp @@ -363,7 +363,7 @@ BOOL LLViewerTexLayerSetBuffer::requestUpdateImmediate()  void LLViewerTexLayerSetBuffer::doUpload()  {  	LLViewerTexLayerSet* layer_set = getViewerTexLayerSet(); -	llinfos << "Uploading baked " << layer_set->getBodyRegionName() << llendl; +	LL_DEBUGS("Avatar") << "Uploading baked " << layer_set->getBodyRegionName() << llendl;  	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);  	// Don't need caches since we're baked now.  (note: we won't *really* be baked  diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 236b95253c..eb6c453e76 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -911,6 +911,10 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, FTType f_type,  {  	init(TRUE) ;  	mFTType = f_type; +	if (mFTType == FTT_HOST_BAKE) +	{ +		mCanUseHTTP = false; +	}  	generateGLTexture() ;  } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 725939dd3e..0475e9fc89 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3204,7 +3204,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)  		}  		root_pos = gAgent.getPosGlobalFromAgent(getRenderPosition()); -		root_pos.mdV[VZ] += getVisualParamWeight(11001); +		root_pos.mdV[VZ] += getVisualParamWeight(AVATAR_HOVER);  		resolveHeightGlobal(root_pos, ground_under_pelvis, normal); @@ -4475,10 +4475,6 @@ void LLVOAvatar::addBakedTextureStats( LLViewerFetchedTexture* imagep, F32 pixel  	//the texture pipeline will stop fetching this texture.  	imagep->resetTextureStats(); -	// TODO: currently default to HTTP texture and fall back to UDP if cannot be found there. -	// Once server messaging is in place, we should call setCanUseHTTP(false) for old style -	// appearance requests -	imagep->setCanUseHTTP(true);  	imagep->setMaxVirtualSizeResetInterval(MAX_TEXTURE_VIRTURE_SIZE_RESET_INTERVAL);  	imagep->resetMaxVirtualSizeResetCounter() ; @@ -6655,7 +6651,7 @@ LLBBox LLVOAvatar::getHUDBBox() const  //-----------------------------------------------------------------------------  void LLVOAvatar::onFirstTEMessageReceived()  { -	LL_INFOS("Avatar") << avString() << LL_ENDL; +	LL_DEBUGS("Avatar") << avString() << LL_ENDL;  	if( !mFirstTEMessageReceived )  	{  		mFirstTEMessageReceived = TRUE; @@ -6817,7 +6813,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe  		U8 av_u8;  		mesgsys->getU8Fast(_PREHASH_AppearanceData, _PREHASH_AppearanceVersion, av_u8, 0);  		contents.mAppearanceVersion = av_u8; -		llinfos << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl; +		LL_DEBUGS("Avatar") << "appversion set by AppearanceData field: " << contents.mAppearanceVersion << llendl;  		mesgsys->getS32Fast(_PREHASH_AppearanceData, _PREHASH_CofVersion, contents.mCOFVersion, 0);  		// For future use:  		//mesgsys->getU32Fast(_PREHASH_AppearanceData, _PREHASH_Flags, appearance_flags, 0); @@ -6864,7 +6860,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe  		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT  		if (num_blocks != expected_tweakable_count)  		{ -			llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl; +			LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;  		}  	}  	else @@ -6875,7 +6871,7 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe  		}  		else  		{ -			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl; +			LL_DEBUGS("Avatar") << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;  		}  	} @@ -6886,7 +6882,6 @@ void LLVOAvatar::parseAppearanceMessage(LLMessageSystem* mesgsys, LLAppearanceMe  		if (it != contents.mParams.end())  		{  			S32 index = it - contents.mParams.begin(); -			llinfos << "index: " << index << llendl;  			contents.mParamAppearanceVersion = llround(contents.mParamWeights[index]);  			LL_DEBUGS("Avatar") << "appversion req by appearance_version param: " << contents.mParamAppearanceVersion << llendl;  		} @@ -6932,7 +6927,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	bool enable_verbose_dumps = gSavedSettings.getBOOL("DebugAvatarAppearanceMessage");  	std::string dump_prefix = getFullname() + "_" + (isSelf()?"s":"o") + "_"; -	//if (enable_verbose_dumps) { dumpArchetypeXML(dump_prefix + "process_start"); }  	if (gSavedSettings.getBOOL("BlockAvatarAppearanceMessages"))  	{  		llwarns << "Blocking AvatarAppearance message" << llendl; @@ -6990,7 +6984,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	if (isSelf() && isEditingAppearance())  	{ -		llinfos << "ignoring appearance message while in appearance edit" << llendl; +		LL_DEBUGS("Avatar") << "ignoring appearance message while in appearance edit" << llendl;  		return;  	} @@ -7001,7 +6995,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		// appearance version, which may cause us to look for baked  		// textures in the wrong place and flag them as missing  		// assets. -		llinfos << "ignoring appearance message due to lack of params" << llendl; +		LL_DEBUGS("Avatar") << "ignoring appearance message due to lack of params" << llendl;  		return;  	} @@ -7029,7 +7023,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	BOOL is_first_appearance_message = !mFirstAppearanceMessageReceived;  	mFirstAppearanceMessageReceived = TRUE; -	LL_INFOS("Avatar") << avString() << "processAvatarAppearance start " << mID +	LL_DEBUGS("Avatar") << avString() << "processAvatarAppearance start " << mID  			<< " first? " << is_first_appearance_message << " self? " << isSelf() << LL_ENDL;  	if (is_first_appearance_message ) @@ -7069,7 +7063,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT  		if (num_params != expected_tweakable_count)  		{ -			llinfos << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl; +			LL_DEBUGS("Avatar") << "Number of params in AvatarAppearance msg (" << num_params << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;  		}  		if (params_changed) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 0404884245..f89a72bc56 100755 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -2773,7 +2773,7 @@ void LLVOAvatarSelf::outputRezDiagnostics() const  void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const  { -	LL_INFOS("Avatar") +	LL_DEBUGS("Avatar")  		<< avString()  		<< llformat("%s. Time from avatar creation: %.2f", msg.c_str(), mDebugSelfLoadTimer.getElapsedTimeF32())  		<< LL_ENDL; diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 3b56e974d2..2152a9f6e9 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -70,23 +70,26 @@       top="0"       left="0"       right="-1" -     bottom="-1"> +     bottom="-3">          <layout_stack           animate="false"            default_tab_group="2"           follows="all"           right="-5"           bottom="-1" +         top="0" +         left="5" +         border_size="0"           layout="topleft"           orientation="vertical"           name="main_stack" -         tab_group="1" -         top="0" -         left="5"> +         tab_group="1">              <layout_panel               auto_resize="false"               name="toolbar_panel" -             height="35"> +             height="35" +             right="-1" +             left="1">                  <menu_button                   menu_filename="menu_im_session_showmodes.xml"                   follows="top|left" @@ -164,7 +167,7 @@                   image_unselected="Toolbar_Middle_Off"                   layout="topleft"                   top="5" -                 right="-70" +                 right="-67"                   name="close_btn"                   tool_tip="End this conversation"                   width="31" /> @@ -196,7 +199,8 @@              </layout_panel>              <layout_panel               name="body_panel" -             height="235"> +             top="1" +             bottom="-1">                  <layout_stack                   default_tab_group="2"                   follows="all" @@ -213,12 +217,14 @@                       min_dim="0"                       width="150"                        user_resize="true" -                     auto_resize="false" /> +                     auto_resize="false"  +                     bottom="-1" />                      <layout_panel                       default_tab_group="3"                       tab_group="2"                       name="right_part_holder" -                     min_width="221"> +                     min_width="221" +                     bottom="-1">                          <layout_stack                           animate="true"                            default_tab_group="2" @@ -262,21 +268,28 @@                  </layout_stack>              </layout_panel>              <layout_panel -             height="35" +             top_delta="0" +             top="0" +             height="26" +             bottom="-1"               auto_resize="false"               name="chat_layout_panel">                  <layout_stack                   animate="false"                   default_tab_group="2"                   follows="all" -                 right="-1"                   orientation="horizontal"                   name="input_panels"                   top="0" -                 bottom="-1" -                 left="0"> +                 bottom="-2" +                 left="0" +                 right="-1">                      <layout_panel -                     name="input_editor_layout_panel"> +                     name="input_editor_layout_panel" +                     auto_resize="true" +                     user_resize="false" +                     top="0" +                     bottom="-1">                          <chat_editor                           layout="topleft"                           expand_lines_count="5" @@ -289,27 +302,32 @@                           max_length="1023"                           spellcheck="true"                           tab_group="3" -                         bottom="-8" -                         left="5" -                         right="-5" +                         top="1" +                         bottom="-2" +                         left="4" +                         right="-4"                           wrap="true" />                      </layout_panel>                      <layout_panel                       auto_resize="false" +                     user_resize="false"                       name="input_button_layout_panel" -                     width="32"> +                     width="30" +                     top="0" +                     bottom="-1">                          <button +                         layout="topleft"                           left="1" -                         top="4" +                         right="-1" +                         top="1" +                         height="22"                           follows="left|right|top" -                         height="25"                           image_hover_unselected="Toolbar_Middle_Over"                           image_overlay="Conv_expand_one_line"                           image_selected="Toolbar_Middle_Selected"                           image_unselected="Toolbar_Middle_Off"                           name="minz_btn" -                         tool_tip="Shows/hides message panel" -                         width="28" /> +                         tool_tip="Shows/hides message panel" />                      </layout_panel>                  </layout_stack>              </layout_panel> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 101e104eab..52c4fb1613 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -180,7 +180,8 @@         name="Set Logging Level"         tear_off="true">          <menu_item_check -          label="Debug"> +         name="Debug" +         label="Debug">            <menu_item_check.on_check              function="Develop.CheckLoggingLevel"              parameter="0" /> @@ -189,7 +190,8 @@             parameter="0" />          </menu_item_check>          <menu_item_check -          label="Info"> +         name="Info" +         label="Info">            <menu_item_check.on_check              function="Develop.CheckLoggingLevel"              parameter="1" /> @@ -198,7 +200,8 @@             parameter="1" />          </menu_item_check>          <menu_item_check -          label="Warning"> +         name="Warning" +         label="Warning">            <menu_item_check.on_check              function="Develop.CheckLoggingLevel"              parameter="2" /> @@ -207,7 +210,8 @@             parameter="2" />          </menu_item_check>          <menu_item_check -          label="Error"> +         name="Error" +         label="Error">            <menu_item_check.on_check              function="Develop.CheckLoggingLevel"              parameter="3" /> @@ -216,7 +220,8 @@             parameter="3" />          </menu_item_check>          <menu_item_check -          label="None"> +         name="None" +         label="None">            <menu_item_check.on_check              function="Develop.CheckLoggingLevel"              parameter="4" /> diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 544f06ac0c..a11cd13fdb 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -131,6 +131,7 @@         name="Status"         tear_off="true">          <menu_item_check +         name="Away"           label="Away">            <menu_item_check.on_check             function="View.Status.CheckAway" /> @@ -138,6 +139,7 @@             function="World.SetAway" />          </menu_item_check>          <menu_item_check +         name="Do Not Disturb"           label="Do Not Disturb">            <menu_item_check.on_check             function="View.Status.CheckDoNotDisturb" /> @@ -257,6 +259,7 @@               parameter="speak" />          </menu_item_check>          <menu_item_check +         name="Conversation Log..."           label="Conversation Log...">              <menu_item_check.on_check               function="Floater.Visible" @@ -352,6 +355,7 @@          </menu_item_call>        <menu_item_separator/>        <menu_item_check +       name="Do Not Disturb"         label="Do Not Disturb">          <menu_item_check.on_check           function="View.Status.CheckDoNotDisturb" /> @@ -3051,13 +3055,6 @@                  <menu_item_call.on_click                   function="Advanced.PrintAgentInfo" />              </menu_item_call> -            <menu_item_call -             label="Memory Stats" -             name="Memory Stats" -             shortcut="control|alt|shift|M"> -                <menu_item_call.on_click -                 function="Advanced.PrintTextureMemoryStats" /> -            </menu_item_call>              <menu_item_check               label="Region Debug Console"               name="Region Debug Console" | 
