diff options
Diffstat (limited to 'indra')
274 files changed, 3607 insertions, 2286 deletions
| diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt index 3d4befbe5e..310e6cbdd4 100644 --- a/indra/CMakeLists.txt +++ b/indra/CMakeLists.txt @@ -72,9 +72,9 @@ if (VIEWER)    add_subdirectory(${LIBS_OPEN_PREFIX}media_plugins)    # llplugin testbed code (is this the right way to include it?) -  if (NOT LINUX) +  if (LL_TESTS AND NOT LINUX)      add_subdirectory(${VIEWER_PREFIX}test_apps/llplugintest) -  endif (NOT LINUX) +  endif (LL_TESTS AND NOT LINUX)    if (LINUX)      add_subdirectory(${VIEWER_PREFIX}linux_crash_logger) diff --git a/indra/cmake/GoogleMock.cmake b/indra/cmake/GoogleMock.cmake index ca5a8034ba..06d6d847a0 100644 --- a/indra/cmake/GoogleMock.cmake +++ b/indra/cmake/GoogleMock.cmake @@ -8,9 +8,10 @@ set(GOOGLEMOCK_INCLUDE_DIRS      ${LIBS_PREBUILT_DIR}/include)  if (LINUX) +	# VWR-24366: gmock is underlinked, it needs gtest.      set(GOOGLEMOCK_LIBRARIES  -        gmock   -        gtest) +        gmock -Wl,--no-as-needed +        gtest -Wl,--as-needed)  elseif(WINDOWS)      set(GOOGLEMOCK_LIBRARIES           gmock) diff --git a/indra/cmake/JsonCpp.cmake b/indra/cmake/JsonCpp.cmake index 9024fa92a7..66c1739ff4 100644 --- a/indra/cmake/JsonCpp.cmake +++ b/indra/cmake/JsonCpp.cmake @@ -14,9 +14,9 @@ else (STANDALONE)        debug json_vc100debug_libmt.lib        optimized json_vc100_libmt)    elseif (DARWIN) -    set(JSONCPP_LIBRARIES libjson_linux-gcc-4.0.1_libmt.a) +    set(JSONCPP_LIBRARIES libjson_darwin_libmt.a)    elseif (LINUX) -    set(JSONCPP_LIBRARIES libjsoncpp.a) +    set(JSONCPP_LIBRARIES libjson_linux-gcc-4.1.3_libmt)    endif (WINDOWS) -  set(JSONCPP_INCLUDE_DIRS "${LIBS_PREBUILT_DIR}/include/jsoncpp" "${LIBS_PREBUILT_DIR}/include/json") +  set(JSONCPP_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)  endif (STANDALONE) diff --git a/indra/cmake/LLAddBuildTest.cmake b/indra/cmake/LLAddBuildTest.cmake index 05f0492234..cd0eada2d0 100644 --- a/indra/cmake/LLAddBuildTest.cmake +++ b/indra/cmake/LLAddBuildTest.cmake @@ -57,11 +57,6 @@ INCLUDE(GoogleMock)      ${CMAKE_SOURCE_DIR}/test/test.h      ) -  # Use the default flags -  if (LINUX) -    SET(CMAKE_EXE_LINKER_FLAGS "") -  endif (LINUX) -    # start the source test executable definitions    SET(${project}_TEST_OUTPUT "")    FOREACH (source ${sources}) diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 37aa75e364..320a9be8ab 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   run_build_test.py  @author Nat Goodspeed diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py index 5f7ff2f293..5699f5273f 100644 --- a/indra/copy_win_scripts/start-client.py +++ b/indra/copy_win_scripts/start-client.py @@ -1,4 +1,28 @@  #!/usr/bin/env python +"""\ +@file   start-client.py + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys, getopt  import os  import llstart diff --git a/indra/lib/python/indra/util/llperformance.py b/indra/lib/python/indra/util/llperformance.py index 7c52730b5e..57dd64de3f 100755 --- a/indra/lib/python/indra/util/llperformance.py +++ b/indra/lib/python/indra/util/llperformance.py @@ -1,4 +1,28 @@ -#!/usr/bin/python +#!/usr/bin/env python +"""\ +@file   llperformance.py + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, 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$ +"""  # ------------------------------------------------  # Sim metrics utility functions. diff --git a/indra/lib/python/indra/util/simperf_proc_interface.py b/indra/lib/python/indra/util/simperf_proc_interface.py index da6304a274..de061f68cc 100755 --- a/indra/lib/python/indra/util/simperf_proc_interface.py +++ b/indra/lib/python/indra/util/simperf_proc_interface.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file simperf_proc_interface.py  @brief Utility to extract log messages from *.<pid>.llsd files containing performance statistics. diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py index da8ee6c545..0532cb0065 100644 --- a/indra/lib/python/indra/util/test_win32_manifest.py +++ b/indra/lib/python/indra/util/test_win32_manifest.py @@ -1,28 +1,29 @@  #!/usr/bin/env python -# @file test_win32_manifest.py -# @brief Test an assembly binding version and uniqueness in a windows dll or exe.   -# -# $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$ - +"""\ +@file test_win32_manifest.py +@brief Test an assembly binding version and uniqueness in a windows dll or exe.   + +$LicenseInfo:firstyear=2009&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2009-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys, os  import tempfile  from xml.dom.minidom import parse 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/llmemory.cpp b/indra/llcommon/llmemory.cpp index a502d1a7eb..51fcd5b717 100644 --- a/indra/llcommon/llmemory.cpp +++ b/indra/llcommon/llmemory.cpp @@ -26,6 +26,12 @@  #include "linden_common.h" +#include "llmemory.h" + +#if MEM_TRACK_MEM +#include "llthread.h" +#endif +  #if defined(LL_WINDOWS)  # include <windows.h>  # include <psapi.h> @@ -37,8 +43,6 @@  # include <unistd.h>  #endif -#include "llmemory.h" -  //----------------------------------------------------------------------------  //static @@ -105,6 +109,20 @@ U64 LLMemory::getCurrentRSS()  	return counters.WorkingSetSize;  } +//static  +U32 LLMemory::getWorkingSetSize() +{ +    PROCESS_MEMORY_COUNTERS pmc ; +	U32 ret = 0 ; + +    if (GetProcessMemoryInfo( GetCurrentProcess(), &pmc, sizeof(pmc)) ) +	{ +		ret = pmc.WorkingSetSize ; +	} + +	return ret ; +} +  #elif defined(LL_DARWIN)  /*  @@ -151,6 +169,11 @@ U64 LLMemory::getCurrentRSS()  	return residentSize;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #elif defined(LL_LINUX)  U64 LLMemory::getCurrentRSS() @@ -185,6 +208,11 @@ bail:  	return rss;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #elif LL_SOLARIS  #include <sys/types.h>  #include <sys/stat.h> @@ -213,6 +241,12 @@ U64 LLMemory::getCurrentRSS()  	return((U64)proc_psinfo.pr_rssize * 1024);  } + +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #else  U64 LLMemory::getCurrentRSS() @@ -220,4 +254,144 @@ U64 LLMemory::getCurrentRSS()  	return 0;  } +U32 LLMemory::getWorkingSetSize() +{ +	return 0 ; +} +  #endif + +//-------------------------------------------------------------------------------------------------- +#if MEM_TRACK_MEM +#include "llframetimer.h" + +//static  +LLMemTracker* LLMemTracker::sInstance = NULL ; + +LLMemTracker::LLMemTracker() +{ +	mLastAllocatedMem = LLMemory::getWorkingSetSize() ; +	mCapacity = 128 ;	 +	mCurIndex = 0 ; +	mCounter = 0 ; +	mDrawnIndex = 0 ; +	mPaused = FALSE ; + +	mMutexp = new LLMutex(NULL) ; +	mStringBuffer = new char*[128] ; +	mStringBuffer[0] = new char[mCapacity * 128] ; +	for(S32 i = 1 ; i < mCapacity ; i++) +	{ +		mStringBuffer[i] = mStringBuffer[i-1] + 128 ; +	} +} + +LLMemTracker::~LLMemTracker() +{ +	delete[] mStringBuffer[0] ; +	delete[] mStringBuffer; +	delete mMutexp ; +} + +//static  +LLMemTracker* LLMemTracker::getInstance() +{ +	if(!sInstance) +	{ +		sInstance = new LLMemTracker() ; +	} +	return sInstance ; +} + +//static  +void LLMemTracker::release()  +{ +	if(sInstance) +	{ +		delete sInstance ; +		sInstance = NULL ; +	} +} + +//static +void LLMemTracker::track(const char* function, const int line) +{ +	static const S32 MIN_ALLOCATION = 0 ; //1KB + +	if(mPaused) +	{ +		return ; +	} + +	U32 allocated_mem = LLMemory::getWorkingSetSize() ; + +	LLMutexLock lock(mMutexp) ; + +	S32 delta_mem = allocated_mem - mLastAllocatedMem ; +	mLastAllocatedMem = allocated_mem ; + +	if(delta_mem <= 0) +	{ +		return ; //occupied memory does not grow +	} + +	if(delta_mem < MIN_ALLOCATION) +	{ +		return ; +	} +		 +	char* buffer = mStringBuffer[mCurIndex++] ; +	F32 time = (F32)LLFrameTimer::getElapsedSeconds() ; +	S32 hours = (S32)(time / (60*60)); +	S32 mins = (S32)((time - hours*(60*60)) / 60); +	S32 secs = (S32)((time - hours*(60*60) - mins*60)); +	strcpy(buffer, function) ; +	sprintf(buffer + strlen(function), " line: %d DeltaMem: %d (bytes) Time: %d:%02d:%02d", line, delta_mem, hours,mins,secs) ; + +	if(mCounter < mCapacity) +	{ +		mCounter++ ; +	} +	if(mCurIndex >= mCapacity) +	{ +		mCurIndex = 0 ;		 +	} +} + + +//static  +void LLMemTracker::preDraw(BOOL pause)  +{ +	mMutexp->lock() ; + +	mPaused = pause ; +	mDrawnIndex = mCurIndex - 1; +	mNumOfDrawn = 0 ; +} +	 +//static  +void LLMemTracker::postDraw()  +{ +	mMutexp->unlock() ; +} + +//static  +const char* LLMemTracker::getNextLine()  +{ +	if(mNumOfDrawn >= mCounter) +	{ +		return NULL ; +	} +	mNumOfDrawn++; + +	if(mDrawnIndex < 0) +	{ +		mDrawnIndex = mCapacity - 1 ; +	} + +	return mStringBuffer[mDrawnIndex--] ; +} + +#endif //MEM_TRACK_MEM +//-------------------------------------------------------------------------------------------------- + diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h index 9bf4248bb7..11406f59b0 100644 --- a/indra/llcommon/llmemory.h +++ b/indra/llcommon/llmemory.h @@ -26,7 +26,7 @@  #ifndef LLMEMORY_H  #define LLMEMORY_H - +#include "llmemtype.h"  extern S32 gTotalDAlloc;  extern S32 gTotalDAUse; @@ -44,10 +44,55 @@ public:  	// Return the resident set size of the current process, in bytes.  	// Return value is zero if not known.  	static U64 getCurrentRSS(); +	static U32 getWorkingSetSize();  private:  	static char* reserveMem;  }; +//---------------------------------------------------------------------------- +#if MEM_TRACK_MEM +class LLMutex ; +class LL_COMMON_API LLMemTracker +{ +private: +	LLMemTracker() ; +	~LLMemTracker() ; + +public: +	static void release() ; +	static LLMemTracker* getInstance() ; + +	void track(const char* function, const int line) ; +	void preDraw(BOOL pause) ; +	void postDraw() ; +	const char* getNextLine() ; + +private: +	static LLMemTracker* sInstance ; +	 +	char**     mStringBuffer ; +	S32        mCapacity ; +	U32        mLastAllocatedMem ; +	S32        mCurIndex ; +	S32        mCounter; +	S32        mDrawnIndex; +	S32        mNumOfDrawn; +	BOOL       mPaused; +	LLMutex*   mMutexp ; +}; + +#define MEM_TRACK_RELEASE LLMemTracker::release() ; +#define MEM_TRACK         LLMemTracker::getInstance()->track(__FUNCTION__, __LINE__) ; + +#else // MEM_TRACK_MEM + +#define MEM_TRACK_RELEASE +#define MEM_TRACK + +#endif // MEM_TRACK_MEM + +//---------------------------------------------------------------------------- +  // LLRefCount moved to llrefcount.h  // LLPointer moved to llpointer.h diff --git a/indra/llcommon/llmemtype.cpp b/indra/llcommon/llmemtype.cpp index fe83f87d4b..6290a7158f 100644 --- a/indra/llcommon/llmemtype.cpp +++ b/indra/llcommon/llmemtype.cpp @@ -229,3 +229,4 @@ char const * LLMemType::getNameFromID(S32 id)  	return DeclareMemType::mNameList[id];  } +//-------------------------------------------------------------------------------------------------- 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/llversionviewer.h b/indra/llcommon/llversionviewer.h index 7d5afe92dc..5a134b5009 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,8 +28,8 @@  #define LL_LLVERSIONVIEWER_H  const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 6; -const S32 LL_VERSION_PATCH = 0; +const S32 LL_VERSION_MINOR = 5; +const S32 LL_VERSION_PATCH = 1;  const S32 LL_VERSION_BUILD = 0;  const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index b46a99e030..39211bf7fa 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -274,11 +274,11 @@ LLImageRaw::LLImageRaw(U8 *data, U16 width, U16 height, S8 components)  	++sRawImageCount;  } -LLImageRaw::LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only) -	: LLImageBase() -{ -	createFromFile(filename, j2c_lowest_mip_only); -} +//LLImageRaw::LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only) +//	: LLImageBase() +//{ +//	createFromFile(filename, j2c_lowest_mip_only); +//}  LLImageRaw::~LLImageRaw()  { @@ -1178,7 +1178,7 @@ file_extensions[] =  	{ "png", IMG_CODEC_PNG }  };  #define NUM_FILE_EXTENSIONS LL_ARRAY_SIZE(file_extensions) - +#if 0  static std::string find_file(std::string &name, S8 *codec)  {  	std::string tname; @@ -1196,7 +1196,7 @@ static std::string find_file(std::string &name, S8 *codec)  	}  	return std::string("");  } - +#endif  EImageCodec LLImageBase::getCodecFromExtension(const std::string& exten)  {  	for (int i=0; i<(int)(NUM_FILE_EXTENSIONS); i++) @@ -1206,7 +1206,7 @@ EImageCodec LLImageBase::getCodecFromExtension(const std::string& exten)  	}  	return IMG_CODEC_INVALID;  } - +#if 0  bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip_only)  {  	std::string name = filename; @@ -1313,7 +1313,7 @@ bool LLImageRaw::createFromFile(const std::string &filename, bool j2c_lowest_mip  	return true;  } - +#endif  //---------------------------------------------------------------------------  // LLImageFormatted  //--------------------------------------------------------------------------- diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h index bca7e915fa..825b9aab1a 100644 --- a/indra/llimage/llimage.h +++ b/indra/llimage/llimage.h @@ -164,7 +164,7 @@ public:  	LLImageRaw(U16 width, U16 height, S8 components);  	LLImageRaw(U8 *data, U16 width, U16 height, S8 components);  	// Construct using createFromFile (used by tools) -	LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only = false); +	//LLImageRaw(const std::string& filename, bool j2c_lowest_mip_only = false);  	/*virtual*/ void deleteData();  	/*virtual*/ U8* allocateData(S32 size = -1); @@ -226,7 +226,7 @@ public:  protected:  	// Create an image from a local file (generally used in tools) -	bool createFromFile(const std::string& filename, bool j2c_lowest_mip_only = false); +	//bool createFromFile(const std::string& filename, bool j2c_lowest_mip_only = false);  	void copyLineScaled( U8* in, U8* out, S32 in_pixel_len, S32 out_pixel_len, S32 in_pixel_step, S32 out_pixel_step );  	void compositeRowScaled4onto3( U8* in, U8* out, S32 in_pixel_len, S32 out_pixel_len ); diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index d1c74b6fa1..28dc3bd313 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -38,6 +38,12 @@ LLImageDecodeThread::LLImageDecodeThread(bool threaded)  	mCreationMutex = new LLMutex(getAPRPool());  } +//virtual  +LLImageDecodeThread::~LLImageDecodeThread() +{ +	delete mCreationMutex ; +} +  // MAIN THREAD  // virtual  S32 LLImageDecodeThread::update(U32 max_time_ms) diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index c3c92ec832..c684222fa5 100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h @@ -73,6 +73,8 @@ public:  public:  	LLImageDecodeThread(bool threaded = true); +	virtual ~LLImageDecodeThread(); +  	handle_t decodeImage(LLImageFormatted* image,  						 U32 priority, S32 discard, BOOL needs_aux,  						 Responder* responder); diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index bad4d00fd6..687c1a7d45 100644 --- a/indra/llmath/llcamera.cpp +++ b/indra/llmath/llcamera.cpp @@ -703,6 +703,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 922d6f9fac..531144db39 100644 --- a/indra/llmath/llcamera.h +++ b/indra/llmath/llcamera.h @@ -50,15 +50,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 14e1ca8d43..71b92962fb 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -4406,19 +4406,54 @@ std::ostream& operator<<(std::ostream &s, const LLVolume *volumep)  BOOL LLVolumeFace::create(LLVolume* volume, BOOL partial_build)  { +	BOOL ret = FALSE ;  	if (mTypeMask & CAP_MASK)  	{ -		return createCap(volume, partial_build); +		ret = createCap(volume, partial_build);  	}  	else if ((mTypeMask & END_MASK) || (mTypeMask & SIDE_MASK))  	{ -		return createSide(volume, partial_build); +		ret = createSide(volume, partial_build);  	}  	else  	{  		llerrs << "Unknown/uninitialized face type!" << llendl; -		return FALSE;  	} + +	//update the range of the texture coordinates +	if(ret) +	{ +		mTexCoordExtents[0].setVec(1.f, 1.f) ; +		mTexCoordExtents[1].setVec(0.f, 0.f) ; + +		U32 end = mVertices.size() ; +		for(U32 i = 0 ; i < end ; i++) +		{ +			if(mTexCoordExtents[0].mV[0] > mVertices[i].mTexCoord.mV[0]) +			{ +				mTexCoordExtents[0].mV[0] = mVertices[i].mTexCoord.mV[0] ; +			} +			if(mTexCoordExtents[1].mV[0] < mVertices[i].mTexCoord.mV[0]) +			{ +				mTexCoordExtents[1].mV[0] = mVertices[i].mTexCoord.mV[0] ; +			} + +			if(mTexCoordExtents[0].mV[1] > mVertices[i].mTexCoord.mV[1]) +			{ +				mTexCoordExtents[0].mV[1] = mVertices[i].mTexCoord.mV[1] ; +			} +			if(mTexCoordExtents[1].mV[1] < mVertices[i].mTexCoord.mV[1]) +			{ +				mTexCoordExtents[1].mV[1] = mVertices[i].mTexCoord.mV[1] ; +			}			 +		} +		mTexCoordExtents[0].mV[0] = llmax(0.f, mTexCoordExtents[0].mV[0]) ; +		mTexCoordExtents[0].mV[1] = llmax(0.f, mTexCoordExtents[0].mV[1]) ; +		mTexCoordExtents[1].mV[0] = llmin(1.f, mTexCoordExtents[1].mV[0]) ; +		mTexCoordExtents[1].mV[1] = llmin(1.f, mTexCoordExtents[1].mV[1]) ; +	} + +	return ret ;  }  void	LerpPlanarVertex(LLVolumeFace::VertexData& v0, diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index d48a79ee46..28b9895ff3 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -831,6 +831,7 @@ public:  	S32 mNumT;  	LLVector3 mExtents[2]; //minimum and maximum point of face +	LLVector2 mTexCoordExtents[2]; //minimum and maximum of texture coordinates of the face.  	std::vector<VertexData> mVertices;  	std::vector<U16>	mIndices; diff --git a/indra/llmath/tests/m3math_test.cpp b/indra/llmath/tests/m3math_test.cpp index 622ee28288..479a00b99f 100644 --- a/indra/llmath/tests/m3math_test.cpp +++ b/indra/llmath/tests/m3math_test.cpp @@ -36,11 +36,11 @@  #include "../v3dmath.h"  #include "../test/lltut.h" -
 -#if LL_WINDOWS
 -// disable unreachable code warnings caused by usage of skip.
 -#pragma warning(disable: 4702)
 -#endif
 + +#if LL_WINDOWS +// disable unreachable code warnings caused by usage of skip. +#pragma warning(disable: 4702) +#endif  namespace tut  { diff --git a/indra/llmessage/tests/llhost_test.cpp b/indra/llmessage/tests/llhost_test.cpp index 38e4a0b127..eadf83c428 100644 --- a/indra/llmessage/tests/llhost_test.cpp +++ b/indra/llmessage/tests/llhost_test.cpp @@ -153,7 +153,7 @@ namespace tut  	{  		skip("this test is flaky, but we should figure out why...");  //		skip("setHostByName(\"google.com\"); getHostName() -> (e.g.) \"yx-in-f100.1e100.net\""); -		std::string hostStr = "linux.org";		 +		std::string hostStr = "lindenlab.com";		  		LLHost host;  		host.setHostByName(hostStr);	 diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index 7eb198bb34..580ee7f8b4 100644 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   test_llsdmessage_peer.py  @author Nat Goodspeed diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index 4d58ef7130..b70ce91ee7 100644 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   testrunner.py  @author Nat Goodspeed 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/llprimitive/lltextureentry.cpp b/indra/llprimitive/lltextureentry.cpp index 3c1d031ff5..861bde5c89 100644 --- a/indra/llprimitive/lltextureentry.cpp +++ b/indra/llprimitive/lltextureentry.cpp @@ -403,7 +403,7 @@ S32 LLTextureEntry::setOffsetT(F32 t)  S32 LLTextureEntry::setRotation(F32 theta)  { -	if (mRotation != theta) +	if (mRotation != theta && llfinite(theta))  	{  		mRotation = theta;  		return TEM_CHANGE_TEXTURE; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 65940cb067..e8e98211f1 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1063,16 +1063,6 @@ BOOL LLImageGL::setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_  {  	if (gGL.getTexUnit(0)->bind(this, false, true))  	{ -		if(gGLManager.mDebugGPU) -		{ -			llinfos << "Calling glCopyTexSubImage2D(...)" << llendl ; -			checkTexSize(true) ; -			llcallstacks << fb_x << " : " << fb_y << " : " << x_pos << " : " << y_pos << " : " << width << " : " << height << -				" : " << (S32)mComponents << llcallstacksendl ; - -			log_glerror() ; -		} -  		glCopyTexSubImage2D(GL_TEXTURE_2D, 0, fb_x, fb_y, x_pos, y_pos, width, height);  		mGLTextureCreated = true;  		stop_glerror(); diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 02160b09c4..7b5907a668 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -47,6 +47,7 @@ U32 LLVertexBuffer::sSetCount = 0;  S32 LLVertexBuffer::sCount = 0;  S32 LLVertexBuffer::sGLCount = 0;  S32 LLVertexBuffer::sMappedCount = 0; +BOOL LLVertexBuffer::sDisableVBOMapping = FALSE ;  BOOL LLVertexBuffer::sEnableVBOs = TRUE;  U32 LLVertexBuffer::sGLRenderBuffer = 0;  U32 LLVertexBuffer::sGLRenderIndices = 0; @@ -251,6 +252,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi  void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const  {  	llassert(mRequestedNumIndices >= 0); +  	if (indices_offset >= (U32) mRequestedNumIndices ||  	    indices_offset + count > (U32) mRequestedNumIndices)  	{ @@ -282,6 +284,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const  void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const  {  	llassert(mRequestedNumVerts >= 0); +  	if (first >= (U32) mRequestedNumVerts ||  	    first + count > (U32) mRequestedNumVerts)  	{ @@ -305,9 +308,10 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const  }  //static -void LLVertexBuffer::initClass(bool use_vbo) +void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)  {  	sEnableVBOs = use_vbo; +	sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ;  	LLGLNamePool::registerPool(&sDynamicVBOPool);  	LLGLNamePool::registerPool(&sDynamicIBOPool);  	LLGLNamePool::registerPool(&sStreamVBOPool); @@ -364,7 +368,9 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :  	mGLBuffer(0),  	mGLIndices(0),   	mMappedData(NULL), -	mMappedIndexData(NULL), mLocked(FALSE), +	mMappedIndexData(NULL),  +	mVertexLocked(FALSE), +	mIndexLocked(FALSE),  	mFinal(FALSE),  	mFilthy(FALSE),  	mEmpty(TRUE), @@ -422,6 +428,8 @@ LLVertexBuffer::~LLVertexBuffer()  	destroyGLBuffer();  	destroyGLIndices();  	sCount--; + +	llassert_always(!mMappedData && !mMappedIndexData) ;  };  //---------------------------------------------------------------------------- @@ -567,6 +575,8 @@ void LLVertexBuffer::destroyGLBuffer()  	{  		if (useVBOs())  		{ +			freeClientBuffer() ; +  			if (mMappedData || mMappedIndexData)  			{  				llerrs << "Vertex buffer destroyed while mapped!" << llendl; @@ -594,11 +604,13 @@ void LLVertexBuffer::destroyGLIndices()  	{  		if (useVBOs())  		{ +			freeClientBuffer() ; +  			if (mMappedData || mMappedIndexData)  			{  				llerrs << "Vertex buffer destroyed while mapped." << llendl;  			} -			releaseIndices(); +			releaseIndices();			  		}  		else  		{ @@ -799,6 +811,7 @@ void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)  	if (mResized && useVBOs())  	{ +		freeClientBuffer() ;  		setBuffer(0);  	}  } @@ -822,36 +835,69 @@ BOOL LLVertexBuffer::useVBOs() const  }  //---------------------------------------------------------------------------- +void LLVertexBuffer::freeClientBuffer() +{ +	if(useVBOs() && sDisableVBOMapping && (mMappedData || mMappedIndexData)) +	{ +		delete[] mMappedData ; +		delete[] mMappedIndexData ; +		mMappedData = NULL ; +		mMappedIndexData = NULL ; +	} +} + +void LLVertexBuffer::allocateClientVertexBuffer() +{ +	if(!mMappedData) +	{ +		U32 size = getSize() ; +		mMappedData = new U8[size]; +		memset(mMappedData, 0, size); +	} +} + +void LLVertexBuffer::allocateClientIndexBuffer() +{ +	if(!mMappedIndexData) +	{ +		U32 size = getIndicesSize(); +		mMappedIndexData = new U8[size]; +		memset(mMappedIndexData, 0, size); +	} +}  // Map for data access -U8* LLVertexBuffer::mapBuffer(S32 access) +U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 access)  {  	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);  	if (mFinal)  	{ -		llerrs << "LLVertexBuffer::mapBuffer() called on a finalized buffer." << llendl; +		llerrs << "LLVertexBuffer::mapVeretxBuffer() called on a finalized buffer." << llendl;  	}  	if (!useVBOs() && !mMappedData && !mMappedIndexData)  	{ -		llerrs << "LLVertexBuffer::mapBuffer() called on unallocated buffer." << llendl; +		llerrs << "LLVertexBuffer::mapVertexBuffer() called on unallocated buffer." << llendl;  	} -	if (!mLocked && useVBOs()) +	if (!mVertexLocked && useVBOs())  	{  		{  			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES); -			setBuffer(0); -			mLocked = TRUE; +			setBuffer(0, type); +			mVertexLocked = TRUE;  			stop_glerror();	 -			mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); -			stop_glerror(); -		} -		{ -			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); -			mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + +			if(sDisableVBOMapping) +			{ +				allocateClientVertexBuffer() ; +			} +			else +			{ +				mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +			}  			stop_glerror();  		} - +		  		if (!mMappedData)  		{  			log_glerror(); @@ -862,80 +908,166 @@ U8* LLVertexBuffer::mapBuffer(S32 access)  			llinfos << "Available physical mwmory(KB): " << avail_phy_mem << llendl ;   			llinfos << "Available virtual memory(KB): " << avail_vir_mem << llendl; -			//-------------------- -			//print out more debug info before crash -			llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ; -			GLint size ; -			glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ; -			llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ; -			//-------------------- +			if(!sDisableVBOMapping) +			{ +				//-------------------- +				//print out more debug info before crash +				llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ; +				GLint size ; +				glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ; +				llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ; +				//-------------------- -			GLint buff; -			glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); -			if ((GLuint)buff != mGLBuffer) +				GLint buff; +				glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); +				if ((GLuint)buff != mGLBuffer) +				{ +					llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; +				} + +				 +				llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl; +			} +			else  			{ -				llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; +				llerrs << "memory allocation for vertex data failed." << llendl ;  			} +		} +		sMappedCount++; +	} +	 +	return mMappedData; +} -			 -			llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl; +U8* LLVertexBuffer::mapIndexBuffer(S32 access) +{ +	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER); +	if (mFinal) +	{ +		llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl; +	} +	if (!useVBOs() && !mMappedData && !mMappedIndexData) +	{ +		llerrs << "LLVertexBuffer::mapIndexBuffer() called on unallocated buffer." << llendl; +	} + +	if (!mIndexLocked && useVBOs()) +	{ +		{ +			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); + +			setBuffer(0, TYPE_INDEX); +			mIndexLocked = TRUE; +			stop_glerror();	 + +			if(sDisableVBOMapping) +			{ +				allocateClientIndexBuffer() ; +			} +			else +			{ +				mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); +			} +			stop_glerror();  		}  		if (!mMappedIndexData)  		{  			log_glerror(); -			GLint buff; -			glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); -			if ((GLuint)buff != mGLIndices) +			if(!sDisableVBOMapping)  			{ -				llerrs << "Invalid GL index buffer bound: " << buff << llendl; -			} +				GLint buff; +				glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); +				if ((GLuint)buff != mGLIndices) +				{ +					llerrs << "Invalid GL index buffer bound: " << buff << llendl; +				} -			llerrs << "glMapBuffer returned NULL (no index data)" << llendl; +				llerrs << "glMapBuffer returned NULL (no index data)" << llendl; +			} +			else +			{ +				llerrs << "memory allocation for Index data failed. " << llendl ; +			}  		}  		sMappedCount++;  	} -	 -	return mMappedData; + +	return mMappedIndexData ;  } -void LLVertexBuffer::unmapBuffer() +void LLVertexBuffer::unmapBuffer(S32 type)  {  	LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER); -	if (mMappedData || mMappedIndexData) +	if (!useVBOs())  	{ -		if (useVBOs() && mLocked) +		return ; //nothing to unmap +	} + +	bool updated_all = false ; +	if (mMappedData && mVertexLocked && type != TYPE_INDEX) +	{ +		updated_all = (mIndexLocked && type < 0) ; //both vertex and index buffers done updating + +		if(sDisableVBOMapping) +		{ +			stop_glerror(); +			glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData); +			stop_glerror(); +		} +		else  		{  			stop_glerror();  			glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);  			stop_glerror(); + +			mMappedData = NULL; +		} + +		mVertexLocked = FALSE ; +		sMappedCount--; +	} + +	if(mMappedIndexData && mIndexLocked && (type < 0 || type == TYPE_INDEX)) +	{ +		if(sDisableVBOMapping) +		{ +			stop_glerror(); +			glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData); +			stop_glerror(); +		} +		else +		{ +			stop_glerror();  			glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB);  			stop_glerror(); -			/*if (!sMapped) -			{ -				llerrs << "Redundantly unmapped VBO!" << llendl; -			} -			sMapped = FALSE;*/ -			sMappedCount--; - -			if (mUsage == GL_STATIC_DRAW_ARB) -			{ //static draw buffers can only be mapped a single time -				//throw out client data (we won't be using it again) -				mEmpty = TRUE; -				mFinal = TRUE; -			} -			else +			mMappedIndexData = NULL ; +		} + +		mIndexLocked = FALSE ; +		sMappedCount--; +	} + +	if(updated_all) +	{ +		if(mUsage == GL_STATIC_DRAW_ARB) +		{ +			//static draw buffers can only be mapped a single time +			//throw out client data (we won't be using it again) +			mEmpty = TRUE; +			mFinal = TRUE; + +			if(sDisableVBOMapping)  			{ -				mEmpty = FALSE; +				freeClientBuffer() ;  			} - -			mMappedIndexData = NULL; -			mMappedData = NULL; -			 -			mLocked = FALSE; +		} +		else +		{ +			mEmpty = FALSE;  		}  	}  } @@ -949,15 +1081,16 @@ template <class T,S32 type> struct VertexBufferStrider  					strider_t& strider,   					S32 index)  	{ -		if (vbo.mapBuffer() == NULL) -		{ -			llwarns << "mapBuffer failed!" << llendl; -			return FALSE; -		} -  		if (type == LLVertexBuffer::TYPE_INDEX)  		{  			S32 stride = sizeof(T); + +			if (vbo.mapIndexBuffer() == NULL) +			{ +				llwarns << "mapIndexBuffer failed!" << llendl; +				return FALSE; +			} +  			strider = (T*)(vbo.getMappedIndices() + index*stride);  			strider.setStride(0);  			return TRUE; @@ -965,6 +1098,13 @@ template <class T,S32 type> struct VertexBufferStrider  		else if (vbo.hasDataType(type))  		{  			S32 stride = vbo.getStride(); + +			if (vbo.mapVertexBuffer(type) == NULL) +			{ +				llwarns << "mapVertexBuffer failed!" << llendl; +				return FALSE; +			} +  			strider = (T*)(vbo.getMappedData() + vbo.getOffset(type) + index*stride);  			strider.setStride(stride);  			return TRUE; @@ -1045,7 +1185,7 @@ void LLVertexBuffer::setStride(S32 type, S32 new_stride)  //----------------------------------------------------------------------------  // Set for rendering -void LLVertexBuffer::setBuffer(U32 data_mask) +void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)  {  	LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER);  	//set up pointers if the data mask is different ... @@ -1186,7 +1326,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask)  		{  			ll_fail("LLVertexBuffer::mapBuffer failed");  		} -		unmapBuffer(); +		unmapBuffer(type);  	}  	else  	{		 diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 94fa790957..c51ce7ac4e 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -80,7 +80,7 @@ public:  	static BOOL	sUseStreamDraw; -	static void initClass(bool use_vbo); +	static void initClass(bool use_vbo, bool no_vbo_mapping);  	static void cleanupClass();  	static void setupClientArrays(U32 data_mask);   	static void clientCopy(F64 max_time = 0.005); //copy data from client to GL @@ -139,19 +139,24 @@ protected:  	void	updateNumVerts(S32 nverts);  	void	updateNumIndices(S32 nindices);   	virtual BOOL	useVBOs() const; -	void	unmapBuffer(); -		 +	void	unmapBuffer(S32 type); +	void freeClientBuffer() ; +	void allocateClientVertexBuffer() ; +	void allocateClientIndexBuffer() ; +  public:  	LLVertexBuffer(U32 typemask, S32 usage);  	// map for data access -	U8*		mapBuffer(S32 access = -1); +	U8*		mapVertexBuffer(S32 type = -1, S32 access = -1); +	U8*		mapIndexBuffer(S32 access = -1); +  	// set for rendering -	virtual void	setBuffer(U32 data_mask); 	// calls  setupVertexBuffer() if data_mask is not 0 +	virtual void	setBuffer(U32 data_mask, S32 type = -1); 	// calls  setupVertexBuffer() if data_mask is not 0  	// allocate buffer  	void	allocateBuffer(S32 nverts, S32 nindices, bool create);  	virtual void resizeBuffer(S32 newnverts, S32 newnindices); -		 +			  	// Only call each getVertexPointer, etc, once before calling unmapBuffer()  	// call unmapBuffer() after calls to getXXXStrider() before any cals to setBuffer()  	// example: @@ -170,7 +175,7 @@ public:  	bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0);  	BOOL isEmpty() const					{ return mEmpty; } -	BOOL isLocked() const					{ return mLocked; } +	BOOL isLocked() const					{ return mVertexLocked || mIndexLocked; }  	S32 getNumVerts() const					{ return mNumVerts; }  	S32 getNumIndices() const				{ return mNumIndices; }  	S32 getRequestedVerts() const			{ return mRequestedNumVerts; } @@ -209,13 +214,14 @@ protected:  	U32		mGLIndices;		// GL IBO handle  	U8*		mMappedData;	// pointer to currently mapped data (NULL if unmapped)  	U8*		mMappedIndexData;	// pointer to currently mapped indices (NULL if unmapped) -	BOOL	mLocked;			// if TRUE, buffer is being or has been written to in client memory +	BOOL	mVertexLocked;			// if TRUE, vertex buffer is being or has been written to in client memory +	BOOL	mIndexLocked;			// if TRUE, index buffer is being or has been written to in client memory  	BOOL	mFinal;			// if TRUE, buffer can not be mapped again  	BOOL	mFilthy;		// if TRUE, entire buffer must be copied (used to prevent redundant dirty flags) -	BOOL	mEmpty;			// if TRUE, client buffer is empty (or NULL). Old values have been discarded. -	S32		mOffsets[TYPE_MAX]; +	BOOL	mEmpty;			// if TRUE, client buffer is empty (or NULL). Old values have been discarded.	  	BOOL	mResized;		// if TRUE, client buffer has been resized and GL buffer has not  	BOOL	mDynamicSize;	// if TRUE, buffer has been resized at least once (and should be padded) +	S32		mOffsets[TYPE_MAX];  	class DirtyRegion  	{ @@ -240,13 +246,14 @@ public:  	static std::vector<U32> sDeleteList;  	typedef std::list<LLVertexBuffer*> buffer_list_t; +	static BOOL sDisableVBOMapping; //disable glMapBufferARB  	static BOOL sEnableVBOs; +	static BOOL sVBOActive; +	static BOOL sIBOActive;  	static S32 sTypeOffsets[TYPE_MAX];  	static U32 sGLMode[LLRender::NUM_MODES];  	static U32 sGLRenderBuffer; -	static U32 sGLRenderIndices; -	static BOOL sVBOActive; -	static BOOL sIBOActive; +	static U32 sGLRenderIndices;	  	static U32 sLastMask;  	static U32 sAllocatedBytes;  	static U32 sBindCount; diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index 64556bcb4c..cb898e385f 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -101,10 +101,18 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)  		{  			if (0 != LLFile::remove(fullpath))  			{ +				retry_count++;  				result = errno;  				llwarns << "Problem removing " << fullpath << " - errorcode: "  						<< result << " attempt " << retry_count << llendl; -				ms_sleep(1000); + +				if(retry_count >= 5) +				{ +					llwarns << "Failed to remove " << fullpath << llendl ; +					return count ; +				} + +				ms_sleep(100);  			}  			else  			{ @@ -113,8 +121,7 @@ S32 LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask)  					llwarns << "Successfully removed " << fullpath << llendl;  				}  				break; -			} -			retry_count++; +			}			  		}  		count++;  	} diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h index 451e81ae93..a34de1241d 100644 --- a/indra/llvfs/lldir_linux.h +++ b/indra/llvfs/lldir_linux.h @@ -1,6 +1,6 @@  /**    * @file lldir_linux.h - * @brief Definition of directory utilities class for linux  + * @brief Definition of directory utilities class for linux   *   * $LicenseInfo:firstyear=2000&license=viewerlgpl$   * Second Life Viewer Source Code @@ -24,6 +24,10 @@   * $/LicenseInfo$   */ +#if !LL_LINUX +#error This header must not be included when compiling for any target other than Linux. Consider including lldir.h instead. +#endif // !LL_LINUX +  #ifndef LL_LLDIR_LINUX_H  #define LL_LLDIR_LINUX_H @@ -40,7 +44,7 @@ public:  	/*virtual*/ void initAppDirs(const std::string &app_name,  		const std::string& app_read_only_data_dir); -public:	 +  	virtual std::string getCurPath();  	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);  	virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname); @@ -53,7 +57,7 @@ private:  	DIR *mDirp;  	int mCurrentDirIndex;  	int mCurrentDirCount; -	std::string mCurrentDir;	 +	std::string mCurrentDir;  };  #endif // LL_LLDIR_LINUX_H diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h index 4eac3c3ae6..b456d3afca 100644 --- a/indra/llvfs/lldir_mac.h +++ b/indra/llvfs/lldir_mac.h @@ -24,6 +24,10 @@   * $/LicenseInfo$   */ +#if !LL_DARWIN +#error This header must not be included when compiling for any target other than Mac OS. Consider including lldir.h instead. +#endif // !LL_DARWIN +  #ifndef LL_LLDIR_MAC_H  #define LL_LLDIR_MAC_H @@ -39,7 +43,7 @@ public:  	/*virtual*/ void initAppDirs(const std::string &app_name,  		const std::string& app_read_only_data_dir); -public:	 +  	virtual S32 deleteFilesInDir(const std::string &dirname, const std::string &mask);  	virtual std::string getCurPath();  	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask); diff --git a/indra/llvfs/lldir_solaris.h b/indra/llvfs/lldir_solaris.h index 4a1794f539..70fac6f818 100644 --- a/indra/llvfs/lldir_solaris.h +++ b/indra/llvfs/lldir_solaris.h @@ -24,6 +24,10 @@   * $/LicenseInfo$   */ +#if !LL_SOLARIS +#error This header must not be included when compiling for any target other than Solaris. Consider including lldir.h instead. +#endif // !LL_SOLARIS +  #ifndef LL_LLDIR_SOLARIS_H  #define LL_LLDIR_SOLARIS_H @@ -40,7 +44,7 @@ public:  	/*virtual*/ void initAppDirs(const std::string &app_name,  		const std::string& app_read_only_data_dir); -public:	 +  	virtual std::string getCurPath();  	virtual U32 countFilesInDir(const std::string &dirname, const std::string &mask);  	virtual BOOL getNextFileInDir(const std::string &dirname, const std::string &mask, std::string &fname); @@ -50,7 +54,7 @@ private:  	DIR *mDirp;  	int mCurrentDirIndex;  	int mCurrentDirCount; -	std::string mCurrentDir;	 +	std::string mCurrentDir;  };  #endif // LL_LLDIR_SOLARIS_H diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h index 4c932c932c..b170ebbcd7 100644 --- a/indra/llvfs/lldir_win32.h +++ b/indra/llvfs/lldir_win32.h @@ -24,6 +24,10 @@   * $/LicenseInfo$   */ +#if !LL_WINDOWS +#error This header must not be included when compiling for any target other than Windows. Consider including lldir.h instead. +#endif // !LL_WINDOWS +  #ifndef LL_LLDIR_WIN32_H  #define LL_LLDIR_WIN32_H @@ -47,8 +51,8 @@ public:  	/*virtual*/ std::string getLLPluginFilename(std::string base_name);  private: -	BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname); -	 +	BOOL getNextFileInDir(const llutf16string &dirname, const std::string &mask, std::string &fname); +  	void* mDirSearch_h;  	llutf16string mCurrentDir;  }; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 85238cacdd..a010524091 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -697,28 +697,6 @@        <key>Value</key>        <integer>0</integer>      </map> -    <key>BrowserUseDefaultCAFile</key> -    <map> -      <key>Comment</key> -      <string>Tell the built-in web browser to use the CA.pem file shipped with the client.</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>1</integer> -    </map> -    <key>BrowserCAFilePath</key> -    <map> -      <key>Comment</key> -      <string>Tell the built-in web browser the path to an alternative CA.pem file (only used if BrowserUseDefaultCAFile is false).</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>String</string> -      <key>Value</key> -      <string></string> -    </map>        <key>BlockAvatarAppearanceMessages</key>          <map>          <key>Comment</key> @@ -1179,7 +1157,7 @@        <key>Type</key>        <string>U32</string>        <key>Value</key> -      <integer>20000</integer> +      <integer>128</integer>      </map>      <key>CacheSize</key>      <map> @@ -1852,6 +1830,17 @@        <key>Value</key>        <integer>0</integer>      </map> +   <key>DebugShowMemory</key> +    <map> +      <key>Comment</key> +      <string>Show Total Allocated Memory</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>DebugShowRenderInfo</key>      <map>        <key>Comment</key> @@ -1874,10 +1863,21 @@      <key>Value</key>      <integer>0</integer>    </map> +  <key>DebugShowTextureInfo</key> +    <map> +      <key>Comment</key> +      <string>Show inertested texture info</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>    <key>DebugShowTime</key>      <map>        <key>Comment</key> -      <string>Show depth buffer contents</string> +      <string>Show time info</string>        <key>Persist</key>        <integer>1</integer>        <key>Type</key> @@ -8451,6 +8451,17 @@        <key>Value</key>        <integer>1</integer>      </map> +    <key>RenderVBOMappingDisable</key> +    <map> +      <key>Comment</key> +      <string>Disable VBO glMapBufferARB</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>1</integer> +    </map>    <key>RenderUseStreamVBO</key>    <map>      <key>Comment</key> diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py index 4fd04d780e..5ebec1563e 100644 --- a/indra/newview/generate_breakpad_symbols.py +++ b/indra/newview/generate_breakpad_symbols.py @@ -1,29 +1,31 @@  #!/usr/bin/env python -# @file generate_breakpad_symbols.py -# @author Brad Kittenbrink <brad@lindenlab.com> -# @brief Simple tool for generating google_breakpad symbol information -#        for the crash reporter. -# -# $LicenseInfo:firstyear=2010&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$ +"""\ +@file generate_breakpad_symbols.py +@author Brad Kittenbrink <brad@lindenlab.com> +@brief Simple tool for generating google_breakpad symbol information +       for the crash reporter. + +$LicenseInfo:firstyear=2010&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2010-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import collections diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 6a9dfaf21b..a23f809b71 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1296,7 +1296,7 @@ bool LLAppViewer::mainLoop()  				resumeMainloopTimeout();  				pingMainloopTimeout("Main:End"); -			}			 +			}	  		}  		catch(std::bad_alloc)  		{			 @@ -1779,6 +1779,8 @@ bool LLAppViewer::cleanup()  	ll_close_fail_log(); +	MEM_TRACK_RELEASE +      llinfos << "Goodbye!" << llendflush;  	// return 0; @@ -2471,16 +2473,24 @@ namespace {  		if(data["required"].asBoolean())  		{ -			apply_callback = &apply_update_ok_callback;  			if(LLStartUp::getStartupState() <= STATE_LOGIN_WAIT)  			{  				// The user never saw the progress bar. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedVerboseDialog";  			} -			else +			else if(LLStartUp::getStartupState() < STATE_WORLD_INIT)  			{ +				// The user is logging in but blocked. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedDialog";  			} +			else +			{ +				// The user is already logged in; treat like an optional update. +				apply_callback = &apply_update_callback; +				notification_name = "DownloadBackgroundTip"; +			}  		}  		else  		{ diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index ff7dfccc0a..771419f60a 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -240,6 +240,9 @@ void LLAvatarList::addAvalineItem(const LLUUID& item_id, const LLUUID& session_i  	LLAvalineListItem* item = new LLAvalineListItem(/*hide_number=*/false);  	item->setAvatarId(item_id, session_id, true, false);  	item->setName(item_name); +	item->showLastInteractionTime(mShowLastInteractionTime); +	item->showSpeakingIndicator(mShowSpeakingIndicator); +	item->setOnline(false);  	addItem(item, item_id);  	mIDs.push_back(item_id); @@ -286,9 +289,18 @@ void LLAvatarList::refresh()  			{  				// *NOTE: If you change the UI to show a different string,  				// be sure to change the filter code below. -				addNewItem(buddy_id,  -					       av_name.mDisplayName.empty() ? waiting_str : av_name.mDisplayName,  -						   LLAvatarTracker::instance().isBuddyOnline(buddy_id)); +				if (LLRecentPeople::instance().isAvalineCaller(buddy_id)) +				{ +					const LLSD& call_data = LLRecentPeople::instance().getData(buddy_id); +					addAvalineItem(buddy_id, call_data["session_id"].asUUID(), call_data["call_number"].asString()); +				} +				else +				{ +					addNewItem(buddy_id,  +						av_name.mDisplayName.empty() ? waiting_str : av_name.mDisplayName,  +						LLAvatarTracker::instance().isBuddyOnline(buddy_id)); +				} +				  				modified = true;  				nadded++;  			} @@ -440,7 +452,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is  BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)  {  	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask); -	if ( mContextMenu ) +	if ( mContextMenu && !isAvalineItemSelected())  	{  		uuid_vec_t selected_uuids;  		getSelectedUUIDs(selected_uuids); @@ -449,6 +461,21 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)  	return handled;  } +bool LLAvatarList::isAvalineItemSelected() +{ +	std::vector<LLPanel*> selected_items; +	getSelectedItems(selected_items); +	std::vector<LLPanel*>::iterator it = selected_items.begin(); +	 +	for(; it != selected_items.end(); ++it) +	{ +		if (dynamic_cast<LLAvalineListItem*>(*it)) +			return true; +	} + +	return false; +} +  void LLAvatarList::setVisible(BOOL visible)  {  	if ( visible == FALSE && mContextMenu ) diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index cacbcf7244..4814a88a79 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -112,6 +112,8 @@ protected:  private: +	bool isAvalineItemSelected(); +  	bool mIgnoreOnlineStatus;  	bool mShowLastInteractionTime;  	bool mDirty; diff --git a/indra/newview/llcapabilityprovider.h b/indra/newview/llcapabilityprovider.h index a6e743f625..9d91245597 100644 --- a/indra/newview/llcapabilityprovider.h +++ b/indra/newview/llcapabilityprovider.h @@ -46,7 +46,7 @@ public:      /**       * Get host to which to send that capability request.       */ -    virtual LLHost getHost() const = 0; +    virtual const LLHost& getHost() const = 0;      /**       * Describe this LLCapabilityProvider for logging etc.       */ 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/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index a3d2941114..f781d5f3ff 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -177,10 +177,6 @@ void LLViewerDynamicTexture::postRender(BOOL success)  				generateGLTexture() ;  			} -			if(gGLManager.mDebugGPU) -			{ -				LLGLState::dumpStates() ; -			}  			success = mGLTexturep->setSubImageFromFrameBuffer(0, 0, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight);  		}  	} @@ -220,12 +216,6 @@ BOOL LLViewerDynamicTexture::updateAllInstances()  			LLViewerDynamicTexture *dynamicTexture = *iter;  			if (dynamicTexture->needsRender())  			{				 -				if(gGLManager.mDebugGPU) -				{				 -					llinfos << "class type: " << (S32)dynamicTexture->getType() << llendl; -					LLGLState::dumpStates() ; -				} -  				glClear(GL_DEPTH_BUFFER_BIT);  				gDepthDirty = TRUE; diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 2471da9da5..fe201a6773 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1155,7 +1155,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  		if (rebuild_tcoord)  		{  			LLVector2 tc = vf.mVertices[i].mTexCoord; -		 +		     			if (texgen != LLTextureEntry::TEX_GEN_DEFAULT)  			{  				LLVector3 vec = vf.mVertices[i].mPosition;  @@ -1331,7 +1331,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  		mTexExtents[0].setVec(0,0);  		mTexExtents[1].setVec(1,1);  		xform(mTexExtents[0], cos_ang, sin_ang, os, ot, ms, mt); -		xform(mTexExtents[1], cos_ang, sin_ang, os, ot, ms, mt);		 +		xform(mTexExtents[1], cos_ang, sin_ang, os, ot, ms, mt); +		 +		F32 es = vf.mTexCoordExtents[1].mV[0] - vf.mTexCoordExtents[0].mV[0] ; +		F32 et = vf.mTexCoordExtents[1].mV[1] - vf.mTexCoordExtents[0].mV[1] ; +		mTexExtents[0][0] *= es ; +		mTexExtents[1][0] *= es ; +		mTexExtents[0][1] *= et ; +		mTexExtents[1][1] *= et ;  	}  	mLastVertexBuffer = mVertexBuffer; diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index f0840774bd..51e76bcf9b 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -403,9 +403,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/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 4c17199895..4d252dc662 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -41,35 +41,36 @@  // static -std::set<std::string> LLFirstUse::sConfigVariables; +//std::set<std::string> LLFirstUse::sConfigVariables; +std::set<std::string> LLFirstUse::sConfigVariablesEnabled;  // static -void LLFirstUse::addConfigVariable(const std::string& var) -{ -	sConfigVariables.insert(var); -} +//void LLFirstUse::addConfigVariable(const std::string& var) +//{ +//	sConfigVariables.insert(var); +//}  // static -void LLFirstUse::disableFirstUse() -{ -	// Set all first-use warnings to disabled -	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); -		 iter != sConfigVariables.end(); ++iter) -	{ -		gWarningSettings.setBOOL(*iter, FALSE); -	} -} +//void LLFirstUse::disableFirstUse() +//{ +//	// Set all first-use warnings to disabled +//	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); +//		 iter != sConfigVariables.end(); ++iter) +//	{ +//		gWarningSettings.setBOOL(*iter, FALSE); +//	} +//}  // static -void LLFirstUse::resetFirstUse() -{ -	// Set all first-use warnings to disabled -	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); -		 iter != sConfigVariables.end(); ++iter) -	{ -		gWarningSettings.setBOOL(*iter, TRUE); -	} -} +//void LLFirstUse::resetFirstUse() +//{ +//	// Set all first-use warnings to disabled +//	for (std::set<std::string>::iterator iter = sConfigVariables.begin(); +//		 iter != sConfigVariables.end(); ++iter) +//	{ +//		gWarningSettings.setBOOL(*iter, TRUE); +//	} +//}  // static  void LLFirstUse::otherAvatarChatFirst(bool enable) @@ -151,13 +152,21 @@ void LLFirstUse::firstUseNotification(const std::string& control_var, bool enabl  	if (enable)  	{ +		if(sConfigVariablesEnabled.find(control_var) != sConfigVariablesEnabled.end()) +		{ +			return ; //already added +		} +  		if (gSavedSettings.getBOOL("EnableUIHints"))  		{  			LL_DEBUGS("LLFirstUse") << "Trigger first use notification " << notification_name << LL_ENDL;  			// if notification doesn't already exist and this notification hasn't been disabled...  			if (gWarningSettings.getBOOL(control_var)) -			{ // create new notification +			{  +				sConfigVariablesEnabled.insert(control_var) ; + +				// create new notification  				LLNotifications::instance().add(LLNotification::Params().name(notification_name).substitutions(args).payload(payload.with("control_var", control_var)));  			}  		} @@ -169,7 +178,6 @@ void LLFirstUse::firstUseNotification(const std::string& control_var, bool enabl  		// redundantly clear settings var here, in case there are no notifications to cancel  		gWarningSettings.setBOOL(control_var, FALSE);  	} -  }  // static diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h index 81659988e6..489f58626a 100644 --- a/indra/newview/llfirstuse.h +++ b/indra/newview/llfirstuse.h @@ -78,11 +78,11 @@ class LLFirstUse  public:  	// Add a config variable to be reset on resetFirstUse() -	static void addConfigVariable(const std::string& var); +	//static void addConfigVariable(const std::string& var);  	// Sets all controls back to show the dialogs. -	static void disableFirstUse(); -	static void resetFirstUse(); +	//static void disableFirstUse(); +	//static void resetFirstUse();  	static void otherAvatarChatFirst(bool enable = true);  	static void sit(bool enable = true); @@ -98,7 +98,8 @@ public:  protected:  	static void firstUseNotification(const std::string& control_var, bool enable, const std::string& notification_name, LLSD args = LLSD(), LLSD payload = LLSD()); -	static std::set<std::string> sConfigVariables; +	//static std::set<std::string> sConfigVariables; +	static std::set<std::string> sConfigVariablesEnabled;  	static void init();  	static bool processNotification(const LLSD& notify); diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 1b94d8cbcd..80920c80d6 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -83,7 +83,8 @@ LLFloaterMap::~LLFloaterMap()  BOOL LLFloaterMap::postBuild()  {  	mMap = getChild<LLNetMap>("Net Map"); -	mMap->setToolTipMsg(getString("ToolTipMsg"));	 +	mMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltToolTipMsg") : getString("ToolTipMsg"));  	sendChildToBack(mMap);  	mTextBoxNorth = getChild<LLTextBox> ("floater_map_north"); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 8c9dfe435a..724096b443 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -1539,6 +1539,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 @@ -1700,6 +1701,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/llfloaterregiondebugconsole.h b/indra/newview/llfloaterregiondebugconsole.h index 4171a4da6b..3aa525724e 100644 --- a/indra/newview/llfloaterregiondebugconsole.h +++ b/indra/newview/llfloaterregiondebugconsole.h @@ -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/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 0931f77281..add591895b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1363,6 +1363,36 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)  	floater->getChildView("auto_snapshot_check")->setVisible(		is_advance);  	floater->getChildView("image_quality_slider")->setVisible(	is_advance && show_slider); +	if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +	{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot + +		LLSpinCtrl* width_ctrl = floater->getChild<LLSpinCtrl>("snapshot_width"); +		LLSpinCtrl* height_ctrl = floater->getChild<LLSpinCtrl>("snapshot_height"); + +		S32 width = gViewerWindow->getWindowWidthRaw(); +		S32 height = gViewerWindow->getWindowHeightRaw(); + +		width_ctrl->setMaxValue(width); +		 +		height_ctrl->setMaxValue(height); + +		if (width_ctrl->getValue().asInteger() > width) +		{ +			width_ctrl->forceSetValue(width); +		} +		if (height_ctrl->getValue().asInteger() > height) +		{ +			height_ctrl->forceSetValue(height); +		} +	} +	else +	{  +		LLSpinCtrl* width = floater->getChild<LLSpinCtrl>("snapshot_width"); +		width->setMaxValue(6016); +		LLSpinCtrl* height = floater->getChild<LLSpinCtrl>("snapshot_height"); +		height->setMaxValue(6016); +	} +		  	LLSnapshotLivePreview* previewp = getPreviewView(floater);  	BOOL got_bytes = previewp && previewp->getDataSize() > 0;  	BOOL got_snap = previewp && previewp->getSnapshotUpToDate(); @@ -1810,6 +1840,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL  		previewp->getSize(width, height); +		if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +		{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot +			width = llmin(width, gViewerWindow->getWindowWidthRaw()); +			height = llmin(height, gViewerWindow->getWindowHeightRaw()); +		} + +		  		if(checkImageSize(previewp, width, height, TRUE, previewp->getMaxImageSize()))  		{  			resetSnapshotSizeOnUI(view, width, height) ; diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 370bf05bf7..364fbad193 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -220,6 +220,8 @@ BOOL	LLFloaterTools::postBuild()  	mRadioGroupEdit		= getChild<LLRadioGroup>("edit_radio_group");  	mBtnGridOptions		= getChild<LLButton>("Options...");  	mTitleMedia			= getChild<LLMediaCtrl>("title_media"); +	mBtnLink			= getChild<LLButton>("link_btn"); +	mBtnUnlink			= getChild<LLButton>("unlink_btn");  	mCheckSelectIndividual	= getChild<LLCheckBoxCtrl>("checkbox edit linked parts");	  	getChild<LLUICtrl>("checkbox edit linked parts")->setValue((BOOL)gSavedSettings.getBOOL("EditLinkedParts")); @@ -315,6 +317,9 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)  	mBtnRotateReset(NULL),  	mBtnRotateRight(NULL), +	mBtnLink(NULL), +	mBtnUnlink(NULL), +  	mBtnDelete(NULL),  	mBtnDuplicate(NULL),  	mBtnDuplicateInPlace(NULL), @@ -341,7 +346,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)  	mNeedMediaTitle(TRUE)  {  	gFloaterTools = this; -	 +  	setAutoFocus(FALSE);  	mFactoryMap["General"] = LLCallbackMap(createPanelPermissions, this);//LLPanelPermissions  	mFactoryMap["Object"] = LLCallbackMap(createPanelObject, this);//LLPanelObject @@ -366,6 +371,9 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)  	mCommitCallbackRegistrar.add("BuildTool.DeleteMedia",		boost::bind(&LLFloaterTools::onClickBtnDeleteMedia,this));  	mCommitCallbackRegistrar.add("BuildTool.EditMedia",			boost::bind(&LLFloaterTools::onClickBtnEditMedia,this)); +	mCommitCallbackRegistrar.add("BuildTool.LinkObjects",		boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance())); +	mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects",		boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance())); +  }  LLFloaterTools::~LLFloaterTools() @@ -566,6 +574,12 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)  	bool linked_parts = gSavedSettings.getBOOL("EditLinkedParts");  	getChildView("RenderingCost")->setVisible( !linked_parts && (edit_visible || focus_visible || move_visible) && sShowObjectCost); +	mBtnLink->setVisible(edit_visible); +	mBtnUnlink->setVisible(edit_visible); + +	mBtnLink->setEnabled(LLSelectMgr::instance().enableLinkObjects()); +	mBtnUnlink->setEnabled(LLSelectMgr::instance().enableUnlinkObjects()); +  	if (mCheckSelectIndividual)  	{  		mCheckSelectIndividual->setVisible(edit_visible); diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 87c3d2ab47..fd81a75397 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -135,6 +135,8 @@ public:  	LLRadioGroup*	mRadioGroupEdit;  	LLCheckBoxCtrl	*mCheckSelectIndividual; +	LLButton*		mBtnLink; +	LLButton*		mBtnUnlink;  	LLCheckBoxCtrl*	mCheckSnapToGrid;  	LLButton*		mBtnGridOptions; diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 62ba746a02..b3b1ce5743 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1854,31 +1854,9 @@ BOOL LLFolderView::handleRightMouseDown( S32 x, S32 y, MASK mask )  	{  		if (mCallbackRegistrar)  			mCallbackRegistrar->pushScope(); -		//menu->empty(); -		const LLView::child_list_t *list = menu->getChildList(); -		LLView::child_list_t::const_iterator menu_itor; -		for (menu_itor = list->begin(); menu_itor != list->end(); ++menu_itor) -		{ -			(*menu_itor)->setVisible(FALSE); -			(*menu_itor)->pushVisible(TRUE); -			(*menu_itor)->setEnabled(TRUE); -		} -		 -		// Successively filter out invalid options - -		U32 flags = FIRST_SELECTED_ITEM; -		for (selected_items_t::iterator item_itor = mSelectedItems.begin();  -			 item_itor != mSelectedItems.end();  -			 ++item_itor) -		{ -			LLFolderViewItem* selected_item = (*item_itor); -			selected_item->buildContextMenu(*menu, flags); -			flags = 0x0; -		} +		updateMenuOptions(menu); -		addNoOptions(menu); -  		menu->updateParent(LLMenuGL::sMenuContainer);  		LLMenuGL::showPopup(this, menu, x, y);  		if (mCallbackRegistrar) @@ -2365,6 +2343,45 @@ void LLFolderView::updateRenamerPosition()  	}  } +// Update visibility and availability (i.e. enabled/disabled) of context menu items. +void LLFolderView::updateMenuOptions(LLMenuGL* menu) +{ +	const LLView::child_list_t *list = menu->getChildList(); + +	LLView::child_list_t::const_iterator menu_itor; +	for (menu_itor = list->begin(); menu_itor != list->end(); ++menu_itor) +	{ +		(*menu_itor)->setVisible(FALSE); +		(*menu_itor)->pushVisible(TRUE); +		(*menu_itor)->setEnabled(TRUE); +	} + +	// Successively filter out invalid options + +	U32 flags = FIRST_SELECTED_ITEM; +	for (selected_items_t::iterator item_itor = mSelectedItems.begin(); +			item_itor != mSelectedItems.end(); +			++item_itor) +	{ +		LLFolderViewItem* selected_item = (*item_itor); +		selected_item->buildContextMenu(*menu, flags); +		flags = 0x0; +	} + +	addNoOptions(menu); +} + +// Refresh the context menu (that is already shown). +void LLFolderView::updateMenu() +{ +	LLMenuGL* menu = (LLMenuGL*)mPopupMenuHandle.get(); +	if (menu && menu->getVisible()) +	{ +		updateMenuOptions(menu); +		menu->needsArrange(); // update menu height if needed +	} +} +  bool LLFolderView::selectFirstItem()  {  	for (folders_t::iterator iter = mFolders.begin(); diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index afaac86b04..210ba9eb3c 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -269,7 +269,10 @@ public:  	virtual S32	notify(const LLSD& info) ;  	bool useLabelSuffix() { return mUseLabelSuffix; } +	void updateMenu(); +  private: +	void updateMenuOptions(LLMenuGL* menu);  	void updateRenamerPosition();  protected: 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/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 91ede6d221..17d0b0ffbb 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -47,6 +47,7 @@  #include "llvoiceclient.h"  #include "llviewerobjectlist.h"  #include "lltransientfloatermgr.h" +#include "llnotificationsutil.h"  // Linden libraries  #include "llfloater.h" @@ -126,16 +127,20 @@ private:  	void onClickReport();  	void onClickFreeze();  	void onClickEject(); +	void onClickKick(); +	void onClickCSR();  	void onClickZoomIn();    	void onClickFindOnMap();  	bool onVisibleFindOnMap(); -	bool onVisibleFreezeEject(); +	bool onVisibleEject(); +	bool onVisibleFreeze();  	bool onVisibleZoomIn();  	void onClickMuteVolume();  	void onVolumeChange(const LLSD& data);  	bool enableMute();  	bool enableUnmute();  	bool enableTeleportOffer(); +	bool godModeEnabled();  	// Is used to determine if "Add friend" option should be enabled in gear menu  	bool isNotFriend(); @@ -214,20 +219,21 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)  	mCommitCallbackRegistrar.add("InspectAvatar.Pay",	boost::bind(&LLInspectAvatar::onClickPay, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Share",	boost::bind(&LLInspectAvatar::onClickShare, this));  	mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute",	boost::bind(&LLInspectAvatar::onToggleMute, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Freeze", -		boost::bind(&LLInspectAvatar::onClickFreeze, this));	 -	mCommitCallbackRegistrar.add("InspectAvatar.Eject", -		boost::bind(&LLInspectAvatar::onClickEject, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Freeze", boost::bind(&LLInspectAvatar::onClickFreeze, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Eject", boost::bind(&LLInspectAvatar::onClickEject, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.Kick", boost::bind(&LLInspectAvatar::onClickKick, this));	 +	mCommitCallbackRegistrar.add("InspectAvatar.CSR", boost::bind(&LLInspectAvatar::onClickCSR, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.Report",	boost::bind(&LLInspectAvatar::onClickReport, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.FindOnMap",	boost::bind(&LLInspectAvatar::onClickFindOnMap, this));	  	mCommitCallbackRegistrar.add("InspectAvatar.ZoomIn", boost::bind(&LLInspectAvatar::onClickZoomIn, this));  	mCommitCallbackRegistrar.add("InspectAvatar.DisableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, false));  	mCommitCallbackRegistrar.add("InspectAvatar.EnableVoice", boost::bind(&LLInspectAvatar::toggleSelectedVoice, this, true)); + +	mEnableCallbackRegistrar.add("InspectAvatar.EnableGod",	boost::bind(&LLInspectAvatar::godModeEnabled, this));	  	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFindOnMap",	boost::bind(&LLInspectAvatar::onVisibleFindOnMap, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFreezeEject",	 -		boost::bind(&LLInspectAvatar::onVisibleFreezeEject, this));	 -	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn",  -		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleEject",	boost::bind(&LLInspectAvatar::onVisibleEject, this));	 +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleFreeze",	boost::bind(&LLInspectAvatar::onVisibleFreeze, this));	 +	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall));  	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableTeleportOffer", boost::bind(&LLInspectAvatar::enableTeleportOffer, this)); @@ -656,11 +662,18 @@ bool LLInspectAvatar::onVisibleFindOnMap()  	return gAgent.isGodlike() || is_agent_mappable(mAvatarID);  } -bool LLInspectAvatar::onVisibleFreezeEject() +bool LLInspectAvatar::onVisibleEject()  {  	return enable_freeze_eject( LLSD(mAvatarID) );  } +bool LLInspectAvatar::onVisibleFreeze() +{ +	// either user is a god and can do long distance freeze +	// or check for target proximity and permissions +	return gAgent.isGodlike() || enable_freeze_eject(LLSD(mAvatarID)); +} +  bool LLInspectAvatar::onVisibleZoomIn()  {  	return gObjectList.findObject(mAvatarID); @@ -704,7 +717,7 @@ void LLInspectAvatar::onClickShare()  void LLInspectAvatar::onToggleMute()  { -	LLMute mute(mAvatarID, mAvatarName.getLegacyName(), LLMute::AGENT); +	LLMute mute(mAvatarID, mAvatarName.mDisplayName, LLMute::AGENT);  	if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName))  	{ @@ -725,9 +738,41 @@ void LLInspectAvatar::onClickReport()  	closeFloater();  } +bool godlike_freeze(const LLSD& notification, const LLSD& response) +{ +	LLUUID avatar_id = notification["payload"]["avatar_id"].asUUID(); +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + +	switch (option) +	{ +	case 0: +		LLAvatarActions::freeze(avatar_id); +		break; +	case 1: +		LLAvatarActions::unfreeze(avatar_id); +		break; +	default: +		break; +	} + +	return false; +} +  void LLInspectAvatar::onClickFreeze()  { -	handle_avatar_freeze( LLSD(mAvatarID) ); +	if (gAgent.isGodlike()) +	{ +		// use godlike freeze-at-a-distance, with confirmation +		LLNotificationsUtil::add("FreezeAvatar", +			LLSD(), +			LLSD().with("avatar_id", mAvatarID), +			godlike_freeze); +	} +	else +	{ +		// use default "local" version of freezing that requires avatar to be in range +		handle_avatar_freeze( LLSD(mAvatarID) ); +	}  	closeFloater();  } @@ -737,6 +782,20 @@ void LLInspectAvatar::onClickEject()  	closeFloater();  } +void LLInspectAvatar::onClickKick() +{ +	LLAvatarActions::kick(mAvatarID); +	closeFloater(); +} + +void LLInspectAvatar::onClickCSR() +{ +	std::string name; +	gCacheName->getFullName(mAvatarID, name); +	LLAvatarActions::csr(mAvatarID, name); +	closeFloater(); +} +  void LLInspectAvatar::onClickZoomIn()   {  	handle_zoom_to_object(mAvatarID); @@ -785,6 +844,11 @@ bool LLInspectAvatar::enableTeleportOffer()  	return LLAvatarActions::canOfferTeleport(mAvatarID);  } +bool LLInspectAvatar::godModeEnabled() +{ +	return gAgent.isGodlike(); +} +  //////////////////////////////////////////////////////////////////////////////  // LLInspectAvatarUtil  ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 5108f68592..4c2e0fa709 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3230,7 +3230,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/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index ef4774a06d..e22363c2f6 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -393,18 +393,22 @@ void LLInventoryFilter::setFilterUUID(const LLUUID& object_id)  void LLInventoryFilter::setFilterSubString(const std::string& string)  { -	if (mFilterSubString != string) +	std::string filter_sub_string_new = string; +	mFilterSubStringOrig = string; +	LLStringUtil::trimHead(filter_sub_string_new); +	LLStringUtil::toUpper(filter_sub_string_new); + +	if (mFilterSubString != filter_sub_string_new)  	{  		// hitting BACKSPACE, for example -		const BOOL less_restrictive = mFilterSubString.size() >= string.size() && !mFilterSubString.substr(0, string.size()).compare(string); +		const BOOL less_restrictive = mFilterSubString.size() >= filter_sub_string_new.size() +			&& !mFilterSubString.substr(0, filter_sub_string_new.size()).compare(filter_sub_string_new);  		// appending new characters -		const BOOL more_restrictive = mFilterSubString.size() < string.size() && !string.substr(0, mFilterSubString.size()).compare(mFilterSubString); +		const BOOL more_restrictive = mFilterSubString.size() < filter_sub_string_new.size() +			&& !filter_sub_string_new.substr(0, mFilterSubString.size()).compare(mFilterSubString); -		mFilterSubStringOrig = string; -		LLStringUtil::trimHead(mFilterSubStringOrig); -		mFilterSubString = mFilterSubStringOrig; -		LLStringUtil::toUpper(mFilterSubString); +		mFilterSubString = filter_sub_string_new;  		if (less_restrictive)  		{  			setModified(FILTER_LESS_RESTRICTIVE); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 5a9d1524f3..1dcb91ad4d 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -60,6 +60,7 @@ static const LLInventoryFVBridgeBuilder INVENTORY_BRIDGE_BUILDER;  //  // Bridge to support knowing when the inventory has changed.  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +  class LLInventoryPanelObserver : public LLInventoryObserver  {  public: @@ -73,9 +74,57 @@ protected:  	LLInventoryPanel* mIP;  }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLInvPanelComplObserver +// +// Calls specified callback when all specified items become complete. +// +// Usage: +// observer = new LLInvPanelComplObserver(boost::bind(onComplete)); +// inventory->addObserver(observer); +// observer->reset(); // (optional) +// observer->watchItem(incomplete_item1_id); +// observer->watchItem(incomplete_item2_id); +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class LLInvPanelComplObserver : public LLInventoryCompletionObserver +{ +public: +	typedef boost::function<void()> callback_t; + +	LLInvPanelComplObserver(callback_t cb) +	:	mCallback(cb) +	{ +	} + +	void reset(); + +private: +	/*virtual*/ void done(); + +	/// Called when all the items are complete. +	callback_t	mCallback; +}; + +void LLInvPanelComplObserver::reset() +{ +	mIncomplete.clear(); +	mComplete.clear(); +} + +void LLInvPanelComplObserver::done() +{ +	mCallback(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLInventoryPanel +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +  LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :	  	LLPanel(p),  	mInventoryObserver(NULL), +	mCompletionObserver(NULL),  	mFolderRoot(NULL),  	mScroller(NULL),  	mSortOrderSetting(p.sort_order_setting), @@ -152,6 +201,9 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)  	mInventoryObserver = new LLInventoryPanelObserver(this);  	mInventory->addObserver(mInventoryObserver); +	mCompletionObserver = new LLInvPanelComplObserver(boost::bind(&LLInventoryPanel::onItemsCompletion, this)); +	mInventory->addObserver(mCompletionObserver); +  	// Build view of inventory if we need default full hierarchy and inventory ready,  	// otherwise wait for idle callback.  	if (mBuildDefaultHierarchy && mInventory->isInventoryUsable() && !mViewsInitialized) @@ -189,7 +241,10 @@ LLInventoryPanel::~LLInventoryPanel()  	// LLView destructor will take care of the sub-views.  	mInventory->removeObserver(mInventoryObserver); +	mInventory->removeObserver(mCompletionObserver);  	delete mInventoryObserver; +	delete mCompletionObserver; +  	mScroller = NULL;  } @@ -654,6 +709,11 @@ void LLInventoryPanel::openStartFolderOrMyInventory()  	}  } +void LLInventoryPanel::onItemsCompletion() +{ +	if (mFolderRoot) mFolderRoot->updateMenu(); +} +  void LLInventoryPanel::openSelected()  {  	LLFolderViewItem* folder_item = mFolderRoot->getCurSelectedItem(); @@ -757,6 +817,19 @@ void LLInventoryPanel::clearSelection()  void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)  { +	// Schedule updating the folder view context menu when all selected items become complete (STORM-373). +	mCompletionObserver->reset(); +	for (std::deque<LLFolderViewItem*>::const_iterator it = items.begin(); it != items.end(); ++it) +	{ +		LLUUID id = (*it)->getListener()->getUUID(); +		LLViewerInventoryItem* inv_item = mInventory->getItem(id); + +		if (inv_item && !inv_item->isFinished()) +		{ +			mCompletionObserver->watchItem(id); +		} +	} +  	LLFolderView* fv = getRootFolder();  	if (fv->needsAutoRename()) // auto-selecting a new user-created asset and preparing to rename  	{ diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 6545fc0d5e..9da9f7d8ba 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -52,6 +52,7 @@ class LLIconCtrl;  class LLSaveFolderState;  class LLFilterEditor;  class LLTabContainer; +class LLInvPanelComplObserver;  class LLInventoryPanel : public LLPanel  { @@ -167,9 +168,11 @@ public:  protected:  	void openStartFolderOrMyInventory(); // open the first level of inventory +	void onItemsCompletion();			// called when selected items are complete  	LLInventoryModel*			mInventory;  	LLInventoryObserver*		mInventoryObserver; +	LLInvPanelComplObserver*	mCompletionObserver;  	BOOL 						mAllowMultiSelect;  	BOOL 						mShowItemLinkOverlays; // Shows link graphic over inventory item icons 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/llmemoryview.cpp b/indra/newview/llmemoryview.cpp index 9a244e2562..7e9c3c84a7 100644 --- a/indra/newview/llmemoryview.cpp +++ b/indra/newview/llmemoryview.cpp @@ -37,9 +37,11 @@  #include <sstream>  #include <boost/algorithm/string/split.hpp> +#include "llmemory.h"  LLMemoryView::LLMemoryView(const LLMemoryView::Params& p)  :	LLView(p), +	mPaused(FALSE),  	//mDelay(120),      mAlloc(NULL)  { @@ -59,6 +61,7 @@ BOOL LLMemoryView::handleMouseDown(S32 x, S32 y, MASK mask)  	}  	else  	{ +		mPaused = !mPaused;  	}  	return TRUE;  } @@ -148,13 +151,14 @@ void LLMemoryView::draw()  	// cut off lines on bottom  	U32 max_lines = U32((height - 2 * line_height) / line_height); -    std::vector<LLWString>::const_iterator end = mLines.end(); +	y_pos = height - MARGIN_AMT - line_height; +    y_off = 0.f; + +#if !MEM_TRACK_MEM +	std::vector<LLWString>::const_iterator end = mLines.end();      if(mLines.size() > max_lines) {          end = mLines.begin() + max_lines;      } - -	y_pos = height - MARGIN_AMT - line_height; -    y_off = 0.f;      for (std::vector<LLWString>::const_iterator i = mLines.begin(); i != end; ++i)  	{  		font->render(*i, 0, MARGIN_AMT, y_pos -  y_off, @@ -169,6 +173,47 @@ void LLMemoryView::draw()  		y_off += line_height;  	} +#else +	LLMemTracker::getInstance()->preDraw(mPaused) ; + +	{ +		F32 x_pos = MARGIN_AMT ; +		U32 lines = 0 ; +		const char* str = LLMemTracker::getInstance()->getNextLine() ; +		while(str != NULL) +		{ +			lines++ ; +			font->renderUTF8(str, 0, x_pos, y_pos -  y_off, +				LLColor4::white, +				LLFontGL::LEFT,  +				LLFontGL::BASELINE, +				LLFontGL::NORMAL, +				LLFontGL::DROP_SHADOW, +				S32_MAX, +				target_width, +				NULL, FALSE); +		 +			str = LLMemTracker::getInstance()->getNextLine() ; +			y_off += line_height; + +			if(lines >= max_lines) +			{ +				lines = 0 ; +				x_pos += 512.f ; +				if(x_pos + 512.f > target_width) +				{ +					break ; +				} + +				y_pos = height - MARGIN_AMT - line_height; +				y_off = 0.f; +			} +		} +	} + +	LLMemTracker::getInstance()->postDraw() ; +#endif +  #if MEM_TRACK_TYPE  	S32 left, top, right, bottom; diff --git a/indra/newview/llmemoryview.h b/indra/newview/llmemoryview.h index 24ea058279..9bdc59ab10 100644 --- a/indra/newview/llmemoryview.h +++ b/indra/newview/llmemoryview.h @@ -55,6 +55,7 @@ public:  private:      std::vector<LLWString> mLines;  	LLAllocator* mAlloc; +	BOOL mPaused ;  }; diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index af8fdb17cf..a7059eb519 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -373,17 +373,19 @@ BOOL LLMuteList::remove(const LLMute& mute, U32 flags)  		// Must be after erase.  		setLoaded();  // why is this here? -MG  	} - -	// Clean up any legacy mutes -	string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName); -	if (legacy_it != mLegacyMutes.end()) +	else  	{ -		// Database representation of legacy mute is UUID null. -		LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME); -		updateRemove(mute); -		mLegacyMutes.erase(legacy_it); -		// Must be after erase. -		setLoaded(); // why is this here? -MG +		// Clean up any legacy mutes +		string_set_t::iterator legacy_it = mLegacyMutes.find(mute.mName); +		if (legacy_it != mLegacyMutes.end()) +		{ +			// Database representation of legacy mute is UUID null. +			LLMute mute(LLUUID::null, *legacy_it, LLMute::BY_NAME); +			updateRemove(mute); +			mLegacyMutes.erase(legacy_it); +			// Must be after erase. +			setLoaded(); // why is this here? -MG +		}  	}  	return found; @@ -607,7 +609,8 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c  	}  	// empty names can't be legacy-muted -	if (name.empty()) return FALSE; +	bool avatar = mute_object && mute_object->isAvatar(); +	if (name.empty() || avatar) return FALSE;  	// Look in legacy pile  	string_set_t::const_iterator legacy_it = mLegacyMutes.find(name); diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 38100aa6c5..afceb58ccf 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -143,6 +143,30 @@ void	LLNameListCtrl::mouseOverHighlightNthItem( S32 target_index )  	S32 cur_index = getHighlightedItemInx();  	if (cur_index != target_index)  	{ +		bool is_mouse_over_name_cell = false; + +		S32 mouse_x, mouse_y; +		LLUI::getMousePositionLocal(this, &mouse_x, &mouse_y); + +		S32 column_index = getColumnIndexFromOffset(mouse_x); +		LLScrollListItem* hit_item = hitItem(mouse_x, mouse_y); +		if (hit_item && column_index == mNameColumnIndex) +		{ +			// Get the name cell which is currently under the mouse pointer. +			LLScrollListCell* hit_cell = hit_item->getColumn(column_index); +			if (hit_cell) +			{ +				is_mouse_over_name_cell = getCellRect(cur_index, column_index).pointInRect(mouse_x, mouse_y); +			} +		} + +		// If the tool tip is visible and the mouse is over the currently highlighted item's name cell, +		// we should not reset the highlighted item index i.e. set mHighlightedItem = -1 +		// and should not increase the width of the text inside the cell because it may +		// overlap the tool tip icon. +		if (LLToolTipMgr::getInstance()->toolTipVisible() && is_mouse_over_name_cell) +			return; +  		if(0 <= cur_index && cur_index < (S32)getItemList().size())  		{  			LLScrollListItem* item = getItemList()[cur_index]; diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 1a8ec4991d..93039d935d 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -47,6 +47,7 @@  #include "llagentcamera.h"  #include "llappviewer.h" // for gDisconnected  #include "llcallingcard.h" // LLAvatarTracker +#include "llfloaterworldmap.h"  #include "lltracker.h"  #include "llsurface.h"  #include "llviewercamera.h" @@ -91,7 +92,8 @@ LLNetMap::LLNetMap (const Params & p)  	mObjectImagep(),  	mClosestAgentToCursor(),  	mClosestAgentAtLastRightClick(), -	mToolTipMsg() +	mToolTipMsg(), +	mPopupMenu(NULL)  {  	mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);  	setScale(gSavedSettings.getF32("MiniMapScale")); @@ -102,6 +104,21 @@ LLNetMap::~LLNetMap()  	gSavedSettings.setF32("MiniMapScale", mScale);  } +BOOL LLNetMap::postBuild() +{ +	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; +	 +	registrar.add("Minimap.Zoom", boost::bind(&LLNetMap::handleZoom, this, _2)); +	registrar.add("Minimap.Tracker", boost::bind(&LLNetMap::handleStopTracking, this, _2)); + +	mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_mini_map.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	if (mPopupMenu && !LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +	} +	return TRUE; +} +  void LLNetMap::setScale( F32 scale )  {  	scale = llclamp(scale, MAP_SCALE_MIN, MAP_SCALE_MAX); @@ -354,16 +371,49 @@ void LLNetMap::draw()  				pos_map = globalPosToView(pos_global); +				LLUUID uuid(NULL);  				BOOL show_as_friend = FALSE;  				if( i < regionp->mMapAvatarIDs.count())  				{ -					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(regionp->mMapAvatarIDs.get(i)) != NULL); +					uuid = regionp->mMapAvatarIDs.get(i); +					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL);  				} + +				LLColor4 color = show_as_friend ? map_avatar_friend_color : map_avatar_color;  				LLWorldMapView::drawAvatar(  					pos_map.mV[VX], pos_map.mV[VY],  -					show_as_friend ? map_avatar_friend_color : map_avatar_color,  +					color,   					pos_map.mV[VZ], mDotRadius); +				if(uuid.notNull()) +				{ +					bool selected = false; +					uuid_vec_t::iterator sel_iter = gmSelected.begin(); +					for (; sel_iter != gmSelected.end(); sel_iter++) +					{ +						if(*sel_iter == uuid) +						{ +							selected = true; +							break; +						} +					} +					if(selected) +					{ +						if( (pos_map.mV[VX] < 0) || +							(pos_map.mV[VY] < 0) || +							(pos_map.mV[VX] >= getRect().getWidth()) || +							(pos_map.mV[VY] >= getRect().getHeight()) ) +						{ +							S32 x = llround( pos_map.mV[VX] ); +							S32 y = llround( pos_map.mV[VY] ); +							LLWorldMapView::drawTrackingCircle( getRect(), x, y, color, 1, 10); +						} else +						{ +							LLWorldMapView::drawTrackingDot(pos_map.mV[VX],pos_map.mV[VY],color,0.f); +						} +					} +				} +  				F32	dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]),  											  LLVector2(local_mouse_x,local_mouse_y));  				if(dist_to_cursor < min_pick_dist && dist_to_cursor < closest_dist) @@ -460,6 +510,13 @@ void LLNetMap::draw()  	gGL.popUIMatrix();  	LLUICtrl::draw(); + +	if (LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", true); +	} +	 +  }  void LLNetMap::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -600,7 +657,6 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, MASK mask )  	args["[REGION]"] = region_name;  	std::string msg = mToolTipMsg;  	LLStringUtil::format(msg, args); -  	LLToolTipMgr::instance().show(LLToolTip::Params()  		.message(msg)  		.sticky_rect(sticky_rect)); @@ -793,6 +849,9 @@ BOOL LLNetMap::handleMouseDown( S32 x, S32 y, MASK mask )  BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  { +	if(abs(mMouseDown.mX-x)<3 && abs(mMouseDown.mY-y)<3) +		handleClick(x,y,mask); +  	if (hasMouseCapture())  	{  		if (mPanning) @@ -821,6 +880,53 @@ BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  	return FALSE;  } +BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->buildDrawLabels(); +		mPopupMenu->updateParent(LLMenuGL::sMenuContainer); +		LLMenuGL::showPopup(this, mPopupMenu, x, y); +	} +	return TRUE; +} + +BOOL LLNetMap::handleClick(S32 x, S32 y, MASK mask) +{ +	// TODO: allow clicking an avatar on minimap to select avatar in the nearby avatar list +	// if(mClosestAgentToCursor.notNull()) +	//     mNearbyList->selectUser(mClosestAgentToCursor); +	// Needs a registered observer i guess to accomplish this without using +	// globals to tell the mNearbyList in llpeoplepanel to select the user +	return TRUE; +} + +BOOL LLNetMap::handleDoubleClick(S32 x, S32 y, MASK mask) +{ +	LLVector3d pos_global = viewPosToGlobal(x, y); +	 +	// If we're not tracking a beacon already, double-click will set one  +	if (!LLTracker::isTracking(NULL)) +	{ +		LLFloaterWorldMap* world_map = LLFloaterWorldMap::getInstance(); +		if (world_map) +		{ +			world_map->trackLocation(pos_global); +		} +	} +	 +	if (gSavedSettings.getBOOL("DoubleClickTeleport")) +	{ +		// If DoubleClickTeleport is on, double clicking the minimap will teleport there +		gAgent.teleportViaLocationLookAt(pos_global); +	} +	else  +	{ +		LLFloaterReg::showInstance("world_map"); +	} +	return TRUE; +} +  // static  bool LLNetMap::outsideSlop( S32 x, S32 y, S32 start_x, S32 start_y, S32 slop )  { @@ -871,3 +977,38 @@ BOOL LLNetMap::handleHover( S32 x, S32 y, MASK mask )  	return TRUE;  } + +void LLNetMap::handleZoom(const LLSD& userdata) +{ +	std::string level = userdata.asString(); +	 +	F32 scale = 0.0f; +	if (level == std::string("default")) +	{ +		LLControlVariable *pvar = gSavedSettings.getControl("MiniMapScale"); +		if(pvar) +		{ +			pvar->resetToDefault(); +			scale = gSavedSettings.getF32("MiniMapScale"); +		} +	} +	else if (level == std::string("close")) +		scale = LLNetMap::MAP_SCALE_MAX; +	else if (level == std::string("medium")) +		scale = LLNetMap::MAP_SCALE_MID; +	else if (level == std::string("far")) +		scale = LLNetMap::MAP_SCALE_MIN; +	if (scale != 0.0f) +	{ +		setScale(scale); +	} +} + +void LLNetMap::handleStopTracking (const LLSD& userdata) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +		LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL)); +	} +} diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h index e053b1c177..20fcee0814 100644 --- a/indra/newview/llnetmap.h +++ b/indra/newview/llnetmap.h @@ -39,6 +39,7 @@ class LLCoordGL;  class LLImageRaw;  class LLViewerTexture;  class LLFloaterMap; +class LLMenuGL;  class LLNetMap : public LLUICtrl  { @@ -72,7 +73,12 @@ public:  	/*virtual*/ BOOL	handleHover( S32 x, S32 y, MASK mask );  	/*virtual*/ BOOL	handleToolTip( S32 x, S32 y, MASK mask);  	/*virtual*/ void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); -	 + +	/*virtual*/ BOOL 	postBuild(); +	/*virtual*/ BOOL	handleRightMouseDown( S32 x, S32 y, MASK mask ); +	/*virtual*/ BOOL	handleClick(S32 x, S32 y, MASK mask); +	/*virtual*/ BOOL	handleDoubleClick( S32 x, S32 y, MASK mask ); +  	void			setScale( F32 scale );  	void			setToolTipMsg(const std::string& msg) { mToolTipMsg = msg; }  	void			renderScaledPointGlobal( const LLVector3d& pos, const LLColor4U &color, F32 radius ); @@ -120,6 +126,16 @@ private:  	LLUUID			mClosestAgentAtLastRightClick;  	std::string		mToolTipMsg; + +public: +	void			setSelected(uuid_vec_t uuids) { gmSelected=uuids; }; + +private: +	void handleZoom(const LLSD& userdata); +	void handleStopTracking (const LLSD& userdata); + +	LLMenuGL*		mPopupMenu; +	uuid_vec_t		gmSelected;  }; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 94b2340c93..73c4722b82 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -625,10 +625,15 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g  	getChild<LLUICtrl>("sl_groups")->setValue(groups);  } -void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group )
 -{
 -	LLStringUtil::format_map_t args;
 -
 +static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name ) +{ +	if (profile_panel_handle.isDead() ) return; + +	LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get()); +	if ( ! profile_panel ) return; + +	LLStringUtil::format_map_t args; +  	std::string name;  	if (LLAvatarNameCache::useDisplayNames())  	{ @@ -637,21 +642,21 @@ void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::  	else  	{  		name = full_name; -	}
 -
 -	args["[NAME]"] = name;
 -
 -	std::string linden_name = getString("name_text_args", args);
 -	getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);
 -}
 +	} + +	args["[NAME]"] = name; + +	std::string linden_name = profile_panel->getString("name_text_args", args); +	profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name); +}  void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)  { -	LLStringUtil::format_map_t args;
 -	args["[DISPLAY_NAME]"] = av_name.mDisplayName;
 -
 -	std::string display_name = getString("display_name_text_args", args);
 -	getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);
 +	LLStringUtil::format_map_t args; +	args["[DISPLAY_NAME]"] = av_name.mDisplayName; + +	std::string display_name = getString("display_name_text_args", args); +	getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);  }  void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data) @@ -667,22 +672,23 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)  	}  	// ask (asynchronously) for the avatar name -	std::string full_name;
 -	if (gCacheName->getFullName(avatar_data->agent_id, full_name))
 -	{
 -		// name in cache, call callback directly
 -		got_full_name_callback( avatar_data->agent_id, full_name, false );
 -	}
 -	else
 -	{
 -		// not in cache, lookup name 
 -		gCacheName->get(avatar_data->agent_id, false, boost::bind( &LLPanelAvatarProfile::got_full_name_callback, this, _1, _2, _3 ));
 -	}
 -
 -	// get display name
 +	LLHandle<LLPanel> profile_panel_handle = getHandle(); +	std::string full_name; +	if (gCacheName->getFullName(avatar_data->agent_id, full_name)) +	{ +		// name in cache, call callback directly +		got_full_name_callback( profile_panel_handle, full_name ); +	} +	else +	{ +		// not in cache, lookup name  +		gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 )); +	} + +	// get display name  	LLAvatarNameCache::get(avatar_data->avatar_id, -		boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2));
 -
 +		boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2)); +  	args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());  	std::string register_date = getString("RegisterDateFormat", args);  	getChild<LLUICtrl>("register_date")->setValue(register_date ); diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 070fe4579a..e95441cd58 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -1,298 +1,297 @@ -/** 
 - * @file llpanelavatar.h
 - * @brief LLPanelAvatar and related class definitions
 - *
 - * $LicenseInfo:firstyear=2004&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_LLPANELAVATAR_H
 -#define LL_LLPANELAVATAR_H
 -
 -#include "llpanel.h"
 -#include "llavatarpropertiesprocessor.h"
 -#include "llcallingcard.h"
 -#include "llvoiceclient.h"
 -#include "llavatarnamecache.h"
 -
 -class LLComboBox;
 -class LLLineEditor;
 -
 -enum EOnlineStatus
 -{
 -	ONLINE_STATUS_NO      = 0,
 -	ONLINE_STATUS_YES     = 1
 -};
 -
 -/**
 -* Base class for any Profile View or My Profile Panel.
 -*/
 -class LLPanelProfileTab
 -	: public LLPanel
 -	, public LLAvatarPropertiesObserver
 -{
 -public:
 -
 -	/**
 -	 * Sets avatar ID, sets panel as observer of avatar related info replies from server.
 -	 */
 -	virtual void setAvatarId(const LLUUID& id);
 -
 -	/**
 -	 * Returns avatar ID.
 -	 */
 -	virtual const LLUUID& getAvatarId() { return mAvatarId; }
 -
 -	/**
 -	 * Sends update data request to server.
 -	 */
 -	virtual void updateData() = 0;
 -
 -	/**
 -	 * Clears panel data if viewing avatar info for first time and sends update data request.
 -	 */
 -	virtual void onOpen(const LLSD& key);
 -
 -	/**
 -	 * Profile tabs should close any opened panels here.
 -	 *
 -	 * Called from LLPanelProfile::onOpen() before opening new profile.
 -	 * See LLPanelPicks::onClosePanel for example. LLPanelPicks closes picture info panel
 -	 * before new profile is displayed, otherwise new profile will 
 -	 * be hidden behind picture info panel.
 -	 */
 -	virtual void onClosePanel() {}
 -
 -	/**
 -	 * Resets controls visibility, state, etc.
 -	 */
 -	virtual void resetControls(){};
 -
 -	/**
 -	 * Clears all data received from server.
 -	 */
 -	virtual void resetData(){};
 -
 -	/*virtual*/ ~LLPanelProfileTab();
 -
 -protected:
 -
 -	LLPanelProfileTab();
 -
 -	/**
 -	 * Scrolls panel to top when viewing avatar info for first time.
 -	 */
 -	void scrollToTop();
 -
 -	virtual void onMapButtonClick();
 -
 -	virtual void updateButtons();
 -
 -private:
 -
 -	LLUUID mAvatarId;
 -};
 -
 -/**
 -* Panel for displaying Avatar's first and second life related info.
 -*/
 -class LLPanelAvatarProfile
 -	: public LLPanelProfileTab
 -	, public LLFriendObserver
 -	, public LLVoiceClientStatusObserver
 -{
 -public:
 -	LLPanelAvatarProfile();
 -	/*virtual*/ ~LLPanelAvatarProfile();
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/**
 -	 * LLFriendObserver trigger
 -	 */
 -	virtual void changed(U32 mask);
 -
 -	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
 -	// button when voice is available
 -	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
 -
 -	/*virtual*/ void setAvatarId(const LLUUID& id);
 -
 -	/**
 -	 * Processes data received from server.
 -	 */
 -	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -	/*virtual*/ void updateData();
 -
 -	/*virtual*/ void resetControls();
 -
 -	/*virtual*/ void resetData();
 -
 -protected:
 -
 -	/**
 -	 * Process profile related data received from server.
 -	 */
 -	virtual void processProfileProperties(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Processes group related data received from server.
 -	 */
 -	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
 -
 -	/**
 -	 * Fills common for Avatar profile and My Profile fields.
 -	 */
 -	virtual void fillCommonData(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Fills partner data.
 -	 */
 -	virtual void fillPartnerData(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Fills account status.
 -	 */
 -	virtual void fillAccountStatus(const LLAvatarData* avatar_data);
 -
 -	/**
 -	 * Opens "Pay Resident" dialog.
 -	 */
 -	void pay();
 -
 -	/**
 -	 * opens inventory and IM for sharing items
 -	 */
 -	void share();
 -
 -	/**
 -	 * Add/remove resident to/from your block list.
 -	 */
 -	void toggleBlock();
 -
 -	void kick();
 -	void freeze();
 -	void unfreeze();
 -	void csr();
 -	
 -	bool enableShowOnMap();
 -	bool enableBlock();
 -	bool enableUnblock();
 -	bool enableGod();
 -
 -	void onSeeProfileBtnClick();
 -	void onAddFriendButtonClick();
 -	void onIMButtonClick();
 -	void onCallButtonClick();
 -	void onTeleportButtonClick();
 -	void onShareButtonClick();
 -
 -private:
 -	void got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group );
 -	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
 -
 -	typedef std::map< std::string,LLUUID>	group_map_t;
 -	group_map_t 			mGroups;
 -};
 -
 -/**
 - * Panel for displaying own first and second life related info.
 - */
 -class LLPanelMyProfile
 -	: public LLPanelAvatarProfile
 -{
 -public:
 -	LLPanelMyProfile();
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -protected:
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data);
 -
 -	/*virtual*/ void resetControls();
 -
 -protected:
 -	void onStatusMessageChanged();
 -};
 -
 -/**
 - * Panel for displaying Avatar's notes and modifying friend's rights.
 - */
 -class LLPanelAvatarNotes 
 -	: public LLPanelProfileTab
 -	, public LLFriendObserver
 -	, public LLVoiceClientStatusObserver
 -{
 -public:
 -	LLPanelAvatarNotes();
 -	/*virtual*/ ~LLPanelAvatarNotes();
 -
 -	virtual void setAvatarId(const LLUUID& id);
 -
 -	/** 
 -	 * LLFriendObserver trigger
 -	 */
 -	virtual void changed(U32 mask);
 -
 -	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
 -	// button when voice is available
 -	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
 -
 -	/*virtual*/ void onOpen(const LLSD& key);
 -
 -	/*virtual*/ BOOL postBuild();
 -
 -	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
 -
 -	/*virtual*/ void updateData();
 -
 -protected:
 -
 -	/*virtual*/ void resetControls();
 -
 -	/*virtual*/ void resetData();
 -
 -	/**
 -	 * Fills rights data for friends.
 -	 */
 -	void fillRightsData();
 -
 -	void rightsConfirmationCallback(const LLSD& notification,
 -			const LLSD& response, S32 rights);
 -	void confirmModifyRights(bool grant, S32 rights);
 -	void onCommitRights();
 -	void onCommitNotes();
 -
 -	void onAddFriendButtonClick();
 -	void onIMButtonClick();
 -	void onCallButtonClick();
 -	void onTeleportButtonClick();
 -	void onShareButtonClick();
 -	void enableCheckboxes(bool enable);
 -};
 -
 -#endif // LL_LLPANELAVATAR_H
 +/**  + * @file llpanelavatar.h + * @brief LLPanelAvatar and related class definitions + * + * $LicenseInfo:firstyear=2004&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_LLPANELAVATAR_H +#define LL_LLPANELAVATAR_H + +#include "llpanel.h" +#include "llavatarpropertiesprocessor.h" +#include "llcallingcard.h" +#include "llvoiceclient.h" +#include "llavatarnamecache.h" + +class LLComboBox; +class LLLineEditor; + +enum EOnlineStatus +{ +	ONLINE_STATUS_NO      = 0, +	ONLINE_STATUS_YES     = 1 +}; + +/** +* Base class for any Profile View or My Profile Panel. +*/ +class LLPanelProfileTab +	: public LLPanel +	, public LLAvatarPropertiesObserver +{ +public: + +	/** +	 * Sets avatar ID, sets panel as observer of avatar related info replies from server. +	 */ +	virtual void setAvatarId(const LLUUID& id); + +	/** +	 * Returns avatar ID. +	 */ +	virtual const LLUUID& getAvatarId() { return mAvatarId; } + +	/** +	 * Sends update data request to server. +	 */ +	virtual void updateData() = 0; + +	/** +	 * Clears panel data if viewing avatar info for first time and sends update data request. +	 */ +	virtual void onOpen(const LLSD& key); + +	/** +	 * Profile tabs should close any opened panels here. +	 * +	 * Called from LLPanelProfile::onOpen() before opening new profile. +	 * See LLPanelPicks::onClosePanel for example. LLPanelPicks closes picture info panel +	 * before new profile is displayed, otherwise new profile will  +	 * be hidden behind picture info panel. +	 */ +	virtual void onClosePanel() {} + +	/** +	 * Resets controls visibility, state, etc. +	 */ +	virtual void resetControls(){}; + +	/** +	 * Clears all data received from server. +	 */ +	virtual void resetData(){}; + +	/*virtual*/ ~LLPanelProfileTab(); + +protected: + +	LLPanelProfileTab(); + +	/** +	 * Scrolls panel to top when viewing avatar info for first time. +	 */ +	void scrollToTop(); + +	virtual void onMapButtonClick(); + +	virtual void updateButtons(); + +private: + +	LLUUID mAvatarId; +}; + +/** +* Panel for displaying Avatar's first and second life related info. +*/ +class LLPanelAvatarProfile +	: public LLPanelProfileTab +	, public LLFriendObserver +	, public LLVoiceClientStatusObserver +{ +public: +	LLPanelAvatarProfile(); +	/*virtual*/ ~LLPanelAvatarProfile(); + +	/*virtual*/ void onOpen(const LLSD& key); + +	/** +	 * LLFriendObserver trigger +	 */ +	virtual void changed(U32 mask); + +	// Implements LLVoiceClientStatusObserver::onChange() to enable the call +	// button when voice is available +	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + +	/*virtual*/ void setAvatarId(const LLUUID& id); + +	/** +	 * Processes data received from server. +	 */ +	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type); + +	/*virtual*/ BOOL postBuild(); + +	/*virtual*/ void updateData(); + +	/*virtual*/ void resetControls(); + +	/*virtual*/ void resetData(); + +protected: + +	/** +	 * Process profile related data received from server. +	 */ +	virtual void processProfileProperties(const LLAvatarData* avatar_data); + +	/** +	 * Processes group related data received from server. +	 */ +	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups); + +	/** +	 * Fills common for Avatar profile and My Profile fields. +	 */ +	virtual void fillCommonData(const LLAvatarData* avatar_data); + +	/** +	 * Fills partner data. +	 */ +	virtual void fillPartnerData(const LLAvatarData* avatar_data); + +	/** +	 * Fills account status. +	 */ +	virtual void fillAccountStatus(const LLAvatarData* avatar_data); + +	/** +	 * Opens "Pay Resident" dialog. +	 */ +	void pay(); + +	/** +	 * opens inventory and IM for sharing items +	 */ +	void share(); + +	/** +	 * Add/remove resident to/from your block list. +	 */ +	void toggleBlock(); + +	void kick(); +	void freeze(); +	void unfreeze(); +	void csr(); +	 +	bool enableShowOnMap(); +	bool enableBlock(); +	bool enableUnblock(); +	bool enableGod(); + +	void onSeeProfileBtnClick(); +	void onAddFriendButtonClick(); +	void onIMButtonClick(); +	void onCallButtonClick(); +	void onTeleportButtonClick(); +	void onShareButtonClick(); + +private: +	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name); + +	typedef std::map< std::string,LLUUID>	group_map_t; +	group_map_t 			mGroups; +}; + +/** + * Panel for displaying own first and second life related info. + */ +class LLPanelMyProfile +	: public LLPanelAvatarProfile +{ +public: +	LLPanelMyProfile(); + +	/*virtual*/ BOOL postBuild(); + +protected: + +	/*virtual*/ void onOpen(const LLSD& key); + +	/*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data); + +	/*virtual*/ void resetControls(); + +protected: +	void onStatusMessageChanged(); +}; + +/** + * Panel for displaying Avatar's notes and modifying friend's rights. + */ +class LLPanelAvatarNotes  +	: public LLPanelProfileTab +	, public LLFriendObserver +	, public LLVoiceClientStatusObserver +{ +public: +	LLPanelAvatarNotes(); +	/*virtual*/ ~LLPanelAvatarNotes(); + +	virtual void setAvatarId(const LLUUID& id); + +	/**  +	 * LLFriendObserver trigger +	 */ +	virtual void changed(U32 mask); + +	// Implements LLVoiceClientStatusObserver::onChange() to enable the call +	// button when voice is available +	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal); + +	/*virtual*/ void onOpen(const LLSD& key); + +	/*virtual*/ BOOL postBuild(); + +	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type); + +	/*virtual*/ void updateData(); + +protected: + +	/*virtual*/ void resetControls(); + +	/*virtual*/ void resetData(); + +	/** +	 * Fills rights data for friends. +	 */ +	void fillRightsData(); + +	void rightsConfirmationCallback(const LLSD& notification, +			const LLSD& response, S32 rights); +	void confirmModifyRights(bool grant, S32 rights); +	void onCommitRights(); +	void onCommitNotes(); + +	void onAddFriendButtonClick(); +	void onIMButtonClick(); +	void onCallButtonClick(); +	void onTeleportButtonClick(); +	void onShareButtonClick(); +	void enableCheckboxes(bool enable); +}; + +#endif // LL_LLPANELAVATAR_H diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 8d3b1fd7a0..3b5830f8e0 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -81,6 +81,9 @@ const S32 MAX_PASSWORD = 16;  LLPanelLogin *LLPanelLogin::sInstance = NULL;  BOOL LLPanelLogin::sCapslockDidNotification = FALSE; +// Helper for converting a user name into the canonical "Firstname Lastname" form. +// For new accounts without a last name "Resident" is added as a last name. +static std::string canonicalize_username(const std::string& name);  class LLLoginRefreshHandler : public LLCommandHandler  { @@ -298,7 +301,14 @@ void LLPanelLogin::addFavoritesToStartLocation()  	for (LLSD::map_const_iterator iter = fav_llsd.beginMap();  		iter != fav_llsd.endMap(); ++iter)  	{ -		if(iter->first != getChild<LLComboBox>("username_combo")->getSimple()) continue; +		std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple(); + +		// The account name in stored_favorites.xml has Resident last name even if user has +		// a single word account name, so it can be compared case-insensitive with the +		// user defined "firstname lastname". +		S32 res = LLStringUtil::compareInsensitive(canonicalize_username(user_defined_name), iter->first); +		if (res != 0) continue; +  		combo->addSeparator();  		LLSD user_llsd = iter->second;  		for (LLSD::array_const_iterator iter1 = user_llsd.beginArray(); @@ -1156,3 +1166,28 @@ void LLPanelLogin::updateLoginPanelLinks()  	sInstance->getChildView("create_new_account_text")->setVisible( system_grid);  	sInstance->getChildView("forgot_password_text")->setVisible( system_grid);  } + +std::string canonicalize_username(const std::string& name) +{ +	std::string cname = name; +	LLStringUtil::trim(cname); + +	// determine if the username is a first/last form or not. +	size_t separator_index = cname.find_first_of(" ._"); +	std::string first = cname.substr(0, separator_index); +	std::string last; +	if (separator_index != cname.npos) +	{ +		last = cname.substr(separator_index+1, cname.npos); +		LLStringUtil::trim(last); +	} +	else +	{ +		// ...on Linden grids, single username users as considered to have +		// last name "Resident" +		last = "Resident"; +	} + +	// Username in traditional "firstname lastname" form. +	return first + ' ' + last; +} diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index c83176d980..0c3f2f3e31 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 @@ -1013,6 +975,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"; @@ -1193,24 +1160,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/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 54198d6aa4..b07a46a222 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -54,6 +54,7 @@  #include "llgroupactions.h"  #include "llgrouplist.h"  #include "llinventoryobserver.h" +#include "llnetmap.h"  #include "llpanelpeoplemenus.h"  #include "llsidetray.h"  #include "llsidetraypanelcontainer.h" @@ -494,7 +495,8 @@ LLPanelPeople::LLPanelPeople()  		mNearbyGearButton(NULL),  		mFriendsGearButton(NULL),  		mGroupsGearButton(NULL), -		mRecentGearButton(NULL) +		mRecentGearButton(NULL), +		mMiniMap(NULL)  {  	mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList,	this));  	mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList,	this)); @@ -567,6 +569,9 @@ BOOL LLPanelPeople::postBuild()  	mNearbyList->setNoItemsMsg(getString("no_one_near"));  	mNearbyList->setNoFilteredItemsMsg(getString("no_one_filtered_near"));  	mNearbyList->setShowIcons("NearbyListShowIcons"); +	mMiniMap = (LLNetMap*)getChildView("Net Map",true); +	mMiniMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltMiniMapToolTipMsg") :	getString("MiniMapToolTipMsg"));  	mRecentList = getChild<LLPanel>(RECENT_TAB_NAME)->getChild<LLAvatarList>("avatar_list");  	mRecentList->setNoItemsCommentText(getString("no_recent_people")); @@ -1088,6 +1093,12 @@ void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl)  void LLPanelPeople::onAvatarListCommitted(LLAvatarList* list)  { +	if (getActiveTabName() == NEARBY_TAB_NAME) +	{ +		uuid_vec_t selected_uuids; +		getCurrentItemIDs(selected_uuids); +		mMiniMap->setSelected(selected_uuids); +	} else  	// Make sure only one of the friends lists (online/all) has selection.  	if (getActiveTabName() == FRIENDS_TAB_NAME)  	{ diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index b496bb3779..46c58cd139 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -142,6 +142,7 @@ private:  	LLAvatarList*			mNearbyList;  	LLAvatarList*			mRecentList;  	LLGroupList*			mGroupList; +	LLNetMap*				mMiniMap;  	LLHandle<LLView>		mGroupPlusMenuHandle;  	LLHandle<LLView>		mNearbyViewSortMenuHandle; 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/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 7657cccd4e..6cfb708112 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -273,6 +273,8 @@ void LLPreviewTexture::saveAs()  	mSaveFileName = file_picker.getFirstFile();  	mLoadingFullImage = TRUE;  	getWindow()->incBusyCount(); + +	mImage->forceToSaveRawImage(0) ;//re-fetch the raw image if the old one is removed.  	mImage->setLoadedCallback( LLPreviewTexture::onFileLoadedForSave,   								0, TRUE, FALSE, new LLUUID( mItemUUID ), &mCallbackTextureList );  } diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp index 959fd51bbf..7689cd1a52 100644 --- a/indra/newview/llrecentpeople.cpp +++ b/indra/newview/llrecentpeople.cpp @@ -33,7 +33,7 @@  using namespace LLOldEvents; -bool LLRecentPeople::add(const LLUUID& id) +bool LLRecentPeople::add(const LLUUID& id, const LLSD& userdata)  {  	if (id == gAgent.getID())  		return false; @@ -42,10 +42,16 @@ bool LLRecentPeople::add(const LLUUID& id)  	if (is_not_group_id)  	{ -		LLDate date_added = LLDate::now(); +		// For each avaline call the id of caller is different even if +		// the phone number is the same. +		// To avoid duplication of avaline list items in the recent list +		// of panel People, deleting id's with similar phone number. +		const LLUUID& caller_id = getIDByPhoneNumber(userdata); +		if (caller_id.notNull()) +			mPeople.erase(caller_id); -		//[] instead of insert to replace existing id->date with new date value -		mPeople[id] = date_added; +		//[] instead of insert to replace existing id->llsd["date"] with new date value +		mPeople[id] = userdata;  		mChangedSignal();  	} @@ -64,15 +70,55 @@ void LLRecentPeople::get(uuid_vec_t& result) const  		result.push_back((*pos).first);  } -const LLDate& LLRecentPeople::getDate(const LLUUID& id) const +const LLDate LLRecentPeople::getDate(const LLUUID& id) const  {  	recent_people_t::const_iterator it = mPeople.find(id); -	if (it!= mPeople.end()) return (*it).second; +	if (it!= mPeople.end()) return it->second["date"].asDate();  	static LLDate no_date = LLDate();  	return no_date;  } +const LLSD& LLRecentPeople::getData(const LLUUID& id) const +{ +	recent_people_t::const_iterator it = mPeople.find(id); + +	if (it != mPeople.end()) +		return it->second; + +	static LLSD no_data = LLSD(); +	return no_data; +} + +bool LLRecentPeople::isAvalineCaller(const LLUUID& id) const +{ +	recent_people_t::const_iterator it = mPeople.find(id); + +	if (it != mPeople.end()) +	{ +		const LLSD& user = it->second;		 +		return user["avaline_call"].asBoolean(); +	} + +	return false; +} + +const LLUUID& LLRecentPeople::getIDByPhoneNumber(const LLSD& userdata) +{ +	if (!userdata["avaline_call"].asBoolean()) +		return LLUUID::null; + +	for (recent_people_t::const_iterator it = mPeople.begin(); it != mPeople.end(); ++it) +	{ +		const LLSD& user_info = it->second; +		 +		if (user_info["call_number"].asString() == userdata["call_number"].asString()) +			return it->first; +	} +	 +	return LLUUID::null; +} +  // virtual  bool LLRecentPeople::handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)  { diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h index 852a92ff80..d0d6376867 100644 --- a/indra/newview/llrecentpeople.h +++ b/indra/newview/llrecentpeople.h @@ -58,9 +58,15 @@ public:  	 * Add specified avatar to the list if it's not there already.  	 *  	 * @param id avatar to add. +	 * +	 * @param userdata additional information about last interaction party. +	 *				   For example when last interaction party is not an avatar +	 *				   but an avaline caller, additional info (such as phone +	 *				   number, session id and etc.) should be added. +	 *  	 * @return false if the avatar is in the list already, true otherwise  	 */ -	bool add(const LLUUID& id); +	bool add(const LLUUID& id, const LLSD& userdata = LLSD().with("date", LLDate::now()));  	/**  	 * @param id avatar to search. @@ -75,7 +81,25 @@ public:  	 */  	void get(uuid_vec_t& result) const; -	const LLDate& getDate(const LLUUID& id) const; +	/** +	 * Returns last interaction time with specified participant +	 * +	 */ +	const LLDate getDate(const LLUUID& id) const; + +	/** +	 * Returns data about specified participant +	 * +	 * @param id identifier of specific participant +	 */ +	const LLSD& getData(const LLUUID& id) const; + +	/** +	 * Checks whether specific participant is an avaline caller +	 * +	 * @param id identifier of specific participant +	 */ +	bool isAvalineCaller(const LLUUID& id) const;  	/**  	 * Set callback to be called when the list changed. @@ -92,7 +116,10 @@ public:  	/*virtual*/ bool handleEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata);  private: -	typedef std::map<LLUUID, LLDate> recent_people_t; + +	const LLUUID& getIDByPhoneNumber(const LLSD& userdata); + +	typedef std::map<LLUUID, LLSD> recent_people_t;  	recent_people_t		mPeople;  	signal_t			mChangedSignal;  }; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index da891d1c51..50bc0b4a98 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -65,6 +65,7 @@  #include "llinventorymodel.h"  #include "llmenugl.h"  #include "llmutelist.h" +#include "llnotificationsutil.h"  #include "llsidepaneltaskinfo.h"  #include "llslurl.h"  #include "llstatusbar.h" @@ -562,6 +563,103 @@ BOOL LLSelectMgr::removeObjectFromSelections(const LLUUID &id)  	return object_found;  } +bool LLSelectMgr::linkObjects() +{ +	if (!LLSelectMgr::getInstance()->selectGetAllRootsValid()) +	{ +		LLNotificationsUtil::add("UnableToLinkWhileDownloading"); +		return true; +	} + +	S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); +	if (object_count > MAX_CHILDREN_PER_TASK + 1) +	{ +		LLSD args; +		args["COUNT"] = llformat("%d", object_count); +		int max = MAX_CHILDREN_PER_TASK+1; +		args["MAX"] = llformat("%d", max); +		LLNotificationsUtil::add("UnableToLinkObjects", args); +		return true; +	} + +	if (LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) +	{ +		LLNotificationsUtil::add("CannotLinkIncompleteSet"); +		return true; +	} + +	if (!LLSelectMgr::getInstance()->selectGetRootsModify()) +	{ +		LLNotificationsUtil::add("CannotLinkModify"); +		return true; +	} + +	LLUUID owner_id; +	std::string owner_name; +	if (!LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name)) +	{ +		// we don't actually care if you're the owner, but novices are +		// the most likely to be stumped by this one, so offer the +		// easiest and most likely solution. +		LLNotificationsUtil::add("CannotLinkDifferentOwners"); +		return true; +	} + +	LLSelectMgr::getInstance()->sendLink(); + +	return true; +} + +bool LLSelectMgr::unlinkObjects() +{ +	LLSelectMgr::getInstance()->sendDelink(); +	return true; +} + +// in order to link, all objects must have the same owner, and the +// agent must have the ability to modify all of the objects. However, +// we're not answering that question with this method. The question +// we're answering is: does the user have a reasonable expectation +// that a link operation should work? If so, return true, false +// otherwise. this allows the handle_link method to more finely check +// the selection and give an error message when the uer has a +// reasonable expectation for the link to work, but it will fail. +bool LLSelectMgr::enableLinkObjects() +{ +	bool new_value = false; +	// check if there are at least 2 objects selected, and that the +	// user can modify at least one of the selected objects. + +	// in component mode, can't link +	if (!gSavedSettings.getBOOL("EditLinkedParts")) +	{ +		if(LLSelectMgr::getInstance()->selectGetAllRootsValid() && LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() >= 2) +		{ +			struct f : public LLSelectedObjectFunctor +			{ +				virtual bool apply(LLViewerObject* object) +				{ +					return object->permModify(); +				} +			} func; +			const bool firstonly = true; +			new_value = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly); +		} +	} +	return new_value; +} + +bool LLSelectMgr::enableUnlinkObjects() +{ +	LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject(); + +	bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() && +		first_editable_object && +		!first_editable_object->isAttachment(); + +	return new_value; +} +  void LLSelectMgr::deselectObjectAndFamily(LLViewerObject* object, BOOL send_to_sim, BOOL include_entire_object)  {  	// bail if nothing selected or if object wasn't selected in the first place diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 65a9a493f6..cb387f5c3c 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -440,6 +440,17 @@ public:  	BOOL removeObjectFromSelections(const LLUUID &id);  	//////////////////////////////////////////////////////////////// +	// Selection editing +	//////////////////////////////////////////////////////////////// +	bool linkObjects(); + +	bool unlinkObjects(); + +	bool enableLinkObjects(); + +	bool enableUnlinkObjects(); + +	////////////////////////////////////////////////////////////////  	// Selection accessors  	////////////////////////////////////////////////////////////////  	LLObjectSelectionHandle	getSelection() { return mSelectedObjects; } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 19d1bdee86..eb537c7d7b 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -141,6 +141,8 @@ public:  	void			toggleTabDocked(); +	BOOL			handleScrollWheel(S32 x, S32 y, S32 clicks); +  	LLPanel *getPanel();  private:  	std::string mTabTitle; @@ -269,6 +271,15 @@ void LLSideTrayTab::toggleTabDocked()  	LLFloaterReg::toggleInstance("side_bar_tab", tab_name);  } +BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks) +{ +	// Let children handle the event +	LLUICtrl::handleScrollWheel(x, y, clicks); + +	// and then eat it to prevent in-world scrolling (STORM-351). +	return TRUE; +} +  void LLSideTrayTab::dock(LLFloater* floater_tab)  {  	LLSideTray* side_tray = getSideTray(); 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/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 6ddbdbf783..f54214b95c 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -326,6 +326,7 @@ bool LLTextureCacheRemoteWorker::doRead()  	// First state / stage : find out if the file is local  	if (mState == INIT)  	{ +#if 0  		std::string filename = mCache->getLocalFileName(mID);	  		// Is it a JPEG2000 file?   		{ @@ -360,6 +361,11 @@ bool LLTextureCacheRemoteWorker::doRead()  		}  		// Determine the next stage: if we found a file, then LOCAL else CACHE  		mState = (local_size > 0 ? LOCAL : CACHE); + +		llassert_always(mState == CACHE) ; +#else +		mState = CACHE; +#endif  	}  	// Second state / stage : if the file is local, load it and leave diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 4f63abb152..18c3a3b87d 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1141,7 +1141,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			//1, not openning too many file descriptors at the same time;  			//2, control the traffic of http so udp gets bandwidth.  			// -			static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 32 ; +			static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 8 ;  			if(mFetcher->getNumHTTPRequests() > MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE)  			{  				return false ; //wait. @@ -1822,6 +1822,7 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image  	  mImageDecodeThread(imagedecodethread),  	  mTextureBandwidth(0),  	  mHTTPTextureBits(0), +	  mTotalHTTPRequests(0),  	  mCurlGetRequest(NULL),  	  mQAMode(qa_mode)  { @@ -1973,6 +1974,7 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)  {  	LLMutexLock lock(&mNetworkQueueMutex);  	mHTTPTextureQueue.insert(id); +	mTotalHTTPRequests++;  }  void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size) @@ -2035,6 +2037,15 @@ S32 LLTextureFetch::getNumHTTPRequests()  	return size ;  } +U32 LLTextureFetch::getTotalNumHTTPRequests() +{ +	mNetworkQueueMutex.lock() ; +	U32 size = mTotalHTTPRequests ; +	mNetworkQueueMutex.unlock() ; + +	return size ; +} +  // call lockQueue() first!  LLTextureFetchWorker* LLTextureFetch::getWorkerAfterLock(const LLUUID& id)  { diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index ad00a7ea36..d101da1f4b 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -79,6 +79,7 @@ public:  	void dump();  	S32 getNumRequests() ;  	S32 getNumHTTPRequests() ; +	U32 getTotalNumHTTPRequests() ;  	// Public for access by callbacks      S32 getPending(); @@ -183,6 +184,9 @@ private:  	U32 mHTTPTextureBits; +	//debug use +	U32 mTotalHTTPRequests ; +  	// Out-of-band cross-thread command queue.  This command queue  	// is logically tied to LLQueuedThread's list of  	// QueuedRequest instances and so must be covered by the diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index b9a15fd1f4..0115115a23 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -516,6 +516,7 @@ void LLGLTexMemBar::draw()  	S32 v_offset = (S32)((texture_bar_height + 2.2f) * mTextureView->mNumTextureBars + 2.0f);  	F32 total_texture_downloaded = (F32)gTotalTextureBytes / (1024 * 1024);  	F32 total_object_downloaded = (F32)gTotalObjectBytes / (1024 * 1024); +	U32 total_http_requests = LLAppViewer::getTextureFetch()->getTotalNumHTTPRequests() ;  	//----------------------------------------------------------------------------  	LLGLSUIDefault gls_ui;  	LLColor4 text_color(1.f, 1.f, 1.f, 0.75f); @@ -526,13 +527,13 @@ void LLGLTexMemBar::draw()  	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*6,  											 text_color, LLFontGL::LEFT, LLFontGL::TOP); -	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB", +	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",  					total_mem,  					max_total_mem,  					bound_mem,  					max_bound_mem,  					LLImageRaw::sGlobalRawMemory >> 20,	discard_bias, -					cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded); +					cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded, total_http_requests);  	//, cache_entries, cache_max_entries  	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*3, 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 7731a98778..767e1cd12b 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -2,33 +2,27 @@  * @file lltranslate.cpp  * @brief Functions for translating text via Google Translate.  * -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2009-2010, Linden Research, Inc. -* -* 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 -* -* 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 -* -* 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. -* -* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/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" @@ -39,7 +33,7 @@  #include "llversioninfo.h"  #include "llviewercontrol.h" -#include "reader.h" +#include "json/reader.h"  // These two are concatenated with the language specifiers to form a complete Google Translate URL  const char* LLTranslate::m_GoogleURL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q="; diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 0786dc0ca3..e85a42e878 100644 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -2,33 +2,27 @@  * @file lltranslate.h  * @brief Human language translation class and JSON response receiver.  * -* $LicenseInfo:firstyear=2009&license=viewergpl$ -* -* Copyright (c) 2009-2010, Linden Research, Inc. -* -* 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 -* -* 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 -* -* 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. -* -* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO -* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, -* COMPLETENESS OR PERFORMANCE. -* $/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 5ad7725b3e..7024b2c785 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/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 8c5a52c187..3c53e54203 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -309,6 +309,15 @@ static bool handleRenderUseVBOChanged(const LLSD& newvalue)  	return true;  } +static bool handleRenderUseVBOMappingChanged(const LLSD& newvalue) +{ +	if (gPipeline.isInit()) +	{ +		gPipeline.setDisableVBOMapping(newvalue.asBoolean()); +	} +	return true; +} +  static bool handleWLSkyDetailChanged(const LLSD&)  {  	if (gSky.mVOWLSkyp.notNull()) @@ -589,6 +598,7 @@ void settings_setup_listeners()  	gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));  	gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));  	gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleRenderUseVBOChanged, _2)); +	gSavedSettings.getControl("RenderVBOMappingDisable")->getSignal()->connect(boost::bind(&handleRenderUseVBOMappingChanged, _2));  	gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));  	gSavedSettings.getControl("WLSkyDetail")->getSignal()->connect(boost::bind(&handleWLSkyDetailChanged, _2));  	gSavedSettings.getControl("NumpadControl")->getSignal()->connect(boost::bind(&handleNumpadControlChanged, _2)); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index ddb11829df..41b7c13826 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -647,8 +647,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		LLGLState::checkTextureChannels();  		LLGLState::checkClientArrays(); -		BOOL to_texture = !for_snapshot && -						gPipeline.canUseVertexShaders() && +		BOOL to_texture = gPipeline.canUseVertexShaders() &&  						LLPipeline::sRenderGlow;  		LLAppViewer::instance()->pingMainloopTimeout("Display:Swap"); @@ -709,7 +708,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  			glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);  		} -		if (!for_snapshot) +		//if (!for_snapshot)  		{  			LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION);  			LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery"); @@ -1043,8 +1042,7 @@ LLRect get_whole_screen_region()  		S32 tile_height = llround((F32)gViewerWindow->getWorldViewHeightScaled() / zoom_factor);  		int tile_y = sub_region / num_horizontal_tiles;  		int tile_x = sub_region - (tile_y * num_horizontal_tiles); -		glh::matrix4f mat; -		 +			  		whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWorldViewHeightScaled() - (tile_y * tile_height), tile_width, tile_height);  	}  	return whole_screen; @@ -1124,10 +1122,14 @@ void render_ui(F32 zoom_factor, int subfield)  	LLMemType mt_ru(LLMemType::MTYPE_DISPLAY_RENDER_UI);  	LLGLState::checkStates(); -	glPushMatrix(); -	glLoadMatrixd(gGLLastModelView);  	glh::matrix4f saved_view = glh_get_current_modelview(); -	glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); + +	if (!gSnapshot) +	{ +		glPushMatrix(); +		glLoadMatrixd(gGLLastModelView); +		glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); +	}  	{  		BOOL to_texture = gPipeline.canUseVertexShaders() && @@ -1178,8 +1180,11 @@ void render_ui(F32 zoom_factor, int subfield)  		LLVertexBuffer::unbind();  	} -	glh_set_current_modelview(saved_view); -	glPopMatrix(); +	if (!gSnapshot) +	{ +		glh_set_current_modelview(saved_view); +		glPopMatrix(); +	}  	if (gDisplaySwapBuffers)  	{ @@ -1321,7 +1326,7 @@ void render_ui_2d()  	// render outline for HUD  	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)  	{ -		glPushMatrix(); +		gGL.pushMatrix();  		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);  		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);  		glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f); @@ -1330,7 +1335,7 @@ void render_ui_2d()  		glScalef(zoom,zoom,1.f);  		gGL.color4fv(LLColor4::white.mV);  		gl_rect_2d(-half_width, half_height, half_width, -half_height, FALSE); -		glPopMatrix(); +		gGL.popMatrix();  		stop_glerror();  	} @@ -1378,8 +1383,7 @@ void render_ui_2d()  			gGL.setColorMask(true, false);  			LLUI::sDirtyRect = t_rect; -			 -	} +		}  		LLGLDisable cull(GL_CULL_FACE);  		LLGLDisable blend(GL_BLEND); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index ed18d67b62..900081b8c6 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.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;  			} @@ -1832,16 +1833,17 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)  			media_source->ignore_ssl_cert_errors(true);  		} -		// start by assuming the default CA file will be used -		std::string ca_path = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "lindenlab.pem" ); -	 -		// default turned off so pick up the user specified path -		if( ! gSavedSettings.getBOOL("BrowserUseDefaultCAFile")) -		{ -			ca_path = gSavedSettings.getString("BrowserCAFilePath"); -		} -		// set the path to the CA.pem file -		media_source->addCertificateFilePath( ca_path ); +		// NOTE: Removed as per STORM-927 - SSL handshake failed - setting local self-signed certs like this  +		//       seems to screw things up big time. For now, devs will need to add these certs locally and Qt will pick them up. +//		// start by assuming the default CA file will be used +//		std::string ca_path = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "lindenlab.pem" ); +//		// default turned off so pick up the user specified path +//		if( ! gSavedSettings.getBOOL("BrowserUseDefaultCAFile")) +//		{ +//			ca_path = gSavedSettings.getString("BrowserCAFilePath"); +//		} +//		// set the path to the CA.pem file +//		media_source->addCertificateFilePath( ca_path );  		media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 7cc04e0338..425fe4eafb 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2835,7 +2835,7 @@ class LLObjectMute : public view_listener_t  		}  		LLMute mute(id, name, type); -		if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName)) +		if (LLMuteList::getInstance()->isMuted(mute.mID))  		{  			LLMuteList::getInstance()->remove(mute);  		} @@ -4781,110 +4781,6 @@ class LLToolsSelectNextPart : public view_listener_t  	}  }; -// in order to link, all objects must have the same owner, and the -// agent must have the ability to modify all of the objects. However, -// we're not answering that question with this method. The question -// we're answering is: does the user have a reasonable expectation -// that a link operation should work? If so, return true, false -// otherwise. this allows the handle_link method to more finely check -// the selection and give an error message when the uer has a -// reasonable expectation for the link to work, but it will fail. -class LLToolsEnableLink : public view_listener_t -{ -	bool handleEvent(const LLSD& userdata) -	{ -		bool new_value = false; -		// check if there are at least 2 objects selected, and that the -		// user can modify at least one of the selected objects. - -		// in component mode, can't link -		if (!gSavedSettings.getBOOL("EditLinkedParts")) -		{ -			if(LLSelectMgr::getInstance()->selectGetAllRootsValid() && LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() >= 2) -			{ -				struct f : public LLSelectedObjectFunctor -				{ -					virtual bool apply(LLViewerObject* object) -					{ -						return object->permModify(); -					} -				} func; -				const bool firstonly = true; -				new_value = LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func, firstonly); -			} -		} -		return new_value; -	} -}; - -class LLToolsLink : public view_listener_t -{ -	bool handleEvent(const LLSD& userdata) -	{ -		if(!LLSelectMgr::getInstance()->selectGetAllRootsValid()) -		{ -			LLNotificationsUtil::add("UnableToLinkWhileDownloading"); -			return true; -		} - -		S32 object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount(); -		if (object_count > MAX_CHILDREN_PER_TASK + 1) -		{ -			LLSD args; -			args["COUNT"] = llformat("%d", object_count); -			int max = MAX_CHILDREN_PER_TASK+1; -			args["MAX"] = llformat("%d", max); -			LLNotificationsUtil::add("UnableToLinkObjects", args); -			return true; -		} - -		if(LLSelectMgr::getInstance()->getSelection()->getRootObjectCount() < 2) -		{ -			LLNotificationsUtil::add("CannotLinkIncompleteSet"); -			return true; -		} -		if(!LLSelectMgr::getInstance()->selectGetRootsModify()) -		{ -			LLNotificationsUtil::add("CannotLinkModify"); -			return true; -		} -		LLUUID owner_id; -		std::string owner_name; -		if(!LLSelectMgr::getInstance()->selectGetOwner(owner_id, owner_name)) -		{ -			// we don't actually care if you're the owner, but novices are -			// the most likely to be stumped by this one, so offer the -			// easiest and most likely solution. -			LLNotificationsUtil::add("CannotLinkDifferentOwners"); -			return true; -		} -		LLSelectMgr::getInstance()->sendLink(); -		return true; -	} -}; - -class LLToolsEnableUnlink : public view_listener_t -{ -	bool handleEvent(const LLSD& userdata) -	{ -		LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject(); -		bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() && -			first_editable_object && -			!first_editable_object->isAttachment(); -		return new_value; -	} -}; - -class LLToolsUnlink : public view_listener_t -{ -	bool handleEvent(const LLSD& userdata) -	{ -		LLSelectMgr::getInstance()->sendDelink(); -		return true; -	} -}; - -  class LLToolsStopAllAnimations : public view_listener_t  {  	bool handleEvent(const LLSD& userdata) @@ -7902,8 +7798,8 @@ void initialize_menus()  	view_listener_t::addMenu(new LLToolsSnapObjectXY(), "Tools.SnapObjectXY");  	view_listener_t::addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid");  	view_listener_t::addMenu(new LLToolsSelectNextPart(), "Tools.SelectNextPart"); -	view_listener_t::addMenu(new LLToolsLink(), "Tools.Link"); -	view_listener_t::addMenu(new LLToolsUnlink(), "Tools.Unlink"); +	commit.add("Tools.Link", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance())); +	commit.add("Tools.Unlink", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));  	view_listener_t::addMenu(new LLToolsStopAllAnimations(), "Tools.StopAllAnimations");  	view_listener_t::addMenu(new LLToolsReleaseKeys(), "Tools.ReleaseKeys");  	view_listener_t::addMenu(new LLToolsEnableReleaseKeys(), "Tools.EnableReleaseKeys");	 @@ -7916,8 +7812,8 @@ void initialize_menus()  	view_listener_t::addMenu(new LLToolsEnableToolNotPie(), "Tools.EnableToolNotPie");  	view_listener_t::addMenu(new LLToolsEnableSelectNextPart(), "Tools.EnableSelectNextPart"); -	view_listener_t::addMenu(new LLToolsEnableLink(), "Tools.EnableLink"); -	view_listener_t::addMenu(new LLToolsEnableUnlink(), "Tools.EnableUnlink"); +	enable.add("Tools.EnableLink", boost::bind(&LLSelectMgr::enableLinkObjects, LLSelectMgr::getInstance())); +	enable.add("Tools.EnableUnlink", boost::bind(&LLSelectMgr::enableUnlinkObjects, LLSelectMgr::getInstance()));  	view_listener_t::addMenu(new LLToolsEnableBuyOrTake(), "Tools.EnableBuyOrTake");  	enable.add("Tools.EnableTakeCopy", boost::bind(&enable_object_take_copy));  	enable.add("Tools.VisibleBuyObject", boost::bind(&tools_visible_buy_object)); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 6fc85a3944..103989ee80 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2721,6 +2721,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				LLSD args;  				args["slurl"] = location;  				args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + +				// Look for IRC-style emotes here so object name formatting is correct +				std::string prefix = message.substr(0, 4); +				if (prefix == "/me " || prefix == "/me'") +				{ +					chat.mChatStyle = CHAT_STYLE_IRC; +				} +  				LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);  			} diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 090d3cadd4..32cd8dbb39 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -477,7 +477,6 @@ void LLViewerObject::initVOClasses()  	llinfos << "Viewer Object size: " << sizeof(LLViewerObject) << llendl;  	LLVOGrass::initClass();  	LLVOWater::initClass(); -	LLVOSky::initClass();  	LLVOVolume::initClass();  } @@ -3009,6 +3008,8 @@ void LLViewerObject::setScale(const LLVector3 &scale, BOOL damped)  		{  			if (!mOnMap)  			{ +				llassert_always(LLWorld::getInstance()->getRegionFromHandle(getRegion()->getHandle())); +  				gObjectList.addToMap(this);  				mOnMap = TRUE;  			} @@ -3536,8 +3537,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  	{ @@ -3578,6 +3579,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())  	{ @@ -3586,15 +3588,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 5849ab4307..82bc164021 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -160,19 +160,13 @@ U64 LLViewerObjectList::getIndex(const U32 local_id,  	return (((U64)index) << 32) | (U64)local_id;  } -BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object) +BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject* objectp)  { -	if(object.getRegion()) +	if(objectp && objectp->getRegion())  	{ -		U32 local_id = object.mLocalID; -		LLHost region_host = object.getRegion()->getHost(); -		if(!region_host.isOk()) -		{ -			return FALSE ; -		} - -		U32 ip = region_host.getAddress(); -		U32 port = region_host.getPort(); +		U32 local_id = objectp->mLocalID;		 +		U32 ip = objectp->getRegion()->getHost().getAddress(); +		U32 port = objectp->getRegion()->getHost().getPort();  		U64 ipport = (((U64)ip) << 32) | (U64)port;  		U32 index = sIPAndPortToIndex[ipport]; @@ -187,7 +181,7 @@ BOOL LLViewerObjectList::removeFromLocalIDTable(const LLViewerObject &object)  		}  		// Found existing entry -		if (iter->second == object.getID()) +		if (iter->second == objectp->getID())  		{   // Full UUIDs match, so remove the entry  			sIndexAndLocalIDToUUID.erase(iter);  			return TRUE; @@ -477,7 +471,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,  			//			<< ", regionp " << (U32) regionp << ", object region " << (U32) objectp->getRegion()  			//			<< llendl;  			//} -			removeFromLocalIDTable(*objectp); +			removeFromLocalIDTable(objectp);  			setUUIDAndLocal(fullid,  							local_id,  							gMessageSystem->getSenderIP(), @@ -910,7 +904,7 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)  	//				<< objectp->getRegion()->getHost().getPort() << llendl;  	//}	 -	removeFromLocalIDTable(*objectp); +	removeFromLocalIDTable(objectp);  	if (objectp->onActiveList())  	{ @@ -1130,6 +1124,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" ); @@ -1148,6 +1158,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; @@ -1435,7 +1448,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 605bac8e89..8cff8e988a 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -87,6 +87,7 @@ public:  	void shiftObjects(const LLVector3 &offset); +	bool hasMapObjectInRegion(LLViewerRegion* regionp) ;  	void renderObjectsForMap(LLNetMap &netmap);  	void renderObjectBounds(const LLVector3 ¢er); @@ -160,7 +161,7 @@ public:  								const U32 ip,  								const U32 port); // Requires knowledge of message system info! -	static BOOL removeFromLocalIDTable(const LLViewerObject &object); +	static BOOL removeFromLocalIDTable(const LLViewerObject* objectp);  	// Used ONLY by the orphaned object code.  	static U64 getIndex(const U32 local_id, const U32 ip, const U32 port); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index c7649001c5..23b7b921b8 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -322,6 +322,12 @@ LLViewerRegion::~LLViewerRegion()  	std::for_each(mObjectPartition.begin(), mObjectPartition.end(), DeletePointer());  } +/*virtual*/  +const LLHost&	LLViewerRegion::getHost() const				 +{  +	return mHost;  +} +  void LLViewerRegion::loadObjectCache()  {  	if (mCacheLoaded) diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 7c6559203e..dd40b876cd 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -245,7 +245,7 @@ public:      LLEventPump& getCapAPI() { return mCapabilityListener.getCapAPI(); }      /// implements LLCapabilityProvider -	virtual LLHost	getHost() const				{ return mHost; } +	/*virtual*/ const LLHost& getHost() const;  	const U64 		&getHandle() const 			{ return mHandle; }  	LLSurface		&getLand() const			{ return *mLandp; } diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 0c05a301e6..cd16b15e3e 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1214,12 +1214,15 @@ void LLViewerFetchedTexture::cleanup()  void LLViewerFetchedTexture::setForSculpt()  { +	static const S32 MAX_INTERVAL = 8 ; //frames +  	mForSculpt = TRUE ;  	if(isForSculptOnly() && !getBoundRecently())  	{  		destroyGLTexture() ; //sculpt image does not need gl texture.  	}  	checkCachedRawSculptImage() ; +	setMaxVirtualSizeResetInterval(MAX_INTERVAL) ;  }  BOOL LLViewerFetchedTexture::isForSculptOnly() const diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c812fcf2da..0028ced6c8 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -296,13 +296,15 @@ private:  	line_list_t mLineList;  	LLColor4 mTextColor; -public: -	LLDebugText(LLViewerWindow* window) : mWindow(window) {} -	  	void addText(S32 x, S32 y, const std::string &text)   	{  		mLineList.push_back(Line(text, x, y));  	} +	 +	void clearText() { mLineList.clear(); } +	 +public: +	LLDebugText(LLViewerWindow* window) : mWindow(window) {}  	void update()  	{ @@ -323,6 +325,8 @@ public:  		U32 ypos = 64;  		const U32 y_inc = 20; +		clearText(); +		  		if (gSavedSettings.getBOOL("DebugShowTime"))  		{  			const U32 y_inc2 = 15; @@ -347,6 +351,14 @@ public:  			addText(xpos, ypos, llformat("Time: %d:%02d:%02d", hours,mins,secs)); ypos += y_inc;  		} +#if LL_WINDOWS +		if (gSavedSettings.getBOOL("DebugShowMemory")) +		{ +			addText(xpos, ypos, llformat("Memory: %d (KB)", LLMemory::getWorkingSetSize() / 1024));  +			ypos += y_inc; +		} +#endif +  		if (gDisplayCameraPos)  		{  			std::string camera_view_text; @@ -601,6 +613,50 @@ public:  				ypos += y_inc;  			}  		} +		 +		if (gSavedSettings.getBOOL("DebugShowTextureInfo")) +		{ +			LLViewerObject* objectp = NULL ; +			//objectp = = gAgentCamera.getFocusObject(); +			 +			LLSelectNode* nodep = LLSelectMgr::instance().getHoverNode(); +			if (nodep) +			{ +				objectp = nodep->getObject();			 +			} +			if (objectp && !objectp->isDead()) +			{ +				S32 num_faces = objectp->mDrawable->getNumFaces() ; +				 +				for(S32 i = 0 ; i < num_faces; i++) +				{ +					LLFace* facep = objectp->mDrawable->getFace(i) ; +					if(facep) +					{ +						//addText(xpos, ypos, llformat("ts_min: %.3f ts_max: %.3f tt_min: %.3f tt_max: %.3f", facep->mTexExtents[0].mV[0], facep->mTexExtents[1].mV[0], +						//		facep->mTexExtents[0].mV[1], facep->mTexExtents[1].mV[1])); +						//ypos += y_inc; +						 +						addText(xpos, ypos, llformat("v_size: %.3f:  p_size: %.3f", facep->getVirtualSize(), facep->getPixelArea())); +						ypos += y_inc; +						 +						//const LLTextureEntry *tep = facep->getTextureEntry(); +						//if(tep) +						//{ +						//	addText(xpos, ypos, llformat("scale_s: %.3f:  scale_t: %.3f", tep->mScaleS, tep->mScaleT)) ; +						//	ypos += y_inc; +						//} +						 +						LLViewerTexture* tex = facep->getTexture() ; +						if(tex) +						{ +							addText(xpos, ypos, llformat("ID: %s v_size: %.3f", tex->getID().asString().c_str(), tex->getMaxVirtualSize())); +							ypos += y_inc; +						} +					} +				} +			} +		}  	}  	void draw() @@ -1421,7 +1477,7 @@ LLViewerWindow::LLViewerWindow(  	{  		gSavedSettings.setBOOL("RenderVBOEnable", FALSE);  	} -	LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable")); +	LLVertexBuffer::initClass(gSavedSettings.getBOOL("RenderVBOEnable"), gSavedSettings.getBOOL("RenderVBOMappingDisable"));  	if (LLFeatureManager::getInstance()->isSafe()  		|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion()) @@ -3945,18 +4001,26 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = FALSE;  	} +	// if not showing ui, use full window to render world view +	updateWorldViewRect(!show_ui); +  	// Copy screen to a buffer  	// crop sides or top and bottom, if taking a snapshot of different aspect ratio  	// from window -	S32 snapshot_width = mWindowRectRaw.getWidth(); -	S32 snapshot_height =  mWindowRectRaw.getHeight(); +	LLRect window_rect = show_ui ? getWindowRectRaw() : getWorldViewRectRaw();  + +	S32 snapshot_width = window_rect.getWidth(); +	S32 snapshot_height = window_rect.getHeight();  	// SNAPSHOT -	S32 window_width = mWindowRectRaw.getWidth(); -	S32 window_height = mWindowRectRaw.getHeight();	 -	LLRect window_rect = mWindowRectRaw; -	BOOL use_fbo = FALSE; +	S32 window_width = snapshot_width; +	S32 window_height = snapshot_height; +	 +	if (show_ui) +	{ +		image_width = llmin(image_width, window_width); +		image_height = llmin(image_height, window_height); +	} -	LLRenderTarget target;  	F32 scale_factor = 1.0f ;  	if(!keep_window_aspect) //image cropping  	{		 @@ -3969,45 +4033,24 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	{  		if(image_width > window_width || image_height > window_height) //need to enlarge the scene  		{ -			if (!LLPipeline::sRenderDeferred && gGLManager.mHasFramebufferObject && !show_ui) -			{ -				GLint max_size = 0; -				glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE_EXT, &max_size); -		 -				if (image_width <= max_size && image_height <= max_size) //re-project the scene -				{ -					use_fbo = TRUE; -					 -					snapshot_width = image_width; -					snapshot_height = image_height; -					target.allocate(snapshot_width, snapshot_height, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, TRUE); -					window_width = snapshot_width; -					window_height = snapshot_height; -					scale_factor = 1.f; -					mWindowRectRaw.set(0, snapshot_height, snapshot_width, 0); -					target.bindTarget();			 -				} -			} - -			if(!use_fbo) //no re-projection, so tiling the scene -			{ -				F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; -				snapshot_width = (S32)(ratio * image_width) ; -				snapshot_height = (S32)(ratio * image_height) ; -				scale_factor = llmax(1.0f, 1.0f / ratio) ;	 -			} +			F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; +			snapshot_width = (S32)(ratio * image_width) ; +			snapshot_height = (S32)(ratio * image_height) ; +			scale_factor = llmax(1.0f, 1.0f / ratio) ;	  		} -		//else: keep the current scene scale, re-scale it if necessary after reading out.  	} -	// if not showing ui, use full window to render world view -	updateWorldViewRect(!show_ui); +	if (show_ui && scale_factor > 1.f) +	{ +		llwarns << "over scaling UI not supported." << llendl; +	}  	S32 buffer_x_offset = llfloor(((window_width - snapshot_width) * scale_factor) / 2.f);  	S32 buffer_y_offset = llfloor(((window_height - snapshot_height) * scale_factor) / 2.f);  	S32 image_buffer_x = llfloor(snapshot_width*scale_factor) ;  	S32 image_buffer_y = llfloor(snapshot_height *scale_factor) ; +  	if(image_buffer_x > max_size || image_buffer_y > max_size) //boundary check to avoid memory overflow  	{  		scale_factor *= llmin((F32)max_size / image_buffer_x, (F32)max_size / image_buffer_y) ; @@ -4016,7 +4059,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	if(image_buffer_x > 0 && image_buffer_y > 0)  	{ -	raw->resize(image_buffer_x, image_buffer_y, 3); +		raw->resize(image_buffer_x, image_buffer_y, 3);  	}  	else  	{ @@ -4028,12 +4071,13 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	BOOL high_res = scale_factor >= 2.f; // Font scaling is slow, only do so if rez is much higher -	if (high_res) +	if (high_res && show_ui)  	{ -		send_agent_pause(); +		llwarns << "High res UI snapshot not supported. " << llendl; +		/*send_agent_pause();  		//rescale fonts  		initFonts(scale_factor); -		LLHUDObject::reshapeAll(); +		LLHUDObject::reshapeAll();*/  	}  	S32 output_buffer_offset_y = 0; @@ -4129,12 +4173,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		output_buffer_offset_y += subimage_y_offset;  	} -	if (use_fbo) -	{ -		mWindowRectRaw = window_rect; -		target.flush(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -	}  	gDisplaySwapBuffers = FALSE;  	gDepthDirty = TRUE; @@ -4149,11 +4187,11 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = TRUE;  	} -	if (high_res) +	/*if (high_res)  	{  		initFonts(1.f);  		LLHUDObject::reshapeAll(); -	} +	}*/  	// Pre-pad image to number of pixels such that the line length is a multiple of 4 bytes (for BMP encoding)  	// Note: this formula depends on the number of components being 3.  Not obvious, but it's correct.	 diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index fd89044995..2e376e8568 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -599,16 +599,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; diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index c26008d640..a933500706 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -225,8 +225,9 @@ BOOL LLVOCacheEntry::writeToFile(LLAPRFile* apr_file) const  // Format string used to construct filename for the object cache  static const char OBJECT_CACHE_FILENAME[] = "objects_%d_%d.slc"; -// Throw out 1/20 (5%) of our cache entries if we run out of room. -const U32 ENTRIES_PURGE_FACTOR = 20; +const U32 MAX_NUM_OBJECT_ENTRIES = 128 ; +const U32 MIN_ENTRIES_TO_PURGE = 16 ; +const U32 INVALID_TIME = 0 ;  const char* object_cache_dirname = "objectcache";  const char* header_filename = "object.cache"; @@ -261,6 +262,7 @@ void LLVOCache::destroyClass()  LLVOCache::LLVOCache():  	mInitialized(FALSE),  	mReadOnly(TRUE), +	mNumEntries(0),  	mCacheSize(1)  {  	mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled"); @@ -298,17 +300,16 @@ void LLVOCache::initCache(ELLPath location, U32 size, U32 cache_version)  		llwarns << "Cache already initialized." << llendl;  		return ;  	} +	mInitialized = TRUE ;  	setDirNames(location);  	if (!mReadOnly)  	{  		LLFile::mkdir(mObjectCacheDirName);  	} - -	mCacheSize = size; - -	readCacheHeader(); -	mInitialized = TRUE ; +	mCacheSize = llclamp(size, MIN_ENTRIES_TO_PURGE, MAX_NUM_OBJECT_ENTRIES); +	mMetaInfo.mVersion = cache_version; +	readCacheHeader();	  	if(mMetaInfo.mVersion != cache_version)   	{ @@ -332,6 +333,8 @@ void LLVOCache::removeCache(ELLPath location)  		return ;  	} +	llinfos << "about to remove the object cache due to settings." << llendl ; +  	std::string delem = gDirUtilp->getDirDelimiter();  	std::string mask = delem + "*";  	std::string cache_dir = gDirUtilp->getExpandedFilename(location, object_cache_dirname); @@ -352,6 +355,8 @@ void LLVOCache::removeCache()  		return ;  	} +	llinfos << "about to remove the object cache due to some error." << llendl ; +  	std::string delem = gDirUtilp->getDirDelimiter();  	std::string mask = delem + "*";  	llinfos << "Removing cache at " << mObjectCacheDirName << llendl; @@ -361,62 +366,80 @@ void LLVOCache::removeCache()  	writeCacheHeader();  } -void LLVOCache::clearCacheInMemory() -{ -	std::for_each(mHandleEntryMap.begin(), mHandleEntryMap.end(), DeletePairedPointer()); -	mHandleEntryMap.clear(); -} - -void LLVOCache::getObjectCacheFilename(U64 handle, std::string& filename)  +void LLVOCache::removeEntry(HeaderEntryInfo* entry)   { -	U32 region_x, region_y; +	llassert_always(mInitialized) ; +	if(mReadOnly) +	{ +		return ; +	} +	if(!entry) +	{ +		return ; +	} -	grid_from_region_handle(handle, ®ion_x, ®ion_y); -	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, object_cache_dirname, -			   llformat(OBJECT_CACHE_FILENAME, region_x, region_y)); +	header_entry_queue_t::iterator iter = mHeaderEntryQueue.find(entry) ; +	if(iter != mHeaderEntryQueue.end()) +	{		 +		mHandleEntryMap.erase(entry->mHandle) ;		 +		mHeaderEntryQueue.erase(iter) ; +		removeFromCache(entry) ; +		delete entry ; -	return ; +		mNumEntries = mHandleEntryMap.size() ; +	}  } -void LLVOCache::removeFromCache(U64 handle) +void LLVOCache::removeEntry(U64 handle)   { -	if(mReadOnly) +	handle_entry_map_t::iterator iter = mHandleEntryMap.find(handle) ; +	if(iter == mHandleEntryMap.end()) //no cache  	{ -		llwarns << "Not removing cache for handle " << handle << ": Cache is currently in read-only mode." << llendl;  		return ;  	} - -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile::remove(filename, mLocalAPRFilePoolp);	 +	HeaderEntryInfo* entry = iter->second ; +	removeEntry(entry) ;  } -BOOL LLVOCache::checkRead(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error) +void LLVOCache::clearCacheInMemory()  { -	if(!check_read(apr_file, src, n_bytes)) +	if(!mHeaderEntryQueue.empty())   	{ -		if (remove_cache_on_error) +		for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin(); iter != mHeaderEntryQueue.end(); ++iter)  		{ -			removeCache() ; +			delete *iter ;  		} -		return FALSE ; +		mHeaderEntryQueue.clear(); +		mHandleEntryMap.clear(); +		mNumEntries = 0 ;  	} -	return TRUE ;  } -BOOL LLVOCache::checkWrite(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error)  +void LLVOCache::getObjectCacheFilename(U64 handle, std::string& filename)  +{ +	U32 region_x, region_y; + +	grid_from_region_handle(handle, ®ion_x, ®ion_y); +	filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, object_cache_dirname, +			   llformat(OBJECT_CACHE_FILENAME, region_x, region_y)); + +	return ; +} + +void LLVOCache::removeFromCache(HeaderEntryInfo* entry)  { -	if(!check_write(apr_file, src, n_bytes)) +	if(mReadOnly)  	{ -		if (remove_cache_on_error) -		{ -			removeCache() ; -		} -		return FALSE ; +		llwarns << "Not removing cache for handle " << entry->mHandle << ": Cache is currently in read-only mode." << llendl; +		return ;  	} -	return TRUE ; +	std::string filename; +	getObjectCacheFilename(entry->mHandle, filename); +	LLAPRFile::remove(filename, mLocalAPRFilePoolp); +	entry->mTime = INVALID_TIME ; +	updateEntry(entry) ; //update the head file.  }  void LLVOCache::readCacheHeader() @@ -430,45 +453,76 @@ void LLVOCache::readCacheHeader()  	//clear stale info.  	clearCacheInMemory();	 +	bool success = true ;  	if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))  	{ -		LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_READ|APR_FOPEN_BINARY, mLocalAPRFilePoolp);		 +		LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);		  		//read the meta element -		bool remove_cache_on_error = false; -		if(!checkRead(apr_file, &mMetaInfo, sizeof(HeaderMetaInfo), remove_cache_on_error)) -		{ -			llwarns << "Error reading meta information from cache header." << llendl; -			delete apr_file; -			return; -		} - -		HeaderEntryInfo* entry ; -		for(U32 entry_index = 0; entry_index < mCacheSize; ++entry_index) +		success = check_read(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ; +		 +		if(success)  		{ -			entry = new HeaderEntryInfo() ; -			if(!checkRead(apr_file, entry, sizeof(HeaderEntryInfo), remove_cache_on_error)) +			HeaderEntryInfo* entry = NULL ; +			mNumEntries = 0 ; +			U32 num_read = 0 ; +			while(num_read++ < MAX_NUM_OBJECT_ENTRIES)  			{ -				llwarns << "Error reading cache header entry. (entry_index=" << entry_index << ")" << llendl; -				delete entry ;			 -				break; +				if(!entry) +				{ +					entry = new HeaderEntryInfo() ; +				} +				success = check_read(&apr_file, entry, sizeof(HeaderEntryInfo)); +								 +				if(!success) //failed +				{ +					llwarns << "Error reading cache header entry. (entry_index=" << mNumEntries << ")" << llendl; +					delete entry ; +					entry = NULL ; +					break ; +				} +				else if(entry->mTime == INVALID_TIME) +				{ +					continue ; //an empty entry +				} + +				entry->mIndex = mNumEntries++ ; +				mHeaderEntryQueue.insert(entry) ; +				mHandleEntryMap[entry->mHandle] = entry ; +				entry = NULL ;  			} -			else if(!entry->mTime) //end of the cache. +			if(entry)  			{  				delete entry ; -				break;  			} - -			entry->mIndex = entry_index; -			mHandleEntryMap[entry->mHandle] = entry;  		} -		delete apr_file ; +		//--------- +		//debug code +		//---------- +		//std::string name ; +		//for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; success && iter != mHeaderEntryQueue.end(); ++iter) +		//{ +		//	getObjectCacheFilename((*iter)->mHandle, name) ; +		//	llinfos << name << llendl ; +		//} +		//-----------  	}  	else  	{  		writeCacheHeader() ;  	} + +	if(!success) +	{ +		removeCache() ; //failed to read header, clear the cache +	} +	else if(mNumEntries >= mCacheSize) +	{ +		purgeEntries(mCacheSize) ; +	} + +	return ;  }  void LLVOCache::writeCacheHeader() @@ -485,60 +539,50 @@ void LLVOCache::writeCacheHeader()  		return;  	} -	LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_CREATE|APR_FOPEN_WRITE|APR_FOPEN_BINARY|APR_FOPEN_TRUNCATE, mLocalAPRFilePoolp); - -	//write the meta element -	if(!checkWrite(apr_file, &mMetaInfo, sizeof(HeaderMetaInfo))) +	bool success = true ;  	{ -		llwarns << "Error writing meta information to cache header." << llendl; -		delete apr_file; -		return; -	} +		LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); -	U32 entry_index = 0; -	handle_entry_map_t::iterator iter_end = mHandleEntryMap.end(); -	for(handle_entry_map_t::iterator iter = mHandleEntryMap.begin(); -		iter != iter_end; -		++iter) -	{ -		HeaderEntryInfo* entry = iter->second; -		entry->mIndex = entry_index++; -		if(!checkWrite(apr_file, (void*)entry, sizeof(HeaderEntryInfo))) +		//write the meta element +		success = check_write(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ; + + +		mNumEntries = 0 ;	 +		for(header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; success && iter != mHeaderEntryQueue.end(); ++iter)  		{ -			llwarns << "Failed to write cache header for entry " << entry->mHandle << " (entry_index = " << entry_index << ")" << llendl; -			delete apr_file; -			return; +			(*iter)->mIndex = mNumEntries++ ; +			success = check_write(&apr_file, (void*)*iter, sizeof(HeaderEntryInfo));  		} -	} - -	// Why do we need to fill the cache header with default entries?  DK 2010-12-14 -	// It looks like we currently rely on the file being pre-allocated so we can seek during updateEntry(). -	if(entry_index < mCacheSize) -	{ -		HeaderEntryInfo* entry = new HeaderEntryInfo() ; -		for(; entry_index < mCacheSize; ++entry_index) +	 +		mNumEntries = mHeaderEntryQueue.size() ; +		if(success && mNumEntries < MAX_NUM_OBJECT_ENTRIES)  		{ -			//fill the cache with the default entry. -			if(!checkWrite(apr_file, entry, sizeof(HeaderEntryInfo))) +			HeaderEntryInfo* entry = new HeaderEntryInfo() ; +			entry->mTime = INVALID_TIME ; +			for(S32 i = mNumEntries ; success && i < MAX_NUM_OBJECT_ENTRIES ; i++)  			{ -				llwarns << "Failed to fill cache header with default entries (entry_index = " << entry_index << ").  Switching to read-only mode." << llendl; -				mReadOnly = TRUE ; //disable the cache. -				break; +				//fill the cache with the default entry. +				success = check_write(&apr_file, entry, sizeof(HeaderEntryInfo)) ;			 +  			} +			delete entry ;  		} -		delete entry ;  	} -	delete apr_file ; + +	if(!success) +	{ +		clearCacheInMemory() ; +		mReadOnly = TRUE ; //disable the cache. +	} +	return ;  }  BOOL LLVOCache::updateEntry(const HeaderEntryInfo* entry)  { -	LLAPRFile* apr_file = new LLAPRFile(mHeaderFileName, APR_FOPEN_WRITE|APR_FOPEN_BINARY, mLocalAPRFilePoolp); -	apr_file->seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ; +	LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); +	apr_file.seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ; -	BOOL result = checkWrite(apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ; -	delete apr_file; -	return result; +	return check_write(&apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ;  }  void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::vocache_entry_map_t& cache_entry_map)  @@ -557,76 +601,66 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca  		return ;  	} -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile* apr_file = new LLAPRFile(filename, APR_FOPEN_READ|APR_FOPEN_BINARY, mLocalAPRFilePoolp); - -	LLUUID cache_id ; -	if(!checkRead(apr_file, cache_id.mData, UUID_BYTES)) -	{ -		llwarns << "Error reading cache_id from " << filename << llendl; -		delete apr_file; -		return ; -	} -	if(cache_id != id) +	bool success = true ;  	{ -		llwarns << "Cache ID (" << cache_id << ") doesn't match id for this region (" << id << "), discarding.  handle = " << handle << llendl; -		delete apr_file ; -		return ; -	} +		std::string filename; +		getObjectCacheFilename(handle, filename); +		LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp); +	 +		LLUUID cache_id ; +		success = check_read(&apr_file, cache_id.mData, UUID_BYTES) ; +	 +		if(success) +		{		 +			if(cache_id != id) +			{ +				llinfos << "Cache ID doesn't match for this region, discarding"<< llendl; +				success = false ; +			} -	S32 num_entries; -	if(!checkRead(apr_file, &num_entries, sizeof(S32))) -	{ -		llwarns << "Error reading num_entries from " << filename << llendl; -		delete apr_file; -		return ; +			if(success) +			{ +				S32 num_entries; +				success = check_read(&apr_file, &num_entries, sizeof(S32)) ; +	 +				for (S32 i = 0; success && i < num_entries; i++) +				{ +					LLVOCacheEntry* entry = new LLVOCacheEntry(&apr_file); +					if (!entry->getLocalID()) +					{ +						llwarns << "Aborting cache file load for " << filename << ", cache file corruption!" << llendl; +						delete entry ; +						success = false ; +					} +					cache_entry_map[entry->getLocalID()] = entry; +				} +			} +		}		  	} -	for (S32 i = 0; i < num_entries; i++) +	if(!success)  	{ -		LLVOCacheEntry* entry = new LLVOCacheEntry(apr_file); -		if (!entry->getLocalID()) +		if(cache_entry_map.empty())  		{ -			llwarns << "Aborting cache file load for " << filename << ", cache file corruption! (entry number = " << i << ")" << llendl; -			delete entry ; -			break; +			removeEntry(iter->second) ;  		} -		cache_entry_map[entry->getLocalID()] = entry;  	} -	delete apr_file ;  	return ;  } -void LLVOCache::purgeEntries() +void LLVOCache::purgeEntries(U32 size)  { -	U32 limit = mCacheSize - (mCacheSize / ENTRIES_PURGE_FACTOR); -	limit = llclamp(limit, (U32)1, mCacheSize); -	// Construct a vector of entries out of the map so we can sort by time. -	std::vector<HeaderEntryInfo*> header_vector; -	handle_entry_map_t::iterator iter_end = mHandleEntryMap.end(); -	for (handle_entry_map_t::iterator iter = mHandleEntryMap.begin(); -		iter != iter_end; -		++iter) -	{ -		header_vector.push_back(iter->second); -	} -	// Sort by time, oldest first. -	std::sort(header_vector.begin(), header_vector.end(), header_entry_less()); -	while(header_vector.size() > limit) -	{ -		HeaderEntryInfo* entry = header_vector.front(); -		 -		removeFromCache(entry->mHandle); +	while(mHeaderEntryQueue.size() > size) +	{ +		header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ; +		HeaderEntryInfo* entry = *iter ;			  		mHandleEntryMap.erase(entry->mHandle); -		header_vector.erase(header_vector.begin()); +		mHeaderEntryQueue.erase(iter) ; +		removeFromCache(entry) ;  		delete entry;  	} - -	writeCacheHeader() ; -	// *TODO: Verify that we can avoid re-reading the cache header.  DK 2010-12-14 -	readCacheHeader() ; +	mNumEntries = mHandleEntryMap.size() ;  }  void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry::vocache_entry_map_t& cache_entry_map, BOOL dirty_cache)  @@ -642,31 +676,34 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:  	{  		llwarns << "Not writing cache for handle " << handle << "): Cache is currently in read-only mode." << llendl;  		return ; -	} +	}	 -	U32 num_handle_entries = mHandleEntryMap.size(); -	  	HeaderEntryInfo* entry;  	handle_entry_map_t::iterator iter = mHandleEntryMap.find(handle) ;  	if(iter == mHandleEntryMap.end()) //new entry -	{ -		if(num_handle_entries >= mCacheSize) +	{				 +		if(mNumEntries >= mCacheSize - 1)  		{ -			purgeEntries() ; -			num_handle_entries = mHandleEntryMap.size(); +			purgeEntries(mCacheSize - 1) ;  		} -		 +  		entry = new HeaderEntryInfo();  		entry->mHandle = handle ;  		entry->mTime = time(NULL) ; -		entry->mIndex = num_handle_entries++; +		entry->mIndex = mNumEntries++; +		mHeaderEntryQueue.insert(entry) ;  		mHandleEntryMap[handle] = entry ;  	}  	else  	{  		// Update access time. -		entry = iter->second ; +		entry = iter->second ;		 + +		//resort +		mHeaderEntryQueue.erase(entry) ; +		  		entry->mTime = time(NULL) ; +		mHeaderEntryQueue.insert(entry) ;  	}  	//update cache header @@ -683,37 +720,33 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:  	}  	//write to cache file -	std::string filename; -	getObjectCacheFilename(handle, filename); -	LLAPRFile* apr_file = new LLAPRFile(filename, APR_FOPEN_CREATE|APR_FOPEN_WRITE|APR_FOPEN_BINARY|APR_FOPEN_TRUNCATE, mLocalAPRFilePoolp); -	 -	if(!checkWrite(apr_file, (void*)id.mData, UUID_BYTES)) +	bool success = true ;  	{ -		llwarns << "Error writing id to " << filename << llendl; -		delete apr_file; -		return ; -	} +		std::string filename; +		getObjectCacheFilename(handle, filename); +		LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp); +	 +		success = check_write(&apr_file, (void*)id.mData, UUID_BYTES) ; -	S32 num_entries = cache_entry_map.size() ; -	if(!checkWrite(apr_file, &num_entries, sizeof(S32))) -	{ -		llwarns << "Error writing num_entries to " << filename << llendl; -		delete apr_file; -		return ; +	 +		if(success) +		{ +			S32 num_entries = cache_entry_map.size() ; +			success = check_write(&apr_file, &num_entries, sizeof(S32)); +	 +			for (LLVOCacheEntry::vocache_entry_map_t::const_iterator iter = cache_entry_map.begin(); success && iter != cache_entry_map.end(); ++iter) +			{ +				success = iter->second->writeToFile(&apr_file) ; +			} +		}  	} -	for (LLVOCacheEntry::vocache_entry_map_t::const_iterator iter = cache_entry_map.begin(); iter != cache_entry_map.end(); ++iter) +	if(!success)  	{ -		if(!iter->second->writeToFile(apr_file)) -		{ -			llwarns << "Aborting cache file write for " << filename << ", error writing to file!" << llendl; -			//failed -			removeCache() ; -			break; -		} +		removeEntry(entry) ; +  	} -	delete apr_file ;  	return ;  } diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index e103007979..14e3b4c793 100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -95,13 +95,15 @@ private:  	{  		bool operator()(const HeaderEntryInfo* lhs, const HeaderEntryInfo* rhs) const  		{ -			if (lhs->mTime == rhs->mTime) +			if(lhs->mTime == rhs->mTime)   			{ -				return lhs->mHandle < rhs->mHandle; +				return lhs < rhs ;  			} -			return lhs->mTime < rhs->mTime; // older entry in front +			 +			return lhs->mTime < rhs->mTime ; // older entry in front of queue (set)  		}  	}; +	typedef std::set<HeaderEntryInfo*, header_entry_less> header_entry_queue_t;  	typedef std::map<U64, HeaderEntryInfo*> handle_entry_map_t;  private:  	LLVOCache() ; @@ -114,6 +116,7 @@ public:  	void readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::vocache_entry_map_t& cache_entry_map) ;  	void writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry::vocache_entry_map_t& cache_entry_map, BOOL dirty_cache) ; +	void removeEntry(U64 handle) ;  	void setReadOnly(BOOL read_only) {mReadOnly = read_only;}  @@ -121,15 +124,14 @@ private:  	void setDirNames(ELLPath location);	  	// determine the cache filename for the region from the region handle	  	void getObjectCacheFilename(U64 handle, std::string& filename); -	void removeFromCache(U64 handle); +	void removeFromCache(HeaderEntryInfo* entry);  	void readCacheHeader();  	void writeCacheHeader();  	void clearCacheInMemory();  	void removeCache() ; -	void purgeEntries(); +	void removeEntry(HeaderEntryInfo* entry) ; +	void purgeEntries(U32 size);  	BOOL updateEntry(const HeaderEntryInfo* entry); -	BOOL checkRead(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error = true) ; -	BOOL checkWrite(LLAPRFile* apr_file, void* src, S32 n_bytes, bool remove_cache_on_error = true) ;  private:  	BOOL                 mEnabled; @@ -137,9 +139,11 @@ private:  	BOOL                 mReadOnly ;  	HeaderMetaInfo       mMetaInfo;  	U32                  mCacheSize; +	U32                  mNumEntries;  	std::string          mHeaderFileName ;  	std::string          mObjectCacheDirName;  	LLVolatileAPRPool*   mLocalAPRFilePoolp ; 	 +	header_entry_queue_t mHeaderEntryQueue;  	handle_entry_map_t   mHandleEntryMap;	  	static LLVOCache* sInstance ; diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index b692093fb9..a71539266d 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -853,7 +853,7 @@ void LLVoiceChannelP2P::activate()  		}  		// Add the party to the list of people with which we've recently interacted. -		LLRecentPeople::instance().add(mOtherUserID); +		addToTheRecentPeopleList();  		//Default mic is ON on initiating/joining P2P calls  		if (!LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle()) @@ -938,3 +938,25 @@ void LLVoiceChannelP2P::setState(EState state)  	LLVoiceChannel::setState(state);  } + +void LLVoiceChannelP2P::addToTheRecentPeopleList() +{ +	bool avaline_call = LLIMModel::getInstance()->findIMSession(mSessionID)->isAvalineSessionType(); +	 +	if (avaline_call) +	{ +		LLSD call_data; +		std::string call_number = LLVoiceChannel::getSessionName(); +		 +		call_data["avaline_call"]	= true; +		call_data["session_id"]		= mSessionID; +		call_data["call_number"]	= call_number; +		call_data["date"]			= LLDate::now(); +		 +		LLRecentPeople::instance().add(mOtherUserID, call_data); +	} +	else +	{ +		LLRecentPeople::instance().add(mOtherUserID); +	} +} diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h index 7cef3c13d1..b8597ee5cb 100644 --- a/indra/newview/llvoicechannel.h +++ b/indra/newview/llvoicechannel.h @@ -191,6 +191,13 @@ protected:  	virtual void setState(EState state);  private: + +	/** +	* Add the caller to the list of people with which we've recently interacted +	* +	**/ +	void addToTheRecentPeopleList(); +  	std::string	mSessionHandle;  	LLUUID		mOtherUserID;  	BOOL		mReceivedCall; 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 761e12020b..a207d3e050 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -388,10 +388,12 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  				// There's something bogus in the data that we're unpacking.  				dp->dumpBufferToLog();  				llwarns << "Flushing cache files" << llendl; -				std::string mask; -				mask = gDirUtilp->getDirDelimiter() + "*.slc"; -				gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,""), mask); -// 				llerrs << "Bogus TE data in " << getID() << ", crashing!" << llendl; + +				if(LLVOCache::hasInstance() && getRegion()) +				{ +					LLVOCache::getInstance()->removeEntry(getRegion()->getHandle()) ; +				} +				  				llwarns << "Bogus TE data in " << getID() << llendl;  			}  			else  @@ -667,11 +669,32 @@ void LLVOVolume::updateTextures()  	}  } +BOOL LLVOVolume::isVisible() const  +{ +	if(mDrawable.notNull() && mDrawable->isVisible()) +	{ +		return TRUE ; +	} + +	if(isAttachment()) +	{ +		LLViewerObject* objp = (LLViewerObject*)getParent() ; +		while(objp && !objp->isAvatar()) +		{ +			objp = (LLViewerObject*)objp->getParent() ; +		} + +		return objp && objp->mDrawable.notNull() && objp->mDrawable->isVisible() ; +	} + +	return FALSE ; +} +  void LLVOVolume::updateTextureVirtualSize()  {  	// Update the pixel area of all faces -	if(mDrawable.isNull() || !mDrawable->isVisible()) +	if(!isVisible())  	{  		return ;  	} @@ -2142,7 +2165,7 @@ void LLVOVolume::removeMediaImpl(S32 texture_index)  	}  	//make the face referencing to mMediaImplList[texture_index] to point back to the old texture. -	if(mDrawable) +	if(mDrawable && texture_index < mDrawable->getNumFaces())  	{  		LLFace* facep = mDrawable->getFace(texture_index) ;  		if(facep) @@ -2738,14 +2761,7 @@ void LLVOVolume::updateRadius()  BOOL LLVOVolume::isAttachment() const  { -	if (mState == 0) -	{ -		return FALSE; -	} -	else -	{ -		return TRUE; -	} +	return mState != 0 ;  }  BOOL LLVOVolume::isHUDAttachment() const diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 1e9b9737b1..8b68e7c78a 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -102,6 +102,7 @@ public:  				void	animateTextures();  	/*virtual*/ BOOL	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time); +	            BOOL    isVisible() const ;  	/*virtual*/ BOOL	isActive() const;  	/*virtual*/ BOOL	isAttachment() const;  	/*virtual*/ BOOL	isRootEdit() const; // overridden for sake of attachments treating themselves as a root object diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp index a49dc1b59d..66a6ab5e94 100644 --- a/indra/newview/llwearableitemslist.cpp +++ b/indra/newview/llwearableitemslist.cpp @@ -287,6 +287,9 @@ BOOL LLPanelBodyPartsListItem::postBuild()  	addWidgetToRightSide("btn_lock");  	addWidgetToRightSide("btn_edit_panel"); +	setWidgetsVisible(false); +	reshapeWidgets(); +  	return TRUE;  } diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 399442e5c4..481148ba4e 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)) ;  } @@ -1472,6 +1474,42 @@ void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positi  			}  		}  	} +	// retrieve the list of close avatars from viewer objects as well +	// for when we are above 1000m, only do this when we are retrieving +	// uuid's too as there could be duplicates +	if(avatar_ids != NULL) +	{ +		for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin(); +			iter != LLCharacter::sInstances.end(); ++iter) +		{ +			LLVOAvatar* pVOAvatar = (LLVOAvatar*) *iter; +			if(pVOAvatar->isDead() || pVOAvatar->isSelf()) +				continue; +			LLUUID uuid = pVOAvatar->getID(); +			if(uuid.isNull()) +				continue; +			LLVector3d pos_global = pVOAvatar->getPositionGlobal(); +			if(dist_vec(pos_global, relative_to) <= radius) +			{ +				bool found = false; +				uuid_vec_t::iterator sel_iter = avatar_ids->begin(); +				for (; sel_iter != avatar_ids->end(); sel_iter++) +				{ +					if(*sel_iter == uuid) +					{ +						found = true; +						break; +					} +				} +				if(!found) +				{ +					if(positions != NULL) +						positions->push_back(pos_global); +					avatar_ids->push_back(uuid); +				} +			} +		} +	}  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 15477e0a80..13e537fae5 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1967,12 +1967,12 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)  	if(drawablep && !drawablep->isDead())  	{ -	if (drawablep->isSpatialBridge()) -	{ +		if (drawablep->isSpatialBridge()) +		{  			const LLDrawable* root = ((LLSpatialBridge*) drawablep)->mDrawable;  			llassert(root); // trying to catch a bad assumption  			if (root && //  // this test may not be needed, see above -			    root->getVObj()->isAttachment()) +					root->getVObj()->isAttachment())  			{  				LLDrawable* rootparent = root->getParent();  				if (rootparent) // this IS sometimes NULL @@ -1980,24 +1980,24 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)  					LLViewerObject *vobj = rootparent->getVObj();  					llassert(vobj); // trying to catch a bad assumption  					if (vobj) // this test may not be needed, see above -		{ +					{  						const LLVOAvatar* av = vobj->asAvatar(); -			if (av && av->isImpostor()) -			{ -				return; -			} -		} +						if (av && av->isImpostor()) +						{ +							return; +						} +					}  				}  			} -		sCull->pushBridge((LLSpatialBridge*) drawablep); -	} -	else -	{ -		sCull->pushDrawable(drawablep); -	} +			sCull->pushBridge((LLSpatialBridge*) drawablep); +		} +		else +		{ +			sCull->pushDrawable(drawablep); +		} -	drawablep->setVisible(camera); -} +		drawablep->setVisible(camera); +	}  }  void LLPipeline::markMoved(LLDrawable *drawablep, BOOL damped_motion) @@ -5313,7 +5313,25 @@ void LLPipeline::setUseVBO(BOOL use_vbo)  		}  		resetVertexBuffers(); -		LLVertexBuffer::initClass(use_vbo); +		LLVertexBuffer::initClass(use_vbo, gSavedSettings.getBOOL("RenderVBOMappingDisable")); +	} +} + +void LLPipeline::setDisableVBOMapping(BOOL no_vbo_mapping) +{ +	if (LLVertexBuffer::sEnableVBOs && no_vbo_mapping != LLVertexBuffer::sDisableVBOMapping) +	{ +		if (no_vbo_mapping) +		{ +			llinfos << "Disabling VBO glMapBufferARB." << llendl; +		} +		else +		{  +			llinfos << "Enabling VBO glMapBufferARB." << llendl; +		} +		 +		resetVertexBuffers(); +		LLVertexBuffer::initClass(true, no_vbo_mapping);  	}  } @@ -5432,7 +5450,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  	gGL.setColorMask(true, true);  	glClearColor(0,0,0,0); -	if (for_snapshot) +	/*if (for_snapshot)  	{  		gGL.getTexUnit(0)->bind(&mGlow[1]);  		{ @@ -5443,14 +5461,21 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  			// If the snapshot is constructed from tiles, calculate which  			// tile we're in. -			const S32 num_horizontal_tiles = llceil(zoom_factor); -			const LLVector2 tile(subfield % num_horizontal_tiles, -								 (S32)(subfield / num_horizontal_tiles)); -			llassert(zoom_factor > 0.0); // Non-zero, non-negative. -			const F32 tile_size = 1.0/zoom_factor; -			 -			tc1 = tile*tile_size; // Top left texture coordinates -			tc2 = (tile+LLVector2(1,1))*tile_size; // Bottom right texture coordinates + +			//from LLViewerCamera::setPerpsective +			if (zoom_factor > 1.f) +			{ +				int pos_y = subfield / llceil(zoom_factor); +				int pos_x = subfield - (pos_y*llceil(zoom_factor)); +				F32 size = 1.f/zoom_factor; + +				tc1.set(pos_x*size, pos_y*size); +				tc2 = tc1 + LLVector2(size,size); +			} +			else +			{ +				tc2.set(1,1); +			}  			LLGLEnable blend(GL_BLEND);  			gGL.setSceneBlendType(LLRender::BT_ADD); @@ -5483,7 +5508,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		glPopMatrix();  		return; -	} +	}*/  	{  		{ diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index cef3d87f36..e99b0d71e3 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -111,6 +111,7 @@ public:  	void resetVertexBuffers(LLDrawable* drawable);  	void setUseVBO(BOOL use_vbo); +	void setDisableVBOMapping(BOOL no_vbo_mapping);  	void generateImpostor(LLVOAvatar* avatar);  	void bindScreenToTexture();  	void renderBloom(BOOL for_snapshot, F32 zoom_factor = 1.f, int subfield = 0); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 2c00120177..7b3cc7bdfa 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -107,6 +107,7 @@ with the same filename but different name    <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> +  <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="Container" file_name="containers/Container.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index a096a87928..e80d187335 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -87,15 +87,9 @@ Gå til 'Verden' > 'Om land' eller vælg en anden parcel  			<text name="Owner:">  				Ejer:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Gruppe:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Vælg" name="Set..."/>  			<check_box label="Tillad dedikering til gruppe" name="check deed" tool_tip="En gruppe administrator kan dedikere denne jord til gruppen, så det vil blive støttet af gruppen's jord tildeling."/>  			<button label="Dedikér" name="Deed..." tool_tip="Du kan kun dedikere jord, hvis du er en administrator i den valgte gruppe."/> diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml index fa36fab762..59dcc87140 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Skaber:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Ejer:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Erhvervet: diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 781adcd50b..9e673d0d5b 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -167,15 +167,9 @@  			<text name="Creator:">  				Skaber:  			</text> -			<text name="Creator Name"> -				Mrs. Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Ejer:  			</text> -			<text name="Owner Name"> -				Mrs. Erica "Moose" Linden (erica.linden) -			</text>  			<text name="Group:">  				Gruppe:  			</text> 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/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml index f581210e1b..dc1ed562eb 100644 --- a/indra/newview/skins/default/xui/da/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml @@ -10,8 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name_small" value="Grumpity ProductEngine med et langt navn"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_details">  		Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse  	</text> 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_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml index 80b20f15e9..14fd48ba2f 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml @@ -26,11 +26,7 @@  				<text name="display_name_label" value="Visningsnavn:"/>  				<text name="solo_username_label" value="Bugernavn:"/>  				<button name="set_name" tool_tip="Sæt visningsnavn"/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Brugernavn:"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<icon label="" name="2nd_life_edit_icon" tool_tip="Klik for at vælge et billede"/>  				</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_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index 599686d360..b85a33279a 100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -1,23 +1,23 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <!-- Side tray panel -->  <panel label="Personer" name="people_panel"> -	<string name="no_recent_people" value="Ingen tidligere personer. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Search] eller [secondlife:///app/worldmap World Map]."/> -	<string name="no_filtered_recent_people" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> -	<string name="no_one_near" value="Ingen i nærheden. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Search] eller [secondlife:///app/worldmap World Map]."/> -	<string name="no_one_filtered_near" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]."/> +	<string name="no_recent_people" value="Ingen tidligere personer. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Søg] eller [secondlife:///app/worldmap Verdenskort]."/> +	<string name="no_filtered_recent_people" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg]."/> +	<string name="no_one_near" value="Ingen i nærheden. Leder du efter nogen at være sammen med? Prøv [secondlife:///app/search/people Søg] eller [secondlife:///app/worldmap Verdenskort]."/> +	<string name="no_one_filtered_near" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg]."/>  	<string name="no_friends_online" value="Ingen venner online"/>  	<string name="no_friends" value="Ingen venner"/>  	<string name="no_friends_msg"> -		Find venner via [secondlife:///app/search/people Search] eller højre-klik på en beboer og tilføj dem som venner. -Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap World Map]. +		Find venner via [secondlife:///app/search/people Søg] eller højre-klik på en beboer og tilføj dem som venner. +Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Verdenskort].  	</string>  	<string name="no_filtered_friends_msg"> -		Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Search]. +		Fandt du ikke det du søgte? Prøv [secondlife:///app/search/people/[SEARCH_TERM] Søg].  	</string>  	<string name="people_filter_label" value="Filtrér personer"/>  	<string name="groups_filter_label" value="Filtrér grupper"/> -	<string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Search]."/> -	<string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Search]."/> +	<string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/> +	<string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/>  	<filter_editor label="Filtrér" name="filter_input"/>  	<tab_container name="tabs">  		<panel label="TÆT PÅ" name="nearby_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_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml index 5e0a51eb28..e6e8ca4d10 100644 --- a/indra/newview/skins/default/xui/da/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/da/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Brugernavn:"/>  	<text name="status" value="Online"/>  	<text name="user_name_small" value="Se på mig med dette enormt ekstremt super lange navn"/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="Kopiér til udskriftsholder"/>  	<text name="user_label" value="Brugernavn:"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs">  		<panel label="PROFIL" name="panel_profile"/>  		<panel label="FAVORITTER" name="panel_picks"/> 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/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml index 746cf201bc..f80d5aeb15 100644 --- a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Skaber:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Ejer:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Gruppe:  		</text> 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/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml index f9169ed748..0e5d987ef9 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -86,15 +86,9 @@  			<text name="Owner:">  				Eigentümer:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Gruppe:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Festlegen" label_selected="Einstellen..." name="Set..." width="90"/>  			<check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>  			<button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml index f98e23bbc4..7f48105460 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Ersteller:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Eigentümer:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Erworben: diff --git a/indra/newview/skins/default/xui/de/floater_script_search.xml b/indra/newview/skins/default/xui/de/floater_script_search.xml index de959cbb28..ffae96f6a1 100644 --- a/indra/newview/skins/default/xui/de/floater_script_search.xml +++ b/indra/newview/skins/default/xui/de/floater_script_search.xml @@ -1,6 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="script search" title="SKRIPT-SUCHE"> -	<check_box label="Groß-/Kleinschreibung irrelevant" name="case_text"/> +	<check_box label="Groß-/Kleinschreibung ignorieren" name="case_text"/>  	<button label="Suchen" label_selected="Suchen" name="search_btn"/>  	<button label="Ersetzen" label_selected="Ersetzen" name="replace_btn"/>  	<button label="Alle ersetzen" label_selected="Alle ersetzen" name="replace_all_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 2d30814974..d201fc327c 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -170,15 +170,9 @@  			<text name="Creator:">  				Ersteller:  			</text> -			<text name="Creator Name"> -				Frau Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Eigentümer:  			</text> -			<text name="Owner Name"> -				Frau Erica "Elch" Linden (erica.linden) -			</text>  			<text name="Group:">  				Gruppe:  			</text> diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml index 92d9bc37c4..4b8fd8a0ad 100644 --- a/indra/newview/skins/default/xui/de/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml @@ -10,9 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name_small" value="Launische Produktengine mit langem Namen"/> -	<text name="user_name" value="Grumpity ProductEngine"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_subtitle" value="11 Monate und 3 Tage alt"/>  	<text name="user_details">  		Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede. diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml index badb47bf08..d85ca7ce4d 100644 --- a/indra/newview/skins/default/xui/de/inspect_group.xml +++ b/indra/newview/skins/default/xui/de/inspect_group.xml @@ -16,9 +16,6 @@  	<string name="YouAreMember">  		Sie sind Mitglied  	</string> -	<text name="group_name"> -		Grumpitys schlecht gelaunte Elche -	</text>  	<text name="group_subtitle">  		123 Mitglieder  	</text> diff --git a/indra/newview/skins/default/xui/de/panel_activeim_row.xml b/indra/newview/skins/default/xui/de/panel_activeim_row.xml deleted file mode 100644 index 84272752cf..0000000000 --- a/indra/newview/skins/default/xui/de/panel_activeim_row.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_activeim_row"> -	<text name="contact_name"> -		Grumpity ProductEngine -	</text> -</panel> diff --git a/indra/newview/skins/default/xui/de/panel_chat_header.xml b/indra/newview/skins/default/xui/de/panel_chat_header.xml index babbff3132..7916bf5155 100644 --- a/indra/newview/skins/default/xui/de/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/de/panel_chat_header.xml @@ -1,5 +1,4 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="im_header" name="im_header"> -	<text_editor name="user_name" value="Ericag Vader"/>  	<text name="time_box" value="23:30"/>  </panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_profile.xml b/indra/newview/skins/default/xui/de/panel_edit_profile.xml index be124050e8..03974e7f7f 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml @@ -29,11 +29,7 @@  				<text name="display_name_label" value="Anzeigename:"/>  				<text name="solo_username_label" value="Benutzername:"/>  				<button name="set_name" tool_tip="Anzeigenamen festlegen"/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Benutzername:"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<panel name="second_life_image_panel">  						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index 4e3a304609..5f323d80dd 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -10,7 +10,7 @@  		Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.  	</panel.string>  	<text name="help_text"> -		Sie können mehrere Einwohner Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. +		Sie können mehrere Einwohner in Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.  	</text>  	<button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>  	<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/> diff --git a/indra/newview/skins/default/xui/de/panel_instant_message.xml b/indra/newview/skins/default/xui/de/panel_instant_message.xml index 1433552c15..372def78ca 100644 --- a/indra/newview/skins/default/xui/de/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/de/panel_instant_message.xml @@ -4,7 +4,6 @@  		6  	</string>  	<panel label="im_header" name="im_header"> -		<text name="user_name" value="Erica Vader"/>  		<text name="time_box" value="23:30"/>  	</panel>  	<button label="Antworten" name="reply"/> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml index b44c128000..7e93bd1ede 100644 --- a/indra/newview/skins/default/xui/de/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Benutzername:"/>  	<text name="status" value="Online"/>  	<text name="user_name_small" value="Dieser Name ist ein ganz außerordentlich langer Name"/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="In Zwischenablage kopieren"/>  	<text name="user_label" value="Benutzername:"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs" tab_min_width="60">  		<panel label="PROFIL" name="panel_profile"/>  		<panel label="AUSWAHL" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml index 6474576c0f..7b46ee7c9b 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Ersteller:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Eigentümer:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Gruppe:  		</text> 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..04d50929f7 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -220,9 +220,10 @@               layout="topleft"               left_pad="2"               name="OwnerText" +             translate="false"               use_ellipses="true"                width="360"> -                Leyla Linden +                TestString PleaseIgnore              </text>               <button       follows="right" @@ -260,8 +261,10 @@               left_pad="2"               layout="topleft"               name="GroupText" +             translate="false"               width="240"> -Leyla Linden               </text> +                TestString PleaseIgnore +            </text>                   <button       follows="right"       height="23" @@ -1905,7 +1908,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 +1935,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" @@ -2078,7 +2081,7 @@ Only large parcels can be listed in search.               layout="topleft"               left_pad="10"               name="remove_allowed" -             right="-1" +             right="-10"               width="100" />               </panel>              <panel @@ -2128,7 +2131,7 @@ Only large parcels can be listed in search.               layout="topleft"               left_pad="10"               name="remove_banned" -             right="-1" +             right="-10"               width="100" />               </panel>          </panel> diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index 0ea42f9757..a97c697b24 100644 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -96,7 +96,7 @@       left="10"       max_val="2"       name="gamma" -     top_pad="7" +     top_pad="11"       width="262" />      <text       type="string" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml index 29f09dd0b2..0cf07926c2 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml @@ -106,9 +106,10 @@       left_delta="78"       name="LabelCreatorName"       top_delta="0" +     translate="false"       use_ellipses="true"        width="170"> -        Nicole Linden +        TestString PleaseIgnore      </text>      <button       follows="top|right" @@ -140,9 +141,10 @@       left_delta="78"       name="LabelOwnerName"       top_delta="0" +     translate="false"       use_ellipses="true"       width="170"> -      Thrax Linden +      TestString PleaseIgnore      </text>      <button       follows="top|right" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 6370ff9243..ae99fa8dd5 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -22,7 +22,11 @@       name="ToolTipMsg">          [REGION](Double-click to open Map, shift-drag to pan)      </floater.string> -    <floater.string name="mini_map_caption"> +	<floater.string +     name="AltToolTipMsg"> +		[REGION](Double-click to teleport, shift-drag to pan) +	</floater.string> +	<floater.string name="mini_map_caption">  	MINIMAP      </floater.string>      <net_map diff --git a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml index cf95257b0a..7c7ee2df4c 100644 --- a/indra/newview/skins/default/xui/en/floater_region_debug_console.xml +++ b/indra/newview/skins/default/xui/en/floater_region_debug_console.xml @@ -2,6 +2,7 @@  <floater    name="region_debug_console"    title="Region Debug" +  can_resize="true"    layout="topleft"    min_height="300"    min_width="300" @@ -12,7 +13,7 @@    left="10"     type="string"     length="1" -   follows="left|top|right|bottom" +   follows="left|right|bottom"     font="Monospace"     height="366"     width="576" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 1808fea445..85182c1c28 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -248,30 +248,53 @@  			function="BuildTool.commitRadioEdit"/>      </radio_group>      <check_box -     left="10" +     left="5"       follows="left|top"       height="28"  	 control_name="EditLinkedParts"       label="Edit linked"       layout="topleft"       name="checkbox edit linked parts" -     top_pad="2"> +     top_pad="-10">  		  <check_box.commit_callback  			function="BuildTool.selectComponent"/>  	</check_box> -   <text -   text_color="LtGray_50" -   follows="top|left" -   halign="left" -   left="13" -   name="RenderingCost" -   tool_tip="Shows the rendering cost calculated for this object" -   top_pad="0" -   type="string" -   width="100"> -   þ: [COUNT] -   </text> +   <button +     follows="left|top" +     height="23" +     label="Link" +     top_pad="2" +     layout="topleft" +     left="5" +     name="link_btn" +     width="50"> +	  <button.commit_callback +	     function="BuildTool.LinkObjects"/> +    </button> +    <button +     follows="left|top" +     height="23" +     label="Unlink" +     layout="topleft" +     left_pad="2" +     name="unlink_btn" +     width="50"> +	  <button.commit_callback +	     function="BuildTool.UnlinkObjects"/> +    </button> +    <text +	   text_color="LtGray_50" +	   follows="top|left" +	   halign="left" +	   left_pad="3" +	   name="RenderingCost" +	   tool_tip="Shows the rendering cost calculated for this object" +	   top_delta="11" +	   type="string" +	   width="100"> +	   þ: [COUNT] +	   </text>  	<check_box       control_name="ScaleUniform"       height="19" @@ -299,7 +322,7 @@       layout="topleft"       left="143"       name="checkbox stretch textures" -     top_pad="7" +     top_pad="-6"       width="134" />     <check_box       control_name="SnapEnabled" @@ -876,10 +899,11 @@               layout="topleft"               name="Creator Name"               top_delta="0" +             translate="false"               width="190"               word_wrap="true" -             use_ellipses="ture"> -                Mrs. Esbee Linden (esbee.linden) +             use_ellipses="true"> +                TestString PleaseIgnore (please.ignore)              </text>              <text               type="string" @@ -903,10 +927,11 @@               name="Owner Name"               left_pad="0"               top_delta="0" +             translate="false"               width="190"               word_wrap="true"               use_ellipses="true"> -                Mrs. Erica "Moose" Linden (erica.linden) +                TestString PleaseIgnore (please.ignore)              </text>             <text               type="string" diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index 6ec063cd26..e04a72cbc0 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -12,7 +12,7 @@    auto_tile="true"    title=""    initial_mime_type="text/html" -  width="735"> +  width="780">    <layout_stack      bottom="775"      follows="left|right|top|bottom" @@ -21,7 +21,7 @@      name="stack1"      orientation="vertical"      top="20" -    width="725"> +    width="770">      <layout_panel        auto_resize="false"        default_tab_group="1" @@ -32,7 +32,7 @@        name="nav_controls"        top="400"        user_resize="false" -      width="725"> +      width="770">        <button          image_overlay="Arrow_Left_Off"  		    image_disabled="PushButton_Disabled" @@ -115,7 +115,7 @@          combo_editor.select_on_focus="true"          tool_tip="Enter URL here"          top_delta="0" -        width="627"> +        width="672">          <combo_box.commit_callback            function="WebContent.EnterAddress" />        </combo_box> @@ -125,7 +125,7 @@          follows="top|right"          image_name="Lock2"          layout="topleft" -        left_delta="575" +        left_delta="620"          top_delta="2"          visible="false"           tool_tip="Secured Browsing" @@ -142,7 +142,7 @@          height="22"          layout="topleft"          name="popexternal" -        right="725" +        right="770"          top_delta="-2"          width="22">          <button.commit_callback @@ -156,7 +156,7 @@        name="external_controls"        top_delta="0"        user_resize="false" -      width="540"> +      width="585">        <web_browser          bottom="-22"          follows="all" @@ -175,7 +175,7 @@          parse_urls="false"          text_color="0.4 0.4 0.4 1"          top_pad="5" -        width="520"/> +        width="495"/>        <progress_bar          color_bar="0.3 1.0 0.3 1"          follows="bottom|right" diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index 853d5f8735..bd9e367d1f 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -40,10 +40,11 @@       name="user_name_small"       top="7"       text_color="White" +     translate="false"       use_ellipses="true"       word_wrap="true"      visible="false"  -     value="Grumpity ProductEngine with a long name" +     value="TestString PleaseIgnore"       width="185" />     <text      follows="top|left" @@ -53,8 +54,9 @@      name="user_name"      top="10"      text_color="White" +    translate="false"      use_ellipses="true" -    value="Grumpity ProductEngine" +    value="TestString PleaseIgnore"      width="190" />     <text       follows="top|left" @@ -63,7 +65,8 @@       name="user_slid"       font="SansSerifSmallBold"       text_color="EmphasisColor" -     value="james.linden" +     translate="false" +     value="teststring.pleaseignore"       width="185"       use_ellipses="true" />      <text diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml index bcdb63228d..324ff3eabd 100644 --- a/indra/newview/skins/default/xui/en/inspect_group.xml +++ b/indra/newview/skins/default/xui/en/inspect_group.xml @@ -28,10 +28,11 @@       name="group_name"       top="10"       text_color="White" +     translate="false"       use_ellipses="true"       width="175"       word_wrap="false"> -    Grumpity's Grumpy Group of Moose +    TestString PleaseIgnore    </text>    <text     follows="all" diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index 58d58a6ca9..76b188220d 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -78,7 +78,7 @@      <menu_item_call.on_click       function="InspectAvatar.Freeze"/>      <menu_item_call.on_visible -     function="InspectAvatar.VisibleFreezeEject"/> +     function="InspectAvatar.VisibleFreeze"/>    </menu_item_call>    <menu_item_call     label="Eject" @@ -86,7 +86,23 @@      <menu_item_call.on_click       function="InspectAvatar.Eject"/>      <menu_item_call.on_visible -     function="InspectAvatar.VisibleFreezeEject"/> +     function="InspectAvatar.VisibleEject"/> +  </menu_item_call> +  <menu_item_call +   label="Kick" +   name="kick"> +    <menu_item_call.on_click +     function="InspectAvatar.Kick"/> +    <menu_item_call.on_visible +     function="InspectAvatar.EnableGod"/> +  </menu_item_call> +  <menu_item_call +  label="CSR" +  name="csr"> +    <menu_item_call.on_click +     function="InspectAvatar.CSR" /> +    <menu_item_call.on_visible +     function="InspectAvatar.EnableGod" />    </menu_item_call>    <menu_item_call     label="Debug Textures" 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/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 2207e418c8..606ff69599 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -1960,6 +1960,16 @@                   function="ToggleControl"                   parameter="DebugShowRenderInfo" />              </menu_item_check> +			<menu_item_check +             label="Show Texture Info" +             name="Show Texture Info"> +                <menu_item_check.on_check +                 function="CheckControl" +                 parameter="DebugShowTextureInfo" /> +                <menu_item_check.on_click +                 function="ToggleControl" +                 parameter="DebugShowTextureInfo" /> +            </menu_item_check>              <menu_item_check               label="Show Matrices"               name="Show Matrices"> @@ -1980,6 +1990,16 @@                   function="ToggleControl"                   parameter="DebugShowColor" />              </menu_item_check> +            <menu_item_check +               label="Show Memory" +               name="Show Memory"> +              <menu_item_check.on_check +               function="CheckControl" +               parameter="DebugShowMemory" /> +              <menu_item_check.on_click +               function="ToggleControl" +               parameter="DebugShowMemory" /> +            </menu_item_check>              <menu_item_separator/> @@ -2727,18 +2747,6 @@                   function="Floater.Toggle"                   parameter="region_debug_console" />              </menu_item_check> -            <menu_item_check -             label="Region Debug Console" -             name="Region Debug Console" -             shortcut="control|shift|`" -             use_mac_ctrl="true"> -                <menu_item_check.on_check -                 function="Floater.Visible" -                 parameter="region_debug_console" /> -                <menu_item_check.on_click -                 function="Floater.Toggle" -                 parameter="region_debug_console" /> -            </menu_item_check>              <menu_item_separator /> diff --git a/indra/newview/skins/default/xui/en/panel_activeim_row.xml b/indra/newview/skins/default/xui/en/panel_activeim_row.xml index 72f41c62f4..1d8bfa0672 100644 --- a/indra/newview/skins/default/xui/en/panel_activeim_row.xml +++ b/indra/newview/skins/default/xui/en/panel_activeim_row.xml @@ -65,6 +65,7 @@      speaker.visible="false">    </chiclet_im_adhoc>  	<text +	    translate="false"  		type="string"  		name="contact_name"  		layout="topleft" @@ -76,7 +77,7 @@  		follows="right|left"  		use_ellipses="true"  		font="SansSerifBold"> -    Grumpity ProductEngine +    TestString PleaseIgnore    </text>    <button      top="10" diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 17e8d4d2df..2645d472f9 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -35,9 +35,10 @@        text_color="white"        bg_readonly_color="black"        top="0" +      translate="false"        use_ellipses="true"        valign="bottom"  -      value="Ericag Vader" /> +      value="TestString PleaseIgnore" />    <text      allow_scroll="false"      font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index a028e3ab9f..82dfb445da 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -183,17 +183,17 @@       left="8"       name="bottom_panel"       top_pad="5" -     width="303"> +     width="315">       	 <layout_stack  		  follows="bottom|left|right"  		  height="23"  		  layout="topleft"  		  name="layout_stack1" -		  left="2" +		  left="0"  		  orientation="horizontal"  		  top_pad="0" -		  width="303"> +		  width="313">  		  	 <layout_panel  			  follows="bottom|left|right" @@ -223,7 +223,7 @@  			  name="layout_panel1"  		      user_resize="false"   		      auto_resize="true" -			  width="150"> +			  width="146">  		        <button  		         follows="bottom|left|right"  		         height="23" @@ -232,7 +232,7 @@  		         name="cancel_btn"  		         top="0"  		         left="1" -		        width="149" /> +		        width="145" />  			  </layout_panel>  	</layout_stack> diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 37265d65f1..442eb8c28d 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -127,7 +127,8 @@         name="solo_user_name"         text_color="white"         top_delta="3" -       value="Hamilton Hitchings" +       translate="false" +       value="TestString PleaseIgnore"         use_ellipses="true"         visible="false"         width="275" /> @@ -140,7 +141,8 @@         name="user_name"         text_color="white"         top_delta="0" -       value="Hamilton Hitchings" +       translate="false" +       value="TestString PleaseIgnore"         use_ellipses="true"         visible="true"         width="250" /> @@ -153,7 +155,8 @@         name="user_name_small"         text_color="white"         top_delta="-4" -       value="Hamilton Hitchings" +       translate="false" +       value="TestString PleaseIgnore"         use_ellipses="true"         visible="false"         wrap="true" @@ -177,8 +180,9 @@         text_color="EmphasisColor"          font="SansSerifBold"         top_delta="-2" +       translate="false"         use_ellipses="true"  -       value="hamilton.linden" +       value="teststring.pleaseignore"         wrap="true"          width="205" />       <panel diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 70b96ca5eb..38b680ba86 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -21,7 +21,7 @@ Hover your mouse over the options for more help.      </panel.string>     <panel        name="group_info_top" -      follows="top|left" +      follows="top|left|right"        top="0"        left="0"        height="129" @@ -43,7 +43,7 @@ Hover your mouse over the options for more help.        font="SansSerifSmall"        text_color="White_50"        width="190" -      follows="top|left" +      follows="top|left|right"        layout="topleft"        mouse_opaque="false"       type="string" @@ -55,7 +55,7 @@ Hover your mouse over the options for more help.        Founder:      </text>       <text -      follows="left|top" +      follows="left|top|right"       height="16"       layout="topleft"       left_delta="-2" diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 021cf00d03..46c1add739 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -65,8 +65,9 @@           name="user_name"           text_color="white"           top="8" +         translate="false"           use_ellipses="true" -         value="Erica Vader" +         value="TestString PleaseIgnore"           width="205" />  	 <!-- TIME STAMP -->          <text diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 5871eb0654..21c627cdfb 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -45,9 +45,9 @@       left_pad="4"       image_disabled="ComboButton_UpOff"       image_unselected="ComboButton_UpOff" -     image_selected="ComboButton_Up_On_Selected" +     image_selected="ComboButton_On"       image_pressed="ComboButton_UpSelected" -     image_pressed_selected="ComboButton_Up_On_Selected" +     image_pressed_selected="ComboButton_Selected"       height="23"       name="show_nearby_chat"       tool_tip="Shows/hides nearby chat log"> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 88c82313dd..26efe783f8 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -76,7 +76,7 @@  		         left="0"  		         orientation="horizontal"  		         top="0" -		         width="313">	 +		         width="308">	  			    <layout_panel  			         follows="bottom|left|right"  			         height="23" @@ -120,7 +120,7 @@                       name="wear_btn_lp"                       user_resize="false"                        auto_resize="true" -                     width="152"> +                     width="147">                      <button                           follows="bottom|left|right"                           height="23" @@ -129,7 +129,7 @@                           name="wear_btn"                           left="0"                           top="0" -                         width="152" /> +                         width="147" />  			    </layout_panel>  			</layout_stack>     </panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 6a8bf87bc5..43431ea7c1 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -54,7 +54,13 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M      <string       name="no_groups_msg"       value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." /> -    <filter_editor +	<string +	 name="MiniMapToolTipMsg" +	 value="[REGION](Double-click to open Map, shift-drag to pan)"/> +	<string +	 name="AltMiniMapToolTipMsg" +	 value="[REGION](Double-click to teleport, shift-drag to pan)"/> +	<filter_editor       follows="left|top|right"       height="23"       layout="topleft" @@ -93,16 +99,26 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M           name="nearby_panel"           top="0"           width="313"> -            <avatar_list +			<net_map +			 bg_color="NetMapBackgroundColor" +			 follows="top|left|right" +			 layout="topleft" +			 left="3" +			 mouse_opaque="false" +			 name="Net Map" +			 width="307" +			 height="140" +			 top="0"/> +			<avatar_list               allow_select="true" -             follows="all" -             height="356" +             follows="top|left|bottom|right" +             height="216"               ignore_online_status="true"               layout="topleft"               left="3"               multi_select="true"               name="avatar_list" -             top="0" +             top="145"               width="307" />              <panel               background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index d9c357f277..f423dbb91c 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -176,7 +176,7 @@ background_visible="true"  				left="0"  				orientation="horizontal"  				top="0" -				width="120"> +				width="113">  					<layout_panel  					follows="bottom|left|right" @@ -214,7 +214,10 @@ background_visible="true"  						<menu_button  				         follows="bottom|left|right"  				         height="23" -				         label="▼" +                         image_disabled="ComboButton_Off" +                         image_unselected="ComboButton_Off" +                         image_pressed="ComboButton_Off" +                         image_pressed_selected="ComboButton_Off"  				         layout="topleft"  						 mouse_opaque="false"  				         name="overflow_btn" @@ -236,7 +239,7 @@ background_visible="true"  				left="0"  				orientation="horizontal"  				top="0" -				width="120">		 +				width="110">		  					<layout_panel  					follows="bottom|left|right"  					height="23" @@ -246,7 +249,7 @@ background_visible="true"  					name="profile_btn_lp"  				    user_resize="false"   				    auto_resize="true" -					width="112"> +					width="102">  						<button  				         follows="bottom|left|right"  				         height="23" @@ -257,7 +260,7 @@ background_visible="true"  				         left="1"  				         tool_tip="Show place profile"  				         top="0" -				         width="111" />		 +				         width="101" />		  					</layout_panel>  				</layout_stack> @@ -272,7 +275,7 @@ background_visible="true"  				left="0"  				orientation="horizontal"  				top="0" -				width="120"> +				width="112">  					<layout_panel  					follows="bottom|left|right"  					height="23" @@ -283,7 +286,7 @@ background_visible="true"  					top="0"  				    user_resize="false"   				    auto_resize="true" -					width="61"> +					width="51">  						<button  				         follows="bottom|left|right"  				         height="23" @@ -293,7 +296,7 @@ background_visible="true"  				         name="close_btn"  				         left="1"  				         top="0" -				         width="60" />	 +				         width="50" />	  					</layout_panel>  				</layout_stack> 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/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 61e3bb354f..d36220385d 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -34,6 +34,14 @@  	 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"       orientation="vertical" diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml index c553a3aba0..646875b52e 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -83,8 +83,9 @@     left="45"     name="user_name"     text_color="LtGray" +   translate="false"     top="25" -   value="Jack Linden" +   value="TestString PleaseIgnore"     visible="true"     use_ellipses="true"     width="258" />  @@ -118,8 +119,9 @@     text_color="EmphasisColor"     font="SansSerifBold"     top_delta="-2" +   translate="false"     use_ellipses="true" -   value="jack.linden" +   value="teststring.pleaseignore"     width="195"      wrap="true "/>    <tab_container diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index f3c6895cee..8997c1a6d7 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -37,7 +37,7 @@  			 name="button_panel"  			 left="9"  			 top_pad="-2" -			 width="313"> +			 width="308">  			<layout_stack       	         follows="bottom|left|right"  		         height="23" @@ -47,7 +47,7 @@  		         left="0"  		         orientation="horizontal"  		         top="0" -		         width="313">	 +		         width="308">	  			    <layout_panel  			         follows="bottom|left|right"  			         height="23" @@ -57,7 +57,7 @@                       name="info_btn_lp"                       user_resize="false"                        auto_resize="true" -                     width="103"> +                     width="101">                      <button                           enabled="true"                           follows="bottom|left|right" @@ -68,62 +68,62 @@                           name="info_btn"                           tool_tip="Show object profile"                           top="0" -                         width="102" /> +                         width="100" />  			    </layout_panel>  			    <layout_panel                       follows="bottom|left|right"                       height="23"                       layout="bottomleft" -                     left_pad="3"			 +                     left_pad="1"			                       mouse_opaque="false"                       name="share_btn_lp"                       user_resize="false"                        auto_resize="true" -                     width="102"> +                     width="100">                      <button                           enabled="true"                           follows="bottom|left|right"                           height="23"                           label="Share"                           layout="topleft" -                         left="0" +                         left="1"                           name="share_btn"                           tool_tip="Share an inventory item"                           top="0" -                         width="102" /> +                         width="99" />  			    </layout_panel>  			    <layout_panel                       follows="bottom|left|right"                       height="23"                       layout="bottomleft" -                     left_pad="3"			 +                     left_pad="1"			                       mouse_opaque="false"                       name="shop_btn_lp"                       user_resize="false"                        auto_resize="true" -                     width="102"> +                     width="100">                      <button                           enabled="true"                           follows="bottom|left|right"                           height="23"                           label="Shop"                           layout="topleft" -                         left="0" +                         left="1"                           name="shop_btn"                           tool_tip="Open Marketplace webpage"                           top="0" -                         width="102" /> +                         width="99" />                      <button                           enabled="false"                           follows="bottom|left|right"                           height="23"                           label="Wear"                           layout="topleft" -                         left="0" +                         left="1"                           name="wear_btn"                           tool_tip="Wear seleceted outfit"                           top="0" -                         width="102" /> +                         width="99" />                      <button                           enabled="false"                           follows="bottom|left|right" @@ -131,20 +131,20 @@                           label="Play"                           layout="topleft"                           name="play_btn" -                         left="0" +                         left="1"                           top="0" -                         width="102" /> +                         width="99" />                      <button                           enabled="false"                           follows="bottom|left|right"                           height="23"                           label="Teleport"                           layout="topleft" -                         left="0" +                         left="1"                           name="teleport_btn"                           tool_tip="Teleport to the selected area"                           top="0" -                         width="102" /> +                         width="99" />  			    </layout_panel>  			</layout_stack>  		</panel> diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index e2b3d81bf6..c2394a3fa2 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -168,9 +168,10 @@       left_pad="0"               name="Creator Name"  		     top_delta="0" +		     translate="false"           use_ellipses="true"   		     width="225"> -	        Erica Linden +	        TestString PleaseIgnore  	     </text>  	    <text  			 type="string" @@ -193,9 +194,10 @@  			    left_pad="0"  			    name="Owner Name"  			    top_delta="0" +			    translate="false"            use_ellipses="true"   			    width="225"> -			    Erica Linden +			    TestString PleaseIgnore  	     </text>  	    	    <text  			 type="string" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 752bb6ed3a..70a40960a1 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1948,7 +1948,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 :    " /> @@ -2321,9 +2321,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> @@ -2335,16 +2332,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> @@ -3313,4 +3310,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/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index a7e271a1ff..d792e9f29c 100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml @@ -23,11 +23,11 @@      bottom="0"      tab_stop="false"      is_toggle="true" -                 image_selected="SegmentedBtn_Right_Selected_Press" -                 image_unselected="SegmentedBtn_Right_Off" -		 image_pressed="SegmentedBtn_Right_Press" -		 image_pressed_selected="SegmentedBtn_Right_Selected_Press" -		 image_overlay="Arrow_Small_Up" +    image_disabled="ComboButton_UpOff" +    image_unselected="ComboButton_UpOff" +    image_selected="ComboButton_On" +    image_pressed="ComboButton_UpSelected" +    image_pressed_selected="ComboButton_Selected"      />    <monitor      follows="right"  diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index be5b5d011c..4c6e129720 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -87,15 +87,9 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s  			<text name="Owner:">  				Propietario:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Grupo:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Configurar" name="Set..."/>  			<check_box label="Permitir transferir al grupo" name="check deed" tool_tip="Un oficial del grupo puede transferir este terreno al grupo. El terreno será apoyado por el grupo en sus asignaciones de terreno."/>  			<button label="Transferir" name="Deed..." tool_tip="Sólo si es usted un oficial del grupo seleccionado puede transferir terreno."/> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml index 5746688962..bf84c3d808 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Creador:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Perfil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Propietario:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Perfil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Adquirido: diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index d85b43b7e8..e2ff4a25ce 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -170,15 +170,9 @@  			<text name="Creator:">  				Creador:  			</text> -			<text name="Creator Name"> -				Dª Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Propietario:  			</text> -			<text name="Owner Name"> -				Dª Erica "Moose" Linden (erica.linden) -			</text>  			<text name="Group:">  				Grupo:  			</text> diff --git a/indra/newview/skins/default/xui/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml index 119f252db2..1d70fa6a90 100644 --- a/indra/newview/skins/default/xui/es/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/es/inspect_avatar.xml @@ -10,8 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name_small" value="Grumpity ProductEngine con un nombre demasiado largo"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_details">  		Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguísima.  	</text> diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml index 56d03dccc2..8e5e09cfec 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml @@ -25,11 +25,7 @@  				<text name="display_name_label" value="Nombre mostrado:"/>  				<text name="solo_username_label" value="Nombre de usuario:"/>  				<button name="set_name" tool_tip="Configurar nombre mostrado"/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Nombre de usuario:"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<icon label="" name="2nd_life_edit_icon" tool_tip="Pulsa para elegir una imagen"/>  				</panel> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/es/panel_profile_view.xml index a11fc31607..cb374dee52 100644 --- a/indra/newview/skins/default/xui/es/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/es/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Nombre de usuario:"/>  	<text name="status" value="Conectado/a"/>  	<text name="user_name_small" value="Jack, ¿has visto esto? Es un nombre larguísimo."/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="Copiar al portapapeles"/>  	<text name="user_label" value="Nombre de usuario:"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs">  		<panel label="PERFIL" name="panel_profile"/>  		<panel label="DESTACADOS" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml index e6d9e28aff..bd814ecc66 100644 --- a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Creador:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Propietario:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Grupo:  		</text> 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_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml index b0ef1cf8df..63b2b1f685 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -88,15 +88,9 @@  			<text name="Owner:">  				Propriétaire :  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Groupe :  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Choisir" label_selected="Définir..." name="Set..."/>  			<check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier du groupe peut céder ce terrain à ce groupe, afin qu'il soit pris en charge par l'allocation de terrains du groupe."/>  			<button label="Céder" label_selected="Céder..." name="Deed..." tool_tip="Vous ne pouvez céder le terrain que si vous avez un rôle d'officier dans le groupe sélectionné."/> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml index 29b61fc98d..f2eb3cb6bc 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Créateur :  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Propriétaire :  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Acquis : 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/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index 46a27e960c..01274b4cbc 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -170,15 +170,9 @@  			<text name="Creator:">  				Créateur :  			</text> -			<text name="Creator Name"> -				Mrs. Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Propriétaire :  			</text> -			<text name="Owner Name"> -				Mrs. Erica "Moose" Linden (erica.linden) -			</text>  			<text name="Group:">  				Groupe :  			</text> diff --git a/indra/newview/skins/default/xui/fr/inspect_avatar.xml b/indra/newview/skins/default/xui/fr/inspect_avatar.xml index f34ca1f8dd..553646f8e9 100644 --- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml @@ -10,9 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/> -	<text name="user_name" value="Grumpity ProductEngine"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_subtitle" value="11 mois, 3 jours"/>  	<text name="user_details">  		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot diff --git a/indra/newview/skins/default/xui/fr/inspect_group.xml b/indra/newview/skins/default/xui/fr/inspect_group.xml index 4519c380c5..e8c528c1ac 100644 --- a/indra/newview/skins/default/xui/fr/inspect_group.xml +++ b/indra/newview/skins/default/xui/fr/inspect_group.xml @@ -16,9 +16,6 @@  	<string name="YouAreMember">  		Vous êtes membre  	</string> -	<text name="group_name"> -		Groupe grognon des Orignaux Grumpity -	</text>  	<text name="group_subtitle">  		123 membres  	</text> 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_activeim_row.xml b/indra/newview/skins/default/xui/fr/panel_activeim_row.xml deleted file mode 100644 index 84272752cf..0000000000 --- a/indra/newview/skins/default/xui/fr/panel_activeim_row.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_activeim_row"> -	<text name="contact_name"> -		Grumpity ProductEngine -	</text> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_chat_header.xml b/indra/newview/skins/default/xui/fr/panel_chat_header.xml index babbff3132..7916bf5155 100644 --- a/indra/newview/skins/default/xui/fr/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/fr/panel_chat_header.xml @@ -1,5 +1,4 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="im_header" name="im_header"> -	<text_editor name="user_name" value="Ericag Vader"/>  	<text name="time_box" value="23:30"/>  </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml index ef65d2fe24..9e63c88221 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml @@ -29,11 +29,7 @@  				<text name="display_name_label" value="Nom d'affichage :"/>  				<text name="solo_username_label" value="Nom d'utilisateur :"/>  				<button name="set_name" tool_tip="Définir un nom d'affichage"/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Nom d'utilisateur :"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<panel name="second_life_image_panel">  						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> diff --git a/indra/newview/skins/default/xui/fr/panel_instant_message.xml b/indra/newview/skins/default/xui/fr/panel_instant_message.xml index bf3720f411..305d2d853c 100644 --- a/indra/newview/skins/default/xui/fr/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/fr/panel_instant_message.xml @@ -4,7 +4,6 @@  		6  	</string>  	<panel label="im_header" name="im_header"> -		<text name="user_name" value="Erica Vader"/>  		<text name="time_box" value="23:30"/>  	</panel>  	<button label="Répondre" name="reply"/> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml index 0447618420..76ba44e899 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Nom d'utilisateur :"/>  	<text name="status" value="En ligne"/>  	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="Copier dans le presse-papiers"/>  	<text name="user_label" value="Nom d'utilisateur :"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs">  		<panel label="PROFIL" name="panel_profile"/>  		<panel label="FAVORIS" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml index c8e76118a1..bd8a39fe16 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Créateur :  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Propriétaire :  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Groupe :  		</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/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index d6834fa70a..e66f75be0f 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -87,15 +87,11 @@ Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezz  			<text name="Owner:">  				Proprietario:  			</text> -			<text left="119" name="OwnerText" width="227"> -				Leyla Linden -			</text> +			<text left="119" name="OwnerText" width="227"/>  			<text name="Group:">  				Gruppo:  			</text> -			<text left="119" name="GroupText" width="227"> -				Leyla Linden -			</text> +			<text left="119" name="GroupText" width="227"/>  			<button label="Imposta" name="Set..."/>  			<check_box label="Permetti cessione al gruppo" left="119" name="check deed" tool_tip="Un funzionario del gruppo può cedere questa terra al gruppo stesso cosicchè essa sarà  supportata  dalle terre del gruppo."/>  			<button label="Cedi" name="Deed..." tool_tip="Puoi solo offrire terra se sei un funzionario del gruppo selezionato."/> diff --git a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml index d3dc4d7eae..7ed3486b9b 100644 --- a/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/it/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Creatore:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profilo..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		proprietario:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profilo..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Acquisito: diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index a8c985cb12..fc13e09d1c 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -171,15 +171,9 @@  			<text name="Creator:">  				Creatore:  			</text> -			<text name="Creator Name"> -				Thrax Linden -			</text>  			<text name="Owner:">  				Proprietario:  			</text> -			<text name="Owner Name"> -				Thrax Linden -			</text>  			<text name="Group:">  				Gruppo:  			</text> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml index 20c62d4ceb..cf65aabebc 100644 --- a/indra/newview/skins/default/xui/it/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/it/panel_profile_view.xml @@ -6,7 +6,6 @@  	<string name="status_offline">  		Offline  	</string> -	<text_editor name="user_name" value="(Caricamento in corso...)"/>  	<text name="status" value="Online"/>  	<tab_container name="tabs">  		<panel label="PROFILO" name="panel_profile"/> diff --git a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml index 67870d9b76..cfabdc81b0 100644 --- a/indra/newview/skins/default/xui/it/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Ideatore:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Proprietario:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Gruppo:  		</text> 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/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index 2de9e781d4..a0046cec59 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -87,15 +87,9 @@  			<text name="Owner:">  				所有者:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				グループ:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="設定" label_selected="設定..." name="Set..."/>  			<check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループのオフィサーはこの土地をグループに譲渡できます。グループの土地割り当てによってサポートされます。"/>  			<button label="譲渡" label_selected="譲渡..." name="Deed..." tool_tip="選択したグループのオフィサーのみ、土地を譲渡できます。"/> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index 7480b04856..725214086a 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		クリエーター  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="情報" label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		オーナー:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="情報" label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		入手日時: diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index bbd78fb818..2272234d7a 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -170,15 +170,9 @@  			<text name="Creator:">  				制作者:  			</text> -			<text name="Creator Name"> -				Esbee Linden -			</text>  			<text name="Owner:">  				所有者:  			</text> -			<text name="Owner Name"> -				Erica Linden -			</text>  			<text name="Group:">  				グループ:  			</text> diff --git a/indra/newview/skins/default/xui/ja/inspect_avatar.xml b/indra/newview/skins/default/xui/ja/inspect_avatar.xml index fb4937242b..f3ea794bc7 100644 --- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml @@ -10,7 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name" value="Grumpity ProductEngine"/>  	<text name="user_subtitle" value="11 Months, 3 days old"/>  	<text name="user_details">  		This is my second life description and I really think it is great. diff --git a/indra/newview/skins/default/xui/ja/inspect_group.xml b/indra/newview/skins/default/xui/ja/inspect_group.xml index b461b93f65..be628befdf 100644 --- a/indra/newview/skins/default/xui/ja/inspect_group.xml +++ b/indra/newview/skins/default/xui/ja/inspect_group.xml @@ -16,9 +16,6 @@  	<string name="YouAreMember">  		あなたはメンバーです  	</string> -	<text name="group_name"> -		Grumpity's Grumpy Group of Moose -	</text>  	<text name="group_subtitle">  		123 メートル  	</text> diff --git a/indra/newview/skins/default/xui/ja/panel_activeim_row.xml b/indra/newview/skins/default/xui/ja/panel_activeim_row.xml deleted file mode 100644 index 84272752cf..0000000000 --- a/indra/newview/skins/default/xui/ja/panel_activeim_row.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_activeim_row"> -	<text name="contact_name"> -		Grumpity ProductEngine -	</text> -</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_chat_header.xml b/indra/newview/skins/default/xui/ja/panel_chat_header.xml index babbff3132..7916bf5155 100644 --- a/indra/newview/skins/default/xui/ja/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/ja/panel_chat_header.xml @@ -1,5 +1,4 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="im_header" name="im_header"> -	<text_editor name="user_name" value="Ericag Vader"/>  	<text name="time_box" value="23:30"/>  </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_instant_message.xml b/indra/newview/skins/default/xui/ja/panel_instant_message.xml index 9fd0cb3b0d..bf4cbcdc46 100644 --- a/indra/newview/skins/default/xui/ja/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/ja/panel_instant_message.xml @@ -4,7 +4,6 @@  		6  	</string>  	<panel label="im_header" name="im_header"> -		<text name="user_name" value="Erica Vader"/>  		<text name="time_box" value="23:30"/>  	</panel>  	<button label="返信" name="reply"/> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml index 5666a93cf0..82807bc8fc 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile_view.xml @@ -6,7 +6,6 @@  	<string name="status_offline">  		オフライン  	</string> -	<text_editor name="user_name" value="(ローディング...)"/>  	<text name="status" value="オンライン"/>  	<tab_container name="tabs">  		<panel label="プロフィール" name="panel_profile"/> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml index ff9b5dc6aa..eb2bfa993b 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			制作者:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			所有者:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			グループ:  		</text> 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/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml index 4271ad5b82..bb72f54a9c 100644 --- a/indra/newview/skins/default/xui/nl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/nl/floater_about_land.xml @@ -23,9 +23,7 @@  			<text name="Owner:">  				Eigenaar:  			</text> -			<text name="OwnerText" left="102" width="242"> -				Leyla Linden -			</text> +			<text name="OwnerText" left="102" width="242"/>  			<button label="Profiel" name="Profile..."/>  			<text name="Group:">  				Groep: diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml index 63cfafab81..81a823acd4 100644 --- a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml @@ -9,16 +9,10 @@  	<text name="LabelCreatorTitle">  		Maker:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profiel..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Eigenaar  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profiel..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Verworven: diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml index 4ffe675831..98339383e4 100644 --- a/indra/newview/skins/default/xui/nl/floater_tools.xml +++ b/indra/newview/skins/default/xui/nl/floater_tools.xml @@ -98,16 +98,10 @@  			<text name="Creator:">  				Maker:  			</text> -			<text name="Creator Name"> -				Thrax Linden -			</text>  			<button label="Profiel..." label_selected="Profiel..." name="button creator profile"/>  			<text name="Owner:">  				Eigenaar:  			</text> -			<text name="Owner Name"> -				Thrax Linden -			</text>  			<button label="Profiel..." label_selected="Profiel..." name="button owner profile"/>  			<text name="Group:">  				Groep: 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/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml index 0974518a1f..865ab9eacf 100644 --- a/indra/newview/skins/default/xui/pl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml @@ -87,15 +87,9 @@ Idź do Świat > O Posiadłości albo wybierz inną posiadłość żeby pokaz  			<text name="Owner:">  				Właściciel:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Grupa:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Ustaw" name="Set..."/>  			<check_box label="Udostępnij przypisywanie na Grupę" name="check deed" tool_tip="Oficer Grupy ma prawo przepisać prawo własności Posiadłości na Grupę. Posiadłość wspierana jest przez przydziały pochodzące od członków Grupy."/>  			<button label="Przypisz" name="Deed..." tool_tip="Prawo przypisania Posiadłości na Grupę może dokonać jedynie oficer Grupy."/> diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml index 1e63987585..054d74b234 100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Twórca:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Właściciel:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Profil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Nabyte: diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index 7c1ced0eae..337998efc9 100644 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml @@ -173,15 +173,9 @@  			<text name="Creator:">  				Twórca:  			</text> -			<text name="Creator Name"> -				Pani Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Właściciel:  			</text> -			<text name="Owner Name"> -				Pani Erica "Moose" Linden (erica.linden) -			</text>  			<text name="Group:">  				Grupa:  			</text> diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml index 1db3339352..5e982c0185 100644 --- a/indra/newview/skins/default/xui/pl/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/pl/inspect_avatar.xml @@ -10,8 +10,6 @@  	<string name="Details">  		[SL_PROFILE]  	</string> -	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_details">  		To jest mój opis w Second Life.  	</text> diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml index c409666ec9..e6fd8b18f8 100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml @@ -25,11 +25,7 @@  				<text name="display_name_label" value="Wyświetlana nazwa:"/>  				<text name="solo_username_label" value="Nazwa użytkownika:"/>  				<button name="set_name" tool_tip="Ustaw wyświetlanią nazwę."/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Nazwa użytkownika:"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij aby wybrać teksturę"/>  				</panel> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/pl/panel_profile_view.xml index 3590e9222e..1fd6bc1d10 100644 --- a/indra/newview/skins/default/xui/pl/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/pl/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Nazwa użytkownika:"/>  	<text name="status" value="Obecnie w SL"/>  	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="Kopiuj do schowka"/>  	<text name="user_label" value="Nazwa użytkownika:"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs">  		<panel label="PROFIL" name="panel_profile"/>  		<panel label="ULUBIONE" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml index d8cf456c64..eb8c9cdbbb 100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Twórca:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Właściciel:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Grupa:  		</text> 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/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index 3fb4bc272e..43d056eef6 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -87,15 +87,9 @@ Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar  			<text name="Owner:">  				Proprietário:  			</text> -			<text name="OwnerText"> -				Leyla Linden -			</text>  			<text name="Group:">  				Grupo:  			</text> -			<text name="GroupText"> -				Leyla Linden -			</text>  			<button label="Ajustar" name="Set..."/>  			<check_box label="Permitir doação para o grupo" name="check deed" tool_tip="Oficiais do grupo podem doar esse terreno ao grupo, passando a administração para o gestor da ilha"/>  			<button label="Passar" name="Deed..." tool_tip="Você só pode doar o terreno se você for um dos oficiais do grupo selecionado."/> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml index 8fe69c097d..8a8f1f5b34 100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml @@ -24,16 +24,10 @@  	<text name="LabelCreatorTitle">  		Criador:  	</text> -	<text name="LabelCreatorName"> -		Nicole Linden -	</text>  	<button label="Perfil..." label_selected="" name="BtnCreator"/>  	<text name="LabelOwnerTitle">  		Dono:  	</text> -	<text name="LabelOwnerName"> -		Thrax Linden -	</text>  	<button label="Perfil..." label_selected="" name="BtnOwner"/>  	<text name="LabelAcquiredTitle">  		Adquirido: diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index bd5fbf80d1..f90097bf22 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -170,15 +170,9 @@  			<text name="Creator:">  				Criador:  			</text> -			<text name="Creator Name"> -				Mrs. Esbee Linden (esbee.linden) -			</text>  			<text name="Owner:">  				Proprietário:  			</text> -			<text name="Owner Name"> -				Mrs. Erica "Moose" Linden (erica.linden) -			</text>  			<text name="Group:">  				Grupo:  			</text> diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml index a95d5ff31a..a199c58c15 100644 --- a/indra/newview/skins/default/xui/pt/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml @@ -10,8 +10,6 @@  	<string name="Details">  		[PERFIL_SL]  	</string> -	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/> -	<text name="user_slid" value="james.linden"/>  	<text name="user_details">  		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot  	</text> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml index 4066842b25..0ba7382845 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml @@ -25,11 +25,7 @@  				<text name="display_name_label" value="Nome de tela:"/>  				<text name="solo_username_label" value="Nome de usuário:"/>  				<button name="set_name" tool_tip="Definir nome de tela"/> -				<text name="solo_user_name" value="Hamilton Hitchings"/> -				<text name="user_name" value="Hamilton Hitchings"/> -				<text name="user_name_small" value="Hamilton Hitchings"/>  				<text name="user_label" value="Nome de usuário:"/> -				<text name="user_slid" value="hamilton.linden"/>  				<panel name="lifes_images_panel">  					<icon label="" name="2nd_life_edit_icon" tool_tip="Selecione uma imagem"/>  				</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml index c861e29624..11a31570d1 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml @@ -6,8 +6,8 @@  	<panel.string name="want_apply_text">  		Deseja salvar essas mudanças?  	</panel.string> -	<tab_container height="164" name="roles_tab_container"> -		<panel height="148" label="MEMBROS" name="members_sub_tab" tool_tip="Membros"> +	<tab_container name="roles_tab_container"> +		<panel label="MEMBROS" name="members_sub_tab" tool_tip="Membros">  			<panel.string name="help_text">  				Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes.  			</panel.string> @@ -15,15 +15,15 @@  				[AREA] m²  			</panel.string>  			<filter_editor label="Filtrar por membro" name="filter_input"/> -			<name_list bottom_delta="-105" height="104" name="member_list"> +			<name_list name="member_list">  				<name_list.columns label="Membro" name="name"/>  				<name_list.columns label="Doações" name="donated"/>  				<name_list.columns label="Status" name="online"/>  			</name_list> -			<button label="Convidar" name="member_invite" width="165"/> +			<button label="Convidar" name="member_invite" />  			<button label="Ejetar" name="member_eject"/>  		</panel> -		<panel height="148" label="CARGOS" name="roles_sub_tab"> +		<panel label="CARGOS" name="roles_sub_tab">  			<panel.string name="help_text">  				Cada cargo tem um nome e uma lista das funções que membros designados podem desempenhar.   Os membros podem ter um ou mais cargos. @@ -36,7 +36,7 @@  				Inv_FolderClosed  			</panel.string>  			<filter_editor label="Filtrar por cargo" name="filter_input"/> -			<scroll_list bottom_delta="-104" height="104" name="role_list"> +			<scroll_list name="role_list">  				<scroll_list.columns label="Cargo" name="name"/>  				<scroll_list.columns label="Título" name="title"/>  				<scroll_list.columns label="#" name="members"/> 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/panel_profile_view.xml b/indra/newview/skins/default/xui/pt/panel_profile_view.xml index d3ec9b82bc..d81ee08e6c 100644 --- a/indra/newview/skins/default/xui/pt/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/pt/panel_profile_view.xml @@ -10,10 +10,8 @@  	<text name="solo_username_label" value="Nome de usuário:"/>  	<text name="status" value="Conectado"/>  	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/> -	<text name="user_name" value="Jack Linden"/>  	<button name="copy_to_clipboard" tool_tip="Copiar para área de transferência"/>  	<text name="user_label" value="Nome de usuário:"/> -	<text name="user_slid" value="jack.linden"/>  	<tab_container name="tabs">  		<panel label="PERFIL" name="panel_profile"/>  		<panel label="DESTAQUES" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml index dd65810b22..8092e6c145 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml @@ -48,15 +48,9 @@  		<text name="CreatorNameLabel">  			Criador:  		</text> -		<text name="Creator Name"> -			Erica Linden -		</text>  		<text name="Owner:">  			Proprietário:  		</text> -		<text name="Owner Name"> -			Erica Linden -		</text>  		<text name="Group_label">  			Grupo:  		</text> 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/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index 9da851ffc4..d691bb6c44 100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp @@ -72,7 +72,7 @@ struct TestCapabilityProvider: public LLCapabilityProvider      {          mCaps[cap] = url;      } -    LLHost getHost() const { return mHost; } +    const LLHost& getHost() const { return mHost; }      std::string getDescription() const { return "TestCapabilityProvider"; }      LLHost mHost; 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/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py index aeebb0cfd1..1c7204a6b6 100644 --- a/indra/newview/tests/test_llxmlrpc_peer.py +++ b/indra/newview/tests/test_llxmlrpc_peer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """\  @file   test_llxmlrpc_peer.py  @author Nat Goodspeed diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 92b0129611..3e09b9daa0 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1,29 +1,31 @@ -#!/usr/bin/python -# @file viewer_manifest.py -# @author Ryan Williams -# @brief Description of all installer viewer files, and methods for packaging -#        them into installers for all supported platforms. -# -# $LicenseInfo:firstyear=2006&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$ +#!/usr/bin/env python +"""\ +@file viewer_manifest.py +@author Ryan Williams +@brief Description of all installer viewer files, and methods for packaging +       them into installers for all supported platforms. + +$LicenseInfo:firstyear=2006&license=viewerlgpl$ +Second Life Viewer Source Code +Copyright (C) 2006-2011, Linden Research, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; +version 2.1 of the License only. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + +Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA +$/LicenseInfo$ +"""  import sys  import os.path  import re diff --git a/indra/test/test_llmanifest.py b/indra/test/test_llmanifest.py index 89c36f95dd..a97abbc6ee 100644 --- a/indra/test/test_llmanifest.py +++ b/indra/test/test_llmanifest.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python  """  @file test_llmanifest.py  @author Ryan Williams diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index d6203ea026..1211bb7e5a 100644 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -1,5 +1,4 @@  # -*- cmake -*- -  project(llplugintest)  include(00-Common) 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 diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index ea242f45cd..1888f191e2 100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -373,9 +373,8 @@ void LLUpdaterServiceImpl::optionalUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, false); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, false);  }  void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion, @@ -385,9 +384,8 @@ void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, true); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, true);  }  void LLUpdaterServiceImpl::upToDate(void) | 
