aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--linden/doc/contributions.txt7
-rw-r--r--linden/indra/linux_crash_logger/llcrashloggerlinux.cpp15
-rw-r--r--linden/indra/llcommon/llversionviewer.h2
-rw-r--r--linden/indra/llprimitive/llprimitive.cpp205
-rw-r--r--linden/indra/llrender/llimagegl.cpp12
-rw-r--r--linden/indra/llrender/llimagegl.h2
-rw-r--r--linden/indra/newview/app_settings/settings.xml2
-rw-r--r--linden/indra/newview/llappviewer.cpp9
-rw-r--r--linden/indra/newview/llappviewer.h1
-rw-r--r--linden/indra/newview/llappviewerwin32.cpp2
-rw-r--r--linden/indra/newview/lldrawable.cpp12
-rw-r--r--linden/indra/newview/lldrawpoolbump.cpp7
-rw-r--r--linden/indra/newview/lldrawpoolbump.h3
-rw-r--r--linden/indra/newview/lleventpoll.cpp17
-rw-r--r--linden/indra/newview/llfloaterinspect.cpp6
-rw-r--r--linden/indra/newview/llfloaterlagmeter.cpp2
-rw-r--r--linden/indra/newview/llfloatervoicedevicesettings.cpp34
-rw-r--r--linden/indra/newview/llfloaterworldmap.cpp2
-rw-r--r--linden/indra/newview/llhudeffectpointat.cpp4
-rw-r--r--linden/indra/newview/llhudicon.cpp2
-rw-r--r--linden/indra/newview/lllogchat.cpp3
-rw-r--r--linden/indra/newview/llmutelist.cpp49
-rw-r--r--linden/indra/newview/llnotify.cpp38
-rw-r--r--linden/indra/newview/llnotify.h3
-rw-r--r--linden/indra/newview/llpaneldisplay.cpp10
-rw-r--r--linden/indra/newview/llprefsim.cpp4
-rw-r--r--linden/indra/newview/llprefsvoice.cpp11
-rw-r--r--linden/indra/newview/llselectmgr.cpp2
-rw-r--r--linden/indra/newview/lltexturefetch.cpp23
-rw-r--r--linden/indra/newview/lltextureview.cpp3
-rw-r--r--linden/indra/newview/llviewercontrol.cpp1
-rw-r--r--linden/indra/newview/llviewerdisplay.cpp1
-rw-r--r--linden/indra/newview/llviewerimage.cpp48
-rw-r--r--linden/indra/newview/llviewerimage.h23
-rw-r--r--linden/indra/newview/llviewerimagelist.cpp13
-rw-r--r--linden/indra/newview/llviewermenu.cpp7
-rw-r--r--linden/indra/newview/llviewerpartsim.cpp30
-rw-r--r--linden/indra/newview/llviewerpartsim.h6
-rw-r--r--linden/indra/newview/llviewerstats.cpp21
-rw-r--r--linden/indra/newview/llviewerwindow.cpp203
-rw-r--r--linden/indra/newview/llviewerwindow.h3
-rw-r--r--linden/indra/newview/llvoavatar.cpp20
-rw-r--r--linden/indra/newview/llvoavatar.h2
-rw-r--r--linden/indra/newview/llvoiceclient.cpp2
-rw-r--r--linden/indra/newview/llvopartgroup.cpp2
-rw-r--r--linden/indra/newview/llvotextbubble.cpp20
-rw-r--r--linden/indra/newview/llvovolume.cpp17
-rw-r--r--linden/indra/newview/llwindebug.cpp250
-rw-r--r--linden/indra/newview/pipeline.cpp79
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_about.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/panel_preferences_im.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/de/role_actions.xml114
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/fr/alerts.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/fr/floater_about.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/alerts.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_about.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_about_land.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_buy_currency.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_inspect.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_inventory.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/ja/menu_viewer.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/notify.xml32
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_audio.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_group_general.xml29
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_preferences_audio.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_preferences_im.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_preferences_input.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_status_bar.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ko/floater_about.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/pt/mime_types.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_about.xml4
75 files changed, 737 insertions, 759 deletions
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index f5f50a1..3608b52 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -13,9 +13,10 @@ Able Whitman
13Adam Marker 13Adam Marker
14 VWR-2755 14 VWR-2755
15Aimee Trescothick 15Aimee Trescothick
16 VWR-3336 16 VWR-3336
17 VWR-3903 17 VWR-3903
18 VWR-4083 18 VWR-4083
19 VWR-7109
19 VWR-9255 20 VWR-9255
20Alejandro Rosenthal 21Alejandro Rosenthal
21 VWR-1184 22 VWR-1184
@@ -327,6 +328,8 @@ Peekay Semyorka
327 VWR-19 328 VWR-19
328 VWR-49 329 VWR-49
329 VWR-79 330 VWR-79
331Peter Lameth
332 VWR-7331
330princess niven 333princess niven
331 VWR-5733 334 VWR-5733
332 CT-85 335 CT-85
@@ -397,6 +400,8 @@ TBBle Kurosawa
397 VWR-1892 400 VWR-1892
398Tharax Ferraris 401Tharax Ferraris
399 VWR-605 402 VWR-605
403Thickbrick Sleaford
404 VWR-7109
400Thraxis Epsilon 405Thraxis Epsilon
401 SVC-371 406 SVC-371
402 VWR-383 407 VWR-383
diff --git a/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp b/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
index 467dacf..0896814 100644
--- a/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
+++ b/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -124,11 +124,20 @@ void LLCrashLoggerLinux::gatherPlatformSpecificFiles()
124 124
125bool LLCrashLoggerLinux::mainLoop() 125bool LLCrashLoggerLinux::mainLoop()
126{ 126{
127 if(!do_ask_dialog()) 127 bool send_logs = true;
128 if(CRASH_BEHAVIOR_ASK == getCrashBehavior())
128 { 129 {
129 return true; 130 send_logs = do_ask_dialog();
131 }
132 else if(CRASH_BEHAVIOR_NEVER_SEND == getCrashBehavior())
133 {
134 send_logs = false;
135 }
136
137 if(send_logs)
138 {
139 sendCrashLogs();
130 } 140 }
131 sendCrashLogs();
132 return true; 141 return true;
133} 142}
134 143
diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h
index 6cb7b87..a2405fd 100644
--- a/linden/indra/llcommon/llversionviewer.h
+++ b/linden/indra/llcommon/llversionviewer.h
@@ -34,7 +34,7 @@
34 34
35const S32 LL_VERSION_MAJOR = 1; 35const S32 LL_VERSION_MAJOR = 1;
36const S32 LL_VERSION_MINOR = 22; 36const S32 LL_VERSION_MINOR = 22;
37const S32 LL_VERSION_PATCH = 5; 37const S32 LL_VERSION_PATCH = 6;
38const S32 LL_VERSION_BUILD = 0; 38const S32 LL_VERSION_BUILD = 0;
39 39
40const char * const LL_CHANNEL = "Second Life Release"; 40const char * const LL_CHANNEL = "Second Life Release";
diff --git a/linden/indra/llprimitive/llprimitive.cpp b/linden/indra/llprimitive/llprimitive.cpp
index 57d0a95..dc389c1 100644
--- a/linden/indra/llprimitive/llprimitive.cpp
+++ b/linden/indra/llprimitive/llprimitive.cpp
@@ -952,213 +952,16 @@ BOOL LLPrimitive::setVolume(const LLVolumeParams &volume_params, const S32 detai
952 952
953 U32 old_face_mask = mVolumep->mFaceMask; 953 U32 old_face_mask = mVolumep->mFaceMask;
954 954
955 S32 face_bit = 0;
956 S32 cur_mask = 0;
957
958 // grab copies of the old faces so we can determine the TE mappings...
959 std::vector<LLProfile::Face> old_faces; // list of old faces for remapping texture entries
960 LLTextureEntry old_tes[9];
961
962 for (S32 face = 0; face < mVolumep->getNumFaces(); face++)
963 {
964 old_faces.push_back(mVolumep->getProfile().mFaces[face]);
965 }
966
967 for (face_bit = 0; face_bit < 9; face_bit++)
968 {
969 cur_mask = 0x1 << face_bit;
970 if (old_face_mask & cur_mask)
971 {
972 S32 te_index = face_index_from_id(cur_mask, old_faces);
973 old_tes[face_bit] = *getTE(te_index);
974 //llinfos << face_bit << ":" << te_index << ":" << old_tes[face_bit].getID() << llendl;
975 }
976 }
977
978
979 // build the new object 955 // build the new object
980 sVolumeManager->unrefVolume(mVolumep); 956 sVolumeManager->unrefVolume(mVolumep);
981 mVolumep = volumep; 957 mVolumep = volumep;
982 958
983 U32 new_face_mask = mVolumep->mFaceMask; 959 U32 new_face_mask = mVolumep->mFaceMask;
984 S32 i; 960 if (old_face_mask != new_face_mask)
985
986 /*
987 std::string old_mask_string;
988 for (i = 0; i < 9; i++)
989 { 961 {
990 if (old_face_mask & (1 << i))
991 {
992 old_mask_string.append("1");
993 }
994 else
995 {
996 old_mask_string.append("0");
997 }
998 }
999 std::string new_mask_string;
1000 for (i = 0; i < 9; i++)
1001 {
1002 if (new_face_mask & (1 << i))
1003 {
1004 new_mask_string.append("1");
1005 }
1006 else
1007 {
1008 new_mask_string.append("0");
1009 }
1010 }
1011
1012 llinfos << "old mask: " << old_mask_string << llendl;
1013 llinfos << "new mask: " << new_mask_string << llendl;
1014 */
1015
1016
1017 if (old_face_mask == new_face_mask)
1018 {
1019 // nothing to do
1020 return TRUE;
1021 }
1022
1023 if (mVolumep->getNumFaces() == 0 && new_face_mask != 0)
1024 {
1025 llwarns << "Object with 0 faces found...INCORRECT!" << llendl;
1026 setNumTEs(mVolumep->getNumFaces()); 962 setNumTEs(mVolumep->getNumFaces());
1027 return TRUE; 963 }
1028 } 964
1029
1030
1031 S32 face_mapping[9];
1032 for (face_bit = 0; face_bit < 9; face_bit++)
1033 {
1034 face_mapping[face_bit] = face_bit;
1035 }
1036
1037 // Generate the face-type mappings
1038 for (face_bit = 0; face_bit < 9; face_bit++)
1039 {
1040 cur_mask = 0x1 << face_bit;
1041 if (!(new_face_mask & cur_mask))
1042 {
1043 // Face doesn't exist in new map.
1044 face_mapping[face_bit] = -1;
1045 continue;
1046 }
1047 else if (old_face_mask & cur_mask)
1048 {
1049 // Face exists in new and old map.
1050 face_mapping[face_bit] = face_bit;
1051 continue;
1052 }
1053
1054 // OK, how we've got a mismatch, where we have to fill a new face with one from
1055 // the old face.
1056 if (cur_mask & (LL_FACE_PATH_BEGIN | LL_FACE_PATH_END | LL_FACE_INNER_SIDE))
1057 {
1058 // It's a top/bottom/hollow interior face.
1059 if (old_face_mask & LL_FACE_PATH_END)
1060 {
1061 face_mapping[face_bit] = 1;
1062 continue;
1063 }
1064 else
1065 {
1066 S32 cur_outer_mask = LL_FACE_OUTER_SIDE_0;
1067 for (i = 0; i < 4; i++)
1068 {
1069 if (old_face_mask & cur_outer_mask)
1070 {
1071 face_mapping[face_bit] = 5 + i;
1072 break;
1073 }
1074 cur_outer_mask <<= 1;
1075 }
1076 if (i == 4)
1077 {
1078 llwarns << "No path end or outer face in volume!" << llendl;
1079 }
1080 continue;
1081 }
1082 }
1083
1084 if (cur_mask & (LL_FACE_PROFILE_BEGIN | LL_FACE_PROFILE_END))
1085 {
1086 // A cut slice. Use the hollow interior if we have it.
1087 if (old_face_mask & LL_FACE_INNER_SIDE)
1088 {
1089 face_mapping[face_bit] = 2;
1090 continue;
1091 }
1092
1093 // No interior, use the bottom face.
1094 // Could figure out which of the outer faces was nearest, but that would be harder.
1095 if (old_face_mask & LL_FACE_PATH_END)
1096 {
1097 face_mapping[face_bit] = 1;
1098 continue;
1099 }
1100 else
1101 {
1102 S32 cur_outer_mask = LL_FACE_OUTER_SIDE_0;
1103 for (i = 0; i < 4; i++)
1104 {
1105 if (old_face_mask & cur_outer_mask)
1106 {
1107 face_mapping[face_bit] = 5 + i;
1108 break;
1109 }
1110 cur_outer_mask <<= 1;
1111 }
1112 if (i == 4)
1113 {
1114 llwarns << "No path end or outer face in volume!" << llendl;
1115 }
1116 continue;
1117 }
1118 }
1119
1120 // OK, the face that's missing is an outer face...
1121 // Pull from the nearest adjacent outer face (there's always guaranteed to be one...
1122 S32 cur_outer = face_bit - 5;
1123 S32 min_dist = 5;
1124 S32 min_outer_bit = -1;
1125 S32 i;
1126 for (i = 0; i < 4; i++)
1127 {
1128 if (old_face_mask & (LL_FACE_OUTER_SIDE_0 << i))
1129 {
1130 S32 dist = abs(i - cur_outer);
1131 if (dist < min_dist)
1132 {
1133 min_dist = dist;
1134 min_outer_bit = i + 5;
1135 }
1136 }
1137 }
1138 if (-1 == min_outer_bit)
1139 {
1140 llinfos << (LLVolume *)mVolumep << llendl;
1141 llwarns << "Bad! No outer faces, impossible!" << llendl;
1142 }
1143 face_mapping[face_bit] = min_outer_bit;
1144 }
1145
1146
1147 setNumTEs(mVolumep->getNumFaces());
1148 for (face_bit = 0; face_bit < 9; face_bit++)
1149 {
1150 cur_mask = 0x1 << face_bit;
1151 if (new_face_mask & cur_mask)
1152 {
1153 if (-1 == face_mapping[face_bit])
1154 {
1155 llwarns << "No mapping from old face to new face!" << llendl;
1156 }
1157
1158 S32 te_num = face_index_from_id(cur_mask, mVolumep->getProfile().mFaces);
1159 setTE(te_num, old_tes[face_mapping[face_bit]]);
1160 }
1161 }
1162 return TRUE; 965 return TRUE;
1163} 966}
1164 967
diff --git a/linden/indra/llrender/llimagegl.cpp b/linden/indra/llrender/llimagegl.cpp
index 8195eee..6a142a7 100644
--- a/linden/indra/llrender/llimagegl.cpp
+++ b/linden/indra/llrender/llimagegl.cpp
@@ -61,8 +61,6 @@ S32 LLImageGL::sCount = 0;
61BOOL LLImageGL::sGlobalUseAnisotropic = FALSE; 61BOOL LLImageGL::sGlobalUseAnisotropic = FALSE;
62F32 LLImageGL::sLastFrameTime = 0.f; 62F32 LLImageGL::sLastFrameTime = 0.f;
63 63
64S32 LLImageGL::sMaxTextureSize = 0 ;
65
66std::set<LLImageGL*> LLImageGL::sImageList; 64std::set<LLImageGL*> LLImageGL::sImageList;
67 65
68//************************************************************************************** 66//**************************************************************************************
@@ -378,16 +376,6 @@ void LLImageGL::setSize(S32 width, S32 height, S32 ncomponents)
378{ 376{
379 if (width != mWidth || height != mHeight || ncomponents != mComponents) 377 if (width != mWidth || height != mHeight || ncomponents != mComponents)
380 { 378 {
381 if(width > 1024 || height > 1024)
382 {
383 llwarns << "texture size is big: width: " << width << " height: " << height << llendl ;
384 if(!sMaxTextureSize)
385 {
386 glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint*)&sMaxTextureSize) ;
387 }
388 llwarns << "max texture size is: " << sMaxTextureSize << llendl ;
389 }
390
391 // Check if dimensions are a power of two! 379 // Check if dimensions are a power of two!
392 if (!checkSize(width,height)) 380 if (!checkSize(width,height))
393 { 381 {
diff --git a/linden/indra/llrender/llimagegl.h b/linden/indra/llrender/llimagegl.h
index e8c0a4a..1965495 100644
--- a/linden/indra/llrender/llimagegl.h
+++ b/linden/indra/llrender/llimagegl.h
@@ -212,8 +212,6 @@ public:
212 static U32 sBindCount; // Tracks number of texture binds for current frame 212 static U32 sBindCount; // Tracks number of texture binds for current frame
213 static U32 sUniqueCount; // Tracks number of unique texture binds for current frame 213 static U32 sUniqueCount; // Tracks number of unique texture binds for current frame
214 static BOOL sGlobalUseAnisotropic; 214 static BOOL sGlobalUseAnisotropic;
215
216 static S32 sMaxTextureSize ;
217#if DEBUG_MISS 215#if DEBUG_MISS
218 BOOL mMissed; // Missed on last bind? 216 BOOL mMissed; // Missed on last bind?
219 BOOL getMissed() const { return mMissed; }; 217 BOOL getMissed() const { return mMissed; };
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 688dcab..d3519da 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -2577,7 +2577,7 @@
2577 <key>Type</key> 2577 <key>Type</key>
2578 <string>Boolean</string> 2578 <string>Boolean</string>
2579 <key>Value</key> 2579 <key>Value</key>
2580 <integer>0</integer> 2580 <integer>1</integer>
2581 </map> 2581 </map>
2582 <key>FloaterActiveSpeakersSortColumn</key> 2582 <key>FloaterActiveSpeakersSortColumn</key>
2583 <map> 2583 <map>
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 63711ba..e1a0fe2 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -3206,8 +3206,6 @@ void LLAppViewer::idle()
3206 return; 3206 return;
3207 } 3207 }
3208 3208
3209 gViewerWindow->handlePerFrameHover();
3210
3211 /////////////////////////////////////// 3209 ///////////////////////////////////////
3212 // Agent and camera movement 3210 // Agent and camera movement
3213 // 3211 //
@@ -3485,12 +3483,12 @@ void LLAppViewer::sendLogoutRequest()
3485 if (mLogoutMarkerFile) 3483 if (mLogoutMarkerFile)
3486 { 3484 {
3487 llinfos << "Created logout marker file " << mLogoutMarkerFileName << llendl; 3485 llinfos << "Created logout marker file " << mLogoutMarkerFileName << llendl;
3486 apr_file_close(mLogoutMarkerFile);
3488 } 3487 }
3489 else 3488 else
3490 { 3489 {
3491 llwarns << "Cannot create logout marker file " << mLogoutMarkerFileName << llendl; 3490 llwarns << "Cannot create logout marker file " << mLogoutMarkerFileName << llendl;
3492 } 3491 }
3493 apr_file_close(mLogoutMarkerFile);
3494 } 3492 }
3495} 3493}
3496 3494
@@ -3711,6 +3709,11 @@ void LLAppViewer::forceErrorSoftwareException()
3711 throw; 3709 throw;
3712} 3710}
3713 3711
3712void LLAppViewer::forceErrorDriverCrash()
3713{
3714 glDeleteTextures(1, NULL);
3715}
3716
3714void LLAppViewer::initMainloopTimeout(const std::string& state, F32 secs) 3717void LLAppViewer::initMainloopTimeout(const std::string& state, F32 secs)
3715{ 3718{
3716 if(!mMainloopTimeout) 3719 if(!mMainloopTimeout)
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h
index 98612ef..d1f7b13 100644
--- a/linden/indra/newview/llappviewer.h
+++ b/linden/indra/newview/llappviewer.h
@@ -114,6 +114,7 @@ public:
114 virtual void forceErrorBadMemoryAccess(); 114 virtual void forceErrorBadMemoryAccess();
115 virtual void forceErrorInifiniteLoop(); 115 virtual void forceErrorInifiniteLoop();
116 virtual void forceErrorSoftwareException(); 116 virtual void forceErrorSoftwareException();
117 virtual void forceErrorDriverCrash();
117 118
118 // *NOTE: There are currently 3 settings files: 119 // *NOTE: There are currently 3 settings files:
119 // "Global", "PerAccount" and "CrashSettings" 120 // "Global", "PerAccount" and "CrashSettings"
diff --git a/linden/indra/newview/llappviewerwin32.cpp b/linden/indra/newview/llappviewerwin32.cpp
index c0ef1a9..b68cad6 100644
--- a/linden/indra/newview/llappviewerwin32.cpp
+++ b/linden/indra/newview/llappviewerwin32.cpp
@@ -82,7 +82,7 @@ const std::string LLAppViewerWin32::sWindowClass = "Second Life";
82LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop) 82LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop)
83{ 83{
84 // *NOTE:Mani - this code is stolen from LLApp, where its never actually used. 84 // *NOTE:Mani - this code is stolen from LLApp, where its never actually used.
85 85 //OSMessageBox("Attach Debugger Now", "Error", OSMB_OK);
86 // Translate the signals/exceptions into cross-platform stuff 86 // Translate the signals/exceptions into cross-platform stuff
87 // Windows implementation 87 // Windows implementation
88 _tprintf( _T("Entering Windows Exception Handler...\n") ); 88 _tprintf( _T("Entering Windows Exception Handler...\n") );
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp
index 6a7ff16..16b282b 100644
--- a/linden/indra/newview/lldrawable.cpp
+++ b/linden/indra/newview/lldrawable.cpp
@@ -498,7 +498,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
498 F32 dist_squared = 0.f; 498 F32 dist_squared = 0.f;
499 F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera); 499 F32 camdist2 = (mDistanceWRTCamera * mDistanceWRTCamera);
500 500
501 if (damped && mDistanceWRTCamera > 0.0f) 501 if (damped && isVisible())
502 { 502 {
503 F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f); 503 F32 lerp_amt = llclamp(LLCriticalDamp::getInterpolant(OBJECT_DAMPING_TIME_CONSTANT), 0.f, 1.f);
504 LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt); 504 LLVector3 new_pos = lerp(old_pos, target_pos, lerp_amt);
@@ -522,11 +522,19 @@ F32 LLDrawable::updateXform(BOOL undamped)
522 { 522 {
523 // snap to final position 523 // snap to final position
524 dist_squared = 0.0f; 524 dist_squared = 0.0f;
525 if (!isRoot())
526 { //child prim snapping to some position, needs a rebuild
527 gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
528 }
525 } 529 }
526 } 530 }
527 531
528 if ((mCurrentScale != target_scale) || 532 if ((mCurrentScale != target_scale) ||
529 (!isRoot() && (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED) || !mVObjp->getAngularVelocity().isExactlyZero())) 533 (!isRoot() &&
534 (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED) ||
535 !mVObjp->getAngularVelocity().isExactlyZero() ||
536 target_pos != mXform.getPosition() ||
537 target_rot != mXform.getRotation()))
530 { //child prim moving or scale change requires immediate rebuild 538 { //child prim moving or scale change requires immediate rebuild
531 gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); 539 gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
532 } 540 }
diff --git a/linden/indra/newview/lldrawpoolbump.cpp b/linden/indra/newview/lldrawpoolbump.cpp
index 6221bc8..56f1e4d 100644
--- a/linden/indra/newview/lldrawpoolbump.cpp
+++ b/linden/indra/newview/lldrawpoolbump.cpp
@@ -592,7 +592,7 @@ BOOL LLDrawPoolBump::bindBumpMap(LLDrawInfo& params)
592 if( bump_code < LLStandardBumpmap::sStandardBumpmapCount ) 592 if( bump_code < LLStandardBumpmap::sStandardBumpmapCount )
593 { 593 {
594 bump = gStandardBumpmapList[bump_code].mImage; 594 bump = gStandardBumpmapList[bump_code].mImage;
595 gBumpImageList.addTextureStats(bump_code, tex->getID(), params.mVSize, 1, 1); 595 gBumpImageList.addTextureStats(bump_code, tex->getID(), params.mVSize);
596 } 596 }
597 break; 597 break;
598 } 598 }
@@ -734,14 +734,13 @@ LLBumpImageList::~LLBumpImageList()
734 734
735 735
736// Note: Does nothing for entries in gStandardBumpmapList that are not actually standard bump images (e.g. none, brightness, and darkness) 736// Note: Does nothing for entries in gStandardBumpmapList that are not actually standard bump images (e.g. none, brightness, and darkness)
737void LLBumpImageList::addTextureStats(U8 bump, const LLUUID& base_image_id, 737void LLBumpImageList::addTextureStats(U8 bump, const LLUUID& base_image_id, F32 virtual_size)
738 F32 pixel_area, F32 texel_area_ratio, F32 cos_center_angle)
739{ 738{
740 bump &= TEM_BUMP_MASK; 739 bump &= TEM_BUMP_MASK;
741 LLViewerImage* bump_image = gStandardBumpmapList[bump].mImage; 740 LLViewerImage* bump_image = gStandardBumpmapList[bump].mImage;
742 if( bump_image ) 741 if( bump_image )
743 { 742 {
744 bump_image->addTextureStats(pixel_area, texel_area_ratio, cos_center_angle); 743 bump_image->addTextureStats(virtual_size);
745 } 744 }
746} 745}
747 746
diff --git a/linden/indra/newview/lldrawpoolbump.h b/linden/indra/newview/lldrawpoolbump.h
index 16d26ed..7e82f7f 100644
--- a/linden/indra/newview/lldrawpoolbump.h
+++ b/linden/indra/newview/lldrawpoolbump.h
@@ -131,8 +131,7 @@ public:
131 131
132 LLImageGL* getBrightnessDarknessImage(LLViewerImage* src_image, U8 bump_code); 132 LLImageGL* getBrightnessDarknessImage(LLViewerImage* src_image, U8 bump_code);
133// LLImageGL* getTestImage(); 133// LLImageGL* getTestImage();
134 void addTextureStats(U8 bump, const LLUUID& base_image_id, 134 void addTextureStats(U8 bump, const LLUUID& base_image_id, F32 virtual_size);
135 F32 pixel_area, F32 texel_area_ratio, F32 cos_center_angle);
136 135
137 static void onSourceBrightnessLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ); 136 static void onSourceBrightnessLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata );
138 static void onSourceDarknessLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ); 137 static void onSourceDarknessLoaded( BOOL success, LLViewerImage *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata );
diff --git a/linden/indra/newview/lleventpoll.cpp b/linden/indra/newview/lleventpoll.cpp
index 845ae97..995c4e4 100644
--- a/linden/indra/newview/lleventpoll.cpp
+++ b/linden/indra/newview/lleventpoll.cpp
@@ -31,9 +31,9 @@
31 31
32#include "llviewerprecompiledheaders.h" 32#include "llviewerprecompiledheaders.h"
33 33
34#include "lleventpoll.h"
34#include "llappviewer.h" 35#include "llappviewer.h"
35#include "llagent.h" 36#include "llagent.h"
36#include "lleventpoll.h"
37 37
38#include "llhttpclient.h" 38#include "llhttpclient.h"
39#include "llhttpstatuscodes.h" 39#include "llhttpstatuscodes.h"
@@ -41,6 +41,7 @@
41#include "lltimer.h" 41#include "lltimer.h"
42#include "llviewerregion.h" 42#include "llviewerregion.h"
43#include "message.h" 43#include "message.h"
44#include "lltrans.h"
44 45
45namespace 46namespace
46{ 47{
@@ -225,11 +226,15 @@ namespace
225 // They are essentially disconnected from the region even though some things may still work. 226 // They are essentially disconnected from the region even though some things may still work.
226 // Since things won't get better until they relog we force a disconnect now. 227 // Since things won't get better until they relog we force a disconnect now.
227 228
228 // *NOTE:Mani - This force disconnect was causing logouts even when disconnected 229 // *NOTE:Mani - The following condition check to see if this failing event poll
229 // from neighboring regions. 230 // is attached to the Agent's main region. If so we disconnect the viewer.
230 // *FIX:Mani We may want to re enable forceDisconnect for the agents main region. 231 // Else... its a child region and we just leave the dead event poll stopped and
231 // *FIX:Mani If reimplemting Translate!!!! 232 // continue running.
232 // LLAppViewer::instance()->forceDisconnect("You have been disconnected from the region you were in."); 233 if(gAgent.getRegion() && gAgent.getRegion()->getHost().getIPandPort() == mSender)
234 {
235 llwarns << "Forcing disconnect due to stalled main region event poll." << llendl;
236 LLAppViewer::instance()->forceDisconnect(LLTrans::getString("AgentLostConnection"));
237 }
233 } 238 }
234 } 239 }
235 240
diff --git a/linden/indra/newview/llfloaterinspect.cpp b/linden/indra/newview/llfloaterinspect.cpp
index 7839729..b94efb9 100644
--- a/linden/indra/newview/llfloaterinspect.cpp
+++ b/linden/indra/newview/llfloaterinspect.cpp
@@ -213,6 +213,12 @@ void LLFloaterInspect::refresh()
213 LLSD row; 213 LLSD row;
214 char time[MAX_STRING]; 214 char time[MAX_STRING];
215 std::string owner_name, creator_name; 215 std::string owner_name, creator_name;
216
217 if (obj->mCreationDate == 0)
218 { // Don't have valid information from the server, so skip this one
219 continue;
220 }
221
216 time_t timestamp = (time_t) (obj->mCreationDate/1000000); 222 time_t timestamp = (time_t) (obj->mCreationDate/1000000);
217 LLStringUtil::copy(time, ctime(&timestamp), MAX_STRING); 223 LLStringUtil::copy(time, ctime(&timestamp), MAX_STRING);
218 time[24] = '\0'; 224 time[24] = '\0';
diff --git a/linden/indra/newview/llfloaterlagmeter.cpp b/linden/indra/newview/llfloaterlagmeter.cpp
index 33647ec..2367c4d 100644
--- a/linden/indra/newview/llfloaterlagmeter.cpp
+++ b/linden/indra/newview/llfloaterlagmeter.cpp
@@ -183,7 +183,7 @@ void LLFloaterLagMeter::determineClient()
183 { 183 {
184 mClientCause->setText( getString("client_texture_loading_cause_msg", mStringArgs) ); 184 mClientCause->setText( getString("client_texture_loading_cause_msg", mStringArgs) );
185 } 185 }
186 else if(LLViewerImage::sBoundTextureMemory > LLViewerImage::sMaxBoundTextureMem) 186 else if((LLViewerImage::sBoundTextureMemory >> 20) > LLViewerImage::sMaxBoundTextureMem)
187 { 187 {
188 mClientCause->setText( getString("client_texture_memory_cause_msg", mStringArgs) ); 188 mClientCause->setText( getString("client_texture_memory_cause_msg", mStringArgs) );
189 } 189 }
diff --git a/linden/indra/newview/llfloatervoicedevicesettings.cpp b/linden/indra/newview/llfloatervoicedevicesettings.cpp
index 7192c4f..ad9d776 100644
--- a/linden/indra/newview/llfloatervoicedevicesettings.cpp
+++ b/linden/indra/newview/llfloatervoicedevicesettings.cpp
@@ -85,14 +85,15 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()
85void LLPanelVoiceDeviceSettings::draw() 85void LLPanelVoiceDeviceSettings::draw()
86{ 86{
87 // let user know that volume indicator is not yet available 87 // let user know that volume indicator is not yet available
88 childSetVisible("wait_text", !gVoiceClient->inTuningMode()); 88 bool is_in_tuning_mode = gVoiceClient->inTuningMode();
89 childSetVisible("wait_text", !is_in_tuning_mode);
89 90
90 LLPanel::draw(); 91 LLPanel::draw();
91 92
92 F32 voice_power = gVoiceClient->tuningGetEnergy(); 93 F32 voice_power = gVoiceClient->tuningGetEnergy();
93 S32 discrete_power = 0; 94 S32 discrete_power = 0;
94 95
95 if (!gVoiceClient->inTuningMode()) 96 if (!is_in_tuning_mode)
96 { 97 {
97 discrete_power = 0; 98 discrete_power = 0;
98 } 99 }
@@ -101,7 +102,7 @@ void LLPanelVoiceDeviceSettings::draw()
101 discrete_power = llmin(4, llfloor((voice_power / LLVoiceClient::OVERDRIVEN_POWER_LEVEL) * 4.f)); 102 discrete_power = llmin(4, llfloor((voice_power / LLVoiceClient::OVERDRIVEN_POWER_LEVEL) * 4.f));
102 } 103 }
103 104
104 if (gVoiceClient->inTuningMode()) 105 if (is_in_tuning_mode)
105 { 106 {
106 for(S32 power_bar_idx = 0; power_bar_idx < 5; power_bar_idx++) 107 for(S32 power_bar_idx = 0; power_bar_idx < 5; power_bar_idx++)
107 { 108 {
@@ -136,7 +137,11 @@ void LLPanelVoiceDeviceSettings::apply()
136 } 137 }
137 138
138 // assume we are being destroyed by closing our embedding window 139 // assume we are being destroyed by closing our embedding window
139 gSavedSettings.setF32("AudioLevelMic", mMicVolume); 140 LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider");
141 if(volume_slider)
142 {
143 gSavedSettings.setF32("AudioLevelMic", (F32)volume_slider->getValue().asReal());
144 }
140} 145}
141 146
142void LLPanelVoiceDeviceSettings::cancel() 147void LLPanelVoiceDeviceSettings::cancel()
@@ -149,6 +154,13 @@ void LLPanelVoiceDeviceSettings::cancel()
149 154
150 if(mCtrlOutputDevices) 155 if(mCtrlOutputDevices)
151 mCtrlOutputDevices->setSimple(mOutputDevice); 156 mCtrlOutputDevices->setSimple(mOutputDevice);
157
158 gSavedSettings.setF32("AudioLevelMic", mMicVolume);
159 LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider");
160 if(volume_slider)
161 {
162 volume_slider->setValue(mMicVolume);
163 }
152} 164}
153 165
154void LLPanelVoiceDeviceSettings::refresh() 166void LLPanelVoiceDeviceSettings::refresh()
@@ -156,8 +168,8 @@ void LLPanelVoiceDeviceSettings::refresh()
156 //grab current volume 168 //grab current volume
157 LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); 169 LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider");
158 // set mic volume tuning slider based on last mic volume setting 170 // set mic volume tuning slider based on last mic volume setting
159 mMicVolume = (F32)volume_slider->getValue().asReal(); 171 F32 current_volume = (F32)volume_slider->getValue().asReal();
160 gVoiceClient->tuningSetMicVolume(mMicVolume); 172 gVoiceClient->tuningSetMicVolume(current_volume);
161 173
162 // Fill in popup menus 174 // Fill in popup menus
163 mCtrlInputDevices = getChild<LLComboBox>("voice_input_device"); 175 mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");
@@ -247,13 +259,19 @@ void LLPanelVoiceDeviceSettings::onClose(bool app_quitting)
247// static 259// static
248void LLPanelVoiceDeviceSettings::onCommitInputDevice(LLUICtrl* ctrl, void* user_data) 260void LLPanelVoiceDeviceSettings::onCommitInputDevice(LLUICtrl* ctrl, void* user_data)
249{ 261{
250 gSavedSettings.setString("VoiceInputAudioDevice", ctrl->getValue().asString()); 262 if(gVoiceClient)
263 {
264 gVoiceClient->setCaptureDevice(ctrl->getValue().asString());
265 }
251} 266}
252 267
253// static 268// static
254void LLPanelVoiceDeviceSettings::onCommitOutputDevice(LLUICtrl* ctrl, void* user_data) 269void LLPanelVoiceDeviceSettings::onCommitOutputDevice(LLUICtrl* ctrl, void* user_data)
255{ 270{
256 gSavedSettings.setString("VoiceOutputAudioDevice", ctrl->getValue().asString()); 271 if(gVoiceClient)
272 {
273 gVoiceClient->setRenderDevice(ctrl->getValue().asString());
274 }
257} 275}
258 276
259// 277//
diff --git a/linden/indra/newview/llfloaterworldmap.cpp b/linden/indra/newview/llfloaterworldmap.cpp
index 815282c..3e35151 100644
--- a/linden/indra/newview/llfloaterworldmap.cpp
+++ b/linden/indra/newview/llfloaterworldmap.cpp
@@ -743,7 +743,7 @@ void LLFloaterWorldMap::updateLocation()
743void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord) 743void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord)
744{ 744{
745 LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromName(region_name); 745 LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromName(region_name);
746 z_coord = llclamp(z_coord, 0, 1000); 746 z_coord = llclamp(z_coord, 0, 4096);
747 if (sim_info) 747 if (sim_info)
748 { 748 {
749 LLVector3 local_pos; 749 LLVector3 local_pos;
diff --git a/linden/indra/newview/llhudeffectpointat.cpp b/linden/indra/newview/llhudeffectpointat.cpp
index d4fc57d..35131cc 100644
--- a/linden/indra/newview/llhudeffectpointat.cpp
+++ b/linden/indra/newview/llhudeffectpointat.cpp
@@ -441,8 +441,10 @@ bool LLHUDEffectPointAt::calcTargetPosition()
441 441
442 mTargetPos -= mSourceObject->getRenderPosition(); 442 mTargetPos -= mSourceObject->getRenderPosition();
443 443
444 if (!mTargetPos.isFinite()) 444 if (!llfinite(mTargetPos.lengthSquared()))
445 {
445 return false; 446 return false;
447 }
446 448
447 if (mSourceObject->isAvatar()) 449 if (mSourceObject->isAvatar())
448 { 450 {
diff --git a/linden/indra/newview/llhudicon.cpp b/linden/indra/newview/llhudicon.cpp
index 3658b8e..bfc88de 100644
--- a/linden/indra/newview/llhudicon.cpp
+++ b/linden/indra/newview/llhudicon.cpp
@@ -273,7 +273,7 @@ BOOL LLHUDIcon::lineSegmentIntersect(const LLVector3& start, const LLVector3& en
273 LLVector3 dir = end-start; 273 LLVector3 dir = end-start;
274 274
275 if (LLTriangleRayIntersect(upper_right, upper_left, lower_right, start, dir, NULL, NULL, &t, FALSE) || 275 if (LLTriangleRayIntersect(upper_right, upper_left, lower_right, start, dir, NULL, NULL, &t, FALSE) ||
276 LLTriangleRayIntersect(lower_left, lower_right, upper_left, start, dir, NULL, NULL, &t, FALSE)) 276 LLTriangleRayIntersect(upper_left, lower_left, lower_right, start, dir, NULL, NULL, &t, FALSE))
277 { 277 {
278 if (intersection) 278 if (intersection)
279 { 279 {
diff --git a/linden/indra/newview/lllogchat.cpp b/linden/indra/newview/lllogchat.cpp
index 0c2c1be..95b626b 100644
--- a/linden/indra/newview/lllogchat.cpp
+++ b/linden/indra/newview/lllogchat.cpp
@@ -106,7 +106,8 @@ void LLLogChat::loadHistory(std::string filename , void (*callback)(ELogLineType
106{ 106{
107 if(!filename.size()) 107 if(!filename.size())
108 { 108 {
109 llerrs << "Filename is Empty!" << llendl; 109 llwarns << "Filename is Empty!" << llendl;
110 return ;
110 } 111 }
111 112
112 LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "r"); /*Flawfinder: ignore*/ 113 LLFILE* fptr = LLFile::fopen(makeLogFileName(filename), "r"); /*Flawfinder: ignore*/
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp
index d00a8c8..a9bf4b3 100644
--- a/linden/indra/newview/llmutelist.cpp
+++ b/linden/indra/newview/llmutelist.cpp
@@ -71,6 +71,24 @@
71#include "llviewerobject.h" 71#include "llviewerobject.h"
72#include "llviewerobjectlist.h" 72#include "llviewerobjectlist.h"
73 73
74namespace
75{
76 // This method is used to return an object to mute given an object id.
77 // Its used by the LLMute constructor and LLMuteList::isMuted.
78 LLViewerObject* get_object_to_mute_from_id(LLUUID object_id)
79 {
80 LLViewerObject *objectp = gObjectList.findObject(object_id);
81 if ((objectp) && (!objectp->isAvatar()))
82 {
83 LLViewerObject *parentp = (LLViewerObject *)objectp->getParent();
84 if (parentp && parentp->getID() != gAgent.getID())
85 {
86 objectp = parentp;
87 }
88 }
89 return objectp;
90 }
91}
74 92
75// "emptymutelist" 93// "emptymutelist"
76class LLDispatchEmptyMuteList : public LLDispatchHandler 94class LLDispatchEmptyMuteList : public LLDispatchHandler
@@ -105,15 +123,21 @@ LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags)
105 mFlags(flags) 123 mFlags(flags)
106{ 124{
107 // muting is done by root objects only - try to find this objects root 125 // muting is done by root objects only - try to find this objects root
108 LLViewerObject *objectp = gObjectList.findObject(mID); 126 LLViewerObject* mute_object = get_object_to_mute_from_id(id);
109 if ((objectp) && (!objectp->isAvatar())) 127 if(mute_object && mute_object->getID() != id)
110 { 128 {
111 LLViewerObject *parentp = (LLViewerObject *)objectp->getParent(); 129 mID = mute_object->getID();
112 if (parentp) 130 LLNameValue* firstname = mute_object->getNVPair("FirstName");
131 LLNameValue* lastname = mute_object->getNVPair("LastName");
132 if (firstname && lastname)
113 { 133 {
114 mID = parentp->getID(); 134 mName.assign( firstname->getString() );
135 mName.append(" ");
136 mName.append( lastname->getString() );
115 } 137 }
138 mType = mute_object->isAvatar() ? AGENT : OBJECT;
116 } 139 }
140
117} 141}
118 142
119 143
@@ -662,19 +686,10 @@ BOOL LLMuteList::saveToFile(const std::string& filename)
662 686
663BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) const 687BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) const
664{ 688{
665 LLUUID id_to_check = id;
666
667 // for objects, check for muting on their parent prim 689 // for objects, check for muting on their parent prim
668 LLViewerObject *objectp = gObjectList.findObject(id); 690 LLViewerObject* mute_object = get_object_to_mute_from_id(id);
669 if ((objectp) && (!objectp->isAvatar())) 691 LLUUID id_to_check = (mute_object) ? mute_object->getID() : id;
670 { 692
671 LLViewerObject *parentp = (LLViewerObject *)objectp->getParent();
672 if (parentp)
673 {
674 id_to_check = parentp->getID();
675 }
676 }
677
678 // don't need name or type for lookup 693 // don't need name or type for lookup
679 LLMute mute(id_to_check); 694 LLMute mute(id_to_check);
680 mute_set_t::const_iterator mute_it = mMutes.find(mute); 695 mute_set_t::const_iterator mute_it = mMutes.find(mute);
diff --git a/linden/indra/newview/llnotify.cpp b/linden/indra/newview/llnotify.cpp
index d584120..9e837a6 100644
--- a/linden/indra/newview/llnotify.cpp
+++ b/linden/indra/newview/llnotify.cpp
@@ -971,10 +971,12 @@ LLNotifyBox * LLNotifyBoxView::getFirstNontipBox() const
971 iter++) 971 iter++)
972 { 972 {
973 // hack! *TODO: Integrate llnotify and llgroupnotify 973 // hack! *TODO: Integrate llnotify and llgroupnotify
974 LLView* view = *iter; 974 if(isGroupNotifyBox(*iter))
975 if (view->getName() == "groupnotify") 975 {
976 continue; 976 continue;
977 LLNotifyBox* box = static_cast<LLNotifyBox*>(view); 977 }
978
979 LLNotifyBox* box = (LLNotifyBox*)(*iter);
978 if(!box->isTip() && !box->isDead()) 980 if(!box->isTip() && !box->isDead())
979 { 981 {
980 return box; 982 return box;
@@ -988,13 +990,23 @@ void LLNotifyBoxView::showOnly(LLView * view)
988 if(view) 990 if(view)
989 { 991 {
990 // assumes that the argument is actually a child 992 // assumes that the argument is actually a child
991 LLNotifyBox * shown = static_cast<LLNotifyBox*>(view); 993 LLNotifyBox * shown = dynamic_cast<LLNotifyBox*>(view);
994 if(!shown)
995 {
996 return ;
997 }
998
992 // make every other notification invisible 999 // make every other notification invisible
993 for(child_list_const_iter_t iter = getChildList()->begin(); 1000 for(child_list_const_iter_t iter = getChildList()->begin();
994 iter != getChildList()->end(); 1001 iter != getChildList()->end();
995 iter++) 1002 iter++)
996 { 1003 {
997 LLNotifyBox * box = static_cast<LLNotifyBox*>(*iter); 1004 if(isGroupNotifyBox(*iter))
1005 {
1006 continue;
1007 }
1008
1009 LLNotifyBox * box = (LLNotifyBox*)(*iter);
998 if(box != view && box->getVisible() && !box->isTip()) 1010 if(box != view && box->getVisible() && !box->isTip())
999 { 1011 {
1000 box->setVisible(FALSE); 1012 box->setVisible(FALSE);
@@ -1014,6 +1026,11 @@ void LLNotifyBoxView::purgeMessagesMatching(const Matcher& matcher)
1014 iter != notification_queue.end(); 1026 iter != notification_queue.end();
1015 iter++) 1027 iter++)
1016 { 1028 {
1029 if(isGroupNotifyBox(*iter))
1030 {
1031 continue;
1032 }
1033
1017 LLNotifyBox* notification = (LLNotifyBox*)*iter; 1034 LLNotifyBox* notification = (LLNotifyBox*)*iter;
1018 if(matcher.matches(notification->getNotifyCallback(), notification->getUserData())) 1035 if(matcher.matches(notification->getNotifyCallback(), notification->getUserData()))
1019 { 1036 {
@@ -1021,3 +1038,14 @@ void LLNotifyBoxView::purgeMessagesMatching(const Matcher& matcher)
1021 } 1038 }
1022 } 1039 }
1023} 1040}
1041
1042bool LLNotifyBoxView::isGroupNotifyBox(const LLView* view) const
1043{
1044 if (view->getName() == "groupnotify")
1045 {
1046 return TRUE ;
1047 }
1048
1049 return FALSE ;
1050}
1051
diff --git a/linden/indra/newview/llnotify.h b/linden/indra/newview/llnotify.h
index 6c598e1..a653d19 100644
--- a/linden/indra/newview/llnotify.h
+++ b/linden/indra/newview/llnotify.h
@@ -179,6 +179,9 @@ public:
179 // Walks the list and removes any stacked messages for which the given matcher returns TRUE. 179 // Walks the list and removes any stacked messages for which the given matcher returns TRUE.
180 // Useful when muting people and things in order to clear out any similar previously queued messages. 180 // Useful when muting people and things in order to clear out any similar previously queued messages.
181 void purgeMessagesMatching(const Matcher& matcher); 181 void purgeMessagesMatching(const Matcher& matcher);
182
183private:
184 bool isGroupNotifyBox(const LLView* view) const ;
182}; 185};
183 186
184// This view contains the stack of notification windows. 187// This view contains the stack of notification windows.
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp
index 0d7caac..d510775 100644
--- a/linden/indra/newview/llpaneldisplay.cpp
+++ b/linden/indra/newview/llpaneldisplay.cpp
@@ -797,7 +797,15 @@ void LLPanelDisplay::applyResolution()
797 gSavedSettings.setF32("FullScreenAspectRatio", mAspectRatio); 797 gSavedSettings.setF32("FullScreenAspectRatio", mAspectRatio);
798 } 798 }
799 799
800 gViewerWindow->requestResolutionUpdate(!mCtrlWindowed->get(), mCtrlFullScreen->getCurrentIndex()); 800 // Screen resolution
801 S32 num_resolutions;
802 LLWindow::LLWindowResolution* supported_resolutions =
803 gViewerWindow->getWindow()->getSupportedResolutions(num_resolutions);
804 U32 resIndex = mCtrlFullScreen->getCurrentIndex();
805 gSavedSettings.setS32("FullScreenWidth", supported_resolutions[resIndex].mWidth);
806 gSavedSettings.setS32("FullScreenHeight", supported_resolutions[resIndex].mHeight);
807
808 gViewerWindow->requestResolutionUpdate(!mCtrlWindowed->get());
801 809
802 send_agent_update(TRUE); 810 send_agent_update(TRUE);
803 811
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index 35a3b47..1af6e86 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -73,7 +73,9 @@ protected:
73 73
74 74
75LLPrefsIMImpl::LLPrefsIMImpl() 75LLPrefsIMImpl::LLPrefsIMImpl()
76 : LLPanel(std::string("IM Prefs Panel")) 76 : LLPanel(std::string("IM Prefs Panel")),
77 mGotPersonalInfo(false),
78 mOriginalIMViaEmail(false)
77{ 79{
78 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml"); 80 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml");
79} 81}
diff --git a/linden/indra/newview/llprefsvoice.cpp b/linden/indra/newview/llprefsvoice.cpp
index 568e1be..ae7c921 100644
--- a/linden/indra/newview/llprefsvoice.cpp
+++ b/linden/indra/newview/llprefsvoice.cpp
@@ -139,10 +139,21 @@ void LLPrefsVoice::apply()
139 gSavedSettings.setBOOL("VoiceCallsFriendsOnly", childGetValue("voice_call_friends_only_check")); 139 gSavedSettings.setBOOL("VoiceCallsFriendsOnly", childGetValue("voice_call_friends_only_check"));
140 gSavedSettings.setBOOL("PushToTalkToggle", childGetValue("push_to_talk_toggle_check")); 140 gSavedSettings.setBOOL("PushToTalkToggle", childGetValue("push_to_talk_toggle_check"));
141 gSavedSettings.setS32("VoiceEarLocation", childGetValue("ear_location")); 141 gSavedSettings.setS32("VoiceEarLocation", childGetValue("ear_location"));
142
143 LLFloaterVoiceDeviceSettings* voice_device_settings = LLFloaterVoiceDeviceSettings::getInstance();
144 if(voice_device_settings)
145 {
146 voice_device_settings->apply();
147 }
142} 148}
143 149
144void LLPrefsVoice::cancel() 150void LLPrefsVoice::cancel()
145{ 151{
152 LLFloaterVoiceDeviceSettings* voice_device_settings = LLFloaterVoiceDeviceSettings::getInstance();
153 if(voice_device_settings)
154 {
155 voice_device_settings->cancel();
156 }
146} 157}
147 158
148void LLPrefsVoice::setKey(KEY key) 159void LLPrefsVoice::setKey(KEY key)
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp
index e891599..0f5a98a 100644
--- a/linden/indra/newview/llselectmgr.cpp
+++ b/linden/indra/newview/llselectmgr.cpp
@@ -4968,6 +4968,7 @@ LLSelectNode::LLSelectNode(LLViewerObject* object, BOOL glow)
4968 mSitName = LLStringUtil::null; 4968 mSitName = LLStringUtil::null;
4969 mSilhouetteExists = FALSE; 4969 mSilhouetteExists = FALSE;
4970 mDuplicated = FALSE; 4970 mDuplicated = FALSE;
4971 mCreationDate = 0;
4971 4972
4972 saveColors(); 4973 saveColors();
4973} 4974}
@@ -5005,6 +5006,7 @@ LLSelectNode::LLSelectNode(const LLSelectNode& nodep)
5005 mFromTaskID = nodep.mFromTaskID; 5006 mFromTaskID = nodep.mFromTaskID;
5006 mTouchName = nodep.mTouchName; 5007 mTouchName = nodep.mTouchName;
5007 mSitName = nodep.mSitName; 5008 mSitName = nodep.mSitName;
5009 mCreationDate = nodep.mCreationDate;
5008 5010
5009 mSilhouetteVertices = nodep.mSilhouetteVertices; 5011 mSilhouetteVertices = nodep.mSilhouetteVertices;
5010 mSilhouetteNormals = nodep.mSilhouetteNormals; 5012 mSilhouetteNormals = nodep.mSilhouetteNormals;
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index 11882b2..a7c43ce 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -562,6 +562,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
562 { 562 {
563 mFetchTimer.reset(); 563 mFetchTimer.reset();
564 } 564 }
565
566 if (mImagePriority <= 0.0f)
567 {
568 if (mState < WRITE_TO_CACHE)
569 {
570 return true; // cancel request
571 }
572 }
565 573
566 if (mState == INIT) 574 if (mState == INIT)
567 { 575 {
@@ -708,7 +716,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
708 mFetcher->lockQueue(); 716 mFetcher->lockQueue();
709 mFetcher->removeFromNetworkQueue(this); 717 mFetcher->removeFromNetworkQueue(this);
710 mFetcher->unlockQueue(); 718 mFetcher->unlockQueue();
711 if (!mFormattedImage->getDataSize()) 719 if (mFormattedImage.isNull() || !mFormattedImage->getDataSize())
712 { 720 {
713 // processSimulatorPackets() failed 721 // processSimulatorPackets() failed
714// llwarns << "processSimulatorPackets() failed to load buffer" << llendl; 722// llwarns << "processSimulatorPackets() failed to load buffer" << llendl;
@@ -1050,17 +1058,22 @@ void LLTextureFetchWorker::removeFromCache()
1050 1058
1051bool LLTextureFetchWorker::processSimulatorPackets() 1059bool LLTextureFetchWorker::processSimulatorPackets()
1052{ 1060{
1061 if (mFormattedImage.isNull() || mRequestedSize < 0)
1062 {
1063 // not sure how we got here, but not a valid state, abort!
1064 mFormattedImage = NULL;
1065 return true;
1066 }
1067
1053 if (mLastPacket >= mFirstPacket) 1068 if (mLastPacket >= mFirstPacket)
1054 { 1069 {
1055 llassert_always(mFormattedImage) ;
1056 S32 buffer_size = mFormattedImage->getDataSize(); 1070 S32 buffer_size = mFormattedImage->getDataSize();
1057 for (S32 i = mFirstPacket; i<=mLastPacket; i++) 1071 for (S32 i = mFirstPacket; i<=mLastPacket; i++)
1058 { 1072 {
1059 llassert_always(mPackets[i]) ; 1073 llassert_always(mPackets[i]);
1060 buffer_size += mPackets[i]->mSize; 1074 buffer_size += mPackets[i]->mSize;
1061 } 1075 }
1062 bool have_all_data = mLastPacket >= mTotalPackets-1; 1076 bool have_all_data = mLastPacket >= mTotalPackets-1;
1063 llassert_always(mRequestedSize > 0);
1064 if (buffer_size >= mRequestedSize || have_all_data) 1077 if (buffer_size >= mRequestedSize || have_all_data)
1065 { 1078 {
1066 /// We have enough (or all) data 1079 /// We have enough (or all) data
@@ -1641,7 +1654,7 @@ void LLTextureFetch::sendRequestListToSimulators()
1641 S32 packet = req->mLastPacket + 1; 1654 S32 packet = req->mLastPacket + 1;
1642 gMessageSystem->nextBlockFast(_PREHASH_RequestImage); 1655 gMessageSystem->nextBlockFast(_PREHASH_RequestImage);
1643 gMessageSystem->addUUIDFast(_PREHASH_Image, req->mID); 1656 gMessageSystem->addUUIDFast(_PREHASH_Image, req->mID);
1644 gMessageSystem->addS8Fast(_PREHASH_DiscardLevel, (S8)req->mSimRequestedDiscard); 1657 gMessageSystem->addS8Fast(_PREHASH_DiscardLevel, (S8)req->mDesiredDiscard);
1645 gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, req->mImagePriority); 1658 gMessageSystem->addF32Fast(_PREHASH_DownloadPriority, req->mImagePriority);
1646 gMessageSystem->addU32Fast(_PREHASH_Packet, packet); 1659 gMessageSystem->addU32Fast(_PREHASH_Packet, packet);
1647 gMessageSystem->addU8Fast(_PREHASH_Type, req->mType); 1660 gMessageSystem->addU8Fast(_PREHASH_Type, req->mType);
diff --git a/linden/indra/newview/lltextureview.cpp b/linden/indra/newview/lltextureview.cpp
index 10a8950..14f62dd 100644
--- a/linden/indra/newview/lltextureview.cpp
+++ b/linden/indra/newview/lltextureview.cpp
@@ -162,7 +162,7 @@ void LLTextureBar::draw()
162 { 162 {
163 color = LLColor4::magenta; 163 color = LLColor4::magenta;
164 } 164 }
165 else if (mImagep->getDecodePriority() == 0.0f) 165 else if (mImagep->getDecodePriority() <= 0.0f)
166 { 166 {
167 color = LLColor4::grey; color[VALPHA] = .7f; 167 color = LLColor4::grey; color[VALPHA] = .7f;
168 } 168 }
@@ -612,6 +612,7 @@ void LLTextureView::draw()
612 { 612 {
613 pri = imagep->getDecodePriority(); 613 pri = imagep->getDecodePriority();
614 } 614 }
615 pri = llclamp(pri, 0.0f, HIGH_PRIORITY-1.f);
615 616
616 if (sDebugImages.find(imagep) != sDebugImages.end()) 617 if (sDebugImages.find(imagep) != sDebugImages.end())
617 { 618 {
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp
index cd9afeb..210fca4 100644
--- a/linden/indra/newview/llviewercontrol.cpp
+++ b/linden/indra/newview/llviewercontrol.cpp
@@ -555,6 +555,7 @@ void settings_setup_listeners()
555 gSavedSettings.getControl("VivoxDebugServerName")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 555 gSavedSettings.getControl("VivoxDebugServerName")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
556 gSavedSettings.getControl("VoiceInputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 556 gSavedSettings.getControl("VoiceInputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
557 gSavedSettings.getControl("VoiceOutputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 557 gSavedSettings.getControl("VoiceOutputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
558 gSavedSettings.getControl("AudioLevelMic")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
558 gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1)); 559 gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
559} 560}
560 561
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp
index f552e63..a4438a5 100644
--- a/linden/indra/newview/llviewerdisplay.cpp
+++ b/linden/indra/newview/llviewerdisplay.cpp
@@ -253,6 +253,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
253 gViewerWindow->performPick(); 253 gViewerWindow->performPick();
254 } 254 }
255 255
256 gViewerWindow->handlePerFrameHover();
256 257
257 LLAppViewer::instance()->pingMainloopTimeout("Display:CheckStates"); 258 LLAppViewer::instance()->pingMainloopTimeout("Display:CheckStates");
258 LLGLState::checkStates(); 259 LLGLState::checkStates();
diff --git a/linden/indra/newview/llviewerimage.cpp b/linden/indra/newview/llviewerimage.cpp
index 926de7d..33210cf 100644
--- a/linden/indra/newview/llviewerimage.cpp
+++ b/linden/indra/newview/llviewerimage.cpp
@@ -238,7 +238,6 @@ void LLViewerImage::init(bool firstinit)
238 mTexelsPerImage = 64.f*64.f; 238 mTexelsPerImage = 64.f*64.f;
239 mMaxVirtualSize = 0.f; 239 mMaxVirtualSize = 0.f;
240 mDiscardVirtualSize = 0.f; 240 mDiscardVirtualSize = 0.f;
241 mMaxCosAngle = -1.f;
242 mRequestedDiscardLevel = -1; 241 mRequestedDiscardLevel = -1;
243 mRequestedDownloadPriority = 0.f; 242 mRequestedDownloadPriority = 0.f;
244 mFullyLoaded = FALSE; 243 mFullyLoaded = FALSE;
@@ -422,20 +421,12 @@ BOOL LLViewerImage::createTexture(S32 usename/*= 0*/)
422 421
423//============================================================================ 422//============================================================================
424 423
425void LLViewerImage::addTextureStats(F32 pixel_area, 424void LLViewerImage::addTextureStats(F32 virtual_size) const // = 1.0
426 F32 texel_area_ratio, // = 1.0
427 F32 cos_center_angle) const // = 1.0
428{ 425{
429 F32 virtual_size = pixel_area / texel_area_ratio;
430 if (virtual_size > mMaxVirtualSize) 426 if (virtual_size > mMaxVirtualSize)
431 { 427 {
432 mMaxVirtualSize = virtual_size; 428 mMaxVirtualSize = virtual_size;
433 } 429 }
434 cos_center_angle = llclamp(cos_center_angle, -1.f, 1.f);
435 if (cos_center_angle > mMaxCosAngle)
436 {
437 mMaxCosAngle = cos_center_angle;
438 }
439} 430}
440 431
441void LLViewerImage::resetTextureStats(BOOL zero) 432void LLViewerImage::resetTextureStats(BOOL zero)
@@ -443,12 +434,10 @@ void LLViewerImage::resetTextureStats(BOOL zero)
443 if (zero) 434 if (zero)
444 { 435 {
445 mMaxVirtualSize = 0.0f; 436 mMaxVirtualSize = 0.0f;
446 mMaxCosAngle = -1.0f;
447 } 437 }
448 else if (getBoostLevel() != LLViewerImage::BOOST_SCULPTED) //don't decay sculpted prim textures 438 else
449 { 439 {
450 mMaxVirtualSize -= mMaxVirtualSize * .10f; // decay by 5%/update 440 mMaxVirtualSize -= mMaxVirtualSize * .10f; // decay by 5%/update
451 mMaxCosAngle = -1.0f;
452 } 441 }
453} 442}
454 443
@@ -548,7 +537,7 @@ void LLViewerImage::processTextureStats()
548 if ((sDesiredDiscardBias > 0.0f) && 537 if ((sDesiredDiscardBias > 0.0f) &&
549 (current_discard >= 0 && mDesiredDiscardLevel >= current_discard)) 538 (current_discard >= 0 && mDesiredDiscardLevel >= current_discard))
550 { 539 {
551 if ( sBoundTextureMemory > sMaxBoundTextureMem*texmem_middle_bound_scale) 540 if ( (sBoundTextureMemory >> 20) > sMaxBoundTextureMem*texmem_middle_bound_scale)
552 { 541 {
553 // Limit the amount of GL memory bound each frame 542 // Limit the amount of GL memory bound each frame
554 if (mDesiredDiscardLevel > current_discard) 543 if (mDesiredDiscardLevel > current_discard)
@@ -556,7 +545,7 @@ void LLViewerImage::processTextureStats()
556 increase_discard = TRUE; 545 increase_discard = TRUE;
557 } 546 }
558 } 547 }
559 if ( sTotalTextureMemory > sMaxTotalTextureMem*texmem_middle_bound_scale) 548 if ( (sTotalTextureMemory >> 20) > sMaxTotalTextureMem*texmem_middle_bound_scale)
560 { 549 {
561 // Only allow GL to have 2x the video card memory 550 // Only allow GL to have 2x the video card memory
562 if (!getBoundRecently()) 551 if (!getBoundRecently())
@@ -598,7 +587,7 @@ F32 LLViewerImage::calcDecodePriority()
598 F32 priority; 587 F32 priority;
599 S32 cur_discard = getDiscardLevel(); 588 S32 cur_discard = getDiscardLevel();
600 bool have_all_data = (cur_discard >= 0 && (cur_discard <= mDesiredDiscardLevel)); 589 bool have_all_data = (cur_discard >= 0 && (cur_discard <= mDesiredDiscardLevel));
601 F32 pixel_priority = fsqrtf(mMaxVirtualSize) * (1.f + mMaxCosAngle); 590 F32 pixel_priority = fsqrtf(mMaxVirtualSize);
602 const S32 MIN_NOT_VISIBLE_FRAMES = 30; // NOTE: this function is not called every frame 591 const S32 MIN_NOT_VISIBLE_FRAMES = 30; // NOTE: this function is not called every frame
603 mDecodeFrame++; 592 mDecodeFrame++;
604 if (pixel_priority > 0.f) 593 if (pixel_priority > 0.f)
@@ -638,17 +627,12 @@ F32 LLViewerImage::calcDecodePriority()
638 return mDecodePriority; 627 return mDecodePriority;
639 } 628 }
640 } 629 }
641 else if ((mBoostLevel == LLViewerImage::BOOST_SCULPTED) && !have_all_data)
642 {
643 // Sculpted images are small, treat them like they always have no data.
644 priority = 900000.f;
645 }
646 else if (cur_discard < 0) 630 else if (cur_discard < 0)
647 { 631 {
648 // We don't have any data yet, so we don't know the size of the image, treat as 1024x1024 632 // We don't have any data yet, so we don't know the size of the image, treat as 32x32
649// priority = 900000.f; 633// priority = 900000.f;
650 static const F64 log_2 = log(2.0); 634 static const F64 log_2 = log(2.0);
651 F32 desired = (F32)(log(1024.0/pixel_priority) / log_2); 635 F32 desired = (F32)(log(32.0/pixel_priority) / log_2);
652 S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired + 1; 636 S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired + 1;
653 ddiscard = llclamp(ddiscard, 1, 9); 637 ddiscard = llclamp(ddiscard, 1, 9);
654 priority = ddiscard*100000.f; 638 priority = ddiscard*100000.f;
@@ -702,14 +686,7 @@ F32 LLViewerImage::maxDecodePriority()
702void LLViewerImage::setDecodePriority(F32 priority) 686void LLViewerImage::setDecodePriority(F32 priority)
703{ 687{
704 llassert(!mInImageList); 688 llassert(!mInImageList);
705 if (priority < 0.0f) 689 mDecodePriority = priority;
706 {
707 mDecodePriority = calcDecodePriority();
708 }
709 else
710 {
711 mDecodePriority = priority;
712 }
713} 690}
714 691
715void LLViewerImage::setBoostLevel(S32 level) 692void LLViewerImage::setBoostLevel(S32 level)
@@ -766,6 +743,7 @@ bool LLViewerImage::updateFetch()
766 S32 current_discard = getDiscardLevel(); 743 S32 current_discard = getDiscardLevel();
767 S32 desired_discard = getDesiredDiscardLevel(); 744 S32 desired_discard = getDesiredDiscardLevel();
768 F32 decode_priority = getDecodePriority(); 745 F32 decode_priority = getDecodePriority();
746 decode_priority = llmax(decode_priority, 0.0f);
769 747
770 if (mIsFetching) 748 if (mIsFetching)
771 { 749 {
@@ -783,7 +761,7 @@ bool LLViewerImage::updateFetch()
783 else 761 else
784 { 762 {
785 mFetchState = LLAppViewer::getTextureFetch()->getFetchState(mID, mDownloadProgress, mRequestedDownloadPriority, 763 mFetchState = LLAppViewer::getTextureFetch()->getFetchState(mID, mDownloadProgress, mRequestedDownloadPriority,
786 mFetchPriority, mFetchDeltaTime, mRequestDeltaTime); 764 mFetchPriority, mFetchDeltaTime, mRequestDeltaTime);
787 } 765 }
788 766
789 // We may have data ready regardless of whether or not we are finished (e.g. waiting on write) 767 // We may have data ready regardless of whether or not we are finished (e.g. waiting on write)
@@ -817,7 +795,7 @@ bool LLViewerImage::updateFetch()
817 795
818 if (!mIsFetching) 796 if (!mIsFetching)
819 { 797 {
820 if (mRawDiscardLevel < 0 || mRawDiscardLevel == INVALID_DISCARD_LEVEL) 798 if ((decode_priority > 0) && (mRawDiscardLevel < 0 || mRawDiscardLevel == INVALID_DISCARD_LEVEL))
821 { 799 {
822 // We finished but received no data 800 // We finished but received no data
823 if (current_discard < 0) 801 if (current_discard < 0)
@@ -840,9 +818,9 @@ bool LLViewerImage::updateFetch()
840 destroyRawImage(); 818 destroyRawImage();
841 } 819 }
842 } 820 }
843 else if (mDecodePriority >= 0.f) 821 else
844 { 822 {
845 LLAppViewer::getTextureFetch()->updateRequestPriority(mID, mDecodePriority); 823 LLAppViewer::getTextureFetch()->updateRequestPriority(mID, decode_priority);
846 } 824 }
847 } 825 }
848 826
diff --git a/linden/indra/newview/llviewerimage.h b/linden/indra/newview/llviewerimage.h
index 82da8d2..c735cb0 100644
--- a/linden/indra/newview/llviewerimage.h
+++ b/linden/indra/newview/llviewerimage.h
@@ -187,27 +187,7 @@ public:
187 187
188 // New methods for determining image quality/priority 188 // New methods for determining image quality/priority
189 // texel_area_ratio is ("scaled" texel area)/(original texel area), approximately. 189 // texel_area_ratio is ("scaled" texel area)/(original texel area), approximately.
190 void addTextureStats(F32 pixel_area) const 190 void addTextureStats(F32 virtual_size) const;
191 {
192 mMaxCosAngle = 1.0f;
193 if (pixel_area > mMaxVirtualSize)
194 {
195 mMaxVirtualSize = pixel_area;
196 }
197 }
198 void addTextureStats(F32 pixel_area,
199 F32 texel_area_ratio) const
200 {
201 mMaxCosAngle = 1.0f;
202 F32 virtual_size = pixel_area / texel_area_ratio;
203 if (virtual_size > mMaxVirtualSize)
204 {
205 mMaxVirtualSize = virtual_size;
206 }
207 }
208 void addTextureStats(F32 pixel_area,
209 F32 texel_area_ratio,
210 F32 cos_center_angle) const;
211 void resetTextureStats(BOOL zero = FALSE); 191 void resetTextureStats(BOOL zero = FALSE);
212 192
213 // Process image stats to determine priority/quality requirements. 193 // Process image stats to determine priority/quality requirements.
@@ -304,7 +284,6 @@ public:
304 284
305 // Data used for calculating required image priority/quality level/decimation 285 // Data used for calculating required image priority/quality level/decimation
306 mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need? 286 mutable F32 mMaxVirtualSize; // The largest virtual size of the image, in pixels - how much data to we need?
307 mutable F32 mMaxCosAngle; // The largest cos of the angle between camera X vector and the object
308 287
309 F32 mTexelsPerImage; // Texels per image. 288 F32 mTexelsPerImage; // Texels per image.
310 F32 mDiscardVirtualSize; // Virtual size used to calculate desired discard 289 F32 mDiscardVirtualSize; // Virtual size used to calculate desired discard
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 5dbfab0..e48f6ae 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -500,10 +500,10 @@ void LLViewerImageList::updateImages(F32 max_time)
500{ 500{
501 sNumImagesStat.addValue(sNumImages); 501 sNumImagesStat.addValue(sNumImages);
502 sNumRawImagesStat.addValue(LLImageRaw::sRawImageCount); 502 sNumRawImagesStat.addValue(LLImageRaw::sRawImageCount);
503 sGLTexMemStat.addValue(LLImageGL::sGlobalTextureMemory/(1024.f*1024.f)); 503 sGLTexMemStat.addValue((F32)(LLImageGL::sGlobalTextureMemory >> 20));
504 sGLBoundMemStat.addValue(LLImageGL::sBoundTextureMemory/(1024.f*1024.f)); 504 sGLBoundMemStat.addValue((F32)(LLImageGL::sBoundTextureMemory >> 20));
505 sRawMemStat.addValue(LLImageRaw::sGlobalRawMemory/(1024.f*1024.f)); 505 sRawMemStat.addValue((F32)(LLImageRaw::sGlobalRawMemory >> 20));
506 sFormattedMemStat.addValue(LLImageFormatted::sGlobalFormattedMemory/(1024.f*1024.f)); 506 sFormattedMemStat.addValue((F32)(LLImageFormatted::sGlobalFormattedMemory >> 20));
507 507
508 updateImagesDecodePriorities(); 508 updateImagesDecodePriorities();
509 max_time -= updateImagesFetchTextures(max_time); 509 max_time -= updateImagesFetchTextures(max_time);
@@ -588,9 +588,12 @@ void LLViewerImageList::updateImagesDecodePriorities()
588 588
589 imagep->processTextureStats(); 589 imagep->processTextureStats();
590 F32 old_priority = imagep->getDecodePriority(); 590 F32 old_priority = imagep->getDecodePriority();
591 F32 old_priority_test = llmax(old_priority, 0.0f);
591 F32 decode_priority = imagep->calcDecodePriority(); 592 F32 decode_priority = imagep->calcDecodePriority();
593 F32 decode_priority_test = llmax(decode_priority, 0.0f);
592 // Ignore < 20% difference 594 // Ignore < 20% difference
593 if ((decode_priority < old_priority * .8f || decode_priority > old_priority * 1.25f)) 595 if ((decode_priority_test < old_priority_test * .8f) ||
596 (decode_priority_test > old_priority_test * 1.25f))
594 { 597 {
595 removeImageFromList(imagep); 598 removeImageFromList(imagep);
596 imagep->setDecodePriority(decode_priority); 599 imagep->setDecodePriority(decode_priority);
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 2d64712..023c758 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -403,6 +403,7 @@ void force_error_llerror(void *);
403void force_error_bad_memory_access(void *); 403void force_error_bad_memory_access(void *);
404void force_error_infinite_loop(void *); 404void force_error_infinite_loop(void *);
405void force_error_software_exception(void *); 405void force_error_software_exception(void *);
406void force_error_driver_crash(void *);
406 407
407void handle_stopall(void*); 408void handle_stopall(void*);
408//void handle_hinge(void*); 409//void handle_hinge(void*);
@@ -936,6 +937,7 @@ void init_client_menu(LLMenuGL* menu)
936 sub->append(new LLMenuItemCallGL("Force LLError And Crash", &force_error_llerror)); 937 sub->append(new LLMenuItemCallGL("Force LLError And Crash", &force_error_llerror));
937 sub->append(new LLMenuItemCallGL("Force Bad Memory Access", &force_error_bad_memory_access)); 938 sub->append(new LLMenuItemCallGL("Force Bad Memory Access", &force_error_bad_memory_access));
938 sub->append(new LLMenuItemCallGL("Force Infinite Loop", &force_error_infinite_loop)); 939 sub->append(new LLMenuItemCallGL("Force Infinite Loop", &force_error_infinite_loop));
940 sub->append(new LLMenuItemCallGL("Force Driver Crash", &force_error_driver_crash));
939 sub->append(new LLMenuItemCallGL("Force Disconnect Viewer", &handle_disconnect_viewer)); 941 sub->append(new LLMenuItemCallGL("Force Disconnect Viewer", &handle_disconnect_viewer));
940 // *NOTE:Mani this isn't handled yet... sub->append(new LLMenuItemCallGL("Force Software Exception", &force_error_unhandled_exception)); 942 // *NOTE:Mani this isn't handled yet... sub->append(new LLMenuItemCallGL("Force Software Exception", &force_error_unhandled_exception));
941 sub->createJumpKeys(); 943 sub->createJumpKeys();
@@ -6921,6 +6923,11 @@ void force_error_software_exception(void *)
6921 LLAppViewer::instance()->forceErrorSoftwareException(); 6923 LLAppViewer::instance()->forceErrorSoftwareException();
6922} 6924}
6923 6925
6926void force_error_driver_crash(void *)
6927{
6928 LLAppViewer::instance()->forceErrorDriverCrash();
6929}
6930
6924class LLToolsUseSelectionForGrid : public view_listener_t 6931class LLToolsUseSelectionForGrid : public view_listener_t
6925{ 6932{
6926 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 6933 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
diff --git a/linden/indra/newview/llviewerpartsim.cpp b/linden/indra/newview/llviewerpartsim.cpp
index 529ec4d..c303fc5 100644
--- a/linden/indra/newview/llviewerpartsim.cpp
+++ b/linden/indra/newview/llviewerpartsim.cpp
@@ -53,6 +53,7 @@ const F32 PART_SIM_BOX_RAD = 0.5f*F_SQRT3*PART_SIM_BOX_SIDE;
53//static 53//static
54S32 LLViewerPartSim::sMaxParticleCount = 0; 54S32 LLViewerPartSim::sMaxParticleCount = 0;
55S32 LLViewerPartSim::sParticleCount = 0; 55S32 LLViewerPartSim::sParticleCount = 0;
56S32 LLViewerPartSim::sParticleCount2 = 0;
56// This controls how greedy individual particle burst sources are allowed to be, and adapts according to how near the particle-count limit we are. 57// This controls how greedy individual particle burst sources are allowed to be, and adapts according to how near the particle-count limit we are.
57F32 LLViewerPartSim::sParticleAdaptiveRate = 0.0625f; 58F32 LLViewerPartSim::sParticleAdaptiveRate = 0.0625f;
58F32 LLViewerPartSim::sParticleBurstRate = 0.5f; 59F32 LLViewerPartSim::sParticleBurstRate = 0.5f;
@@ -84,12 +85,16 @@ LLViewerPart::LLViewerPart() :
84{ 85{
85 LLMemType mt(LLMemType::MTYPE_PARTICLES); 86 LLMemType mt(LLMemType::MTYPE_PARTICLES);
86 mPartSourcep = NULL; 87 mPartSourcep = NULL;
88
89 ++LLViewerPartSim::sParticleCount2 ;
87} 90}
88 91
89LLViewerPart::~LLViewerPart() 92LLViewerPart::~LLViewerPart()
90{ 93{
91 LLMemType mt(LLMemType::MTYPE_PARTICLES); 94 LLMemType mt(LLMemType::MTYPE_PARTICLES);
92 mPartSourcep = NULL; 95 mPartSourcep = NULL;
96
97 --LLViewerPartSim::sParticleCount2 ;
93} 98}
94 99
95void LLViewerPart::init(LLPointer<LLViewerPartSource> sourcep, LLViewerImage *imagep, LLVPCallback cb) 100void LLViewerPart::init(LLPointer<LLViewerPartSource> sourcep, LLViewerImage *imagep, LLVPCallback cb)
@@ -263,6 +268,8 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt)
263 268
264 LLVector3 gravity(0.f, 0.f, GRAVITY); 269 LLVector3 gravity(0.f, 0.f, GRAVITY);
265 270
271 LLViewerPartSim::checkParticleCount(mParticles.size());
272
266 LLViewerRegion *regionp = getRegion(); 273 LLViewerRegion *regionp = getRegion();
267 S32 end = (S32) mParticles.size(); 274 S32 end = (S32) mParticles.size();
268 for (S32 i = 0 ; i < (S32)mParticles.size();) 275 for (S32 i = 0 ; i < (S32)mParticles.size();)
@@ -416,6 +423,8 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt)
416 gObjectList.killObject(mVOPartGroupp); 423 gObjectList.killObject(mVOPartGroupp);
417 mVOPartGroupp = NULL; 424 mVOPartGroupp = NULL;
418 } 425 }
426
427 LLViewerPartSim::checkParticleCount() ;
419} 428}
420 429
421 430
@@ -451,6 +460,19 @@ void LLViewerPartGroup::removeParticlesByID(const U32 source_id)
451// 460//
452// 461//
453 462
463//static
464void LLViewerPartSim::checkParticleCount(U32 size)
465{
466 if(LLViewerPartSim::sParticleCount2 != LLViewerPartSim::sParticleCount)
467 {
468 llerrs << "sParticleCount: " << LLViewerPartSim::sParticleCount << " ; sParticleCount2: " << LLViewerPartSim::sParticleCount2 << llendl ;
469 }
470
471 if(size > (U32)LLViewerPartSim::sParticleCount2)
472 {
473 llerrs << "curren particle size: " << LLViewerPartSim::sParticleCount2 << " array size: " << size << llendl ;
474 }
475}
454 476
455LLViewerPartSim::LLViewerPartSim() 477LLViewerPartSim::LLViewerPartSim()
456{ 478{
@@ -509,6 +531,12 @@ void LLViewerPartSim::addPart(LLViewerPart* part)
509 { 531 {
510 put(part); 532 put(part);
511 } 533 }
534 else
535 {
536 //delete the particle if can not add it in
537 delete part ;
538 part = NULL ;
539 }
512} 540}
513 541
514 542
@@ -544,7 +572,7 @@ LLViewerPartGroup *LLViewerPartSim::put(LLViewerPart* part)
544 if(!return_group) 572 if(!return_group)
545 { 573 {
546 llassert_always(part->mPosAgent.isFinite()); 574 llassert_always(part->mPosAgent.isFinite());
547 LLViewerPartGroup *groupp = createViewerPartGroup(part->mPosAgent, desired_size, part->mFlags & LLPartData::LL_PART_HUD); 575 LLViewerPartGroup *groupp = createViewerPartGroup(part->mPosAgent, desired_size, part->mFlags & LLPartData::LL_PART_HUD);
548 groupp->mUniformParticles = (part->mScale.mV[0] == part->mScale.mV[1] && 576 groupp->mUniformParticles = (part->mScale.mV[0] == part->mScale.mV[1] &&
549 !(part->mFlags & LLPartData::LL_PART_FOLLOW_VELOCITY_MASK)); 577 !(part->mFlags & LLPartData::LL_PART_FOLLOW_VELOCITY_MASK));
550 if (!groupp->addPart(part)) 578 if (!groupp->addPart(part))
diff --git a/linden/indra/newview/llviewerpartsim.h b/linden/indra/newview/llviewerpartsim.h
index 2524d6b..81394e6 100644
--- a/linden/indra/newview/llviewerpartsim.h
+++ b/linden/indra/newview/llviewerpartsim.h
@@ -197,6 +197,12 @@ protected:
197 static const F32 PART_THROTTLE_RESCALE; 197 static const F32 PART_THROTTLE_RESCALE;
198 static const F32 PART_ADAPT_RATE_MULT; 198 static const F32 PART_ADAPT_RATE_MULT;
199 static const F32 PART_ADAPT_RATE_MULT_RECIP; 199 static const F32 PART_ADAPT_RATE_MULT_RECIP;
200
201//debug use only
202public:
203 static S32 sParticleCount2;
204
205 static void checkParticleCount(U32 size = 0) ;
200}; 206};
201 207
202#endif // LL_LLVIEWERPARTSIM_H 208#endif // LL_LLVIEWERPARTSIM_H
diff --git a/linden/indra/newview/llviewerstats.cpp b/linden/indra/newview/llviewerstats.cpp
index 111fc14..0b4c0f3 100644
--- a/linden/indra/newview/llviewerstats.cpp
+++ b/linden/indra/newview/llviewerstats.cpp
@@ -40,6 +40,7 @@
40#include "llappviewer.h" 40#include "llappviewer.h"
41 41
42#include "pipeline.h" 42#include "pipeline.h"
43#include "lltexturefetch.h"
43#include "llviewerobjectlist.h" 44#include "llviewerobjectlist.h"
44#include "llviewerimagelist.h" 45#include "llviewerimagelist.h"
45#include "lltexlayer.h" 46#include "lltexlayer.h"
@@ -562,15 +563,12 @@ void update_statistics(U32 frame_count)
562 LLViewerStats::getInstance()->mAssetKBitStat.addValue(gTransferManager.getTransferBitsIn(LLTCT_ASSET)/1024.f); 563 LLViewerStats::getInstance()->mAssetKBitStat.addValue(gTransferManager.getTransferBitsIn(LLTCT_ASSET)/1024.f);
563 gTransferManager.resetTransferBitsIn(LLTCT_ASSET); 564 gTransferManager.resetTransferBitsIn(LLTCT_ASSET);
564 565
565 static S32 tex_bits_idle_count = 0; 566 if (LLAppViewer::getTextureFetch()->getNumRequests() == 0)
566 if (LLViewerImageList::sTextureBits == 0)
567 { 567 {
568 if (++tex_bits_idle_count >= 30) 568 gDebugTimers[0].pause();
569 gDebugTimers[0].pause();
570 } 569 }
571 else 570 else
572 { 571 {
573 tex_bits_idle_count = 0;
574 gDebugTimers[0].unpause(); 572 gDebugTimers[0].unpause();
575 } 573 }
576 574
@@ -761,12 +759,15 @@ void send_stats()
761// misc["int_2"] = LLFloaterDirectory::sNewSearchCount; // Steve: 1.18.6 759// misc["int_2"] = LLFloaterDirectory::sNewSearchCount; // Steve: 1.18.6
762// misc["int_1"] = LLSD::Integer(gSavedSettings.getU32("RenderQualityPerformance")); // Steve: 1.21 760// misc["int_1"] = LLSD::Integer(gSavedSettings.getU32("RenderQualityPerformance")); // Steve: 1.21
763// misc["int_2"] = LLSD::Integer(gFrameStalls); // Steve: 1.21 761// misc["int_2"] = LLSD::Integer(gFrameStalls); // Steve: 1.21
764 F32 unbaked_time = LLVOAvatar::sUnbakedTime / gFrameTime; 762
765 misc["int_1"] = LLSD::Integer(unbaked_time * 1000.f); // Steve: 1.22 763 F32 unbaked_time = LLVOAvatar::sUnbakedTime * 1000.f / gFrameTimeSeconds;
766 F32 grey_time = LLVOAvatar::sGreyTime / gFrameTime; 764 misc["int_1"] = LLSD::Integer(unbaked_time); // Steve: 1.22
767 misc["int_2"] = LLSD::Integer(grey_time * 1000.f); // Steve: 1.22 765 F32 grey_time = LLVOAvatar::sGreyTime * 1000.f / gFrameTimeSeconds;
766 misc["int_2"] = LLSD::Integer(grey_time); // Steve: 1.22
767
768 llinfos << "Misc Stats: int_1: " << misc["int_1"] << " int_2: " << misc["int_2"] << llendl;
769 llinfos << "Misc Stats: string_1: " << misc["string_1"] << " string_2: " << misc["string_2"] << llendl;
768 770
769 LLViewerStats::getInstance()->addToMessage(body); 771 LLViewerStats::getInstance()->addToMessage(body);
770
771 LLHTTPClient::post(url, body, new ViewerStatsResponder()); 772 LLHTTPClient::post(url, body, new ViewerStatsResponder());
772} 773}
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 2f49b67..1a9a208 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -918,7 +918,7 @@ BOOL LLViewerWindow::handleRightMouseDown(LLWindow *window, LLCoordGL pos, MASK
918 918
919 // *HACK: this should be rolled into the composite tool logic, not 919 // *HACK: this should be rolled into the composite tool logic, not
920 // hardcoded at the top level. 920 // hardcoded at the top level.
921 if (CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode()) 921 if (CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode() && LLToolMgr::getInstance()->getCurrentTool() != LLToolPie::getInstance())
922 { 922 {
923 // If the current tool didn't process the click, we should show 923 // If the current tool didn't process the click, we should show
924 // the pie menu. This can be done by passing the event to the pie 924 // the pie menu. This can be done by passing the event to the pie
@@ -2098,12 +2098,7 @@ void LLViewerWindow::reshape(S32 width, S32 height)
2098 gSavedSettings.setBOOL("FullScreen", mWantFullscreen); 2098 gSavedSettings.setBOOL("FullScreen", mWantFullscreen);
2099 2099
2100 // store new settings for the mode we are in, regardless 2100 // store new settings for the mode we are in, regardless
2101 if (mWindow->getFullscreen()) 2101 if (!mWindow->getFullscreen())
2102 {
2103 gSavedSettings.setS32("FullScreenWidth", width);
2104 gSavedSettings.setS32("FullScreenHeight", height);
2105 }
2106 else
2107 { 2102 {
2108 // Only save size if not maximized 2103 // Only save size if not maximized
2109 BOOL maximized = mWindow->getMaximized(); 2104 BOOL maximized = mWindow->getMaximized();
@@ -3586,6 +3581,16 @@ LLViewerObject* LLViewerWindow::cursorIntersect(S32 mouse_x, S32 mouse_y, F32 de
3586 // world coordinates of mouse 3581 // world coordinates of mouse
3587 LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y); 3582 LLVector3 mouse_direction_global = mouseDirectionGlobal(x,y);
3588 LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin(); 3583 LLVector3 mouse_point_global = LLViewerCamera::getInstance()->getOrigin();
3584
3585 //get near clip plane
3586 LLVector3 n = LLViewerCamera::getInstance()->getAtAxis();
3587 LLVector3 p = mouse_point_global + n * LLViewerCamera::getInstance()->getNear();
3588
3589 //project mouse point onto plane
3590 LLVector3 pos;
3591 line_plane(mouse_point_global, mouse_direction_global, p, n, pos);
3592 mouse_point_global = pos;
3593
3589 LLVector3 mouse_world_start = mouse_point_global; 3594 LLVector3 mouse_world_start = mouse_point_global;
3590 LLVector3 mouse_world_end = mouse_point_global + mouse_direction_global * depth; 3595 LLVector3 mouse_world_end = mouse_point_global + mouse_direction_global * depth;
3591 3596
@@ -4695,79 +4700,13 @@ void LLViewerWindow::getTargetWindow(BOOL& fullscreen, S32& width, S32& height)
4695 } 4700 }
4696} 4701}
4697 4702
4698bool LLViewerWindow::updateResolution() 4703void LLViewerWindow::requestResolutionUpdate(bool fullscreen_checked)
4699{
4700 if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio"))
4701 {
4702 getWindow()->setNativeAspectRatio(0.f);
4703 }
4704 else
4705 {
4706 getWindow()->setNativeAspectRatio(gSavedSettings.getF32("FullScreenAspectRatio"));
4707 }
4708
4709 reshape(getWindowDisplayWidth(), getWindowDisplayHeight());
4710
4711 // Screen resolution
4712 S32 num_resolutions;
4713 LLWindow::LLWindowResolution* supported_resolutions = getWindow()->getSupportedResolutions(num_resolutions);
4714
4715 // check if resolution has changed
4716 BOOL targetFullscreen;
4717 S32 targetWidth;
4718 S32 targetHeight;
4719
4720 getTargetWindow(targetFullscreen, targetWidth, targetHeight);
4721
4722 if ((mIsFullscreenChecked != (bool) targetFullscreen) ||
4723 (mIsFullscreenChecked &&
4724 (supported_resolutions[mCurrResolutionIndex].mWidth != targetWidth ||
4725 supported_resolutions[mCurrResolutionIndex].mHeight != targetHeight)
4726 ))
4727 {
4728 // change fullscreen resolution or switch in/out of windowed mode
4729 BOOL result;
4730
4731 BOOL logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
4732 if (mIsFullscreenChecked)
4733 {
4734 result = changeDisplaySettings(TRUE,
4735 LLCoordScreen( supported_resolutions[mCurrResolutionIndex].mWidth,
4736 supported_resolutions[mCurrResolutionIndex].mHeight),
4737 gSavedSettings.getBOOL("DisableVerticalSync"),
4738 logged_in);
4739 }
4740 else
4741 {
4742 result = changeDisplaySettings(FALSE,
4743 LLCoordScreen(gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight")),
4744 TRUE,
4745 logged_in);
4746 }
4747 if (!result)
4748 {
4749
4750 // GL is non-existent at this point, so we can't continue.
4751 llerrs << "LLPanelDisplay::apply() failed" << llendl;
4752 }
4753 }
4754
4755 // force aspect ratio
4756 if (mIsFullscreenChecked)
4757 {
4758 LLViewerCamera::getInstance()->setAspect( getDisplayAspectRatio() );
4759 }
4760 return true;
4761}
4762
4763void LLViewerWindow::requestResolutionUpdate(bool fullscreen_checked, U32 resolution_index)
4764{ 4704{
4765 mResDirty = true; 4705 mResDirty = true;
4706 mWantFullscreen = fullscreen_checked;
4766 mIsFullscreenChecked = fullscreen_checked; 4707 mIsFullscreenChecked = fullscreen_checked;
4767 mCurrResolutionIndex = resolution_index;
4768} 4708}
4769 4709
4770
4771BOOL LLViewerWindow::checkSettings() 4710BOOL LLViewerWindow::checkSettings()
4772{ 4711{
4773 if (mStatesDirty) 4712 if (mStatesDirty)
@@ -4780,42 +4719,70 @@ BOOL LLViewerWindow::checkSettings()
4780 // We want to update the resolution AFTER the states getting refreshed not before. 4719 // We want to update the resolution AFTER the states getting refreshed not before.
4781 if (mResDirty) 4720 if (mResDirty)
4782 { 4721 {
4783 updateResolution(); 4722 if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio"))
4723 {
4724 getWindow()->setNativeAspectRatio(0.f);
4725 }
4726 else
4727 {
4728 getWindow()->setNativeAspectRatio(gSavedSettings.getF32("FullScreenAspectRatio"));
4729 }
4730
4731 reshape(getWindowDisplayWidth(), getWindowDisplayHeight());
4732
4733 // force aspect ratio
4734 if (mIsFullscreenChecked)
4735 {
4736 LLViewerCamera::getInstance()->setAspect( getDisplayAspectRatio() );
4737 }
4738
4784 mResDirty = false; 4739 mResDirty = false;
4785 // This will force a state update the next frame. 4740 // This will force a state update the next frame.
4786 mStatesDirty = true; 4741 mStatesDirty = true;
4787 } 4742 }
4788 4743
4789 BOOL is_fullscreen = mWindow->getFullscreen(); 4744 BOOL is_fullscreen = mWindow->getFullscreen();
4790 if (is_fullscreen && !mWantFullscreen) 4745 if(mWantFullscreen)
4791 { 4746 {
4792 changeDisplaySettings(FALSE, 4747 LLCoordScreen screen_size;
4793 LLCoordScreen(gSavedSettings.getS32("WindowWidth"), 4748 LLCoordScreen desired_screen_size(gSavedSettings.getS32("FullScreenWidth"),
4794 gSavedSettings.getS32("WindowHeight")), 4749 gSavedSettings.getS32("FullScreenHeight"));
4795 TRUE, 4750 getWindow()->getSize(&screen_size);
4796 mShowFullscreenProgress); 4751 if(!is_fullscreen ||
4797 mStatesDirty = true; 4752 screen_size.mX != desired_screen_size.mX
4798 return TRUE; 4753 || screen_size.mY != desired_screen_size.mY)
4754 {
4755 if (!LLStartUp::canGoFullscreen())
4756 {
4757 return FALSE;
4758 }
4759
4760 LLGLState::checkStates();
4761 LLGLState::checkTextureChannels();
4762 changeDisplaySettings(TRUE,
4763 desired_screen_size,
4764 gSavedSettings.getBOOL("DisableVerticalSync"),
4765 mShowFullscreenProgress);
4766
4767 LLGLState::checkStates();
4768 LLGLState::checkTextureChannels();
4769 mStatesDirty = true;
4770 return TRUE;
4771 }
4799 } 4772 }
4800 else if (!is_fullscreen && mWantFullscreen) 4773 else
4801 { 4774 {
4802 if (!LLStartUp::canGoFullscreen()) 4775 if(is_fullscreen)
4803 { 4776 {
4804 return FALSE; 4777 // Changing to windowed mode.
4778 changeDisplaySettings(FALSE,
4779 LLCoordScreen(gSavedSettings.getS32("WindowWidth"),
4780 gSavedSettings.getS32("WindowHeight")),
4781 TRUE,
4782 mShowFullscreenProgress);
4783 mStatesDirty = true;
4784 return TRUE;
4805 } 4785 }
4806
4807 LLGLState::checkStates();
4808 LLGLState::checkTextureChannels();
4809 changeDisplaySettings(TRUE,
4810 LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"),
4811 gSavedSettings.getS32("FullScreenHeight")),
4812 gSavedSettings.getBOOL("DisableVerticalSync"),
4813 mShowFullscreenProgress);
4814
4815 LLGLState::checkStates();
4816 LLGLState::checkTextureChannels();
4817 mStatesDirty = true;
4818 return TRUE;
4819 } 4786 }
4820 return FALSE; 4787 return FALSE;
4821} 4788}
@@ -4846,13 +4813,9 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size,
4846 BOOL old_fullscreen = mWindow->getFullscreen(); 4813 BOOL old_fullscreen = mWindow->getFullscreen();
4847 if (!old_fullscreen && fullscreen && !LLStartUp::canGoFullscreen()) 4814 if (!old_fullscreen && fullscreen && !LLStartUp::canGoFullscreen())
4848 { 4815 {
4849 // we can't do this now, so do it later 4816 // Not allowed to switch to fullscreen now, so exit early.
4850 4817 // *NOTE: This case should never be reached, but just-in-case.
4851 gSavedSettings.setS32("FullScreenWidth", size.mX); 4818 return TRUE;
4852 gSavedSettings.setS32("FullScreenHeight", size.mY);
4853 //gSavedSettings.setBOOL("DisableVerticalSync", disable_vsync);
4854
4855 return TRUE; // a lie..., because we'll get to it later
4856 } 4819 }
4857 4820
4858 U32 fsaa = gSavedSettings.getU32("RenderFSAASamples"); 4821 U32 fsaa = gSavedSettings.getU32("RenderFSAASamples");
@@ -4939,7 +4902,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size,
4939#if LL_WINDOWS 4902#if LL_WINDOWS
4940 // Only trigger a reshape after switching to fullscreen; otherwise rely on the windows callback 4903 // Only trigger a reshape after switching to fullscreen; otherwise rely on the windows callback
4941 // (otherwise size is wrong; this is the entire window size, reshape wants the visible window size) 4904 // (otherwise size is wrong; this is the entire window size, reshape wants the visible window size)
4942 if (fullscreen) 4905 if (fullscreen && result_first_try)
4943#endif 4906#endif
4944 { 4907 {
4945 reshape(size.mX, size.mY); 4908 reshape(size.mX, size.mY);
@@ -5310,7 +5273,16 @@ void LLPickInfo::fetchResults()
5310 //{ 5273 //{
5311 // mPickType = PICK_PARCEL_WALL; 5274 // mPickType = PICK_PARCEL_WALL;
5312 //} 5275 //}
5313 if (objectp) 5276 if (hit_icon &&
5277 (!objectp ||
5278 icon_dist < (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec()))
5279 {
5280 // was this name referring to a hud icon?
5281 mHUDIcon = hit_icon;
5282 mPickType = PICK_ICON;
5283 mPosGlobal = mHUDIcon->getPositionGlobal();
5284 }
5285 else if (objectp)
5314 { 5286 {
5315 if( objectp->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH ) 5287 if( objectp->getPCode() == LLViewerObject::LL_VO_SURFACE_PATCH )
5316 { 5288 {
@@ -5362,16 +5334,7 @@ void LLPickInfo::fetchResults()
5362 } 5334 }
5363 } 5335 }
5364 } 5336 }
5365 if (hit_icon && 5337
5366 (!objectp ||
5367 icon_dist < (LLViewerCamera::getInstance()->getOrigin()-intersection).magVec()))
5368 {
5369 // was this name referring to a hud icon?
5370 mHUDIcon = hit_icon;
5371 mPickType = PICK_ICON;
5372 mPosGlobal = mHUDIcon->getPositionGlobal();
5373 }
5374
5375 if (mPickCallback) 5338 if (mPickCallback)
5376 { 5339 {
5377 mPickCallback(*this); 5340 mPickCallback(*this);
diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h
index 49fa3c4..c83c57b 100644
--- a/linden/indra/newview/llviewerwindow.h
+++ b/linden/indra/newview/llviewerwindow.h
@@ -344,8 +344,7 @@ public:
344 void toggleFullscreen(BOOL show_progress); 344 void toggleFullscreen(BOOL show_progress);
345 345
346 // handle shutting down GL and bringing it back up 346 // handle shutting down GL and bringing it back up
347 bool updateResolution(void); 347 void requestResolutionUpdate(bool fullscreen_checked);
348 void requestResolutionUpdate(bool fullscreen_checked, U32 resolution_index);
349 BOOL checkSettings(); 348 BOOL checkSettings();
350 void restartDisplay(BOOL show_progress_bar); 349 void restartDisplay(BOOL show_progress_bar);
351 BOOL changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, BOOL disable_vsync, BOOL show_progress_bar); 350 BOOL changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, BOOL disable_vsync, BOOL show_progress_bar);
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 42976ed..e29ea78 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -288,7 +288,9 @@ BOOL LLVOAvatar::sJointDebug = FALSE;
288S32 LLVOAvatar::sCurJoint = 0; 288S32 LLVOAvatar::sCurJoint = 0;
289S32 LLVOAvatar::sCurVolume = 0; 289S32 LLVOAvatar::sCurVolume = 0;
290F32 LLVOAvatar::sUnbakedTime = 0.f; 290F32 LLVOAvatar::sUnbakedTime = 0.f;
291F32 LLVOAvatar::sUnbakedUpdateTime = 0.f;
291F32 LLVOAvatar::sGreyTime = 0.f; 292F32 LLVOAvatar::sGreyTime = 0.f;
293F32 LLVOAvatar::sGreyUpdateTime = 0.f;
292 294
293struct LLAvatarTexData 295struct LLAvatarTexData
294{ 296{
@@ -4721,7 +4723,7 @@ void LLVOAvatar::addLocalTextureStats( LLVOAvatar::ELocTexIndex idx, LLViewerIma
4721 desired_pixels = llmin(mPixelArea, (F32)LOCTEX_IMAGE_AREA_OTHER ); 4723 desired_pixels = llmin(mPixelArea, (F32)LOCTEX_IMAGE_AREA_OTHER );
4722 imagep->setBoostLevel(LLViewerImage::BOOST_AVATAR); 4724 imagep->setBoostLevel(LLViewerImage::BOOST_AVATAR);
4723 } 4725 }
4724 imagep->addTextureStats( desired_pixels, texel_area_ratio ); 4726 imagep->addTextureStats( desired_pixels / texel_area_ratio );
4725 if (imagep->getDiscardLevel() < 0) 4727 if (imagep->getDiscardLevel() < 0)
4726 { 4728 {
4727 mHasGrey = TRUE; // for statistics gathering 4729 mHasGrey = TRUE; // for statistics gathering
@@ -4743,7 +4745,7 @@ void LLVOAvatar::addBakedTextureStats( LLViewerImage* imagep, F32 pixel_area, F3
4743{ 4745{
4744 mMaxPixelArea = llmax(pixel_area, mMaxPixelArea); 4746 mMaxPixelArea = llmax(pixel_area, mMaxPixelArea);
4745 mMinPixelArea = llmin(pixel_area, mMinPixelArea); 4747 mMinPixelArea = llmin(pixel_area, mMinPixelArea);
4746 imagep->addTextureStats(pixel_area, texel_area_ratio); 4748 imagep->addTextureStats(pixel_area / texel_area_ratio);
4747 imagep->setBoostLevel(boost_level); 4749 imagep->setBoostLevel(boost_level);
4748} 4750}
4749 4751
@@ -9171,9 +9173,19 @@ void LLVOAvatar::cullAvatarsByPixelArea()
9171 } 9173 }
9172 else 9174 else
9173 { 9175 {
9174 sUnbakedTime += gFrameTimeSeconds; 9176 if (gFrameTimeSeconds != sUnbakedUpdateTime) // only update once per frame
9177 {
9178 sUnbakedUpdateTime = gFrameTimeSeconds;
9179 sUnbakedTime += gFrameIntervalSeconds;
9180 }
9175 if (grey_avatars > 0) 9181 if (grey_avatars > 0)
9176 sGreyTime += gFrameTimeSeconds; 9182 {
9183 if (gFrameTimeSeconds != sGreyUpdateTime) // only update once per frame
9184 {
9185 sGreyUpdateTime = gFrameTimeSeconds;
9186 sGreyTime += gFrameIntervalSeconds;
9187 }
9188 }
9177 } 9189 }
9178} 9190}
9179 9191
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index 81cfc6f..9806ceb 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -914,7 +914,9 @@ public:
914 static ETextureIndex sBakedTextureIndices[BAKED_TEXTURE_COUNT]; 914 static ETextureIndex sBakedTextureIndices[BAKED_TEXTURE_COUNT];
915 915
916 static F32 sUnbakedTime; // Total seconds with >=1 unbaked avatars 916 static F32 sUnbakedTime; // Total seconds with >=1 unbaked avatars
917 static F32 sUnbakedUpdateTime; // Last time stats were updated (to prevent multiple updates per frame)
917 static F32 sGreyTime; // Total seconds with >=1 grey avatars 918 static F32 sGreyTime; // Total seconds with >=1 grey avatars
919 static F32 sGreyUpdateTime; // Last time stats were updated (to prevent multiple updates per frame)
918 920
919 //-------------------------------------------------------------------- 921 //--------------------------------------------------------------------
920 // Texture Layer Sets and Global Colors 922 // Texture Layer Sets and Global Colors
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index b1bf989..3bec16f 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -932,6 +932,8 @@ void LLVoiceClient::updateSettings()
932 setCaptureDevice(inputDevice); 932 setCaptureDevice(inputDevice);
933 std::string outputDevice = gSavedSettings.getString("VoiceOutputAudioDevice"); 933 std::string outputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");
934 setRenderDevice(outputDevice); 934 setRenderDevice(outputDevice);
935 F32 mic_level = gSavedSettings.getF32("AudioLevelMic");
936 setMicGain(mic_level);
935 setLipSyncEnabled(gSavedSettings.getBOOL("LipSyncEnabled")); 937 setLipSyncEnabled(gSavedSettings.getBOOL("LipSyncEnabled"));
936} 938}
937 939
diff --git a/linden/indra/newview/llvopartgroup.cpp b/linden/indra/newview/llvopartgroup.cpp
index e5e5c2e..a91b59f 100644
--- a/linden/indra/newview/llvopartgroup.cpp
+++ b/linden/indra/newview/llvopartgroup.cpp
@@ -180,6 +180,8 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
180 F32 pixel_meter_ratio = LLViewerCamera::getInstance()->getPixelMeterRatio(); 180 F32 pixel_meter_ratio = LLViewerCamera::getInstance()->getPixelMeterRatio();
181 pixel_meter_ratio *= pixel_meter_ratio; 181 pixel_meter_ratio *= pixel_meter_ratio;
182 182
183 LLViewerPartSim::checkParticleCount(mViewerPartGroupp->mParticles.size()) ;
184
183 S32 count=0; 185 S32 count=0;
184 mDepth = 0.f; 186 mDepth = 0.f;
185 S32 i = 0 ; 187 S32 i = 0 ;
diff --git a/linden/indra/newview/llvotextbubble.cpp b/linden/indra/newview/llvotextbubble.cpp
index f9a12a4..ba53bd3 100644
--- a/linden/indra/newview/llvotextbubble.cpp
+++ b/linden/indra/newview/llvotextbubble.cpp
@@ -118,30 +118,16 @@ BOOL LLVOTextBubble::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
118void LLVOTextBubble::updateTextures(LLAgent &agent) 118void LLVOTextBubble::updateTextures(LLAgent &agent)
119{ 119{
120 // Update the image levels of all textures... 120 // Update the image levels of all textures...
121 // First we do some quick checks.
122 U32 i;
123 121
124 // This doesn't take into account whether the object is in front 122 for (U32 i = 0; i < getNumTEs(); i++)
125 // or behind...
126
127 LLVector3 position_local = getPositionAgent() - agent.getCameraPositionAgent();
128 F32 dot_product = position_local * agent.getFrameAgent().getAtAxis();
129 F32 cos_angle = dot_product / position_local.length();
130
131 if (cos_angle > 1.f)
132 {
133 cos_angle = 1.f;
134 }
135
136 for (i = 0; i < getNumTEs(); i++)
137 { 123 {
138 const LLTextureEntry *te = getTE(i); 124 const LLTextureEntry *te = getTE(i);
139 F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT); 125 F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT);
140 126 texel_area_ratio = llclamp(texel_area_ratio, .125f, 16.f);
141 LLViewerImage *imagep = getTEImage(i); 127 LLViewerImage *imagep = getTEImage(i);
142 if (imagep) 128 if (imagep)
143 { 129 {
144 imagep->addTextureStats(mPixelArea, texel_area_ratio, cos_angle); 130 imagep->addTextureStats(mPixelArea / texel_area_ratio);
145 } 131 }
146 } 132 }
147} 133}
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index 46af322..6baff85 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -68,8 +68,7 @@
68const S32 MIN_QUIET_FRAMES_COALESCE = 30; 68const S32 MIN_QUIET_FRAMES_COALESCE = 30;
69const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; 69const F32 FORCE_SIMPLE_RENDER_AREA = 512.f;
70const F32 FORCE_CULL_AREA = 8.f; 70const F32 FORCE_CULL_AREA = 8.f;
71// sadly - we can't lower sculptie rez below b/c residents have a LOT of content that depends on the 128 71const S32 MAX_SCULPT_REZ = 128;
72const S32 SCULPT_REZ = 128;
73 72
74BOOL gAnimateTextures = TRUE; 73BOOL gAnimateTextures = TRUE;
75extern BOOL gHideSelectedObjects; 74extern BOOL gHideSelectedObjects;
@@ -498,6 +497,7 @@ void LLVOVolume::updateTextures()
498 else if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY)) 497 else if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY))
499 { 498 {
500 F32 pri = imagep->getDecodePriority(); 499 F32 pri = imagep->getDecodePriority();
500 pri = llmax(pri, 0.0f);
501 if (pri < min_vsize) min_vsize = pri; 501 if (pri < min_vsize) min_vsize = pri;
502 if (pri > max_vsize) max_vsize = pri; 502 if (pri > max_vsize) max_vsize = pri;
503 } 503 }
@@ -516,7 +516,10 @@ void LLVOVolume::updateTextures()
516 mSculptTexture = gImageList.getImage(id); 516 mSculptTexture = gImageList.getImage(id);
517 if (mSculptTexture.notNull()) 517 if (mSculptTexture.notNull())
518 { 518 {
519 mSculptTexture->addTextureStats(SCULPT_REZ * SCULPT_REZ); 519 S32 lod = llmin(mLOD, 3);
520 F32 lodf = ((F32)(4-lod)/4.f); // 0 -> 1.0, 3 -> .25
521 F32 tex_size = lodf * MAX_SCULPT_REZ;
522 mSculptTexture->addTextureStats(2.f * tex_size * tex_size);
520 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), 523 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
521 (S32)LLViewerImage::BOOST_SCULPTED)); 524 (S32)LLViewerImage::BOOST_SCULPTED));
522 } 525 }
@@ -1946,6 +1949,8 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
1946 return FALSE; 1949 return FALSE;
1947 } 1950 }
1948 1951
1952 BOOL ret = FALSE;
1953
1949 LLVolume* volume = getVolume(); 1954 LLVolume* volume = getVolume();
1950 if (volume) 1955 if (volume)
1951 { 1956 {
@@ -2001,6 +2006,8 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
2001 if (face_hit >= 0 && mDrawable->getNumFaces() > face_hit) 2006 if (face_hit >= 0 && mDrawable->getNumFaces() > face_hit)
2002 { 2007 {
2003 LLFace* face = mDrawable->getFace(face_hit); 2008 LLFace* face = mDrawable->getFace(face_hit);
2009 v_end = p;
2010
2004 if (pick_transparent || !face->getTexture() || face->getTexture()->getMask(face->surfaceToTexture(tc, p, n))) 2011 if (pick_transparent || !face->getTexture() || face->getTexture()->getMask(face->surfaceToTexture(tc, p, n)))
2005 { 2012 {
2006 if (face_hitp != NULL) 2013 if (face_hitp != NULL)
@@ -2030,13 +2037,13 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector3& start, const LLVector3& e
2030 *tex_coord = tc; 2037 *tex_coord = tc;
2031 } 2038 }
2032 2039
2033 return TRUE; 2040 ret = TRUE;
2034 } 2041 }
2035 } 2042 }
2036 } 2043 }
2037 } 2044 }
2038 2045
2039 return FALSE; 2046 return ret;
2040} 2047}
2041 2048
2042U32 LLVOVolume::getPartitionType() const 2049U32 LLVOVolume::getPartitionType() const
diff --git a/linden/indra/newview/llwindebug.cpp b/linden/indra/newview/llwindebug.cpp
index 7d44fcd..b595073 100644
--- a/linden/indra/newview/llwindebug.cpp
+++ b/linden/indra/newview/llwindebug.cpp
@@ -122,7 +122,9 @@ MODULE32_NEST Module32Next_;
122#define NL L"\r\n" //new line 122#define NL L"\r\n" //new line
123 123
124BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & Module_Addr); 124BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & Module_Addr);
125 125void WINAPI Get_Call_Stack(const EXCEPTION_RECORD* exception_record,
126 const CONTEXT* context_record,
127 LLSD& info);
126 128
127void printError( CHAR* msg ) 129void printError( CHAR* msg )
128{ 130{
@@ -185,69 +187,6 @@ BOOL GetProcessThreadIDs(DWORD process_id, std::vector<DWORD>& thread_ids)
185 return( TRUE ); 187 return( TRUE );
186} 188}
187 189
188void WINAPI GetCallStackData(const CONTEXT* context_struct, LLSD& info)
189{
190 // Fill Str with call stack info.
191 // pException can be either GetExceptionInformation() or NULL.
192 // If pException = NULL - get current call stack.
193
194 LPWSTR Module_Name = new WCHAR[MAX_PATH];
195 PBYTE Module_Addr = 0;
196
197 typedef struct STACK
198 {
199 STACK * Ebp;
200 PBYTE Ret_Addr;
201 DWORD Param[0];
202 } STACK, * PSTACK;
203
204 PSTACK Ebp;
205
206 if(context_struct)
207 {
208 Ebp = (PSTACK)context_struct->Ebp;
209 }
210 else
211 {
212 // The context struct is NULL,
213 // so we will use the current stack.
214 Ebp = (PSTACK)&context_struct - 1;
215
216 // Skip frame of GetCallStackData().
217 if (!IsBadReadPtr(Ebp, sizeof(PSTACK)))
218 Ebp = Ebp->Ebp; //caller ebp
219 }
220
221 // Trace CALL_TRACE_MAX calls maximum - not to exceed DUMP_SIZE_MAX.
222 // Break trace on wrong stack frame.
223 for (int Ret_Addr_I = 0, i = 0;
224 (Ret_Addr_I < CALL_TRACE_MAX) && !IsBadReadPtr(Ebp, sizeof(PSTACK)) && !IsBadCodePtr(FARPROC(Ebp->Ret_Addr));
225 Ret_Addr_I++, Ebp = Ebp->Ebp, ++i)
226 {
227 // If module with Ebp->Ret_Addr found.
228
229 if (Get_Module_By_Ret_Addr(Ebp->Ret_Addr, Module_Name, Module_Addr))
230 {
231 // Save module's address and full path.
232 info["CallStack"][i]["ModuleName"] = ll_convert_wide_to_string(Module_Name);
233 info["CallStack"][i]["ModuleAddress"] = (int)Module_Addr;
234 info["CallStack"][i]["CallOffset"] = (int)(Ebp->Ret_Addr - Module_Addr);
235
236 LLSD params;
237 // Save 5 params of the call. We don't know the real number of params.
238 if (!IsBadReadPtr(Ebp, sizeof(PSTACK) + 5 * sizeof(DWORD)))
239 {
240 for(int j = 0; j < 5; ++j)
241 {
242 params[j] = (int)Ebp->Param[j];
243 }
244 }
245 info["CallStack"][i]["Parameters"] = params;
246 }
247 info["CallStack"][i]["ReturnAddress"] = (int)Ebp->Ret_Addr;
248 }
249}
250
251BOOL GetThreadCallStack(DWORD thread_id, LLSD& info) 190BOOL GetThreadCallStack(DWORD thread_id, LLSD& info)
252{ 191{
253 if(GetCurrentThreadId() == thread_id) 192 if(GetCurrentThreadId() == thread_id)
@@ -272,7 +211,7 @@ BOOL GetThreadCallStack(DWORD thread_id, LLSD& info)
272 context_struct.ContextFlags = CONTEXT_FULL; 211 context_struct.ContextFlags = CONTEXT_FULL;
273 if(GetThreadContext(thread_handle, &context_struct)) 212 if(GetThreadContext(thread_handle, &context_struct))
274 { 213 {
275 GetCallStackData(&context_struct, info); 214 Get_Call_Stack(NULL, &context_struct, info);
276 result = true; 215 result = true;
277 } 216 }
278 ResumeThread(thread_handle); 217 ResumeThread(thread_handle);
@@ -327,16 +266,98 @@ BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & M
327 return found; 266 return found;
328} //Get_Module_By_Ret_Addr 267} //Get_Module_By_Ret_Addr
329 268
269bool has_valid_call_before(PDWORD cur_stack_loc)
270{
271 PBYTE p_first_byte = (PBYTE)(*cur_stack_loc - 1);
272 PBYTE p_second_byte = (PBYTE)(*cur_stack_loc -2);
273 PBYTE p_fifth_byte = (PBYTE)(*cur_stack_loc - 5);
274 PBYTE p_sixth_byte = (PBYTE)(*cur_stack_loc - 6);
275
276 // make sure we can read it
277 if(IsBadReadPtr(p_sixth_byte, 6 * sizeof(BYTE)))
278 {
279 return false;
280 }
281
282 // check for 9a + 4 bytes
283 if(*p_fifth_byte == 0x9A)
284 {
285 return true;
286 }
287
288 // Check for E8 + 4 bytes and last byte is 00 or FF
289 if(*p_fifth_byte == 0xE8 && (*p_first_byte == 0x00 || *p_first_byte == 0xFF))
290 {
291 return true;
292 }
293
294 // the other is six bytes
295 if(*p_sixth_byte == 0xFF || *p_second_byte == 0xFF)
296 {
297 return true;
298 }
299
300 return false;
301}
302
303PBYTE get_valid_frame(PBYTE esp)
304{
305 PDWORD cur_stack_loc = NULL;
306 const int max_search = 400;
307 WCHAR module_name[MAX_PATH];
308 PBYTE module_addr = 0;
309
310 // round to highest multiple of four
311 esp = (esp + (4 - ((int)esp % 4)) % 4);
312
313 // scroll through stack a few hundred places.
314 for (cur_stack_loc = (PDWORD) esp; cur_stack_loc < (PDWORD)esp + max_search; cur_stack_loc += 1)
315 {
316 // if you can read the pointer,
317 if (IsBadReadPtr(cur_stack_loc, sizeof(PDWORD)))
318 {
319 continue;
320 }
321
322 // check if it's in a module
323 if (!Get_Module_By_Ret_Addr((PBYTE)*cur_stack_loc, module_name, module_addr))
324 {
325 continue;
326 }
327
328 // check if the code before the instruction ptr is a call
329 if(!has_valid_call_before(cur_stack_loc))
330 {
331 continue;
332 }
333
334 // if these all pass, return that ebp, otherwise continue till we're dead
335 return (PBYTE)(cur_stack_loc - 1);
336 }
337
338 return NULL;
339}
330//****************************************************************** 340//******************************************************************
331void WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, LLSD& info) 341void WINAPI Get_Call_Stack(const EXCEPTION_RECORD* exception_record,
342 const CONTEXT* context_record,
343 LLSD& info)
332//****************************************************************** 344//******************************************************************
333// Fill Str with call stack info. 345// Fill Str with call stack info.
334// pException can be either GetExceptionInformation() or NULL. 346// pException can be either GetExceptionInformation() or NULL.
335// If pException = NULL - get current call stack. 347// If pException = NULL - get current call stack.
336{ 348{
337 LPWSTR Module_Name = new WCHAR[MAX_PATH]; 349 LPWSTR Module_Name = new WCHAR[MAX_PATH];
338 PBYTE Module_Addr = 0; 350 PBYTE Module_Addr = 0;
339 351 LLSD params;
352 PBYTE Esp = NULL;
353 LLSD tmp_info;
354
355 bool fake_frame = false;
356 bool ebp_used = false;
357 const int HEURISTIC_MAX_WALK = 10;
358 int heuristic_walk_i = 0;
359 int Ret_Addr_I = 0;
360
340 typedef struct STACK 361 typedef struct STACK
341 { 362 {
342 STACK * Ebp; 363 STACK * Ebp;
@@ -347,15 +368,23 @@ void WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, LLSD& info)
347 STACK Stack = {0, 0}; 368 STACK Stack = {0, 0};
348 PSTACK Ebp; 369 PSTACK Ebp;
349 370
350 if (pException) //fake frame for exception address 371 if (exception_record && context_record) //fake frame for exception address
351 { 372 {
352 Stack.Ebp = (PSTACK)pException->ContextRecord->Ebp; 373 Stack.Ebp = (PSTACK)(context_record->Ebp);
353 Stack.Ret_Addr = (PBYTE)pException->ExceptionRecord->ExceptionAddress; 374 Stack.Ret_Addr = (PBYTE)exception_record->ExceptionAddress;
354 Ebp = &Stack; 375 Ebp = &Stack;
376 Esp = (PBYTE) context_record->Esp;
377 fake_frame = true;
378 }
379 else if(context_record)
380 {
381 Ebp = (PSTACK)(context_record->Ebp);
382 Esp = (PBYTE)(context_record->Esp);
355 } 383 }
356 else 384 else
357 { 385 {
358 Ebp = (PSTACK)&pException - 1; //frame addr of Get_Call_Stack() 386 Ebp = (PSTACK)&exception_record - 1; //frame addr of Get_Call_Stack()
387 Esp = (PBYTE)&exception_record;
359 388
360 // Skip frame of Get_Call_Stack(). 389 // Skip frame of Get_Call_Stack().
361 if (!IsBadReadPtr(Ebp, sizeof(PSTACK))) 390 if (!IsBadReadPtr(Ebp, sizeof(PSTACK)))
@@ -364,22 +393,21 @@ void WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, LLSD& info)
364 393
365 // Trace CALL_TRACE_MAX calls maximum - not to exceed DUMP_SIZE_MAX. 394 // Trace CALL_TRACE_MAX calls maximum - not to exceed DUMP_SIZE_MAX.
366 // Break trace on wrong stack frame. 395 // Break trace on wrong stack frame.
367 for (int Ret_Addr_I = 0, i = 0; 396 for (Ret_Addr_I = 0;
368 (Ret_Addr_I < CALL_TRACE_MAX) && !IsBadReadPtr(Ebp, sizeof(PSTACK)) && !IsBadCodePtr(FARPROC(Ebp->Ret_Addr)); 397 heuristic_walk_i < HEURISTIC_MAX_WALK &&
369 Ret_Addr_I++, Ebp = Ebp->Ebp, ++i) 398 Ret_Addr_I < CALL_TRACE_MAX && !IsBadReadPtr(Ebp, sizeof(PSTACK)) && !IsBadCodePtr(FARPROC(Ebp->Ret_Addr));
399 Ret_Addr_I++)
370 { 400 {
371 // If module with Ebp->Ret_Addr found. 401 // If module with Ebp->Ret_Addr found.
372
373 if (Get_Module_By_Ret_Addr(Ebp->Ret_Addr, Module_Name, Module_Addr)) 402 if (Get_Module_By_Ret_Addr(Ebp->Ret_Addr, Module_Name, Module_Addr))
374 { 403 {
375 // Save module's address and full path. 404 // Save module's address and full path.
376 info["CallStack"][i]["ModuleName"] = ll_convert_wide_to_string(Module_Name); 405 tmp_info["CallStack"][Ret_Addr_I]["ModuleName"] = ll_convert_wide_to_string(Module_Name);
377 info["CallStack"][i]["ModuleAddress"] = (int)Module_Addr; 406 tmp_info["CallStack"][Ret_Addr_I]["ModuleAddress"] = (int)Module_Addr;
378 info["CallStack"][i]["CallOffset"] = (int)(Ebp->Ret_Addr - Module_Addr); 407 tmp_info["CallStack"][Ret_Addr_I]["CallOffset"] = (int)(Ebp->Ret_Addr - Module_Addr);
379 408
380 LLSD params;
381 // Save 5 params of the call. We don't know the real number of params. 409 // Save 5 params of the call. We don't know the real number of params.
382 if (pException && !Ret_Addr_I) //fake frame for exception address 410 if (fake_frame && !Ret_Addr_I) //fake frame for exception address
383 params[0] = "Exception Offset"; 411 params[0] = "Exception Offset";
384 else if (!IsBadReadPtr(Ebp, sizeof(PSTACK) + 5 * sizeof(DWORD))) 412 else if (!IsBadReadPtr(Ebp, sizeof(PSTACK) + 5 * sizeof(DWORD)))
385 { 413 {
@@ -388,10 +416,62 @@ void WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, LLSD& info)
388 params[j] = (int)Ebp->Param[j]; 416 params[j] = (int)Ebp->Param[j];
389 } 417 }
390 } 418 }
391 info["CallStack"][i]["Parameters"] = params; 419 tmp_info["CallStack"][Ret_Addr_I]["Parameters"] = params;
420 }
421
422 tmp_info["CallStack"][Ret_Addr_I]["ReturnAddress"] = (int)Ebp->Ret_Addr;
423
424 // get ready for next frame
425 // Set ESP to just after return address. Not the real esp, but just enough after the return address
426 if(!fake_frame) {
427 Esp = (PBYTE)Ebp + 8;
428 }
429 else
430 {
431 fake_frame = false;
432 }
433
434 // is next ebp valid?
435 // only run if we've never found a good ebp
436 if( !ebp_used &&
437 (IsBadReadPtr(Ebp->Ebp, sizeof(PSTACK)) ||
438 IsBadCodePtr(FARPROC(Ebp->Ebp->Ret_Addr)) ||
439 !Get_Module_By_Ret_Addr(Ebp->Ebp->Ret_Addr, Module_Name, Module_Addr)))
440 {
441 heuristic_walk_i++;
442 PBYTE new_ebp = get_valid_frame(Esp);
443 if (new_ebp != NULL)
444 {
445 Ebp = (PSTACK)new_ebp;
446 }
447 }
448 else
449 {
450 ebp_used = true;
451 Ebp = Ebp->Ebp;
392 } 452 }
393 info["CallStack"][i]["ReturnAddress"] = (int)Ebp->Ret_Addr;
394 } 453 }
454
455 // Now go back through and edit out heuristic stacks that could very well be bogus.
456 // Leave the top and the last stack chosen by the heuristic, however.
457 if(heuristic_walk_i > 2)
458 {
459 info["CallStack"][0] = tmp_info["CallStack"][0];
460 std::string ttest = info["CallStack"][0]["ModuleName"];
461 for(int cur_frame = 1;
462 (cur_frame + heuristic_walk_i - 2 < Ret_Addr_I);
463 ++cur_frame)
464 {
465 // edit out the middle heuristic found frames
466 info["CallStack"][cur_frame] = tmp_info["CallStack"][cur_frame + heuristic_walk_i - 2];
467 }
468 }
469 else
470 {
471 info = tmp_info;
472 }
473
474
395} //Get_Call_Stack 475} //Get_Call_Stack
396 476
397//*********************************** 477//***********************************
@@ -508,7 +588,7 @@ LLSD WINAPI Get_Exception_Info(PEXCEPTION_POINTERS pException)
508 } //if (pException) 588 } //if (pException)
509 589
510 // Save call stack info. 590 // Save call stack info.
511 Get_Call_Stack(pException, info); 591 Get_Call_Stack(pException->ExceptionRecord, pException->ContextRecord, info);
512 592
513 return info; 593 return info;
514} //Get_Exception_Info 594} //Get_Exception_Info
@@ -565,7 +645,7 @@ LPTOP_LEVEL_EXCEPTION_FILTER WINAPI MyDummySetUnhandledExceptionFilter(
565 645
566 llinfos << "Someone tried to set the exception filter. Listing call stack modules" << llendl; 646 llinfos << "Someone tried to set the exception filter. Listing call stack modules" << llendl;
567 LLSD cs_info; 647 LLSD cs_info;
568 GetCallStackData(NULL, cs_info); 648 Get_Call_Stack(NULL, NULL, cs_info);
569 649
570 if(cs_info.has("CallStack") && cs_info["CallStack"].isArray()) 650 if(cs_info.has("CallStack") && cs_info["CallStack"].isArray())
571 { 651 {
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 3fa9098..13d8d09 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -4092,55 +4092,52 @@ LLViewerObject* LLPipeline::lineSegmentIntersectInWorld(const LLVector3& start,
4092 4092
4093 const F32 ATTACHMENT_OVERRIDE_DIST = 0.1f; 4093 const F32 ATTACHMENT_OVERRIDE_DIST = 0.1f;
4094 4094
4095 if (!drawable || !drawable->getVObj()->isAttachment()) 4095 //check against avatars
4096 { //check against avatars 4096 sPickAvatar = TRUE;
4097 sPickAvatar = TRUE; 4097 for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->getRegionList().begin();
4098 for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->getRegionList().begin(); 4098 iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
4099 iter != LLWorld::getInstance()->getRegionList().end(); ++iter) 4099 {
4100 LLViewerRegion* region = *iter;
4101
4102 LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_BRIDGE);
4103 if (part && hasRenderType(part->mDrawableType))
4104 {
4105 LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
4106 if (hit)
4100 { 4107 {
4101 LLViewerRegion* region = *iter; 4108 if (!drawable ||
4109 !drawable->getVObj()->isAttachment() ||
4110 (position-local_end).magVec() > ATTACHMENT_OVERRIDE_DIST)
4111 { //avatar overrides if previously hit drawable is not an attachment or
4112 //attachment is far enough away from detected intersection
4113 drawable = hit;
4114 local_end = position;
4115 }
4116 else
4117 { //prioritize attachments over avatars
4118 position = local_end;
4102 4119
4103 LLSpatialPartition* part = region->getSpatialPartition(LLViewerRegion::PARTITION_BRIDGE); 4120 if (face_hit)
4104 if (part && hasRenderType(part->mDrawableType))
4105 {
4106 LLDrawable* hit = part->lineSegmentIntersect(start, local_end, pick_transparent, face_hit, &position, tex_coord, normal, bi_normal);
4107 if (hit)
4108 { 4121 {
4109 if (!drawable || 4122 *face_hit = local_face_hit;
4110 !drawable->getVObj()->isAttachment() || 4123 }
4111 (position-local_end).magVec() > ATTACHMENT_OVERRIDE_DIST) 4124 if (tex_coord)
4112 { //avatar overrides if previously hit drawable is not an attachment or 4125 {
4113 //attachment is far enough away from detected intersection 4126 *tex_coord = local_texcoord;
4114 drawable = hit; 4127 }
4115 local_end = position; 4128 if (bi_normal)
4116 } 4129 {
4117 else 4130 *bi_normal = local_binormal;
4118 { //prioritize attachments over avatars 4131 }
4119 position = local_end; 4132 if (normal)
4120 4133 {
4121 if (face_hit) 4134 *normal = local_normal;
4122 {
4123 *face_hit = local_face_hit;
4124 }
4125 if (tex_coord)
4126 {
4127 *tex_coord = local_texcoord;
4128 }
4129 if (bi_normal)
4130 {
4131 *bi_normal = local_binormal;
4132 }
4133 if (normal)
4134 {
4135 *normal = local_normal;
4136 }
4137 }
4138 } 4135 }
4139 } 4136 }
4140 } 4137 }
4141 } 4138 }
4142 } 4139 }
4143 4140 }
4144 4141
4145 //check all avatar nametags (silly, isn't it?) 4142 //check all avatar nametags (silly, isn't it?)
4146 for (std::vector< LLCharacter* >::iterator iter = LLCharacter::sInstances.begin(); 4143 for (std::vector< LLCharacter* >::iterator iter = LLCharacter::sInstances.begin();
diff --git a/linden/indra/newview/skins/default/xui/de/floater_about.xml b/linden/indra/newview/skins/default/xui/de/floater_about.xml
index 7c9b242..1b7722f 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_about.xml
@@ -1,9 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_about" title="Über Second Life"> 2<floater name="floater_about" title="Über Second Life">
3 <text_editor name="credits_editor"> 3 <text_editor name="credits_editor">
4 Second Life wird Ihnen präsentiert von Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ und vielen anderen. 4 Second Life wird Ihnen präsentiert von Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les und vielen anderen.
5 5
6Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: Aminom Marvin, ava ganache, Balthazar Fouroux, CrystalShard Foo, Davec Horsforth, Drew Dwi, Ellla McMahon, Gellan Glenelg, Harleen Gretzky, istephanija munro, Iustinian Tomsen, JC Glimmer, Joeseph Albanese, kelly young, Latif Khalifa, Lex Neva, McCabe Maxsted, Michi Lumin, moni duettmann, Moon Metty, motor loon, Opensource Obscure, Sky Hye, Soap Clawtooth, velveeta biedermann, zeebster colasanti 6Vielen Dank den folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi
7 7
83Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 83Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
9APR Copyright (C) 2000-2004 The Apache Software Foundation 9APR Copyright (C) 2000-2004 The Apache Software Foundation
diff --git a/linden/indra/newview/skins/default/xui/de/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/de/panel_preferences_im.xml
index 0744495..0e760e6 100644
--- a/linden/indra/newview/skins/default/xui/de/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/de/panel_preferences_im.xml
@@ -15,10 +15,8 @@
15 <check_box label="Zeitstempel in IM anzeigen" name="show_timestamps_check"/> 15 <check_box label="Zeitstempel in IM anzeigen" name="show_timestamps_check"/>
16 <check_box label="Online-Freundbenachrichtigungen anzeigen" name="friends_online_notify_checkbox"/> 16 <check_box label="Online-Freundbenachrichtigungen anzeigen" name="friends_online_notify_checkbox"/>
17 <text length="1" name="text_box3" type="string"> 17 <text length="1" name="text_box3" type="string">
18 Protokolloptionen: 18 Antwort für
19 </text> 19Beschäftigt-Modus:
20 <text length="1" name="text_box3" type="string">
21 Protokolloptionen:
22 </text> 20 </text>
23 <text name="text_box4"> 21 <text name="text_box4">
24 Protokolloptionen: 22 Protokolloptionen:
diff --git a/linden/indra/newview/skins/default/xui/de/role_actions.xml b/linden/indra/newview/skins/default/xui/de/role_actions.xml
index 26042bd..95eb6c5 100644
--- a/linden/indra/newview/skins/default/xui/de/role_actions.xml
+++ b/linden/indra/newview/skins/default/xui/de/role_actions.xml
@@ -4,157 +4,157 @@
4 description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung." 4 description="Diese Fähigkeiten ermöglichen das Hinzufügen und Entfernen von Mitgliedern sowie den Beitritt ohne Einladung."
5 name="Membership"> 5 name="Membership">
6 <action description="Personen in diese Gruppe einladen" 6 <action description="Personen in diese Gruppe einladen"
7 longdescription="Personen zu dieser Gruppe einladen können Sie mit &apos;Neue Person einladen...&apos; unter &apos;Mitglieder und Rollen&apos; &gt; &apos;Mitglieder&apos;." 7 longdescription="Personen zu dieser Gruppe einladen können Sie mit „Neue Person einladen...“ unter „Mitglieder und Rollen“ &gt; „Mitglieder“."
8 name="member invite" /> 8 name="member invite" />
9 <action description="Mitglieder aus dieser Gruppe werfen" 9 <action description="Mitglieder aus dieser Gruppe werfen"
10 longdescription="Mitglieder von der Gruppe ausschließen können Sie mit &apos;Aus Gruppe werfen&apos; unter &apos;Mitglieder und Rollen&apos; &gt; &apos;Mitglieder&apos;. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann von der Gruppe ausschließen, wenn es die Rolle &apos;Jeder&apos; innehat, aber KEINE ANDERE Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit &apos;Mitgliedern Rollen entziehen&apos; verfügen." 10 longdescription="Mitglieder von der Gruppe ausschließen können Sie mit „Aus Gruppe werfen“ unter „Mitglieder und Rollen“ &gt; „Mitglieder“. Ein Eigentümer kann jeden, außer einen anderen Eigentümer, ausschließen. Wenn Sie kein Eigentümer sind, können Sie ein Mitglied nur dann von der Gruppe ausschließen, wenn es die Rolle „Jeder“ innehat, aber KEINE ANDERE Rolle. Um Mitgliedern Rollen entziehen zu können, müssen Sie über die Fähigkeit „Mitgliedern Rollen entziehen“ verfügen."
11 name="member eject" /> 11 name="member eject" />
12 <action 12 <action
13 description="&apos;Registrierung offen&apos; einstellen und &apos;Beitrittsgebühr&apos; ändern" 13 description="Registrierung offen einstellen und Beitrittsgebühr ändern"
14 longdescription="&apos;Beitritt möglich&apos; erlaubt den Beitritt zur Gruppe ohne vorhergehende Einladung. Die &apos;Beitrittsgebühr&apos; wird in den Gruppeneinstellungen auf der Registerkarte &apos;Allgemein&apos; festgelegt." 14 longdescription="„Beitritt möglich“ erlaubt den Beitritt zur Gruppe ohne vorhergehende Einladung. Die „Beitrittsgebühr“ wird in den Gruppeneinstellungen auf der Registerkarte „Allgemein“ festgelegt."
15 name="member options" /> 15 name="member options" />
16 </action_set> 16 </action_set>
17 <action_set 17 <action_set
18 description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen." 18 description="Diese Fähigkeiten ermöglichen das Hinzufügen, Entfernen und Ändern von Gruppenrollen, das Zuweisen und Entfernen von Rollen und das Zuweisen von Fähigkeiten zu Rollen."
19 name="Roles"> 19 name="Roles">
20 <action description="Neue Rollen erstellen" 20 <action description="Neue Rollen erstellen"
21 longdescription="Neue Rollen erstellen Sie unter &apos;Mitglieder und Rollen&apos; &gt; &apos;Rollen&apos;." 21 longdescription="Neue Rollen erstellen Sie unter „Mitglieder und Rollen“ &gt; „Rollen“."
22 name="role create" /> 22 name="role create" />
23 <action description="Rollen löschen" 23 <action description="Rollen löschen"
24 longdescription="Rollen löschen können Sie unter &apos;Mitglieder und Rollen&apos; &gt; &apos;Rollen&apos;." 24 longdescription="Rollen löschen können Sie unter „Mitglieder und Rollen“ &gt; „Rollen“."
25 name="role delete" /> 25 name="role delete" />
26 <action description="Rollennamen, Titel und Beschreibung ändern" 26 <action description="Rollennamen, Titel und Beschreibung ändern"
27 longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte &apos;Mitglieder und Rollen&apos; &gt; &apos;Rollen&apos; ändern." 27 longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte „Mitglieder und Rollen“ &gt; „Rollen“ ändern."
28 name="role properties" /> 28 name="role properties" />
29 <action description="Mitgliedern nur eigene Rollen zuweisen" 29 <action description="Mitgliedern nur eigene Rollen zuweisen"
30 longdescription="Mitgliedern nur eigene Rollen zuweisen können Sie im Bereich &apos;Zugewiesene Rollen&apos; auf der Registerkarte &apos;Mitglieder und Rollen&apos; &gt; &apos;Mitglieder&apos;. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen." 30 longdescription="Mitgliedern nur eigene Rollen zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. Ein Mitglied mit dieser Fähigkeit kann anderen Mitgliedern nur die eigenen Rollen zuweisen."
31 name="role assign member limited" /> 31 name="role assign member limited" />
32 <action description="Mitgliedern beliebige Rolle zuweisen" 32 <action description="Mitgliedern beliebige Rolle zuweisen"
33 longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich &apos;Zugewiesene Rollen&apos; auf der Registerkarte &apos;Mitglieder und Rollen&apos; &gt; &apos;Mitglieder&apos;. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." 33 longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) Rollen mit weitreichenden Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
34 name="role assign member" /> 34 name="role assign member" />
35 <action description="Mitgliedern Rollen entziehen" 35 <action description="Mitgliedern Rollen entziehen"
36 longdescription="Mitgliedern Rollen entziehen können Sie im Bereich &apos;Rollen&apos; auf der Registerkarte &apos;Mitglieder und Rollen&apos; &gt; &apos;Mitglieder&apos;. Eigentümer können nicht entfernt werden." 36 longdescription="Mitgliedern Rollen entziehen können Sie im Bereich „Rollen“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Mitglieder“. Eigentümer können nicht entfernt werden."
37 name="role remove member" /> 37 name="role remove member" />
38 <action description="Rollenfähigkeiten zuweisen und entfernen" 38 <action description="Rollenfähigkeiten zuweisen und entfernen"
39 longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich &apos;Zulässige Fähigkeiten&apos; auf der Registerkarte &apos;Mitglieder und Rollen&apos; &gt; &apos;Rollen&apos;. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." 39 longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich „Zulässige Fähigkeiten“ auf der Registerkarte „Mitglieder und Rollen“ &gt; „Rollen“. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann sich selbst und jedem anderen Mitglied (außer dem Eigentümer) alle Fähigkeiten zuweisen und damit fast Eigentümerrechte erreichen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
40 name="role change actions" /> 40 name="role change actions" />
41 </action_set> 41 </action_set>
42 <action_set 42 <action_set
43 description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien." 43 description="Diese Fähigkeiten ermöglichen es, die Gruppenidentität zu ändern, z. B. öffentliche Sichtbarkeit, Charta und Insignien."
44 name="Group Identity"> 44 name="Group Identity">
45 <action 45 <action
46 description="Charta, Insignien und &apos;Im Web veröffentlichen&apos; ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind." 46 description="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind."
47 longdescription="Charta, Insignien und &apos;Im Web veröffentlichen&apos; ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte &apos;Allgemein&apos;." 47 longdescription="Charta, Insignien und „Im Web veröffentlichen“ ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte „Allgemein“."
48 name="group change identity" /> 48 name="group change identity" />
49 </action_set> 49 </action_set>
50 <action_set 50 <action_set
51 description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie &apos;Land-Info...&apos; oder klicken Sie in der Menüleiste auf den Parzellennamen." 51 description="Diese Fähigkeiten ermöglichen es, gruppeneigenes Land zu übertragen, zu bearbeiten und zu verkaufen. Klicken Sie mit rechts auf den Boden und wählen Sie „Land-Info...“ oder klicken Sie in der Menüleiste auf den Parzellennamen."
52 name="Parcel Management"> 52 name="Parcel Management">
53 <action description="Land übertragen und für Gruppe kaufen" 53 <action description="Land übertragen und für Gruppe kaufen"
54 longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter &apos;Land-Info&apos; &gt; &apos;Allgemein&apos;." 54 longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Allgemein“."
55 name="land deed" /> 55 name="land deed" />
56 <action description="Land Governor Linden überlassen" 56 <action description="Land Governor Linden überlassen"
57 longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter &apos;Land-Info&apos; &gt; &apos;Allgemein&apos; aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." 57 longdescription="Land Governor Linden überlassen. *WARNUNG* Jedes Mitglied in einer Rolle mit dieser Fähigkeit kann gruppeneigenes Land unter „Land-Info“ &gt; „Allgemein“ aufgeben und es ohne Verkauf in das Eigentum von Linden zurückführen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
58 name="land release" /> 58 name="land release" />
59 <action description="Land.zu.verkaufen-Info einstellen" 59 <action description="Land.zu.verkaufen-Info einstellen"
60 longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter &apos;Land-Info&apos; &gt; &apos;Allgemein&apos; verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen." 60 longdescription="Land zu verkaufen-Info einstellen. *WARNUNG* Mitglieder in einer Rolle mit dieser Fähigkeit können gruppeneigenes Land jederzeit unter „Land-Info“ &gt; „Allgemein“ verkaufen! Überlegen Sie sich, wem Sie diese Fähigkeit verleihen."
61 name="land set sale info" /> 61 name="land set sale info" />
62 <action description="Parzellen teilen und zusammenlegen" 62 <action description="Parzellen teilen und zusammenlegen"
63 longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie &apos;Terrain bearbeiten&apos; und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf &apos;Unterteilen...&apos;. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf &apos;Zusammenlegen...&apos;." 63 longdescription="Parzellen teilen und zusammenlegen. Klicken Sie dazu mit rechts auf den Boden, wählen sie „Terrain bearbeiten“ und ziehen Sie die Maus auf das Land, um eine Auswahl zu treffen. Zum Teilen treffen Sie eine Auswahl und klicken auf „Unterteilen...“. Zum Zusammenlegen von zwei oder mehr angrenzenden Parzellen klicken Sie auf „Zusammenlegen...“."
64 name="land divide join" /> 64 name="land divide join" />
65 </action_set> 65 </action_set>
66 <action_set 66 <action_set
67 description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen." 67 description="Diese Fähigkeiten ermöglichen es, den Parzellennamen und die Veröffentlichungseinstellungen sowie die Anzeige des Suchverzeichnisses, den Landepunkt und die TP-Routenoptionen festzulegen."
68 name="Parcel Identity"> 68 name="Parcel Identity">
69 <action 69 <action
70 description="&apos;In &quot;Orte suchen&quot; anzeigen&apos; ein-/ausschalten und Kategorie festlegen" 70 description="In Orte suchen anzeigen ein-/ausschalten und Kategorie festlegen"
71 longdescription="Auf der Registerkarte &apos;Optionen&apos; unter &apos;Land-Info&apos; können Sie &apos;In &quot;Orte suchen&quot; anzeigen&apos; ein- und ausschalten und die Parzellenkategorie festlegen." 71 longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „In Orte suchen anzeigen“ ein- und ausschalten und die Parzellenkategorie festlegen."
72 name="land find places" /> 72 name="land find places" />
73 <action 73 <action
74 description="Name und Beschreibung der Parzelle und Einstellungen für &apos;Im Web veröffentlichen&apos; ändern" 74 description="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern"
75 longdescription="Name und Beschreibung der Parzelle und Einstellungen für &apos;Im Web veröffentlichen&apos; ändern. Diese Einstellungen finden Sie unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos;." 75 longdescription="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ &gt; „Optionen“."
76 name="land change identity" /> 76 name="land change identity" />
77 <action description="Landepunkt und Teleport-Route festlegen" 77 <action description="Landepunkt und Teleport-Route festlegen"
78 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos;." 78 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle einen Landepunkt für ankommende Teleports und Teleport-Routen festlegen. Diese Einstellungen finden Sie unter „Land-Info“ &gt; „Optionen“."
79 name="land set landing point" /> 79 name="land set landing point" />
80 </action_set> 80 </action_set>
81 <action_set 81 <action_set
82 description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie &apos;Objekte erstellen&apos;, &apos;Terrain bearbeiten&apos; sowie Musik- und Medieneinstellungen zu ändern." 82 description="Diese Fähigkeiten ermöglichen es, Parzellenoptionen wie „Objekte erstellen“, „Terrain bearbeiten“ sowie Musik- und Medieneinstellungen zu ändern."
83 name="Parcel Settings"> 83 name="Parcel Settings">
84 <action description="Musik- und Medieneinstellungen ändern" 84 <action description="Musik- und Medieneinstellungen ändern"
85 longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter &apos;Land-Info&apos; &gt; &apos;Medien&apos;." 85 longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ &gt; „Medien“."
86 name="land change media" /> 86 name="land change media" />
87 <action description="&apos;Terrain bearbeiten&apos; ein/aus" 87 <action description="Terrain bearbeiten ein/aus"
88 longdescription="&apos;Terrain bearbeiten&apos; ein/aus. *WARNUNG* &apos;Land-Info&apos; &gt; &apos;Optionen&apos; &gt; &apos;Terrain bearbeiten&apos; ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos;." 88 longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ &gt; „Optionen“ &gt; „Terrain bearbeiten“ ermöglicht jedem das Terraformen Ihres Grundstücks und das Setzen und Verschieben von Linden-Pflanzen. Überlegen Sie sich, wem Sie diese Fähigkeit verleihen. Diese Einstellung finden Sie unter „Land-Info“ &gt; „Optionen“."
89 name="land edit" /> 89 name="land edit" />
90 <action description="&apos;Land-Info&apos;-Optionen einstellen" 90 <action description="Land-Info-Optionen einstellen"
91 longdescription="Auf der Registerkarte &apos;Optionen&apos; unter &apos;Land-Info&apos; können Sie &apos;Sicher (kein Schaden)&apos; und &apos;Fliegen&apos; ein- und ausschalten und Einwohnern folgende Aktionen auf gruppeneigenem Land erlauben: &apos;Objekte erstellen&apos;, &apos;Terrain bearbeiten&apos;, &apos;Landmarken erstellen&apos; und &apos;Skripts ausführen&apos;." 91 longdescription="Auf der Registerkarte „Optionen“ unter „Land-Info“ können Sie „Sicher (kein Schaden)“ und „Fliegen“ ein- und ausschalten und Einwohnern folgende Aktionen auf gruppeneigenem Land erlauben: „Objekte erstellen“, „Terrain bearbeiten“, „Landmarken erstellen“ und „Skripts ausführen“."
92 name="land options" /> 92 name="land options" />
93 </action_set> 93 </action_set>
94 <action_set 94 <action_set
95 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben." 95 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Umgehen von Restriktionen auf gruppeneigenen Parzellen zu erlauben."
96 name="Parcel Powers"> 96 name="Parcel Powers">
97 <action description="&apos;Terrain bearbeiten&apos; zulassen" 97 <action description="Terrain bearbeiten zulassen"
98 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos; deaktiviert ist." 98 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
99 name="land allow edit land" /> 99 name="land allow edit land" />
100 <action description="&apos;Fliegen&apos; zulassen" 100 <action description="Fliegen zulassen"
101 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos; deaktiviert ist." 101 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
102 name="land allow fly" /> 102 name="land allow fly" />
103 <action description="&apos;Objekte erstellen&apos; zulassen" 103 <action description="Objekte erstellen zulassen"
104 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos; deaktiviert ist." 104 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
105 name="land allow create" /> 105 name="land allow create" />
106 <action description="&apos;Landmarke erstellen&apos; zulassen" 106 <action description="Landmarke erstellen zulassen"
107 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter &apos;Land-Info&apos; &gt; &apos;Optionen&apos; deaktiviert ist." 107 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist."
108 name="land allow landmark" /> 108 name="land allow landmark" />
109 <action description="&apos;Hier als Zuhause wählen&apos; auf Gruppenland zulassen" 109 <action description="Hier als Zuhause wählen auf Gruppenland zulassen"
110 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion &apos;Welt&apos; &gt; &apos;Hier als Zuhause wählen&apos; verwenden." 110 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ &gt; „Hier als Zuhause wählen“ verwenden."
111 name="land allow set home" /> 111 name="land allow set home" />
112 </action_set> 112 </action_set>
113 <action_set 113 <action_set
114 description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern." 114 description="Diese Fähigkeiten ermöglichen es, den Zugang auf gruppeneigenen Parzellen zu steuern. Dazu gehört das Einfrieren und Ausschließen von Einwohnern."
115 name="Parcel Access"> 115 name="Parcel Access">
116 <action description="Parzellen-Zugangslisten verwalten" 116 <action description="Parzellen-Zugangslisten verwalten"
117 longdescription="Parzellen-Zugangslisten bearbeiten Sie unter &apos;Land-Info&apos; &gt; &apos;Zugang&apos;." 117 longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ &gt; „Zugang“."
118 name="land manage allowed" /> 118 name="land manage allowed" />
119 <action description="Parzellen-Bannlisten verwalten" 119 <action description="Parzellen-Bannlisten verwalten"
120 longdescription="Parzellen-Bannlisten bearbeiten Sie unter &apos;Land-Info&apos; &gt; &apos;Verbannen&apos;." 120 longdescription="Parzellen-Bannlisten bearbeiten Sie unter „Land-Info“ &gt; „Verbannen“."
121 name="land manage banned" /> 121 name="land manage banned" />
122 <action 122 <action
123 description="Parzelleneinstellungen für &apos;Pässe verkaufen...&apos; ändern" 123 description="Parzelleneinstellungen für Pässe verkaufen... ändern"
124 longdescription="Die Parzellen-Einstellungen für &apos;Pässe verkaufen...&apos; ändern Sie unter &apos;Land-Info&apos; &gt; &apos;Zugang&apos;." 124 longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen...“ ändern Sie unter „Land-Info“ &gt; „Zugang“."
125 name="land manage passes" /> 125 name="land manage passes" />
126 <action description="Einwohner aus Parzellen werfen und einfrieren" 126 <action description="Einwohner aus Parzellen werfen und einfrieren"
127 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Personen auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie die Person mit rechts an und wählen Sie &apos;Mehr&apos; &gt;, dann &apos;Ausschließen...&apos; oder &apos;Einfrieren...&apos;." 127 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können gegen unerwünschte Personen auf einer gruppeneigenen Parzelle Maßnahmen ergreifen. Klicken Sie die Person mit rechts an und wählen Sie „Mehr“ &gt;, dann „Ausschließen...“ oder „Einfrieren...“."
128 name="land admin" /> 128 name="land admin" />
129 </action_set> 129 </action_set>
130 <action_set 130 <action_set
131 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden." 131 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Zurückgeben von Objekten sowie das Platzieren und Verschieben von Linden-Pflanzen zu erlauben. Mitglieder können das Grundstück aufräumen und an der Landschaftsgestaltung mitwirken. Aber Vorsicht: Zurückgegebene Objekte können nicht mehr zurückgeholt werden."
132 name="Parcel Content"> 132 name="Parcel Content">
133 <action description="Gruppeneigene Objekte zurückgeben" 133 <action description="Gruppeneigene Objekte zurückgeben"
134 longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter &apos;Land-Info&apos; &gt; &apos;Objekte&apos; zurückgeben." 134 longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
135 name="land return group owned" /> 135 name="land return group owned" />
136 <action description="Gruppenobjekte zurückgeben" 136 <action description="Gruppenobjekte zurückgeben"
137 longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter &apos;Land-Info&apos; &gt; &apos;Objekte&apos; zurückgeben." 137 longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
138 name="land return group set" /> 138 name="land return group set" />
139 <action description="Gruppenfremde Objekte zurückgeben" 139 <action description="Gruppenfremde Objekte zurückgeben"
140 longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter &apos;Land-Info&apos; &gt; &apos;Objekte&apos; zurückgeben." 140 longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ &gt; „Objekte“ zurückgeben."
141 name="land return non group" /> 141 name="land return non group" />
142 <action description="Landschaftsgestaltung mit Linden-Pflanzen" 142 <action description="Landschaftsgestaltung mit Linden-Pflanzen"
143 longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter &apos;Objekte&apos;. Sie lassen sich auch mit der Schaltfläche &apos;Erstellen&apos; erzeugen." 143 longdescription="Die Fähigkeit zur Landschaftsgestaltung ermöglicht das Platzieren und Verschieben von Linden-Bäumen, -Pflanzen und -Gräsern. Diese Objekte finden Sie im Bibliotheksordner des Inventars unter „Objekte“. Sie lassen sich auch mit der Schaltfläche „Erstellen“ erzeugen."
144 name="land gardening" /> 144 name="land gardening" />
145 </action_set> 145 </action_set>
146 <action_set 146 <action_set
147 description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden unter &apos;Auswahl-Tool&apos; &gt; &apos;Bearbeiten&apos; auf der Registerkarte &apos;Allgemein&apos; vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie &apos;Bearbeiten&apos;, um seine Einstellungen anzuzeigen." 147 description="Diese Fähigkeiten ermöglichen es, gruppeneigene Objekte zu übertragen, zu bearbeiten und zu verkaufen. Änderungen werden unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“ vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie „Bearbeiten“, um seine Einstellungen anzuzeigen."
148 name="Object Management"> 148 name="Object Management">
149 <action description="Objekte an Gruppe übertragen" 149 <action description="Objekte an Gruppe übertragen"
150 longdescription="Objekte an eine Gruppe übertragen können Sie unter &apos;Auswahl-Tool&apos; &gt; &apos;Bearbeiten&apos; auf der Registerkarte &apos;Allgemein&apos;." 150 longdescription="Objekte an eine Gruppe übertragen können Sie unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“."
151 name="object deed" /> 151 name="object deed" />
152 <action 152 <action
153 description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)" 153 description="Gruppeneigene Objekte manipulieren (verschieben, kopieren, bearbeiten)"
154 longdescription="Gruppeneigene Objekte lassen sich unter &apos;Auswahl-Tool&apos; &gt; &apos;Bearbeiten&apos; auf der Registerkarte &apos;Allgemein&apos; manipulieren (verschieben, kopieren, bearbeiten)." 154 longdescription="Gruppeneigene Objekte lassen sich unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“ manipulieren (verschieben, kopieren, bearbeiten)."
155 name="object manipulate" /> 155 name="object manipulate" />
156 <action description="Gruppeneigene Objekte zum Verkauf freigeben" 156 <action description="Gruppeneigene Objekte zum Verkauf freigeben"
157 longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter &apos;Auswahl-Tool&apos; &gt; &apos;Bearbeiten&apos; auf der Registerkarte &apos;Allgemein&apos;." 157 longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter „Auswahl-Tool“ &gt; „Bearbeiten“ auf der Registerkarte „Allgemein“."
158 name="object set sale" /> 158 name="object set sale" />
159 </action_set> 159 </action_set>
160 <action_set 160 <action_set
@@ -168,20 +168,20 @@
168 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben." 168 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Senden, Empfangen und Anzeigen von Gruppennachrichten zu erlauben."
169 name="Notices"> 169 name="Notices">
170 <action description="Mitteilungen senden" 170 <action description="Mitteilungen senden"
171 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter &apos;Mitteilungen&apos; Mitteilungen senden." 171 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Mitteilungen“ Mitteilungen senden."
172 name="notices send" /> 172 name="notices send" />
173 <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen" 173 <action description="Mitteilungen erhalten und ältere Mitteilungen anzeigen"
174 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und in der Gruppeninfo unter &apos;Mitteilungen&apos; ältere Mitteilungen einsehen." 174 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Mitteilungen erhalten und in der Gruppeninfo unter „Mitteilungen“ ältere Mitteilungen einsehen."
175 name="notices receive" /> 175 name="notices receive" />
176 </action_set> 176 </action_set>
177 <action_set 177 <action_set
178 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben." 178 description="Diese Fähigkeiten ermöglichen es, Mitgliedern das Erstellen von Anfragen, das Abstimmen über Anfragen und das Anzeigen des Abstimmprotokolls zu erlauben."
179 name="Proposals"> 179 name="Proposals">
180 <action description="Neue Anfragen" 180 <action description="Neue Anfragen"
181 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte &apos;Anfragen&apos; in der Gruppeninfo abgestimmt werden kann." 181 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Anfragen stellen, über die auf der Registerkarte „Anfragen“ in der Gruppeninfo abgestimmt werden kann."
182 name="proposal start" /> 182 name="proposal start" />
183 <action description="Über Anfragen abstimmen" 183 <action description="Über Anfragen abstimmen"
184 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter &apos;Anfragen&apos; über Anfragen abstimmen." 184 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können in der Gruppeninfo unter „Anfragen“ über Anfragen abstimmen."
185 name="proposal vote" /> 185 name="proposal vote" />
186 </action_set> 186 </action_set>
187 <action_set 187 <action_set
@@ -191,7 +191,7 @@
191 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten." 191 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Chat und Gruppen-Voice-Chat beitreten."
192 name="join group chat" /> 192 name="join group chat" />
193 <action description="Gruppen-Voice-Chat beitreten" 193 <action description="Gruppen-Voice-Chat beitreten"
194 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten.HINWEIS:Sie benötigen die Fähigkeit &apos;Gruppen-Chat beitreten&apos;, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten." 194 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Gruppen-Voice-Chat beitreten. HINWEIS: Sie benötigen die Fähigkeit „Gruppen-Chat beitreten“, um Zugang zu dieser Voice-Chat-Sitzung zu erhalten."
195 name="join voice chat" /> 195 name="join voice chat" />
196 <action description="Gruppen-Chat moderieren" 196 <action description="Gruppen-Chat moderieren"
197 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern." 197 longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können den Zugang zu und die Teilnahme an Gruppen-Chat- und Voice-Chat-Sitzungen steuern."
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
index 2f1156e..056f97b 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
@@ -7,9 +7,9 @@
7 follows="left|top|right|bottom" font="SansSerifSmall" height="168" left="6" 7 follows="left|top|right|bottom" font="SansSerifSmall" height="168" left="6"
8 max_length="65536" mouse_opaque="true" name="credits_editor" width="458" 8 max_length="65536" mouse_opaque="true" name="credits_editor" width="458"
9 word_wrap="true"> 9 word_wrap="true">
10 Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ and many others. 10 Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others.
11 11
12 Thank you to the following residents for helping to ensure that this is the best version yet: Aimee Trescothick, Alexandrea Fride, Amber DeCuir, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere mayo, Dirk Talamasca, Drew Dwi, Ellla McMahon, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, faron karu, fenoe low, Gellan Glenelg, Harleen Gretzky, Holger Gilruth, Iustinian Tomsen, Jacek Antonell, Jim Kupferberg, Joeseph Albanese, Kirstenlee Cinquetti, lea Parnall, Lex Neva, Lilly Zenovka, Lim Catteneo, McCabe Maxsted, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, Stacy Wombat, Sugarcult Dagger, Tayra dagostino, ThaBiGGDoGG Richez, tx Oh, Wundur Primbee, Yuu Nakamichi 12 Thank you to the following residents for helping to ensure that this is the best version yet: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi
13 13
14 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 14 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
15 APR Copyright (C) 2000-2004 The Apache Software Foundation 15 APR Copyright (C) 2000-2004 The Apache Software Foundation
@@ -33,7 +33,7 @@
33 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) 33 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
34 34
35 35
36 We can only see a short distance ahead, but we can see plenty there that needs to be done. --Alan Turing</text_editor> 36 I get by with a little help from my friends. --Richard Starkey</text_editor>
37 37
38 <text_editor bottom_delta="174" embedded_items="false" 38 <text_editor bottom_delta="174" embedded_items="false"
39 follows="left|top|right|bottom" font="SansSerif" height="238" left="6" 39 follows="left|top|right|bottom" font="SansSerif" height="238" left="6"
diff --git a/linden/indra/newview/skins/default/xui/fr/alerts.xml b/linden/indra/newview/skins/default/xui/fr/alerts.xml
index 18557bb..a8ea588 100644
--- a/linden/indra/newview/skins/default/xui/fr/alerts.xml
+++ b/linden/indra/newview/skins/default/xui/fr/alerts.xml
@@ -2334,7 +2334,7 @@ Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
2334 </alert> 2334 </alert>
2335 <alert name="DisplaySetToRecommended"> 2335 <alert name="DisplaySetToRecommended">
2336 <message name="message"> 2336 <message name="message">
2337 Le niveau de sécurité de vos paramètres d&apos;affichage dépend de votre configuration système. 2337 Vos paramètres d&apos;affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système.
2338 </message> 2338 </message>
2339 </alert> 2339 </alert>
2340 <alert name="UnableToConnect"> 2340 <alert name="UnableToConnect">
diff --git a/linden/indra/newview/skins/default/xui/fr/floater_about.xml b/linden/indra/newview/skins/default/xui/fr/floater_about.xml
index 3f6d47c..716ce10 100644
--- a/linden/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -1,9 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="floater_about" title="A propos de Second Life"> 2<floater name="floater_about" title="A propos de Second Life">
3 <text_editor name="credits_editor"> 3 <text_editor name="credits_editor">
4 Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ et de nombreuses autres personnes. 4 Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les et de nombreuses autres personnes.
5 5
6 Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu&apos;à présent) : Aminom Marvin, ava ganache, Balthazar Fouroux, CrystalShard Foo, Davec Horsforth, Drew Dwi, Ellla McMahon, Gellan Glenelg, Harleen Gretzky, istephanija munro, Iustinian Tomsen, JC Glimmer, Joeseph Albanese, kelly young, Latif Khalifa, Lex Neva, McCabe Maxsted, Michi Lumin, moni duettmann, Moon Metty, motor loon, Opensource Obscure, Sky Hye, Soap Clawtooth, velveeta biedermann, zeebster colasanti 6 Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu&apos;à présent) : afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi
7 7
8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
9 APR Copyright (C) 2000-2004 The Apache Software Foundation 9 APR Copyright (C) 2000-2004 The Apache Software Foundation
diff --git a/linden/indra/newview/skins/default/xui/ja/alerts.xml b/linden/indra/newview/skins/default/xui/ja/alerts.xml
index 48b7a64..4fe99b6 100644
--- a/linden/indra/newview/skins/default/xui/ja/alerts.xml
+++ b/linden/indra/newview/skins/default/xui/ja/alerts.xml
@@ -200,7 +200,7 @@ Studio exhibitのウェブ・ページで確認してください。
200 </alert> 200 </alert>
201 <alert name="GroupCreateSuccess"> 201 <alert name="GroupCreateSuccess">
202 <message name="message"> 202 <message name="message">
203 グループの作成が正常にました。 203 グループの作成が正常にました。
204 </message> 204 </message>
205 </alert> 205 </alert>
206 <alert name="UnableToCreateGroup"> 206 <alert name="UnableToCreateGroup">
@@ -878,7 +878,7 @@ L$が不足しているのでこのグループに参加することができま
878 </alert> 878 </alert>
879 <alert name="GoToAuctionPage"> 879 <alert name="GoToAuctionPage">
880 <message name="message"> 880 <message name="message">
881 [SECOND_LIFE]ウェブ・ページに移動し、入札あるいはオークションの詳細を確認しますか? 881 [SECOND_LIFE]ウェブ・ページに移動し、 入札あるいはオークションの詳細を確認しますか?
882 </message> 882 </message>
883 <option name="GotoPage"> 883 <option name="GotoPage">
884 OK 884 OK
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_about.xml b/linden/indra/newview/skins/default/xui/ja/floater_about.xml
index 9027f84..86b8883 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -1,9 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_about" title="Second Lifeについて"> 2<floater name="floater_about" title="Second Lifeについて">
3 <text_editor name="credits_editor"> 3 <text_editor name="credits_editor">
4 Second Lifeは、 Philip、Tessa、Andrew、Cory、James、Ben、Char、Charlie、Colin、Dan、Daniel、Doug、Eric、Hamlet、Haney、Eve、Hunter、Ian、Jeff、Jennifer、Jim、John、Lee、Mark、Peter、Phoenix、Richard、Robin、Xenon、Steve、Tanya、Eddie、Avi、Frank、Bruce、Aaron、Alice、Bob、Debra、Eileen、Helen、Janet、Louie、Leviathania、Stefan、Ray、Kevin、Tom、Mikeb、MikeT、Burgess、Elena、Tracy、Bill、Todd、Ryan、Zach、Sarah、Nova、Tim、Stephanie、Michael、Evan、Nicolas、Catherine、Rachelle、Dave、Holly、Bub、Kelly、Magellan、Ramzi、Don、Sabin、Jill、Rheya、Jeska、Torley、Kona、Callum、Charity、Ventrella、Jack、Vektor、Iris、Chris、Nicole、Mick、Reuben、Blue、Babbage、Yedwab、Deana、Lauren、Brent、Pathfinder、Chadrick、Altruima、Jesse、Teeny、Monroe、Icculus、David、Tess、Lizzie、Patsy、Isaac、Lawrence、Cyn、Bo、Gia、Annette、Marius、Tbone、Jonathan、Karen、Ginsu、Satoko、Yuko、Makiko、Thomas、Harry、Seth、Alexei、Brian、Guy、Runitai、Ethan、Data、Cornelius、Kenny、Swiss、Zero、Natria、Wendy、Stephen、Teeple、Thumper、Lucy、Dee、Mia、Liana、Warren、Branka、Aura、beez、Milo、Hermia、Red、Thrax、Joe、Sally、Magenta、Mogura、Paul、Jose、Rejean、Henrik、Lexie、Amber、Logan、Xan、Nora、Morpheus、Donovan、Leyla、MichaelFrancis、Beast、Cube、Bucky、Joshua、Stryfe、Harmony、Teresa、Claudia、Walker、Glenn、Fritz、Fordak、June、Cleopetra、Jean、Ivy、Betsy、Roosevelt、Spike、Ken、Which、Tofu、Chiyo、Rob、Zee、dustin、George、Del、Matthew、Cat、Jacqui、Lightfoot、Adrian、Viola、Alfred、Noel、Irfan、Sunil、Yool、Rika、Jane、Xtreme、Frontier、a2、Neo、Siobhan、Yoz、Justin、Elle、Qarl、Benjamin、Isabel、Gulliver、Everett、Christopher、Izzy、Stephany、Garry、Sejong、Sean、Tobin、Iridium、Meta、Anthony、Jeremy、JP、Jake、Maurice、Madhavi、Leopard、Kyle、Joon、Kari、Bert、Belinda、Jon、Kristi、Bridie、Pramod、KJ、Socrates、Maria、Ivan、Aric、Yamasaki、Adreanne、Jay、MitchK、Ceren、Coco、Durl、Jenny、Periapse、Kartic、Storrs、Lotte、Sandy、Rohn、Colossus、Zen、BigPapi、Brad、Pastrami、Kurz、Mani、Neuro、Jaime、MJ、Rowan、Sgt、Elvis、Gecko、Samuel、Sardonyx、Leo、Bryan、Niko、Soft、Poppy、Rachel、Aki、Angelo、Banzai、Alexa、Sue、CeeLo、Bender、CG、Gillian、Pelle、Nick、Echo、Zara、Christine、Shamiran、Emma、Blake、Keiko、Plexus、Joppa、Sidewinder、Erica、Ashlei、Twilight、Kristen、Brett、Q、Enus、Simon、Bevis、Kraft、Kip、Chandler、Ron、LauraP、Ram、KyleJM、Scouse、Prospero、Melissa、Marty、Nat、Hamilton、Kend、Lordan、Jimmy、Kosmo、Seraph、Green、Ekim、Wiggo、JT、Rome、Doris、Miz、Benoc、Whump、Trinity、Patch、Kate、TJ、Bao、Joohwan、Christy、Sofia、Matias、Cogsworth、Johan、Oreh、Cheah、Angela、Brandy、Mango、Lan、Aleks、Gloria、Heidy、Mitchell、Space、Colton、Bambers、Einstein、Maggie、Malbers、Rose、Winnie、Stella、Milton、Rothman、Niall、Marin、Allison、Katie、Dawn、Katt、Dusty、Kalpana、Judy、Andrea、Ambroff、Infinity、Gail、Rico、Raymond、Yi、William、Christa、M、Teagan、Scout、Molly、Dante、Corr、Dynamike、Usi、Kaylee、Vidtuts、Lil、Danica、Sascha、Kelv、Jacob、Nya、Rodney、Brandon、Elsie、Blondin、Grant、Katrin、Nyx、Gabriel、Locklainn、Claire、Devin、Minerva、Monty、Austin、Bradford、Si、Keira、H、Caitlin、Dita、Makai、Jenn、Ann、Meredith、Clare、Joy、Praveen、Cody、Edmund、Ruthe、Sirena、Gayathri、Spider、FJ、Davidoff、Tian、Jennie、Louise、Oskar、Landon、Noelle、Jarv、Ingrid、Al、Sommer、Doc、Aria、Huin、Gray、Lili、Vir、DJと、その他多数の人達によって作成されました。 4 Second Lifeは、 Philip、Tessa、Andrew、Cory、James、Ben、Char、Charlie、Colin、Dan、Daniel、Doug、Eric、Hamlet、Haney、Eve、Hunter、Ian、Jeff、Jennifer、Jim、John、Lee、Mark、Peter、Phoenix、Richard、Robin、Xenon、Steve、Tanya、Eddie、Avi、Frank、Bruce、Aaron、Alice、Bob、Debra、Eileen、Helen、Janet、Louie、Leviathania、Stefan、Ray、Kevin、Tom、Mikeb、MikeT、Burgess、Elena、Tracy、Bill、Todd、Ryan、Zach、Sarah、Nova、Tim、Stephanie、Michael、Evan、Nicolas、Catherine、Rachelle、Dave、Holly、Bub、Kelly、Magellan、Ramzi、Don、Sabin、Jill、Rheya、Jeska、Torley、Kona、Callum、Charity、Ventrella、Jack、Vektor、Iris、Chris、Nicole、Mick、Reuben、Blue、Babbage、Yedwab、Deana、Lauren、Brent、Pathfinder、Chadrick、Altruima、Jesse、Teeny、Monroe、Icculus、David、Tess、Lizzie、Patsy、Isaac、Lawrence、Cyn、Bo、Gia、Annette、Marius、Tbone、Jonathan、Karen、Ginsu、Satoko、Yuko、Makiko、Thomas、Harry、Seth、Alexei、Brian、Guy、Runitai、Ethan、Data、Cornelius、Kenny、Swiss、Zero、Natria、Wendy、Stephen、Teeple、Thumper、Lucy、Dee、Mia、Liana、Warren、Branka、Aura、beez、Milo、Hermia、Red、Thrax、Joe、Sally、Magenta、Mogura、Paul、Jose、Rejean、Henrik、Lexie、Amber、Logan、Xan、Nora、Morpheus、Donovan、Leyla、MichaelFrancis、Beast、Cube、Bucky、Joshua、Stryfe、Harmony、Teresa、Claudia、Walker、Glenn、Fritz、Fordak、June、Cleopetra、Jean、Ivy、Betsy、Roosevelt、Spike、Ken、Which、Tofu、Chiyo、Rob、Zee、dustin、George、Del、Matthew、Cat、Jacqui、Lightfoot、Adrian、Viola、Alfred、Noel、Irfan、Sunil、Yool、Rika、Jane、Xtreme、Frontier、a2、Neo、Siobhan、Yoz、Justin、Elle、Qarl、Benjamin、Isabel、Gulliver、Everett、Christopher、Izzy、Stephany、Garry、Sejong、Sean、Tobin、Iridium、Meta、Anthony、Jeremy、JP、Jake、Maurice、Madhavi、Leopard、Kyle、Joon、Kari、Bert、Belinda、Jon、Kristi、Bridie、Pramod、KJ、Socrates、Maria、Ivan、Aric、Yamasaki、Adreanne、Jay、MitchK、Ceren、Coco、Durl、Jenny、Periapse、Kartic、Storrs、Lotte、Sandy、Rohn、Colossus、Zen、BigPapi、Brad、Pastrami、Kurz、Mani、Neuro、Jaime、MJ、Rowan、Sgt、Elvis、Gecko、Samuel、Sardonyx、Leo、Bryan、Niko、Soft、Poppy、Rachel、Aki、Angelo、Banzai、Alexa、Sue、CeeLo、Bender、CG、Gillian、Pelle、Nick、Echo、Zara、Christine、Shamiran、Emma、Blake、Keiko、Plexus、Joppa、Sidewinder、Erica、Ashlei、Twilight、Kristen、Brett、Q、Enus、Simon、Bevis、Kraft、Kip、Chandler、Ron、LauraP、Ram、KyleJM、Scouse、Prospero、Melissa、Marty、Nat、Hamilton、Kend、Lordan、Jimmy、Kosmo、Seraph、Green、Ekim、Wiggo、JT、Rome、Doris、Miz、Benoc、Whump、Trinity、Patch、Kate、TJ、Bao、Joohwan、Christy、Sofia、Matias、Cogsworth、Johan、Oreh、Cheah、Angela、Brandy、Mango、Lan、Aleks、Gloria、Heidy、Mitchell、Space、Colton、Bambers、Einstein、Maggie、Malbers、Rose、Winnie、Stella、Milton、Rothman、Niall、Marin、Allison、Katie、Dawn、Katt、Dusty、Kalpana、Judy、Andrea、Ambroff、Infinity、Gail、Rico、Raymond、Yi、William、Christa、M、Teagan、Scout、Molly、Dante、Corr、Dynamike、Usi、Kaylee、Vidtuts、Lil、Danica、Sascha、Kelv、Jacob、Nya、Rodney、Brandon、Elsie、Blondin、Grant、Katrin、Nyx、Gabriel、Locklainn、Claire、Devin、Minerva、Monty、Austin、Bradford、Si、Keira、H、Caitlin、Dita、Makai、Jenn、Ann、Meredith、Clare、Joy、Praveen、Cody、Edmund、Ruthe、Sirena、Gayathri、Spider、FJ、Davidoff、Tian、Jennie、Louise、Oskar、Landon、Noelle、Jarv、Ingrid、Al、Sommer、Doc、Aria、Huin、Gray、Lili、Vir、DJ、Yang、T、Simone、Maestro、Scott、Charlene、Quixote、Amanda、Susan、Zed、Anne、Enkidu、Esbee、Joroan、Katelin、Roxie、Tay、Scarlet、Kevin、Johnny、Wolfgang、Andren、Bob、Howard、Merov、Rand、Ray、Michon、Newell、Galen、Dessie、Lesと、その他多数の人達によって作成されました。
5 5
6 このバージョンをこれまでで最高のものになるようご協力をいただいた以下の住人の皆様に深く感謝いたします。 Aminom Marvin、ava ganache、Balthazar Fouroux、CrystalShard Foo、Davec Horsforth、Drew Dwi、Ellla McMahon、Gellan Glenelg、Harleen Gretzky、istephanija munro、Iustinian Tomsen、JC Glimmer、Joeseph Albanese、kelly young、Latif Khalifa、Lex Neva、McCabe Maxsted、Michi Lumin、moni duettmann、Moon Metty、motor loon、Opensource Obscure、Sky Hye、Soap Clawtooth、velveeta biedermann、zeebster colasanti 6 このバージョンをこれまでで最高のものになるようご協力をいただいた以下の住人の皆様に深く感謝いたします。 afon shepherd、Aimee Trescothick、Alexandrea Fride、Alissa Sabre、Amber DeCuir、Asuka Neely、Auron Forcella、Blue Revolution、Bocan Undercroft、Boroondas Gupte、Brandon Shinobu、Bri Gufler、Buckaroo Mu、Celierra Darling、Christos Atlantis、Coder Kas、Cummere Mayo、dakota schwade、Dirk Talamasca、Dizzy Banjo、Drew Dwi、Duckling Kwak、Ellla McMahon、Erikah Jameson、Erinyse Planer、Eyana Yohkoh、Ezian Ecksol、Faron Karu、Fenoe Lowey、Fox Hwasung、Francisca Biedermann、Gally Young、Gellan Glenelg、Geneko Nemeth、Glenn Rotaru、Hagar Qinan、Harleen Gretzky、Holger Gilruth、hotrodjohnny gears、IAm Zabelin、Inigo Catteneo、Iustinian Tomsen、Jacek Antonell、James Benedek、Jim Kupferberg、Joeseph Albanese、JPT62089 Agnon、Kardargo Adamczyk、Kirstenlee Cinquetti、Latif Khalifa、lea Parnall、Lex Neva、Lillith Anatine、Lilly Zenovka、Lim Catteneo、Lindal Kidd、Mark Rosenbaum、MasterJ Chaplin、McCabe Maxsted、Melvin Starbrook、Meni Kaiousei、Mero Collas、Minakothegothicgeisha Kamachi、Moon Metty、neofilo aabye、Neutron Chesnokov、Nomad Ingwer、norritt Xi、Opensource Obscure、Oracle Weatherwax、Ourasi Ferraris、Pabl0 Roffo、Peyton Aleixandre、Phli Foxchase、Psi Merlin、r2d2 Wunderlich、Regi Yifu、Saijanai Kuhn、Sandor Balczo、Sarkan Dreamscape、Scree Raymaker、Sedona Mills、Selena Beale、Sheet Spotter、Shibari Twine、Silver Key、Simon Kline、SLB Wirefly、Stacy Wombat、Sugarcult Dagger、Tayra Dagostino、Tetsuryu Vlodovic、ThaBiGGDoGG Richez、Timo Gufler、tx Oh、wayfinder wishbringer、Wizzytoe McCullough、Wundur Primbee、Yann Dufaux、Yuu Nakamichi
7 7
8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
9 APR Copyright (C) 2000-2004 The Apache Software Foundation 9 APR Copyright (C) 2000-2004 The Apache Software Foundation
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_about_land.xml b/linden/indra/newview/skins/default/xui/ja/floater_about_land.xml
index c6f6e12..eda8fe8 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -92,7 +92,7 @@
92 プロフィール... 92 プロフィール...
93 </string> 93 </string>
94 <string name="info_text"> 94 <string name="info_text">
95 フォ... 95 ...
96 </string> 96 </string>
97 <string name="public_text"> 97 <string name="public_text">
98 (公共) 98 (公共)
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/linden/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index 3079d45..a532640 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -35,13 +35,13 @@
35 データを取得しています... 35 データを取得しています...
36 </text> 36 </text>
37 <text name="balance_label"> 37 <text name="balance_label">
38 現在所有している額 38 現在所有している
39 </text> 39 </text>
40 <text name="balance_amount"> 40 <text name="balance_amount">
41 L$ [AMT] 41 L$ [AMT]
42 </text> 42 </text>
43 <text name="buying_label"> 43 <text name="buying_label">
44 購入する額 44 購入する
45 </text> 45 </text>
46 <text name="buying_amount"> 46 <text name="buying_amount">
47 L$ [AMT] 47 L$ [AMT]
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_inspect.xml b/linden/indra/newview/skins/default/xui/ja/floater_inspect.xml
index fe2f075..c831201 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_inspect.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_inspect.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="inspect" title="オブジェクト検査"> 2<floater name="inspect" title="オブジェクト検査" min_width="450" >
3 <scroll_list name="object_list" 3 <scroll_list name="object_list"
4 tool_tip="このリストからオブジェクトを選択し、この世界で強調表示します。"> 4 tool_tip="このリストからオブジェクトを選択し、この世界で強調表示します。">
5 <column label="オブジェクト名" name="object_name" /> 5 <column label="オブジェクト名" name="object_name" />
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_inventory.xml b/linden/indra/newview/skins/default/xui/ja/floater_inventory.xml
index db90c4e..6804968 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_inventory.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_inventory.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Inventory" title="持ち物"> 2<floater name="Inventory" title="持ち物">
3 <search_editor label="ここにイプて検索" name="inventory search editor" /> 3 <search_editor label="ここに入力して検索" name="inventory search editor" />
4 <tab_container name="inventory filter tabs"> 4 <tab_container name="inventory filter tabs">
5 <inventory_panel label="すべて" name="All Items" /> 5 <inventory_panel label="すべて" name="All Items" />
6 <inventory_panel label="最近の入手アイテム" name="Recent Items" /> 6 <inventory_panel label="最近の入手アイテム" name="Recent Items" />
@@ -37,7 +37,7 @@
37 <menu_item_call label="新しい眼" name="New Eyes" /> 37 <menu_item_call label="新しい眼" name="New Eyes" />
38 </menu> 38 </menu>
39 </menu> 39 </menu>
40 <menu label="" name="Sort"> 40 <menu label="" name="Sort">
41 <menu_item_check label="名前" name="By Name" /> 41 <menu_item_check label="名前" name="By Name" />
42 <menu_item_check label="日付" name="By Date" /> 42 <menu_item_check label="日付" name="By Date" />
43 <menu_item_check label="フォルダは常に名前順" name="Folders Always By Name" /> 43 <menu_item_check label="フォルダは常に名前順" name="Folders Always By Name" />
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/linden/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
index 7ec92e4..be2710c 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml
@@ -49,7 +49,7 @@
49 </text> 49 </text>
50 <check_box label="グループ分担" name="CheckShareWithGroup" /> 50 <check_box label="グループ分担" name="CheckShareWithGroup" />
51 <check_box label="誰に対してもコピーを許可" name="CheckEveryoneCopy" /> 51 <check_box label="誰に対してもコピーを許可" name="CheckEveryoneCopy" />
52 <text name="NextOwnerLabel"> 52 <text name="NextOwnerLabel" width="158">
53 次のオーナーができること: 53 次のオーナーができること:
54 </text> 54 </text>
55 <check_box label="修正" name="CheckNextOwnerModify" /> 55 <check_box label="修正" name="CheckNextOwnerModify" />
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml
index a002991..3870ae1 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml
@@ -4,15 +4,15 @@
4 <layout_panel name="nav_controls"> 4 <layout_panel name="nav_controls">
5 <button label="戻る" name="back" /> 5 <button label="戻る" name="back" />
6 <button label="進む" name="forward" /> 6 <button label="進む" name="forward" />
7 <button label="再ロード" name="reload" /> 7 <button label="更新" name="reload" />
8 <button label="" name="go" /> 8 <button label="" name="go" />
9 </layout_panel> 9 </layout_panel>
10 <layout_panel name="parcel_owner_controls"> 10 <layout_panel name="parcel_owner_controls">
11 <button label="現在の URL を区画に送信" name="assign" /> 11 <button label="現在の URL を区画に送信" name="assign" />
12 </layout_panel> 12 </layout_panel>
13 <layout_panel name="external_controls"> 13 <layout_panel name="external_controls">
14 <button label="自分の Web ブラウザーで開く" name="open_browser" /> 14 <button label="自分の Web ブラウザーで開く" name="open_browser" />
15 <check_box label="常にラウザーで開く" name="open_always" /> 15 <check_box label="常に自分 Web ブラウザーで開く" name="open_always" />
16 <button label="閉じる" name="close" /> 16 <button label="閉じる" name="close" />
17 </layout_panel> 17 </layout_panel>
18 </layout_stack> 18 </layout_stack>
diff --git a/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml b/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
index b888051..7968847 100644
--- a/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -114,10 +114,10 @@
114 <menu_item_call label="アニメーションをすべて停止" name="Stop All Animations"/> 114 <menu_item_call label="アニメーションをすべて停止" name="Stop All Animations"/>
115 <menu_item_call label="キー制御を解除" name="Release Keys"/> 115 <menu_item_call label="キー制御を解除" name="Release Keys"/>
116 <menu_item_separator label="-----------" name="separator4"/> 116 <menu_item_separator label="-----------" name="separator4"/>
117 <menu_item_call label="歴..." name="Account History..."> 117 <menu_item_call label="アカウントの履歴..." name="Account History...">
118 <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=ja" /> 118 <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=ja" />
119 </menu_item_call> 119 </menu_item_call>
120 <menu_item_call label="自分口座の管理..." name="Manage My Account..."> 120 <menu_item_call label="アカウント管理..." name="Manage My Account...">
121 <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja" /> 121 <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja" />
122 </menu_item_call> 122 </menu_item_call>
123 <menu_item_call label="L$(リンデン・ドル)を購入" name="Buy and Sell L$..."/> 123 <menu_item_call label="L$(リンデン・ドル)を購入" name="Buy and Sell L$..."/>
diff --git a/linden/indra/newview/skins/default/xui/ja/notify.xml b/linden/indra/newview/skins/default/xui/ja/notify.xml
index 4039637..f587868 100644
--- a/linden/indra/newview/skins/default/xui/ja/notify.xml
+++ b/linden/indra/newview/skins/default/xui/ja/notify.xml
@@ -403,7 +403,7 @@
403 </notify> 403 </notify>
404 <notify name="ScriptsNotRunning"> 404 <notify name="ScriptsNotRunning">
405 <message name="message"> 405 <message name="message">
406 この地域はスクリプト1ていまん。 406 この地域スクリプト使用禁止ていま
407 </message> 407 </message>
408 </notify> 408 </notify>
409 <notify name="NoOutsideScripts"> 409 <notify name="NoOutsideScripts">
@@ -441,7 +441,7 @@
441 破棄 441 破棄
442 </option> 442 </option>
443 <option name="Mute"> 443 <option name="Mute">
444 無視リスト 444 無視リスト
445 </option> 445 </option>
446 </notify> 446 </notify>
447 <notify name="ObjectGiveItemUnknownUser"> 447 <notify name="ObjectGiveItemUnknownUser">
@@ -455,7 +455,7 @@
455 破棄 455 破棄
456 </option> 456 </option>
457 <option name="Mute"> 457 <option name="Mute">
458 無視リスト 458 無視リスト
459 </option> 459 </option>
460 </notify> 460 </notify>
461 <notify name="UserGiveItem"> 461 <notify name="UserGiveItem">
@@ -469,7 +469,7 @@
469 破棄 469 破棄
470 </option> 470 </option>
471 <option name="Mute"> 471 <option name="Mute">
472 無視リスト 472 無視リスト
473 </option> 473 </option>
474 </notify> 474 </notify>
475 <notify name="GodMessage"> 475 <notify name="GodMessage">
@@ -569,7 +569,7 @@
569 </notify> 569 </notify>
570 <notify name="OfferFriendship"> 570 <notify name="OfferFriendship">
571 <message name="message"> 571 <message name="message">
572 [NAME]は、フレンド登録を申し込んでいます。 572 [NAME]は、フレンド 登録を申し込んでいます。
573 573
574[MESSAGE] 574[MESSAGE]
575 575
@@ -584,7 +584,7 @@
584 </notify> 584 </notify>
585 <notify name="OfferFriendshipNoMessage"> 585 <notify name="OfferFriendshipNoMessage">
586 <message name="message"> 586 <message name="message">
587 [NAME]は、フレンド登録を申し込んでいます。 587 [NAME]は、フレンド 登録を申し込んでいます。
588 588
589(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。) 589(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。)
590 </message> 590 </message>
@@ -597,12 +597,12 @@
597 </notify> 597 </notify>
598 <notify name="FriendshipAccepted"> 598 <notify name="FriendshipAccepted">
599 <message name="message"> 599 <message name="message">
600 [NAME]は、フレンド登録を受け入れました。 600 [NAME]は、フレンド 登録を受け入れました。
601 </message> 601 </message>
602 </notify> 602 </notify>
603 <notify name="FriendshipDeclined"> 603 <notify name="FriendshipDeclined">
604 <message name="message"> 604 <message name="message">
605 [NAME]は、フレンド登録を断りました。 605 [NAME]は、フレンド 登録を断りました。
606 </message> 606 </message>
607 </notify> 607 </notify>
608 <notify name="OfferCallingCard"> 608 <notify name="OfferCallingCard">
@@ -693,7 +693,7 @@
693 </notify> 693 </notify>
694 <notify name="AttachToYourAvatar"> 694 <notify name="AttachToYourAvatar">
695 <message name="message"> 695 <message name="message">
696 あなたのアバターに装着添付 696 あなたのアバターに装着
697 </message> 697 </message>
698 </notify> 698 </notify>
699 <notify name="ReleaseOwnership"> 699 <notify name="ReleaseOwnership">
@@ -740,7 +740,7 @@
740 いいえ 740 いいえ
741 </option> 741 </option>
742 <option name="Mute"> 742 <option name="Mute">
743 無視リスト 743 無視リストに追加
744 </option> 744 </option>
745 </notify> 745 </notify>
746 <notify name="ScriptQuestionCautionChatGranted"> 746 <notify name="ScriptQuestionCautionChatGranted">
@@ -799,13 +799,13 @@
799 <message name="message"> 799 <message name="message">
800 L$[AMOUNT]を受け取りました。 800 L$[AMOUNT]を受け取りました。
801オブジェクトおよび他のユーザーがあなたにお金を支払ったようです。 801オブジェクトおよび他のユーザーがあなたにお金を支払ったようです。
802あなたの残高は画面の右上に表示されています。 802あなたの残高は画面の右上に表示されて います。
803 </message> 803 </message>
804 </notify> 804 </notify>
805 <notify name="FirstBalanceDecrease"> 805 <notify name="FirstBalanceDecrease">
806 <message name="message"> 806 <message name="message">
807 L$[AMOUNT]を支払いました。 807 L$[AMOUNT]を支払いました。
808あなたの残高は画面の右上に表示されています。 808あなたの残高は画面の右上に表示されて います。
809 </message> 809 </message>
810 </notify> 810 </notify>
811 <notify name="FirstSit"> 811 <notify name="FirstSit">
@@ -926,17 +926,17 @@ Mキーを押して変更します。
926 </notify> 926 </notify>
927 <notify name="AutoUnmuteByIM"> 927 <notify name="AutoUnmuteByIM">
928 <message name="message"> 928 <message name="message">
929 [FIRST] [LAST]にインスタント・メッセージが送信され、無視設定が自動的に解除されました。 929 [FIRST] [LAST]にインスタント・メッセージが送信され、 無視設定が自動的に解除されました。
930 </message> 930 </message>
931 </notify> 931 </notify>
932 <notify name="AutoUnmuteByMoney"> 932 <notify name="AutoUnmuteByMoney">
933 <message name="message"> 933 <message name="message">
934 [FIRST] [LAST]にお金を渡したため、無視設定が自動的に解除されました。 934 [FIRST] [LAST]にお金を渡したため、 無視設定が自動的に解除されました。
935 </message> 935 </message>
936 </notify> 936 </notify>
937 <notify name="AutoUnmuteByInventory"> 937 <notify name="AutoUnmuteByInventory">
938 <message name="message"> 938 <message name="message">
939 [FIRST] [LAST]に持ち物を渡したため、無視設定が自動的に解除されました。 939 [FIRST] [LAST]に持ち物を渡したため、 無視設定が自動的に解除されました。
940 </message> 940 </message>
941 </notify> 941 </notify>
942 <notify name="VoiceInviteGroup"> 942 <notify name="VoiceInviteGroup">
@@ -1051,7 +1051,7 @@ Mキーを押して変更します。
1051 </notify> 1051 </notify>
1052 <notify name="ServerVersionChanged"> 1052 <notify name="ServerVersionChanged">
1053 <message name="message"> 1053 <message name="message">
1054 入力した地域は異なるシミュレーターのバージョンで実行されています。 詳細についてはこのメッセージをクリックしてください。 1054 到着した地域は異なるシミュレーターのバージョンで実行されています。 詳細についてはこのメッセージをクリックしてください。
1055 </message> 1055 </message>
1056 </notify> 1056 </notify>
1057 <notify name="UnableToOpenCommandURL"> 1057 <notify name="UnableToOpenCommandURL">
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_audio.xml b/linden/indra/newview/skins/default/xui/ja/panel_audio.xml
index 02be06d..0d93e73 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_audio.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_audio.xml
@@ -6,6 +6,6 @@
6 <slider label="メディア" name="Media Volume" label_width="80" /> 6 <slider label="メディア" name="Media Volume" label_width="80" />
7 <slider label="ボイス" name="Voice Volume" label_width="80" /> 7 <slider label="ボイス" name="Voice Volume" label_width="80" />
8 <slider label="サウンド" name="SFX Volume" label_width="80" /> 8 <slider label="サウンド" name="SFX Volume" label_width="80" />
9 <slider label="ンビ" name="Wind Volume" label_width="80" /> 9 <slider label="" name="Wind Volume" label_width="80" />
10 <slider label="UI" name="UI Volume" label_width="80" /> 10 <slider label="UI" name="UI Volume" label_width="80" />
11</panel> 11</panel>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml b/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
index bed2bed..4469bc9 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -11,11 +11,8 @@
11 グループ設定が変更されました。 11 グループ設定が変更されました。
12 </string> 12 </string>
13 <button label="?" label_selected="?" name="help_button" /> 13 <button label="?" label_selected="?" name="help_button" />
14 <line_editor label="あなたの新しいグループ名を記入してください" 14 <line_editor label="新しいグループ名をここに入力してください。" name="group_name_editor" width="330"/>
15 name="group_name_editor"> 15 <text name="group_name" width="330">
16 新しいグループ名をここに入力してください。
17 </line_editor>
18 <text name="group_name">
19 新しいグループ名をここに入力してください。 16 新しいグループ名をここに入力してください。
20 </text> 17 </text>
21 <text name="prepend_founded_by"> 18 <text name="prepend_founded_by">
@@ -61,26 +58,26 @@
61 <text name="confirm_group_create_str"> 58 <text name="confirm_group_create_str">
62 このグループの作成にはL$100かかります。 59 このグループの作成にはL$100かかります。
63このグループの作成にL$100ものお金をかけてもかまいませんか? 慎重に判断してください。 60このグループの作成にL$100ものお金をかけてもかまいませんか? 慎重に判断してください。
6448 時間以内に誰もこのグループに参加しなかった場合、グループは解体され、グループの名前は今後使用できなくなります。 6148時間以内に誰もこのグループに参加しなかった場合、グループは解体され、グループの名前は今後使用できなくなります。
65 </text> 62 </text>
66 <text> 63 <text>
67 グループの環境設定 64 グループの環境設定
68 </text> 65 </text>
69 <panel name="preferences_container"> 66 <panel name="preferences_container">
70 <check_box label="検索に表示" name="show_in_group_list" 67 <check_box label="検索に表示" name="show_in_group_list"
71 tool_tip="検索結果のグループを" /> 68 tool_tip="このグループを検索結果" />
72 <check_box label="ウェブ上で公開" name="publish_on_web" 69 <check_box label="ウェブ上で公開" name="publish_on_web"
73 tool_tip="このグループの情報をウェブ上で公開できるようにするかどうかを指定します。" /> 70 tool_tip="このグループの情報をウェブ上で公開できるようにするかどうかを指定します" />
74 <check_box label="会員募集" name="open_enrollement" 71 <check_box label="会員募集" name="open_enrollement"
75 tool_tip="このグループに招待状なしで新しいメンバーを受け入れるかどうかを指定します。" /> 72 tool_tip="招待状なしに自由にこのグループに加入することを許可するかどうかを指定します" />
76 <check_box label="入会費:L$" name="check_enrollment_fee" 73 <check_box label="入会費:L$" name="check_enrollment_fee"
77 tool_tip="このグループへの参加に入会費を必須とするかどうかを指定します。" /> 74 tool_tip="このグループへの参加に入会費を必須とするかどうかを指定します" />
78 <spinner name="spin_enrollment_fee" 75 <spinner name="spin_enrollment_fee"
79 tool_tip="「入会費」がチェックされている場合、新規会員は入会時にこの費用を支払う必要があります。" /> 76 tool_tip="「入会費」がチェックされている場合、新規会員は入会時にここに指定された金額を支払う必要があります" />
80 <check_box label="成人向けグループ" name="mature" 77 <check_box label="成人向けグループ" name="mature"
81 tool_tip="あなたのグループ情報が成人向けとみなされるかどうかを指定します。" /> 78 tool_tip="あなたのグループ情報が成人向けとみなされるかどうかを指定します" />
82 <combo_box name="group_mature_check" 79 <combo_box name="group_mature_check"
83 tool_tip="あなたのグループ情報が成人向けとみなされるかどうかを指定します。"> 80 tool_tip="あなたのグループ情報が成人向けとみなされるかどうかを指定します">
84 <combo_item name="select_mature"> 81 <combo_item name="select_mature">
85 -成熟度を選択- 82 -成熟度を選択-
86 </combo_item> 83 </combo_item>
@@ -99,9 +96,9 @@
99 tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active." /> 96 tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active." />
100 </panel> 97 </panel>
101 <check_box label="グループ通知を受信" name="receive_notices" 98 <check_box label="グループ通知を受信" name="receive_notices"
102 tool_tip="グループからの通知をあなたが受信するかどうかを指定します。 このグループがスパム行為をしている場合は、このボックスのチェックを外してください。" /> 99 tool_tip="グループからの通知を受信するかどうかを指定します。 このグループがスパム行為をしている場合は、このボックスのチェックを外してください" />
103 <check_box label="プロフィールにグループをリストする" 100 <check_box label="プロフィールにグループを表示"
104 name="list_groups_in_profile" 101 name="list_groups_in_profile"
105 tool_tip="このグループをあなたのプロフィールにリストするかどうかを設定します。" /> 102 tool_tip="このグループをあなたのプロフィールに表示するかどうかを設定します" />
106 </panel> 103 </panel>
107</panel> 104</panel>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/ja/panel_preferences_audio.xml
index dca2be9..9a8d175 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_preferences_audio.xml
@@ -39,7 +39,7 @@
39 <slider label="遠隔要因" name="Distance Factor" /> 39 <slider label="遠隔要因" name="Distance Factor" />
40 <slider label="ロールオフ係数" name="Rolloff Factor" /> 40 <slider label="ロールオフ係数" name="Rolloff Factor" />
41 <spinner label="L$変更基準点" name="L$ Change Threshold" /> 41 <spinner label="L$変更基準点" name="L$ Change Threshold" />
42 <spinner label="化基準点" name="Health Change Threshold" /> 42 <spinner label="ヘルス変化基準点" name="Health Change Threshold" />
43 <text type="string" length="1" name="doppler_effect_text"> 43 <text type="string" length="1" name="doppler_effect_text">
44 オーディオ環境設定: 44 オーディオ環境設定:
45 </text> 45 </text>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/linden/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 7b987d5..167bc2a 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -69,7 +69,7 @@
69 </text> 69 </text>
70 <check_box label="解像度単独スケールを使用" name="ui_auto_scale" /> 70 <check_box label="解像度単独スケールを使用" name="ui_auto_scale" />
71 <spinner label="描画距離:" name="draw_distance" /> 71 <spinner label="描画距離:" name="draw_distance" />
72 <check_box label="アバターをマウスルックで表示" name="avfp" /> 72 <check_box label="アバターを一人称視点(マウスルックで表示" name="avfp" />
73 <text name="HigherText"> 73 <text name="HigherText">
74 品質および 74 品質および
75 </text> 75 </text>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/ja/panel_preferences_im.xml
index b6c82b7..e9044e2 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_preferences_im.xml
@@ -8,7 +8,7 @@
8 IMオプション: 8 IMオプション:
9 </text> 9 </text>
10 <text name="log_in_to_change"> 10 <text name="log_in_to_change">
11 変更時グイン 11 ログインして変更してください
12 </text> 12 </text>
13 <check_box label="IMを電子メール([EMAIL])へ送信" name="send_im_to_email"/> 13 <check_box label="IMを電子メール([EMAIL])へ送信" name="send_im_to_email"/>
14 <check_box label="ローカルチャットにIMを含める" name="include_im_in_chat_history"/> 14 <check_box label="ローカルチャットにIMを含める" name="include_im_in_chat_history"/>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_preferences_input.xml b/linden/indra/newview/skins/default/xui/ja/panel_preferences_input.xml
index 75e9051..c84ae62 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_preferences_input.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_preferences_input.xml
@@ -1,7 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel label="操作とカメラ" name="Input panel"> 2<panel label="操作とカメラ" name="Input panel">
3 <text name=" Mouselook Options:"> 3 <text name=" Mouselook Options:">
4 マウスルック: 4 一人称視点
5(マウスルック):
5 </text> 6 </text>
6 <text name=" Mouse Sensitivity:"> 7 <text name=" Mouse Sensitivity:">
7 感度: 8 感度:
@@ -28,7 +29,7 @@
28 <text name="text2"> 29 <text name="text2">
29 アバター表示: 30 アバター表示:
30 </text> 31 </text>
31 <check_box label="アバターをマウスルックで表示" name="first_person_avatar_visible"/> 32 <check_box label="アバターを一人称視点(マウスルックで表示" name="first_person_avatar_visible"/>
32 <text name="text5"> 33 <text name="text5">
33 ジョイスティック 34 ジョイスティック
34オプション: 35オプション:
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/linden/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index eb06ad7..08c6618 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="status"> 2<panel name="status">
3 <text length="1" name="ParcelNameText" tool_tip="あなたが立っている土地区画の名前。 「土地情報」をクリックしてください。" type="string"> 3 <text length="1" name="ParcelNameText" tool_tip="あなたが立っている土地区画の名 前。クリックすると「土地情報」が開きます。" type="string">
4 区画名はここです 4 区画名はここです
5 </text> 5 </text>
6 <text length="1" name="BalanceText" tool_tip="口座残高" type="string"> 6 <text length="1" name="BalanceText" tool_tip="口座残高" type="string">
@@ -25,7 +25,7 @@
25 <button label="" label_selected="" name="build" tool_tip="作成禁止"/> 25 <button label="" label_selected="" name="build" tool_tip="作成禁止"/>
26 <button label="" label_selected="" name="scripts" tool_tip="スクリプトなし"/> 26 <button label="" label_selected="" name="scripts" tool_tip="スクリプトなし"/>
27 <button name="no_fly" tool_tip="飛行禁止"/> 27 <button name="no_fly" tool_tip="飛行禁止"/>
28 <button name="no_build" tool_tip="制作/EZ禁止"/> 28 <button name="no_build" tool_tip="制作Rez禁止"/>
29 <button name="no_scripts" tool_tip="スクリプト禁止"/> 29 <button name="no_scripts" tool_tip="スクリプト禁止"/>
30 <button label="" label_selected="" name="restrictpush" tool_tip="プッシングを制限"/> 30 <button label="" label_selected="" name="restrictpush" tool_tip="プッシングを制限"/>
31 <button name="status_voice" tool_tip="ボイス有効"/> 31 <button name="status_voice" tool_tip="ボイス有効"/>
diff --git a/linden/indra/newview/skins/default/xui/ko/floater_about.xml b/linden/indra/newview/skins/default/xui/ko/floater_about.xml
index bebb237..c7e884e 100644
--- a/linden/indra/newview/skins/default/xui/ko/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/ko/floater_about.xml
@@ -1,9 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_about" title="세컨드라이프 정보"> 2<floater name="floater_about" title="세컨드라이프 정보">
3 <text_editor name="credits_editor"> 3 <text_editor name="credits_editor">
4 세컨드라이프 제작자들: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, 그 외에 많은 분들이 수고해 주셨습니다. 4 세컨드라이프 제작자들: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, 그 외에 많은 분들이 수고해 주셨습니다.
5 5
6 현재 버전이 최상의 버전이 될 수 있도록 도와주신 여러분께 감사드립니다: Aminom Marvin, ava ganache, Balthazar Fouroux, CrystalShard Foo, Davec Horsforth, Drew Dwi, Ellla McMahon, Gellan Glenelg, Harleen Gretzky, istephanija munro, Iustinian Tomsen, JC Glimmer, Joeseph Albanese, kelly young, Latif Khalifa, Lex Neva, McCabe Maxsted, Michi Lumin, moni duettmann, Moon Metty, motor loon, Opensource Obscure, Sky Hye, Soap Clawtooth, velveeta biedermann, zeebster colasanti 6 현재 버전이 최상의 버전이 될 수 있도록 도와주신 여러분께 감사드립니다: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi
7 7
8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 8 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
9 APR Copyright (C) 2000-2004 The Apache Software Foundation 9 APR Copyright (C) 2000-2004 The Apache Software Foundation
diff --git a/linden/indra/newview/skins/default/xui/pt/mime_types.xml b/linden/indra/newview/skins/default/xui/pt/mime_types.xml
index de3d958..be20865 100644
--- a/linden/indra/newview/skins/default/xui/pt/mime_types.xml
+++ b/linden/indra/newview/skins/default/xui/pt/mime_types.xml
@@ -49,7 +49,7 @@
49 Há um audio neste local 49 Há um audio neste local
50 </tooltip> 50 </tooltip>
51 <playtip name="audio_playtip"> 51 <playtip name="audio_playtip">
52 Iniciar audio disponípivel nest local 52 Iniciar audio disponível nest local
53 </playtip> 53 </playtip>
54 </widgetset> 54 </widgetset>
55 <scheme name="rtsp"> 55 <scheme name="rtsp">
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_about.xml b/linden/indra/newview/skins/default/xui/zh/floater_about.xml
index 6fe2b40..8147d89 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_about.xml
@@ -1,9 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_about" title="关于第二人生"> 2<floater name="floater_about" title="关于第二人生">
3 <text_editor name="credits_editor"> 3 <text_editor name="credits_editor">
4 第二人生的推出应感谢以下人物的贡献: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ 以及更多人。 4 第二人生的推出应感谢以下人物的贡献: Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les 以及更多人。
5 5
6感谢以下居民,他们的帮助保证了这次第二人生的版本是有史以来最出色的: Aminom Marvin, ava ganache, Balthazar Fouroux, CrystalShard Foo, Davec Horsforth, Drew Dwi, Ellla McMahon, Gellan Glenelg, Harleen Gretzky, istephanija munro, Iustinian Tomsen, JC Glimmer, Joeseph Albanese, kelly young, Latif Khalifa, Lex Neva, McCabe Maxsted, Michi Lumin, moni duettmann, Moon Metty, motor loon, Opensource Obscure, Sky Hye, Soap Clawtooth, velveeta biedermann, zeebster colasanti 6感谢以下居民,他们的帮助保证了这次第二人生的版本是有史以来最出色的: afon shepherd, Aimee Trescothick, Alexandrea Fride, Alissa Sabre, Amber DeCuir, Asuka Neely, Auron Forcella, Blue Revolution, Bocan Undercroft, Boroondas Gupte, Brandon Shinobu, Bri Gufler, Buckaroo Mu, Celierra Darling, Christos Atlantis, Coder Kas, Cummere Mayo, dakota schwade, Dirk Talamasca, Dizzy Banjo, Drew Dwi, Duckling Kwak, Ellla McMahon, Erikah Jameson, Erinyse Planer, Eyana Yohkoh, Ezian Ecksol, Faron Karu, Fenoe Lowey, Fox Hwasung, Francisca Biedermann, Gally Young, Gellan Glenelg, Geneko Nemeth, Glenn Rotaru, Hagar Qinan, Harleen Gretzky, Holger Gilruth, hotrodjohnny gears, IAm Zabelin, Inigo Catteneo, Iustinian Tomsen, Jacek Antonell, James Benedek, Jim Kupferberg, Joeseph Albanese, JPT62089 Agnon, Kardargo Adamczyk, Kirstenlee Cinquetti, Latif Khalifa, lea Parnall, Lex Neva, Lillith Anatine, Lilly Zenovka, Lim Catteneo, Lindal Kidd, Mark Rosenbaum, MasterJ Chaplin, McCabe Maxsted, Melvin Starbrook, Meni Kaiousei, Mero Collas, Minakothegothicgeisha Kamachi, Moon Metty, neofilo aabye, Neutron Chesnokov, Nomad Ingwer, norritt Xi, Opensource Obscure, Oracle Weatherwax, Ourasi Ferraris, Pabl0 Roffo, Peyton Aleixandre, Phli Foxchase, Psi Merlin, r2d2 Wunderlich, Regi Yifu, Saijanai Kuhn, Sandor Balczo, Sarkan Dreamscape, Scree Raymaker, Sedona Mills, Selena Beale, Sheet Spotter, Shibari Twine, Silver Key, Simon Kline, SLB Wirefly, Stacy Wombat, Sugarcult Dagger, Tayra Dagostino, Tetsuryu Vlodovic, ThaBiGGDoGG Richez, Timo Gufler, tx Oh, wayfinder wishbringer, Wizzytoe McCullough, Wundur Primbee, Yann Dufaux, Yuu Nakamichi
7 7
8 8
9 3Dconnexion SDK Copyright © 1992-2007 3Dconnexion 9 3Dconnexion SDK Copyright © 1992-2007 3Dconnexion