DRTVWR-209 Merge of viewer-development with SH-3316 drano-http code.
This was yet another refresh from v-d because of significant changes to lltexturefetch that would not have been resolvable by casual application of any merge tool. There are still a few questions outstanding but this is the initial, optimistic merge.master
commit
04e8d074b2
|
|
@ -36,7 +36,7 @@ indra/newview/fmod.dll
|
|||
indra/newview/mozilla-theme
|
||||
indra/newview/mozilla-universal-darwin.tgz
|
||||
indra/newview/res/ll_icon.*
|
||||
indra/newview/res-sdl
|
||||
indra/newview/res-sdl/ll_icon.*
|
||||
indra/newview/vivox-runtime
|
||||
indra/server-linux-*
|
||||
indra/temp
|
||||
|
|
|
|||
|
|
@ -1,355 +1,313 @@
|
|||
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release
|
||||
003dd9461bfa479049afcc34545ab3431b147c7c v2start
|
||||
08398e650c222336bb2b6de0cd3bba944aef11b4 2-1rn1
|
||||
0962101bfa7df0643a6e625786025fe7f8a6dc97 2-1-beta-2
|
||||
12769e547e30067d494a6c01479a18107366ce2f beta-5
|
||||
17fc2908e9a1ef34a9f53a41a393caf5c3cac390 beta-3-5
|
||||
19547b909b404552593be5ec7c18241e062a6d65 2-1-1-beta-1
|
||||
1e2b517adc2ecb342cd3c865f2a6ccf82a3cf8d7 2-1-beta-3
|
||||
3469d90a115b900f8f250e137bbd9b684130f5d2 beta-4
|
||||
3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1
|
||||
434973a76ab2755f98ab55e1afc193e16692d5c5 2-1-1-beta-2
|
||||
46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start
|
||||
4f777ffb99fefdc6497c61385c22688ff149c659 viewer-2-0-0
|
||||
52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3
|
||||
668851b2ef0f8cf8df07a0fba429e4a6c1e70abb viewer-2-0-1
|
||||
6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2
|
||||
d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0
|
||||
7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f alpha-4
|
||||
7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f fork to viewer-20qa
|
||||
80bc6cff515118a36108967af49d3f8105c95bc9 viewer-2-0-2-start
|
||||
87bfaf8c76f9b22d9c65d4b315358861be87c863 2-1-1-release
|
||||
b03065d018b8a2e28b7de85b293a4c992cb4c12d 2-1-release
|
||||
b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6
|
||||
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2-1-1-release
|
||||
c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4
|
||||
d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo
|
||||
d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5
|
||||
d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0
|
||||
d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo
|
||||
b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6
|
||||
17fc2908e9a1ef34a9f53a41a393caf5c3cac390 beta-3-5
|
||||
3469d90a115b900f8f250e137bbd9b684130f5d2 beta-4
|
||||
12769e547e30067d494a6c01479a18107366ce2f beta-5
|
||||
4f777ffb99fefdc6497c61385c22688ff149c659 viewer-2-0-0
|
||||
668851b2ef0f8cf8df07a0fba429e4a6c1e70abb viewer-2-0-1
|
||||
08398e650c222336bb2b6de0cd3bba944aef11b4 2-1rn1
|
||||
80bc6cff515118a36108967af49d3f8105c95bc9 viewer-2-0-2-start
|
||||
46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start
|
||||
3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1
|
||||
0962101bfa7df0643a6e625786025fe7f8a6dc97 2-1-beta-2
|
||||
1e2b517adc2ecb342cd3c865f2a6ccf82a3cf8d7 2-1-beta-3
|
||||
c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4
|
||||
b03065d018b8a2e28b7de85b293a4c992cb4c12d 2-1-release
|
||||
19547b909b404552593be5ec7c18241e062a6d65 2-1-1-beta-1
|
||||
6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2
|
||||
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2-1-1-release
|
||||
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release
|
||||
c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint
|
||||
7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3
|
||||
7076e22f9f43f479a4ea75eac447a36364bead5a 2.2.0-beta1
|
||||
7076e22f9f43f479a4ea75eac447a36364bead5a DRTVWR-5_2.2.0-beta1
|
||||
7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3
|
||||
9822eb3e25f7fe0c28ffd8aba45c507caa383cbc 2.2.0-beta2
|
||||
9822eb3e25f7fe0c28ffd8aba45c507caa383cbc DRTVWR-3_2.2.0-beta2
|
||||
b0cd7e150009809a0b5b0a9d5785cd4bb230413a 2.2.0-beta3
|
||||
b0cd7e150009809a0b5b0a9d5785cd4bb230413a DRTVWR-7_2.2.0-beta3
|
||||
00a831292231faad7e44c69f76cb96f175b8dfad 2.2.0-beta4
|
||||
98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-beta1
|
||||
1415e6538d54fd5d568ee88343424d57c6803c2c 2.2.0-release
|
||||
1415e6538d54fd5d568ee88343424d57c6803c2c DRTVWR-8_2.2.0-release
|
||||
98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-start
|
||||
a3c12342b1af0951b8aa3b828aacef17fcea8178 2.3.0-beta1
|
||||
a3c12342b1af0951b8aa3b828aacef17fcea8178 DRTVWR-14_2.3.0-beta1
|
||||
db0fe9bb65187f365e58a717dd23d0f4754a9c1d 2.3.0-beta2
|
||||
db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-beta3
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-release
|
||||
dbc206fc61d89ff4cfe15aade0bf0c7bc7fee1c9 2.4.0-start
|
||||
dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1
|
||||
dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1
|
||||
3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e 2.4.0-beta1
|
||||
25bd6007e3d2fc15db9326ed4b18a24a5969a46a 2.4.0-beta2
|
||||
1ed382c6a08ba3850b6ce9061bc551ddece0ea07 2.4.0-release
|
||||
a82e5b1e22c7f90e3c7977d146b80588f004ed0d 2.5.0-start
|
||||
76f586a8e22b1abe6b2339758c8ac0fa718975de 76f586a8e22b
|
||||
76f586a8e22b1abe6b2339758c8ac0fa718975de 76f586a8e22b
|
||||
0000000000000000000000000000000000000000 76f586a8e22b
|
||||
0000000000000000000000000000000000000000 76f586a8e22b
|
||||
345b17e7cf630db77e840b4fe3451bd476d750a3 76f586a8e22b
|
||||
345b17e7cf630db77e840b4fe3451bd476d750a3 2.5.0-beta1
|
||||
345b17e7cf630db77e840b4fe3451bd476d750a3 76f586a8e22b
|
||||
0000000000000000000000000000000000000000 76f586a8e22b
|
||||
54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f 2.5.0-beta2
|
||||
b542f8134a2bb5dd054ff4e509a44b2ee463b1bf nat-eventapi2-base
|
||||
7076e22f9f43f479a4ea75eac447a36364bead5a DRTVWR-5_2.2.0-beta1
|
||||
9822eb3e25f7fe0c28ffd8aba45c507caa383cbc DRTVWR-3_2.2.0-beta2
|
||||
b0cd7e150009809a0b5b0a9d5785cd4bb230413a DRTVWR-7_2.2.0-beta3
|
||||
1415e6538d54fd5d568ee88343424d57c6803c2c DRTVWR-8_2.2.0-release
|
||||
a3c12342b1af0951b8aa3b828aacef17fcea8178 DRTVWR-14_2.3.0-beta1
|
||||
db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-20_2.3.0-beta3
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-13_2.3.0-release
|
||||
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 DRTVWR-20_2.3.0-beta3
|
||||
dbc206fc61d89ff4cfe15aade0bf0c7bc7fee1c9 2.4.0-start
|
||||
3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e 2.4.0-beta1
|
||||
3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e DRTVWR-26_2.4.0-beta1
|
||||
25bd6007e3d2fc15db9326ed4b18a24a5969a46a 2.4.0-beta2
|
||||
25bd6007e3d2fc15db9326ed4b18a24a5969a46a DRTVWR-27_2.4.0-beta2
|
||||
1ed382c6a08ba3850b6ce9061bc551ddece0ea07 2.4.0-release
|
||||
1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release
|
||||
a82e5b1e22c7f90e3c7977d146b80588f004ed0d 2.5.0-start
|
||||
345b17e7cf630db77e840b4fe3451bd476d750a3 2.5.0-beta1
|
||||
345b17e7cf630db77e840b4fe3451bd476d750a3 DRTVWR-32_2.5.0-beta1
|
||||
54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f 2.5.0-beta2
|
||||
54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33--2.5.0beta2
|
||||
54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2
|
||||
b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3
|
||||
b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3
|
||||
b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-release
|
||||
b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-31_2.5.0-release
|
||||
3178e311da3a8739a85363665006ea3c4610cad4 dons-headless-hackathon-work
|
||||
b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3
|
||||
b542f8134a2bb5dd054ff4e509a44b2ee463b1bf nat-eventapi2-base
|
||||
63a6aedfce785a6c760377bf685b2dae616797d2 2.5.1-start
|
||||
4dede9ae1ec74d41f6887719f6f1de7340d8578d 2.5.1-release
|
||||
4dede9ae1ec74d41f6887719f6f1de7340d8578d DRTVWR-37_2.5.1-release
|
||||
b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release
|
||||
b53a0576eec80614d7767ed72b40ed67aeff27c9 2.5.2-release
|
||||
92e58e51776a4f8c29069b1a62ff21454d2085f0 2.6.0-start
|
||||
f1827b441e05bf37c68e2c15ebc6d09e9b03f527 2.6.0-start
|
||||
b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release
|
||||
4e9eec6a347f89b2b3f295beb72f1cf7837dff66 2.6.0-start
|
||||
9283d6d1d7eb71dfe4c330e7c9144857e7356bde 2.6.0-beta1
|
||||
9283d6d1d7eb71dfe4c330e7c9144857e7356bde DRTVWR-40_2.6.0-beta1
|
||||
9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2
|
||||
9e4641f4a7870c0f565a25a2971368d5a29516a1 2.6.0-beta2
|
||||
9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2
|
||||
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
|
||||
c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-beta1
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release
|
||||
56b2778c743c2a964d82e1caf11084d76a87de2c 2.6.2-start
|
||||
42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release
|
||||
42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release
|
||||
d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1
|
||||
d1203046bb653b763f835b04d184646949d8dd5c 2.6.2-beta1
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release
|
||||
d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release
|
||||
52b2263ab28f0976c689fd0b76c55a9eb027cdbf end-of-develop.py
|
||||
ec32f1045e7c2644015245df3a9933620aa194b8 2.6.3-start
|
||||
d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1
|
||||
d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc 2.6.3-beta1
|
||||
0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2
|
||||
d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1
|
||||
0630e977504af5ea320c58d33cae4e1ddee793e9 2.6.3-beta2
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd DRTVWR-50_2.6.5-beta1
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd 2.6.5-beta1
|
||||
800cefce8d364ffdd2f383cbecb91294da3ea424 2.6.6-start
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 2.6.6-beta1
|
||||
5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start
|
||||
beafa8a9bd1d1b670b7523d865204dc4a4b38eef DRTVWR-55_2.6.8-beta1
|
||||
bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156
|
||||
beafa8a9bd1d1b670b7523d865204dc4a4b38eef 2.6.8-beta1
|
||||
11d5d8080e67c3955914caf98f2eb116af30e55a 2.6.9-start
|
||||
e67da2c6e3125966dd49eef98b36317afac1fcfe 2.6.9-start
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-57_2.6.9-beta1
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-beta1
|
||||
be2000b946f8cb3de5f44b2d419287d4c48ec4eb DRTVWR-54_2.6.8-release
|
||||
be2000b946f8cb3de5f44b2d419287d4c48ec4eb 2.6.8-release
|
||||
dac76a711da5f1489a01c1fa62ec97d99c25736d DRTVWR-51_2.6.6-release
|
||||
dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release
|
||||
0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-56_2.6.9-release
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release
|
||||
3178e311da3a8739a85363665006ea3c4610cad4 dons-headless-hackathon-work
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd 2.6.5-beta1
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd DRTVWR-50_2.6.5-beta1
|
||||
800cefce8d364ffdd2f383cbecb91294da3ea424 2.6.6-start
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 2.6.6-beta1
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1
|
||||
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
|
||||
be2000b946f8cb3de5f44b2d419287d4c48ec4eb DRTVWR-54_2.6.8-release
|
||||
e67da2c6e3125966dd49eef98b36317afac1fcfe 2.6.9-start
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-beta1
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 2.6.9-release
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-56_2.6.9-release
|
||||
77e5a08344c95738ab879f9671b7758cddd712a3 DRTVWR-57_2.6.9-beta1
|
||||
8835e0e3c0d3a48244c287bc05811dfc2fba43ec 2.7.0-start
|
||||
43c7ee846b7eed80786acbbf35d03bd016a3e85d DRTVWR-59_2.7.0-beta1
|
||||
43c7ee846b7eed80786acbbf35d03bd016a3e85d 2.7.0-beta1
|
||||
43c7ee846b7eed80786acbbf35d03bd016a3e85d DRTVWR-59_2.7.0-beta1
|
||||
54fd44ac92e4c61435ea33effe093a3527e18d98 2.7.1-start
|
||||
0c4d0c24278074f219e5a32e72b449e78301d11b DRTVWR-61_2.7.1-beta1
|
||||
0c4d0c24278074f219e5a32e72b449e78301d11b 2.7.1-beta1
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
|
||||
0c4d0c24278074f219e5a32e72b449e78301d11b DRTVWR-61_2.7.1-beta1
|
||||
9f79a6ed8fdcd2f3dac33ea6b3236eeb278dccfe 2.7.2-start
|
||||
e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1
|
||||
e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb 2.7.2-beta1
|
||||
e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1
|
||||
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 DRTVWR-67_2.7.4-beta1
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release
|
||||
19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start
|
||||
09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
|
||||
09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
|
||||
502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155
|
||||
6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
|
||||
09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
|
||||
6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1
|
||||
6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release
|
||||
2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release
|
||||
502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start
|
||||
2c7e459e0c883f8e406b932e41e60097e9ee077e 2.8.1-beta1
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release
|
||||
2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release
|
||||
4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release
|
||||
4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix
|
||||
4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix
|
||||
54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release
|
||||
ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release
|
||||
46a010f4885a9d223b511eac553ba5720284b1dc 3.0.0-start
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release
|
||||
6b678ea52f90d5c14181661dcd2546e25bde483e 3.0.0-start
|
||||
82a2079ffcb57ecb1b3849cb41376b443e1eb912 3.0.1-start
|
||||
364fd63517fbacbbcb9129d096187171ba8c9e48 DRTVWR-81_3.0.1-beta1
|
||||
364fd63517fbacbbcb9129d096187171ba8c9e48 3.0.1-beta1
|
||||
f2412ecd6740803ea9452f1d17fd872e263a0df7 3.0.2-start
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-78_3.0.0-release
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release
|
||||
42784bf50fa01974bada2a1af3892ee09c93fcda DRTVWR-83_3.0.2-beta1
|
||||
42784bf50fa01974bada2a1af3892ee09c93fcda 3.0.2-beta1
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e 3.0.2-beta2
|
||||
b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-78_3.0.0-release
|
||||
0000000000000000000000000000000000000000 DRTVWR-78_3.0.0-release
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release
|
||||
6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1
|
||||
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
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e 3.0.2-beta2
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2
|
||||
b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
|
||||
6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 3.0.3-beta1
|
||||
586907287be581817b2422b5137971b22d54ea48 3.0.4-start
|
||||
61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2
|
||||
6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1
|
||||
61aa7974df089e8621fe9a4c69bcdefdb3cc208a 3.0.3-beta2
|
||||
0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release
|
||||
61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2
|
||||
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 DRTVWR-93_3.1.0-beta1
|
||||
2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1
|
||||
dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
|
||||
dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
|
||||
dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
|
||||
bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2
|
||||
dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
|
||||
2657fa785bbfac115852c41bd0adaff74c2ad5da DRTVWR-93_3.1.0-beta1
|
||||
bc01ee26fd0f1866e266429e85f76340523e91f1 3.1.0-beta2
|
||||
ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release
|
||||
bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2
|
||||
ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 3.1.0-release
|
||||
ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release
|
||||
a8230590e28e4f30f5105549e0e43211d9d55711 3.2.0-start
|
||||
e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1
|
||||
e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1
|
||||
9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2
|
||||
e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1
|
||||
9bcc2b7176634254e501e3fb4c5b56c1f637852e 3.2.0-beta2
|
||||
2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3
|
||||
9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2
|
||||
2a13d30ee50ccfed50268238e36bb90d738ccc9e 3.2.0-beta3
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
|
||||
2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
|
||||
c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
|
||||
40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
|
||||
3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
|
||||
9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1
|
||||
9e390d76807fa70d356b8716fb83b8ce42a629ef 3.2.1-beta1
|
||||
523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1
|
||||
523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1
|
||||
80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
|
||||
9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
|
||||
40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start
|
||||
523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1
|
||||
523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1
|
||||
80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1
|
||||
8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release
|
||||
bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1
|
||||
bd6bcde2584491fd9228f1fa51c4575f4e764e19 3.2.4-release
|
||||
3d2d5d244c6398a4214c666d5dd3965b0918709a DRTVWR-106_3.2.5-beta1
|
||||
bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release
|
||||
8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start
|
||||
3d2d5d244c6398a4214c666d5dd3965b0918709a 3.2.5-beta1
|
||||
65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d DRTVWR-107_3.2.5-beta2
|
||||
3d2d5d244c6398a4214c666d5dd3965b0918709a DRTVWR-106_3.2.5-beta1
|
||||
65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d 3.2.5-beta2
|
||||
c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release
|
||||
65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d DRTVWR-107_3.2.5-beta2
|
||||
c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release
|
||||
c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release
|
||||
2174ed1c7129562428a5cfe8651ed77b8d26ae18 3.2.6-start
|
||||
286d73ff5c19f6c00e023dc1b60975ed6bbe2872 3.2.6-beta1
|
||||
286d73ff5c19f6c00e023dc1b60975ed6bbe2872 DRTVWR-109_3.2.6-beta1
|
||||
4891c46a56fed7512c783b9cbe7cb7260727bf0c 3.2.7-start
|
||||
286d73ff5c19f6c00e023dc1b60975ed6bbe2872 3.2.6-beta1
|
||||
c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release
|
||||
c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release
|
||||
3d75c836d178c7c7e788f256afe195f6cab764a2 DRTVWR-111_3.2.7-beta1
|
||||
3d75c836d178c7c7e788f256afe195f6cab764a2 3.2.7-beta1
|
||||
3d75c836d178c7c7e788f256afe195f6cab764a2 DRTVWR-111_3.2.7-beta1
|
||||
89980333c99dbaf1787fe20784f1d8849e9b5d4f 3.2.8-start
|
||||
16f8e2915f3f2e4d732fb3125daf229cb0fd1875 DRTVWR-114_3.2.8-beta1
|
||||
37dd400ad721e2a89ee820ffc1e7e433c68f3ca2 3.2.9-start
|
||||
16f8e2915f3f2e4d732fb3125daf229cb0fd1875 3.2.8-beta1
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
16f8e2915f3f2e4d732fb3125daf229cb0fd1875 DRTVWR-114_3.2.8-beta1
|
||||
987425b1acf4752379b2e1eb20944b4b35d67a85 3.2.8-beta2
|
||||
987425b1acf4752379b2e1eb20944b4b35d67a85 DRTVWR-115_3.2.8-beta2
|
||||
987425b1acf4752379b2e1eb20944b4b35d67a85 3.2.8-beta2
|
||||
51b2fd52e36aab8f670e0874e7e1472434ec4b4a DRTVWR-113_3.2.8-release
|
||||
51b2fd52e36aab8f670e0874e7e1472434ec4b4a 3.2.8-release
|
||||
e9c82fca5ae6fb8a8af29012d78fb194a29323f3 DRTVWR-117_3.2.9-beta1
|
||||
51b2fd52e36aab8f670e0874e7e1472434ec4b4a DRTVWR-113_3.2.8-release
|
||||
37dd400ad721e2a89ee820ffc1e7e433c68f3ca2 3.2.9-start
|
||||
e9c82fca5ae6fb8a8af29012d78fb194a29323f3 3.2.9-beta1
|
||||
a01ef9bed28627f4ca543fbc1d70c79cc297a90f DRTVWR-118_3.2.9-beta2
|
||||
e9c82fca5ae6fb8a8af29012d78fb194a29323f3 DRTVWR-117_3.2.9-beta1
|
||||
a01ef9bed28627f4ca543fbc1d70c79cc297a90f 3.2.9-beta2
|
||||
987425b1acf4752379b2e1eb20944b4b35d67a85 3.2.8-beta2
|
||||
d5f263687f43f278107363365938f0a214920a4b DRTVWR-119
|
||||
a01ef9bed28627f4ca543fbc1d70c79cc297a90f DRTVWR-118_3.2.9-beta2
|
||||
d5f263687f43f278107363365938f0a214920a4b 3.3.0-beta1
|
||||
5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate
|
||||
5e8d2662f38a66eca6c591295f5880d47afc73f7 3.3.0-release
|
||||
d5f263687f43f278107363365938f0a214920a4b 3.3.0-start
|
||||
dffd0457ee0745de65bf95f0642a5c9e46b8e2f0 viewer-beta-candidate
|
||||
d5f263687f43f278107363365938f0a214920a4b DRTVWR-119
|
||||
d5f263687f43f278107363365938f0a214920a4b 3.3.0-beta1
|
||||
5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate
|
||||
5e8d2662f38a66eca6c591295f5880d47afc73f7 3.3.0-release
|
||||
28b95a6a28dca3338d9a1f4f204b96678df9f6a5 viewer-beta-candidate
|
||||
b43cd25be49e3984ff5361cefad020e069131d98 3.3.1-start
|
||||
3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 DRTVWR-125
|
||||
dffd0457ee0745de65bf95f0642a5c9e46b8e2f0 viewer-beta-candidate
|
||||
3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 viewer-beta-candidate
|
||||
3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 viewer-beta-candidate
|
||||
3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 3.3.1-start
|
||||
3e2fca4ed1a0dc9fe6d8a6664e71098bb035a367 DRTVWR-125
|
||||
28b95a6a28dca3338d9a1f4f204b96678df9f6a5 3.3.1-beta1
|
||||
1dc545e44617975da2a4a32fe303386c687a6ca1 viewer-beta-candidate
|
||||
1dc545e44617975da2a4a32fe303386c687a6ca1 3.3.1-beta2
|
||||
1dc545e44617975da2a4a32fe303386c687a6ca1 DRTVWR-139
|
||||
5e8d2662f38a66eca6c591295f5880d47afc73f7 viewer-release-candidate
|
||||
c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate
|
||||
1dc545e44617975da2a4a32fe303386c687a6ca1 viewer-beta-candidate
|
||||
c623bbc854b6f7ee1b33a3718f76715046aa2937 3.3.1-release
|
||||
d29a260119f8d5a5d168e25fed0c7ea6b3f40161 3.3.2-beta1
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-beta2
|
||||
c623bbc854b6f7ee1b33a3718f76715046aa2937 viewer-release-candidate
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d 3.3.2-release
|
||||
675668bd24d3bea570814f71762a2a806f7e1b8d viewer-release-candidate
|
||||
050e48759337249130f684b4a21080b683f61732 DRTVWR-168
|
||||
b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153
|
||||
15e90b52dc0297921b022b90d10d797436b8a1bd viewer-release-candidate
|
||||
bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156
|
||||
6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148
|
||||
1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c DRTVWR-144
|
||||
1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c 3.3.3-beta1
|
||||
2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155
|
||||
24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
5910f8063a7e1ddddf504c2f35ca831cc5e8f469 DRTVWR-160
|
||||
1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c 3.3.3-beta1
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 3.3.3-beta1
|
||||
1b7f311b5a5dbfbed3dcbb4ed44afa20f89cad4c DRTVWR-144
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 DRTVWR-144
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
2d6c0634b11e6f3df11002b8510a72a0433da00a DRTVWR-164
|
||||
80b5e5e9775966d3839331ffa7a16a60f9d7c930 DRTVWR-165
|
||||
fdcc08a4f20ae9bb060f4693c8980d216534efdf 3.3.3-beta2
|
||||
af5f3e43e6e4424b1da19d9e16f6b853a7b822ed DRTVWR-169
|
||||
4b3c68199a86cabaa5d9466d7b0f7e141e901d7a 3.3.3-beta3
|
||||
6428242e124b523813bfaf4c45b3d422f0298c81 3.3.3-release
|
||||
57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176
|
||||
b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171
|
||||
050e48759337249130f684b4a21080b683f61732 DRTVWR-168
|
||||
09ef7fd1b0781f33b8a3a9af6236b7bcb4831910 DRTVWR-170
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 3.3.4-beta1
|
||||
f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 DRTVWR-158
|
||||
f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 3.3.4-beta1
|
||||
cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174
|
||||
bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173
|
||||
f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173
|
||||
cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174
|
||||
82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2
|
||||
57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176
|
||||
eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177
|
||||
4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179
|
||||
a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179
|
||||
4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180
|
||||
9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184
|
||||
5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183
|
||||
6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4
|
||||
9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184
|
||||
ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5
|
||||
28e100d0379a2b0710c57647a28fc5239d3d7b99 3.3.4-release
|
||||
a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182
|
||||
1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1
|
||||
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
|
||||
47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190
|
||||
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
9ee9387789701d597130f879d9011a4958753862 DRTVWR-189
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1062,9 +1062,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d91e1f483209cd3eba04135c6a59e829</string>
|
||||
<string>a5b2dff0d97b643227a58473e5c57906</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/Darwin/installer/kdu-6.4.1-darwin-20110218.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/256978/arch/Darwin/installer/kdu-7.0.0-darwin-20120515.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1086,9 +1086,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6cd9f36465ef73a3df34bf2b3bba2ced</string>
|
||||
<string>6d80d35524e1c0c32d3385014d02d48c</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/221672/arch/CYGWIN/installer/kdu-6.4.1-windows-20110218.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-kdu-private/rev/256978/arch/CYGWIN/installer/kdu-7.0.0-windows-20120515.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1254,11 +1254,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>de22a97b276913a6dd05838b7fe297af</string>
|
||||
<string>0578fa67ef9906c6aaa326f51db2669f</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/Darwin/installer/llphysicsextensions_source-0.3-darwin-20120725.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Darwin/installer/llphysicsextensions_source-0.3-darwin-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1268,9 +1268,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d2dfbbc11aac34ebd551df86524c8c9c</string>
|
||||
<string>b706fdeed4ce2182d434043dc33d9d1d</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120725.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/Linux/installer/llphysicsextensions_source-0.3-linux-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1280,9 +1280,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>99abccc5d117ab82cadb8cff0d85b867</string>
|
||||
<string>0cebd359ea732a7db363d88f9886a1ef</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/262536/arch/CYGWIN/installer/llphysicsextensions_source-0.3-windows-20120725.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source/rev/263415/arch/CYGWIN/installer/llphysicsextensions_source-0.3-windows-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1306,11 +1306,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3528620230fbd288fcc9dbbd8d8a6b59</string>
|
||||
<string>3ae798d4dfb54a1d806ee5f8b31f7626</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/Darwin/installer/llphysicsextensions_stub-0.3-darwin-20120725.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/Darwin/installer/llphysicsextensions_stub-0.3-darwin-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1320,9 +1320,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>69d188f72f9494b0e74c94ca0496f618</string>
|
||||
<string>aa8a2f25e8629cf5e6a96cc0eb93de8e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/Linux/installer/llphysicsextensions_stub-0.3-linux-20120725.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/Linux/installer/llphysicsextensions_stub-0.3-linux-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1332,9 +1332,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>61fc2b84ad53cf8d98d1784c31f9928e</string>
|
||||
<string>3ea4cee6a8dd4c89fbfd3ad6abd703c2</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/262536/arch/CYGWIN/installer/llphysicsextensions_stub-0.3-windows-20120725.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/llphysicsextensions-stub/rev/263415/arch/CYGWIN/installer/llphysicsextensions_stub-0.3-windows-20120814.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -2183,6 +2183,8 @@
|
|||
<array>
|
||||
<string>-configuration Release</string>
|
||||
<string>-project SecondLife.xcodeproj</string>
|
||||
<string>-DENABLE_SIGNING:BOOL=YES</string>
|
||||
<string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>configure</key>
|
||||
|
|
@ -2210,6 +2212,8 @@
|
|||
<array>
|
||||
<string>-configuration Release</string>
|
||||
<string>-project SecondLife.xcodeproj</string>
|
||||
<string>-DENABLE_SIGNING:BOOL=YES</string>
|
||||
<string>-DSIGNING_IDENTITY:STRING="Developer ID Application: Linden Research, Inc."</string>
|
||||
</array>
|
||||
</map>
|
||||
<key>configure</key>
|
||||
|
|
@ -2459,6 +2463,18 @@
|
|||
</map>
|
||||
<key>configure</key>
|
||||
<map>
|
||||
<key>arguments</key>
|
||||
<array>
|
||||
<string>..\indra</string>
|
||||
<string>&&</string>
|
||||
<string>..\indra\tools\vstool\VSTool.exe</string>
|
||||
<string>--solution</string>
|
||||
<string>SecondLife.sln</string>
|
||||
<string>--config</string>
|
||||
<string>Debug</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-G</string>
|
||||
|
|
@ -2535,6 +2551,18 @@
|
|||
</map>
|
||||
<key>configure</key>
|
||||
<map>
|
||||
<key>arguments</key>
|
||||
<array>
|
||||
<string>..\indra</string>
|
||||
<string>&&</string>
|
||||
<string>..\indra\tools\vstool\VSTool.exe</string>
|
||||
<string>--solution</string>
|
||||
<string>SecondLife.sln</string>
|
||||
<string>--config</string>
|
||||
<string>RelWithDebInfo</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-G</string>
|
||||
|
|
@ -2611,6 +2639,18 @@
|
|||
</map>
|
||||
<key>configure</key>
|
||||
<map>
|
||||
<key>arguments</key>
|
||||
<array>
|
||||
<string>..\indra</string>
|
||||
<string>&&</string>
|
||||
<string>..\indra\tools\vstool\VSTool.exe</string>
|
||||
<string>--solution</string>
|
||||
<string>SecondLife.sln</string>
|
||||
<string>--config</string>
|
||||
<string>Release</string>
|
||||
<string>--startup</string>
|
||||
<string>secondlife-bin</string>
|
||||
</array>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<string>-G</string>
|
||||
|
|
|
|||
|
|
@ -174,6 +174,7 @@ Ansariel Hiller
|
|||
VWR-26150
|
||||
STORM-1685
|
||||
STORM-1713
|
||||
STORM-1899
|
||||
Aralara Rajal
|
||||
Ardy Lay
|
||||
STORM-859
|
||||
|
|
@ -400,6 +401,7 @@ Gaberoonie Zanzibar
|
|||
Ganymedes Costagravas
|
||||
Geenz Spad
|
||||
STORM-1823
|
||||
STORM-1900
|
||||
Gene Frostbite
|
||||
GeneJ Composer
|
||||
Geneko Nemeth
|
||||
|
|
@ -636,6 +638,7 @@ Jonathan Yap
|
|||
STORM-1809
|
||||
STORM-1793
|
||||
STORM-1810
|
||||
STORM-1877
|
||||
STORM-1860
|
||||
STORM-1852
|
||||
STORM-1870
|
||||
|
|
@ -644,6 +647,7 @@ Jonathan Yap
|
|||
STORM-1862
|
||||
Kadah Coba
|
||||
STORM-1060
|
||||
STORM-1843
|
||||
Jondan Lundquist
|
||||
Josef Munster
|
||||
Josette Windlow
|
||||
|
|
@ -654,6 +658,8 @@ Kage Pixel
|
|||
VWR-11
|
||||
Kagehi Kohn
|
||||
Kaimen Takahe
|
||||
Katharine Berry
|
||||
STORM-1900
|
||||
Keklily Longfall
|
||||
Ken Lavender
|
||||
Ken March
|
||||
|
|
@ -739,6 +745,7 @@ Marianne McCann
|
|||
Marine Kelley
|
||||
STORM-281
|
||||
MartinRJ Fayray
|
||||
STORM-1844
|
||||
STORM-1845
|
||||
Matthew Anthony
|
||||
Matthew Dowd
|
||||
|
|
@ -1108,9 +1115,12 @@ Sudane Erato
|
|||
Synystyr Texan
|
||||
Takeda Terrawyng
|
||||
TankMaster Finesmith
|
||||
OPEN-140
|
||||
OPEN-142
|
||||
STORM-1100
|
||||
STORM-1602
|
||||
STORM-1258
|
||||
STORM-1602
|
||||
STORM-1868
|
||||
VWR-26622
|
||||
Talamasca
|
||||
Tali Rosca
|
||||
|
|
@ -1228,6 +1238,8 @@ Watty Berkson
|
|||
Westley Schridde
|
||||
Westley Streeter
|
||||
Whimsy Winx
|
||||
Whirly Fizzle
|
||||
STORM-1895
|
||||
Whoops Babii
|
||||
VWR-631
|
||||
VWR-1640
|
||||
|
|
|
|||
|
|
@ -385,14 +385,6 @@
|
|||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ParcelMediaURLFilter</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ParcelNavigateMedia</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ if (WINDOWS)
|
|||
set(CMAKE_CXX_FLAGS_RELEASE
|
||||
"${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
|
||||
CACHE STRING "C++ compiler release options" FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
||||
set(CMAKE_C_STANDARD_LIBRARIES "")
|
||||
|
|
@ -206,6 +207,10 @@ if (DARWIN)
|
|||
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||
if (XCODE_VERSION GREATER 4.2)
|
||||
set(ENABLE_SIGNING TRUE)
|
||||
set(SIGNING_IDENTITY "Developer ID Application: Linden Research, Inc.")
|
||||
endif (XCODE_VERSION GREATER 4.2)
|
||||
endif (DARWIN)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,15 @@ FUNCTION(LL_ADD_INTEGRATION_TEST
|
|||
endif(TEST_DEBUG)
|
||||
ADD_EXECUTABLE(INTEGRATION_TEST_${testname} ${source_files})
|
||||
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXE_STAGING_DIR}")
|
||||
if (WINDOWS)
|
||||
set_target_properties(INTEGRATION_TEST_${testname}
|
||||
PROPERTIES
|
||||
LINK_FLAGS "/debug /NODEFAULTLIB:LIBCMT /SUBSYSTEM:WINDOWS /INCLUDE:__tcmalloc"
|
||||
LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\" /INCREMENTAL:NO"
|
||||
LINK_FLAGS_RELEASE ""
|
||||
)
|
||||
endif(WINDOWS)
|
||||
|
||||
if(STANDALONE)
|
||||
SET_TARGET_PROPERTIES(INTEGRATION_TEST_${testname} PROPERTIES COMPILE_FLAGS -I"${TUT_INCLUDE_DIR}")
|
||||
endif(STANDALONE)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ endif (LINUX)
|
|||
|
||||
add_definitions(${TCMALLOC_FLAG})
|
||||
|
||||
set(LLCOMMON_LINK_SHARED ON CACHE BOOL "Build the llcommon target as a shared library.")
|
||||
set(LLCOMMON_LINK_SHARED OFF CACHE BOOL "Build the llcommon target as a shared library.")
|
||||
if(LLCOMMON_LINK_SHARED)
|
||||
add_definitions(-DLL_COMMON_LINK_SHARED=1)
|
||||
endif(LLCOMMON_LINK_SHARED)
|
||||
|
|
|
|||
|
|
@ -99,10 +99,20 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
|||
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set(DARWIN 1)
|
||||
|
||||
execute_process(
|
||||
COMMAND sh -c "xcodebuild -version | grep Xcode | cut -d ' ' -f2 | cut -d'.' -f1-2"
|
||||
OUTPUT_VARIABLE XCODE_VERSION )
|
||||
|
||||
# To support a different SDK update these Xcode settings:
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
|
||||
if (XCODE_VERSION GREATER 4.2)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
|
||||
else (XCODE_VERSION GREATER 4.2)
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
|
||||
endif (XCODE_VERSION GREATER 4.2)
|
||||
|
||||
set(CMAKE_OSX_SYSROOT macosx10.6)
|
||||
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
|
||||
|
||||
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT dwarf-with-dsym)
|
||||
|
||||
# NOTE: To attempt an i386/PPC Universal build, add this on the configure line:
|
||||
|
|
@ -134,6 +144,11 @@ set(VIEWER ON CACHE BOOL "Build Second Life viewer.")
|
|||
set(VIEWER_CHANNEL "LindenDeveloper" CACHE STRING "Viewer Channel Name")
|
||||
set(VIEWER_LOGIN_CHANNEL ${VIEWER_CHANNEL} CACHE STRING "Fake login channel for A/B Testing")
|
||||
|
||||
if (XCODE_VERSION GREATER 4.2)
|
||||
set(ENABLE_SIGNING OFF CACHE BOOL "Enable signing the viewer")
|
||||
set(SIGNING_IDENTITY "" CACHE STRING "Specifies the signing identity to use, if necessary.")
|
||||
endif (XCODE_VERSION GREATER 4.2)
|
||||
|
||||
set(VERSION_BUILD "0" CACHE STRING "Revision number passed in from the outside")
|
||||
set(STANDALONE OFF CACHE BOOL "Do not use Linden-supplied prebuilt libraries.")
|
||||
set(UNATTENDED OFF CACHE BOOL "Should be set to ON for building with VC Express editions.")
|
||||
|
|
|
|||
|
|
@ -167,7 +167,12 @@ ARGUMENTS=[
|
|||
dict(name='version',
|
||||
description="""This specifies the version of Second Life that is
|
||||
being packaged up.""",
|
||||
default=get_default_version)
|
||||
default=get_default_version),
|
||||
dict(name='signature',
|
||||
description="""This specifies an identity to sign the viewer with, if any.
|
||||
If no value is supplied, the default signature will be used, if any. Currently
|
||||
only used on Mac OS X.""",
|
||||
default=None)
|
||||
]
|
||||
|
||||
def usage(srctree=""):
|
||||
|
|
|
|||
|
|
@ -132,18 +132,68 @@ BOOL LLHandMotion::onUpdate(F32 time, U8* joint_mask)
|
|||
{
|
||||
if (mNewPose != HAND_POSE_RELAXED && mNewPose != mCurrentPose)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mNewPose], 0.f);
|
||||
// Only set param weight for poses other than
|
||||
// default (HAND_POSE_SPREAD); HAND_POSE_SPREAD
|
||||
// is not an animatable morph!
|
||||
if (mNewPose != HAND_POSE_SPREAD)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mNewPose], 0.f);
|
||||
}
|
||||
|
||||
// Reset morph weight for current pose back to its
|
||||
// full extend or it might be stuck somewhere in the middle if a
|
||||
// pose is requested and the old pose is requested again shortly
|
||||
// after while still blending to the other pose!
|
||||
if (mCurrentPose != HAND_POSE_SPREAD)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mCurrentPose], 1.f);
|
||||
}
|
||||
|
||||
// Update visual params now if we won't blend
|
||||
if (mCurrentPose == HAND_POSE_RELAXED)
|
||||
{
|
||||
mCharacter->updateVisualParams();
|
||||
}
|
||||
}
|
||||
mNewPose = HAND_POSE_RELAXED;
|
||||
}
|
||||
else
|
||||
{
|
||||
// this is a new morph we didn't know about before
|
||||
if (*requestedHandPose != mNewPose && mNewPose != mCurrentPose && mNewPose != HAND_POSE_SPREAD)
|
||||
// Sometimes we seem to get garbage here, with poses that are out of bounds.
|
||||
// So check for a valid pose first.
|
||||
if (*requestedHandPose >= 0 && *requestedHandPose < NUM_HAND_POSES)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mNewPose], 0.f);
|
||||
// This is a new morph we didn't know about before:
|
||||
// Reset morph weight for both current and new pose
|
||||
// back their starting values while still blending.
|
||||
if (*requestedHandPose != mNewPose && mNewPose != mCurrentPose)
|
||||
{
|
||||
if (mNewPose != HAND_POSE_SPREAD)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mNewPose], 0.f);
|
||||
}
|
||||
|
||||
// Reset morph weight for current pose back to its full extend
|
||||
// or it might be stuck somewhere in the middle if a pose is
|
||||
// requested and the old pose is requested again shortly after
|
||||
// while still blending to the other pose!
|
||||
if (mCurrentPose != HAND_POSE_SPREAD)
|
||||
{
|
||||
mCharacter->setVisualParamWeight(gHandPoseNames[mCurrentPose], 1.f);
|
||||
}
|
||||
|
||||
// Update visual params now if we won't blend
|
||||
if (mCurrentPose == *requestedHandPose)
|
||||
{
|
||||
mCharacter->updateVisualParams();
|
||||
}
|
||||
}
|
||||
mNewPose = *requestedHandPose;
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Requested hand pose out of range. Ignoring requested pose." << llendl;
|
||||
}
|
||||
mNewPose = *requestedHandPose;
|
||||
}
|
||||
|
||||
mCharacter->removeAnimationData("Hand Pose");
|
||||
|
|
|
|||
|
|
@ -174,6 +174,7 @@ set(llcommon_HEADER_FILES
|
|||
llfoldertype.h
|
||||
llformat.h
|
||||
llframetimer.h
|
||||
llhandle.h
|
||||
llhash.h
|
||||
llheartbeat.h
|
||||
llhttpstatuscodes.h
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@
|
|||
#include <boost/type_traits/is_convertible.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
|
||||
/**
|
||||
* Helper object for LLHandle. Don't instantiate these directly, used
|
||||
* exclusively by LLHandle.
|
||||
*/
|
||||
class LLTombStone : public LLRefCount
|
||||
{
|
||||
public:
|
||||
|
|
@ -42,15 +46,37 @@ private:
|
|||
mutable void* mTarget;
|
||||
};
|
||||
|
||||
// LLHandles are used to refer to objects whose lifetime you do not control or influence.
|
||||
// Calling get() on a handle will return a pointer to the referenced object or NULL,
|
||||
// if the object no longer exists. Note that during the lifetime of the returned pointer,
|
||||
// you are assuming that the object will not be deleted by any action you perform,
|
||||
// or any other thread, as normal when using pointers, so avoid using that pointer outside of
|
||||
// the local code block.
|
||||
//
|
||||
// https://wiki.lindenlab.com/mediawiki/index.php?title=LLHandle&oldid=79669
|
||||
|
||||
/**
|
||||
* LLHandles are used to refer to objects whose lifetime you do not control or influence.
|
||||
* Calling get() on a handle will return a pointer to the referenced object or NULL,
|
||||
* if the object no longer exists. Note that during the lifetime of the returned pointer,
|
||||
* you are assuming that the object will not be deleted by any action you perform,
|
||||
* or any other thread, as normal when using pointers, so avoid using that pointer outside of
|
||||
* the local code block.
|
||||
*
|
||||
* https://wiki.lindenlab.com/mediawiki/index.php?title=LLHandle&oldid=79669
|
||||
*
|
||||
* The implementation is like some "weak pointer" implementations. When we
|
||||
* can't control the lifespan of the referenced object of interest, we can
|
||||
* still instantiate a proxy object whose lifespan we DO control, and store in
|
||||
* the proxy object a dumb pointer to the actual target. Then we just have to
|
||||
* ensure that on destruction of the target object, the proxy's dumb pointer
|
||||
* is set NULL.
|
||||
*
|
||||
* LLTombStone is our proxy object. LLHandle contains an LLPointer to the
|
||||
* LLTombStone, so every copy of an LLHandle increments the LLTombStone's ref
|
||||
* count as usual.
|
||||
*
|
||||
* One copy of the LLHandle, specifically the LLRootHandle, must be stored in
|
||||
* the referenced object. Destroying the LLRootHandle is what NULLs the
|
||||
* proxy's target pointer.
|
||||
*
|
||||
* Minor optimization: we want LLHandle's mTombStone to always be a valid
|
||||
* LLPointer, saving some conditionals in dereferencing. That's the
|
||||
* getDefaultTombStone() mechanism. The default LLTombStone object's target
|
||||
* pointer is always NULL, so it's semantically identical to allowing
|
||||
* mTombStone to be invalid.
|
||||
*/
|
||||
template <typename T>
|
||||
class LLHandle
|
||||
{
|
||||
|
|
@ -108,6 +134,14 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* LLRootHandle isa LLHandle which must be stored in the referenced object.
|
||||
* You can either store it directly and explicitly bind(this), or derive from
|
||||
* LLHandleProvider (q.v.) which automates that for you. The essential point
|
||||
* is that destroying the LLRootHandle (as a consequence of destroying the
|
||||
* referenced object) calls unbind(), setting the LLTombStone's target pointer
|
||||
* NULL.
|
||||
*/
|
||||
template <typename T>
|
||||
class LLRootHandle : public LLHandle<T>
|
||||
{
|
||||
|
|
@ -144,8 +178,10 @@ private:
|
|||
LLRootHandle(const LLRootHandle& other) {};
|
||||
};
|
||||
|
||||
// Use this as a mixin for simple classes that need handles and when you don't
|
||||
// want handles at multiple points of the inheritance hierarchy
|
||||
/**
|
||||
* Use this as a mixin for simple classes that need handles and when you don't
|
||||
* want handles at multiple points of the inheritance hierarchy
|
||||
*/
|
||||
template <typename T>
|
||||
class LLHandleProvider
|
||||
{
|
||||
|
|
@ -40,7 +40,6 @@
|
|||
S32 LLPerfBlock::sStatsFlags = LLPerfBlock::LLSTATS_NO_OPTIONAL_STATS; // Control what is being recorded
|
||||
LLPerfBlock::stat_map_t LLPerfBlock::sStatMap; // Map full path string to LLStatTime objects, tracks all active objects
|
||||
std::string LLPerfBlock::sCurrentStatPath = ""; // Something like "/total_time/physics/physics step"
|
||||
LLStat::stat_map_t LLStat::sStatList;
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Live config file to trigger stats logging
|
||||
|
|
@ -771,13 +770,19 @@ void LLStat::init()
|
|||
|
||||
if (!mName.empty())
|
||||
{
|
||||
stat_map_t::iterator iter = sStatList.find(mName);
|
||||
if (iter != sStatList.end())
|
||||
stat_map_t::iterator iter = getStatList().find(mName);
|
||||
if (iter != getStatList().end())
|
||||
llwarns << "LLStat with duplicate name: " << mName << llendl;
|
||||
sStatList.insert(std::make_pair(mName, this));
|
||||
getStatList().insert(std::make_pair(mName, this));
|
||||
}
|
||||
}
|
||||
|
||||
LLStat::stat_map_t& LLStat::getStatList()
|
||||
{
|
||||
static LLStat::stat_map_t stat_list;
|
||||
return stat_list;
|
||||
}
|
||||
|
||||
LLStat::LLStat(const U32 num_bins, const BOOL use_frame_timer)
|
||||
: mUseFrameTimer(use_frame_timer),
|
||||
mNumBins(num_bins)
|
||||
|
|
@ -803,10 +808,10 @@ LLStat::~LLStat()
|
|||
if (!mName.empty())
|
||||
{
|
||||
// handle multiple entries with the same name
|
||||
stat_map_t::iterator iter = sStatList.find(mName);
|
||||
while (iter != sStatList.end() && iter->second != this)
|
||||
stat_map_t::iterator iter = getStatList().find(mName);
|
||||
while (iter != getStatList().end() && iter->second != this)
|
||||
++iter;
|
||||
sStatList.erase(iter);
|
||||
getStatList().erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -263,9 +263,9 @@ class LL_COMMON_API LLStat
|
|||
{
|
||||
private:
|
||||
typedef std::multimap<std::string, LLStat*> stat_map_t;
|
||||
static stat_map_t sStatList;
|
||||
|
||||
void init();
|
||||
static stat_map_t& getStatList();
|
||||
|
||||
public:
|
||||
LLStat(U32 num_bins = 32, BOOL use_frame_timer = FALSE);
|
||||
|
|
@ -342,8 +342,8 @@ public:
|
|||
static LLStat* getStat(const std::string& name)
|
||||
{
|
||||
// return the first stat that matches 'name'
|
||||
stat_map_t::iterator iter = sStatList.find(name);
|
||||
if (iter != sStatList.end())
|
||||
stat_map_t::iterator iter = getStatList().find(name);
|
||||
if (iter != getStatList().end())
|
||||
return iter->second;
|
||||
else
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -292,11 +292,16 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components)
|
|||
++sRawImageCount;
|
||||
}
|
||||
|
||||
LLImageRaw::LLImageRaw(U8 *data, U16 width, U16 height, S8 components)
|
||||
LLImageRaw::LLImageRaw(U8 *data, U16 width, U16 height, S8 components, bool no_copy)
|
||||
: LLImageBase()
|
||||
{
|
||||
mMemType = LLMemType::MTYPE_IMAGERAW;
|
||||
if(allocateDataSize(width, height, components))
|
||||
|
||||
if(no_copy)
|
||||
{
|
||||
setDataAndSize(data, width, height, components);
|
||||
}
|
||||
else if(allocateDataSize(width, height, components))
|
||||
{
|
||||
memcpy(getData(), data, width*height*components);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ protected:
|
|||
public:
|
||||
LLImageRaw();
|
||||
LLImageRaw(U16 width, U16 height, S8 components);
|
||||
LLImageRaw(U8 *data, U16 width, U16 height, S8 components);
|
||||
LLImageRaw(U8 *data, U16 width, U16 height, S8 components, bool no_copy = false);
|
||||
// Construct using createFromFile (used by tools)
|
||||
//LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only = false);
|
||||
|
||||
|
|
|
|||
|
|
@ -193,8 +193,6 @@ void LLParcel::init(const LLUUID &owner_id,
|
|||
mMediaWidth = 0;
|
||||
mMediaHeight = 0;
|
||||
setMediaCurrentURL(LLStringUtil::null);
|
||||
mMediaURLFilterEnable = FALSE;
|
||||
mMediaURLFilterList = LLSD::emptyArray();
|
||||
mMediaAllowNavigate = TRUE;
|
||||
mMediaURLTimeout = 0.0f;
|
||||
mMediaPreventCameraZoom = FALSE;
|
||||
|
|
@ -336,38 +334,6 @@ void LLParcel::setMediaURLResetTimer(F32 time)
|
|||
mMediaResetTimer.setTimerExpirySec(time);
|
||||
}
|
||||
|
||||
void LLParcel::setMediaURLFilterList(LLSD list)
|
||||
{
|
||||
// sanity check LLSD
|
||||
// must be array of strings
|
||||
if (!list.isArray())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (S32 i = 0; i < list.size(); i++)
|
||||
{
|
||||
if (!list[i].isString())
|
||||
return;
|
||||
}
|
||||
|
||||
// can't be too big
|
||||
const S32 MAX_SIZE = 50;
|
||||
if (list.size() > MAX_SIZE)
|
||||
{
|
||||
LLSD new_list = LLSD::emptyArray();
|
||||
|
||||
for (S32 i = 0; i < llmin(list.size(), MAX_SIZE); i++)
|
||||
{
|
||||
new_list.append(list[i]);
|
||||
}
|
||||
|
||||
list = new_list;
|
||||
}
|
||||
|
||||
mMediaURLFilterList = list;
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLParcel::setLocalID(S32 local_id)
|
||||
{
|
||||
|
|
@ -622,34 +588,6 @@ BOOL LLParcel::importAccessEntry(std::istream& input_stream, LLAccessEntry* entr
|
|||
return input_stream.good();
|
||||
}
|
||||
|
||||
BOOL LLParcel::importMediaURLFilter(std::istream& input_stream, std::string& url)
|
||||
{
|
||||
skip_to_end_of_next_keyword("{", input_stream);
|
||||
|
||||
while(input_stream.good())
|
||||
{
|
||||
skip_comments_and_emptyspace(input_stream);
|
||||
std::string line, keyword, value;
|
||||
get_line(line, input_stream, MAX_STRING);
|
||||
get_keyword_and_value(keyword, value, line);
|
||||
|
||||
if ("}" == keyword)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if ("url" == keyword)
|
||||
{
|
||||
url = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Unknown keyword in parcel media url filter section: <"
|
||||
<< keyword << ">" << llendl;
|
||||
}
|
||||
}
|
||||
return input_stream.good();
|
||||
}
|
||||
|
||||
// Assumes we are in a block "ParcelData"
|
||||
void LLParcel::packMessage(LLMessageSystem* msg)
|
||||
{
|
||||
|
|
@ -696,8 +634,6 @@ void LLParcel::packMessage(LLSD& msg)
|
|||
msg["media_allow_navigate"] = getMediaAllowNavigate();
|
||||
msg["media_prevent_camera_zoom"] = getMediaPreventCameraZoom();
|
||||
msg["media_url_timeout"] = getMediaURLTimeout();
|
||||
msg["media_url_filter_enable"] = getMediaURLFilterEnable();
|
||||
msg["media_url_filter_list"] = getMediaURLFilterList();
|
||||
msg["group_id"] = getGroupID();
|
||||
msg["pass_price"] = mPassPrice;
|
||||
msg["pass_hours"] = mPassHours;
|
||||
|
|
@ -789,7 +725,6 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
|
|||
msg->getString("MediaLinkSharing", "MediaCurrentURL", buffer);
|
||||
setMediaCurrentURL(buffer);
|
||||
msg->getU8 ( "MediaLinkSharing", "MediaAllowNavigate", mMediaAllowNavigate );
|
||||
msg->getU8 ( "MediaLinkSharing", "MediaURLFilterEnable", mMediaURLFilterEnable );
|
||||
msg->getU8 ( "MediaLinkSharing", "MediaPreventCameraZoom", mMediaPreventCameraZoom );
|
||||
msg->getF32( "MediaLinkSharing", "MediaURLTimeout", mMediaURLTimeout);
|
||||
}
|
||||
|
|
@ -1250,8 +1185,6 @@ void LLParcel::clearParcel()
|
|||
mMediaWidth = 0;
|
||||
mMediaHeight = 0;
|
||||
setMediaCurrentURL(LLStringUtil::null);
|
||||
setMediaURLFilterList(LLSD::emptyArray());
|
||||
setMediaURLFilterEnable(FALSE);
|
||||
setMediaAllowNavigate(TRUE);
|
||||
setMediaPreventCameraZoom(FALSE);
|
||||
setMediaURLTimeout(0.0f);
|
||||
|
|
|
|||
|
|
@ -247,8 +247,6 @@ public:
|
|||
void setMediaWidth(S32 width);
|
||||
void setMediaHeight(S32 height);
|
||||
void setMediaCurrentURL(const std::string& url);
|
||||
void setMediaURLFilterEnable(U8 enable) { mMediaURLFilterEnable = enable; }
|
||||
void setMediaURLFilterList(LLSD list);
|
||||
void setMediaAllowNavigate(U8 enable) { mMediaAllowNavigate = enable; }
|
||||
void setMediaURLTimeout(F32 timeout) { mMediaURLTimeout = timeout; }
|
||||
void setMediaPreventCameraZoom(U8 enable) { mMediaPreventCameraZoom = enable; }
|
||||
|
|
@ -310,7 +308,6 @@ public:
|
|||
|
||||
// BOOL importStream(std::istream& input_stream);
|
||||
BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry);
|
||||
BOOL importMediaURLFilter(std::istream& input_stream, std::string& url);
|
||||
// BOOL exportStream(std::ostream& output_stream);
|
||||
|
||||
void packMessage(LLMessageSystem* msg);
|
||||
|
|
@ -354,8 +351,6 @@ public:
|
|||
U8 getMediaAutoScale() const { return mMediaAutoScale; }
|
||||
U8 getMediaLoop() const { return mMediaLoop; }
|
||||
const std::string& getMediaCurrentURL() const { return mMediaCurrentURL; }
|
||||
U8 getMediaURLFilterEnable() const { return mMediaURLFilterEnable; }
|
||||
LLSD getMediaURLFilterList() const { return mMediaURLFilterList; }
|
||||
U8 getMediaAllowNavigate() const { return mMediaAllowNavigate; }
|
||||
F32 getMediaURLTimeout() const { return mMediaURLTimeout; }
|
||||
U8 getMediaPreventCameraZoom() const { return mMediaPreventCameraZoom; }
|
||||
|
|
@ -651,8 +646,6 @@ protected:
|
|||
U8 mMediaLoop;
|
||||
std::string mMediaCurrentURL;
|
||||
LLUUID mMediaID;
|
||||
U8 mMediaURLFilterEnable;
|
||||
LLSD mMediaURLFilterList;
|
||||
U8 mMediaAllowNavigate;
|
||||
U8 mMediaPreventCameraZoom;
|
||||
F32 mMediaURLTimeout;
|
||||
|
|
|
|||
|
|
@ -1179,7 +1179,7 @@ LLKDUDecodeState::LLKDUDecodeState(kdu_tile tile, kdu_byte *buf, S32 row_gap)
|
|||
llassert(mDims == comp_dims); // Safety check; the caller has ensured this
|
||||
}
|
||||
bool use_shorts = (mComps[c].get_bit_depth(true) <= 16);
|
||||
mLines[c].pre_create(&mAllocator,mDims.size.x,mReversible[c],use_shorts);
|
||||
mLines[c].pre_create(&mAllocator,mDims.size.x,mReversible[c],use_shorts,0,0);
|
||||
if (res.which() == 0) // No DWT levels used
|
||||
{
|
||||
mEngines[c] = kdu_decoder(res.access_subband(LL_BAND),&mAllocator,use_shorts);
|
||||
|
|
@ -1223,7 +1223,7 @@ separation between consecutive rows in the real buffer. */
|
|||
{
|
||||
for (c = 0; c < mNumComponents; c++)
|
||||
{
|
||||
mEngines[c].pull(mLines[c],true);
|
||||
mEngines[c].pull(mLines[c]);
|
||||
}
|
||||
if ((mNumComponents >= 3) && mUseYCC)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
//
|
||||
// KDU core header files
|
||||
//
|
||||
#define KDU_NO_THREADS
|
||||
#include "kdu_elementary.h"
|
||||
#include "kdu_messaging.h"
|
||||
#include "kdu_params.h"
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#define LL_LLKDUMEM_H
|
||||
|
||||
// Support classes for reading and writing from memory buffers in KDU
|
||||
#define KDU_NO_THREADS
|
||||
#include "kdu_image.h"
|
||||
#include "kdu_elementary.h"
|
||||
#include "kdu_messaging.h"
|
||||
|
|
|
|||
|
|
@ -127,7 +127,6 @@ kdu_subband kdu_resolution::access_subband(int ) { kdu_subband a; return a; }
|
|||
void kdu_resolution::get_dims(kdu_dims& ) { }
|
||||
int kdu_resolution::which() { return 0; }
|
||||
int kdu_resolution::get_valid_band_indices(int &) { return 1; }
|
||||
kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*) { }
|
||||
kdu_synthesis::kdu_synthesis(kdu_resolution, kdu_sample_allocator*, bool, float, kdu_thread_env*, kdu_thread_queue*) { }
|
||||
kdu_params::kdu_params(const char*, bool, bool, bool, bool, bool) { }
|
||||
kdu_params::~kdu_params() { }
|
||||
|
|
@ -153,7 +152,6 @@ void kdu_codestream::destroy() { }
|
|||
void kdu_codestream::collect_timing_stats(int ) { }
|
||||
void kdu_codestream::set_max_bytes(kdu_long, bool, bool ) { }
|
||||
void kdu_codestream::get_valid_tiles(kdu_dims& ) { }
|
||||
void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long ) { }
|
||||
void kdu_codestream::create(kdu_compressed_source*, kdu_thread_env*) { }
|
||||
void kdu_codestream::apply_input_restrictions( int, int, int, int, kdu_dims*, kdu_component_access_mode ) { }
|
||||
void kdu_codestream::get_subsampling(int , kdu_coords&, bool ) { }
|
||||
|
|
@ -175,7 +173,7 @@ kdu_block* kdu_subband::open_block(kdu_coords, int*, kdu_thread_env*) { return N
|
|||
bool kdu_codestream_comment::put_text(const char*) { return false; }
|
||||
void kdu_customize_warnings(kdu_message*) { }
|
||||
void kdu_customize_errors(kdu_message*) { }
|
||||
void kdu_convert_ycc_to_rgb(kdu_line_buf&, kdu_line_buf&, kdu_line_buf&, int) { }
|
||||
|
||||
kdu_long kdu_multi_analysis::create(kdu_codestream, kdu_tile, bool, kdu_roi_image*, bool, int, kdu_thread_env*, kdu_thread_queue*, bool ) { kdu_long a = 0; return a; }
|
||||
siz_params::siz_params() : kdu_params(NULL, false, false, false, false, false) { }
|
||||
void siz_params::finalize(bool ) { }
|
||||
|
|
@ -184,6 +182,21 @@ int siz_params::write_marker_segment(kdu_output*, kdu_params*, int) { return 0;
|
|||
bool siz_params::check_marker_segment(kdu_uint16, int, kdu_byte a[], int&) { return false; }
|
||||
bool siz_params::read_marker_segment(kdu_uint16, int, kdu_byte a[], int) { return false; }
|
||||
|
||||
#ifdef LL_LINUX
|
||||
// Linux use the old pre KDU v7.0.0
|
||||
// *TODO: Supress this legacy stubbs once Linux migrates to v7.0.0
|
||||
kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*) { }
|
||||
void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long ) { }
|
||||
void kdu_convert_ycc_to_rgb(kdu_line_buf&, kdu_line_buf&, kdu_line_buf&, int) { }
|
||||
#else
|
||||
kdu_decoder::kdu_decoder(kdu_subband , kdu_sample_allocator*, bool , float, int, kdu_thread_env*, kdu_thread_queue*, int) { }
|
||||
void kdu_codestream::create(siz_params*, kdu_compressed_target*, kdu_dims*, int, kdu_long, kdu_thread_env* ) { }
|
||||
void (*kdu_convert_ycc_to_rgb_rev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);
|
||||
void (*kdu_convert_ycc_to_rgb_irrev16)(kdu_int16*,kdu_int16*,kdu_int16*,int);
|
||||
void (*kdu_convert_ycc_to_rgb_rev32)(kdu_int32*,kdu_int32*,kdu_int32*,int);
|
||||
void (*kdu_convert_ycc_to_rgb_irrev32)(float*,float*,float*,int);
|
||||
#endif
|
||||
|
||||
// -------------------------------------------------------------------------------------------
|
||||
// TUT
|
||||
// -------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@ namespace LLAvatarNameCache
|
|||
/// Time when unrefreshed cached names were checked last
|
||||
static F64 sLastExpireCheck;
|
||||
|
||||
/// Time-to-live for a temp cache entry.
|
||||
const F64 TEMP_CACHE_ENTRY_LIFETIME = 60.0;
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
// Internal methods
|
||||
//-----------------------------------------------------------------------
|
||||
|
|
@ -274,7 +277,7 @@ void LLAvatarNameCache::handleAgentError(const LLUUID& agent_id)
|
|||
{
|
||||
// there is no existing cache entry, so make a temporary name from legacy
|
||||
LL_WARNS("AvNameCache") << "LLAvatarNameCache get legacy for agent "
|
||||
<< agent_id << LL_ENDL;
|
||||
<< agent_id << LL_ENDL;
|
||||
gCacheName->get(agent_id, false, // legacy compatibility
|
||||
boost::bind(&LLAvatarNameCache::legacyNameCallback,
|
||||
_1, _2, _3));
|
||||
|
|
@ -287,13 +290,14 @@ void LLAvatarNameCache::handleAgentError(const LLUUID& agent_id)
|
|||
// Clear this agent from the pending list
|
||||
LLAvatarNameCache::sPendingQueue.erase(agent_id);
|
||||
|
||||
const LLAvatarName& av_name = existing->second;
|
||||
LLAvatarName& av_name = existing->second;
|
||||
LL_DEBUGS("AvNameCache") << "LLAvatarNameCache use cache for agent "
|
||||
<< agent_id
|
||||
<< "user '" << av_name.mUsername << "' "
|
||||
<< "display '" << av_name.mDisplayName << "' "
|
||||
<< "expires in " << av_name.mExpires - LLFrameTimer::getTotalSeconds() << " seconds"
|
||||
<< LL_ENDL;
|
||||
av_name.mExpires = LLFrameTimer::getTotalSeconds() + TEMP_CACHE_ENTRY_LIFETIME; // reset expiry time so we don't constantly rerequest.
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -402,10 +406,12 @@ void LLAvatarNameCache::legacyNameCallback(const LLUUID& agent_id,
|
|||
<< LL_ENDL;
|
||||
buildLegacyName(full_name, &av_name);
|
||||
|
||||
// Don't add to cache, the data already exists in the legacy name system
|
||||
// cache and we don't want or need duplicate storage, because keeping the
|
||||
// two copies in sync is complex.
|
||||
processName(agent_id, av_name, false);
|
||||
// Add to cache, because if we don't we'll keep rerequesting the
|
||||
// same record forever. buildLegacyName should always guarantee
|
||||
// that these records expire reasonably soon
|
||||
// (in TEMP_CACHE_ENTRY_LIFETIME seconds), so if the failure was due
|
||||
// to something temporary we will eventually request and get the right data.
|
||||
processName(agent_id, av_name, true);
|
||||
}
|
||||
|
||||
void LLAvatarNameCache::requestNamesViaLegacy()
|
||||
|
|
@ -583,7 +589,7 @@ void LLAvatarNameCache::buildLegacyName(const std::string& full_name,
|
|||
av_name->mDisplayName = full_name;
|
||||
av_name->mIsDisplayNameDefault = true;
|
||||
av_name->mIsTemporaryName = true;
|
||||
av_name->mExpires = F64_MAX; // not used because these are not cached
|
||||
av_name->mExpires = LLFrameTimer::getTotalSeconds() + TEMP_CACHE_ENTRY_LIFETIME;
|
||||
LL_DEBUGS("AvNameCache") << "LLAvatarNameCache::buildLegacyName "
|
||||
<< full_name
|
||||
<< LL_ENDL;
|
||||
|
|
@ -651,8 +657,10 @@ void LLAvatarNameCache::fireSignal(const LLUUID& agent_id,
|
|||
signal(agent_id, av_name);
|
||||
}
|
||||
|
||||
void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
||||
LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
||||
{
|
||||
callback_connection_t connection;
|
||||
|
||||
if (sRunning)
|
||||
{
|
||||
// ...only do immediate lookups when cache is running
|
||||
|
|
@ -668,7 +676,7 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
|||
{
|
||||
// ...name already exists in cache, fire callback now
|
||||
fireSignal(agent_id, slot, av_name);
|
||||
return;
|
||||
return connection;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -681,7 +689,7 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
|||
LLAvatarName av_name;
|
||||
buildLegacyName(full_name, &av_name);
|
||||
fireSignal(agent_id, slot, av_name);
|
||||
return;
|
||||
return connection;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -698,15 +706,17 @@ void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
|||
{
|
||||
// ...new callback for this id
|
||||
callback_signal_t* signal = new callback_signal_t();
|
||||
signal->connect(slot);
|
||||
connection = signal->connect(slot);
|
||||
sSignalMap[agent_id] = signal;
|
||||
}
|
||||
else
|
||||
{
|
||||
// ...existing callback, bind additional slot
|
||||
callback_signal_t* signal = sig_it->second;
|
||||
signal->connect(slot);
|
||||
connection = signal->connect(slot);
|
||||
}
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -71,10 +71,11 @@ namespace LLAvatarNameCache
|
|||
void (const LLUUID& agent_id, const LLAvatarName& av_name)>
|
||||
callback_signal_t;
|
||||
typedef callback_signal_t::slot_type callback_slot_t;
|
||||
typedef boost::signals2::connection callback_connection_t;
|
||||
|
||||
// Fetches name information and calls callback.
|
||||
// If name information is in cache, callback will be called immediately.
|
||||
void get(const LLUUID& agent_id, callback_slot_t slot);
|
||||
callback_connection_t get(const LLUUID& agent_id, callback_slot_t slot);
|
||||
|
||||
// Allow display names to be explicitly disabled for testing.
|
||||
void setUseDisplayNames(bool use);
|
||||
|
|
|
|||
|
|
@ -938,8 +938,8 @@ bool LLCurlThread::CurlRequest::processRequest()
|
|||
|
||||
if(!completed)
|
||||
{
|
||||
setPriority(LLQueuedThread::PRIORITY_LOW) ;
|
||||
}
|
||||
setPriority(LLQueuedThread::PRIORITY_LOW) ;
|
||||
}
|
||||
}
|
||||
|
||||
return completed ;
|
||||
|
|
@ -949,7 +949,7 @@ void LLCurlThread::CurlRequest::finishRequest(bool completed)
|
|||
{
|
||||
if(mMulti->isDead())
|
||||
{
|
||||
mCurlThread->deleteMulti(mMulti) ;
|
||||
mCurlThread->deleteMulti(mMulti) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -993,6 +993,7 @@ void LLCurlThread::killMulti(LLCurl::Multi* multi)
|
|||
return ;
|
||||
}
|
||||
|
||||
|
||||
multi->markDead() ;
|
||||
}
|
||||
|
||||
|
|
@ -1098,7 +1099,9 @@ void LLCurlRequest::get(const std::string& url, LLCurl::ResponderPtr responder)
|
|||
{
|
||||
getByteRange(url, headers_t(), 0, -1, responder);
|
||||
}
|
||||
|
||||
|
||||
// Note: (length==0) is interpreted as "the rest of the file", i.e. the whole file if (offset==0) or
|
||||
// the remainder of the file if not.
|
||||
bool LLCurlRequest::getByteRange(const std::string& url,
|
||||
const headers_t& headers,
|
||||
S32 offset, S32 length,
|
||||
|
|
@ -1116,6 +1119,11 @@ bool LLCurlRequest::getByteRange(const std::string& url,
|
|||
std::string range = llformat("Range: bytes=%d-%d", offset,offset+length-1);
|
||||
easy->slist_append(range.c_str());
|
||||
}
|
||||
else if (offset > 0)
|
||||
{
|
||||
std::string range = llformat("Range: bytes=%d-", offset);
|
||||
easy->slist_append(range.c_str());
|
||||
}
|
||||
easy->setHeaders();
|
||||
bool res = addEasy(easy);
|
||||
return res;
|
||||
|
|
@ -1241,6 +1249,208 @@ S32 LLCurlRequest::getQueued()
|
|||
return queued;
|
||||
}
|
||||
|
||||
LLCurlTextureRequest::LLCurlTextureRequest(S32 concurrency) :
|
||||
LLCurlRequest(),
|
||||
mConcurrency(concurrency),
|
||||
mInQueue(0),
|
||||
mMutex(NULL),
|
||||
mHandleCounter(1),
|
||||
mTotalIssuedRequests(0),
|
||||
mTotalReceivedBits(0)
|
||||
{
|
||||
mGlobalTimer.reset();
|
||||
}
|
||||
|
||||
LLCurlTextureRequest::~LLCurlTextureRequest()
|
||||
{
|
||||
mRequestMap.clear();
|
||||
|
||||
for(req_queue_t::iterator iter = mCachedRequests.begin(); iter != mCachedRequests.end(); ++iter)
|
||||
{
|
||||
delete *iter;
|
||||
}
|
||||
mCachedRequests.clear();
|
||||
}
|
||||
|
||||
//return 0: success
|
||||
// > 0: cached handle
|
||||
U32 LLCurlTextureRequest::getByteRange(const std::string& url,
|
||||
const headers_t& headers,
|
||||
S32 offset, S32 length, U32 pri,
|
||||
LLCurl::ResponderPtr responder, F32 delay_time)
|
||||
{
|
||||
U32 ret_val = 0;
|
||||
bool success = false;
|
||||
|
||||
if(mInQueue < mConcurrency && delay_time < 0.f)
|
||||
{
|
||||
success = LLCurlRequest::getByteRange(url, headers, offset, length, responder);
|
||||
}
|
||||
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
if(success)
|
||||
{
|
||||
mInQueue++;
|
||||
mTotalIssuedRequests++;
|
||||
}
|
||||
else
|
||||
{
|
||||
request_t* request = new request_t(mHandleCounter, url, headers, offset, length, pri, responder);
|
||||
if(delay_time > 0.f)
|
||||
{
|
||||
request->mStartTime = mGlobalTimer.getElapsedTimeF32() + delay_time;
|
||||
}
|
||||
|
||||
mCachedRequests.insert(request);
|
||||
mRequestMap[mHandleCounter] = request;
|
||||
ret_val = mHandleCounter;
|
||||
mHandleCounter++;
|
||||
|
||||
if(!mHandleCounter)
|
||||
{
|
||||
mHandleCounter = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
void LLCurlTextureRequest::completeRequest(S32 received_bytes)
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
llassert_always(mInQueue > 0);
|
||||
|
||||
mInQueue--;
|
||||
mTotalReceivedBits += received_bytes * 8;
|
||||
}
|
||||
|
||||
void LLCurlTextureRequest::nextRequests()
|
||||
{
|
||||
if(mCachedRequests.empty() || mInQueue >= mConcurrency)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
F32 cur_time = mGlobalTimer.getElapsedTimeF32();
|
||||
|
||||
req_queue_t::iterator iter;
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
iter = mCachedRequests.begin();
|
||||
}
|
||||
while(1)
|
||||
{
|
||||
request_t* request = *iter;
|
||||
if(request->mStartTime < cur_time)
|
||||
{
|
||||
if(!LLCurlRequest::getByteRange(request->mUrl, request->mHeaders, request->mOffset, request->mLength, request->mResponder))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
LLMutexLock lock(&mMutex);
|
||||
++iter;
|
||||
mInQueue++;
|
||||
mTotalIssuedRequests++;
|
||||
mCachedRequests.erase(request);
|
||||
mRequestMap.erase(request->mHandle);
|
||||
delete request;
|
||||
|
||||
if(iter == mCachedRequests.end() || mInQueue >= mConcurrency)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
++iter;
|
||||
if(iter == mCachedRequests.end() || mInQueue >= mConcurrency)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void LLCurlTextureRequest::updatePriority(U32 handle, U32 pri)
|
||||
{
|
||||
if(!handle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
std::map<S32, request_t*>::iterator iter = mRequestMap.find(handle);
|
||||
if(iter != mRequestMap.end())
|
||||
{
|
||||
request_t* req = iter->second;
|
||||
|
||||
if(req->mPriority != pri)
|
||||
{
|
||||
mCachedRequests.erase(req);
|
||||
req->mPriority = pri;
|
||||
mCachedRequests.insert(req);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLCurlTextureRequest::removeRequest(U32 handle)
|
||||
{
|
||||
if(!handle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
std::map<S32, request_t*>::iterator iter = mRequestMap.find(handle);
|
||||
if(iter != mRequestMap.end())
|
||||
{
|
||||
request_t* req = iter->second;
|
||||
mRequestMap.erase(iter);
|
||||
mCachedRequests.erase(req);
|
||||
delete req;
|
||||
}
|
||||
}
|
||||
|
||||
bool LLCurlTextureRequest::isWaiting(U32 handle)
|
||||
{
|
||||
if(!handle)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LLMutexLock lock(&mMutex);
|
||||
return mRequestMap.find(handle) != mRequestMap.end();
|
||||
}
|
||||
|
||||
U32 LLCurlTextureRequest::getTotalReceivedBits()
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
|
||||
U32 bits = mTotalReceivedBits;
|
||||
mTotalReceivedBits = 0;
|
||||
return bits;
|
||||
}
|
||||
|
||||
U32 LLCurlTextureRequest::getTotalIssuedRequests()
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
return mTotalIssuedRequests;
|
||||
}
|
||||
|
||||
S32 LLCurlTextureRequest::getNumRequests()
|
||||
{
|
||||
LLMutexLock lock(&mMutex);
|
||||
return mInQueue;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// For generating one easy request
|
||||
// associated with a single multi request
|
||||
|
|
|
|||
|
|
@ -414,6 +414,71 @@ private:
|
|||
BOOL mProcessing;
|
||||
};
|
||||
|
||||
//for texture fetch only
|
||||
class LLCurlTextureRequest : public LLCurlRequest
|
||||
{
|
||||
public:
|
||||
LLCurlTextureRequest(S32 concurrency);
|
||||
~LLCurlTextureRequest();
|
||||
|
||||
U32 getByteRange(const std::string& url, const headers_t& headers, S32 offset, S32 length, U32 pri, LLCurl::ResponderPtr responder, F32 delay_time = -1.f);
|
||||
void nextRequests();
|
||||
void completeRequest(S32 received_bytes);
|
||||
|
||||
void updatePriority(U32 handle, U32 pri);
|
||||
void removeRequest(U32 handle);
|
||||
|
||||
U32 getTotalReceivedBits();
|
||||
U32 getTotalIssuedRequests();
|
||||
S32 getNumRequests();
|
||||
bool isWaiting(U32 handle);
|
||||
|
||||
private:
|
||||
LLMutex mMutex;
|
||||
S32 mConcurrency;
|
||||
S32 mInQueue; //request currently in queue.
|
||||
U32 mHandleCounter;
|
||||
U32 mTotalIssuedRequests;
|
||||
U32 mTotalReceivedBits;
|
||||
|
||||
typedef struct _request_t
|
||||
{
|
||||
_request_t(U32 handle, const std::string& url, const headers_t& headers, S32 offset, S32 length, U32 pri, LLCurl::ResponderPtr responder) :
|
||||
mHandle(handle), mUrl(url), mHeaders(headers), mOffset(offset), mLength(length), mPriority(pri), mResponder(responder), mStartTime(0.f)
|
||||
{}
|
||||
|
||||
U32 mHandle;
|
||||
std::string mUrl;
|
||||
LLCurlRequest::headers_t mHeaders;
|
||||
S32 mOffset;
|
||||
S32 mLength;
|
||||
LLCurl::ResponderPtr mResponder;
|
||||
U32 mPriority;
|
||||
F32 mStartTime; //start time to issue this request
|
||||
} request_t;
|
||||
|
||||
struct request_compare
|
||||
{
|
||||
bool operator()(const request_t* lhs, const request_t* rhs) const
|
||||
{
|
||||
if(lhs->mPriority != rhs->mPriority)
|
||||
{
|
||||
return lhs->mPriority > rhs->mPriority; // higher priority in front of queue (set)
|
||||
}
|
||||
else
|
||||
{
|
||||
return (U32)lhs < (U32)rhs;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::set<request_t*, request_compare> req_queue_t;
|
||||
req_queue_t mCachedRequests;
|
||||
std::map<S32, request_t*> mRequestMap;
|
||||
|
||||
LLFrameTimer mGlobalTimer;
|
||||
};
|
||||
|
||||
class LLCurlEasyRequest
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -149,7 +149,8 @@ bool LLPrimitive::cleanupVolumeManager()
|
|||
LLPrimitive::LLPrimitive()
|
||||
: mTextureList(),
|
||||
mNumTEs(0),
|
||||
mMiscFlags(0)
|
||||
mMiscFlags(0),
|
||||
mNumBumpmapTEs(0)
|
||||
{
|
||||
mPrimitiveCode = 0;
|
||||
|
||||
|
|
@ -237,7 +238,10 @@ void LLPrimitive::setAllTETextures(const LLUUID &tex_id)
|
|||
//===============================================================
|
||||
void LLPrimitive::setTE(const U8 index, const LLTextureEntry& te)
|
||||
{
|
||||
mTextureList.copyTexture(index, te);
|
||||
if(mTextureList.copyTexture(index, te) != TEM_CHANGE_NONE && te.getBumpmap() > 0)
|
||||
{
|
||||
mNumBumpmapTEs++;
|
||||
}
|
||||
}
|
||||
|
||||
S32 LLPrimitive::setTETexture(const U8 index, const LLUUID &id)
|
||||
|
|
@ -316,6 +320,7 @@ S32 LLPrimitive::setTERotation(const U8 index, const F32 r)
|
|||
//===============================================================
|
||||
S32 LLPrimitive::setTEBumpShinyFullbright(const U8 index, const U8 bump)
|
||||
{
|
||||
updateNumBumpmap(index, bump);
|
||||
return mTextureList.setBumpShinyFullbright(index, bump);
|
||||
}
|
||||
|
||||
|
|
@ -326,11 +331,13 @@ S32 LLPrimitive::setTEMediaTexGen(const U8 index, const U8 media)
|
|||
|
||||
S32 LLPrimitive::setTEBumpmap(const U8 index, const U8 bump)
|
||||
{
|
||||
updateNumBumpmap(index, bump);
|
||||
return mTextureList.setBumpMap(index, bump);
|
||||
}
|
||||
|
||||
S32 LLPrimitive::setTEBumpShiny(const U8 index, const U8 bump_shiny)
|
||||
{
|
||||
updateNumBumpmap(index, bump_shiny);
|
||||
return mTextureList.setBumpShiny(index, bump_shiny);
|
||||
}
|
||||
|
||||
|
|
@ -1445,6 +1452,26 @@ void LLPrimitive::takeTextureList(LLPrimTextureList& other_list)
|
|||
mTextureList.take(other_list);
|
||||
}
|
||||
|
||||
void LLPrimitive::updateNumBumpmap(const U8 index, const U8 bump)
|
||||
{
|
||||
LLTextureEntry* te = getTE(index);
|
||||
if(!te)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
U8 old_bump = te->getBumpmap();
|
||||
if(old_bump > 0)
|
||||
{
|
||||
mNumBumpmapTEs--;
|
||||
}
|
||||
if((bump & TEM_BUMP_MASK) > 0)
|
||||
{
|
||||
mNumBumpmapTEs++;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
//============================================================================
|
||||
|
||||
// Moved from llselectmgr.cpp
|
||||
|
|
|
|||
|
|
@ -421,7 +421,8 @@ public:
|
|||
inline BOOL isAvatar() const;
|
||||
inline BOOL isSittingAvatar() const;
|
||||
inline BOOL isSittingAvatarOnGround() const;
|
||||
|
||||
inline bool hasBumpmap() const { return mNumBumpmapTEs > 0;}
|
||||
|
||||
void setFlags(U32 flags) { mMiscFlags = flags; }
|
||||
void addFlags(U32 flags) { mMiscFlags |= flags; }
|
||||
void removeFlags(U32 flags) { mMiscFlags &= ~flags; }
|
||||
|
|
@ -435,6 +436,9 @@ public:
|
|||
inline static BOOL isPrimitive(const LLPCode pcode);
|
||||
inline static BOOL isApp(const LLPCode pcode);
|
||||
|
||||
private:
|
||||
void updateNumBumpmap(const U8 index, const U8 bump);
|
||||
|
||||
protected:
|
||||
LLPCode mPrimitiveCode; // Primitive code
|
||||
LLVector3 mVelocity; // how fast are we moving?
|
||||
|
|
@ -444,6 +448,7 @@ protected:
|
|||
LLPrimTextureList mTextureList; // list of texture GUIDs, scales, offsets
|
||||
U8 mMaterial; // Material code
|
||||
U8 mNumTEs; // # of faces on the primitve
|
||||
U8 mNumBumpmapTEs; // number of bumpmap TEs.
|
||||
U32 mMiscFlags; // home for misc bools
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -993,7 +993,12 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
|
|||
}
|
||||
#endif
|
||||
|
||||
#if __MAC_OS_X_VERSION_MAX_ALLOWED <= 1070
|
||||
#include <OpenGL/gl.h>
|
||||
#else
|
||||
#include <AGL/gl.h>
|
||||
#endif
|
||||
|
||||
|
||||
#endif // LL_MESA / LL_WINDOWS / LL_DARWIN
|
||||
|
||||
|
|
|
|||
|
|
@ -478,7 +478,7 @@ bool LLImageGL::checkSize(S32 width, S32 height)
|
|||
return check_power_of_two(width) && check_power_of_two(height);
|
||||
}
|
||||
|
||||
void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)
|
||||
void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents, S32 discard_level)
|
||||
{
|
||||
if (width != mWidth || height != mHeight || ncomponents != mComponents)
|
||||
{
|
||||
|
|
@ -511,6 +511,11 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)
|
|||
width >>= 1;
|
||||
height >>= 1;
|
||||
}
|
||||
|
||||
if(discard_level > 0)
|
||||
{
|
||||
mMaxDiscardLevel = llmax(mMaxDiscardLevel, (S8)discard_level);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -860,14 +865,13 @@ BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
|
|||
llassert(mCurrentDiscardLevel >= 0);
|
||||
discard_level = mCurrentDiscardLevel;
|
||||
}
|
||||
discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel);
|
||||
|
||||
|
||||
// Actual image width/height = raw image width/height * 2^discard_level
|
||||
S32 w = raw_image->getWidth() << discard_level;
|
||||
S32 h = raw_image->getHeight() << discard_level;
|
||||
|
||||
// setSize may call destroyGLTexture if the size does not match
|
||||
setSize(w, h, raw_image->getComponents());
|
||||
setSize(w, h, raw_image->getComponents(), discard_level);
|
||||
|
||||
if( !mHasExplicitFormat )
|
||||
{
|
||||
|
|
@ -1264,8 +1268,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
|
|||
llassert(mCurrentDiscardLevel >= 0);
|
||||
discard_level = mCurrentDiscardLevel;
|
||||
}
|
||||
discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel);
|
||||
|
||||
|
||||
// Actual image width/height = raw image width/height * 2^discard_level
|
||||
S32 raw_w = imageraw->getWidth() ;
|
||||
S32 raw_h = imageraw->getHeight() ;
|
||||
|
|
@ -1273,7 +1276,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
|
|||
S32 h = raw_h << discard_level;
|
||||
|
||||
// setSize may call destroyGLTexture if the size does not match
|
||||
setSize(w, h, imageraw->getComponents());
|
||||
setSize(w, h, imageraw->getComponents(), discard_level);
|
||||
|
||||
if( !mHasExplicitFormat )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ protected:
|
|||
public:
|
||||
virtual void dump(); // debugging info to llinfos
|
||||
|
||||
void setSize(S32 width, S32 height, S32 ncomponents);
|
||||
void setSize(S32 width, S32 height, S32 ncomponents, S32 discard_level = -1);
|
||||
void setComponents(S32 ncomponents) { mComponents = (S8)ncomponents ;}
|
||||
void setAllowCompression(bool allow) { mAllowCompression = allow; }
|
||||
|
||||
|
|
|
|||
|
|
@ -155,7 +155,6 @@ set(llui_HEADER_FILES
|
|||
llflyoutbutton.h
|
||||
llfocusmgr.h
|
||||
llfunctorregistry.h
|
||||
llhandle.h
|
||||
llhelp.h
|
||||
lliconctrl.h
|
||||
llkeywords.h
|
||||
|
|
|
|||
|
|
@ -748,6 +748,10 @@ void LLFloater::closeFloater(bool app_quitting)
|
|||
dependee->setFocus(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
// STORM-1879: since this floater has focus, treat the closeFloater- call
|
||||
// like a click on the close-button, and close gear- and contextmenus
|
||||
LLMenuGL::sMenuContainer->hideMenus();
|
||||
}
|
||||
|
||||
dirtyRect();
|
||||
|
|
|
|||
|
|
@ -57,7 +57,9 @@ void LLToggleableMenu::handleVisibilityChange (BOOL curVisibilityIn)
|
|||
S32 x,y;
|
||||
LLUI::getMousePositionLocal(LLUI::getRootView(), &x, &y);
|
||||
|
||||
if (!curVisibilityIn && mButtonRect.pointInRect(x, y))
|
||||
// STORM-1879: also check MouseCapture to see if the button was really
|
||||
// clicked (otherwise the VisibilityChange was triggered via keyboard shortcut)
|
||||
if (!curVisibilityIn && mButtonRect.pointInRect(x, y) && gFocusMgr.getMouseCapture())
|
||||
{
|
||||
mClosedByButtonClick = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,9 +40,10 @@ bool LLAvatarNameCache::get(const LLUUID& agent_id, LLAvatarName *av_name)
|
|||
return false;
|
||||
}
|
||||
|
||||
void LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
||||
LLAvatarNameCache::callback_connection_t LLAvatarNameCache::get(const LLUUID& agent_id, callback_slot_t slot)
|
||||
{
|
||||
return;
|
||||
callback_connection_t connection;
|
||||
return connection;
|
||||
}
|
||||
|
||||
bool LLAvatarNameCache::useDisplayNames()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/**
|
||||
/**
|
||||
* @file lldir.h
|
||||
* @brief Definition of directory utilities class
|
||||
*
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
*/
|
||||
|
||||
#if LL_DARWIN
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
*/
|
||||
|
||||
#if !LL_DARWIN
|
||||
#error This header must not be included when compiling for any target other than Mac OS. Consider including lldir.h instead.
|
||||
|
|
|
|||
|
|
@ -2809,42 +2809,48 @@ const char* cursorIDToName(int id)
|
|||
{
|
||||
switch (id)
|
||||
{
|
||||
case UI_CURSOR_ARROW: return "UI_CURSOR_ARROW";
|
||||
case UI_CURSOR_WAIT: return "UI_CURSOR_WAIT";
|
||||
case UI_CURSOR_HAND: return "UI_CURSOR_HAND";
|
||||
case UI_CURSOR_IBEAM: return "UI_CURSOR_IBEAM";
|
||||
case UI_CURSOR_CROSS: return "UI_CURSOR_CROSS";
|
||||
case UI_CURSOR_SIZENWSE: return "UI_CURSOR_SIZENWSE";
|
||||
case UI_CURSOR_SIZENESW: return "UI_CURSOR_SIZENESW";
|
||||
case UI_CURSOR_SIZEWE: return "UI_CURSOR_SIZEWE";
|
||||
case UI_CURSOR_SIZENS: return "UI_CURSOR_SIZENS";
|
||||
case UI_CURSOR_NO: return "UI_CURSOR_NO";
|
||||
case UI_CURSOR_WORKING: return "UI_CURSOR_WORKING";
|
||||
case UI_CURSOR_TOOLGRAB: return "UI_CURSOR_TOOLGRAB";
|
||||
case UI_CURSOR_TOOLLAND: return "UI_CURSOR_TOOLLAND";
|
||||
case UI_CURSOR_TOOLFOCUS: return "UI_CURSOR_TOOLFOCUS";
|
||||
case UI_CURSOR_TOOLCREATE: return "UI_CURSOR_TOOLCREATE";
|
||||
case UI_CURSOR_ARROWDRAG: return "UI_CURSOR_ARROWDRAG";
|
||||
case UI_CURSOR_ARROWCOPY: return "UI_CURSOR_ARROWCOPY";
|
||||
case UI_CURSOR_ARROWDRAGMULTI: return "UI_CURSOR_ARROWDRAGMULTI";
|
||||
case UI_CURSOR_ARROWCOPYMULTI: return "UI_CURSOR_ARROWCOPYMULTI";
|
||||
case UI_CURSOR_NOLOCKED: return "UI_CURSOR_NOLOCKED";
|
||||
case UI_CURSOR_ARROWLOCKED: return "UI_CURSOR_ARROWLOCKED";
|
||||
case UI_CURSOR_GRABLOCKED: return "UI_CURSOR_GRABLOCKED";
|
||||
case UI_CURSOR_TOOLTRANSLATE: return "UI_CURSOR_TOOLTRANSLATE";
|
||||
case UI_CURSOR_TOOLROTATE: return "UI_CURSOR_TOOLROTATE";
|
||||
case UI_CURSOR_TOOLSCALE: return "UI_CURSOR_TOOLSCALE";
|
||||
case UI_CURSOR_TOOLCAMERA: return "UI_CURSOR_TOOLCAMERA";
|
||||
case UI_CURSOR_TOOLPAN: return "UI_CURSOR_TOOLPAN";
|
||||
case UI_CURSOR_TOOLZOOMIN: return "UI_CURSOR_TOOLZOOMIN";
|
||||
case UI_CURSOR_TOOLPICKOBJECT3: return "UI_CURSOR_TOOLPICKOBJECT3";
|
||||
case UI_CURSOR_TOOLPLAY: return "UI_CURSOR_TOOLPLAY";
|
||||
case UI_CURSOR_TOOLPAUSE: return "UI_CURSOR_TOOLPAUSE";
|
||||
case UI_CURSOR_TOOLMEDIAOPEN: return "UI_CURSOR_TOOLMEDIAOPEN";
|
||||
case UI_CURSOR_PIPETTE: return "UI_CURSOR_PIPETTE";
|
||||
case UI_CURSOR_TOOLSIT: return "UI_CURSOR_TOOLSIT";
|
||||
case UI_CURSOR_TOOLBUY: return "UI_CURSOR_TOOLBUY";
|
||||
case UI_CURSOR_TOOLOPEN: return "UI_CURSOR_TOOLOPEN";
|
||||
case UI_CURSOR_ARROW: return "UI_CURSOR_ARROW";
|
||||
case UI_CURSOR_WAIT: return "UI_CURSOR_WAIT";
|
||||
case UI_CURSOR_HAND: return "UI_CURSOR_HAND";
|
||||
case UI_CURSOR_IBEAM: return "UI_CURSOR_IBEAM";
|
||||
case UI_CURSOR_CROSS: return "UI_CURSOR_CROSS";
|
||||
case UI_CURSOR_SIZENWSE: return "UI_CURSOR_SIZENWSE";
|
||||
case UI_CURSOR_SIZENESW: return "UI_CURSOR_SIZENESW";
|
||||
case UI_CURSOR_SIZEWE: return "UI_CURSOR_SIZEWE";
|
||||
case UI_CURSOR_SIZENS: return "UI_CURSOR_SIZENS";
|
||||
case UI_CURSOR_NO: return "UI_CURSOR_NO";
|
||||
case UI_CURSOR_WORKING: return "UI_CURSOR_WORKING";
|
||||
case UI_CURSOR_TOOLGRAB: return "UI_CURSOR_TOOLGRAB";
|
||||
case UI_CURSOR_TOOLLAND: return "UI_CURSOR_TOOLLAND";
|
||||
case UI_CURSOR_TOOLFOCUS: return "UI_CURSOR_TOOLFOCUS";
|
||||
case UI_CURSOR_TOOLCREATE: return "UI_CURSOR_TOOLCREATE";
|
||||
case UI_CURSOR_ARROWDRAG: return "UI_CURSOR_ARROWDRAG";
|
||||
case UI_CURSOR_ARROWCOPY: return "UI_CURSOR_ARROWCOPY";
|
||||
case UI_CURSOR_ARROWDRAGMULTI: return "UI_CURSOR_ARROWDRAGMULTI";
|
||||
case UI_CURSOR_ARROWCOPYMULTI: return "UI_CURSOR_ARROWCOPYMULTI";
|
||||
case UI_CURSOR_NOLOCKED: return "UI_CURSOR_NOLOCKED";
|
||||
case UI_CURSOR_ARROWLOCKED: return "UI_CURSOR_ARROWLOCKED";
|
||||
case UI_CURSOR_GRABLOCKED: return "UI_CURSOR_GRABLOCKED";
|
||||
case UI_CURSOR_TOOLTRANSLATE: return "UI_CURSOR_TOOLTRANSLATE";
|
||||
case UI_CURSOR_TOOLROTATE: return "UI_CURSOR_TOOLROTATE";
|
||||
case UI_CURSOR_TOOLSCALE: return "UI_CURSOR_TOOLSCALE";
|
||||
case UI_CURSOR_TOOLCAMERA: return "UI_CURSOR_TOOLCAMERA";
|
||||
case UI_CURSOR_TOOLPAN: return "UI_CURSOR_TOOLPAN";
|
||||
case UI_CURSOR_TOOLZOOMIN: return "UI_CURSOR_TOOLZOOMIN";
|
||||
case UI_CURSOR_TOOLPICKOBJECT3: return "UI_CURSOR_TOOLPICKOBJECT3";
|
||||
case UI_CURSOR_TOOLPLAY: return "UI_CURSOR_TOOLPLAY";
|
||||
case UI_CURSOR_TOOLPAUSE: return "UI_CURSOR_TOOLPAUSE";
|
||||
case UI_CURSOR_TOOLMEDIAOPEN: return "UI_CURSOR_TOOLMEDIAOPEN";
|
||||
case UI_CURSOR_PIPETTE: return "UI_CURSOR_PIPETTE";
|
||||
case UI_CURSOR_TOOLSIT: return "UI_CURSOR_TOOLSIT";
|
||||
case UI_CURSOR_TOOLBUY: return "UI_CURSOR_TOOLBUY";
|
||||
case UI_CURSOR_TOOLOPEN: return "UI_CURSOR_TOOLOPEN";
|
||||
case UI_CURSOR_TOOLPATHFINDING: return "UI_CURSOR_PATHFINDING";
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_START: return "UI_CURSOR_PATHFINDING_START";
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD: return "UI_CURSOR_PATHFINDING_START_ADD";
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_END: return "UI_CURSOR_PATHFINDING_END";
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD: return "UI_CURSOR_PATHFINDING_END_ADD";
|
||||
case UI_CURSOR_TOOLNO: return "UI_CURSOR_NO";
|
||||
}
|
||||
|
||||
llerrs << "cursorIDToName: unknown cursor id" << id << llendl;
|
||||
|
|
@ -2950,6 +2956,12 @@ void LLWindowMacOSX::updateCursor()
|
|||
case UI_CURSOR_TOOLSIT:
|
||||
case UI_CURSOR_TOOLBUY:
|
||||
case UI_CURSOR_TOOLOPEN:
|
||||
case UI_CURSOR_TOOLPATHFINDING:
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_START:
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD:
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_END:
|
||||
case UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD:
|
||||
case UI_CURSOR_TOOLNO:
|
||||
result = setImageCursor(gCursors[mNextCursor]);
|
||||
break;
|
||||
|
||||
|
|
@ -2994,6 +3006,12 @@ void LLWindowMacOSX::initCursors()
|
|||
initPixmapCursor(UI_CURSOR_TOOLSIT, 20, 15);
|
||||
initPixmapCursor(UI_CURSOR_TOOLBUY, 20, 15);
|
||||
initPixmapCursor(UI_CURSOR_TOOLOPEN, 20, 15);
|
||||
initPixmapCursor(UI_CURSOR_TOOLPATHFINDING, 16, 16);
|
||||
initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START, 16, 16);
|
||||
initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD, 16, 16);
|
||||
initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END, 16, 16);
|
||||
initPixmapCursor(UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD, 16, 16);
|
||||
initPixmapCursor(UI_CURSOR_TOOLNO, 8, 8);
|
||||
|
||||
initPixmapCursor(UI_CURSOR_SIZENWSE, 10, 10);
|
||||
initPixmapCursor(UI_CURSOR_SIZENESW, 10, 10);
|
||||
|
|
|
|||
|
|
@ -2117,6 +2117,12 @@ void LLWindowSDL::initCursors()
|
|||
mSDLCursors[UI_CURSOR_TOOLSIT] = makeSDLCursorFromBMP("toolsit.BMP",20,15);
|
||||
mSDLCursors[UI_CURSOR_TOOLBUY] = makeSDLCursorFromBMP("toolbuy.BMP",20,15);
|
||||
mSDLCursors[UI_CURSOR_TOOLOPEN] = makeSDLCursorFromBMP("toolopen.BMP",20,15);
|
||||
mSDLCursors[UI_CURSOR_TOOLPATHFINDING] = makeSDLCursorFromBMP("lltoolpathfinding.BMP", 16, 16);
|
||||
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_START] = makeSDLCursorFromBMP("lltoolpathfindingpathstart.BMP", 16, 16);
|
||||
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_START_ADD] = makeSDLCursorFromBMP("lltoolpathfindingpathstartadd.BMP", 16, 16);
|
||||
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END] = makeSDLCursorFromBMP("lltoolpathfindingpathend.BMP", 16, 16);
|
||||
mSDLCursors[UI_CURSOR_TOOLPATHFINDING_PATH_END_ADD] = makeSDLCursorFromBMP("lltoolpathfindingpathendadd.BMP", 16, 16);
|
||||
mSDLCursors[UI_CURSOR_TOOLNO] = makeSDLCursorFromBMP("llno.BMP",8,8);
|
||||
|
||||
if (getenv("LL_ATI_MOUSE_CURSOR_BUG") != NULL) {
|
||||
llinfos << "Disabling cursor updating due to LL_ATI_MOUSE_CURSOR_BUG" << llendl;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,10 @@ include(VisualLeakDetector)
|
|||
include(GLOD)
|
||||
include(CMakeCopyIfDifferent)
|
||||
|
||||
add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
|
||||
if (NOT HAVOK_TPV)
|
||||
# When using HAVOK_TPV, the library is precompiled, so no need for this
|
||||
add_subdirectory(${LLPHYSICSEXTENSIONS_SRC_DIR} llphysicsextensions)
|
||||
endif (NOT HAVOK_TPV)
|
||||
|
||||
include_directories(
|
||||
${DBUSGLIB_INCLUDE_DIRS}
|
||||
|
|
@ -1957,6 +1960,12 @@ if (DARWIN)
|
|||
)
|
||||
|
||||
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit mac-updater mac-crash-logger)
|
||||
|
||||
if (ENABLE_SIGNING)
|
||||
set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}")
|
||||
else (ENABLE_SIGNING)
|
||||
set(SIGNING_SETTING "")
|
||||
endif (ENABLE_SIGNING)
|
||||
|
||||
if (PACKAGE)
|
||||
add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME})
|
||||
|
|
@ -1976,6 +1985,7 @@ if (DARWIN)
|
|||
--login_channel=${VIEWER_LOGIN_CHANNEL}
|
||||
--source=${CMAKE_CURRENT_SOURCE_DIR}
|
||||
--touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
|
||||
${SIGNING_SETTING}
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
|
||||
)
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@
|
|||
<key>count</key>
|
||||
<integer>1</integer>
|
||||
<key>map-to</key>
|
||||
<string>SkinFolder</string>
|
||||
<string>SkinCurrent</string>
|
||||
</map>
|
||||
|
||||
<key>slurl</key>
|
||||
|
|
|
|||
|
|
@ -3269,6 +3269,17 @@
|
|||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FastCacheFetchEnabled</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enable texture fast cache fetching if set</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<string>1</string>
|
||||
</map>
|
||||
<key>FeatureManagerHTTPTable</key>
|
||||
<map>
|
||||
|
|
@ -5023,7 +5034,7 @@
|
|||
<key>LoginLocation</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Login location ('last', 'home')</string>
|
||||
<string>Default Login location ('last', 'home') preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -6123,7 +6134,7 @@
|
|||
<key>NextLoginLocation</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Location to log into by default.</string>
|
||||
<string>Location to log into for this session - set from command line or the login panel, cleared following a successfull login.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
|
|
@ -10800,6 +10811,83 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>TextureFetchSource</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Debug use: Source to fetch textures</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdateHighPriority</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Number of high priority textures to update per frame</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>32</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdateMaxMediumPriority</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Maximum number of medium priority textures to update per frame</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>256</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdateMinMediumPriority</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Minimum number of medium priority textures to update per frame</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>32</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdatePriorityThreshold</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Threshold under which textures will be considered too low priority and skipped for update</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<integer>0.0</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdateSkipLowPriority</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Flag indicating if we want to skip textures with too low of a priority</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>TextureFetchUpdatePriorities</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Number of priority texture to update per frame</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>32</integer>
|
||||
</map>
|
||||
<key>TextureLoadFullRes</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,6 @@ void main()
|
|||
frag_data[0] = vec4(diff.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0);
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,5 +52,5 @@ void main()
|
|||
frag_data[1] = vertex_color.aaaa; // spec
|
||||
//frag_data[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
|
||||
vec3 nvn = normalize(tnorm);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,6 @@ void main()
|
|||
frag_data[0] = vec4(col.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0); // spec
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,5 +48,5 @@ void main()
|
|||
frag_data[0] = vec4(col.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0);
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,6 @@ void main()
|
|||
frag_data[0] = vec4(col.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0); // spec
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,6 @@ void main()
|
|||
frag_data[1] = vertex_color.aaaa; // spec
|
||||
//frag_data[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,5 +41,5 @@ void main()
|
|||
frag_data[1] = vertex_color.aaaa; // spec
|
||||
//frag_data[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ void main()
|
|||
}
|
||||
|
||||
vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
norm = normalize(norm);
|
||||
vec4 spec = texture2DRect(specularRect, frag.xy);
|
||||
vec3 diff = texture2DRect(diffuseRect, frag.xy).rgb;
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ void main()
|
|||
}
|
||||
|
||||
vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
float da = dot(norm, lv);
|
||||
if (da < 0.0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ void main()
|
|||
float depth = texture2DRect(depthMap, tc.xy).r;
|
||||
vec3 pos = getPosition_d(tc, depth).xyz;
|
||||
vec3 norm = texture2DRect(normalMap, tc).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
|
||||
float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
|
||||
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ void main()
|
|||
vec4 pos = getPosition(pos_screen);
|
||||
|
||||
vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
|
||||
frag_color[0] = 1.0;
|
||||
frag_color[1] = calcAmbientOcclusion(pos, norm);
|
||||
|
|
|
|||
|
|
@ -56,6 +56,6 @@ void main()
|
|||
frag_data[0] = vec4(outColor.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0);
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,5 +48,5 @@ void main()
|
|||
frag_data[0] = vec4(vertex_color.rgb*col.rgb, 0.0);
|
||||
frag_data[1] = vec4(0,0,0,0);
|
||||
vec3 nvn = normalize(vary_normal);
|
||||
frag_data[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
|
||||
frag_data[2] = vec4(nvn.xyz * 0.5 + 0.5, 0.0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,5 +161,5 @@ void main()
|
|||
|
||||
frag_data[0] = vec4(color.rgb, 0.5); // diffuse
|
||||
frag_data[1] = vec4(0.5,0.5,0.5, 0.95); // speccolor*spec, spec
|
||||
frag_data[2] = vec4(screenspacewavef.xy*0.5+0.5, screenspacewavef.z, screenspacewavef.z*0.5); // normalxyz, displace
|
||||
frag_data[2] = vec4(screenspacewavef.xyz*0.5+0.5, screenspacewavef.z*0.5); // normalxyz, displace
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ void main()
|
|||
}
|
||||
|
||||
vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
|
||||
norm = normalize(norm);
|
||||
float l_dist = -dot(lv, proj_n);
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ void main()
|
|||
float depth = texture2DRect(depthMap, tc.xy).r;
|
||||
vec3 pos = getPosition_d(tc, depth).xyz;
|
||||
vec3 norm = texture2DRect(normalMap, tc).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
|
||||
float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
|
||||
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ void main()
|
|||
}
|
||||
|
||||
vec3 norm = texture2DRect(normalMap, frag.xy).xyz;
|
||||
norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
|
||||
norm = (norm.xyz-0.5)*2.0; // unpack norm
|
||||
|
||||
norm = normalize(norm);
|
||||
float l_dist = -dot(lv, proj_n);
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ void main()
|
|||
vec4 pos = getPosition(pos_screen);
|
||||
|
||||
vec4 nmap4 = texture2DRect(normalMap, pos_screen);
|
||||
nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
|
||||
nmap4 = vec4((nmap4.xyz-0.5)*2.0,nmap4.w); // unpack norm
|
||||
float displace = nmap4.w;
|
||||
vec3 norm = nmap4.xyz;
|
||||
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ void main()
|
|||
vec4 pos = getPosition(pos_screen);
|
||||
|
||||
vec4 nmap4 = texture2DRect(normalMap, pos_screen);
|
||||
nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
|
||||
nmap4 = vec4((nmap4.xyz-0.5)*2.0,nmap4.w); // unpack norm
|
||||
float displace = nmap4.w;
|
||||
vec3 norm = nmap4.xyz;
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -380,6 +380,9 @@ void init_default_trans_args()
|
|||
default_trans_args.insert("CAPITALIZED_APP_NAME");
|
||||
default_trans_args.insert("SECOND_LIFE_GRID");
|
||||
default_trans_args.insert("SUPPORT_SITE");
|
||||
// This URL shows up in a surprising number of places in various skin
|
||||
// files. We really only want to have to maintain a single copy of it.
|
||||
default_trans_args.insert("create_account_url");
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
@ -2674,14 +2677,6 @@ bool LLAppViewer::initConfiguration()
|
|||
}
|
||||
}
|
||||
|
||||
// If automatic login from command line with --login switch
|
||||
// init StartSLURL location. In interactive login, LLPanelLogin
|
||||
// will take care of it.
|
||||
if ((clp.hasOption("login") || clp.hasOption("autologin")) && !clp.hasOption("url") && !clp.hasOption("slurl"))
|
||||
{
|
||||
LLStartUp::setStartSLURL(LLSLURL(gSavedSettings.getString("LoginLocation")));
|
||||
}
|
||||
|
||||
if (!gSavedSettings.getBOOL("AllowMultipleViewers"))
|
||||
{
|
||||
//
|
||||
|
|
@ -2729,12 +2724,27 @@ bool LLAppViewer::initConfiguration()
|
|||
}
|
||||
}
|
||||
|
||||
// need to do this here - need to have initialized global settings first
|
||||
// NextLoginLocation is set from the command line option
|
||||
std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
|
||||
if ( !nextLoginLocation.empty() )
|
||||
{
|
||||
LL_DEBUGS("AppInit")<<"set start from NextLoginLocation: "<<nextLoginLocation<<LL_ENDL;
|
||||
LLStartUp::setStartSLURL(LLSLURL(nextLoginLocation));
|
||||
};
|
||||
}
|
||||
else if ( ( clp.hasOption("login") || clp.hasOption("autologin"))
|
||||
&& !clp.hasOption("url")
|
||||
&& !clp.hasOption("slurl"))
|
||||
{
|
||||
// If automatic login from command line with --login switch
|
||||
// init StartSLURL location.
|
||||
std::string start_slurl_setting = gSavedSettings.getString("LoginLocation");
|
||||
LL_DEBUGS("AppInit") << "start slurl setting '" << start_slurl_setting << "'" << LL_ENDL;
|
||||
LLStartUp::setStartSLURL(LLSLURL(start_slurl_setting));
|
||||
}
|
||||
else
|
||||
{
|
||||
// the login location will be set by the login panel (see LLPanelLogin)
|
||||
}
|
||||
|
||||
gLastRunVersion = gSavedSettings.getString("LastRunVersion");
|
||||
|
||||
|
|
@ -4355,6 +4365,10 @@ void LLAppViewer::idle()
|
|||
{
|
||||
return;
|
||||
}
|
||||
if (gTeleportDisplay)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
gViewerWindow->updateUI();
|
||||
|
||||
|
|
|
|||
|
|
@ -2167,6 +2167,12 @@ BOOL LLFace::hasMedia() const
|
|||
const F32 LEAST_IMPORTANCE = 0.05f ;
|
||||
const F32 LEAST_IMPORTANCE_FOR_LARGE_IMAGE = 0.3f ;
|
||||
|
||||
void LLFace::resetVirtualSize()
|
||||
{
|
||||
setVirtualSize(0.f);
|
||||
mImportanceToCamera = 0.f;
|
||||
}
|
||||
|
||||
F32 LLFace::getTextureVirtualSize()
|
||||
{
|
||||
F32 radius;
|
||||
|
|
@ -2232,8 +2238,17 @@ BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
|
|||
LLVector4a t;
|
||||
t.load3(camera->getOrigin().mV);
|
||||
lookAt.setSub(center, t);
|
||||
|
||||
F32 dist = lookAt.getLength3().getF32();
|
||||
dist = llmax(dist-size.getLength3().getF32(), 0.f);
|
||||
dist = llmax(dist-size.getLength3().getF32(), 0.001f);
|
||||
//ramp down distance for nearby objects
|
||||
if (dist < 16.f)
|
||||
{
|
||||
dist /= 16.f;
|
||||
dist *= dist;
|
||||
dist *= 16.f;
|
||||
}
|
||||
|
||||
lookAt.normalize3fast() ;
|
||||
|
||||
//get area of circle around node
|
||||
|
|
|
|||
|
|
@ -218,6 +218,7 @@ public:
|
|||
|
||||
F32 getTextureVirtualSize() ;
|
||||
F32 getImportanceToCamera()const {return mImportanceToCamera ;}
|
||||
void resetVirtualSize();
|
||||
|
||||
void setHasMedia(bool has_media) { mHasMedia = has_media ;}
|
||||
BOOL hasMedia() const ;
|
||||
|
|
|
|||
|
|
@ -417,6 +417,7 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
|
|||
if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible())
|
||||
{
|
||||
BOOL force_update = mSimulateRes == 0 ? TRUE : FALSE;
|
||||
|
||||
doIdleUpdate();
|
||||
|
||||
if (!force_update || !gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))
|
||||
|
|
|
|||
|
|
@ -134,26 +134,20 @@ void LLFloaterPathfindingCharacters::requestGetObjects()
|
|||
LLPathfindingManager::getInstance()->requestGetCharacters(getNewRequestId(), boost::bind(&LLFloaterPathfindingCharacters::handleNewObjectList, this, _1, _2, _3));
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingCharacters::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
void LLFloaterPathfindingCharacters::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
{
|
||||
llassert(pObjectListPtr != NULL);
|
||||
llassert(!pObjectListPtr->isEmpty());
|
||||
|
||||
LLSD scrollListData = LLSD::emptyArray();
|
||||
|
||||
for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin(); objectIter != pObjectListPtr->end(); ++objectIter)
|
||||
{
|
||||
const LLPathfindingCharacter *characterPtr = dynamic_cast<const LLPathfindingCharacter *>(objectIter->second.get());
|
||||
LLSD element = buildCharacterScrollListData(characterPtr);
|
||||
scrollListData.append(element);
|
||||
const LLPathfindingObjectPtr objectPtr = objectIter->second;
|
||||
const LLPathfindingCharacter *characterPtr = dynamic_cast<const LLPathfindingCharacter *>(objectPtr.get());
|
||||
llassert(characterPtr != NULL);
|
||||
|
||||
if (characterPtr->hasOwner() && !characterPtr->hasOwnerName())
|
||||
{
|
||||
rebuildScrollListAfterAvatarNameLoads(characterPtr->getUUID());
|
||||
}
|
||||
LLSD scrollListItemData = buildCharacterScrollListItemData(characterPtr);
|
||||
addObjectToScrollList(objectPtr, scrollListItemData);
|
||||
}
|
||||
|
||||
return scrollListData;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingCharacters::updateControlsOnScrollListChange()
|
||||
|
|
@ -168,6 +162,22 @@ S32 LLFloaterPathfindingCharacters::getNameColumnIndex() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
S32 LLFloaterPathfindingCharacters::getOwnerNameColumnIndex() const
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
std::string LLFloaterPathfindingCharacters::getOwnerName(const LLPathfindingObject *pObject) const
|
||||
{
|
||||
return (pObject->hasOwner()
|
||||
? (pObject->hasOwnerName()
|
||||
? (pObject->isGroupOwned()
|
||||
? (pObject->getOwnerName() + " " + getString("character_owner_group"))
|
||||
: pObject->getOwnerName())
|
||||
: getString("character_owner_loading"))
|
||||
: getString("character_owner_unknown"));
|
||||
}
|
||||
|
||||
const LLColor4 &LLFloaterPathfindingCharacters::getBeaconColor() const
|
||||
{
|
||||
return mBeaconColor;
|
||||
|
|
@ -201,9 +211,9 @@ void LLFloaterPathfindingCharacters::onShowPhysicsCapsuleClicked()
|
|||
}
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfindingCharacter *pCharacterPtr) const
|
||||
LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListItemData(const LLPathfindingCharacter *pCharacterPtr) const
|
||||
{
|
||||
LLSD columns;
|
||||
LLSD columns = LLSD::emptyArray();
|
||||
|
||||
columns[0]["column"] = "name";
|
||||
columns[0]["value"] = pCharacterPtr->getName();
|
||||
|
|
@ -212,13 +222,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi
|
|||
columns[1]["value"] = pCharacterPtr->getDescription();
|
||||
|
||||
columns[2]["column"] = "owner";
|
||||
columns[2]["value"] = (pCharacterPtr->hasOwner()
|
||||
? (pCharacterPtr->hasOwnerName()
|
||||
? (pCharacterPtr->isGroupOwned()
|
||||
? (pCharacterPtr->getOwnerName() + " " + getString("character_owner_group"))
|
||||
: pCharacterPtr->getOwnerName())
|
||||
: getString("character_owner_loading"))
|
||||
: getString("character_owner_unknown"));
|
||||
columns[2]["value"] = getOwnerName(pCharacterPtr);
|
||||
|
||||
S32 cpuTime = llround(pCharacterPtr->getCPUTime());
|
||||
std::string cpuTimeString = llformat("%d", cpuTime);
|
||||
|
|
@ -231,11 +235,7 @@ LLSD LLFloaterPathfindingCharacters::buildCharacterScrollListData(const LLPathfi
|
|||
columns[4]["column"] = "altitude";
|
||||
columns[4]["value"] = llformat("%1.0f m", pCharacterPtr->getLocation()[2]);
|
||||
|
||||
LLSD element;
|
||||
element["id"] = pCharacterPtr->getUUID().asString();
|
||||
element["column"] = columns;
|
||||
|
||||
return element;
|
||||
return columns;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingCharacters::updateStateOnDisplayControls()
|
||||
|
|
|
|||
|
|
@ -62,11 +62,13 @@ protected:
|
|||
|
||||
virtual void requestGetObjects();
|
||||
|
||||
virtual LLSD convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
virtual void buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
|
||||
virtual void updateControlsOnScrollListChange();
|
||||
|
||||
virtual S32 getNameColumnIndex() const;
|
||||
virtual S32 getOwnerNameColumnIndex() const;
|
||||
virtual std::string getOwnerName(const LLPathfindingObject *pObject) const;
|
||||
virtual const LLColor4 &getBeaconColor() const;
|
||||
|
||||
virtual LLPathfindingObjectListPtr getEmptyObjectList() const;
|
||||
|
|
@ -74,7 +76,7 @@ protected:
|
|||
private:
|
||||
void onShowPhysicsCapsuleClicked();
|
||||
|
||||
LLSD buildCharacterScrollListData(const LLPathfindingCharacter *pCharacterPtr) const;
|
||||
LLSD buildCharacterScrollListItemData(const LLPathfindingCharacter *pCharacterPtr) const;
|
||||
|
||||
void updateStateOnDisplayControls();
|
||||
void showSelectedCharacterCapsules();
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ void LLFloaterPathfindingLinksets::requestGetObjects()
|
|||
LLPathfindingManager::getInstance()->requestGetLinksets(getNewRequestId(), boost::bind(&LLFloaterPathfindingLinksets::handleNewObjectList, this, _1, _2, _3));
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
void LLFloaterPathfindingLinksets::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
{
|
||||
llassert(pObjectListPtr != NULL);
|
||||
llassert(!pObjectListPtr->isEmpty());
|
||||
|
|
@ -227,7 +227,6 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath
|
|||
bool isFilteringDescription = !descriptionFilter.empty();
|
||||
bool isFilteringLinksetUse = (linksetUseFilter != LLPathfindingLinkset::kUnknown);
|
||||
|
||||
LLSD scrollListData = LLSD::emptyArray();
|
||||
const LLVector3& avatarPosition = gAgent.getPositionAgent();
|
||||
|
||||
if (isFilteringName || isFilteringDescription || isFilteringLinksetUse)
|
||||
|
|
@ -236,22 +235,21 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath
|
|||
LLStringUtil::toUpper(descriptionFilter);
|
||||
for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin(); objectIter != pObjectListPtr->end(); ++objectIter)
|
||||
{
|
||||
const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectIter->second.get());
|
||||
const LLPathfindingObjectPtr objectPtr = objectIter->second;
|
||||
const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get());
|
||||
llassert(linksetPtr != NULL);
|
||||
|
||||
std::string linksetName = (linksetPtr->isTerrain() ? getString("linkset_terrain_name") : linksetPtr->getName());
|
||||
std::string linksetDescription = linksetPtr->getDescription();
|
||||
LLStringUtil::toUpper(linksetName);
|
||||
LLStringUtil::toUpper(linksetDescription);
|
||||
|
||||
if ((!isFilteringName || (linksetName.find(nameFilter) != std::string::npos)) &&
|
||||
(!isFilteringDescription || (linksetDescription.find(descriptionFilter) != std::string::npos)) &&
|
||||
(!isFilteringLinksetUse || (linksetPtr->getLinksetUse() == linksetUseFilter)))
|
||||
{
|
||||
LLSD element = buildLinksetScrollListData(linksetPtr, avatarPosition);
|
||||
scrollListData.append(element);
|
||||
|
||||
if (linksetPtr->hasOwner() && !linksetPtr->hasOwnerName())
|
||||
{
|
||||
rebuildScrollListAfterAvatarNameLoads(linksetPtr->getUUID());
|
||||
}
|
||||
LLSD scrollListItemData = buildLinksetScrollListItemData(linksetPtr, avatarPosition);
|
||||
addObjectToScrollList(objectPtr, scrollListItemData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -259,18 +257,14 @@ LLSD LLFloaterPathfindingLinksets::convertObjectsIntoScrollListData(const LLPath
|
|||
{
|
||||
for (LLPathfindingObjectList::const_iterator objectIter = pObjectListPtr->begin(); objectIter != pObjectListPtr->end(); ++objectIter)
|
||||
{
|
||||
const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectIter->second.get());
|
||||
LLSD element = buildLinksetScrollListData(linksetPtr, avatarPosition);
|
||||
scrollListData.append(element);
|
||||
const LLPathfindingObjectPtr objectPtr = objectIter->second;
|
||||
const LLPathfindingLinkset *linksetPtr = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get());
|
||||
llassert(linksetPtr != NULL);
|
||||
|
||||
if (linksetPtr->hasOwner() && !linksetPtr->hasOwnerName())
|
||||
{
|
||||
rebuildScrollListAfterAvatarNameLoads(linksetPtr->getUUID());
|
||||
}
|
||||
LLSD scrollListItemData = buildLinksetScrollListItemData(linksetPtr, avatarPosition);
|
||||
addObjectToScrollList(objectPtr, scrollListItemData);
|
||||
}
|
||||
}
|
||||
|
||||
return scrollListData;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingLinksets::updateControlsOnScrollListChange()
|
||||
|
|
@ -286,6 +280,22 @@ S32 LLFloaterPathfindingLinksets::getNameColumnIndex() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
S32 LLFloaterPathfindingLinksets::getOwnerNameColumnIndex() const
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
std::string LLFloaterPathfindingLinksets::getOwnerName(const LLPathfindingObject *pObject) const
|
||||
{
|
||||
return (pObject->hasOwner()
|
||||
? (pObject->hasOwnerName()
|
||||
? (pObject->isGroupOwned()
|
||||
? (pObject->getOwnerName() + " " + getString("linkset_owner_group"))
|
||||
: pObject->getOwnerName())
|
||||
: getString("linkset_owner_loading"))
|
||||
: getString("linkset_owner_unknown"));
|
||||
}
|
||||
|
||||
const LLColor4 &LLFloaterPathfindingLinksets::getBeaconColor() const
|
||||
{
|
||||
return mBeaconColor;
|
||||
|
|
@ -373,10 +383,10 @@ void LLFloaterPathfindingLinksets::updateEditFieldValues()
|
|||
}
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const
|
||||
LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListItemData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const
|
||||
{
|
||||
llassert(pLinksetPtr != NULL);
|
||||
LLSD columns;
|
||||
LLSD columns = LLSD::emptyArray();
|
||||
|
||||
if (pLinksetPtr->isTerrain())
|
||||
{
|
||||
|
|
@ -389,11 +399,14 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin
|
|||
columns[2]["column"] = "owner";
|
||||
columns[2]["value"] = getString("linkset_terrain_owner");
|
||||
|
||||
columns[3]["column"] = "land_impact";
|
||||
columns[3]["value"] = getString("linkset_terrain_land_impact");
|
||||
columns[3]["column"] = "scripted";
|
||||
columns[3]["value"] = getString("linkset_terrain_scripted");
|
||||
|
||||
columns[4]["column"] = "dist_from_you";
|
||||
columns[4]["value"] = getString("linkset_terrain_dist_from_you");
|
||||
columns[4]["column"] = "land_impact";
|
||||
columns[4]["value"] = getString("linkset_terrain_land_impact");
|
||||
|
||||
columns[5]["column"] = "dist_from_you";
|
||||
columns[5]["value"] = getString("linkset_terrain_dist_from_you");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -404,22 +417,23 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin
|
|||
columns[1]["value"] = pLinksetPtr->getDescription();
|
||||
|
||||
columns[2]["column"] = "owner";
|
||||
columns[2]["value"] = (pLinksetPtr->hasOwner()
|
||||
? (pLinksetPtr->hasOwnerName()
|
||||
? (pLinksetPtr->isGroupOwned()
|
||||
? (pLinksetPtr->getOwnerName() + " " + getString("linkset_owner_group"))
|
||||
: pLinksetPtr->getOwnerName())
|
||||
: getString("linkset_owner_loading"))
|
||||
: getString("linkset_owner_unknown"));
|
||||
columns[2]["value"] = getOwnerName(pLinksetPtr);
|
||||
|
||||
columns[3]["column"] = "land_impact";
|
||||
columns[3]["value"] = llformat("%1d", pLinksetPtr->getLandImpact());
|
||||
columns[3]["column"] = "scripted";
|
||||
columns[3]["value"] = (pLinksetPtr->hasIsScripted()
|
||||
? (pLinksetPtr->isScripted()
|
||||
? getString("linkset_is_scripted")
|
||||
: getString("linkset_is_not_scripted"))
|
||||
: getString("linkset_is_unknown_scripted"));
|
||||
|
||||
columns[4]["column"] = "dist_from_you";
|
||||
columns[4]["value"] = llformat("%1.0f m", dist_vec(pAvatarPosition, pLinksetPtr->getLocation()));
|
||||
columns[4]["column"] = "land_impact";
|
||||
columns[4]["value"] = llformat("%1d", pLinksetPtr->getLandImpact());
|
||||
|
||||
columns[5]["column"] = "dist_from_you";
|
||||
columns[5]["value"] = llformat("%1.0f m", dist_vec(pAvatarPosition, pLinksetPtr->getLocation()));
|
||||
}
|
||||
|
||||
columns[5]["column"] = "linkset_use";
|
||||
columns[6]["column"] = "linkset_use";
|
||||
std::string linksetUse = getLinksetUseString(pLinksetPtr->getLinksetUse());
|
||||
if (pLinksetPtr->isTerrain())
|
||||
{
|
||||
|
|
@ -437,25 +451,21 @@ LLSD LLFloaterPathfindingLinksets::buildLinksetScrollListData(const LLPathfindin
|
|||
{
|
||||
linksetUse += (" " + getString("linkset_is_restricted_non_volume_state"));
|
||||
}
|
||||
columns[5]["value"] = linksetUse;
|
||||
columns[6]["value"] = linksetUse;
|
||||
|
||||
columns[6]["column"] = "a_percent";
|
||||
columns[6]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientA());
|
||||
columns[7]["column"] = "a_percent";
|
||||
columns[7]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientA());
|
||||
|
||||
columns[7]["column"] = "b_percent";
|
||||
columns[7]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientB());
|
||||
columns[8]["column"] = "b_percent";
|
||||
columns[8]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientB());
|
||||
|
||||
columns[8]["column"] = "c_percent";
|
||||
columns[8]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientC());
|
||||
columns[9]["column"] = "c_percent";
|
||||
columns[9]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientC());
|
||||
|
||||
columns[9]["column"] = "d_percent";
|
||||
columns[9]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientD());
|
||||
columns[10]["column"] = "d_percent";
|
||||
columns[10]["value"] = llformat("%3d", pLinksetPtr->getWalkabilityCoefficientD());
|
||||
|
||||
LLSD element;
|
||||
element["id"] = pLinksetPtr->getUUID().asString();
|
||||
element["column"] = columns;
|
||||
|
||||
return element;
|
||||
return columns;
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingLinksets::buildLinksetUseScrollListData(const std::string &pLabel, S32 pValue) const
|
||||
|
|
@ -490,6 +500,23 @@ bool LLFloaterPathfindingLinksets::isShowUnmodifiablePhantomWarning(LLPathfindin
|
|||
return isShowWarning;
|
||||
}
|
||||
|
||||
bool LLFloaterPathfindingLinksets::isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const
|
||||
{
|
||||
bool isShowWarning = false;
|
||||
|
||||
if (pLinksetUse != LLPathfindingLinkset::kUnknown)
|
||||
{
|
||||
LLPathfindingObjectListPtr selectedObjects = getSelectedObjects();
|
||||
if ((selectedObjects != NULL) && !selectedObjects->isEmpty())
|
||||
{
|
||||
const LLPathfindingLinksetList *linksetList = dynamic_cast<const LLPathfindingLinksetList *>(selectedObjects.get());
|
||||
isShowWarning = linksetList->isShowPhantomToggleWarning(pLinksetUse);
|
||||
}
|
||||
}
|
||||
|
||||
return isShowWarning;
|
||||
}
|
||||
|
||||
bool LLFloaterPathfindingLinksets::isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const
|
||||
{
|
||||
bool isShowWarning = false;
|
||||
|
|
@ -559,29 +586,41 @@ void LLFloaterPathfindingLinksets::applyEdit()
|
|||
{
|
||||
LLPathfindingLinkset::ELinksetUse linksetUse = getEditLinksetUse();
|
||||
|
||||
bool showPhantomToggleWarning = isShowPhantomToggleWarning(linksetUse);
|
||||
bool showUnmodifiablePhantomWarning = isShowUnmodifiablePhantomWarning(linksetUse);
|
||||
bool showCannotBeVolumeWarning = isShowCannotBeVolumeWarning(linksetUse);
|
||||
|
||||
if (showUnmodifiablePhantomWarning || showCannotBeVolumeWarning)
|
||||
if (showPhantomToggleWarning || showUnmodifiablePhantomWarning || showCannotBeVolumeWarning)
|
||||
{
|
||||
LLPathfindingLinkset::ELinksetUse restrictedLinksetUse = LLPathfindingLinkset::getLinksetUseWithToggledPhantom(linksetUse);
|
||||
LLSD substitutions;
|
||||
substitutions["REQUESTED_TYPE"] = getLinksetUseString(linksetUse);
|
||||
substitutions["RESTRICTED_TYPE"] = getLinksetUseString(restrictedLinksetUse);
|
||||
|
||||
std::string notificationName;
|
||||
if (showUnmodifiablePhantomWarning && showCannotBeVolumeWarning)
|
||||
// Build one of the following notifications names
|
||||
// - PathfindingLinksets_WarnOnPhantom
|
||||
// - PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted
|
||||
// - PathfindingLinksets_WarnOnPhantom_MismatchOnVolume
|
||||
// - PathfindingLinksets_WarnOnPhantom_MismatchOnRestricted_MismatchOnVolume
|
||||
// - PathfindingLinksets_MismatchOnRestricted
|
||||
// - PathfindingLinksets_MismatchOnVolume
|
||||
// - PathfindingLinksets_MismatchOnRestricted_MismatchOnVolume
|
||||
|
||||
std::string notificationName = "PathfindingLinksets";
|
||||
|
||||
if (showPhantomToggleWarning)
|
||||
{
|
||||
notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnRestrictedAndVolume";
|
||||
notificationName += "_WarnOnPhantom";
|
||||
}
|
||||
else if (showUnmodifiablePhantomWarning)
|
||||
if (showUnmodifiablePhantomWarning)
|
||||
{
|
||||
notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnRestricted";
|
||||
notificationName += "_MismatchOnRestricted";
|
||||
}
|
||||
else
|
||||
if (showCannotBeVolumeWarning)
|
||||
{
|
||||
notificationName = "PathfindingLinksets_SetLinksetUseMismatchOnVolume";
|
||||
notificationName += "_MismatchOnVolume";
|
||||
}
|
||||
|
||||
LLNotificationsUtil::add(notificationName, substitutions, LLSD(), boost::bind(&LLFloaterPathfindingLinksets::handleApplyEdit, this, _1, _2));
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -58,11 +58,13 @@ protected:
|
|||
|
||||
virtual void requestGetObjects();
|
||||
|
||||
virtual LLSD convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
virtual void buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
|
||||
virtual void updateControlsOnScrollListChange();
|
||||
|
||||
virtual S32 getNameColumnIndex() const;
|
||||
virtual S32 getOwnerNameColumnIndex() const;
|
||||
virtual std::string getOwnerName(const LLPathfindingObject *pObject) const;
|
||||
virtual const LLColor4 &getBeaconColor() const;
|
||||
|
||||
virtual LLPathfindingObjectListPtr getEmptyObjectList() const;
|
||||
|
|
@ -78,10 +80,11 @@ private:
|
|||
void clearFilters();
|
||||
|
||||
void updateEditFieldValues();
|
||||
LLSD buildLinksetScrollListData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const;
|
||||
LLSD buildLinksetScrollListItemData(const LLPathfindingLinkset *pLinksetPtr, const LLVector3 &pAvatarPosition) const;
|
||||
LLSD buildLinksetUseScrollListData(const std::string &pLabel, S32 pValue) const;
|
||||
|
||||
bool isShowUnmodifiablePhantomWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;
|
||||
bool isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;
|
||||
bool isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const;
|
||||
|
||||
void updateStateOnEditFields();
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
|
||||
#include "llfloaterpathfindingobjects.h"
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
@ -96,7 +98,6 @@ void LLFloaterPathfindingObjects::onOpen(const LLSD &pKey)
|
|||
|
||||
void LLFloaterPathfindingObjects::onClose(bool pIsAppQuitting)
|
||||
{
|
||||
|
||||
if (mGodLevelChangeSlot.connected())
|
||||
{
|
||||
mGodLevelChangeSlot.disconnect();
|
||||
|
|
@ -119,6 +120,11 @@ void LLFloaterPathfindingObjects::onClose(bool pIsAppQuitting)
|
|||
{
|
||||
mObjectsSelection.clear();
|
||||
}
|
||||
|
||||
if (pIsAppQuitting)
|
||||
{
|
||||
clearAllObjects();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingObjects::draw()
|
||||
|
|
@ -168,13 +174,13 @@ LLFloaterPathfindingObjects::LLFloaterPathfindingObjects(const LLSD &pSeed)
|
|||
mReturnButton(NULL),
|
||||
mDeleteButton(NULL),
|
||||
mTeleportButton(NULL),
|
||||
mLoadingAvatarNames(),
|
||||
mDefaultBeaconColor(),
|
||||
mDefaultBeaconTextColor(),
|
||||
mErrorTextColor(),
|
||||
mWarningTextColor(),
|
||||
mMessagingState(kMessagingUnknown),
|
||||
mMessagingRequestId(0U),
|
||||
mMissingNameObjectsScrollListItems(),
|
||||
mObjectList(),
|
||||
mObjectsSelection(),
|
||||
mHasObjectsToBeSelected(false),
|
||||
|
|
@ -186,6 +192,7 @@ LLFloaterPathfindingObjects::LLFloaterPathfindingObjects(const LLSD &pSeed)
|
|||
|
||||
LLFloaterPathfindingObjects::~LLFloaterPathfindingObjects()
|
||||
{
|
||||
clearAllObjects();
|
||||
}
|
||||
|
||||
BOOL LLFloaterPathfindingObjects::postBuild()
|
||||
|
|
@ -343,54 +350,21 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()
|
|||
|
||||
S32 origScrollPosition = mObjectsScrollList->getScrollPos();
|
||||
mObjectsScrollList->deleteAllItems();
|
||||
mMissingNameObjectsScrollListItems.clear();
|
||||
|
||||
if ((mObjectList != NULL) && !mObjectList->isEmpty())
|
||||
{
|
||||
LLSD scrollListData = convertObjectsIntoScrollListData(mObjectList);
|
||||
llassert(scrollListData.isArray());
|
||||
buildObjectsScrollList(mObjectList);
|
||||
|
||||
LLScrollListCell::Params cellParams;
|
||||
cellParams.font = LLFontGL::getFontSansSerif();
|
||||
|
||||
for (LLSD::array_const_iterator rowElementIter = scrollListData.beginArray(); rowElementIter != scrollListData.endArray(); ++rowElementIter)
|
||||
mObjectsScrollList->selectMultiple(mObjectsToBeSelected);
|
||||
if (mHasObjectsToBeSelected)
|
||||
{
|
||||
const LLSD &rowElement = *rowElementIter;
|
||||
|
||||
LLScrollListItem::Params rowParams;
|
||||
llassert(rowElement.has("id"));
|
||||
llassert(rowElement.get("id").isString());
|
||||
rowParams.value = rowElement.get("id");
|
||||
|
||||
llassert(rowElement.has("column"));
|
||||
llassert(rowElement.get("column").isArray());
|
||||
const LLSD &columnElement = rowElement.get("column");
|
||||
for (LLSD::array_const_iterator cellIter = columnElement.beginArray(); cellIter != columnElement.endArray(); ++cellIter)
|
||||
{
|
||||
const LLSD &cellElement = *cellIter;
|
||||
|
||||
llassert(cellElement.has("column"));
|
||||
llassert(cellElement.get("column").isString());
|
||||
cellParams.column = cellElement.get("column").asString();
|
||||
|
||||
llassert(cellElement.has("value"));
|
||||
llassert(cellElement.get("value").isString());
|
||||
cellParams.value = cellElement.get("value").asString();
|
||||
|
||||
rowParams.columns.add(cellParams);
|
||||
}
|
||||
|
||||
mObjectsScrollList->addRow(rowParams);
|
||||
mObjectsScrollList->scrollToShowSelected();
|
||||
}
|
||||
else
|
||||
{
|
||||
mObjectsScrollList->setScrollPos(origScrollPosition);
|
||||
}
|
||||
}
|
||||
|
||||
mObjectsScrollList->selectMultiple(mObjectsToBeSelected);
|
||||
if (mHasObjectsToBeSelected)
|
||||
{
|
||||
mObjectsScrollList->scrollToShowSelected();
|
||||
}
|
||||
else
|
||||
{
|
||||
mObjectsScrollList->setScrollPos(origScrollPosition);
|
||||
}
|
||||
|
||||
mObjectsToBeSelected.clear();
|
||||
|
|
@ -399,20 +373,42 @@ void LLFloaterPathfindingObjects::rebuildObjectsScrollList()
|
|||
updateControlsOnScrollListChange();
|
||||
}
|
||||
|
||||
LLSD LLFloaterPathfindingObjects::convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
void LLFloaterPathfindingObjects::buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr)
|
||||
{
|
||||
llassert(0);
|
||||
LLSD nullObjs = LLSD::emptyArray();
|
||||
return nullObjs;
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingObjects::rebuildScrollListAfterAvatarNameLoads(const LLUUID &pAvatarId)
|
||||
void LLFloaterPathfindingObjects::addObjectToScrollList(const LLPathfindingObjectPtr pObjectPtr, const LLSD &pScrollListItemData)
|
||||
{
|
||||
std::set<LLUUID>::const_iterator iter = mLoadingAvatarNames.find(pAvatarId);
|
||||
if (iter == mLoadingAvatarNames.end())
|
||||
LLScrollListCell::Params cellParams;
|
||||
cellParams.font = LLFontGL::getFontSansSerif();
|
||||
|
||||
LLScrollListItem::Params rowParams;
|
||||
rowParams.value = pObjectPtr->getUUID().asString();
|
||||
|
||||
llassert(pScrollListItemData.isArray());
|
||||
for (LLSD::array_const_iterator cellIter = pScrollListItemData.beginArray();
|
||||
cellIter != pScrollListItemData.endArray(); ++cellIter)
|
||||
{
|
||||
mLoadingAvatarNames.insert(pAvatarId);
|
||||
LLAvatarNameCache::get(pAvatarId, boost::bind(&LLFloaterPathfindingObjects::handleAvatarNameLoads, this, _1, _2));
|
||||
const LLSD &cellElement = *cellIter;
|
||||
|
||||
llassert(cellElement.has("column"));
|
||||
llassert(cellElement.get("column").isString());
|
||||
cellParams.column = cellElement.get("column").asString();
|
||||
|
||||
llassert(cellElement.has("value"));
|
||||
llassert(cellElement.get("value").isString());
|
||||
cellParams.value = cellElement.get("value").asString();
|
||||
|
||||
rowParams.columns.add(cellParams);
|
||||
}
|
||||
|
||||
LLScrollListItem *scrollListItem = mObjectsScrollList->addRow(rowParams);
|
||||
|
||||
if (pObjectPtr->hasOwner() && !pObjectPtr->hasOwnerName())
|
||||
{
|
||||
mMissingNameObjectsScrollListItems.insert(std::make_pair<std::string, LLScrollListItem *>(pObjectPtr->getUUID().asString(), scrollListItem));
|
||||
pObjectPtr->registerOwnerNameListener(boost::bind(&LLFloaterPathfindingObjects::handleObjectNameResponse, this, _1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -434,6 +430,18 @@ S32 LLFloaterPathfindingObjects::getNameColumnIndex() const
|
|||
return 0;
|
||||
}
|
||||
|
||||
S32 LLFloaterPathfindingObjects::getOwnerNameColumnIndex() const
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
std::string LLFloaterPathfindingObjects::getOwnerName(const LLPathfindingObject *pObject) const
|
||||
{
|
||||
llassert(0);
|
||||
std::string returnVal;
|
||||
return returnVal;
|
||||
}
|
||||
|
||||
const LLColor4 &LLFloaterPathfindingObjects::getBeaconColor() const
|
||||
{
|
||||
return mDefaultBeaconColor;
|
||||
|
|
@ -496,6 +504,7 @@ void LLFloaterPathfindingObjects::clearAllObjects()
|
|||
{
|
||||
selectNoneObjects();
|
||||
mObjectsScrollList->deleteAllItems();
|
||||
mMissingNameObjectsScrollListItems.clear();
|
||||
mObjectList.reset();
|
||||
}
|
||||
|
||||
|
|
@ -683,13 +692,22 @@ void LLFloaterPathfindingObjects::onGodLevelChange(U8 pGodLevel)
|
|||
requestGetObjects();
|
||||
}
|
||||
|
||||
void LLFloaterPathfindingObjects::handleAvatarNameLoads(const LLUUID &pAvatarId, const LLAvatarName &pAvatarName)
|
||||
void LLFloaterPathfindingObjects::handleObjectNameResponse(const LLPathfindingObject *pObject)
|
||||
{
|
||||
llassert(mLoadingAvatarNames.find(pAvatarId) != mLoadingAvatarNames.end());
|
||||
mLoadingAvatarNames.erase(pAvatarId);
|
||||
if (mLoadingAvatarNames.empty())
|
||||
llassert(pObject != NULL);
|
||||
const std::string uuid = pObject->getUUID().asString();
|
||||
scroll_list_item_map::iterator scrollListItemIter = mMissingNameObjectsScrollListItems.find(uuid);
|
||||
if (scrollListItemIter != mMissingNameObjectsScrollListItems.end())
|
||||
{
|
||||
rebuildObjectsScrollList();
|
||||
LLScrollListItem *scrollListItem = scrollListItemIter->second;
|
||||
llassert(scrollListItem != NULL);
|
||||
|
||||
LLScrollListCell *scrollListCell = scrollListItem->getColumn(getOwnerNameColumnIndex());
|
||||
LLSD ownerName = getOwnerName(pObject);
|
||||
|
||||
scrollListCell->setValue(ownerName);
|
||||
|
||||
mMissingNameObjectsScrollListItems.erase(scrollListItemIter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@
|
|||
#ifndef LL_LLFLOATERPATHFINDINGOBJECTS_H
|
||||
#define LL_LLFLOATERPATHFINDINGOBJECTS_H
|
||||
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
|
|
@ -80,14 +81,15 @@ protected:
|
|||
void handleUpdateObjectList(LLPathfindingManager::request_id_t pRequestId, LLPathfindingManager::ERequestStatus pRequestStatus, LLPathfindingObjectListPtr pObjectList);
|
||||
|
||||
void rebuildObjectsScrollList();
|
||||
virtual LLSD convertObjectsIntoScrollListData(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
|
||||
void rebuildScrollListAfterAvatarNameLoads(const LLUUID &pAvatarId);
|
||||
virtual void buildObjectsScrollList(const LLPathfindingObjectListPtr pObjectListPtr);
|
||||
void addObjectToScrollList(const LLPathfindingObjectPtr pObjectPr, const LLSD &pScrollListItemData);
|
||||
|
||||
virtual void updateControlsOnScrollListChange();
|
||||
virtual void updateControlsOnInWorldSelectionChange();
|
||||
|
||||
virtual S32 getNameColumnIndex() const;
|
||||
virtual S32 getOwnerNameColumnIndex() const;
|
||||
virtual std::string getOwnerName(const LLPathfindingObject *pObject) const;
|
||||
virtual const LLColor4 &getBeaconColor() const;
|
||||
virtual const LLColor4 &getBeaconTextColor() const;
|
||||
virtual S32 getBeaconWidth() const;
|
||||
|
|
@ -126,7 +128,7 @@ private:
|
|||
void onRegionBoundaryCrossed();
|
||||
void onGodLevelChange(U8 pGodLevel);
|
||||
|
||||
void handleAvatarNameLoads(const LLUUID &pAvatarId, const LLAvatarName &pAvatarName);
|
||||
void handleObjectNameResponse(const LLPathfindingObject *pObject);
|
||||
|
||||
void updateMessagingStatus();
|
||||
void updateStateOnListControls();
|
||||
|
|
@ -151,8 +153,6 @@ private:
|
|||
LLButton *mDeleteButton;
|
||||
LLButton *mTeleportButton;
|
||||
|
||||
std::set<LLUUID> mLoadingAvatarNames;
|
||||
|
||||
LLColor4 mDefaultBeaconColor;
|
||||
LLColor4 mDefaultBeaconTextColor;
|
||||
LLColor4 mErrorTextColor;
|
||||
|
|
@ -161,6 +161,9 @@ private:
|
|||
EMessagingState mMessagingState;
|
||||
LLPathfindingManager::request_id_t mMessagingRequestId;
|
||||
|
||||
typedef std::map<std::string, LLScrollListItem *> scroll_list_item_map;
|
||||
scroll_list_item_map mMissingNameObjectsScrollListItems;
|
||||
|
||||
LLPathfindingObjectListPtr mObjectList;
|
||||
|
||||
LLObjectSelectionHandle mObjectsSelection;
|
||||
|
|
|
|||
|
|
@ -59,12 +59,15 @@ LLFloaterTextureFetchDebugger::LLFloaterTextureFetchDebugger(const LLSD& key)
|
|||
|
||||
mCommitCallbackRegistrar.add("TexFetchDebugger.RefetchVisCache", boost::bind(&LLFloaterTextureFetchDebugger::onClickRefetchVisCache, this));
|
||||
mCommitCallbackRegistrar.add("TexFetchDebugger.RefetchVisHTTP", boost::bind(&LLFloaterTextureFetchDebugger::onClickRefetchVisHTTP, this));
|
||||
mCommitCallbackRegistrar.add("TexFetchDebugger.RefetchAllCache", boost::bind(&LLFloaterTextureFetchDebugger::onClickRefetchAllCache, this));
|
||||
mCommitCallbackRegistrar.add("TexFetchDebugger.RefetchAllHTTP", boost::bind(&LLFloaterTextureFetchDebugger::onClickRefetchAllHTTP, this));
|
||||
}
|
||||
//----------------------------------------------
|
||||
|
||||
BOOL LLFloaterTextureFetchDebugger::postBuild(void)
|
||||
{
|
||||
mDebugger = LLAppViewer::getTextureFetch()->getFetchDebugger();
|
||||
mStartStatus = (S32)LLTextureFetchDebugger::IDLE;
|
||||
|
||||
//set states for buttons
|
||||
mButtonStateMap["start_btn"] = true;
|
||||
|
|
@ -76,8 +79,10 @@ BOOL LLFloaterTextureFetchDebugger::postBuild(void)
|
|||
mButtonStateMap["decode_btn"] = false;
|
||||
mButtonStateMap["gl_btn"] = false;
|
||||
|
||||
mButtonStateMap["refetchviscache_btn"] = true;
|
||||
mButtonStateMap["refetchvishttp_btn"] = true;
|
||||
mButtonStateMap["refetchviscache_btn"] = false;
|
||||
mButtonStateMap["refetchvishttp_btn"] = false;
|
||||
mButtonStateMap["refetchallcache_btn"] = false;
|
||||
mButtonStateMap["refetchallhttp_btn"] = false;
|
||||
|
||||
updateButtons();
|
||||
|
||||
|
|
@ -89,7 +94,7 @@ BOOL LLFloaterTextureFetchDebugger::postBuild(void)
|
|||
LLFloaterTextureFetchDebugger::~LLFloaterTextureFetchDebugger()
|
||||
{
|
||||
//stop everything
|
||||
mDebugger->stopDebug();
|
||||
mDebugger->setStopDebug();
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::updateButtons()
|
||||
|
|
@ -118,47 +123,81 @@ void LLFloaterTextureFetchDebugger::disableButtons()
|
|||
childDisable("gl_btn");
|
||||
childDisable("refetchviscache_btn");
|
||||
childDisable("refetchvishttp_btn");
|
||||
childDisable("refetchallcache_btn");
|
||||
childDisable("refetchallhttp_btn");
|
||||
}
|
||||
void LLFloaterTextureFetchDebugger::setStartStatus(S32 status)
|
||||
{
|
||||
llassert_always(LLTextureFetchDebugger::IDLE == (LLTextureFetchDebugger::e_debug_state)mStartStatus) ;
|
||||
mStartStatus = status;
|
||||
}
|
||||
|
||||
bool LLFloaterTextureFetchDebugger::idleStart()
|
||||
{
|
||||
if(mStartStatus != (S32)LLTextureFetchDebugger::IDLE)
|
||||
{
|
||||
mDebugger->startWork((LLTextureFetchDebugger::e_debug_state)mStartStatus);
|
||||
mStartStatus = (S32)LLTextureFetchDebugger::IDLE;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::idle()
|
||||
{
|
||||
LLTextureFetchDebugger::e_debug_state state = mDebugger->getState();
|
||||
|
||||
if(mDebugger->update())
|
||||
if(idleStart())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const F32 max_time = 0.005f; //5ms
|
||||
LLTextureFetchDebugger::e_debug_state state = mDebugger->getState();
|
||||
if(mDebugger->update(max_time))
|
||||
{
|
||||
switch(state)
|
||||
{
|
||||
case LLTextureFetchDebugger::IDLE:
|
||||
break;
|
||||
case LLTextureFetchDebugger::READ_CACHE:
|
||||
mButtonStateMap["cachewrite_btn"] = true;
|
||||
mButtonStateMap["decode_btn"] = true;
|
||||
updateButtons();
|
||||
case LLTextureFetchDebugger::START_DEBUG:
|
||||
mButtonStateMap["cacheread_btn"] = true;
|
||||
mButtonStateMap["http_btn"] = true;
|
||||
mButtonStateMap["refetchviscache_btn"] = true;
|
||||
mButtonStateMap["refetchvishttp_btn"] = true;
|
||||
mButtonStateMap["refetchallcache_btn"] = true;
|
||||
mButtonStateMap["refetchallhttp_btn"] = true;
|
||||
break;
|
||||
case LLTextureFetchDebugger::WRITE_CACHE:
|
||||
updateButtons();
|
||||
case LLTextureFetchDebugger::READ_CACHE:
|
||||
mButtonStateMap["decode_btn"] = true;
|
||||
break;
|
||||
case LLTextureFetchDebugger::WRITE_CACHE:
|
||||
break;
|
||||
case LLTextureFetchDebugger::DECODING:
|
||||
mButtonStateMap["gl_btn"] = true;
|
||||
updateButtons();
|
||||
mButtonStateMap["gl_btn"] = true;
|
||||
break;
|
||||
case LLTextureFetchDebugger::HTTP_FETCHING:
|
||||
mButtonStateMap["cacheread_btn"] = true;
|
||||
mButtonStateMap["cachewrite_btn"] = true;
|
||||
mButtonStateMap["decode_btn"] = true;
|
||||
updateButtons();
|
||||
mButtonStateMap["decode_btn"] = true;
|
||||
break;
|
||||
case LLTextureFetchDebugger::GL_TEX:
|
||||
updateButtons();
|
||||
case LLTextureFetchDebugger::GL_TEX:
|
||||
break;
|
||||
case LLTextureFetchDebugger::REFETCH_VIS_CACHE:
|
||||
updateButtons();
|
||||
case LLTextureFetchDebugger::REFETCH_VIS_HTTP:
|
||||
updateButtons();
|
||||
case LLTextureFetchDebugger::REFETCH_VIS_CACHE:
|
||||
break;
|
||||
case LLTextureFetchDebugger::REFETCH_VIS_HTTP:
|
||||
break;
|
||||
case LLTextureFetchDebugger::REFETCH_ALL_CACHE:
|
||||
break;
|
||||
case LLTextureFetchDebugger::REFETCH_ALL_HTTP:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(state != LLTextureFetchDebugger::IDLE)
|
||||
{
|
||||
updateButtons();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -172,11 +211,10 @@ void LLFloaterTextureFetchDebugger::onClickStart()
|
|||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->startDebug();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::START_DEBUG);
|
||||
|
||||
mButtonStateMap["start_btn"] = false;
|
||||
mButtonStateMap["cacheread_btn"] = true;
|
||||
mButtonStateMap["http_btn"] = true;
|
||||
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
|
|
@ -185,7 +223,9 @@ void LLFloaterTextureFetchDebugger::onClickClose()
|
|||
setVisible(FALSE);
|
||||
|
||||
//stop everything
|
||||
mDebugger->stopDebug();
|
||||
mDebugger->setStopDebug();
|
||||
|
||||
delete this;
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickClear()
|
||||
|
|
@ -203,7 +243,7 @@ void LLFloaterTextureFetchDebugger::onClickClear()
|
|||
updateButtons();
|
||||
|
||||
//stop everything
|
||||
mDebugger->stopDebug();
|
||||
mDebugger->setStopDebug();
|
||||
mDebugger->clearHistory();
|
||||
}
|
||||
|
||||
|
|
@ -211,49 +251,63 @@ void LLFloaterTextureFetchDebugger::onClickCacheRead()
|
|||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugCacheRead();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::READ_CACHE);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickCacheWrite()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugCacheWrite();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::WRITE_CACHE);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickHTTPLoad()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugHTTP();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::HTTP_FETCHING);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickDecode()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugDecoder();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::DECODING);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickGLTexture()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugGLTextureCreation();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::GL_TEX);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickRefetchVisCache()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugRefetchVisibleFromCache();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::REFETCH_VIS_CACHE);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickRefetchVisHTTP()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
mDebugger->debugRefetchVisibleFromHTTP();
|
||||
setStartStatus((S32)LLTextureFetchDebugger::REFETCH_VIS_HTTP);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickRefetchAllCache()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
setStartStatus((S32)LLTextureFetchDebugger::REFETCH_ALL_CACHE);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::onClickRefetchAllHTTP()
|
||||
{
|
||||
disableButtons();
|
||||
|
||||
setStartStatus((S32)LLTextureFetchDebugger::REFETCH_ALL_HTTP);
|
||||
}
|
||||
|
||||
void LLFloaterTextureFetchDebugger::draw()
|
||||
|
|
@ -368,8 +422,22 @@ void LLFloaterTextureFetchDebugger::draw()
|
|||
else
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_cache_label")->setTextArg("[TIME]", llformat("%.3f", mDebugger->getRefetchVisCacheTime()));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_cache_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_cache_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedPixels() / 1000000.f));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_cache_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedVisData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_cache_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedVisPixels() / 1000000.f));
|
||||
}
|
||||
|
||||
//total time on refetching all textures from cache
|
||||
if(mDebugger->getRefetchAllCacheTime() < 0.f)
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[TIME]", std::string("----"));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[SIZE]", std::string("----"));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[PIXEL]", std::string("----"));
|
||||
}
|
||||
else
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[TIME]", llformat("%.3f", mDebugger->getRefetchAllCacheTime()));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedAllData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_cache_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedAllPixels() / 1000000.f));
|
||||
}
|
||||
|
||||
//total time on refetching visible textures from http
|
||||
|
|
@ -382,8 +450,22 @@ void LLFloaterTextureFetchDebugger::draw()
|
|||
else
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_http_label")->setTextArg("[TIME]", llformat("%.3f", mDebugger->getRefetchVisHTTPTime()));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_http_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_http_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedPixels() / 1000000.f));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_http_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedVisData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_vis_http_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedVisPixels() / 1000000.f));
|
||||
}
|
||||
|
||||
//total time on refetching all textures from http
|
||||
if(mDebugger->getRefetchAllHTTPTime() < 0.f)
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[TIME]", std::string("----"));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[SIZE]", std::string("----"));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[PIXEL]", std::string("----"));
|
||||
}
|
||||
else
|
||||
{
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[TIME]", llformat("%.3f", mDebugger->getRefetchAllHTTPTime()));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[SIZE]", llformat("%d", mDebugger->getRefetchedAllData() >> 10));
|
||||
getChild<LLUICtrl>("total_time_refetch_all_http_label")->setTextArg("[PIXEL]", llformat("%.3f", mDebugger->getRefetchedAllPixels() / 1000000.f));
|
||||
}
|
||||
|
||||
LLFloater::draw();
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ public:
|
|||
|
||||
void onClickRefetchVisCache();
|
||||
void onClickRefetchVisHTTP();
|
||||
void onClickRefetchAllCache();
|
||||
void onClickRefetchAllHTTP();
|
||||
public:
|
||||
void idle() ;
|
||||
|
||||
|
|
@ -63,9 +65,12 @@ private:
|
|||
void updateButtons();
|
||||
void disableButtons();
|
||||
|
||||
void setStartStatus(S32 status);
|
||||
bool idleStart();
|
||||
private:
|
||||
LLTextureFetchDebugger* mDebugger;
|
||||
std::map<std::string, bool> mButtonStateMap;
|
||||
S32 mStartStatus;
|
||||
};
|
||||
|
||||
#endif // LL_FLOATER_TEXTURE_FETCH_DEBUGGER__H
|
||||
|
|
|
|||
|
|
@ -133,7 +133,6 @@ public:
|
|||
if(tools_floater)
|
||||
{
|
||||
tools_floater->updateLandImpacts();
|
||||
tools_floater->dirty();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2235,14 +2235,9 @@ void LLFolderView::doIdle()
|
|||
arrangeAll();
|
||||
}
|
||||
|
||||
mNeedsAutoSelect = mFilter->hasFilterString() &&
|
||||
!(gFocusMgr.childHasKeyboardFocus(this) || gFocusMgr.getMouseCapture());
|
||||
|
||||
|
||||
if (mFilter->isModified() && mFilter->isNotDefault())
|
||||
{
|
||||
mNeedsAutoSelect = TRUE;
|
||||
}
|
||||
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
|
||||
|
|
@ -2254,7 +2249,7 @@ void LLFolderView::doIdle()
|
|||
LLFastTimer t3(FTM_AUTO_SELECT);
|
||||
// select new item only if a filtered item not currently selected
|
||||
LLFolderViewItem* selected_itemp = mSelectedItems.empty() ? NULL : mSelectedItems.back();
|
||||
if (!mAutoSelectOverride && (!selected_itemp || !selected_itemp->potentiallyFiltered()))
|
||||
if (!mAutoSelectOverride && (!selected_itemp || !selected_itemp->potentiallyVisible()))
|
||||
{
|
||||
// these are named variables to get around gcc not binding non-const references to rvalues
|
||||
// and functor application is inherently non-const to allow for stateful functors
|
||||
|
|
@ -2264,7 +2259,7 @@ void LLFolderView::doIdle()
|
|||
|
||||
// Open filtered folders for folder views with mAutoSelectOverride=TRUE.
|
||||
// Used by LLPlacesFolderView.
|
||||
if (mAutoSelectOverride && !mFilter->getFilterSubString().empty())
|
||||
if (!mFilter->getFilterSubString().empty())
|
||||
{
|
||||
// these are named variables to get around gcc not binding non-const references to rvalues
|
||||
// and functor application is inherently non-const to allow for stateful functors
|
||||
|
|
@ -2556,6 +2551,25 @@ void LLFolderView::onRenamerLost()
|
|||
}
|
||||
}
|
||||
|
||||
LLFolderViewItem* LLFolderView::getNextUnselectedItem()
|
||||
{
|
||||
LLFolderViewItem* last_item = *mSelectedItems.rbegin();
|
||||
LLFolderViewItem* new_selection = last_item->getNextOpenNode(FALSE);
|
||||
while(new_selection && new_selection->isSelected())
|
||||
{
|
||||
new_selection = new_selection->getNextOpenNode(FALSE);
|
||||
}
|
||||
if (!new_selection)
|
||||
{
|
||||
new_selection = last_item->getPreviousOpenNode(FALSE);
|
||||
while (new_selection && (new_selection->isInSelection()))
|
||||
{
|
||||
new_selection = new_selection->getPreviousOpenNode(FALSE);
|
||||
}
|
||||
}
|
||||
return new_selection;
|
||||
}
|
||||
|
||||
LLInventoryFilter* LLFolderView::getFilter()
|
||||
{
|
||||
return mFilter;
|
||||
|
|
|
|||
|
|
@ -207,6 +207,8 @@ public:
|
|||
virtual void doDelete();
|
||||
virtual BOOL canDoDelete() const;
|
||||
|
||||
LLFolderViewItem* getNextUnselectedItem();
|
||||
|
||||
// Public rename functionality - can only start the process
|
||||
void startRenamingSelectedItem( void );
|
||||
|
||||
|
|
|
|||
|
|
@ -1098,6 +1098,10 @@ void LLFolderViewItem::draw()
|
|||
}
|
||||
}
|
||||
|
||||
bool LLFolderViewItem::isInSelection() const
|
||||
{
|
||||
return mIsSelected || (mParentFolder && mParentFolder->isInSelection());
|
||||
}
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Class LLFolderViewFolder
|
||||
|
|
|
|||
|
|
@ -243,6 +243,7 @@ public:
|
|||
virtual void destroyView();
|
||||
|
||||
BOOL isSelected() const { return mIsSelected; }
|
||||
bool isInSelection() const;
|
||||
|
||||
void setUnselected() { mIsSelected = FALSE; }
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,9 @@
|
|||
#include "llviewerwindow.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llwearablelist.h"
|
||||
#include "lllandmarkactions.h"
|
||||
|
||||
void copy_slurl_to_clipboard_callback_inv(const std::string& slurl);
|
||||
|
||||
// Marketplace outbox current disabled
|
||||
#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU 1
|
||||
|
|
@ -1355,7 +1358,10 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
|
|||
else if ("cut" == action)
|
||||
{
|
||||
cutToClipboard();
|
||||
// MAINT-1197: This is temp code to work around a deselection/reselection bug. Please discard when merging CHUI.
|
||||
LLFolderViewItem* item_to_select = mRoot->getNextUnselectedItem();
|
||||
LLFolderView::removeCutItems();
|
||||
mRoot->setSelection(item_to_select, item_to_select ? item_to_select->isOpen() : false, false);
|
||||
return;
|
||||
}
|
||||
else if ("copy" == action)
|
||||
|
|
@ -1396,6 +1402,29 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
|
|||
const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
|
||||
copy_item_to_outbox(itemp, outbox_id, LLUUID::null, LLToolDragAndDrop::getOperationId());
|
||||
}
|
||||
else if ("copy_slurl" == action)
|
||||
{
|
||||
LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem());
|
||||
if(item)
|
||||
{
|
||||
LLUUID asset_id = item->getAssetUUID();
|
||||
LLLandmark* landmark = gLandmarkList.getAsset(asset_id);
|
||||
if (landmark)
|
||||
{
|
||||
LLVector3d global_pos;
|
||||
landmark->getGlobalPos(global_pos);
|
||||
LLLandmarkActions::getSLURLfromPosGlobal(global_pos, ©_slurl_to_clipboard_callback_inv, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void copy_slurl_to_clipboard_callback_inv(const std::string& slurl)
|
||||
{
|
||||
gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl));
|
||||
LLSD args;
|
||||
args["SLURL"] = slurl;
|
||||
LLNotificationsUtil::add("CopySLURL", args);
|
||||
}
|
||||
|
||||
void LLItemBridge::selectItem()
|
||||
|
|
@ -2743,7 +2772,10 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
|
|||
else if ("cut" == action)
|
||||
{
|
||||
cutToClipboard();
|
||||
// MAINT-1197: This is temp code to work around a deselection/reselection bug. Please discard when merging CHUI.
|
||||
LLFolderViewItem* item_to_select = mRoot->getNextUnselectedItem();
|
||||
LLFolderView::removeCutItems();
|
||||
mRoot->setSelection(item_to_select, item_to_select ? item_to_select->isOpen() : false, false);
|
||||
return;
|
||||
}
|
||||
else if ("copy" == action)
|
||||
|
|
@ -4397,6 +4429,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
}
|
||||
|
||||
items.push_back(std::string("Landmark Separator"));
|
||||
items.push_back(std::string("url_copy"));
|
||||
items.push_back(std::string("About Landmark"));
|
||||
}
|
||||
|
||||
|
|
@ -4405,6 +4438,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
|
|||
// info panel can be shown at a time.
|
||||
if ((flags & FIRST_SELECTED_ITEM) == 0)
|
||||
{
|
||||
disabled_items.push_back(std::string("url_copy"));
|
||||
disabled_items.push_back(std::string("About Landmark"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -197,6 +197,8 @@ public:
|
|||
const LLUUID& uuid) :
|
||||
LLInvFVBridge(inventory, root, uuid) {}
|
||||
|
||||
typedef boost::function<void(std::string& slurl)> slurl_callback_t;
|
||||
|
||||
virtual void performAction(LLInventoryModel* model, std::string action);
|
||||
virtual void selectItem();
|
||||
virtual void restoreItem();
|
||||
|
|
@ -214,7 +216,6 @@ public:
|
|||
virtual BOOL isItemCopyable() const;
|
||||
virtual BOOL hasChildren() const { return FALSE; }
|
||||
virtual BOOL isUpToDate() const { return TRUE; }
|
||||
|
||||
/*virtual*/ void clearDisplayName() { mDisplayName.clear(); }
|
||||
|
||||
LLViewerInventoryItem* getItem() const;
|
||||
|
|
|
|||
|
|
@ -252,12 +252,20 @@ S32 LLMachineID::getUniqueID(unsigned char *unique_id, size_t len)
|
|||
if (has_static_unique_id)
|
||||
{
|
||||
memcpy ( unique_id, &static_unique_id, len);
|
||||
LL_DEBUGS("AppInit") << "UniqueID: " << unique_id[0] << unique_id[1]<< unique_id[2] << unique_id[3] << unique_id[4] << unique_id [5] << LL_ENDL;
|
||||
LL_DEBUGS("AppInit") << "UniqueID: 0x";
|
||||
// Code between here and LL_ENDL is not executed unless the LL_DEBUGS
|
||||
// actually produces output
|
||||
for (size_t i = 0; i < len; ++i)
|
||||
{
|
||||
// Copy each char to unsigned int to hexify. Sending an unsigned
|
||||
// char to a std::ostream tries to represent it as a char, not
|
||||
// what we want here.
|
||||
unsigned byte = unique_id[i];
|
||||
LL_CONT << std::hex << std::setw(2) << std::setfill('0') << byte;
|
||||
}
|
||||
// Reset default output formatting to avoid nasty surprises!
|
||||
LL_CONT << std::dec << std::setw(0) << std::setfill(' ') << LL_ENDL;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@
|
|||
|
||||
#include "llmutelist.h"
|
||||
|
||||
#include "pipeline.h"
|
||||
|
||||
#include <boost/tokenizer.hpp>
|
||||
|
||||
#include "lldispatcher.h"
|
||||
|
|
@ -192,6 +194,23 @@ BOOL LLMuteList::isLinden(const std::string& name) const
|
|||
return last_name == "Linden";
|
||||
}
|
||||
|
||||
static LLVOAvatar* find_avatar(const LLUUID& id)
|
||||
{
|
||||
LLViewerObject *obj = gObjectList.findObject(id);
|
||||
while (obj && obj->isAttachment())
|
||||
{
|
||||
obj = (LLViewerObject *)obj->getParent();
|
||||
}
|
||||
|
||||
if (obj && obj->isAvatar())
|
||||
{
|
||||
return (LLVOAvatar*)obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
||||
{
|
||||
|
|
@ -288,6 +307,12 @@ BOOL LLMuteList::add(const LLMute& mute, U32 flags)
|
|||
LLViewerPartSim::getInstance()->clearParticlesByOwnerID(localmute.mID);
|
||||
}
|
||||
}
|
||||
//mute local lights that are attached to the avatar
|
||||
LLVOAvatar *avatarp = find_avatar(localmute.mID);
|
||||
if (avatarp)
|
||||
{
|
||||
LLPipeline::removeMutedAVsLights(avatarp);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llpanellogin.h"
|
||||
#include "lllayoutstack.h"
|
||||
|
||||
#include "indra_constants.h" // for key and mask constants
|
||||
#include "llfloaterreg.h"
|
||||
|
|
@ -145,12 +146,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
|
||||
// change z sort of clickable text to be behind buttons
|
||||
sendChildToBack(getChildView("forgot_password_text"));
|
||||
|
||||
if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION)
|
||||
{
|
||||
LLSLURL slurl(gSavedSettings.getString("LoginLocation"));
|
||||
LLStartUp::setStartSLURL(slurl);
|
||||
}
|
||||
|
||||
LLComboBox* location_combo = getChild<LLComboBox>("start_location_combo");
|
||||
updateLocationSelectorsVisibility(); // separate so that it can be called from preferences
|
||||
|
|
@ -182,9 +177,32 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
ADD_TOP);
|
||||
server_choice_combo->selectFirstItem();
|
||||
|
||||
LLSLURL start_slurl(LLStartUp::getStartSLURL());
|
||||
if ( !start_slurl.isSpatial() ) // has a start been established by the command line or NextLoginLocation ?
|
||||
{
|
||||
// no, so get the preference setting
|
||||
std::string defaultStartLocation = gSavedSettings.getString("LoginLocation");
|
||||
LL_INFOS("AppInit")<<"default LoginLocation '"<<defaultStartLocation<<"'"<<LL_ENDL;
|
||||
LLSLURL defaultStart(defaultStartLocation);
|
||||
if ( defaultStart.isSpatial() )
|
||||
{
|
||||
LLStartUp::setStartSLURL(defaultStart);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS("AppInit")<<"no valid LoginLocation, using home"<<LL_ENDL;
|
||||
LLSLURL homeStart(LLSLURL::SIM_LOCATION_HOME);
|
||||
LLStartUp::setStartSLURL(homeStart);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLPanelLogin::onUpdateStartSLURL(start_slurl); // updates grid if needed
|
||||
}
|
||||
|
||||
childSetAction("connect_btn", onClickConnect, this);
|
||||
|
||||
getChild<LLPanel>("login")->setDefaultBtn("connect_btn");
|
||||
getChild<LLPanel>("links_login_panel")->setDefaultBtn("connect_btn");
|
||||
|
||||
std::string channel = LLVersionInfo::getChannel();
|
||||
std::string version = llformat("%s (%d)",
|
||||
|
|
@ -194,8 +212,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
|
|||
LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text");
|
||||
forgot_password_text->setClickedCallback(onClickForgotPassword, NULL);
|
||||
|
||||
LLTextBox* create_new_account_text = getChild<LLTextBox>("create_new_account_text");
|
||||
create_new_account_text->setClickedCallback(onClickNewAccount, NULL);
|
||||
childSetAction("create_new_account_btn", onClickNewAccount, NULL);
|
||||
|
||||
LLTextBox* need_help_text = getChild<LLTextBox>("login_help");
|
||||
need_help_text->setClickedCallback(onClickHelp, NULL);
|
||||
|
|
@ -619,12 +636,10 @@ void LLPanelLogin::updateLocationSelectorsVisibility()
|
|||
if (sInstance)
|
||||
{
|
||||
BOOL show_start = gSavedSettings.getBOOL("ShowStartLocation");
|
||||
sInstance->getChildView("start_location_combo")->setVisible(show_start);
|
||||
sInstance->getChildView("start_location_text")->setVisible(show_start);
|
||||
sInstance->getChild<LLLayoutPanel>("start_location_panel")->setVisible(show_start);
|
||||
|
||||
BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid");
|
||||
LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo");
|
||||
server_choice_combo->setVisible( show_server );
|
||||
sInstance->getChild<LLLayoutPanel>("grid_panel")->setVisible(show_server);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -645,8 +660,11 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)
|
|||
* specify a particular grid; in those cases we want to change the grid
|
||||
* and the grid selector to match the new value.
|
||||
*/
|
||||
if ( LLSLURL::LOCATION == new_start_slurl.getType() )
|
||||
enum LLSLURL::SLURL_TYPE new_slurl_type = new_start_slurl.getType();
|
||||
switch ( new_slurl_type )
|
||||
{
|
||||
case LLSLURL::LOCATION:
|
||||
{
|
||||
std::string slurl_grid = LLGridManager::getInstance()->getGrid(new_start_slurl.getGrid());
|
||||
if ( ! slurl_grid.empty() ) // is that a valid grid?
|
||||
{
|
||||
|
|
@ -668,8 +686,24 @@ void LLPanelLogin::onUpdateStartSLURL(const LLSLURL& new_start_slurl)
|
|||
{
|
||||
// the grid specified by the slurl is not known
|
||||
LLNotificationsUtil::add("InvalidLocationSLURL");
|
||||
LL_WARNS("AppInit")<<"invalid LoginLocation:"<<new_start_slurl.asString()<<LL_ENDL;
|
||||
location_combo->setTextEntry(LLStringUtil::null);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case LLSLURL::HOME_LOCATION:
|
||||
location_combo->setCurrentByIndex(1); // home location
|
||||
break;
|
||||
|
||||
case LLSLURL::LAST_LOCATION:
|
||||
location_combo->setCurrentByIndex(0); // last location
|
||||
break;
|
||||
|
||||
default:
|
||||
LL_WARNS("AppInit")<<"invalid login slurl, using home"<<LL_ENDL;
|
||||
location_combo->setCurrentByIndex(1); // home location
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -850,7 +884,7 @@ void LLPanelLogin::onClickNewAccount(void*)
|
|||
{
|
||||
if (sInstance)
|
||||
{
|
||||
LLWeb::loadURLExternal(sInstance->getString("create_account_url"));
|
||||
LLWeb::loadURLExternal(LLTrans::getString("create_account_url"));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -910,9 +944,11 @@ void LLPanelLogin::updateServer()
|
|||
|
||||
// update the login panel links
|
||||
bool system_grid = LLGridManager::getInstance()->isSystemGrid();
|
||||
|
||||
sInstance->getChildView("create_new_account_text")->setVisible( system_grid);
|
||||
sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
|
||||
|
||||
// Want to vanish not only create_new_account_btn, but also the
|
||||
// title text over it, so turn on/off the whole layout_panel element.
|
||||
sInstance->getChild<LLLayoutPanel>("links")->setVisible(system_grid);
|
||||
sInstance->getChildView("forgot_password_text")->setVisible(system_grid);
|
||||
|
||||
// grid changed so show new splash screen (possibly)
|
||||
loadLoginPage();
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#define LINKSET_MODIFIABLE_FIELD "modifiable"
|
||||
#define LINKSET_CATEGORY_FIELD "navmesh_category"
|
||||
#define LINKSET_CAN_BE_VOLUME "can_be_volume"
|
||||
#define LINKSET_IS_SCRIPTED_FIELD "is_scripted"
|
||||
#define LINKSET_PHANTOM_FIELD "phantom"
|
||||
#define LINKSET_WALKABILITY_A_FIELD "A"
|
||||
#define LINKSET_WALKABILITY_B_FIELD "B"
|
||||
|
|
@ -62,6 +63,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLSD& pTerrainData)
|
|||
mLandImpact(0U),
|
||||
mIsModifiable(FALSE),
|
||||
mCanBeVolume(FALSE),
|
||||
mIsScripted(FALSE),
|
||||
mHasIsScripted(TRUE),
|
||||
mLinksetUse(kUnknown),
|
||||
mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),
|
||||
mWalkabilityCoefficientB(MIN_WALKABILITY_VALUE),
|
||||
|
|
@ -77,6 +80,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const std::string &pUUID, const LLSD&
|
|||
mLandImpact(0U),
|
||||
mIsModifiable(TRUE),
|
||||
mCanBeVolume(TRUE),
|
||||
mIsScripted(FALSE),
|
||||
mHasIsScripted(FALSE),
|
||||
mLinksetUse(kUnknown),
|
||||
mWalkabilityCoefficientA(MIN_WALKABILITY_VALUE),
|
||||
mWalkabilityCoefficientB(MIN_WALKABILITY_VALUE),
|
||||
|
|
@ -93,6 +98,8 @@ LLPathfindingLinkset::LLPathfindingLinkset(const LLPathfindingLinkset& pOther)
|
|||
mLandImpact(pOther.mLandImpact),
|
||||
mIsModifiable(pOther.mIsModifiable),
|
||||
mCanBeVolume(pOther.mCanBeVolume),
|
||||
mIsScripted(pOther.mIsScripted),
|
||||
mHasIsScripted(pOther.mHasIsScripted),
|
||||
mLinksetUse(pOther.mLinksetUse),
|
||||
mWalkabilityCoefficientA(pOther.mWalkabilityCoefficientA),
|
||||
mWalkabilityCoefficientB(pOther.mWalkabilityCoefficientB),
|
||||
|
|
@ -113,6 +120,8 @@ LLPathfindingLinkset& LLPathfindingLinkset::operator =(const LLPathfindingLinkse
|
|||
mLandImpact = pOther.mLandImpact;
|
||||
mIsModifiable = pOther.mIsModifiable;
|
||||
mCanBeVolume = pOther.mCanBeVolume;
|
||||
mIsScripted = pOther.mIsScripted;
|
||||
mHasIsScripted = pOther.mHasIsScripted;
|
||||
mLinksetUse = pOther.mLinksetUse;
|
||||
mWalkabilityCoefficientA = pOther.mWalkabilityCoefficientA;
|
||||
mWalkabilityCoefficientB = pOther.mWalkabilityCoefficientB;
|
||||
|
|
@ -140,6 +149,11 @@ bool LLPathfindingLinkset::isShowUnmodifiablePhantomWarning(ELinksetUse pLinkset
|
|||
return (!isModifiable() && (isPhantom() != isPhantom(pLinksetUse)));
|
||||
}
|
||||
|
||||
bool LLPathfindingLinkset::isShowPhantomToggleWarning(ELinksetUse pLinksetUse) const
|
||||
{
|
||||
return (isModifiable() && (isPhantom() != isPhantom(pLinksetUse)));
|
||||
}
|
||||
|
||||
bool LLPathfindingLinkset::isShowCannotBeVolumeWarning(ELinksetUse pLinksetUse) const
|
||||
{
|
||||
return (!canBeVolume() && ((pLinksetUse == kMaterialVolume) || (pLinksetUse == kExclusionVolume)));
|
||||
|
|
@ -193,6 +207,13 @@ void LLPathfindingLinkset::parseLinksetData(const LLSD &pLinksetData)
|
|||
llassert(pLinksetData.has(LINKSET_MODIFIABLE_FIELD));
|
||||
llassert(pLinksetData.get(LINKSET_MODIFIABLE_FIELD).isBoolean());
|
||||
mIsModifiable = pLinksetData.get(LINKSET_MODIFIABLE_FIELD).asBoolean();
|
||||
|
||||
mHasIsScripted = pLinksetData.has(LINKSET_IS_SCRIPTED_FIELD);
|
||||
if (mHasIsScripted)
|
||||
{
|
||||
llassert(pLinksetData.get(LINKSET_IS_SCRIPTED_FIELD).isBoolean());
|
||||
mIsScripted = pLinksetData.get(LINKSET_IS_SCRIPTED_FIELD).asBoolean();
|
||||
}
|
||||
}
|
||||
|
||||
void LLPathfindingLinkset::parsePathfindingData(const LLSD &pLinksetData)
|
||||
|
|
|
|||
|
|
@ -63,12 +63,16 @@ public:
|
|||
|
||||
inline ELinksetUse getLinksetUse() const {return mLinksetUse;};
|
||||
|
||||
inline BOOL isScripted() const {return mIsScripted;};
|
||||
inline BOOL hasIsScripted() const {return mHasIsScripted;};
|
||||
|
||||
inline S32 getWalkabilityCoefficientA() const {return mWalkabilityCoefficientA;};
|
||||
inline S32 getWalkabilityCoefficientB() const {return mWalkabilityCoefficientB;};
|
||||
inline S32 getWalkabilityCoefficientC() const {return mWalkabilityCoefficientC;};
|
||||
inline S32 getWalkabilityCoefficientD() const {return mWalkabilityCoefficientD;};
|
||||
|
||||
bool isShowUnmodifiablePhantomWarning(ELinksetUse pLinksetUse) const;
|
||||
bool isShowPhantomToggleWarning(ELinksetUse pLinksetUse) const;
|
||||
bool isShowCannotBeVolumeWarning(ELinksetUse pLinksetUse) const;
|
||||
LLSD encodeAlteredFields(ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const;
|
||||
|
||||
|
|
@ -98,6 +102,8 @@ private:
|
|||
U32 mLandImpact;
|
||||
BOOL mIsModifiable;
|
||||
BOOL mCanBeVolume;
|
||||
BOOL mIsScripted;
|
||||
BOOL mHasIsScripted;
|
||||
ELinksetUse mLinksetUse;
|
||||
S32 mWalkabilityCoefficientA;
|
||||
S32 mWalkabilityCoefficientB;
|
||||
|
|
|
|||
|
|
@ -113,6 +113,20 @@ bool LLPathfindingLinksetList::isShowUnmodifiablePhantomWarning(LLPathfindingLin
|
|||
return isShowWarning;
|
||||
}
|
||||
|
||||
bool LLPathfindingLinksetList::isShowPhantomToggleWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const
|
||||
{
|
||||
bool isShowWarning = false;
|
||||
|
||||
for (const_iterator objectIter = begin(); !isShowWarning && (objectIter != end()); ++objectIter)
|
||||
{
|
||||
const LLPathfindingObjectPtr objectPtr = objectIter->second;
|
||||
const LLPathfindingLinkset *linkset = dynamic_cast<const LLPathfindingLinkset *>(objectPtr.get());
|
||||
isShowWarning = linkset->isShowPhantomToggleWarning(pLinksetUse);
|
||||
}
|
||||
|
||||
return isShowWarning;
|
||||
}
|
||||
|
||||
bool LLPathfindingLinksetList::isShowCannotBeVolumeWarning(LLPathfindingLinkset::ELinksetUse pLinksetUse) const
|
||||
{
|
||||
bool isShowWarning = false;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue