diff options
102 files changed, 1918 insertions, 1954 deletions
@@ -67,3 +67,5 @@ db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2  1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release  345b17e7cf630db77e840b4fe3451bd476d750a3 DRTVWR-32_2.5.0-beta1  54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2 +b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3 +b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3 diff --git a/doc/contributions.txt b/doc/contributions.txt index 519df22b93..1b08b91baf 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -66,6 +66,7 @@ Aleric Inglewood  	SNOW-626  	SNOW-756  	SNOW-764 +	SNOW-800  	VWR-10001  	VWR-10579  	VWR-10759 @@ -91,11 +92,14 @@ Aleric Inglewood  	SNOW-744  	SNOW-766  	STORM-163 +	STORM-955 +	STORM-960  Ales Beaumont  	VWR-9352  	SNOW-240  Alexandrea Fride      STORM-255 +	STORM-960  Alissa Sabre  	VWR-81  	VWR-83 @@ -375,22 +379,27 @@ JB Kraft  Joghert LeSabre  	VWR-64  Jonathan Yap +	STORM-435  	STORM-523  	STORM-596  	STORM-615  	STORM-616 +	STORM-643  	STORM-679  	STORM-723  	STORM-726  	STORM-737 -	STORM-869  	STORM-785  	STORM-812  	STORM-829 +	STORM-844 +	STORM-869  	VWR-17801  	VWR-24347  	STORM-844  	STORM-643 +	STORM-960 +	STORM-953  Kage Pixel  	VWR-11  Ken March @@ -618,6 +627,7 @@ Robin Cornelius  	SNOW-599  	SNOW-747  	STORM-422 +	STORM-960  	VWR-2488  	VWR-9557  	VWR-10579 @@ -666,6 +676,8 @@ Sergen Davies  	CT-321  Shawn Kaufmat  	SNOW-240 +Siana Gearz +	STORM-960  SignpostMarv Martin  	VWR-153  	VWR-154 diff --git a/indra/llcharacter/llanimationstates.cpp b/indra/llcharacter/llanimationstates.cpp index a30113a478..155226cf17 100644 --- a/indra/llcharacter/llanimationstates.cpp +++ b/indra/llcharacter/llanimationstates.cpp @@ -33,145 +33,145 @@  #include "llanimationstates.h"  #include "llstring.h" -const LLUUID ANIM_AGENT_AFRAID				= LLUUID("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); -const LLUUID ANIM_AGENT_AIM_BAZOOKA_R		= LLUUID("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); -const LLUUID ANIM_AGENT_AIM_BOW_L			= LLUUID("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); -const LLUUID ANIM_AGENT_AIM_HANDGUN_R		= LLUUID("3147d815-6338-b932-f011-16b56d9ac18b"); -const LLUUID ANIM_AGENT_AIM_RIFLE_R			= LLUUID("ea633413-8006-180a-c3ba-96dd1d756720"); -const LLUUID ANIM_AGENT_ANGRY				= LLUUID("5747a48e-073e-c331-f6f3-7c2149613d3e"); -const LLUUID ANIM_AGENT_AWAY				= LLUUID("fd037134-85d4-f241-72c6-4f42164fedee"); -const LLUUID ANIM_AGENT_BACKFLIP			= LLUUID("c4ca6188-9127-4f31-0158-23c4e2f93304"); -const LLUUID ANIM_AGENT_BELLY_LAUGH			= LLUUID("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); -const LLUUID ANIM_AGENT_BLOW_KISS			= LLUUID("db84829b-462c-ee83-1e27-9bbee66bd624"); -const LLUUID ANIM_AGENT_BORED				= LLUUID("b906c4ba-703b-1940-32a3-0c7f7d791510"); -const LLUUID ANIM_AGENT_BOW					= LLUUID("82e99230-c906-1403-4d9c-3889dd98daba"); -const LLUUID ANIM_AGENT_BRUSH				= LLUUID("349a3801-54f9-bf2c-3bd0-1ac89772af01"); -const LLUUID ANIM_AGENT_BUSY				= LLUUID("efcf670c-2d18-8128-973a-034ebc806b67"); -const LLUUID ANIM_AGENT_CLAP				= LLUUID("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); -const LLUUID ANIM_AGENT_COURTBOW			= LLUUID("9ba1c942-08be-e43a-fb29-16ad440efc50"); -const LLUUID ANIM_AGENT_CROUCH				= LLUUID("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); -const LLUUID ANIM_AGENT_CROUCHWALK			= LLUUID("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); -const LLUUID ANIM_AGENT_CRY					= LLUUID("92624d3e-1068-f1aa-a5ec-8244585193ed"); -const LLUUID ANIM_AGENT_CUSTOMIZE	 		= LLUUID("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); -const LLUUID ANIM_AGENT_CUSTOMIZE_DONE		= LLUUID("6883a61a-b27b-5914-a61e-dda118a9ee2c"); -const LLUUID ANIM_AGENT_DANCE1				= LLUUID("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); -const LLUUID ANIM_AGENT_DANCE2				= LLUUID("928cae18-e31d-76fd-9cc9-2f55160ff818"); -const LLUUID ANIM_AGENT_DANCE3				= LLUUID("30047778-10ea-1af7-6881-4db7a3a5a114"); -const LLUUID ANIM_AGENT_DANCE4				= LLUUID("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); -const LLUUID ANIM_AGENT_DANCE5				= LLUUID("4bd69a1d-1114-a0b4-625f-84e0a5237155"); -const LLUUID ANIM_AGENT_DANCE6				= LLUUID("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); -const LLUUID ANIM_AGENT_DANCE7				= LLUUID("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); -const LLUUID ANIM_AGENT_DANCE8				= LLUUID("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); -const LLUUID ANIM_AGENT_DEAD				= LLUUID("57abaae6-1d17-7b1b-5f98-6d11a6411276"); -const LLUUID ANIM_AGENT_DRINK				= LLUUID("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); -const LLUUID ANIM_AGENT_EMBARRASSED			= LLUUID("514af488-9051-044a-b3fc-d4dbf76377c6"); -const LLUUID ANIM_AGENT_EXPRESS_AFRAID		= LLUUID("aa2df84d-cf8f-7218-527b-424a52de766e"); -const LLUUID ANIM_AGENT_EXPRESS_ANGER		= LLUUID("1a03b575-9634-b62a-5767-3a679e81f4de"); -const LLUUID ANIM_AGENT_EXPRESS_BORED		= LLUUID("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); -const LLUUID ANIM_AGENT_EXPRESS_CRY			= LLUUID("d535471b-85bf-3b4d-a542-93bea4f59d33"); -const LLUUID ANIM_AGENT_EXPRESS_DISDAIN		= LLUUID("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); -const LLUUID ANIM_AGENT_EXPRESS_EMBARRASSED = LLUUID("0b8c8211-d78c-33e8-fa28-c51a9594e424"); -const LLUUID ANIM_AGENT_EXPRESS_FROWN		= LLUUID("fee3df48-fa3d-1015-1e26-a205810e3001"); -const LLUUID ANIM_AGENT_EXPRESS_KISS		= LLUUID("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); -const LLUUID ANIM_AGENT_EXPRESS_LAUGH		= LLUUID("62570842-0950-96f8-341c-809e65110823"); -const LLUUID ANIM_AGENT_EXPRESS_OPEN_MOUTH	= LLUUID("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); -const LLUUID ANIM_AGENT_EXPRESS_REPULSED	= LLUUID("f76cda94-41d4-a229-2872-e0296e58afe1"); -const LLUUID ANIM_AGENT_EXPRESS_SAD			= LLUUID("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); -const LLUUID ANIM_AGENT_EXPRESS_SHRUG		= LLUUID("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); -const LLUUID ANIM_AGENT_EXPRESS_SMILE		= LLUUID("b7c7c833-e3d3-c4e3-9fc0-131237446312"); -const LLUUID ANIM_AGENT_EXPRESS_SURPRISE	= LLUUID("728646d9-cc79-08b2-32d6-937f0a835c24"); -const LLUUID ANIM_AGENT_EXPRESS_TONGUE_OUT	= LLUUID("835965c6-7f2f-bda2-5deb-2478737f91bf"); -const LLUUID ANIM_AGENT_EXPRESS_TOOTHSMILE	= LLUUID("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); -const LLUUID ANIM_AGENT_EXPRESS_WINK		= LLUUID("da020525-4d94-59d6-23d7-81fdebf33148"); -const LLUUID ANIM_AGENT_EXPRESS_WORRY		= LLUUID("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); -const LLUUID ANIM_AGENT_FALLDOWN			= LLUUID("666307d9-a860-572d-6fd4-c3ab8865c094"); -const LLUUID ANIM_AGENT_FEMALE_RUN_NEW		= LLUUID("85995026-eade-5d78-d364-94a64512cb66"); -const LLUUID ANIM_AGENT_FEMALE_WALK			= LLUUID("f5fc7433-043d-e819-8298-f519a119b688"); -const LLUUID ANIM_AGENT_FEMALE_WALK_NEW		= LLUUID("d60c41d2-7c24-7074-d3fa-6101cea22a51"); -const LLUUID ANIM_AGENT_FINGER_WAG			= LLUUID("c1bc7f36-3ba0-d844-f93c-93be945d644f"); -const LLUUID ANIM_AGENT_FIST_PUMP			= LLUUID("7db00ccd-f380-f3ee-439d-61968ec69c8a"); -const LLUUID ANIM_AGENT_FLY					= LLUUID("aec4610c-757f-bc4e-c092-c6e9caf18daf"); -const LLUUID ANIM_AGENT_FLYSLOW				= LLUUID("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); -const LLUUID ANIM_AGENT_HELLO				= LLUUID("9b29cd61-c45b-5689-ded2-91756b8d76a9"); -const LLUUID ANIM_AGENT_HOLD_BAZOOKA_R		= LLUUID("ef62d355-c815-4816-2474-b1acc21094a6"); -const LLUUID ANIM_AGENT_HOLD_BOW_L			= LLUUID("8b102617-bcba-037b-86c1-b76219f90c88"); -const LLUUID ANIM_AGENT_HOLD_HANDGUN_R		= LLUUID("efdc1727-8b8a-c800-4077-975fc27ee2f2"); -const LLUUID ANIM_AGENT_HOLD_RIFLE_R		= LLUUID("3d94bad0-c55b-7dcc-8763-033c59405d33"); -const LLUUID ANIM_AGENT_HOLD_THROW_R		= LLUUID("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); -const LLUUID ANIM_AGENT_HOVER				= LLUUID("4ae8016b-31b9-03bb-c401-b1ea941db41d"); -const LLUUID ANIM_AGENT_HOVER_DOWN			= LLUUID("20f063ea-8306-2562-0b07-5c853b37b31e"); -const LLUUID ANIM_AGENT_HOVER_UP			= LLUUID("62c5de58-cb33-5743-3d07-9e4cd4352864"); -const LLUUID ANIM_AGENT_IMPATIENT			= LLUUID("5ea3991f-c293-392e-6860-91dfa01278a3"); -const LLUUID ANIM_AGENT_JUMP				= LLUUID("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); -const LLUUID ANIM_AGENT_JUMP_FOR_JOY		= LLUUID("709ea28e-1573-c023-8bf8-520c8bc637fa"); -const LLUUID ANIM_AGENT_KISS_MY_BUTT		= LLUUID("19999406-3a3a-d58c-a2ac-d72e555dcf51"); -const LLUUID ANIM_AGENT_LAND				= LLUUID("7a17b059-12b2-41b1-570a-186368b6aa6f"); -const LLUUID ANIM_AGENT_LAUGH_SHORT			= LLUUID("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); -const LLUUID ANIM_AGENT_MEDIUM_LAND			= LLUUID("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); -const LLUUID ANIM_AGENT_MOTORCYCLE_SIT		= LLUUID("08464f78-3a8e-2944-cba5-0c94aff3af29"); -const LLUUID ANIM_AGENT_MUSCLE_BEACH		= LLUUID("315c3a41-a5f3-0ba4-27da-f893f769e69b"); -const LLUUID ANIM_AGENT_NO					= LLUUID("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); -const LLUUID ANIM_AGENT_NO_UNHAPPY			= LLUUID("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); -const LLUUID ANIM_AGENT_NYAH_NYAH			= LLUUID("f061723d-0a18-754f-66ee-29a44795a32f"); -const LLUUID ANIM_AGENT_ONETWO_PUNCH		= LLUUID("eefc79be-daae-a239-8c04-890f5d23654a"); -const LLUUID ANIM_AGENT_PEACE				= LLUUID("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); -const LLUUID ANIM_AGENT_POINT_ME			= LLUUID("17c024cc-eef2-f6a0-3527-9869876d7752"); -const LLUUID ANIM_AGENT_POINT_YOU			= LLUUID("ec952cca-61ef-aa3b-2789-4d1344f016de"); -const LLUUID ANIM_AGENT_PRE_JUMP			= LLUUID("7a4e87fe-de39-6fcb-6223-024b00893244"); -const LLUUID ANIM_AGENT_PUNCH_LEFT			= LLUUID("f3300ad9-3462-1d07-2044-0fef80062da0"); -const LLUUID ANIM_AGENT_PUNCH_RIGHT			= LLUUID("c8e42d32-7310-6906-c903-cab5d4a34656"); -const LLUUID ANIM_AGENT_REPULSED			= LLUUID("36f81a92-f076-5893-dc4b-7c3795e487cf"); -const LLUUID ANIM_AGENT_ROUNDHOUSE_KICK		= LLUUID("49aea43b-5ac3-8a44-b595-96100af0beda"); -const LLUUID ANIM_AGENT_RPS_COUNTDOWN		= LLUUID("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); -const LLUUID ANIM_AGENT_RPS_PAPER			= LLUUID("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); -const LLUUID ANIM_AGENT_RPS_ROCK			= LLUUID("42dd95d5-0bc6-6392-f650-777304946c0f"); -const LLUUID ANIM_AGENT_RPS_SCISSORS		= LLUUID("16803a9f-5140-e042-4d7b-d28ba247c325"); -const LLUUID ANIM_AGENT_RUN					= LLUUID("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); -const LLUUID ANIM_AGENT_RUN_NEW				= LLUUID("1ab1b236-cd08-21e6-0cbc-0d923fc6eca2"); -const LLUUID ANIM_AGENT_SAD					= LLUUID("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); -const LLUUID ANIM_AGENT_SALUTE				= LLUUID("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); -const LLUUID ANIM_AGENT_SHOOT_BOW_L			= LLUUID("e04d450d-fdb5-0432-fd68-818aaf5935f8"); -const LLUUID ANIM_AGENT_SHOUT				= LLUUID("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); -const LLUUID ANIM_AGENT_SHRUG				= LLUUID("70ea714f-3a97-d742-1b01-590a8fcd1db5"); -const LLUUID ANIM_AGENT_SIT					= LLUUID("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); -const LLUUID ANIM_AGENT_SIT_FEMALE			= LLUUID("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); -const LLUUID ANIM_AGENT_SIT_GENERIC			= LLUUID("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); -const LLUUID ANIM_AGENT_SIT_GROUND 			= LLUUID("1c7600d6-661f-b87b-efe2-d7421eb93c86"); -const LLUUID ANIM_AGENT_SIT_GROUND_CONSTRAINED	= LLUUID("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); -const LLUUID ANIM_AGENT_SIT_TO_STAND		= LLUUID("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); -const LLUUID ANIM_AGENT_SLEEP				= LLUUID("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); -const LLUUID ANIM_AGENT_SMOKE_IDLE			= LLUUID("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); -const LLUUID ANIM_AGENT_SMOKE_INHALE		= LLUUID("6802d553-49da-0778-9f85-1599a2266526"); -const LLUUID ANIM_AGENT_SMOKE_THROW_DOWN	= LLUUID("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); -const LLUUID ANIM_AGENT_SNAPSHOT			= LLUUID("eae8905b-271a-99e2-4c0e-31106afd100c"); -const LLUUID ANIM_AGENT_STAND				= LLUUID("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); -const LLUUID ANIM_AGENT_STANDUP				= LLUUID("3da1d753-028a-5446-24f3-9c9b856d9422"); -const LLUUID ANIM_AGENT_STAND_1				= LLUUID("15468e00-3400-bb66-cecc-646d7c14458e"); -const LLUUID ANIM_AGENT_STAND_2				= LLUUID("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); -const LLUUID ANIM_AGENT_STAND_3				= LLUUID("42b46214-4b44-79ae-deb8-0df61424ff4b"); -const LLUUID ANIM_AGENT_STAND_4				= LLUUID("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); -const LLUUID ANIM_AGENT_STRETCH				= LLUUID("80700431-74ec-a008-14f8-77575e73693f"); -const LLUUID ANIM_AGENT_STRIDE				= LLUUID("1cb562b0-ba21-2202-efb3-30f82cdf9595"); -const LLUUID ANIM_AGENT_SURF				= LLUUID("41426836-7437-7e89-025d-0aa4d10f1d69"); -const LLUUID ANIM_AGENT_SURPRISE			= LLUUID("313b9881-4302-73c0-c7d0-0e7a36b6c224"); -const LLUUID ANIM_AGENT_SWORD_STRIKE		= LLUUID("85428680-6bf9-3e64-b489-6f81087c24bd"); -const LLUUID ANIM_AGENT_TALK				= LLUUID("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); -const LLUUID ANIM_AGENT_TANTRUM				= LLUUID("11000694-3f41-adc2-606b-eee1d66f3724"); -const LLUUID ANIM_AGENT_THROW_R				= LLUUID("aa134404-7dac-7aca-2cba-435f9db875ca"); -const LLUUID ANIM_AGENT_TRYON_SHIRT			= LLUUID("83ff59fe-2346-f236-9009-4e3608af64c1"); -const LLUUID ANIM_AGENT_TURNLEFT			= LLUUID("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); -const LLUUID ANIM_AGENT_TURNRIGHT			= LLUUID("2d6daa51-3192-6794-8e2e-a15f8338ec30"); -const LLUUID ANIM_AGENT_TYPE				= LLUUID("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); -const LLUUID ANIM_AGENT_WALK				= LLUUID("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); -const LLUUID ANIM_AGENT_WALK_NEW			= LLUUID("33339176-7ddc-9397-94a4-bf3403cbc8f5"); -const LLUUID ANIM_AGENT_WHISPER				= LLUUID("7693f268-06c7-ea71-fa21-2b30d6533f8f"); -const LLUUID ANIM_AGENT_WHISTLE				= LLUUID("b1ed7982-c68e-a982-7561-52a88a5298c0"); -const LLUUID ANIM_AGENT_WINK				= LLUUID("869ecdad-a44b-671e-3266-56aef2e3ac2e"); -const LLUUID ANIM_AGENT_WINK_HOLLYWOOD		= LLUUID("c0c4030f-c02b-49de-24ba-2331f43fe41c"); -const LLUUID ANIM_AGENT_WORRY				= LLUUID("9f496bd2-589a-709f-16cc-69bf7df1d36c"); -const LLUUID ANIM_AGENT_YES					= LLUUID("15dd911d-be82-2856-26db-27659b142875"); -const LLUUID ANIM_AGENT_YES_HAPPY			= LLUUID("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); -const LLUUID ANIM_AGENT_YOGA_FLOAT			= LLUUID("42ecd00b-9947-a97c-400a-bbc9174c7aeb"); +LLUUID const ANIM_AGENT_AFRAID                ("6b61c8e8-4747-0d75-12d7-e49ff207a4ca"); +LLUUID const ANIM_AGENT_AIM_BAZOOKA_R         ("b5b4a67d-0aee-30d2-72cd-77b333e932ef"); +LLUUID const ANIM_AGENT_AIM_BOW_L             ("46bb4359-de38-4ed8-6a22-f1f52fe8f506"); +LLUUID const ANIM_AGENT_AIM_HANDGUN_R         ("3147d815-6338-b932-f011-16b56d9ac18b"); +LLUUID const ANIM_AGENT_AIM_RIFLE_R           ("ea633413-8006-180a-c3ba-96dd1d756720"); +LLUUID const ANIM_AGENT_ANGRY                 ("5747a48e-073e-c331-f6f3-7c2149613d3e"); +LLUUID const ANIM_AGENT_AWAY                  ("fd037134-85d4-f241-72c6-4f42164fedee"); +LLUUID const ANIM_AGENT_BACKFLIP              ("c4ca6188-9127-4f31-0158-23c4e2f93304"); +LLUUID const ANIM_AGENT_BELLY_LAUGH           ("18b3a4b5-b463-bd48-e4b6-71eaac76c515"); +LLUUID const ANIM_AGENT_BLOW_KISS             ("db84829b-462c-ee83-1e27-9bbee66bd624"); +LLUUID const ANIM_AGENT_BORED                 ("b906c4ba-703b-1940-32a3-0c7f7d791510"); +LLUUID const ANIM_AGENT_BOW                   ("82e99230-c906-1403-4d9c-3889dd98daba"); +LLUUID const ANIM_AGENT_BRUSH                 ("349a3801-54f9-bf2c-3bd0-1ac89772af01"); +LLUUID const ANIM_AGENT_BUSY                  ("efcf670c-2d18-8128-973a-034ebc806b67"); +LLUUID const ANIM_AGENT_CLAP                  ("9b0c1c4e-8ac7-7969-1494-28c874c4f668"); +LLUUID const ANIM_AGENT_COURTBOW              ("9ba1c942-08be-e43a-fb29-16ad440efc50"); +LLUUID const ANIM_AGENT_CROUCH                ("201f3fdf-cb1f-dbec-201f-7333e328ae7c"); +LLUUID const ANIM_AGENT_CROUCHWALK            ("47f5f6fb-22e5-ae44-f871-73aaaf4a6022"); +LLUUID const ANIM_AGENT_CRY                   ("92624d3e-1068-f1aa-a5ec-8244585193ed"); +LLUUID const ANIM_AGENT_CUSTOMIZE             ("038fcec9-5ebd-8a8e-0e2e-6e71a0a1ac53"); +LLUUID const ANIM_AGENT_CUSTOMIZE_DONE        ("6883a61a-b27b-5914-a61e-dda118a9ee2c"); +LLUUID const ANIM_AGENT_DANCE1                ("b68a3d7c-de9e-fc87-eec8-543d787e5b0d"); +LLUUID const ANIM_AGENT_DANCE2                ("928cae18-e31d-76fd-9cc9-2f55160ff818"); +LLUUID const ANIM_AGENT_DANCE3                ("30047778-10ea-1af7-6881-4db7a3a5a114"); +LLUUID const ANIM_AGENT_DANCE4                ("951469f4-c7b2-c818-9dee-ad7eea8c30b7"); +LLUUID const ANIM_AGENT_DANCE5                ("4bd69a1d-1114-a0b4-625f-84e0a5237155"); +LLUUID const ANIM_AGENT_DANCE6                ("cd28b69b-9c95-bb78-3f94-8d605ff1bb12"); +LLUUID const ANIM_AGENT_DANCE7                ("a54d8ee2-28bb-80a9-7f0c-7afbbe24a5d6"); +LLUUID const ANIM_AGENT_DANCE8                ("b0dc417c-1f11-af36-2e80-7e7489fa7cdc"); +LLUUID const ANIM_AGENT_DEAD                  ("57abaae6-1d17-7b1b-5f98-6d11a6411276"); +LLUUID const ANIM_AGENT_DRINK                 ("0f86e355-dd31-a61c-fdb0-3a96b9aad05f"); +LLUUID const ANIM_AGENT_EMBARRASSED           ("514af488-9051-044a-b3fc-d4dbf76377c6"); +LLUUID const ANIM_AGENT_EXPRESS_AFRAID        ("aa2df84d-cf8f-7218-527b-424a52de766e"); +LLUUID const ANIM_AGENT_EXPRESS_ANGER         ("1a03b575-9634-b62a-5767-3a679e81f4de"); +LLUUID const ANIM_AGENT_EXPRESS_BORED         ("214aa6c1-ba6a-4578-f27c-ce7688f61d0d"); +LLUUID const ANIM_AGENT_EXPRESS_CRY           ("d535471b-85bf-3b4d-a542-93bea4f59d33"); +LLUUID const ANIM_AGENT_EXPRESS_DISDAIN       ("d4416ff1-09d3-300f-4183-1b68a19b9fc1"); +LLUUID const ANIM_AGENT_EXPRESS_EMBARRASSED   ("0b8c8211-d78c-33e8-fa28-c51a9594e424"); +LLUUID const ANIM_AGENT_EXPRESS_FROWN         ("fee3df48-fa3d-1015-1e26-a205810e3001"); +LLUUID const ANIM_AGENT_EXPRESS_KISS          ("1e8d90cc-a84e-e135-884c-7c82c8b03a14"); +LLUUID const ANIM_AGENT_EXPRESS_LAUGH         ("62570842-0950-96f8-341c-809e65110823"); +LLUUID const ANIM_AGENT_EXPRESS_OPEN_MOUTH    ("d63bc1f9-fc81-9625-a0c6-007176d82eb7"); +LLUUID const ANIM_AGENT_EXPRESS_REPULSED      ("f76cda94-41d4-a229-2872-e0296e58afe1"); +LLUUID const ANIM_AGENT_EXPRESS_SAD           ("eb6ebfb2-a4b3-a19c-d388-4dd5c03823f7"); +LLUUID const ANIM_AGENT_EXPRESS_SHRUG         ("a351b1bc-cc94-aac2-7bea-a7e6ebad15ef"); +LLUUID const ANIM_AGENT_EXPRESS_SMILE         ("b7c7c833-e3d3-c4e3-9fc0-131237446312"); +LLUUID const ANIM_AGENT_EXPRESS_SURPRISE      ("728646d9-cc79-08b2-32d6-937f0a835c24"); +LLUUID const ANIM_AGENT_EXPRESS_TONGUE_OUT    ("835965c6-7f2f-bda2-5deb-2478737f91bf"); +LLUUID const ANIM_AGENT_EXPRESS_TOOTHSMILE    ("b92ec1a5-e7ce-a76b-2b05-bcdb9311417e"); +LLUUID const ANIM_AGENT_EXPRESS_WINK          ("da020525-4d94-59d6-23d7-81fdebf33148"); +LLUUID const ANIM_AGENT_EXPRESS_WORRY         ("9c05e5c7-6f07-6ca4-ed5a-b230390c3950"); +LLUUID const ANIM_AGENT_FALLDOWN              ("666307d9-a860-572d-6fd4-c3ab8865c094"); +LLUUID const ANIM_AGENT_FEMALE_RUN_NEW        ("85995026-eade-5d78-d364-94a64512cb66"); +LLUUID const ANIM_AGENT_FEMALE_WALK           ("f5fc7433-043d-e819-8298-f519a119b688"); +LLUUID const ANIM_AGENT_FEMALE_WALK_NEW       ("d60c41d2-7c24-7074-d3fa-6101cea22a51"); +LLUUID const ANIM_AGENT_FINGER_WAG            ("c1bc7f36-3ba0-d844-f93c-93be945d644f"); +LLUUID const ANIM_AGENT_FIST_PUMP             ("7db00ccd-f380-f3ee-439d-61968ec69c8a"); +LLUUID const ANIM_AGENT_FLY                   ("aec4610c-757f-bc4e-c092-c6e9caf18daf"); +LLUUID const ANIM_AGENT_FLYSLOW               ("2b5a38b2-5e00-3a97-a495-4c826bc443e6"); +LLUUID const ANIM_AGENT_HELLO                 ("9b29cd61-c45b-5689-ded2-91756b8d76a9"); +LLUUID const ANIM_AGENT_HOLD_BAZOOKA_R        ("ef62d355-c815-4816-2474-b1acc21094a6"); +LLUUID const ANIM_AGENT_HOLD_BOW_L            ("8b102617-bcba-037b-86c1-b76219f90c88"); +LLUUID const ANIM_AGENT_HOLD_HANDGUN_R        ("efdc1727-8b8a-c800-4077-975fc27ee2f2"); +LLUUID const ANIM_AGENT_HOLD_RIFLE_R          ("3d94bad0-c55b-7dcc-8763-033c59405d33"); +LLUUID const ANIM_AGENT_HOLD_THROW_R          ("7570c7b5-1f22-56dd-56ef-a9168241bbb6"); +LLUUID const ANIM_AGENT_HOVER                 ("4ae8016b-31b9-03bb-c401-b1ea941db41d"); +LLUUID const ANIM_AGENT_HOVER_DOWN            ("20f063ea-8306-2562-0b07-5c853b37b31e"); +LLUUID const ANIM_AGENT_HOVER_UP              ("62c5de58-cb33-5743-3d07-9e4cd4352864"); +LLUUID const ANIM_AGENT_IMPATIENT             ("5ea3991f-c293-392e-6860-91dfa01278a3"); +LLUUID const ANIM_AGENT_JUMP                  ("2305bd75-1ca9-b03b-1faa-b176b8a8c49e"); +LLUUID const ANIM_AGENT_JUMP_FOR_JOY          ("709ea28e-1573-c023-8bf8-520c8bc637fa"); +LLUUID const ANIM_AGENT_KISS_MY_BUTT          ("19999406-3a3a-d58c-a2ac-d72e555dcf51"); +LLUUID const ANIM_AGENT_LAND                  ("7a17b059-12b2-41b1-570a-186368b6aa6f"); +LLUUID const ANIM_AGENT_LAUGH_SHORT           ("ca5b3f14-3194-7a2b-c894-aa699b718d1f"); +LLUUID const ANIM_AGENT_MEDIUM_LAND           ("f4f00d6e-b9fe-9292-f4cb-0ae06ea58d57"); +LLUUID const ANIM_AGENT_MOTORCYCLE_SIT        ("08464f78-3a8e-2944-cba5-0c94aff3af29"); +LLUUID const ANIM_AGENT_MUSCLE_BEACH          ("315c3a41-a5f3-0ba4-27da-f893f769e69b"); +LLUUID const ANIM_AGENT_NO                    ("5a977ed9-7f72-44e9-4c4c-6e913df8ae74"); +LLUUID const ANIM_AGENT_NO_UNHAPPY            ("d83fa0e5-97ed-7eb2-e798-7bd006215cb4"); +LLUUID const ANIM_AGENT_NYAH_NYAH             ("f061723d-0a18-754f-66ee-29a44795a32f"); +LLUUID const ANIM_AGENT_ONETWO_PUNCH          ("eefc79be-daae-a239-8c04-890f5d23654a"); +LLUUID const ANIM_AGENT_PEACE                 ("b312b10e-65ab-a0a4-8b3c-1326ea8e3ed9"); +LLUUID const ANIM_AGENT_POINT_ME              ("17c024cc-eef2-f6a0-3527-9869876d7752"); +LLUUID const ANIM_AGENT_POINT_YOU             ("ec952cca-61ef-aa3b-2789-4d1344f016de"); +LLUUID const ANIM_AGENT_PRE_JUMP              ("7a4e87fe-de39-6fcb-6223-024b00893244"); +LLUUID const ANIM_AGENT_PUNCH_LEFT            ("f3300ad9-3462-1d07-2044-0fef80062da0"); +LLUUID const ANIM_AGENT_PUNCH_RIGHT           ("c8e42d32-7310-6906-c903-cab5d4a34656"); +LLUUID const ANIM_AGENT_REPULSED              ("36f81a92-f076-5893-dc4b-7c3795e487cf"); +LLUUID const ANIM_AGENT_ROUNDHOUSE_KICK       ("49aea43b-5ac3-8a44-b595-96100af0beda"); +LLUUID const ANIM_AGENT_RPS_COUNTDOWN         ("35db4f7e-28c2-6679-cea9-3ee108f7fc7f"); +LLUUID const ANIM_AGENT_RPS_PAPER             ("0836b67f-7f7b-f37b-c00a-460dc1521f5a"); +LLUUID const ANIM_AGENT_RPS_ROCK              ("42dd95d5-0bc6-6392-f650-777304946c0f"); +LLUUID const ANIM_AGENT_RPS_SCISSORS          ("16803a9f-5140-e042-4d7b-d28ba247c325"); +LLUUID const ANIM_AGENT_RUN                   ("05ddbff8-aaa9-92a1-2b74-8fe77a29b445"); +LLUUID const ANIM_AGENT_RUN_NEW               ("1ab1b236-cd08-21e6-0cbc-0d923fc6eca2"); +LLUUID const ANIM_AGENT_SAD                   ("0eb702e2-cc5a-9a88-56a5-661a55c0676a"); +LLUUID const ANIM_AGENT_SALUTE                ("cd7668a6-7011-d7e2-ead8-fc69eff1a104"); +LLUUID const ANIM_AGENT_SHOOT_BOW_L           ("e04d450d-fdb5-0432-fd68-818aaf5935f8"); +LLUUID const ANIM_AGENT_SHOUT                 ("6bd01860-4ebd-127a-bb3d-d1427e8e0c42"); +LLUUID const ANIM_AGENT_SHRUG                 ("70ea714f-3a97-d742-1b01-590a8fcd1db5"); +LLUUID const ANIM_AGENT_SIT                   ("1a5fe8ac-a804-8a5d-7cbd-56bd83184568"); +LLUUID const ANIM_AGENT_SIT_FEMALE            ("b1709c8d-ecd3-54a1-4f28-d55ac0840782"); +LLUUID const ANIM_AGENT_SIT_GENERIC           ("245f3c54-f1c0-bf2e-811f-46d8eeb386e7"); +LLUUID const ANIM_AGENT_SIT_GROUND            ("1c7600d6-661f-b87b-efe2-d7421eb93c86"); +LLUUID const ANIM_AGENT_SIT_GROUND_CONSTRAINED("1a2bd58e-87ff-0df8-0b4c-53e047b0bb6e"); +LLUUID const ANIM_AGENT_SIT_TO_STAND          ("a8dee56f-2eae-9e7a-05a2-6fb92b97e21e"); +LLUUID const ANIM_AGENT_SLEEP                 ("f2bed5f9-9d44-39af-b0cd-257b2a17fe40"); +LLUUID const ANIM_AGENT_SMOKE_IDLE            ("d2f2ee58-8ad1-06c9-d8d3-3827ba31567a"); +LLUUID const ANIM_AGENT_SMOKE_INHALE          ("6802d553-49da-0778-9f85-1599a2266526"); +LLUUID const ANIM_AGENT_SMOKE_THROW_DOWN      ("0a9fb970-8b44-9114-d3a9-bf69cfe804d6"); +LLUUID const ANIM_AGENT_SNAPSHOT              ("eae8905b-271a-99e2-4c0e-31106afd100c"); +LLUUID const ANIM_AGENT_STAND                 ("2408fe9e-df1d-1d7d-f4ff-1384fa7b350f"); +LLUUID const ANIM_AGENT_STANDUP               ("3da1d753-028a-5446-24f3-9c9b856d9422"); +LLUUID const ANIM_AGENT_STAND_1               ("15468e00-3400-bb66-cecc-646d7c14458e"); +LLUUID const ANIM_AGENT_STAND_2               ("370f3a20-6ca6-9971-848c-9a01bc42ae3c"); +LLUUID const ANIM_AGENT_STAND_3               ("42b46214-4b44-79ae-deb8-0df61424ff4b"); +LLUUID const ANIM_AGENT_STAND_4               ("f22fed8b-a5ed-2c93-64d5-bdd8b93c889f"); +LLUUID const ANIM_AGENT_STRETCH               ("80700431-74ec-a008-14f8-77575e73693f"); +LLUUID const ANIM_AGENT_STRIDE                ("1cb562b0-ba21-2202-efb3-30f82cdf9595"); +LLUUID const ANIM_AGENT_SURF                  ("41426836-7437-7e89-025d-0aa4d10f1d69"); +LLUUID const ANIM_AGENT_SURPRISE              ("313b9881-4302-73c0-c7d0-0e7a36b6c224"); +LLUUID const ANIM_AGENT_SWORD_STRIKE          ("85428680-6bf9-3e64-b489-6f81087c24bd"); +LLUUID const ANIM_AGENT_TALK                  ("5c682a95-6da4-a463-0bf6-0f5b7be129d1"); +LLUUID const ANIM_AGENT_TANTRUM               ("11000694-3f41-adc2-606b-eee1d66f3724"); +LLUUID const ANIM_AGENT_THROW_R               ("aa134404-7dac-7aca-2cba-435f9db875ca"); +LLUUID const ANIM_AGENT_TRYON_SHIRT           ("83ff59fe-2346-f236-9009-4e3608af64c1"); +LLUUID const ANIM_AGENT_TURNLEFT              ("56e0ba0d-4a9f-7f27-6117-32f2ebbf6135"); +LLUUID const ANIM_AGENT_TURNRIGHT             ("2d6daa51-3192-6794-8e2e-a15f8338ec30"); +LLUUID const ANIM_AGENT_TYPE                  ("c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"); +LLUUID const ANIM_AGENT_WALK                  ("6ed24bd8-91aa-4b12-ccc7-c97c857ab4e0"); +LLUUID const ANIM_AGENT_WALK_NEW              ("33339176-7ddc-9397-94a4-bf3403cbc8f5"); +LLUUID const ANIM_AGENT_WHISPER               ("7693f268-06c7-ea71-fa21-2b30d6533f8f"); +LLUUID const ANIM_AGENT_WHISTLE               ("b1ed7982-c68e-a982-7561-52a88a5298c0"); +LLUUID const ANIM_AGENT_WINK                  ("869ecdad-a44b-671e-3266-56aef2e3ac2e"); +LLUUID const ANIM_AGENT_WINK_HOLLYWOOD        ("c0c4030f-c02b-49de-24ba-2331f43fe41c"); +LLUUID const ANIM_AGENT_WORRY                 ("9f496bd2-589a-709f-16cc-69bf7df1d36c"); +LLUUID const ANIM_AGENT_YES                   ("15dd911d-be82-2856-26db-27659b142875"); +LLUUID const ANIM_AGENT_YES_HAPPY             ("b8c8b2a3-9008-1771-3bfc-90924955ab2d"); +LLUUID const ANIM_AGENT_YOGA_FLOAT            ("42ecd00b-9947-a97c-400a-bbc9174c7aeb");  LLUUID AGENT_WALK_ANIMS[] = {ANIM_AGENT_WALK, ANIM_AGENT_RUN, ANIM_AGENT_CROUCHWALK, ANIM_AGENT_TURNLEFT, ANIM_AGENT_TURNRIGHT};  S32 NUM_AGENT_WALK_ANIMS = LL_ARRAY_SIZE(AGENT_WALK_ANIMS); diff --git a/indra/llcommon/llavatarconstants.h b/indra/llcommon/llavatarconstants.h index 596b0643ef..f47f447b45 100644 --- a/indra/llcommon/llavatarconstants.h +++ b/indra/llcommon/llavatarconstants.h @@ -46,10 +46,10 @@ const U32 AVATAR_TRANSACTED				= 0x1 << 3;	// whether avatar has actively used p  const U32 AVATAR_ONLINE					= 0x1 << 4; // the online status of this avatar, if known.  const U32 AVATAR_AGEVERIFIED			= 0x1 << 5;	// whether avatar has been age-verified -static const std::string VISIBILITY_DEFAULT("default"); -static const std::string VISIBILITY_HIDDEN("hidden"); -static const std::string VISIBILITY_VISIBLE("visible"); -static const std::string VISIBILITY_INVISIBLE("invisible"); +char const* const VISIBILITY_DEFAULT = "default"; +char const* const VISIBILITY_HIDDEN = "hidden"; +char const* const VISIBILITY_VISIBLE = "visible"; +char const* const VISIBILITY_INVISIBLE = "invisible";  #endif diff --git a/indra/llcommon/lllslconstants.h b/indra/llcommon/lllslconstants.h index 539c807020..9f32598e61 100644 --- a/indra/llcommon/lllslconstants.h +++ b/indra/llcommon/lllslconstants.h @@ -181,7 +181,7 @@ const S32 OBJECT_GROUP = 7;  const S32 OBJECT_CREATOR = 8;  // llTextBox() magic token string - yes this is a hack.  sue me. -const std::string TEXTBOX_MAGIC_TOKEN = "!!llTextBox!!"; +char const* const TEXTBOX_MAGIC_TOKEN = "!!llTextBox!!";  // changed() event flags  const U32	CHANGED_NONE = 0x0; diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h index 925010ac96..1372f48dcf 100644 --- a/indra/llcommon/llmetricperformancetester.h +++ b/indra/llcommon/llmetricperformancetester.h @@ -27,7 +27,7 @@  #ifndef LL_METRICPERFORMANCETESTER_H   #define LL_METRICPERFORMANCETESTER_H  -const std::string DEFAULT_METRIC_NAME("metric"); +char const* const DEFAULT_METRIC_NAME = "metric";  /**   * @class LLMetricPerformanceTesterBasic diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index b4617c5453..d9400fb5b3 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -425,6 +425,11 @@ void LLCondition::wait()  	if (!isLocked())  	{ //mAPRMutexp MUST be locked before calling apr_thread_cond_wait  		apr_thread_mutex_lock(mAPRMutexp); +#if MUTEX_DEBUG +		// avoid asserts on destruction in non-release builds +		U32 id = LLThread::currentID(); +		mIsLocked[id] = TRUE; +#endif  	}  	apr_thread_cond_wait(mAPRCondp, mAPRMutexp);  } diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 2ffc56644f..22ba26f99b 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -607,6 +607,7 @@ void LLCamera::calculateFrustumPlanes(F32 left, F32 right, F32 top, F32 bottom)  	mLocalPlanes[PLANE_BOTTOM].setVec( a, c, b);   	//calculate center and radius squared of frustum in world absolute coordinates +	static LLVector3 const X_AXIS(1.f, 0.f, 0.f);  	mFrustCenter = X_AXIS*mFarPlane*0.5f;  	mFrustCenter = transformToAbsolute(mFrustCenter);  	mFrustRadiusSquared = mFarPlane*0.5f; diff --git a/indra/llmath/llcamera.h b/indra/llmath/llcamera.h index 82d80f1057..ec67b91d05 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -51,15 +51,6 @@ const F32 MIN_FAR_PLANE 	= 0.2f;  static const F32 MIN_FIELD_OF_VIEW = 5.0f * DEG_TO_RAD;  static const F32 MAX_FIELD_OF_VIEW = 175.f * DEG_TO_RAD; -static const LLVector3 X_AXIS(1.f,0.f,0.f); -static const LLVector3 Y_AXIS(0.f,1.f,0.f); -static const LLVector3 Z_AXIS(0.f,0.f,1.f); - -static const LLVector3 NEG_X_AXIS(-1.f,0.f,0.f); -static const LLVector3 NEG_Y_AXIS(0.f,-1.f,0.f); -static const LLVector3 NEG_Z_AXIS(0.f,0.f,-1.f); - -  // An LLCamera is an LLCoorFrame with a view frustum.  // This means that it has several methods for moving it around   // that are inherited from the LLCoordFrame() class : diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index 2f662b757b..c4be176353 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -4179,7 +4179,6 @@ S32 LLVolume::getNumTriangles() const  //-----------------------------------------------------------------------------
  void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,
  										  std::vector<LLVector3> &normals,
 -										  std::vector<S32> &segments,
  										  const LLVector3& obj_cam_vec_in,
  										  const LLMatrix4& mat_in,
  										  const LLMatrix3& norm_mat_in,
 @@ -4198,7 +4197,6 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,  	vertices.clear();
  	normals.clear();
 -	segments.clear();
  	if ((mParams.getSculptType() & LL_SCULPT_TYPE_MASK) == LL_SCULPT_TYPE_MESH)
  	{
 @@ -4399,8 +4397,6 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,  						norm_mat.rotate(n[v2], t);
  						t.normalize3fast();
  						normals.push_back(LLVector3(t[0], t[1], t[2]));
 -
 -						segments.push_back(vertices.size());
  					}
  				}		
  			}
 diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 5bd65c2bf2..60b64b1285 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -986,7 +986,6 @@ public:  	void generateSilhouetteVertices(std::vector<LLVector3> &vertices,   									std::vector<LLVector3> &normals,  -									std::vector<S32> &segments,   									const LLVector3& view_vec,  									const LLMatrix4& mat,  									const LLMatrix3& norm_mat, diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 6473b23e80..2b9bfff536 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -90,13 +90,8 @@ void check_curl_code(CURLcode code)  	if (code != CURLE_OK)  	{  		// linux appears to throw a curl error once per session for a bad initialization -		// at a pretty random time (when enabling cookies). Making curl errors non-asserts -		// for non-windows platforms for now. - Nyx -		#if LL_WINDOWS -			llerrs << "curl error detected: " << curl_easy_strerror(code) << llendl; -		#else -			llinfos << "curl error detected: " << curl_easy_strerror(code) << llendl; -		#endif +		// at a pretty random time (when enabling cookies). +		llinfos << "curl error detected: " << curl_easy_strerror(code) << llendl;  	}  } @@ -105,13 +100,8 @@ void check_curl_multi_code(CURLMcode code)  	if (code != CURLM_OK)  	{  		// linux appears to throw a curl error once per session for a bad initialization -		// at a pretty random time (when enabling cookies). Making curl errors non-asserts -		// for non-windows platforms for now. - Nyx -		#if LL_WINDOWS -			llerrs << "curl multi error detected: " << curl_multi_strerror(code) << llendl; -		#else  -			llinfos << "curl multi error detected: " << curl_multi_strerror(code) << llendl; -		#endif +		// at a pretty random time (when enabling cookies). +		llinfos << "curl multi error detected: " << curl_multi_strerror(code) << llendl;  	}  } diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 595c470a19..26a20cede8 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -64,9 +64,10 @@ LLPluginClassMedia::~LLPluginClassMedia()  	reset();  } -bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug) +bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_dir, const std::string &plugin_filename, bool debug)  {	  	LL_DEBUGS("Plugin") << "launcher: " << launcher_filename << LL_ENDL; +	LL_DEBUGS("Plugin") << "dir: " << plugin_dir << LL_ENDL;  	LL_DEBUGS("Plugin") << "plugin: " << plugin_filename << LL_ENDL;  	mPlugin = new LLPluginProcessParent(this); @@ -77,7 +78,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s  	message.setValue("target", mTarget);  	sendMessage(message); -	mPlugin->init(launcher_filename, plugin_filename, debug); +	mPlugin->init(launcher_filename, plugin_dir, plugin_filename, debug);  	return true;  } diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index c826e13c40..618e928a08 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -45,6 +45,7 @@ public:  	// local initialization, called by the media manager when creating a source  	virtual bool init(const std::string &launcher_filename,  +					  const std::string &plugin_dir,   					  const std::string &plugin_filename,   					  bool debug); diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp index c326961db4..7cde82a20e 100644 --- a/indra/llplugin/llplugininstance.cpp +++ b/indra/llplugin/llplugininstance.cpp @@ -32,6 +32,10 @@  #include "llapr.h" +#if LL_WINDOWS +#include "direct.h"	// needed for _chdir() +#endif +  /** Virtual destructor. */  LLPluginInstanceMessageListener::~LLPluginInstanceMessageListener()  { @@ -73,10 +77,24 @@ LLPluginInstance::~LLPluginInstance()   * @param[in] plugin_file Name of plugin dll/dylib/so. TODO:DOC is this correct? see .h   * @return 0 if successful, APR error code or error code from the plugin's init function on failure.   */ -int LLPluginInstance::load(std::string &plugin_file) +int LLPluginInstance::load(const std::string& plugin_dir, std::string &plugin_file)  {  	pluginInitFunction init_function = NULL; +	if ( plugin_dir.length() ) +	{ +#if LL_WINDOWS +		// VWR-21275: +		// *SOME* Windows systems fail to load the Qt plugins if the current working +		// directory is not the same as the directory with the Qt DLLs in. +		// This should not cause any run time issues since we are changing the cwd for the +		// plugin shell process and not the viewer. +		// Changing back to the previous directory is not necessary since the plugin shell +		// quits once the plugin exits. +		_chdir( plugin_dir.c_str() );	 +#endif +	}; +  	int result = apr_dso_load(&mDSOHandle,  					  plugin_file.c_str(),  					  gAPRPoolp); diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h index 50531ca77f..e6926c3e37 100644 --- a/indra/llplugin/llplugininstance.h +++ b/indra/llplugin/llplugininstance.h @@ -56,7 +56,7 @@ public:  	// Load a plugin dll/dylib/so  	// Returns 0 if successful, APR error code or error code returned from the plugin's init function on failure. -	int load(std::string &plugin_file); +	int load(const std::string& plugin_dir, std::string &plugin_file);  	// Sends a message to the plugin.  	void sendMessage(const std::string &message); diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index 45a86476ac..0beb46d0e5 100644 --- a/indra/llplugin/llpluginprocesschild.cpp +++ b/indra/llplugin/llpluginprocesschild.cpp @@ -139,7 +139,7 @@ void LLPluginProcessChild::idle(void)  				if(!mPluginFile.empty())  				{  					mInstance = new LLPluginInstance(this); -					if(mInstance->load(mPluginFile) == 0) +					if(mInstance->load(mPluginDir, mPluginFile) == 0)  					{  						mHeartbeat.start();  						mHeartbeat.setTimerExpirySec(HEARTBEAT_SECONDS); @@ -348,6 +348,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)  			if(message_name == "load_plugin")  			{  				mPluginFile = parsed.getValue("file"); +				mPluginDir = parsed.getValue("dir");  			}  			else if(message_name == "shm_add")  			{ diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 22ff403ad6..a9d6794e40 100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -92,6 +92,7 @@ private:  	LLSocket::ptr_t mSocket;  	std::string mPluginFile; +	std::string mPluginDir;  	LLPluginInstance *mInstance; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index c002de0462..db4b8b1316 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -157,10 +157,11 @@ void LLPluginProcessParent::errorState(void)  		setState(STATE_ERROR);  } -void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug) +void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_dir, const std::string &plugin_filename, bool debug)  {	  	mProcess.setExecutable(launcher_filename);  	mPluginFile = plugin_filename; +	mPluginDir = plugin_dir;  	mCPUUsage = 0.0f;  	mDebug = debug;	  	setState(STATE_INITIALIZED); @@ -445,6 +446,7 @@ void LLPluginProcessParent::idle(void)  				{  					LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "load_plugin");  					message.setValue("file", mPluginFile); +					message.setValue("dir", mPluginDir);  					sendMessage(message);  				} diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 32394809ef..c66723f175 100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -57,6 +57,7 @@ public:  	~LLPluginProcessParent();  	void init(const std::string &launcher_filename,  +			  const std::string &plugin_dir,  			  const std::string &plugin_filename,   			  bool debug); @@ -151,6 +152,7 @@ private:  	LLProcessLauncher mProcess;  	std::string mPluginFile; +	std::string mPluginDir;  	LLPluginProcessParentOwner *mOwner; diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 9022026248..9354373dba 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -671,7 +671,15 @@ void LLGLManager::initExtensions()  	mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts);  	mHasDepthClamp = ExtensionExists("GL_ARB_depth_clamp", gGLHExts.mSysExts) || ExtensionExists("GL_NV_depth_clamp", gGLHExts.mSysExts);  	// mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad +#ifdef GL_ARB_framebuffer_object  	mHasFramebufferObject = ExtensionExists("GL_ARB_framebuffer_object", gGLHExts.mSysExts); +#else +	mHasFramebufferObject = ExtensionExists("GL_EXT_framebuffer_object", gGLHExts.mSysExts) && +							ExtensionExists("GL_EXT_framebuffer_blit", gGLHExts.mSysExts) && +							ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts) && +							ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts); +#endif +	  	mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts);  	mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);  	mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); @@ -2063,11 +2071,14 @@ void LLGLDepthTest::checkState()  	}  } -LLGLSquashToFarClip::LLGLSquashToFarClip(glh::matrix4f P) +LLGLSquashToFarClip::LLGLSquashToFarClip(glh::matrix4f P, U32 layer)  { + +	F32 depth = 0.99999f - 0.0001f * layer; +  	for (U32 i = 0; i < 4; i++)  	{ -		P.element(2, i) = P.element(3, i) * 0.99999f; +		P.element(2, i) = P.element(3, i) * depth;  	}  	glMatrixMode(GL_PROJECTION); diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index ff4e6078c9..df110613e3 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -320,7 +320,7 @@ private:  class LLGLSquashToFarClip  {  public: -	LLGLSquashToFarClip(glh::matrix4f projection); +	LLGLSquashToFarClip(glh::matrix4f projection, U32 layer = 0);  	~LLGLSquashToFarClip();  }; diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl index eef6556fba..ef823c28b1 100644 --- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl +++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl @@ -9,7 +9,7 @@  attribute vec4 object_weight;   -uniform mat4 matrixPalette[64]; +uniform mat4 matrixPalette[32];  mat4 getObjectSkinnedTransform()  { diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 729132b638..afc268d7a5 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,4 +1,4 @@ -version 25
 +version 26
  // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
  // Should be combined into one table
 @@ -275,6 +275,9 @@ RenderObjectBump			0	0  list OpenGLPre15
  RenderVBOEnable				1	0
 +list OpenGLPre30
 +RenderDeferred				0	0
 +
  list Intel
  RenderAnisotropic			1	0
 @@ -561,3 +564,4 @@ list NVIDIA_GeForce_Go_7800  RenderShaderLightingMaxLevel	1	2
  list NVIDIA_GeForce_Go_7900
  RenderShaderLightingMaxLevel	1	2
 +
 diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 755910f54a..d87c3db111 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -1,557 +1,560 @@ -version 25 - -// NOTE: This is mostly identical to featuretable_mac.txt with a few differences -// Should be combined into one table - -// -// Generates lists of feature mask that can be applied on top of each other. -// -//		//		Begin comments -//		list <name> -//		Starts a feature list named <name> -//		<name> <available> <recommended> -//		<name> is the name of a feature -//		<available> is 0 or 1, whether the feature is available -//		<recommended> is an F32 which is the recommended value -// -// For now, the first list read sets up all of the default values -// - - -// -// All contains everything at their default settings for high end machines -// NOTE: All settings are set to the MIN of applied values, including 'all'! -// -list all -RenderAnisotropic			1	1 -RenderAvatarCloth			1	1 -RenderAvatarLODFactor		1	1.0 -RenderAvatarMaxVisible      1   12 -RenderAvatarVP				1	1 -RenderCubeMap				1	1 -RenderDelayVBUpdate			1	0 -RenderFarClip				1	256 -RenderFlexTimeFactor		1	1.0 -RenderFogRatio				1	4.0 -RenderGamma					1	0 -RenderGlowResolutionPow		1	9 -RenderGround				1	1 -RenderMaxPartCount			1	8192 -RenderNightBrightness		1	1.0 -RenderObjectBump			1	1 -RenderReflectionDetail		1	4 -RenderTerrainDetail			1	1 -RenderTerrainLODFactor		1	2.0 -RenderTransparentWater		1	1 -RenderTreeLODFactor			1	1.0 -RenderUseImpostors			1	1 -RenderVBOEnable				1	1 -RenderVolumeLODFactor		1	2.0 -UseStartScreen				1	1 -UseOcclusion				1	1 -VertexShaderEnable			1	1 -WindLightUseAtmosShaders	1	1 -WLSkyDetail					1	128 -Disregard128DefaultDrawDistance	1	1 -Disregard96DefaultDrawDistance	1	1 -RenderTextureMemoryMultiple		1	1.0 -RenderShaderLightingMaxLevel	1	3 -SkyUseClassicClouds			1	1 -RenderDeferred				1	0 -RenderDeferredSSAO			1	0 -RenderShadowDetail			1	0 -WatchdogDisabled				1	1 -RenderUseStreamVBO			1	1 - -// -// Low Graphics Settings -// -list Low -RenderAnisotropic			1	0 -RenderAvatarCloth			1	0 -RenderAvatarLODFactor		1	0 -RenderAvatarMaxVisible      1   3 -RenderAvatarVP				1	0 -RenderFarClip				1	64 -RenderFlexTimeFactor		1	0 -RenderGlowResolutionPow		1	8 -RenderMaxPartCount			1	0 -RenderObjectBump			1	0 -RenderReflectionDetail		1	0 -RenderTerrainDetail			1	0 -RenderTerrainLODFactor		1	1 -RenderTransparentWater		1	0 -RenderTreeLODFactor			1	0 -RenderUseImpostors			1	1 -RenderVolumeLODFactor		1	0.5 -VertexShaderEnable			1	0 -WindLightUseAtmosShaders	1	0 -WLSkyDetail					1	48 -SkyUseClassicClouds			1	0 -RenderDeferred				1	0 -RenderDeferredSSAO			1	0 -RenderShadowDetail			1	0 - -// -// Mid Graphics Settings -// -list Mid -RenderAnisotropic			1	0 -RenderAvatarCloth			1	0 -RenderAvatarLODFactor		1	0.5 -RenderAvatarVP				1	1 -RenderFarClip				1	96 -RenderFlexTimeFactor		1	1.0 -RenderGlowResolutionPow		1	8 -RenderMaxPartCount			1	2048 -RenderObjectBump			1	1 -RenderReflectionDetail		1	0 -RenderTerrainDetail			1	1 -RenderTerrainLODFactor		1	1.0 -RenderTransparentWater		1	1 -RenderTreeLODFactor			1	0.5 -RenderUseImpostors			1	1 -RenderVolumeLODFactor		1	1.125 -VertexShaderEnable			1	1 -WindLightUseAtmosShaders	1	0 -WLSkyDetail					1	48 -RenderDeferred				1	0 -RenderDeferredSSAO			1	0 -RenderShadowDetail			1	0 - -// -// High Graphics Settings (purty) -// -list High -RenderAnisotropic			1	1 -RenderAvatarCloth			1	0 -RenderAvatarLODFactor		1	1.0 -RenderAvatarVP				1	1 -RenderFarClip				1	128 -RenderFlexTimeFactor		1	1.0 -RenderGlowResolutionPow		1	9 -RenderMaxPartCount			1	4096 -RenderObjectBump			1	1 -RenderReflectionDetail		1	0 -RenderTerrainDetail			1	1 -RenderTerrainLODFactor		1	2.0 -RenderTransparentWater		1	1 -RenderTreeLODFactor			1	0.5 -RenderUseImpostors			1	1 -RenderVolumeLODFactor		1	1.125 -VertexShaderEnable			1	1 -WindLightUseAtmosShaders	1	1 -WLSkyDetail					1	48 -RenderDeferred				1	0 -RenderDeferredSSAO			1	0 -RenderShadowDetail			1	0 - -// -// Ultra graphics (REALLY PURTY!) -// -list Ultra -RenderAnisotropic			1	1 -RenderAvatarCloth			1	1 -RenderAvatarLODFactor		1	1.0 -RenderAvatarVP				1	1 -RenderFarClip				1	256 -RenderFlexTimeFactor		1	1.0 -RenderGlowResolutionPow		1	9 -RenderMaxPartCount			1	8192 -RenderObjectBump			1	1 -RenderReflectionDetail		1	4 -RenderTerrainDetail			1	1 -RenderTerrainLODFactor		1	2.0 -RenderTransparentWater		1	1 -RenderTreeLODFactor			1	1.0 -RenderUseImpostors			1	1 -RenderVolumeLODFactor		1	2.0 -VertexShaderEnable			1	1 -WindLightUseAtmosShaders	1	1 -WLSkyDetail					1	128 -RenderDeferred				1	0 -RenderDeferredSSAO			1	0 -RenderShadowDetail			1	0 - -// -// Class Unknown Hardware (unknown) -// -list Unknown -RenderVBOEnable				1	0 - -// -// Class 0 Hardware (just old) -// -list Class0 -RenderVBOEnable				1	1 - -// -// Class 1 Hardware -// -list Class1 -RenderVBOEnable				1	1 - -// -// Class 2 Hardware (make it purty) -// -list Class2 -RenderVBOEnable				1	1 - -// -// Class 3 Hardware (make it purty) -// -list Class3 -RenderVBOEnable				1	1 - -// -// No Pixel Shaders available -// -list NoPixelShaders -RenderAvatarVP				0	0 -RenderAvatarCloth			0	0 -RenderReflectionDetail		0	0 -VertexShaderEnable			0	0 -WindLightUseAtmosShaders	0	0 -RenderDeferred				0	0 -RenderDeferredSSAO			0	0 -RenderShadowDetail			0	0 - -// -// No Vertex Shaders available -// -list NoVertexShaders -RenderAvatarVP				0	0 -RenderAvatarCloth			0	0 -RenderReflectionDetail		0	0 -VertexShaderEnable			0	0 -WindLightUseAtmosShaders	0	0 -RenderDeferred				0	0 -RenderDeferredSSAO			0	0 -RenderShadowDetail			0	0 - -// -// "Default" setups for safe, low, medium, high -// -list safe -RenderAnisotropic			1	0 -RenderAvatarCloth			0	0 -RenderAvatarVP				0	0 -RenderObjectBump			0	0 -RenderMaxPartCount			1	1024 -RenderTerrainDetail 		1	0 -RenderUseImpostors			0	0 -RenderVBOEnable				1	0 -RenderReflectionDetail		0	0 -WindLightUseAtmosShaders	0	0 -RenderDeferred				0	0 -RenderDeferredSSAO			0	0 -RenderShadowDetail			0	0 - -// -// CPU based feature masks -// - -// 1Ghz or less (equiv) -list CPUSlow -RenderMaxPartCount			1	1024 - -// -// RAM based feature masks -// -list RAM256MB -RenderObjectBump			0	0 - -// -// Graphics card based feature masks -// -list OpenGLPre15 -RenderVBOEnable				1	0 - -list Intel -RenderAnisotropic			1	0 - -list GeForce2 -RenderAnisotropic			1	0 -RenderMaxPartCount			1	2048 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	1 - -list SiS -UseOcclusion				0	0 - - -list Intel_830M -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_845G					 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_855GM				 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_865G			 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_900		 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_915GM	 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_915G					 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			0	0 - -list Intel_945GM			 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_945G -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_950 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_965 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 -RenderUseImpostors			1	0 -UseOcclusion				0	0 - -list Intel_G33 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_G45 -WindLightUseAtmosShaders		0	0 - -list Intel_Bear_Lake	 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_Broadwater  -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_Brookdale	 -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_Eaglelake -WindLightUseAtmosShaders	0	0 - -list Intel_Montara -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - -list Intel_Springdale -RenderTerrainDetail			1	0 -RenderVBOEnable				1	0 - - -list ATI_FireGL_5200 -RenderVBOEnable				1	0 -WindLightUseAtmosShaders	0	0 - - -list ATI_Mobility_Radeon_7xxx -RenderVBOEnable				0	0 - -list ATI_Radeon_7xxx -RenderVBOEnable				0	0 - -list ATI_All-in-Wonder_Radeon -RenderVBOEnable				0	0 - -list ATI_All-in-Wonder_7500 -RenderVBOEnable				0	0 - -list ATI_Mobility_Radeon_9600 -Disregard96DefaultDrawDistance	1	0 - - -/// tweaked ATI to 96 Draw distance - -list ATI_Radeon_9000 -Disregard96DefaultDrawDistance	1	0 -list ATI_Radeon_9200 -Disregard96DefaultDrawDistance	1	0 -list ATI_Radeon_9500 -Disregard96DefaultDrawDistance	1	0 -list ATI_Radeon_9600 -Disregard96DefaultDrawDistance	1	0 - -/// tweaked ATI to 128 draw distance - -list ATI_Radeon_X300  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X400  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X500  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X600  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X700  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X1300  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -UseStartScreen					0	0 -list ATI_Radeon_X1400  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X1500  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -UseStartScreen					0	0 -list ATI_Radeon_X1600  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Radeon_X1700  -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 -list ATI_Mobility_Radeon_X1xxx -Disregard128DefaultDrawDistance	1	0 -RenderVBOEnable				1	0 - -list ATI_Radeon_HD_2300 -Disregard128DefaultDrawDistance	1	0 -list ATI_Radeon_HD_2400 -Disregard128DefaultDrawDistance	1	0 -list ATI_ASUS_AH24xx -Disregard128DefaultDrawDistance	1	0 - - -// Avatar hardware skinning causes invisible avatars -// on various ATI chipsets on drivers before 8.2 - -list ATIOldDriver -RenderAvatarVP				0	0 -RenderAvatarCloth			0	0 - -// ATI cards generally perform better when not using VBOs for streaming data - -list ATI -RenderUseStreamVBO			1	0 -RenderAvatarVP				1	0 - -/// Tweaked NVIDIA - -list NVIDIA_GeForce_FX_5100 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_5200 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_5500 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_5600 -Disregard96DefaultDrawDistance	1	0 - -list NVIDIA_GeForce_FX_Go5100 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_Go5200 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_Go5300 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_Go5500 -Disregard96DefaultDrawDistance	1	0 -list NVIDIA_GeForce_FX_Go5600 -Disregard96DefaultDrawDistance	1	0 - -list NVIDIA_GeForce_6100 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_6200 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_6500 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_6600 -Disregard128DefaultDrawDistance	1	0 - -list NVIDIA_G73 -Disregard128DefaultDrawDistance	1	0 - -list NVIDIA_GeForce_Go_6100 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6200 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6500 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6600 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6700 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6800 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 -list NVIDIA_GeForce_Go_6 -RenderVBOEnable				1	0 -Disregard128DefaultDrawDistance	1	0 - -list NVIDIA_GeForce_7000 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7100 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7200 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7300 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7400 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7500 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7600 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7700 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7800 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_7900 -RenderShaderLightingMaxLevel	1	2 - -list NVIDIA_GeForce_Go_7200 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7300 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7300_LE -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7400 -Disregard128DefaultDrawDistance	1	0 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7600 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7700 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7800 -RenderShaderLightingMaxLevel	1	2 -list NVIDIA_GeForce_Go_7900 -RenderShaderLightingMaxLevel	1	2 - +version 26
 +
 +// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 +// Should be combined into one table
 +
 +//
 +// Generates lists of feature mask that can be applied on top of each other.
 +//
 +//		//		Begin comments
 +//		list <name>
 +//		Starts a feature list named <name>
 +//		<name> <available> <recommended>
 +//		<name> is the name of a feature
 +//		<available> is 0 or 1, whether the feature is available
 +//		<recommended> is an F32 which is the recommended value
 +//
 +// For now, the first list read sets up all of the default values
 +//
 +
 +
 +//
 +// All contains everything at their default settings for high end machines
 +// NOTE: All settings are set to the MIN of applied values, including 'all'!
 +//
 +list all
 +RenderAnisotropic			1	1
 +RenderAvatarCloth			1	1
 +RenderAvatarLODFactor		1	1.0
 +RenderAvatarMaxVisible      1   12
 +RenderAvatarVP				1	1
 +RenderCubeMap				1	1
 +RenderDelayVBUpdate			1	0
 +RenderFarClip				1	256
 +RenderFlexTimeFactor		1	1.0
 +RenderFogRatio				1	4.0
 +RenderGamma					1	0
 +RenderGlowResolutionPow		1	9
 +RenderGround				1	1
 +RenderMaxPartCount			1	8192
 +RenderNightBrightness		1	1.0
 +RenderObjectBump			1	1
 +RenderReflectionDetail		1	4
 +RenderTerrainDetail			1	1
 +RenderTerrainLODFactor		1	2.0
 +RenderTransparentWater		1	1
 +RenderTreeLODFactor			1	1.0
 +RenderUseImpostors			1	1
 +RenderVBOEnable				1	1
 +RenderVolumeLODFactor		1	2.0
 +UseStartScreen				1	1
 +UseOcclusion				1	1
 +VertexShaderEnable			1	1
 +WindLightUseAtmosShaders	1	1
 +WLSkyDetail					1	128
 +Disregard128DefaultDrawDistance	1	1
 +Disregard96DefaultDrawDistance	1	1
 +RenderTextureMemoryMultiple		1	1.0
 +RenderShaderLightingMaxLevel	1	3
 +SkyUseClassicClouds			1	1
 +RenderDeferred				1	0
 +RenderDeferredSSAO			1	0
 +RenderShadowDetail			1	0
 +WatchdogDisabled				1	1
 +RenderUseStreamVBO			1	1
 +
 +//
 +// Low Graphics Settings
 +//
 +list Low
 +RenderAnisotropic			1	0
 +RenderAvatarCloth			1	0
 +RenderAvatarLODFactor		1	0
 +RenderAvatarMaxVisible      1   3
 +RenderAvatarVP				1	0
 +RenderFarClip				1	64
 +RenderFlexTimeFactor		1	0
 +RenderGlowResolutionPow		1	8
 +RenderMaxPartCount			1	0
 +RenderObjectBump			1	0
 +RenderReflectionDetail		1	0
 +RenderTerrainDetail			1	0
 +RenderTerrainLODFactor		1	1
 +RenderTransparentWater		1	0
 +RenderTreeLODFactor			1	0
 +RenderUseImpostors			1	1
 +RenderVolumeLODFactor		1	0.5
 +VertexShaderEnable			1	0
 +WindLightUseAtmosShaders	1	0
 +WLSkyDetail					1	48
 +SkyUseClassicClouds			1	0
 +RenderDeferred				1	0
 +RenderDeferredSSAO			1	0
 +RenderShadowDetail			1	0
 +
 +//
 +// Mid Graphics Settings
 +//
 +list Mid
 +RenderAnisotropic			1	0
 +RenderAvatarCloth			1	0
 +RenderAvatarLODFactor		1	0.5
 +RenderAvatarVP				1	1
 +RenderFarClip				1	96
 +RenderFlexTimeFactor		1	1.0
 +RenderGlowResolutionPow		1	8
 +RenderMaxPartCount			1	2048
 +RenderObjectBump			1	1
 +RenderReflectionDetail		1	0
 +RenderTerrainDetail			1	1
 +RenderTerrainLODFactor		1	1.0
 +RenderTransparentWater		1	1
 +RenderTreeLODFactor			1	0.5
 +RenderUseImpostors			1	1
 +RenderVolumeLODFactor		1	1.125
 +VertexShaderEnable			1	1
 +WindLightUseAtmosShaders	1	0
 +WLSkyDetail					1	48
 +RenderDeferred				1	0
 +RenderDeferredSSAO			1	0
 +RenderShadowDetail			1	0
 +
 +//
 +// High Graphics Settings (purty)
 +//
 +list High
 +RenderAnisotropic			1	1
 +RenderAvatarCloth			1	0
 +RenderAvatarLODFactor		1	1.0
 +RenderAvatarVP				1	1
 +RenderFarClip				1	128
 +RenderFlexTimeFactor		1	1.0
 +RenderGlowResolutionPow		1	9
 +RenderMaxPartCount			1	4096
 +RenderObjectBump			1	1
 +RenderReflectionDetail		1	0
 +RenderTerrainDetail			1	1
 +RenderTerrainLODFactor		1	2.0
 +RenderTransparentWater		1	1
 +RenderTreeLODFactor			1	0.5
 +RenderUseImpostors			1	1
 +RenderVolumeLODFactor		1	1.125
 +VertexShaderEnable			1	1
 +WindLightUseAtmosShaders	1	1
 +WLSkyDetail					1	48
 +RenderDeferred				1	0
 +RenderDeferredSSAO			1	0
 +RenderShadowDetail			1	0
 +
 +//
 +// Ultra graphics (REALLY PURTY!)
 +//
 +list Ultra
 +RenderAnisotropic			1	1
 +RenderAvatarCloth			1	1
 +RenderAvatarLODFactor		1	1.0
 +RenderAvatarVP				1	1
 +RenderFarClip				1	256
 +RenderFlexTimeFactor		1	1.0
 +RenderGlowResolutionPow		1	9
 +RenderMaxPartCount			1	8192
 +RenderObjectBump			1	1
 +RenderReflectionDetail		1	4
 +RenderTerrainDetail			1	1
 +RenderTerrainLODFactor		1	2.0
 +RenderTransparentWater		1	1
 +RenderTreeLODFactor			1	1.0
 +RenderUseImpostors			1	1
 +RenderVolumeLODFactor		1	2.0
 +VertexShaderEnable			1	1
 +WindLightUseAtmosShaders	1	1
 +WLSkyDetail					1	128
 +RenderDeferred				1	0
 +RenderDeferredSSAO			1	0
 +RenderShadowDetail			1	0
 +
 +//
 +// Class Unknown Hardware (unknown)
 +//
 +list Unknown
 +RenderVBOEnable				1	0
 +
 +//
 +// Class 0 Hardware (just old)
 +//
 +list Class0
 +RenderVBOEnable				1	1
 +
 +//
 +// Class 1 Hardware
 +//
 +list Class1
 +RenderVBOEnable				1	1
 +
 +//
 +// Class 2 Hardware (make it purty)
 +//
 +list Class2
 +RenderVBOEnable				1	1
 +
 +//
 +// Class 3 Hardware (make it purty)
 +//
 +list Class3
 +RenderVBOEnable				1	1
 +
 +//
 +// No Pixel Shaders available
 +//
 +list NoPixelShaders
 +RenderAvatarVP				0	0
 +RenderAvatarCloth			0	0
 +RenderReflectionDetail		0	0
 +VertexShaderEnable			0	0
 +WindLightUseAtmosShaders	0	0
 +RenderDeferred				0	0
 +RenderDeferredSSAO			0	0
 +RenderShadowDetail			0	0
 +
 +//
 +// No Vertex Shaders available
 +//
 +list NoVertexShaders
 +RenderAvatarVP				0	0
 +RenderAvatarCloth			0	0
 +RenderReflectionDetail		0	0
 +VertexShaderEnable			0	0
 +WindLightUseAtmosShaders	0	0
 +RenderDeferred				0	0
 +RenderDeferredSSAO			0	0
 +RenderShadowDetail			0	0
 +
 +//
 +// "Default" setups for safe, low, medium, high
 +//
 +list safe
 +RenderAnisotropic			1	0
 +RenderAvatarCloth			0	0
 +RenderAvatarVP				0	0
 +RenderObjectBump			0	0
 +RenderMaxPartCount			1	1024
 +RenderTerrainDetail 		1	0
 +RenderUseImpostors			0	0
 +RenderVBOEnable				1	0
 +RenderReflectionDetail		0	0
 +WindLightUseAtmosShaders	0	0
 +RenderDeferred				0	0
 +RenderDeferredSSAO			0	0
 +RenderShadowDetail			0	0
 +
 +//
 +// CPU based feature masks
 +//
 +
 +// 1Ghz or less (equiv)
 +list CPUSlow
 +RenderMaxPartCount			1	1024
 +
 +//
 +// RAM based feature masks
 +//
 +list RAM256MB
 +RenderObjectBump			0	0
 +
 +//
 +// Graphics card based feature masks
 +//
 +list OpenGLPre15
 +RenderVBOEnable				1	0
 +
 +list OpenGLPre30
 +RenderDeferred				0	0
 +
 +list Intel
 +RenderAnisotropic			1	0
 +
 +list GeForce2
 +RenderAnisotropic			1	0
 +RenderMaxPartCount			1	2048
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	1
 +
 +list SiS
 +UseOcclusion				0	0
 +
 +
 +list Intel_830M
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_845G					
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_855GM				
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_865G			
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_900		
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_915GM	
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_915G					
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			0	0
 +
 +list Intel_945GM			
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_945G
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_950
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_965
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +RenderUseImpostors			1	0
 +UseOcclusion				0	0
 +
 +list Intel_G33
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_G45
 +WindLightUseAtmosShaders		0	0
 +
 +list Intel_Bear_Lake	
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_Broadwater 
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_Brookdale	
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_Eaglelake
 +WindLightUseAtmosShaders	0	0
 +
 +list Intel_Montara
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +list Intel_Springdale
 +RenderTerrainDetail			1	0
 +RenderVBOEnable				1	0
 +
 +
 +list ATI_FireGL_5200
 +RenderVBOEnable				1	0
 +WindLightUseAtmosShaders	0	0
 +
 +
 +list ATI_Mobility_Radeon_7xxx
 +RenderVBOEnable				0	0
 +
 +list ATI_Radeon_7xxx
 +RenderVBOEnable				0	0
 +
 +list ATI_All-in-Wonder_Radeon
 +RenderVBOEnable				0	0
 +
 +list ATI_All-in-Wonder_7500
 +RenderVBOEnable				0	0
 +
 +list ATI_Mobility_Radeon_9600
 +Disregard96DefaultDrawDistance	1	0
 +
 +
 +/// tweaked ATI to 96 Draw distance
 +
 +list ATI_Radeon_9000
 +Disregard96DefaultDrawDistance	1	0
 +list ATI_Radeon_9200
 +Disregard96DefaultDrawDistance	1	0
 +list ATI_Radeon_9500
 +Disregard96DefaultDrawDistance	1	0
 +list ATI_Radeon_9600
 +Disregard96DefaultDrawDistance	1	0
 +
 +/// tweaked ATI to 128 draw distance
 +
 +list ATI_Radeon_X300 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X400 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X500 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X600 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X700 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X1300 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +UseStartScreen					0	0
 +list ATI_Radeon_X1400 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X1500 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +UseStartScreen					0	0
 +list ATI_Radeon_X1600 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Radeon_X1700 
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +list ATI_Mobility_Radeon_X1xxx
 +Disregard128DefaultDrawDistance	1	0
 +RenderVBOEnable				1	0
 +
 +list ATI_Radeon_HD_2300
 +Disregard128DefaultDrawDistance	1	0
 +list ATI_Radeon_HD_2400
 +Disregard128DefaultDrawDistance	1	0
 +list ATI_ASUS_AH24xx
 +Disregard128DefaultDrawDistance	1	0
 +
 +
 +// Avatar hardware skinning causes invisible avatars
 +// on various ATI chipsets on drivers before 8.2
 +
 +list ATIOldDriver
 +RenderAvatarVP				0	0
 +RenderAvatarCloth			0	0
 +
 +// ATI cards generally perform better when not using VBOs for streaming data
 +
 +list ATI
 +RenderUseStreamVBO			1	0
 +RenderAvatarVP				1	0
 +
 +/// Tweaked NVIDIA
 +
 +list NVIDIA_GeForce_FX_5100
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_5200
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_5500
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_5600
 +Disregard96DefaultDrawDistance	1	0
 +
 +list NVIDIA_GeForce_FX_Go5100
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_Go5200
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_Go5300
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_Go5500
 +Disregard96DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_FX_Go5600
 +Disregard96DefaultDrawDistance	1	0
 +
 +list NVIDIA_GeForce_6100
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_6200
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_6500
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_6600
 +Disregard128DefaultDrawDistance	1	0
 +
 +list NVIDIA_G73
 +Disregard128DefaultDrawDistance	1	0
 +
 +list NVIDIA_GeForce_Go_6100
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6200
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6500
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6600
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6700
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6800
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +list NVIDIA_GeForce_Go_6
 +RenderVBOEnable				1	0
 +Disregard128DefaultDrawDistance	1	0
 +
 +list NVIDIA_GeForce_7000
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7100
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7200
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7300
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7400
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7500
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7600
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7700
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7800
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_7900
 +RenderShaderLightingMaxLevel	1	2
 +
 +list NVIDIA_GeForce_Go_7200
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7300
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7300_LE
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7400
 +Disregard128DefaultDrawDistance	1	0
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7600
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7700
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7800
 +RenderShaderLightingMaxLevel	1	2
 +list NVIDIA_GeForce_Go_7900
 +RenderShaderLightingMaxLevel	1	2
 +
 diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index c98bcbda45..5ff22f89ab 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -899,31 +899,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  				}  			} -			LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE); -			S32 text_heigth = 0; -			if(text_editor != NULL) -			{ -				text_heigth = text_editor->getTextBoundingRect().getHeight(); -			} -  			//Prepare the rect for the view  			LLRect target_rect = mEditor->getDocumentView()->getRect();  			// squeeze down the widget by subtracting padding off left and right  			target_rect.mLeft += mLeftWidgetPad + mEditor->getHPad();  			target_rect.mRight -= mRightWidgetPad; -			notify_box->reshape(target_rect.getWidth(), -					notify_box->getRect().getHeight()); +			notify_box->reshape(target_rect.getWidth(),	notify_box->getRect().getHeight());  			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom); -			if (text_editor != NULL) -			{ -				S32 text_heigth_delta = -						text_editor->getTextBoundingRect().getHeight() -								- text_heigth; -				notify_box->reshape(target_rect.getWidth(), -								notify_box->getRect().getHeight() + text_heigth_delta); -			} -  			LLInlineViewSegment::Params params;  			params.view = notify_box;  			params.left_pad = mLeftWidgetPad; diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index 6f02192d0a..d77ebc5367 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -185,6 +185,10 @@ BOOL LLColorSwatchCtrl::handleMouseUp(S32 x, S32 y, MASK mask)  			llassert(getEnabled());  			llassert(getVisible()); +			// Focus the widget now in order to return the focus +			// after the color picker is closed. +			setFocus(TRUE); +  			showPicker(FALSE);  		}  	} diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index 9d944ee213..d3fd9ead0d 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -47,14 +47,14 @@ public:  	{  		// Correspond to LLPipeline render type  		POOL_SIMPLE = 1, +		POOL_GROUND, +		POOL_FULLBRIGHT, +		POOL_BUMP,  		POOL_TERRAIN,	 -		POOL_TREE,  		POOL_SKY,  		POOL_WL_SKY, -		POOL_GROUND, +		POOL_TREE,  		POOL_GRASS, -		POOL_FULLBRIGHT, -		POOL_BUMP,  		POOL_INVISIBLE, // see below *  		POOL_AVATAR,  		POOL_VOIDWATER, diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 4e16cc4217..edfc4538a1 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -745,6 +745,10 @@ void LLFeatureManager::applyBaseMasks()  	{  		maskFeatures("OpenGLPre15");  	} +	if (gGLManager.mGLVersion < 3.f) +	{ +		maskFeatures("OpenGLPre30"); +	}  	// now mask by gpu string  	// Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index f209950cfa..8c0ed29855 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -420,9 +420,9 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)  		{  			wcsncpy( mFilesW,L"untitled.jpeg", FILENAME_BUFFER_SIZE);	/*Flawfinder: ignore*/  		} -		mOFN.lpstrDefExt = L"jpeg"; +		mOFN.lpstrDefExt = L"jpg";  		mOFN.lpstrFilter = -			L"JPEG Images (*.jpeg)\0*.jpeg\0" \ +			L"JPEG Images (*.jpg *.jpeg)\0*.jpg;*.jpeg\0" \  			L"\0";  		break;  	case FFSAVE_AVI: diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 952643326a..3673a28163 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1043,8 +1043,10 @@ void LLFloaterPreference::refreshEnabledState()  	//Deferred/SSAO/Shadows  	LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders"); -	if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") && -		shaders) +	 +	if (LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&  +		shaders &&  +		gGLManager.mHasFramebufferObject)  	{  		BOOL enabled = (ctrl_wind_light->get()) ? TRUE : FALSE; @@ -1127,7 +1129,8 @@ void LLFloaterPreference::disableUnavailableSettings()  	}  	// disabled deferred -	if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred")) +	if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") || +		!gGLManager.mHasFramebufferObject)  	{  		ctrl_shadows->setEnabled(FALSE);  		ctrl_shadows->setValue(0); @@ -1545,6 +1548,7 @@ LLPanelPreference::LLPanelPreference()  : LLPanel()  {  	mCommitCallbackRegistrar.add("Pref.setControlFalse",	boost::bind(&LLPanelPreference::setControlFalse,this, _2)); +	mCommitCallbackRegistrar.add("Pref.updateMediaAutoPlayCheckbox",	boost::bind(&LLPanelPreference::updateMediaAutoPlayCheckbox, this, _1));  }  //virtual @@ -1706,6 +1710,21 @@ void LLPanelPreference::setControlFalse(const LLSD& user_data)  		control->set(LLSD(FALSE));  } +void LLPanelPreference::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl) +{ +	std::string name = ctrl->getName(); + +	// Disable "Allow Media to auto play" only when both +	// "Streaming Music" and "Media" are unchecked. STORM-513. +	if ((name == "enable_music") || (name == "enable_media")) +	{ +		bool music_enabled = getChild<LLCheckBoxCtrl>("enable_music")->get(); +		bool media_enabled = getChild<LLCheckBoxCtrl>("enable_media")->get(); + +		getChild<LLCheckBoxCtrl>("media_auto_play_btn")->setEnabled(music_enabled || media_enabled); +	} +} +  static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");  BOOL LLPanelPreferenceGraphics::postBuild() diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 784033ae95..46014804ec 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -189,6 +189,10 @@ public:  	void setControlFalse(const LLSD& user_data);  	virtual void setHardwareDefaults(){}; +	// Disables "Allow Media to auto play" check box only when both +	// "Streaming Music" and "Media" are unchecked. Otherwise enables it. +	void updateMediaAutoPlayCheckbox(LLUICtrl* ctrl); +  	// This function squirrels away the current values of the controls so that  	// cancel() can restore them.  	virtual void saveSettings(); diff --git a/indra/newview/llfloaterregiondebugconsole.cpp b/indra/newview/llfloaterregiondebugconsole.cpp index b3b7645dd4..ada0dcf569 100644 --- a/indra/newview/llfloaterregiondebugconsole.cpp +++ b/indra/newview/llfloaterregiondebugconsole.cpp @@ -3,31 +3,25 @@   * @author Brad Kittenbrink <brad@lindenlab.com>   * @brief Quick and dirty console for region debug settings   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010-2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index c9b99d83ff..bef830a93e 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -414,63 +414,82 @@ void LLFloaterTools::refresh()  	// Refresh object and prim count labels  	LLLocale locale(LLLocale::USER_LOCALE); -	// Get the number of objects selected -	std::string root_object_count_string; -	std::string object_count_string; - -	LLResMgr::getInstance()->getIntegerString( -		root_object_count_string, -		LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); -	LLResMgr::getInstance()->getIntegerString( -		object_count_string, -		LLSelectMgr::getInstance()->getSelection()->getObjectCount()); - -	F32 obj_cost = -		LLSelectMgr::getInstance()->getSelection()->getSelectedObjectCost(); -	F32 link_cost = -		LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetCost(); -	F32 obj_physics_cost = -		LLSelectMgr::getInstance()->getSelection()->getSelectedPhysicsCost(); -	F32 link_physics_cost = -		LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetPhysicsCost(); - -	// Update the text for the counts -	childSetTextArg( -		"linked_set_count", -		"[COUNT]", -		root_object_count_string); -	childSetTextArg("object_count", "[COUNT]", object_count_string); - -	// Update the text for the resource costs -	childSetTextArg("linked_set_cost","[COST]",llformat("%.1f", link_cost)); -	childSetTextArg("object_cost", "[COST]", llformat("%.1f", obj_cost)); -	childSetTextArg("linked_set_cost","[PHYSICS]",llformat("%.1f", link_physics_cost)); -	childSetTextArg("object_cost", "[PHYSICS]", llformat("%.1f", obj_physics_cost)); - -	// Display rendering cost if needed -	if (sShowObjectCost) -	{ -		std::string prim_cost_string; -		S32 cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectRenderCost(); -		LLResMgr::getInstance()->getIntegerString(prim_cost_string, cost); -		getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string); +	if ((gAgent.getRegion() && gAgent.getRegion()->getCapability("GetMesh").empty()) || !gSavedSettings.getBOOL("MeshEnabled")) +	{		 +		std::string obj_count_string; +		LLResMgr::getInstance()->getIntegerString(obj_count_string, LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); +		getChild<LLUICtrl>("obj_count")->setTextArg("[COUNT]", obj_count_string);	 +		std::string prim_count_string; +		LLResMgr::getInstance()->getIntegerString(prim_count_string, LLSelectMgr::getInstance()->getSelection()->getObjectCount()); +		getChild<LLUICtrl>("prim_count")->setTextArg("[COUNT]", prim_count_string); + +		// calculate selection rendering cost +		if (sShowObjectCost) +		{ +			std::string prim_cost_string; +			LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost()); +			getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string); +		} +		 +		// disable the object and prim counts if nothing selected +		bool have_selection = ! LLSelectMgr::getInstance()->getSelection()->isEmpty(); +		getChildView("obj_count")->setEnabled(have_selection); +		getChildView("prim_count")->setEnabled(have_selection); +		getChildView("RenderingCost")->setEnabled(have_selection && sShowObjectCost);  	} +	else +	{ +		// Get the number of objects selected +		std::string root_object_count_string; +		std::string object_count_string; + +		LLResMgr::getInstance()->getIntegerString( +			root_object_count_string, +			LLSelectMgr::getInstance()->getSelection()->getRootObjectCount()); +		LLResMgr::getInstance()->getIntegerString( +			object_count_string, +			LLSelectMgr::getInstance()->getSelection()->getObjectCount()); + +		F32 obj_cost = +			LLSelectMgr::getInstance()->getSelection()->getSelectedObjectCost(); +		F32 link_cost = +			LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetCost(); +		F32 obj_physics_cost = +			LLSelectMgr::getInstance()->getSelection()->getSelectedPhysicsCost(); +		F32 link_physics_cost = +			LLSelectMgr::getInstance()->getSelection()->getSelectedLinksetPhysicsCost(); + +		// Update the text for the counts +		childSetTextArg( +			"linked_set_count", +			"[COUNT]", +			root_object_count_string); +		childSetTextArg("object_count", "[COUNT]", object_count_string); + +		// Update the text for the resource costs +		childSetTextArg("linked_set_cost","[COST]",llformat("%.1f", link_cost)); +		childSetTextArg("object_cost", "[COST]", llformat("%.1f", obj_cost)); +		childSetTextArg("linked_set_cost","[PHYSICS]",llformat("%.1f", link_physics_cost)); +		childSetTextArg("object_cost", "[PHYSICS]", llformat("%.1f", obj_physics_cost)); + +		// Display rendering cost if needed +		if (sShowObjectCost) +		{ +			std::string prim_cost_string; +			LLResMgr::getInstance()->getIntegerString(prim_cost_string, calcRenderCost()); +			getChild<LLUICtrl>("RenderingCost")->setTextArg("[COUNT]", prim_cost_string); +		} -	// disable the object and prim counts if nothing selected -	bool have_selection = ! LLSelectMgr::getInstance()->getSelection()->isEmpty(); -	childSetEnabled("linked_set_count", have_selection); -	childSetEnabled("object_count", have_selection); -	childSetEnabled("linked_set_cost", have_selection); -	childSetEnabled("object_cost", have_selection); - -	bool enable_mesh = gSavedSettings.getBOOL("MeshEnabled") &&  -					   !gAgent.getRegion()->getCapability("GetMesh").empty(); +		// disable the object and prim counts if nothing selected +		bool have_selection = ! LLSelectMgr::getInstance()->getSelection()->isEmpty(); +		childSetEnabled("linked_set_count", have_selection); +		childSetEnabled("object_count", have_selection); +		childSetEnabled("linked_set_cost", have_selection); +		childSetEnabled("object_cost", have_selection); +		getChildView("RenderingCost")->setEnabled(have_selection && sShowObjectCost); +	} -	getChildView("linked_set_count")->setVisible(enable_mesh); -	getChildView("linked_set_cost")->setVisible(enable_mesh); -	getChildView("object_count")->setVisible(enable_mesh); -	getChildView("object_cost")->setVisible(enable_mesh);  	// Refresh child tabs  	mPanelPermissions->refresh(); @@ -754,8 +773,16 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)  		getChildView("Strength:")->setVisible( land_visible);  	} -	getChildView("obj_count")->setVisible( !land_visible); -	getChildView("prim_count")->setVisible( !land_visible); +	bool show_mesh_cost = !gAgent.getRegion()->getCapability("GetMesh").empty() && gSavedSettings.getBOOL("MeshEnabled"); + +	getChildView("obj_count")->setVisible( !land_visible && !show_mesh_cost); +	getChildView("prim_count")->setVisible( !land_visible && !show_mesh_cost); +	getChildView("linked_set_count")->setVisible( !land_visible && show_mesh_cost); +	getChildView("linked_set_cost")->setVisible( !land_visible && show_mesh_cost); +	getChildView("object_count")->setVisible( !land_visible && show_mesh_cost); +	getChildView("object_cost")->setVisible( !land_visible && show_mesh_cost); +	getChildView("RenderingCost")->setVisible( !land_visible && sShowObjectCost); +	  	mTab->setVisible(!land_visible);  	mPanelLandInfo->setVisible(land_visible);  } @@ -1010,6 +1037,35 @@ void LLFloaterTools::onClickGridOptions()  	//floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE);  } +S32 LLFloaterTools::calcRenderCost() +{ +       S32 cost = 0; +       std::set<LLUUID> textures; + +       for (LLObjectSelection::iterator selection_iter = LLSelectMgr::getInstance()->getSelection()->begin(); +                 selection_iter != LLSelectMgr::getInstance()->getSelection()->end(); +                 ++selection_iter) +       { +               LLSelectNode *select_node = *selection_iter; +               if (select_node) +               { +                       LLViewerObject *vobj = select_node->getObject(); +                       if (vobj->getVolume()) +                       { +                               LLVOVolume* volume = (LLVOVolume*) vobj; + +                               cost += volume->getRenderCost(textures); +							   cost += textures.size() * LLVOVolume::ARC_TEXTURE_COST; +							   textures.clear(); +                       } +               } +       } + + +       return cost; +} + +  // static  void LLFloaterTools::setEditTool(void* tool_pointer)  { diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index d5595445e0..87c3d2ab47 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -114,6 +114,7 @@ private:  	static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);  	static void setObjectType( LLPCode pcode );  	void onClickGridOptions(); +	S32 calcRenderCost();  public:  	LLButton		*mBtnFocus; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 9623554200..0ef502b81b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2719,6 +2719,15 @@ void LLIMMgr::inviteToSession(  		{  			LLFloaterReg::showInstance("incoming_call", payload, FALSE);  		} +		 +		// Add the caller to the Recent List here (at this point  +		// "incoming_call" floater is shown and the recipient can +		// reject the call), because even if a recipient will reject +		// the call, the caller should be added to the recent list +		// anyway. STORM-507. +		if(type == IM_SESSION_P2P_INVITE) +			LLRecentPeople::instance().add(caller_id); +		  		mPendingInvitations[session_id.asString()] = LLSD();  	}  } diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index c50afb0e9d..21b1cc77ad 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3246,7 +3246,10 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,  	}  	else if(LLToolDragAndDrop::SOURCE_NOTECARD == source)  	{ -		accept = TRUE; +		// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder +		// because they must contain only links to wearable items. +		accept = !(move_is_into_current_outfit || move_is_into_outfit); +  		if(drop)  		{  			copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(), diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 43a16f8ed8..f1c7e952d1 100644 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -901,32 +901,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VZ] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  							}  						}  					} @@ -934,32 +934,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Left") : LLTrans::getString("North"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Left") : LLTrans::getString("Direction_North"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Right") : LLTrans::getString("South"), LLColor4::white); +							renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Right") : LLTrans::getString("Direction_South"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VX] > 0.f)  							{ -								renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +								renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  							}  						}  					} @@ -967,32 +967,32 @@ void LLManipRotate::renderSnapGuides()  					{  						if (i == 0)  						{ -							renderTickText(text_point, LLTrans::getString("Up"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Up"), LLColor4::white);  						}  						else if (i == 16)  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  						}  						else if (i == 32)  						{ -							renderTickText(text_point, LLTrans::getString("Down"), LLColor4::white); +							renderTickText(text_point, LLTrans::getString("Direction_Down"), LLColor4::white);  						}  						else  						{  							if (constraint_axis.mV[VY] > 0.f)  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Back") : LLTrans::getString("West"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Back") : LLTrans::getString("Direction_West"), LLColor4::white);  							}  							else  							{ -								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Forward") : LLTrans::getString("East"), LLColor4::white); +								renderTickText(text_point, mObjectSelection->isAttachment() ? LLTrans::getString("Direction_Forward") : LLTrans::getString("Direction_East"), LLColor4::white);  							}  						}  					} diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index edcf249a21..a2b0ac09af 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -470,7 +470,12 @@ LLMeshRepoThread::LLMeshRepoThread()  LLMeshRepoThread::~LLMeshRepoThread()  { -	 +	delete mMutex; +	mMutex = NULL; +	delete mHeaderMutex; +	mHeaderMutex = NULL; +	delete mSignal; +	mSignal = NULL;  }  void LLMeshRepoThread::run() @@ -573,6 +578,11 @@ void LLMeshRepoThread::run()  		}  	} +	if (mSignal->isLocked()) +	{ //make sure to let go of the mutex associated with the given signal before shutting down +		mSignal->unlock(); +	} +  	res = LLConvexDecomposition::quitThread();  	if (res != LLCD_OK)  	{ @@ -580,7 +590,7 @@ void LLMeshRepoThread::run()  	}  	delete mCurlRequest; -	delete mMutex; +	mCurlRequest = NULL;  }  void LLMeshRepoThread::loadMeshSkinInfo(const LLUUID& mesh_id) @@ -2115,13 +2125,24 @@ void LLMeshRepository::init()  void LLMeshRepository::shutdown()  { -	mThread->mSignal->signal(); +	llinfos << "Shutting down mesh repository." << llendl; +	mThread->mSignal->signal(); +	 +	while (!mThread->isStopped()) +	{ +		apr_sleep(10); +	}  	delete mThread;  	mThread = NULL;  	for (U32 i = 0; i < mUploads.size(); ++i)  	{ +		llinfos << "Waiting for pending mesh upload " << i << "/" << mUploads.size() << llendl; +		while (!mUploads[i]->isStopped()) +		{ +			apr_sleep(10); +		}  		delete mUploads[i];  	} @@ -2130,9 +2151,11 @@ void LLMeshRepository::shutdown()  	delete mMeshMutex;  	mMeshMutex = NULL; +	llinfos << "Shutting down decomposition system." << llendl; +  	if (mDecompThread)  	{ -		mDecompThread->shutdown(); +		mDecompThread->shutdown();		  		delete mDecompThread;  		mDecompThread = NULL;  	} @@ -3130,6 +3153,11 @@ LLPhysicsDecomp::LLPhysicsDecomp()  LLPhysicsDecomp::~LLPhysicsDecomp()  {  	shutdown(); + +	delete mSignal; +	mSignal = NULL; +	delete mMutex; +	mMutex = NULL;  }  void LLPhysicsDecomp::shutdown() @@ -3139,9 +3167,9 @@ void LLPhysicsDecomp::shutdown()  		mQuitting = true;  		mSignal->signal(); -		while (!mDone) +		while (!isStopped())  		{ -			apr_sleep(100); +			apr_sleep(10);  		}  	}  } @@ -3519,10 +3547,11 @@ void LLPhysicsDecomp::run()  	decomp->quitThread(); -	//delete mSignal; -	delete mMutex; -	mSignal = NULL; -	mMutex = NULL; +	if (mSignal->isLocked()) +	{ //let go of mSignal's associated mutex +		mSignal->unlock(); +	} +  	mDone = true;  } diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index a3aa3dbdff..d85ddcaa60 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -118,18 +118,6 @@ LLPanelMainInventory::LLPanelMainInventory()  	mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));  	mCommitCallbackRegistrar.add("Inventory.Share",  boost::bind(&LLAvatarActions::shareWithAvatars)); -	// Controls -	// *TODO: Just use persistant settings for each of these -	U32 sort_order = gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER); -	BOOL sort_by_name = ! ( sort_order & LLInventoryFilter::SO_DATE ); -	BOOL sort_folders_by_name = ( sort_order & LLInventoryFilter::SO_FOLDERS_BY_NAME ); -	BOOL sort_system_folders_to_top = ( sort_order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP ); -	 -	gSavedSettings.declareBOOL("Inventory.SortByName", sort_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.SortByDate", !sort_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.FoldersAlwaysByName", sort_folders_by_name, "Declared in code", FALSE); -	gSavedSettings.declareBOOL("Inventory.SystemFoldersToTop", sort_system_folders_to_top, "Declared in code", FALSE); -	  	mSavedFolderState = new LLSaveFolderState();  	mSavedFolderState->setApply(FALSE);  } @@ -325,67 +313,41 @@ void LLPanelMainInventory::resetFilters()  void LLPanelMainInventory::setSortBy(const LLSD& userdata)  { -	std::string sort_field = userdata.asString(); -	if (sort_field == "name") +	U32 sort_order_mask = getActivePanel()->getSortOrder(); +	std::string sort_type = userdata.asString(); +	if (sort_type == "name")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		order &= ~LLInventoryFilter::SO_DATE; - -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order); - -		gSavedSettings.setBOOL("Inventory.SortByName", TRUE ); -		gSavedSettings.setBOOL("Inventory.SortByDate", FALSE ); +		sort_order_mask &= ~LLInventoryFilter::SO_DATE;  	} -	else if (sort_field == "date") +	else if (sort_type == "date")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		order |= LLInventoryFilter::SO_DATE; - -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order); - -		gSavedSettings.setBOOL("Inventory.SortByName", FALSE ); -		gSavedSettings.setBOOL("Inventory.SortByDate", TRUE ); +		sort_order_mask |= LLInventoryFilter::SO_DATE;  	} -	else if (sort_field == "foldersalwaysbyname") +	else if (sort_type == "foldersalwaysbyname")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		if ( order & LLInventoryFilter::SO_FOLDERS_BY_NAME ) +		if ( sort_order_mask & LLInventoryFilter::SO_FOLDERS_BY_NAME )  		{ -			order &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME; - -			gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", FALSE ); +			sort_order_mask &= ~LLInventoryFilter::SO_FOLDERS_BY_NAME;  		}  		else  		{ -			order |= LLInventoryFilter::SO_FOLDERS_BY_NAME; - -			gSavedSettings.setBOOL("Inventory.FoldersAlwaysByName", TRUE ); +			sort_order_mask |= LLInventoryFilter::SO_FOLDERS_BY_NAME;  		} -		getActivePanel()->setSortOrder( order );  	} -	else if (sort_field == "systemfolderstotop") +	else if (sort_type == "systemfolderstotop")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		if ( order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP ) +		if ( sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP )  		{ -			order &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; - -			gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", FALSE ); +			sort_order_mask &= ~LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  		}  		else  		{ -			order |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; - -			gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE ); +			sort_order_mask |= LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  		} -		getActivePanel()->setSortOrder( order ); - -		gSavedSettings.setU32("InventorySortOrder", order);  	} + +	getActivePanel()->setSortOrder(sort_order_mask); +	gSavedSettings.setU32("InventorySortOrder", sort_order_mask);  }  // static @@ -1022,6 +984,11 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)  		const LLSD arg = "date";  		setSortBy(arg);  	} +	if (command_name == "sort_folders_by_name") +	{ +		const LLSD arg = "foldersalwaysbyname"; +		setSortBy(arg); +	}  	if (command_name == "sort_system_folders_to_top")  	{  		const LLSD arg = "systemfolderstotop"; @@ -1202,24 +1169,26 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)  BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)  { +	U32 sort_order_mask = getActivePanel()->getSortOrder();  	const std::string command_name = userdata.asString(); -  	if (command_name == "sort_by_name")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return ~order & LLInventoryFilter::SO_DATE; +		return ~sort_order_mask & LLInventoryFilter::SO_DATE;  	}  	if (command_name == "sort_by_recent")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return order & LLInventoryFilter::SO_DATE; +		return sort_order_mask & LLInventoryFilter::SO_DATE; +	} + +	if (command_name == "sort_folders_by_name") +	{ +		return sort_order_mask & LLInventoryFilter::SO_FOLDERS_BY_NAME;  	}  	if (command_name == "sort_system_folders_to_top")  	{ -		U32 order = getActivePanel()->getSortOrder(); -		return order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP; +		return sort_order_mask & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;  	}  	return FALSE; diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 16284d1a7e..8e5beb33ce 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -1597,7 +1597,7 @@ std::string LLPreviewGesture::getLabel(std::vector<std::string> labels)  	if(v_labels[0]=="Chat")  	{ -		result=LLTrans::getString("Chat"); +		result=LLTrans::getString("Chat Message");  	}      else if(v_labels[0]=="Sound")	  	{ diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 8ffbd5510d..746ba274ed 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -5204,7 +5204,6 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)  	mSilhouetteVertices = nodep.mSilhouetteVertices;  	mSilhouetteNormals = nodep.mSilhouetteNormals; -	mSilhouetteSegments = nodep.mSilhouetteSegments;  	mSilhouetteExists = nodep.mSilhouetteExists;  	mObject = nodep.mObject; @@ -5628,17 +5627,15 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  			gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  			gGL.begin(LLRender::LINES);  			{ -				S32 i = 0; -				for (S32 seg_num = 0; seg_num < (S32)mSilhouetteSegments.size(); seg_num++) +				for(S32 i = 0; i < mSilhouetteVertices.size(); i += 2)  				{ -					for(; i < mSilhouetteSegments[seg_num]; i++) -					{ -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; - -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); -					} +					u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +					gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f); +					gGL.texCoord2f( u_coord, v_coord ); +					gGL.vertex3fv( mSilhouetteVertices[i].mV); +					u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +					gGL.texCoord2f( u_coord, v_coord ); +					gGL.vertex3fv(mSilhouetteVertices[i+1].mV);  				}  			}              gGL.end(); @@ -5649,51 +5646,50 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)  		gGL.setSceneBlendType(LLRender::BT_ALPHA);  		gGL.begin(LLRender::TRIANGLES);  		{ -			S32 i = 0; -			for (S32 seg_num = 0; seg_num < (S32)mSilhouetteSegments.size(); seg_num++) +			for(S32 i = 0; i < mSilhouetteVertices.size(); i+=2)  			{ -				S32 first_i = i; -				LLVector3 v; -				LLVector2 t; +				if (!mSilhouetteNormals[i].isFinite() || +					!mSilhouetteNormals[i+1].isFinite()) +				{ //skip skewed segments +					continue; +				} -				for(; i < mSilhouetteSegments[seg_num]; i++) -				{ +				LLVector3 v[4]; +				LLVector2 tc[4]; +				v[0] = mSilhouetteVertices[i] + (mSilhouetteNormals[i] * silhouette_thickness); +				tc[0].set(u_coord, v_coord + LLSelectMgr::sHighlightVScale); -					if (i == first_i) { -					    LLVector3 vert = (mSilhouetteNormals[i]) * silhouette_thickness; -						vert += mSilhouetteVertices[i]; +				v[1] = mSilhouetteVertices[i]; +				tc[1].set(u_coord, v_coord); -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); -						gGL.texCoord2f( u_coord, v_coord + LLSelectMgr::sHighlightVScale ); -						gGL.vertex3fv( vert.mV );  -						 -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; +				u_coord += u_divisor * LLSelectMgr::sHighlightUScale; -						gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); +				v[2] = mSilhouetteVertices[i+1] + (mSilhouetteNormals[i+1] * silhouette_thickness); +				tc[2].set(u_coord, v_coord + LLSelectMgr::sHighlightVScale); +				 +				v[3] = mSilhouetteVertices[i+1]; +				tc[3].set(u_coord,v_coord); -						v = mSilhouetteVertices[i]; -						t = LLVector2(u_coord, v_coord); -					} -					else { -                        LLVector3 vert = (mSilhouetteNormals[i]) * silhouette_thickness; -						vert += mSilhouetteVertices[i]; - -						gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); -						gGL.texCoord2f( u_coord, v_coord + LLSelectMgr::sHighlightVScale ); -						gGL.vertex3fv( vert.mV );  -						gGL.vertex3fv( vert.mV );  -						 -						gGL.texCoord2fv(t.mV); -						u_coord += u_divisor * LLSelectMgr::sHighlightUScale; -						gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); -						gGL.vertex3fv(v.mV); -						gGL.texCoord2f( u_coord, v_coord ); -						gGL.vertex3fv( mSilhouetteVertices[i].mV ); +				gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); +				gGL.texCoord2fv(tc[0].mV); +				gGL.vertex3fv( v[0].mV );  +				 +				gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); +				gGL.texCoord2fv( tc[1].mV ); +				gGL.vertex3fv( v[1].mV ); -					} -				} +				gGL.color4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.0f); //LLSelectMgr::sHighlightAlpha); +				gGL.texCoord2fv( tc[2].mV ); +				gGL.vertex3fv( v[2].mV ); + +				gGL.vertex3fv( v[2].mV ); + +				gGL.color4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2); +				gGL.texCoord2fv( tc[1].mV ); +				gGL.vertex3fv( v[1].mV ); + +				gGL.texCoord2fv( tc[3].mV ); +				gGL.vertex3fv( v[3].mV );			  			}  		}  		gGL.end(); @@ -6395,7 +6391,7 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()  	return count;  } -S32 LLObjectSelection::getSelectedObjectRenderCost() +/*S32 LLObjectSelection::getSelectedObjectRenderCost()  {         S32 cost = 0;         LLVOVolume::texture_cost_t textures; @@ -6419,7 +6415,7 @@ S32 LLObjectSelection::getSelectedObjectRenderCost()         return cost; -} +}*/  //----------------------------------------------------------------------------- diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 85d8d3212d..1b354f983a 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -182,7 +182,6 @@ public:  	std::vector<LLVector3>  mTextureScaleRatios;  	std::vector<LLVector3>	mSilhouetteVertices;	// array of vertices to render silhouette of object  	std::vector<LLVector3>	mSilhouetteNormals;	// array of normals to render silhouette of object -	std::vector<S32>		mSilhouetteSegments;	// array of normals to render silhouette of object  	BOOL					mSilhouetteExists;	// need to generate silhouette?  protected: diff --git a/indra/newview/llsimplestat.h b/indra/newview/llsimplestat.h index a90e503adb..9d7780c4f9 100644 --- a/indra/newview/llsimplestat.h +++ b/indra/newview/llsimplestat.h @@ -2,31 +2,25 @@   * @file llsimplestat.h   * @brief Runtime statistics accumulation.   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index a4c9b66e38..5dd1b5ba7e 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -273,12 +273,6 @@ void LLSpatialGroup::buildOcclusion()  	LLVector4a r;  	r.setAdd(mBounds[1], fudge); -	LLVector4a r2; -	r2.splat(0.25f); -	r2.add(mBounds[1]); - -	r.setMin(r, r2); -  	LLStrider<LLVector3> pos;  	mOcclusionVerts->getVertexStrider(pos); @@ -1627,8 +1621,7 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)  	if (mSpatialPartition->isOcclusionEnabled() && LLPipeline::sUseOcclusion > 1)  	{  		// Don't cull hole/edge water, unless we have the GL_ARB_depth_clamp extension -		if ((mSpatialPartition->mDrawableType == LLDrawPool::POOL_VOIDWATER && !gGLManager.mHasDepthClamp) || -			earlyFail(camera, this)) +		if (earlyFail(camera, this))  		{  			setOcclusionState(LLSpatialGroup::DISCARD_QUERY);  			assert_states_valid(this); @@ -1656,12 +1649,11 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)  					// behind the far clip plane, and in the case of edge water to avoid  					// it being culled while still visible.  					bool const use_depth_clamp = gGLManager.mHasDepthClamp && -												(mSpatialPartition->mDrawableType == LLDrawPool::POOL_WATER || +												(mSpatialPartition->mDrawableType == LLDrawPool::POOL_WATER ||						  												mSpatialPartition->mDrawableType == LLDrawPool::POOL_VOIDWATER); -					if (use_depth_clamp) -					{ -						glEnable(GL_DEPTH_CLAMP); -					} + +					LLGLEnable clamp(use_depth_clamp ? GL_DEPTH_CLAMP : 0);				 +						  #if !LL_DARWIN					  					U32 mode = gGLManager.mHasOcclusionQuery2 ? GL_ANY_SAMPLES_PASSED : GL_SAMPLES_PASSED_ARB;  #else @@ -1676,22 +1668,33 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)  					mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX); -					if (camera->getOrigin().isExactlyZero()) -					{ //origin is invalid, draw entire box -						mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, 0); -						mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, b111*8);				 +					if (!use_depth_clamp && mSpatialPartition->mDrawableType == LLDrawPool::POOL_VOIDWATER) +					{ +						LLGLSquashToFarClip squash(glh_get_current_projection(), 1); +						if (camera->getOrigin().isExactlyZero()) +						{ //origin is invalid, draw entire box +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, 0); +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, b111*8);				 +						} +						else +						{ +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, mBounds[0])); +						}  					}  					else  					{ -						mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, mBounds[0])); +						if (camera->getOrigin().isExactlyZero()) +						{ //origin is invalid, draw entire box +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, 0); +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, b111*8);				 +						} +						else +						{ +							mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, mBounds[0])); +						}  					}  					glEndQueryARB(mode); - -					if (use_depth_clamp) -					{ -						glDisable(GL_DEPTH_CLAMP); -					}  				}  				setOcclusionState(LLSpatialGroup::QUERY_PENDING); diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 3f7dc24ade..fa91f129b8 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -563,7 +563,17 @@ void LLIMToastNotifyPanel::reshape(S32 width, S32 height, BOOL called_from_paren  	height = rc.getHeight();  	width = rc.getWidth(); +	bool is_width_changed = width != getRect().getWidth(); +  	LLToastPanel::reshape(width, height, called_from_parent); + +	// Notification height required to display the text message depends on +	// the width of the text box thus if panel width is changed the text box +	// width is also changed then reshape() is called to adjust proper height. +	if (is_width_changed) +	{ +		reshape(width, height, called_from_parent); +	}  }  // EOF diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index f7159ae324..011aa47e31 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -2,27 +2,27 @@  * @file lltranslate.cpp  * @brief Functions for translating text via Google Translate.  * -* $LicenseInfo:firstyear=2009&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2010, Linden Research, Inc. -*  -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -*  -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -*  -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -*  -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #include "llviewerprecompiledheaders.h" diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 2426bb71b6..e85a42e878 100644 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -2,27 +2,27 @@  * @file lltranslate.h  * @brief Human language translation class and JSON response receiver.  * -* $LicenseInfo:firstyear=2009&license=viewerlgpl$ -* Second Life Viewer Source Code -* Copyright (C) 2010, Linden Research, Inc. -*  -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; -* version 2.1 of the License only. -*  -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -* Lesser General Public License for more details. -*  -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA -*  -* Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA -* $/LicenseInfo$ -*/ + * $LicenseInfo:firstyear=2009&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */  #ifndef LL_LLTRANSLATE_H  #define LL_LLTRANSLATE_H diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 9d98302210..e621cf647e 100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -2,31 +2,25 @@   * @file llviewerassetstats.cpp   * @brief    * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h index 905ceefad5..73ec5974b2 100644 --- a/indra/newview/llviewerassetstats.h +++ b/indra/newview/llviewerassetstats.h @@ -2,31 +2,25 @@   * @file llviewerassetstats.h   * @brief Client-side collection of asset request statistics   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index b36b5aa9ee..fcd9141269 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -53,7 +53,7 @@  #include "llwebsharing.h"	// For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!  #include "llfilepicker.h"  #include "llnotifications.h" - +#include "lldir_win32.h"  #include "llevent.h"		// LLSimpleListener  #include "llnotificationsutil.h"  #include "lluuid.h" @@ -1766,7 +1766,8 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  			media_source->setTarget(target); -			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) +			const std::string plugin_dir = gDirUtilp->getLLPluginDir(); +			if (media_source->init(launcher_name, plugin_dir, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))  			{  				return media_source;  			} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index d723fc0a8e..bcdc774c5e 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -487,7 +487,6 @@ void LLViewerObject::initVOClasses()  	llinfos << "Viewer Object size: " << sizeof(LLViewerObject) << llendl;  	LLVOGrass::initClass();  	LLVOWater::initClass(); -	LLVOSky::initClass();  	LLVOVolume::initClass();  } @@ -3033,6 +3032,8 @@ void LLViewerObject::setScale(const LLVector3 &scale, BOOL damped)  		{  			if (!mOnMap)  			{ +				llassert_always(LLWorld::getInstance()->getRegionFromHandle(getRegion()->getHandle())); +  				gObjectList.addToMap(this);  				mOnMap = TRUE;  			} @@ -3674,8 +3675,8 @@ void LLViewerObject::setPositionParent(const LLVector3 &pos_parent, BOOL damped)  	// Set position relative to parent, if no parent, relative to region  	if (!isRoot())  	{ -		LLViewerObject::setPosition(pos_parent); -		updateDrawable(damped); +		LLViewerObject::setPosition(pos_parent, damped); +		//updateDrawable(damped);  	}  	else  	{ @@ -3716,6 +3717,7 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLVector3 position_offset = getPosition() * getParent()->getRotation();  		((LLViewerObject *)getParent())->setPositionEdit(pos_edit - position_offset); +		updateDrawable(damped);  	}  	else if (isJointChild())  	{ @@ -3724,15 +3726,14 @@ void LLViewerObject::setPositionEdit(const LLVector3 &pos_edit, BOOL damped)  		LLQuaternion inv_parent_rot = parent->getRotation();  		inv_parent_rot.transQuat();  		LLVector3 pos_parent = (pos_edit - parent->getPositionRegion()) * inv_parent_rot; -		LLViewerObject::setPosition(pos_parent); +		LLViewerObject::setPosition(pos_parent, damped);  	}  	else  	{ -		LLViewerObject::setPosition(pos_edit); +		LLViewerObject::setPosition(pos_edit, damped);  		mPositionRegion = pos_edit;  		mPositionAgent = mRegionp->getPosAgentFromRegion(mPositionRegion); -	} -	updateDrawable(damped); +	}	  } diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 8c3bf5bf12..4f71f8ea87 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1490,6 +1490,22 @@ void LLViewerObjectList::shiftObjects(const LLVector3 &offset)  	LLWorld::getInstance()->shiftRegions(offset);  } +//debug code +bool LLViewerObjectList::hasMapObjectInRegion(LLViewerRegion* regionp)  +{ +	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter) +	{ +		LLViewerObject* objectp = *iter; + +		if(objectp->isDead() || objectp->getRegion() == regionp) +		{ +			return true ; +		} +	} + +	return false ; +} +  void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  {  	LLColor4 above_water_color = LLUIColorTable::instance().getColor( "NetMapOtherOwnAboveWater" ); @@ -1508,6 +1524,9 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap)  	for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter)  	{  		LLViewerObject* objectp = *iter; + +		llassert_always(!objectp->isDead()); +  		if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment())  		{  			continue; @@ -1795,7 +1814,7 @@ LLViewerObject *LLViewerObjectList::replaceObject(const LLUUID &id, const LLPCod  	LLViewerObject *old_instance = findObject(id);  	if (old_instance)  	{ -		cleanupReferences(old_instance); +		//cleanupReferences(old_instance);  		old_instance->markDead();  		return createObject(pcode, regionp, id, old_instance->getLocalID(), LLHost()); diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index 7d0653b3b4..4830f5912b 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -103,6 +103,7 @@ public:  	void shiftObjects(const LLVector3 &offset); +	bool hasMapObjectInRegion(LLViewerRegion* regionp) ;  	void renderObjectsForMap(LLNetMap &netmap);  	void renderObjectBounds(const LLVector3 ¢er); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index dd6f7011a1..a257703b24 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -602,16 +602,16 @@ F32 LLVOAvatar::sRenderDistance = 256.f;  S32	LLVOAvatar::sNumVisibleAvatars = 0;  S32	LLVOAvatar::sNumLODChangesThisFrame = 0; -const LLUUID LLVOAvatar::sStepSoundOnLand = LLUUID("e8af4a28-aa83-4310-a7c4-c047e15ea0df"); +const LLUUID LLVOAvatar::sStepSoundOnLand("e8af4a28-aa83-4310-a7c4-c047e15ea0df");  const LLUUID LLVOAvatar::sStepSounds[LL_MCODE_END] =  { -	LLUUID(SND_STONE_RUBBER), -	LLUUID(SND_METAL_RUBBER), -	LLUUID(SND_GLASS_RUBBER), -	LLUUID(SND_WOOD_RUBBER), -	LLUUID(SND_FLESH_RUBBER), -	LLUUID(SND_RUBBER_PLASTIC), -	LLUUID(SND_RUBBER_RUBBER) +	SND_STONE_RUBBER, +	SND_METAL_RUBBER, +	SND_GLASS_RUBBER, +	SND_WOOD_RUBBER, +	SND_FLESH_RUBBER, +	SND_RUBBER_PLASTIC, +	SND_RUBBER_RUBBER  };  S32 LLVOAvatar::sRenderName = RENDER_NAME_ALWAYS; @@ -8241,7 +8241,7 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d  void LLVOAvatar::idleUpdateRenderCost()  { -	static const U32 ARC_BODY_PART_COST = 200; +	static const U32 ARC_BODY_PART_COST = 20;  	static const U32 ARC_LIMIT = 2048;  	static std::set<LLUUID> all_textures; @@ -8252,7 +8252,7 @@ void LLVOAvatar::idleUpdateRenderCost()  	}  	U32 cost = 0; -	LLVOVolume::texture_cost_t textures; +	std::set<LLUUID> textures;  	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)  	{ @@ -8293,21 +8293,15 @@ void LLVOAvatar::idleUpdateRenderCost()  	} -	for (LLVOVolume::texture_cost_t::iterator iter = textures.begin(); iter != textures.end(); ++iter) -	{ -		// add the cost of each individual texture in the linkset -		cost += iter->second; -	} -  	// Diagnostic output to identify all avatar-related textures.  	// Does not affect rendering cost calculation.  	// Could be wrapped in a debug option if output becomes problematic.  	if (isSelf())  	{  		// print any attachment textures we didn't already know about. -		for (LLVOVolume::texture_cost_t::iterator it = textures.begin(); it != textures.end(); ++it) +		for (std::set<LLUUID>::iterator it = textures.begin(); it != textures.end(); ++it)  		{ -			LLUUID image_id = it->first; +			LLUUID image_id = *it;  			if( image_id.isNull() || image_id == IMG_DEFAULT || image_id == IMG_DEFAULT_AVATAR)  				continue;  			if (all_textures.find(image_id) == all_textures.end()) @@ -8339,6 +8333,8 @@ void LLVOAvatar::idleUpdateRenderCost()  		}  	} +	cost += textures.size() * LLVOVolume::ARC_TEXTURE_COST; +  	setDebugText(llformat("%d", cost));  	F32 green = 1.f-llclamp(((F32) cost-(F32)ARC_LIMIT)/(F32)ARC_LIMIT, 0.f, 1.f);  	F32 red = llmin((F32) cost/(F32)ARC_LIMIT, 1.f); diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 7ae8c2c07d..80f43e51d2 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -77,9 +77,6 @@ static const LLVector2 TEX11 = LLVector2(1.f, 1.f);  LLUUID gSunTextureID = IMG_SUN;  LLUUID gMoonTextureID = IMG_MOON; -//static  -LLColor3 LLHaze::sAirScaSeaLevel; -  class LLFastLn  {  public: @@ -182,6 +179,23 @@ inline void color_gamma_correct(LLColor3 &col)  	}  } +static LLColor3 calc_air_sca_sea_level() +{ +	static LLColor3 WAVE_LEN(675, 520, 445); +	static LLColor3 refr_ind = refr_ind_calc(WAVE_LEN); +	static LLColor3 n21 = refr_ind * refr_ind - LLColor3(1, 1, 1); +	static LLColor3 n4 = n21 * n21; +	static LLColor3 wl2 = WAVE_LEN * WAVE_LEN * 1e-6f; +	static LLColor3 wl4 = wl2 * wl2; +	static LLColor3 mult_const = fsigma * 2.0f/ 3.0f * 1e24f * (F_PI * F_PI) * n4; +	static F32 dens_div_N = F32( ATM_SEA_LEVEL_NDENS / Ndens2); +	return dens_div_N * color_div ( mult_const, wl4 ); +} + +// static constants. +LLColor3 const LLHaze::sAirScaSeaLevel = calc_air_sca_sea_level(); +F32 const LLHaze::sAirScaIntense = color_intens(LLHaze::sAirScaSeaLevel);	 +F32 const LLHaze::sAirScaAvg = LLHaze::sAirScaIntense / 3.f;  /*************************************** @@ -394,12 +408,6 @@ LLVOSky::~LLVOSky()  	mCubeMap = NULL;  } -void LLVOSky::initClass() -{ -	LLHaze::initClass(); -} - -  void LLVOSky::init()  {     	const F32 haze_int = color_intens(mHaze.calcSigSca(0)); @@ -2147,17 +2155,8 @@ void LLVOSky::updateFog(const F32 distance)  	stop_glerror();  } -// static -void LLHaze::initClass() -{ -	sAirScaSeaLevel = LLHaze::calcAirScaSeaLevel(); -} - -  // Functions used a lot. - -  F32 color_norm_pow(LLColor3& col, F32 e, BOOL postmultiply)  {  	F32 mv = color_max(col); diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index 6b3e7873a1..d3a42583ea 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -292,23 +292,6 @@ LL_FORCE_INLINE LLColor3 refr_ind_calc(const LLColor3 &wave_length)  } -LL_FORCE_INLINE LLColor3 calc_air_sca_sea_level() -{ -	const static LLColor3 WAVE_LEN(675, 520, 445); -	const static LLColor3 refr_ind = refr_ind_calc(WAVE_LEN); -	const static LLColor3 n21 = refr_ind * refr_ind - LLColor3(1, 1, 1); -	const static LLColor3 n4 = n21 * n21; -	const static LLColor3 wl2 = WAVE_LEN * WAVE_LEN * 1e-6f; -	const static LLColor3 wl4 = wl2 * wl2; -	const static LLColor3 mult_const = fsigma * 2.0f/ 3.0f * 1e24f * (F_PI * F_PI) * n4; -	const static F32 dens_div_N = F32( ATM_SEA_LEVEL_NDENS / Ndens2); -	return dens_div_N * color_div ( mult_const, wl4 ); -} - -const LLColor3 gAirScaSeaLevel = calc_air_sca_sea_level(); -const F32 AIR_SCA_INTENS = color_intens(gAirScaSeaLevel);	 -const F32 AIR_SCA_AVG = AIR_SCA_INTENS / 3.f; -  class LLHaze  {  public: @@ -316,18 +299,15 @@ public:  	LLHaze(const F32 g, const LLColor3& sca, const F32 fo = 2.f) :   			mG(g), mSigSca(0.25f/F_PI * sca), mFalloff(fo), mAbsCoef(0.f)  	{ -		mAbsCoef = color_intens(mSigSca) / AIR_SCA_INTENS; +		mAbsCoef = color_intens(mSigSca) / sAirScaIntense;  	}  	LLHaze(const F32 g, const F32 sca, const F32 fo = 2.f) : mG(g),  			mSigSca(0.25f/F_PI * LLColor3(sca, sca, sca)), mFalloff(fo)  	{ -		mAbsCoef = 0.01f * sca / AIR_SCA_AVG; +		mAbsCoef = 0.01f * sca / sAirScaAvg;  	} -	static void initClass(); - -  	F32 getG() const				{ return mG; }  	void setG(const F32 g) @@ -343,12 +323,12 @@ public:  	void setSigSca(const LLColor3& s)  	{  		mSigSca = s; -		mAbsCoef = 0.01f * color_intens(mSigSca) / AIR_SCA_INTENS; +		mAbsCoef = 0.01f * color_intens(mSigSca) / sAirScaIntense;  	}  	void setSigSca(const F32 s0, const F32 s1, const F32 s2)  	{ -		mSigSca = AIR_SCA_AVG * LLColor3 (s0, s1, s2); +		mSigSca = sAirScaAvg * LLColor3 (s0, s1, s2);  		mAbsCoef = 0.01f * (s0 + s1 + s2) / 3;  	} @@ -392,10 +372,11 @@ public:  	static inline LLColor3 calcAirSca(const F32 h);  	static inline void calcAirSca(const F32 h, LLColor3 &result); -	static LLColor3 calcAirScaSeaLevel()			{ return gAirScaSeaLevel; } -	static const LLColor3 &getAirScaSeaLevel()		{ return sAirScaSeaLevel; } -public: -	static LLColor3 sAirScaSeaLevel; + +private: +	static LLColor3 const sAirScaSeaLevel; +	static F32 const sAirScaIntense; +	static F32 const sAirScaAvg;  protected:  	F32			mG; @@ -473,7 +454,6 @@ public:  	LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);  	// Initialize/delete data that's only inited once per class. -	static void initClass();  	void init();  	void initCubeMap();  	void initEmpty(); @@ -654,14 +634,12 @@ F32 color_norm_pow(LLColor3& col, F32 e, BOOL postmultiply = FALSE);  inline LLColor3 LLHaze::calcAirSca(const F32 h)  { -	static const LLColor3 air_sca_sea_level = calcAirScaSeaLevel(); -	return calcFalloff(h) * air_sca_sea_level; +	return calcFalloff(h) * sAirScaSeaLevel;  }  inline void LLHaze::calcAirSca(const F32 h, LLColor3 &result)  { -	static const LLColor3 air_sca_sea_level = calcAirScaSeaLevel(); -	result = air_sca_sea_level; +	result = sAirScaSeaLevel;  	result *= calcFalloff(h);  } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 55e68d61f9..be987a2310 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2874,7 +2874,7 @@ void LLVOVolume::generateSilhouette(LLSelectNode* nodep, const LLVector3& view_p  			trans_mat.translate(getRegion()->getOriginAgent());
  		}
 -		volume->generateSilhouetteVertices(nodep->mSilhouetteVertices, nodep->mSilhouetteNormals, nodep->mSilhouetteSegments, view_vector, trans_mat, mRelativeXformInvTrans, nodep->getTESelectMask());
 +		volume->generateSilhouetteVertices(nodep->mSilhouetteVertices, nodep->mSilhouetteNormals, view_vector, trans_mat, mRelativeXformInvTrans, nodep->getTESelectMask());
  		nodep->mSilhouetteExists = TRUE;
  	}
 @@ -2931,39 +2931,17 @@ const LLMatrix4 LLVOVolume::getRenderMatrix() const  // total cost is returned value + 5 * size of the resulting set.
  // Cannot include cost of textures, as they may be re-used in linked
  // children, and cost should only be increased for unique textures  -Nyx
 -U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const
 +U32 LLVOVolume::getRenderCost(std::set<LLUUID> &textures) const
  {
  	// base cost of each prim should be 10 points
  	static const U32 ARC_PRIM_COST = 10;
 -
 -	// Get access to params we'll need at various points.  
 -	// Skip if this is object doesn't have a volume (e.g. is an avatar).
 -	const BOOL has_volume = (getVolume() != NULL);
 -	LLVolumeParams volume_params;
 -	LLPathParams path_params;
 -	LLProfileParams profile_params;
 -
 -	if (has_volume)
 -	{
 -		volume_params = getVolume()->getParams();
 -		path_params = volume_params.getPathParams();
 -		profile_params = volume_params.getProfileParams();
 -	}
 -	
  	// per-prim costs
  	static const U32 ARC_INVISI_COST = 1;
 -	static const U32 ARC_PARTICLE_COST = 100;
 -	static const U32 ARC_CUT_COST = 1;
 -	static const U32 ARC_TEXTURE_COST = 5;
 -
 -	// per-prim multipliers
 -	static const U32 ARC_HOLLOW_MULT = 2;
 -	static const U32 ARC_CIRC_PROF_MULT = 2;
 -	static const U32 ARC_CIRC_PATH_MULT = 2;
 -	static const U32 ARC_GLOW_MULT = 2;
 -	static const U32 ARC_BUMP_MULT = 2;
 -	static const U32 ARC_FLEXI_MULT = 4;
 -	static const U32 ARC_SHINY_MULT = 2;
 +	static const U32 ARC_SHINY_COST = 1;
 +	static const U32 ARC_GLOW_COST = 1;
 +	static const U32 ARC_FLEXI_COST = 8;
 +	static const U32 ARC_PARTICLE_COST = 16;
 +	static const U32 ARC_BUMP_COST = 4;
  	// per-face costs
  	static const U32 ARC_PLANAR_COST = 1;
 @@ -2979,68 +2957,9 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  	U32 flexi = 0;
  	U32 animtex = 0;
  	U32 particles = 0;
 +	U32 scale = 0;
  	U32 bump = 0;
  	U32 planar = 0;
 -	U32 cuts = 0;
 -	U32 hollow = 0;
 -	U32 circular_profile = 0;
 -	U32 circular_path = 0;
 -
 -	// these multipliers are variable and can be floating point
 -	F32 scale = 0.f;
 -	F32 twist = 0.f; 
 -	F32 revolutions = 0.f;
 -
 -
 -	const LLDrawable* drawablep = mDrawable;
 -
 -	if (isSculpted())
 -	{
 -		if (isMesh())
 -		{
 -			// base cost is dependent on mesh complexity
 -			// note that 3 is the highest LOD as of the time of this coding.
 -			S32 size = gMeshRepo.getMeshSize(volume_params.getSculptID(),3);
 -			if ( size > 0)
 -			{
 -				if (gMeshRepo.getSkinInfo(volume_params.getSculptID()))
 -				{
 -					// weighted attachment - 1 point for every 3 bytes
 -					shame = (U32)(size / 3.f);
 -				}
 -				else
 -				{
 -					// non-weighted attachment - 1 point for every 4 bytes
 -					shame = (U32)(size / 4.f);
 -				}
 -
 -				if (shame == 0)
 -				{
 -					// someone made a really tiny mesh. 
 -					shame = 1;
 -				}
 -			}
 -			else
 -			{
 -				// something went wrong - user should know their content isn't render-free
 -				return 0;
 -			}
 -		}
 -		else
 -		{
 -			const LLSculptParams *sculpt_params = (LLSculptParams *) getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 -			LLUUID sculpt_id = sculpt_params->getSculptTexture();
 -			if (textures.find(sculpt_id) == textures.end())
 -			{
 -				LLViewerFetchedTexture *texture = LLViewerTextureManager::getFetchedTexture(sculpt_id);
 -				if (texture)
 -				{
 -					S32 texture_cost = (S32)(ARC_TEXTURE_COST * (texture->getFullHeight() / 128.f + texture->getFullWidth() / 128.f + 1));
 -					textures.insert(texture_cost_t::value_type(sculpt_id, texture_cost));
 -				}
 -			}
 -		}
 -	}
  	if (isFlexible())
  	{
 @@ -3052,67 +2971,15 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  	}
  	const LLVector3& sc = getScale();
 -	scale += sc.mV[0] + sc.mV[1] + sc.mV[2];
 -	if (scale > 4.f)
 -	{
 -		// scale is a multiplier, cap it at 4.
 -		scale = 4.f;
 -	}
 -
 -	// add points for cut prims
 -	if (path_params.getBegin() != 0.f || path_params.getEnd() != 1.f)
 -	{
 -		++cuts;
 -	}
 -
 -	if (profile_params.getBegin() != 0.f || profile_params.getEnd() != 1.f)
 -	{
 -		++cuts;
 -	}
 -
 -	// double cost for hollow prims / sculpties
 -	if (volume_params.getHollow() != 0.f)
 -	{
 -		hollow = 1;
 -	}
 -
 -	F32 twist_mag = path_params.getTwistBegin() - path_params.getTwistEnd();
 -	if (twist_mag < 0)
 -	{
 -		twist_mag *= -1.f;
 -	}
 -
 -	// note magnitude of twist is [-1.f, 1.f]. which translates to [-180, 180] degrees.
 -	// scale to degrees / 90 by multiplying by 2.
 -	twist = twist_mag * 2.f;
 -
 -	// multiply by the number of revolutions in the prim. cap at 4.
 -	revolutions = path_params.getRevolutions();
 -	if (revolutions > 4.f)
 -	{
 -		revolutions = 4.f;
 -	}
 +	scale += (U32) sc.mV[0] + (U32) sc.mV[1] + (U32) sc.mV[2];
 -	// double cost for circular profiles / sculpties
 -	if (profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE ||
 -		profile_params.getCurveType() == LL_PCODE_PROFILE_CIRCLE_HALF)
 -	{
 -		circular_profile = 1;
 -	}
 -
 -	// double cost for circular paths / sculpties
 -	if (path_params.getCurveType() == LL_PCODE_PATH_CIRCLE ||
 -		path_params.getCurveType() == LL_PCODE_PATH_CIRCLE2)
 -	{
 -		circular_path = 1;
 -	}
 +	const LLDrawable* drawablep = mDrawable;
 -	// treat sculpties as hollow prims with circular paths & profiles
 -	if (isSculpted() && !isMesh())
 +	if (isSculpted())
  	{
 -		hollow = 1;
 -		circular_profile = 1;
 -		circular_path = 1;
 +		const LLSculptParams *sculpt_params = (LLSculptParams *) getParameterEntry(LLNetworkData::PARAMS_SCULPT);
 +		LLUUID sculpt_id = sculpt_params->getSculptTexture();
 +		textures.insert(sculpt_id);
  	}
  	for (S32 i = 0; i < drawablep->getNumFaces(); ++i)
 @@ -3123,11 +2990,7 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		if (img)
  		{
 -			if (textures.find(img->getID()) == textures.end())
 -			{
 -				S32 texture_cost = (S32)(ARC_TEXTURE_COST * (img->getFullHeight() / 128.f + img->getFullWidth() / 128.f + 1));
 -				textures.insert(texture_cost_t::value_type(img->getID(), texture_cost));
 -			}
 +			textures.insert(img->getID());
  		}
  		if (face->getPoolType() == LLDrawPool::POOL_ALPHA)
 @@ -3136,24 +2999,21 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		}
  		else if (img && img->getPrimaryFormat() == GL_ALPHA)
  		{
 -			invisi++;
 +			invisi = 1;
  		}
  		if (te)
  		{
  			if (te->getBumpmap())
  			{
 -				// bump is a multiplier, don't add per-face
  				bump = 1;
  			}
  			if (te->getShiny())
  			{
 -				// shiny is a multiplier, don't add per-face
  				shiny = 1;
  			}
  			if (te->getGlow() > 0.f)
  			{
 -				// glow is a multiplier, don't add per-face
  				glow = 1;
  			}
  			if (face->mTextureMatrix != NULL)
 @@ -3167,70 +3027,37 @@ U32 LLVOVolume::getRenderCost(texture_cost_t &textures) const  		}
  	}
 -	// shame currently has the "base" cost of 10 for normal prims, variable for mesh
 -	// add modifier settings
 -	shame += cuts * ARC_CUT_COST;
 -	shame += planar * ARC_PLANAR_COST;
 -	shame += animtex * ARC_ANIM_TEX_COST;
 -	shame += alpha * ARC_ALPHA_COST;
  	shame += invisi * ARC_INVISI_COST;
 +	shame += shiny * ARC_SHINY_COST;
 +	shame += glow * ARC_GLOW_COST;
 +	shame += alpha * ARC_ALPHA_COST;
 +	shame += flexi * ARC_FLEXI_COST;
 +	shame += animtex * ARC_ANIM_TEX_COST;
 +	shame += particles * ARC_PARTICLE_COST;
 +	shame += bump * ARC_BUMP_COST;
 +	shame += planar * ARC_PLANAR_COST;
 +	shame += scale;
 -	// multiply shame by multipliers
 -	if (hollow)
 -	{
 -		shame *= hollow * ARC_HOLLOW_MULT;
 -	}
 -
 -	if (circular_profile)
 -	{
 -		shame *= circular_profile * ARC_CIRC_PROF_MULT;
 -	}
 -
 -	if (circular_path)
 -	{
 -		shame *= circular_path * ARC_CIRC_PATH_MULT;
 -	}
 -
 -	if (glow)
 -	{
 -		shame *= glow * ARC_GLOW_MULT;
 -	}
 -
 -	if (bump)
 -	{
 -		shame *= bump * ARC_BUMP_MULT;
 -	}
 -
 -	if (flexi)
 -	{
 -		shame *= flexi * ARC_FLEXI_MULT;
 -	}
 -
 -	if (shiny)
 -	{
 -		shame *= shiny * ARC_SHINY_MULT;
 -	}
 -
 -	if (twist > 1.f)
 -	{
 -		shame = (U32)(shame * twist);
 -	}
 -
 -	if (scale > 1.f)
 -	{
 -		shame = (U32)(shame *scale);
 -	}
 -
 -	if (revolutions > 1.f)
 +	LLViewerObject::const_child_list_t& child_list = getChildren();
 +	for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
 +		 iter != child_list.end(); 
 +		 ++iter)
  	{
 -		shame = (U32)(shame * revolutions);
 +		const LLViewerObject* child_objectp = *iter;
 +		const LLDrawable* child_drawablep = child_objectp->mDrawable;
 +		if (child_drawablep)
 +		{
 +			const LLVOVolume* child_volumep = child_drawablep->getVOVolume();
 +			if (child_volumep)
 +			{
 +				shame += child_volumep->getRenderCost(textures);
 +			}
 +		}
  	}
 -	// add additional costs
 -	shame += particles * ARC_PARTICLE_COST;
 -
  	return shame;
 +
  }
  F32 LLVOVolume::getStreamingCost()
 @@ -3247,16 +3074,13 @@ F32 LLVOVolume::getStreamingCost()  	return 0.f;
  }
 -U32 LLVOVolume::getTriangleCount()
 +U32 LLVOVolume::getTriangleCount() const
  {
  	U32 count = 0;
  	LLVolume* volume = getVolume();
  	if (volume)
  	{
 -		for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
 -		{
 -			count += volume->getVolumeFace(i).mNumIndices/3;
 -		}
 +		count = volume->getNumTriangles();
  	}
  	return count;
 diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 5af88c6cbd..0c12f14832 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -129,10 +129,9 @@ public:  	const LLMatrix4&	getRelativeXform() const				{ return mRelativeXform; }  	const LLMatrix3&	getRelativeXformInvTrans() const		{ return mRelativeXformInvTrans; }  	/*virtual*/	const LLMatrix4	getRenderMatrix() const; -				typedef std::map<LLUUID, S32> texture_cost_t; -				U32 	getRenderCost(texture_cost_t &textures) const; +				U32 	getRenderCost(std::set<LLUUID> &textures) const;  	/*virtual*/	F32		getStreamingCost(); -	/*virtual*/ U32		getTriangleCount(); +	/*virtual*/ U32		getTriangleCount() const;  	/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end,   										  S32 face = -1,                        // which face to check, -1 = ALL_SIDES  										  BOOL pick_transparent = FALSE, @@ -359,6 +358,8 @@ public:  	static LLPointer<LLObjectMediaDataClient> sObjectMediaClient;  	static LLPointer<LLObjectMediaNavigateClient> sObjectMediaNavigateClient; +	static const U32 ARC_TEXTURE_COST = 5; +  protected:  	static S32 sNumLODChanges; diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index fa9b9d5bc3..85871f21d6 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -281,6 +281,8 @@ void LLWorld::removeRegion(const LLHost &host)  	delete regionp;  	updateWaterObjects(); + +	llassert_always(!gObjectList.hasMapObjectInRegion(regionp)) ;  } @@ -870,320 +872,148 @@ void LLWorld::waterHeightRegionInfo(std::string const& sim_name, F32 water_heigh  	}  } -// There are three types of water objects: -// Region water objects: the water in a region. -// Hole water objects: water in the void but within current draw distance. -// Edge water objects: the water outside the draw distance, up till the horizon. -// -// For example: -// -// -----------------------horizon------------------------- -// |                 |                 |                 | -// |  Edge Water     |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |      rwidth     |                 | -// |                 |     <----->     |                 | -// ------------------------------------------------------- -// |                 |Hole |other|     |                 | -// |                 |Water|reg. |     |                 | -// |                 |-----------------|                 | -// |                 |other|cur. |<--> |                 | -// |                 |reg. | reg.|  \__|_ draw distance  | -// |                 |-----------------|                 | -// |                 |     |     |<--->|                 | -// |                 |     |     |  \__|_ range          | -// ------------------------------------------------------- -// |                 |<----width------>|<--horizon ext.->| -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// |                 |                 |                 | -// ------------------------------------------------------- -// -void LLWorld::updateWaterObjects() -{ -	if (!gAgent.getRegion()) -	{ -		return; -	} -	if (mRegionList.empty()) -	{ -		llwarns << "No regions!" << llendl; -		return; -	} +void LLWorld::updateWaterObjects()
 +{
 +	if (!gAgent.getRegion())
 +	{
 +		return;
 +	}
 +	if (mRegionList.empty())
 +	{
 +		llwarns << "No regions!" << llendl;
 +		return;
 +	}
 +
 +	// First, determine the min and max "box" of water objects
 +	S32 min_x = 0;
 +	S32 min_y = 0;
 +	S32 max_x = 0;
 +	S32 max_y = 0;
 +	U32 region_x, region_y;
 +
 +	S32 rwidth = 256;
 +
 +	// We only want to fill in water for stuff that's near us, say, within 256 or 512m
 +	S32 range = LLViewerCamera::getInstance()->getFar() > 256.f ? 512 : 256;
 +
 +	LLViewerRegion* regionp = gAgent.getRegion();
 +	from_region_handle(regionp->getHandle(), ®ion_x, ®ion_y);
 +
 +	min_x = (S32)region_x - range;
 +	min_y = (S32)region_y - range;
 +	max_x = (S32)region_x + range;
 +	max_y = (S32)region_y + range;
 +
 +	F32 height = 0.f;
 +	
 +	for (region_list_t::iterator iter = mRegionList.begin();
 +		 iter != mRegionList.end(); ++iter)
 +	{
 +		LLViewerRegion* regionp = *iter;
 +		LLVOWater* waterp = regionp->getLand().getWaterObj();
 +		height += regionp->getWaterHeight();
 +		if (waterp)
 +		{
 +			gObjectList.updateActive(waterp);
 +		}
 +	}
 +
 +	for (std::list<LLVOWater*>::iterator iter = mHoleWaterObjects.begin();
 +		 iter != mHoleWaterObjects.end(); ++ iter)
 +	{
 +		LLVOWater* waterp = *iter;
 +		gObjectList.killObject(waterp);
 +	}
 +	mHoleWaterObjects.clear();
 +
 +	// Now, get a list of the holes
 +	S32 x, y;
 +	for (x = min_x; x <= max_x; x += rwidth)
 +	{
 +		for (y = min_y; y <= max_y; y += rwidth)
 +		{
 +			U64 region_handle = to_region_handle(x, y);
 +			if (!getRegionFromHandle(region_handle))
 +			{
 +				LLVOWater* waterp = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_WATER, gAgent.getRegion());
 +				waterp->setUseTexture(FALSE);
 +				waterp->setPositionGlobal(LLVector3d(x + rwidth/2,
 +													 y + rwidth/2,
 +													 256.f+DEFAULT_WATER_HEIGHT));
 +				waterp->setScale(LLVector3((F32)rwidth, (F32)rwidth, 512.f));
 +				gPipeline.createObject(waterp);
 +				mHoleWaterObjects.push_back(waterp);
 +			}
 +		}
 +	}
 +
 +	// Update edge water objects
 +	S32 wx, wy;
 +	S32 center_x, center_y;
 +	wx = (max_x - min_x) + rwidth;
 +	wy = (max_y - min_y) + rwidth;
 +	center_x = min_x + (wx >> 1);
 +	center_y = min_y + (wy >> 1);
 +
 +	S32 add_boundary[4] = {
 +		512 - (max_x - region_x),
 +		512 - (max_y - region_y),
 +		512 - (region_x - min_x),
 +		512 - (region_y - min_y) };
 +		
 +	S32 dir;
 +	for (dir = 0; dir < 8; dir++)
 +	{
 +		S32 dim[2] = { 0 };
 +		switch (gDirAxes[dir][0])
 +		{
 +		case -1: dim[0] = add_boundary[2]; break;
 +		case  0: dim[0] = wx; break;
 +		default: dim[0] = add_boundary[0]; break;
 +		}
 +		switch (gDirAxes[dir][1])
 +		{
 +		case -1: dim[1] = add_boundary[3]; break;
 +		case  0: dim[1] = wy; break;
 +		default: dim[1] = add_boundary[1]; break;
 +		}
 +
 +		// Resize and reshape the water objects
 +		const S32 water_center_x = center_x + llround((wx + dim[0]) * 0.5f * gDirAxes[dir][0]);
 +		const S32 water_center_y = center_y + llround((wy + dim[1]) * 0.5f * gDirAxes[dir][1]);
 +		
 +		LLVOWater* waterp = mEdgeWaterObjects[dir];
 +		if (!waterp || waterp->isDead())
 +		{
 +			// The edge water objects can be dead because they're attached to the region that the
 +			// agent was in when they were originally created.
 +			mEdgeWaterObjects[dir] = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_VOID_WATER,
 +																				 gAgent.getRegion());
 +			waterp = mEdgeWaterObjects[dir];
 +			waterp->setUseTexture(FALSE);
 +			waterp->setIsEdgePatch(TRUE);
 +			gPipeline.createObject(waterp);
 +		}
 +
 +		waterp->setRegion(gAgent.getRegion());
 +		LLVector3d water_pos(water_center_x, water_center_y, 
 +			DEFAULT_WATER_HEIGHT+256.f);
 +		LLVector3 water_scale((F32) dim[0], (F32) dim[1], 512.f);
 +
 +		//stretch out to horizon
 +		water_scale.mV[0] += fabsf(2048.f * gDirAxes[dir][0]);
 +		water_scale.mV[1] += fabsf(2048.f * gDirAxes[dir][1]);
 +
 +		water_pos.mdV[0] += 1024.f * gDirAxes[dir][0];
 +		water_pos.mdV[1] += 1024.f * gDirAxes[dir][1];
 +
 +		waterp->setPositionGlobal(water_pos);
 +		waterp->setScale(water_scale);
 +
 +		gObjectList.updateActive(waterp);
 +	}
 +}
 -	// Region width in meters. -	S32 const rwidth = (S32)REGION_WIDTH_U32; - -	// The distance we might see into the void -	// when standing on the edge of a region, in meters. -	S32 const draw_distance = llceil(mLandFarClip); - -	// We can only have "holes" in the water (where there no region) if we -	// can have existing regions around it. Taking into account that this -	// code is only executed when we enter a region, and not when we walk -	// around in it, we (only) need to take into account regions that fall -	// within the draw_distance. -	// -	// Set 'range' to draw_distance, rounded up to the nearest multiple of rwidth. -	S32 const nsims = (draw_distance + rwidth - 1) / rwidth; -	S32 const range = nsims * rwidth; - -	// Get South-West corner of current region. -	LLViewerRegion const* regionp = gAgent.getRegion(); -	U32 region_x, region_y; -	from_region_handle(regionp->getHandle(), ®ion_x, ®ion_y); - -	// The min. and max. coordinates of the South-West corners of the Hole water objects. -	S32 const min_x = (S32)region_x - range; -	S32 const min_y = (S32)region_y - range; -	S32 const max_x = (S32)region_x + range; -	S32 const max_y = (S32)region_y + range; - -	// Attempt to determine a sensible water height for all the -	// Hole Water objects. -	// -	// It make little sense to try to guess what the best water -	// height should be when that isn't completely obvious: if it's -	// impossible to satisfy every region's water height without -	// getting a jump in the water height. -	// -	// In order to keep the reasoning simple, we assume something -	// logical as a group of connected regions, where the coastline -	// is at the outer edge. Anything more complex that would "break" -	// under such an assumption would probably break anyway (would -	// depend on terrain editing and existing mega prims, say, if -	// anything would make sense at all). -	// -	// So, what we do is find all connected regions within the -	// draw distance that border void, and then pick the lowest -	// water height of those (coast) regions. -	S32 const n = 2 * nsims + 1; -	S32 const origin = nsims + nsims * n; -	std::vector<F32> water_heights(n * n); -	std::vector<U8> checked(n * n, 0);		// index = nx + ny * n + origin; -	U8 const region_bit = 1; -	U8 const hole_bit = 2; -	U8 const bordering_hole_bit = 4; -	U8 const bordering_edge_bit = 8; -	// Use the legacy waterheight for the Edge water in the case -	// that we don't find any Hole water at all. -	F32 water_height = DEFAULT_WATER_HEIGHT; -	int max_count = 0; -	LL_DEBUGS("WaterHeight") << "Current region: " << regionp->getName() << "; water height: " << regionp->getWaterHeight() << " m." << LL_ENDL; -	std::map<S32, int> water_height_counts; -	typedef std::queue<std::pair<S32, S32>, std::deque<std::pair<S32, S32> > > nxny_pairs_type; -	nxny_pairs_type nxny_pairs; -	nxny_pairs.push(nxny_pairs_type::value_type(0, 0)); -	water_heights[origin] = regionp->getWaterHeight(); -	checked[origin] = region_bit; -	// For debugging purposes. -	int number_of_connected_regions = 1; -	int uninitialized_regions = 0; -	int bordering_hole = 0; -	int bordering_edge = 0; -	while(!nxny_pairs.empty()) -	{ -		S32 const nx = nxny_pairs.front().first; -		S32 const ny = nxny_pairs.front().second; -		LL_DEBUGS("WaterHeight") << "nx,ny = " << nx << "," << ny << LL_ENDL; -		S32 const index = nx + ny * n + origin; -		nxny_pairs.pop(); -		for (S32 dir = 0; dir < 4; ++dir) -		{ -			S32 const cnx = nx + gDirAxes[dir][0]; -			S32 const cny = ny + gDirAxes[dir][1]; -			LL_DEBUGS("WaterHeight") << "dir = " << dir << "; cnx,cny = " << cnx << "," << cny << LL_ENDL; -			S32 const cindex = cnx + cny * n + origin; -			bool is_hole = false; -			bool is_edge = false; -			LLViewerRegion* new_region_found = NULL; -			if (cnx < -nsims || cnx > nsims || -			    cny < -nsims || cny > nsims) -			{ -				LL_DEBUGS("WaterHeight") << "  Edge Water!" << LL_ENDL; -				// Bumped into Edge water object. -				is_edge = true; -			} -			else if (checked[cindex]) -			{ -				LL_DEBUGS("WaterHeight") << "  Already checked before!" << LL_ENDL; -				// Already checked. -				is_hole = (checked[cindex] & hole_bit); -			} -			else -			{ -				S32 x = (S32)region_x + cnx * rwidth; -				S32 y = (S32)region_y + cny * rwidth; -				U64 region_handle = to_region_handle(x, y); -				new_region_found = getRegionFromHandle(region_handle); -				is_hole = !new_region_found; -				checked[cindex] = is_hole ? hole_bit : region_bit; -			} -			if (is_hole) -			{ -				// This was a region that borders at least one 'hole'. -				// Count the found coastline. -				F32 new_water_height = water_heights[index]; -				LL_DEBUGS("WaterHeight") << "  This is void; counting coastline with water height of " << new_water_height << LL_ENDL; -				S32 new_water_height_cm = llround(new_water_height * 100); -				int count = (water_height_counts[new_water_height_cm] += 1); -				// Just use the lowest water height: this is mainly about the horizon water, -				// and whatever we do, we don't want it to be possible to look under the water -				// when looking in the distance: it is better to make a step downwards in water -				// height when going away from the avie than a step upwards. However, since -				// everyone is used to DEFAULT_WATER_HEIGHT, don't allow a single region -				// to drag the water level below DEFAULT_WATER_HEIGHT on it's own. -				if (bordering_hole == 0 ||			// First time we get here. -				    (new_water_height >= DEFAULT_WATER_HEIGHT && -					 new_water_height < water_height) || -				    (new_water_height < DEFAULT_WATER_HEIGHT && -					 count > max_count) -				   ) -				{ -					water_height = new_water_height; -				} -				if (count > max_count) -				{ -					max_count = count; -				} -				if (!(checked[index] & bordering_hole_bit)) -				{ -					checked[index] |= bordering_hole_bit; -					++bordering_hole; -				} -			} -			else if (is_edge && !(checked[index] & bordering_edge_bit)) -			{ -				checked[index] |= bordering_edge_bit; -				++bordering_edge; -			} -			if (!new_region_found) -			{ -				// Dead end, there is no region here. -				continue; -			} -			// Found a new connected region. -			++number_of_connected_regions; -			if (new_region_found->getName().empty()) -			{ -				// Uninitialized LLViewerRegion, don't use it's water height. -				LL_DEBUGS("WaterHeight") << "  Uninitialized region." << LL_ENDL; -				++uninitialized_regions; -				continue; -			} -			nxny_pairs.push(nxny_pairs_type::value_type(cnx, cny)); -			water_heights[cindex] = new_region_found->getWaterHeight(); -			LL_DEBUGS("WaterHeight") << "  Found a new region (name: " << new_region_found->getName() << "; water height: " << water_heights[cindex] << " m)!" << LL_ENDL; -		} -	} -	llinfos << "Number of connected regions: " << number_of_connected_regions << " (" << uninitialized_regions << -		" uninitialized); number of regions bordering Hole water: " << bordering_hole << -		"; number of regions bordering Edge water: " << bordering_edge << llendl; -	llinfos << "Coastline count (height, count): "; -	bool first = true; -	for (std::map<S32, int>::iterator iter = water_height_counts.begin(); iter != water_height_counts.end(); ++iter) -	{ -		if (!first) llcont << ", "; -		llcont << "(" << (iter->first / 100.f) << ", " << iter->second << ")"; -		first = false; -	} -	llcont << llendl; -	llinfos << "Water height used for Hole and Edge water objects: " << water_height << llendl; - -	// Update all Region water objects. -	for (region_list_t::iterator iter = mRegionList.begin(); iter != mRegionList.end(); ++iter) -	{ -		LLViewerRegion* regionp = *iter; -		LLVOWater* waterp = regionp->getLand().getWaterObj(); -		if (waterp) -		{ -			gObjectList.updateActive(waterp); -		} -	} - -	// Clean up all existing Hole water objects. -	for (std::list<LLVOWater*>::iterator iter = mHoleWaterObjects.begin(); -		 iter != mHoleWaterObjects.end(); ++iter) -	{ -		LLVOWater* waterp = *iter; -		gObjectList.killObject(waterp); -	} -	mHoleWaterObjects.clear(); - -	// Let the Edge and Hole water boxes be 1024 meter high so that they -	// are never too small to be drawn (A LL_VO_*_WATER box has water -	// rendered on it's bottom surface only), and put their bottom at -	// the current regions water height. -	F32 const box_height = 1024; -	F32 const water_center_z = water_height + box_height / 2; - -	// Create new Hole water objects within 'range' where there is no region. -	for (S32 x = min_x; x <= max_x; x += rwidth) -	{ -		for (S32 y = min_y; y <= max_y; y += rwidth) -		{ -			U64 region_handle = to_region_handle(x, y); -			if (!getRegionFromHandle(region_handle)) -			{ -				LLVOWater* waterp = (LLVOWater*)gObjectList.createObjectViewer(LLViewerObject::LL_VO_VOID_WATER, gAgent.getRegion()); -				waterp->setUseTexture(FALSE); -				waterp->setPositionGlobal(LLVector3d(x + rwidth / 2, y + rwidth / 2, water_center_z)); -				waterp->setScale(LLVector3((F32)rwidth, (F32)rwidth, box_height)); -				gPipeline.createObject(waterp); -				mHoleWaterObjects.push_back(waterp); -			} -		} -	} - -	// Center of the region. -	S32 const center_x = region_x + rwidth / 2; -	S32 const center_y = region_y + rwidth / 2; -	// Width of the area with Hole water objects. -	S32 const width = rwidth + 2 * range; -	S32 const horizon_extend = 2048 + 512 - range;	// Legacy value. -	// The overlap is needed to get rid of sky pixels being visible between the -	// Edge and Hole water object at greater distances (due to floating point -	// round off errors). -	S32 const edge_hole_overlap = 1;		// Twice the actual overlap. -		 -	for (S32 dir = 0; dir < 8; ++dir) -	{ -		// Size of the Edge water objects. -		S32 const dim_x = (gDirAxes[dir][0] == 0) ? width : (horizon_extend + edge_hole_overlap); -		S32 const dim_y = (gDirAxes[dir][1] == 0) ? width : (horizon_extend + edge_hole_overlap); -		// And their position. -		S32 const water_center_x = center_x + (width + horizon_extend) / 2 * gDirAxes[dir][0]; -		S32 const water_center_y = center_y + (width + horizon_extend) / 2 * gDirAxes[dir][1]; - -		LLVOWater* waterp = mEdgeWaterObjects[dir]; -		if (!waterp || waterp->isDead()) -		{ -			// The edge water objects can be dead because they're attached to the region that the -			// agent was in when they were originally created. -			mEdgeWaterObjects[dir] = (LLVOWater *)gObjectList.createObjectViewer(LLViewerObject::LL_VO_VOID_WATER, gAgent.getRegion()); -			waterp = mEdgeWaterObjects[dir]; -			waterp->setUseTexture(FALSE); -			waterp->setIsEdgePatch(TRUE);		// Mark that this is edge water and not hole water. -			gPipeline.createObject(waterp); -		} - -		waterp->setRegion(gAgent.getRegion()); -		LLVector3d water_pos(water_center_x, water_center_y, water_center_z); -		LLVector3 water_scale((F32) dim_x, (F32) dim_y, box_height); - -		waterp->setPositionGlobal(water_pos); -		waterp->setScale(water_scale); - -		gObjectList.updateActive(waterp); -	} -}  void LLWorld::shiftRegions(const LLVector3& offset)  { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index ca58d8275b..69173d26f4 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1021,7 +1021,6 @@ S32 LLPipeline::getMaxLightingDetail() const  S32 LLPipeline::setLightingDetail(S32 level)  {  	LLMemType mt_ld(LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL); -	assertInitialized();  	if (level < 0)  	{ diff --git a/indra/newview/skins/default/xui/da/floater_web_content.xml b/indra/newview/skins/default/xui/da/floater_web_content.xml new file mode 100644 index 0000000000..74092e88ec --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_web_content.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_web_content" title=""> +	<layout_stack name="stack1"> +		<layout_panel name="nav_controls"> +			<button name="back" tool_tip="Navigér tilbage"/> +			<button name="forward" tool_tip="Navigér frem"/> +			<button name="stop" tool_tip="Stop navigering"/> +			<button name="reload" tool_tip="Genindlæs side"/> +			<combo_box name="address" tool_tip="Indtast URL her"/> +			<icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/> +			<button name="popexternal" tool_tip="Åben denne URL i din normale browser"/> +		</layout_panel> +	</layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml index 1231c4c08d..0b7a5040ae 100644 --- a/indra/newview/skins/default/xui/da/menu_login.xml +++ b/indra/newview/skins/default/xui/da/menu_login.xml @@ -16,7 +16,8 @@  		<menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>  		<menu_item_call label="Vis betingelser" name="TOS"/>  		<menu_item_call label="Vis vigtig besked" name="Critical"/> -		<menu_item_call label="Test i web browser" name="Web Browser Test"/> +		<menu_item_call label="Media Browser Test" name="Web Browser Test"/> +		<menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>  		<menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>  		<menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>  	</menu> diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml index 9dcce49708..186dbd476a 100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml @@ -3,6 +3,7 @@  	<menu_item_call label="Zoom tæt" name="Zoom Close"/>  	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>  	<menu_item_call label="Zoom langt" name="Zoom Far"/> +	<menu_item_call label="Zoom standard" name="Zoom Default"/>  	<menu_item_check label="Rotér kort" name="Rotate Map"/>  	<menu_item_check label="Auto centrér" name="Auto Center"/>  	<menu_item_call label="Fjern ref." name="Stop Tracking"/> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index a3dcfdf4cc..fc32be9dc9 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -119,13 +119,15 @@  			<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>  			<menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/>  		</menu> +		<menu_item_call label="Fortyd" name="Undo"/> +		<menu_item_call label="Gendan" name="Redo"/>  	</menu>  	<menu label="Hjælp" name="Help">  		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> +		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  		<menu_item_call label="Rapporter misbrug" name="Report Abuse"/>  		<menu_item_call label="Rapportér fejl" name="Report Bug"/>  		<menu_item_call label="Om [APP_NAME]" name="About Second Life"/> -		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  	</menu>  	<menu label="Avanceret" name="Advanced">  		<menu_item_call label="Gendan teksturer" name="Rebake Texture"/> @@ -266,7 +268,8 @@  			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>  		</menu>  		<menu label="UI (brugerflade)" name="UI"> -			<menu_item_call label="Test web browser" name="Web Browser Test"/> +			<menu_item_call label="Media browser test" name="Web Browser Test"/> +			<menu_item_call label="Browser med webindhold" name="Web Content Browser"/>  			<menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/>  			<menu_item_call label="Hukommelse statistik" name="Memory Stats"/>  			<menu_item_check label="Debug konsol for region" name="Region Debug Console"/> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 27024f4eaa..a3c4897ee1 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -109,6 +109,10 @@ Vælg kun en genstand, og prøv igen.  		'Ikke-venner' vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> +	<notification name="FavoritesOnLogin"> +		Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification>  	<notification name="GrantModifyRights">  		Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.  Ønsker du at give ændre-rettgheder til [NAME]? @@ -416,7 +420,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -426,7 +430,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -436,7 +440,7 @@ Tilbyd venskab til [NAME]?  			<input name="new_name">  				[NAME]  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -598,9 +602,41 @@ Hent og installér venligst den nyeste version fra  http://secondlife.com/download.  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> -	<notification name="DownloadBackground"> -		En opdateret version af [APP_NAME] er hentet. -Den vil blive anvendt næste gang du genstarter [APP_NAME] +	<notification name="FailedRequiredUpdateInstall"> +		Vi kunne ikke installere en påkrævet opdatering. +Du kan ikke logge på før [APP_NAME] er blevet opdateret. + +Hent og installer venligst den nyeste klien fra +http://secondlife.com/download. +		<usetemplate name="okbutton" yestext="Afslut"/> +	</notification> +	<notification name="UpdaterServiceNotRunning"> +		Dette er en påkrævet opdatering af din Second Life installation. + +Du kan downloade opdateringen fra http://www.secondlife.com/downloads +eller du kan installere den nu. +		<usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/> +	</notification> +	<notification name="DownloadBackgroundTip"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="DownloadBackgroundDialog"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="RequiredUpdateDownloadedVerboseDialog"> +		Vi har hentet en påkrævet opdatering. +Version [VERSION] + +Du skal genstarte [APP_NAME] for at installere denne opdatering. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification> +	<notification name="RequiredUpdateDownloadedDialog"> +		Du skal genstarte [APP_NAME] for at installere opdateringen. +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="DeedObjectToGroup">  		<usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/> @@ -1123,14 +1159,6 @@ Prøv at vælge mindre stykker land.  	<notification name="NoContentToSearch">  		Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).  	</notification> -	<notification name="GroupVote"> -		[NAME] har forslået at stemme for: -[MESSAGE] -		<form name="form"> -			<button name="VoteNow" text="Stem nu"/> -			<button name="Later" text="Senere"/> -		</form> -	</notification>  	<notification name="SystemMessage">  		[MESSAGE]  	</notification> @@ -1682,9 +1710,7 @@ Avatar '[NAME]' har forladt udseende modus.  	<notification name="NoConnect">  		Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].  Check venligst din netværks- og firewallsetup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="NoVoiceConnect">  		Vi har problemer med at oprette forbindelse til din stemme server: @@ -1693,9 +1719,7 @@ Check venligst din netværks- og firewallsetup.  Stemme kommunikation vil ikke være tilgængelig.  Check venligst din netværks- og firewall setup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="AvatarRezLeftNotification">  		( [EXISTENCE] sekunder i live ) @@ -1731,6 +1755,9 @@ Sluk for alles lyd?  	<notification label="Undersøg verden" name="HintDestinationGuide">  		Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.  	</notification> +	<notification label="Ændre dit udseende" name="HintAvatarPicker"> +		Kunne du tænke dig at prøve et nyt udseende? Klik på knappen nedenfor for at se flere avatarer. +	</notification>  	<notification label="Side panel" name="HintSidePanel">  		Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.  	</notification> @@ -1740,6 +1767,12 @@ Sluk for alles lyd?  	<notification label="Visningsnavn" name="HintDisplayName">  		Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.  	</notification> +	<notification label="Flyt" name="HintMoveArrows"> +		For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op +	</notification> +	<notification label="Se" name="HintView"> +		For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå. +	</notification>  	<notification label="Beholdning" name="HintInventory">  		Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting"  	</notification> @@ -1753,6 +1786,15 @@ Sluk for alles lyd?  			<button name="open" text="Åben pop-up vindue"/>  		</form>  	</notification> +	<notification name="AuthRequest"> +		Hjemmesiden på  '<nolink>[HOST_NAME]</nolink>' in realm '[REALM]' kræver et brugernavn og password. +		<form name="form"> +			<input name="username" text="Brugernavn"/> +			<input name="password" text="Password"/> +			<button name="ok" text="Send"/> +			<button name="cancel" text="Annullér"/> +		</form> +	</notification>  	<global name="UnsupportedGLRequirements">  		Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml index df1173a0a0..890f4a2f0a 100644 --- a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml @@ -21,7 +21,7 @@  	<string name="FormatYears">  		[COUNT]å  	</string> -	<text name="avatar_name" value="Ukendt"/> +	<text name="avatar_name" value="(henter)"/>  	<icon name="permission_edit_theirs_icon" tool_tip="Du kan redigere denne vens objekter"/>  	<icon name="permission_edit_mine_icon" tool_tip="Denne ven kan redigere, slette eller tage dine objekter"/>  	<icon name="permission_map_icon" tool_tip="Denne ven kan finde dig på kortet"/> diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml index 3826e8a228..0f60a6df51 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml @@ -1,10 +1,12 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_alpha_panel"> -	<panel name="avatar_alpha_color_panel"> -		<texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> -	</panel> +	<scroll_container name="avatar_alpha_color_panel_scroll"> +		<panel name="avatar_alpha_color_panel"> +			<texture_picker label="Nedre alpha" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øverste alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hovede alpha" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øje alpha" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hår alpha" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> +		</panel> +	</scroll_container>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index 268f138185..dc8d9bc432 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -3,9 +3,6 @@  	<panel.string name="create_account_url">  		http://join.secondlife.com/  	</panel.string> -	<panel.string name="real_url"> -		http://secondlife.com/app/login/ -	</panel.string>  	<panel.string name="forgot_password_url">  		http://secondlife.com/account/request.php  	</panel.string> @@ -14,7 +11,7 @@  			<text name="username_text">  				Brugernavn:  			</text> -			<line_editor label="bobsmith12 eller Steller Sunshine" name="username_edit" tool_tip="Det brugernavn du valgte da du registrerede, som f.eks. bobsmith12 eller Steller Sunshine"/> +			<combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>  			<text name="password_text">  				Password:  			</text> diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml index 2db4b278d7..94da58389f 100644 --- a/indra/newview/skins/default/xui/da/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml @@ -5,30 +5,27 @@  	<string name="RegisterDateFormat">  		[REG_DATE] ([AGE])  	</string> +	<string name="name_text_args"> +		[NAME] +	</string> +	<string name="display_name_text_args"> +		[DISPLAY_NAME] +	</string>  	<layout_stack name="layout">  		<layout_panel name="profile_stack">  			<scroll_container name="profile_scroll">  				<panel name="scroll_content_panel">  					<panel name="second_life_image_panel"> -						<icon label="" name="2nd_life_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> -					</panel> -					<panel name="first_life_image_panel"> -						<icon label="" name="real_world_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_rw_descr_text" value="Real World:"/> -					</panel> -					<text name="title_member_text" value="Beboer siden:"/> -					<text name="title_acc_status_text" value="Konto status:"/> -					<text name="title_partner_text" value="Partner:"/> -					<panel name="partner_data_panel"> -						<name_box initial_value="(henter)" name="partner_text"/> +						<text name="display_name_descr_text"> +							Brugernavn +						</text> +						<text name="name_descr_text"> +							Visningsnavn +						</text> +						<button label="Profil" name="see_profile_btn" tool_tip="Se profil for denne avatar"/>  					</panel> -					<text name="title_groups_text" value="Grupper:"/>  				</panel>  			</scroll_container>  		</layout_panel>  	</layout_stack> -	<panel name="profile_me_buttons_panel"> -		<button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> -	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml index 949ff1a058..30ad4ff9f6 100644 --- a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml @@ -3,8 +3,9 @@  	<string name="message_max_lines_count" value="7"/>  	<panel label="info_panel" name="info_panel">  		<text_editor name="message" value="besked"/> -		parse_urls="false" +	</panel> +	<panel label="control_panel" name="control_panel">  		<button label="Send" name="btn_submit"/> +		<button label="Ignorér" name="ignore_btn"/>  	</panel> -	<panel label="control_panel" name="control_panel"/>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index 604a00e0b4..b2b00db769 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml @@ -29,10 +29,10 @@  		URL'er  	</text>  	<text name="bubble_chat"> -		Chat-boble baggrund: +		Baggrundsfarve til navne-skilt (berører også Bubble Chat):  	</text> -	<color_swatch name="background" tool_tip="Vælg farve til chat-boble"/> -	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity"/> +	<color_swatch name="background" tool_tip="Vælg farve til navne-skilt"/> +	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity" tool_tip="Vælg gennemsigtighed for navneskilt"/>  	<text name="floater_opacity">  		Vindue uigennemsigtighed:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml index 2843f0d339..0df330b016 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml @@ -7,9 +7,11 @@  	<text name="cache_size_label_l">  		(Lokationer, billeder, web, søge historik)  	</text> +	<check_box label="Vis dig selv i søgeresultater" name="online_searchresults"/>  	<check_box label="Kun venner og grupper ved jeg er online" name="online_visibility"/>  	<check_box label="Kun venner og grupper kan sende besked til mig" name="voice_call_friends_only_check"/>  	<check_box label="Slå mikrofon fra når opkald slutter" name="auto_disengage_mic_check"/> +	<check_box label="Vis mine favorit landemærker ved login (via "Start ved" menuen)" name="favorites_on_login_check"/>  	<text name="Logs:">  		Chat Logs:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 332b5ed1c4..479e98817e 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -39,5 +39,11 @@  	</text>  	<line_editor name="web_proxy_editor" tool_tip="Angiv navn eller IP addresse på den proxy du ønsker at anvende"/>  	<spinner label="Port nummer:" name="web_proxy_port"/> -	<check_box initial_value="sand" label="Hent og installer automatisk [APP_NAME] opdateringer" name="updater_service_active"/> +	<text name="Software updates:"> +		Software opdateringer: +	</text> +	<combo_box name="updater_service_combobox"> +		<combo_box.item label="Installér automatisk" name="Install_automatically"/> +		<combo_box.item label="Hent og installér opdateringer manuelt" name="Install_manual"/> +	</combo_box>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 75600a93f6..5810cc21e7 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Omgivelser" name="Wind Volume"/>  	<slider label="Lyd effekter" name="SFX Volume"/>  	<slider label="Musik" name="Music Volume"/> -	<check_box label="Aktiveret" name="music_enabled"/> +	<check_box label="Aktiveret" name="enable_music"/>  	<slider label="Media" name="Media Volume"/>  	<check_box label="Aktiveret" name="enable_media"/>  	<slider label="Stemme chat" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 8633f12d24..6e7bdfc188 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<panel name="balance_bg"> -		<text name="balance" tool_tip="Min status" value="L$20"/> +		<text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>  		<button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>  	</panel>  	<text name="TimeText" tool_tip="Nuværende tid (Pacific)"> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 6f891b8d1b..aa02fc14e5 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1843,34 +1843,34 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Fremad  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Venstre  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Højre  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Bagud  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Syd  	</string> -	<string name="West"> +	<string name="Direction_West">  		Vest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Øst  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Op  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Ned  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 26674ea594..0f029d8664 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Umgebung" name="Wind Volume"/>  	<slider label="Soundeffekte" name="SFX Volume"/>  	<slider label="Musik wird gestreamt" name="Music Volume"/> -	<check_box label="Aktiviert" name="music_enabled"/> +	<check_box label="Aktiviert" name="enable_music"/>  	<slider label="Medien" name="Media Volume"/>  	<check_box label="Aktiviert" name="enable_media"/>  	<slider label="Voice-Chat" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index e4676194aa..7284e40be2 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1888,34 +1888,34 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vorwärts  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Hinten  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norden  	</string> -	<string name="South"> +	<string name="Direction_South">  		Süden  	</string> -	<string name="West"> +	<string name="Direction_West">  		Westen  	</string> -	<string name="East"> +	<string name="Direction_East">  		Osten  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Nach oben  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Nach unten  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 3dd6c60095..937a97797d 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1905,7 +1905,7 @@ Only large parcels can be listed in search.  			</panel.string>        <panel.string         name="allow_public_access"> -        Allow Public Access ([MATURITY]) +        Allow Public Access ([MATURITY]) (Note: Unchecking this will create ban lines)        </panel.string>              <panel.string               name="estate_override"> @@ -1932,7 +1932,7 @@ Only large parcels can be listed in search.               name="public_access"               top_pad="5"               label_text.valign="center" -             label_text.v_pad="-7"  +             label_text.v_pad="-2"                width="278" />              <text               type="string" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index cce833b1ea..53cc808e70 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -722,6 +722,33 @@  	  <button.commit_callback  	     function="BuildTool.applyToSelection"/>      </button> +	<text +	 text_color="LtGray_50" +	  type="string" +	  length="1" +	  height="10" +	  follows="left|top" +	  halign="right" +	  layout="topleft" +	  right="-10" +	  name="obj_count" +	  top_pad="5" +	  width="143"> +		Objects: [COUNT] +	</text> +	<text +    text_color="LtGray_50" +     type="string" +     length="1" +	height="10"  +     follows="left|top" +     halign="right" +     layout="topleft" +     right="-10" +     name="prim_count" +     width="143"> +		Prims: [COUNT] +	</text>      <text      text_color="LtGray_50"       type="string" @@ -732,7 +759,7 @@       layout="topleft"       right="-100"       name="linked_set_count" -     top_pad="5" +     top="144"       width="80">          Linked Sets: [COUNT]      </text> diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml index 7fa4cd840a..d2519a5aa4 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml @@ -39,6 +39,17 @@           parameter="sort_by_recent" />               </menu_item_check>      <menu_item_check +     label="Sort Folders Always by Name" +     layout="topleft" +     name="sort_folders_by_name"> +        <on_click +         function="Inventory.GearDefault.Custom.Action" +         parameter="sort_folders_by_name" /> +        <on_check +         function="Inventory.GearDefault.Check" +         parameter="sort_folders_by_name" /> +    </menu_item_check> +    <menu_item_check       label="Sort System Folders to Top"       layout="topleft"       name="sort_system_folders_to_top"> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index f0ce8b849a..26af8dc29d 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -198,9 +198,12 @@  		label="Enabled"  		layout="topleft"  		left_pad="5" -		name="music_enabled" +		name="enable_music"  		top_delta="2" -		width="350"/> +		width="350"> +		<check_box.commit_callback +			function="Pref.updateMediaAutoPlayCheckbox"/> +	</check_box>  	<slider  		control_name="AudioLevelMedia"  		disabled_control="MuteAudio" @@ -245,7 +248,10 @@  		top_delta="2"  		left_pad="5"  		name="enable_media" -		width="110"/> +		width="110"> +		<check_box.commit_callback +			function="Pref.updateMediaAutoPlayCheckbox"/> +	</check_box>  	<slider  		control_name="AudioLevelVoice"  		disabled_control="MuteAudio" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 1b2571a0d6..4b871343e2 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1949,7 +1949,7 @@ Requests name of an avatar.  When data is available the dataserver event will be  	<!-- Gestures labels -->      <!-- use value="" because they have preceding spaces --> -    <string name="Chat"          value=" Chat : " /> +    <string name="Chat Message"  value=" Chat : " />      <string name="Sound"         value=" Sound : " />  	<string name="Wait"          value=" --- Wait : " />  	<string name="AnimFlagStop"  value=" Stop Animation :    " /> @@ -2323,9 +2323,6 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="accel-win-alt">Alt+</string>  	<string name="accel-win-shift">Shift+</string> -	<string name="Esc">Esc</string> -	<string name="Home">Home</string> -  	<!-- Previews -->  	<string name="FileSaved">File Saved</string>  	<string name="Receiving">Receiving</string> @@ -2337,16 +2334,16 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">PDT</string>  	<!-- Directions, HUD --> -	<string name="Forward">Forward</string> -	<string name="Left">Left</string> -	<string name="Right">Right</string> -	<string name="Back">Back</string> -	<string name="North">North</string> -	<string name="South">South</string> -	<string name="West">West</string> -	<string name="East">East</string> -	<string name="Up">Up</string> -	<string name="Down">Down</string> +	<string name="Direction_Forward">Forward</string> +	<string name="Direction_Left">Left</string> +	<string name="Direction_Right">Right</string> +	<string name="Direction_Back">Back</string> +	<string name="Direction_North">North</string> +	<string name="Direction_South">South</string> +	<string name="Direction_West">West</string> +	<string name="Direction_East">East</string> +	<string name="Direction_Up">Up</string> +	<string name="Direction_Down">Down</string>      <!-- Search Category Strings -->  	<string name="Any Category">Any Category</string> @@ -3315,4 +3312,119 @@ Abuse Report</string>    <string name="EmptyOutfitText">There are no items in this outfit</string> +  <!-- Key names begin --> +  <string name="Esc">Esc</string> +  <string name="Space">Space</string> +  <string name="Enter">Enter</string> +  <string name="Tab">Tab</string> +  <string name="Ins">Ins</string> +  <string name="Del">Del</string> +  <string name="Backsp">Backsp</string> +  <string name="Shift">Shift</string> +  <string name="Ctrl">Ctrl</string> +  <string name="Alt">Alt</string> +  <string name="CapsLock">CapsLock</string> +  <string name="Left">Left</string> +  <string name="Right">Right</string> +  <string name="Up">Up</string> +  <string name="Down">Down</string> +  <string name="Home">Home</string> +  <string name="End">End</string> +  <string name="PgUp">PgUp</string> +  <string name="PgDn">PgDn</string> + +  <string name="F1">F1</string> +  <string name="F2">F2</string> +  <string name="F3">F3</string> +  <string name="F4">F4</string> +  <string name="F5">F5</string> +  <string name="F6">F6</string> +  <string name="F7">F7</string> +  <string name="F8">F8</string> +  <string name="F9">F9</string> +  <string name="F10">F10</string> +  <string name="F11">F11</string> +  <string name="F12">F12</string> + +  <string name="Add">Add</string> +  <string name="Subtract">Subtract</string> +  <string name="Multiply">Multiply</string> +  <string name="Divide">Divide</string> +  <string name="PAD_DIVIDE">PAD_DIVIDE</string> +  <string name="PAD_LEFT">PAD_LEFT</string> +  <string name="PAD_RIGHT">PAD_RIGHT</string> +  <string name="PAD_DOWN">PAD_DOWN</string> +  <string name="PAD_UP">PAD_UP</string> +  <string name="PAD_HOME">PAD_HOME</string> +  <string name="PAD_END">PAD_END</string> +  <string name="PAD_PGUP">PAD_PGUP</string> +  <string name="PAD_PGDN">PAD_PGDN</string> +  <string name="PAD_CENTER">PAD_CENTER</string> +  <string name="PAD_INS">PAD_INS</string> +  <string name="PAD_DEL">PAD_DEL</string> +  <string name="PAD_Enter">PAD_Enter</string> +  <string name="PAD_BUTTON0">PAD_BUTTON0</string> +  <string name="PAD_BUTTON1">PAD_BUTTON1</string> +  <string name="PAD_BUTTON2">PAD_BUTTON2</string> +  <string name="PAD_BUTTON3">PAD_BUTTON3</string> +  <string name="PAD_BUTTON4">PAD_BUTTON4</string> +  <string name="PAD_BUTTON5">PAD_BUTTON5</string> +  <string name="PAD_BUTTON6">PAD_BUTTON6</string> +  <string name="PAD_BUTTON7">PAD_BUTTON7</string> +  <string name="PAD_BUTTON8">PAD_BUTTON8</string> +  <string name="PAD_BUTTON9">PAD_BUTTON9</string> +  <string name="PAD_BUTTON10">PAD_BUTTON10</string> +  <string name="PAD_BUTTON11">PAD_BUTTON11</string> +  <string name="PAD_BUTTON12">PAD_BUTTON12</string> +  <string name="PAD_BUTTON13">PAD_BUTTON13</string> +  <string name="PAD_BUTTON14">PAD_BUTTON14</string> +  <string name="PAD_BUTTON15">PAD_BUTTON15</string> + +  <string name="-">-</string> +  <string name="=">=</string> +  <string name="`">`</string> +  <string name=";">;</string> +  <string name="[">[</string> +  <string name="]">]</string> +  <string name="\">\</string> + +  <string name="0">0</string> +  <string name="1">1</string> +  <string name="2">2</string> +  <string name="3">3</string> +  <string name="4">4</string> +  <string name="5">5</string> +  <string name="6">6</string> +  <string name="7">7</string> +  <string name="8">8</string> +  <string name="9">9</string> + +  <string name="A">A</string> +  <string name="B">B</string> +  <string name="C">C</string> +  <string name="D">D</string> +  <string name="E">E</string> +  <string name="F">F</string> +  <string name="G">G</string> +  <string name="H">H</string> +  <string name="I">I</string> +  <string name="J">J</string> +  <string name="K">K</string> +  <string name="L">L</string> +  <string name="M">M</string> +  <string name="N">N</string> +  <string name="O">O</string> +  <string name="P">P</string> +  <string name="Q">Q</string> +  <string name="R">R</string> +  <string name="S">S</string> +  <string name="T">T</string> +  <string name="U">U</string> +  <string name="V">V</string> +  <string name="W">W</string> +  <string name="X">X</string> +  <string name="Y">Y</string> +  <string name="Z">Z</string> +  <!-- Key names end --> +    </strings> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 7989100c09..6c4ab0f14f 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Ambiental" name="Wind Volume"/>  	<slider label="Efectos de sonido" name="SFX Volume"/>  	<slider label="Música en streaming" name="Music Volume"/> -	<check_box label="Activada" name="music_enabled"/> +	<check_box label="Activada" name="enable_music"/>  	<slider label="Multimedia" name="Media Volume"/>  	<check_box label="Activada" name="enable_media"/>  	<slider label="Chat de voz" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 810b1630dd..19adf29d29 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1846,34 +1846,34 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Adelante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Izquierda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Derecha  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sur  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Este  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Arriba  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abajo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 7828d2df97..6287f10f3e 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="gesture_preview">  	<floater.string name="step_anim"> -		Animation à jouer : +		Animation à exécuter :  	</floater.string>  	<floater.string name="step_sound">  		Son à lire : diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml index 86a2ddd185..20af901ddc 100644 --- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml @@ -1,6 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu name="hide_navbar_menu">  	<menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/> -	<menu_item_check label="Afficher la barre des Favoris" name="ShowNavbarFavoritesPanel"/> +	<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>  	<menu_item_check label="Afficher la mini-barre d'emplacement" name="ShowMiniLocationPanel"/>  </menu> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 654d40e2f9..48630918d7 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -9,13 +9,13 @@  	<slider label="Ambiant" name="Wind Volume"/>  	<slider label="Effets sonores" name="SFX Volume"/>  	<slider label="Flux musical" name="Music Volume"/> -	<check_box label="Activé" name="music_enabled"/> +	<check_box label="Activé" name="enable_music"/>  	<slider label="Média" name="Media Volume"/>  	<check_box label="Activé" name="enable_media"/>  	<slider label="Chat vocal" name="Voice Volume"/>  	<check_box label="Activé" name="enable_voice_check"/>  	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/> -	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/> +	<check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>  	<text name="voice_chat_settings">  		Paramètres du chat vocal  	</text> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index d75f6c731d..74c1fd8622 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1888,34 +1888,34 @@  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vers l'avant  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Gauche  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Droite  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Arrière  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ouest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Haut  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Bas  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index 2ddb226020..6e70a314c5 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml @@ -6,7 +6,7 @@  	<slider label="Ambiente" name="Wind Volume"/>  	<slider label="Effetti sonori" name="SFX Volume"/>  	<slider label="Musica in streaming" name="Music Volume"/> -	<check_box label="Abilitato" name="music_enabled"/> +	<check_box label="Abilitato" name="enable_music"/>  	<slider label="Multimediale" name="Media Volume"/>  	<check_box label="Abilitato" name="enable_media"/>  	<slider label="Chat vocale" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index dfe635182e..37dc90d056 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -1846,34 +1846,34 @@ Tipi conosciuti .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		Ora legale Pacifico  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avanti  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Sinistra  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Destra  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Indietro  	</string> -	<string name="North"> +	<string name="Direction_North">  		Nord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sud  	</string> -	<string name="West"> +	<string name="Direction_West">  		Ovest  	</string> -	<string name="East"> +	<string name="Direction_East">  		Est  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Su  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Giù  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index 4f29ae7b44..9fbbd46220 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -6,7 +6,7 @@  	<slider label="風" name="Wind Volume"/>  	<slider label="効果音" name="SFX Volume"/>  	<slider label="ストリーミング音楽" name="Music Volume"/> -	<check_box label="有効" name="music_enabled"/> +	<check_box label="有効" name="enable_music"/>  	<slider label="メディア" name="Media Volume"/>  	<check_box label="有効" name="enable_media"/>  	<slider label="ボイスチャット" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index 187f21257a..75cb126874 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1882,34 +1882,34 @@  	<string name="PDT">  		太平洋夏時間  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		前  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		左  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		右  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		後ろ  	</string> -	<string name="North"> +	<string name="Direction_North">  		北  	</string> -	<string name="South"> +	<string name="Direction_South">  		南  	</string> -	<string name="West"> +	<string name="Direction_West">  		西  	</string> -	<string name="East"> +	<string name="Direction_East">  		東  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		上  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		下  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml index 07265d2716..87e3638a49 100644 --- a/indra/newview/skins/default/xui/nl/strings.xml +++ b/indra/newview/skins/default/xui/nl/strings.xml @@ -1441,34 +1441,34 @@ Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Vooruit  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Links  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Rechts  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Achteruit  	</string> -	<string name="North"> +	<string name="Direction_North">  		Noord  	</string> -	<string name="South"> +	<string name="Direction_South">  		Zuid  	</string> -	<string name="West"> +	<string name="Direction_West">  		West  	</string> -	<string name="East"> +	<string name="Direction_East">  		Oost  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Omhoog  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Omlaag  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml index c708cc0b99..ac93949a1b 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Otoczenie" name="Wind Volume"/>  	<slider label="Efekty dźwiękowe" name="SFX Volume"/>  	<slider label="Muzyka strumieniowa" name="Music Volume"/> -	<check_box label="Odtwarzaj media audio" name="music_enabled"/> +	<check_box label="Odtwarzaj media audio" name="enable_music"/>  	<slider label="Media" name="Media Volume"/>  	<check_box label="Odtwarzaj media" name="enable_media"/>  	<slider label="Komunikacja głosowa" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index d1fb382a2d..e6019bf66d 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -1843,34 +1843,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Do przodu  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		W lewo  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		W prawo  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Wróć  	</string> -	<string name="North"> +	<string name="Direction_North">  		Północ  	</string> -	<string name="South"> +	<string name="Direction_South">  		Południe  	</string> -	<string name="West"> +	<string name="Direction_West">  		Zachód  	</string> -	<string name="East"> +	<string name="Direction_East">  		Wschód  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		W górę  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		W dół  	</string>  	<string name="Any Category"> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index 60f51c33e5..3846bfb377 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml @@ -9,7 +9,7 @@  	<slider label="Ambiente" name="Wind Volume"/>  	<slider label="Efeitos sonoros" name="SFX Volume"/>  	<slider label="Streaming de música" name="Music Volume"/> -	<check_box label="Ativado" name="music_enabled"/> +	<check_box label="Ativado" name="enable_music"/>  	<slider label="Mídia" name="Media Volume"/>  	<check_box label="Ativado" name="enable_media"/>  	<slider label="Bate-papo de voz" name="Voice Volume"/> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ce2c2ddaa1..06123e0118 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1846,34 +1846,34 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	<string name="PDT">  		PDT  	</string> -	<string name="Forward"> +	<string name="Direction_Forward">  		Avante  	</string> -	<string name="Left"> +	<string name="Direction_Left">  		Esquerda  	</string> -	<string name="Right"> +	<string name="Direction_Right">  		Direita  	</string> -	<string name="Back"> +	<string name="Direction_Back">  		Atrás  	</string> -	<string name="North"> +	<string name="Direction_North">  		Norte  	</string> -	<string name="South"> +	<string name="Direction_South">  		Sul  	</string> -	<string name="West"> +	<string name="Direction_West">  		Oeste  	</string> -	<string name="East"> +	<string name="Direction_East">  		Leste  	</string> -	<string name="Up"> +	<string name="Direction_Up">  		Acima  	</string> -	<string name="Down"> +	<string name="Direction_Down">  		Abaixo  	</string>  	<string name="Any Category"> diff --git a/indra/newview/tests/llsimplestat_test.cpp b/indra/newview/tests/llsimplestat_test.cpp index 60a8cac995..b556941f4a 100644 --- a/indra/newview/tests/llsimplestat_test.cpp +++ b/indra/newview/tests/llsimplestat_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-22   * @brief Test cases for some of llsimplestat.h   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/newview/tests/llviewerassetstats_test.cpp b/indra/newview/tests/llviewerassetstats_test.cpp index 1bb4fb7c0c..3faddc13c1 100644 --- a/indra/newview/tests/llviewerassetstats_test.cpp +++ b/indra/newview/tests/llviewerassetstats_test.cpp @@ -3,31 +3,25 @@   * @date 2010-10-28   * @brief Test cases for some of newview/llviewerassetstats.cpp   * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - *  - * Copyright (c) 2010, Linden Research, Inc. - *  + * $LicenseInfo:firstyear=2010&license=viewerlgpl$   * Second Life Viewer Source Code - * The source code in this file ("Source Code") is provided by Linden Lab - * to you under the terms of the GNU General Public License, version 2.0 - * ("GPL"), unless you have obtained a separate licensing agreement - * ("Other License"), formally executed by you and Linden Lab.  Terms of - * the GPL can be found in doc/GPL-license.txt in this distribution, or - * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * Copyright (C) 2010, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only.   *  - * There are special exceptions to the terms and conditions of the GPL as - * it is applied to this Source Code. View the full text of the exception - * in the file doc/FLOSS-exception.txt in this software distribution, or - * online at - * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details.   *  - * By copying, modifying or distributing this software, you acknowledge - * that you have read and understood your obligations described above, - * and agree to abide by those obligations. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA   *  - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA   * $/LicenseInfo$   */ diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 4a2272032b..e9d4d99753 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -1620,7 +1620,7 @@ mediaPanel* LLMediaPluginTest::addMediaPanel( std::string url )  	std::string user_data_path = std::string( cwd ) + "/";  #endif  	media_source->setUserDataPath(user_data_path); -	media_source->init( launcher_name, plugin_name, false ); +	media_source->init( launcher_name, user_data_path, plugin_name, false );  	media_source->setDisableTimeout(mDisableTimeout);  	// make a new panel and save parameters @@ -1860,7 +1860,7 @@ mediaPanel* LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string  #endif  	media_source->setUserDataPath(user_data_path); -	media_source->init( launcher_name, plugin_name, false ); +	media_source->init( launcher_name, user_data_path, plugin_name, false );  	media_source->setDisableTimeout(mDisableTimeout);  	// make a new panel and save parameters  | 
