diff options
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 | |||
13 | Adam Marker | 13 | Adam Marker |
14 | VWR-2755 | 14 | VWR-2755 |
15 | Aimee Trescothick | 15 | Aimee 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 |
20 | Alejandro Rosenthal | 21 | Alejandro 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 |
331 | Peter Lameth | ||
332 | VWR-7331 | ||
330 | princess niven | 333 | princess 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 |
398 | Tharax Ferraris | 401 | Tharax Ferraris |
399 | VWR-605 | 402 | VWR-605 |
403 | Thickbrick Sleaford | ||
404 | VWR-7109 | ||
400 | Thraxis Epsilon | 405 | Thraxis 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 | ||
125 | bool LLCrashLoggerLinux::mainLoop() | 125 | bool 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 | ||
35 | const S32 LL_VERSION_MAJOR = 1; | 35 | const S32 LL_VERSION_MAJOR = 1; |
36 | const S32 LL_VERSION_MINOR = 22; | 36 | const S32 LL_VERSION_MINOR = 22; |
37 | const S32 LL_VERSION_PATCH = 5; | 37 | const S32 LL_VERSION_PATCH = 6; |
38 | const S32 LL_VERSION_BUILD = 0; | 38 | const S32 LL_VERSION_BUILD = 0; |
39 | 39 | ||
40 | const char * const LL_CHANNEL = "Second Life Release"; | 40 | const 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; | |||
61 | BOOL LLImageGL::sGlobalUseAnisotropic = FALSE; | 61 | BOOL LLImageGL::sGlobalUseAnisotropic = FALSE; |
62 | F32 LLImageGL::sLastFrameTime = 0.f; | 62 | F32 LLImageGL::sLastFrameTime = 0.f; |
63 | 63 | ||
64 | S32 LLImageGL::sMaxTextureSize = 0 ; | ||
65 | |||
66 | std::set<LLImageGL*> LLImageGL::sImageList; | 64 | std::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 | ||
3712 | void LLAppViewer::forceErrorDriverCrash() | ||
3713 | { | ||
3714 | glDeleteTextures(1, NULL); | ||
3715 | } | ||
3716 | |||
3714 | void LLAppViewer::initMainloopTimeout(const std::string& state, F32 secs) | 3717 | void 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"; | |||
82 | LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop) | 82 | LONG 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) |
737 | void LLBumpImageList::addTextureStats(U8 bump, const LLUUID& base_image_id, | 737 | void 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 | ||
45 | namespace | 46 | namespace |
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(×tamp), MAX_STRING); | 223 | LLStringUtil::copy(time, ctime(×tamp), 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() | |||
85 | void LLPanelVoiceDeviceSettings::draw() | 85 | void 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 | ||
142 | void LLPanelVoiceDeviceSettings::cancel() | 147 | void 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 | ||
154 | void LLPanelVoiceDeviceSettings::refresh() | 166 | void 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 |
248 | void LLPanelVoiceDeviceSettings::onCommitInputDevice(LLUICtrl* ctrl, void* user_data) | 260 | void 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 |
254 | void LLPanelVoiceDeviceSettings::onCommitOutputDevice(LLUICtrl* ctrl, void* user_data) | 269 | void 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() | |||
743 | void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S32 y_coord, S32 z_coord) | 743 | void 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 | ||
74 | namespace | ||
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" |
76 | class LLDispatchEmptyMuteList : public LLDispatchHandler | 94 | class 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 | ||
663 | BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) const | 687 | BOOL 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 | |||
1042 | bool 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 | |||
183 | private: | ||
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 | ||
75 | LLPrefsIMImpl::LLPrefsIMImpl() | 75 | LLPrefsIMImpl::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 | ||
144 | void LLPrefsVoice::cancel() | 150 | void 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 | ||
148 | void LLPrefsVoice::setKey(KEY key) | 159 | void 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 | ||
1051 | bool LLTextureFetchWorker::processSimulatorPackets() | 1059 | bool 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 | ||
425 | void LLViewerImage::addTextureStats(F32 pixel_area, | 424 | void 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 | ||
441 | void LLViewerImage::resetTextureStats(BOOL zero) | 432 | void 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() | |||
702 | void LLViewerImage::setDecodePriority(F32 priority) | 686 | void 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 | ||
715 | void LLViewerImage::setBoostLevel(S32 level) | 692 | void 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 *); | |||
403 | void force_error_bad_memory_access(void *); | 403 | void force_error_bad_memory_access(void *); |
404 | void force_error_infinite_loop(void *); | 404 | void force_error_infinite_loop(void *); |
405 | void force_error_software_exception(void *); | 405 | void force_error_software_exception(void *); |
406 | void force_error_driver_crash(void *); | ||
406 | 407 | ||
407 | void handle_stopall(void*); | 408 | void 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 | ||
6926 | void force_error_driver_crash(void *) | ||
6927 | { | ||
6928 | LLAppViewer::instance()->forceErrorDriverCrash(); | ||
6929 | } | ||
6930 | |||
6924 | class LLToolsUseSelectionForGrid : public view_listener_t | 6931 | class 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 |
54 | S32 LLViewerPartSim::sMaxParticleCount = 0; | 54 | S32 LLViewerPartSim::sMaxParticleCount = 0; |
55 | S32 LLViewerPartSim::sParticleCount = 0; | 55 | S32 LLViewerPartSim::sParticleCount = 0; |
56 | S32 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. |
57 | F32 LLViewerPartSim::sParticleAdaptiveRate = 0.0625f; | 58 | F32 LLViewerPartSim::sParticleAdaptiveRate = 0.0625f; |
58 | F32 LLViewerPartSim::sParticleBurstRate = 0.5f; | 59 | F32 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 | ||
89 | LLViewerPart::~LLViewerPart() | 92 | LLViewerPart::~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 | ||
95 | void LLViewerPart::init(LLPointer<LLViewerPartSource> sourcep, LLViewerImage *imagep, LLVPCallback cb) | 100 | void 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 | ||
464 | void 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 | ||
455 | LLViewerPartSim::LLViewerPartSim() | 477 | LLViewerPartSim::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 | ||
202 | public: | ||
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 | ||
4698 | bool LLViewerWindow::updateResolution() | 4703 | void 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 | |||
4763 | void 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 | |||
4771 | BOOL LLViewerWindow::checkSettings() | 4710 | BOOL 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; | |||
288 | S32 LLVOAvatar::sCurJoint = 0; | 288 | S32 LLVOAvatar::sCurJoint = 0; |
289 | S32 LLVOAvatar::sCurVolume = 0; | 289 | S32 LLVOAvatar::sCurVolume = 0; |
290 | F32 LLVOAvatar::sUnbakedTime = 0.f; | 290 | F32 LLVOAvatar::sUnbakedTime = 0.f; |
291 | F32 LLVOAvatar::sUnbakedUpdateTime = 0.f; | ||
291 | F32 LLVOAvatar::sGreyTime = 0.f; | 292 | F32 LLVOAvatar::sGreyTime = 0.f; |
293 | F32 LLVOAvatar::sGreyUpdateTime = 0.f; | ||
292 | 294 | ||
293 | struct LLAvatarTexData | 295 | struct 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) | |||
118 | void LLVOTextBubble::updateTextures(LLAgent &agent) | 118 | void 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 @@ | |||
68 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; | 68 | const S32 MIN_QUIET_FRAMES_COALESCE = 30; |
69 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; | 69 | const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; |
70 | const F32 FORCE_CULL_AREA = 8.f; | 70 | const 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 | 71 | const S32 MAX_SCULPT_REZ = 128; |
72 | const S32 SCULPT_REZ = 128; | ||
73 | 72 | ||
74 | BOOL gAnimateTextures = TRUE; | 73 | BOOL gAnimateTextures = TRUE; |
75 | extern BOOL gHideSelectedObjects; | 74 | extern 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 | ||
2042 | U32 LLVOVolume::getPartitionType() const | 2049 | U32 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 | ||
124 | BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & Module_Addr); | 124 | BOOL WINAPI Get_Module_By_Ret_Addr(PBYTE Ret_Addr, LPWSTR Module_Name, PBYTE & Module_Addr); |
125 | 125 | void WINAPI Get_Call_Stack(const EXCEPTION_RECORD* exception_record, | |
126 | const CONTEXT* context_record, | ||
127 | LLSD& info); | ||
126 | 128 | ||
127 | void printError( CHAR* msg ) | 129 | void 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 | ||
188 | void 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 | |||
251 | BOOL GetThreadCallStack(DWORD thread_id, LLSD& info) | 190 | BOOL 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 | ||
269 | bool 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 | |||
303 | PBYTE 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 | //****************************************************************** |
331 | void WINAPI Get_Call_Stack(PEXCEPTION_POINTERS pException, LLSD& info) | 341 | void 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 | ||
6 | Vielen 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 | 6 | Vielen 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 | ||
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/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> | 19 | Beschä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 'Neue Person einladen...' unter 'Mitglieder und Rollen' > 'Mitglieder'." | 7 | longdescription="Personen zu dieser Gruppe einladen können Sie mit „Neue Person einladen...“ unter „Mitglieder und Rollen“ > „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 'Aus Gruppe werfen' unter 'Mitglieder und Rollen' > '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." | 10 | longdescription="Mitglieder von der Gruppe ausschließen können Sie mit „Aus Gruppe werfen“ unter „Mitglieder und Rollen“ > „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="'Registrierung offen' einstellen und 'Beitrittsgebühr' ändern" | 13 | description="„Registrierung offen“ einstellen und „Beitrittsgebühr“ ändern" |
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." | 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 'Mitglieder und Rollen' > 'Rollen'." | 21 | longdescription="Neue Rollen erstellen Sie unter „Mitglieder und Rollen“ > „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 'Mitglieder und Rollen' > 'Rollen'." | 24 | longdescription="Rollen löschen können Sie unter „Mitglieder und Rollen“ > „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 'Mitglieder und Rollen' > 'Rollen' ändern." | 27 | longdescription="Namen, Titel und Beschreibungen von Rollen können Sie nach Auswahl einer Rolle unten auf der Registerkarte „Mitglieder und Rollen“ > „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 'Zugewiesene Rollen' auf der Registerkarte 'Mitglieder und Rollen' > 'Mitglieder'. 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“ > „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 'Zugewiesene Rollen' auf der Registerkarte 'Mitglieder und Rollen' > '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." | 33 | longdescription="Mitgliedern beliebige Rolle zuweisen können Sie im Bereich „Zugewiesene Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „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 'Rollen' auf der Registerkarte 'Mitglieder und Rollen' > 'Mitglieder'. Eigentümer können nicht entfernt werden." | 36 | longdescription="Mitgliedern Rollen entziehen können Sie im Bereich „Rollen“ auf der Registerkarte „Mitglieder und Rollen“ > „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 'Zulässige Fähigkeiten' auf der Registerkarte 'Mitglieder und Rollen' > '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." | 39 | longdescription="Rollenfähigkeiten zuweisen und entfernen können Sie im Bereich „Zulässige Fähigkeiten“ auf der Registerkarte „Mitglieder und Rollen“ > „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 'Im Web veröffentlichen' ä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 'Im Web veröffentlichen' ändern und festlegen, welche Mitglieder in der Gruppeninfo öffentlich sichtbar sind. Diese Einstellungen finden Sie auf der Registerkarte 'Allgemein'." | 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 'Land-Info...' 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 'Land-Info' > 'Allgemein'." | 54 | longdescription="Land übertragen und für Gruppe kaufen. Diese Einstellung finden Sie unter „Land-Info“ > „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 'Land-Info' > 'Allgemein' 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“ > „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 'Land-Info' > 'Allgemein' 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“ > „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 '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...'." | 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="'In "Orte suchen" anzeigen' ein-/ausschalten und Kategorie festlegen" | 70 | description="„In Orte suchen anzeigen“ ein-/ausschalten und Kategorie festlegen" |
71 | longdescription="Auf der Registerkarte 'Optionen' unter 'Land-Info' können Sie 'In "Orte suchen" anzeigen' 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 'Im Web veröffentlichen' ä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 'Im Web veröffentlichen' ändern. Diese Einstellungen finden Sie unter 'Land-Info' > 'Optionen'." | 75 | longdescription="Name und Beschreibung der Parzelle und Einstellungen für „Im Web veröffentlichen“ ändern. Diese Einstellungen finden Sie unter „Land-Info“ > „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 'Land-Info' > 'Optionen'." | 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“ > „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 'Objekte erstellen', 'Terrain bearbeiten' 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 'Land-Info' > 'Medien'." | 85 | longdescription="Die Einstellungen für Streaming-Musik und Filme finden Sie unter „Land-Info“ > „Medien“." |
86 | name="land change media" /> | 86 | name="land change media" /> |
87 | <action description="'Terrain bearbeiten' ein/aus" | 87 | <action description="„Terrain bearbeiten“ ein/aus" |
88 | longdescription="'Terrain bearbeiten' ein/aus. *WARNUNG* 'Land-Info' > 'Optionen' > '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' > 'Optionen'." | 88 | longdescription="„Terrain bearbeiten“ ein/aus. *WARNUNG* „Land-Info“ > „Optionen“ > „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“ > „Optionen“." |
89 | name="land edit" /> | 89 | name="land edit" /> |
90 | <action description="'Land-Info'-Optionen einstellen" | 90 | <action description="„Land-Info“-Optionen einstellen" |
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'." | 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="'Terrain bearbeiten' 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 'Land-Info' > 'Optionen' 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“ > „Optionen“ deaktiviert ist." |
99 | name="land allow edit land" /> | 99 | name="land allow edit land" /> |
100 | <action description="'Fliegen' 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 'Land-Info' > 'Optionen' 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“ > „Optionen“ deaktiviert ist." |
102 | name="land allow fly" /> | 102 | name="land allow fly" /> |
103 | <action description="'Objekte erstellen' 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 'Land-Info' > 'Optionen' 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“ > „Optionen“ deaktiviert ist." |
105 | name="land allow create" /> | 105 | name="land allow create" /> |
106 | <action description="'Landmarke erstellen' 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 'Land-Info' > 'Optionen' 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“ > „Optionen“ deaktiviert ist." |
108 | name="land allow landmark" /> | 108 | name="land allow landmark" /> |
109 | <action description="'Hier als Zuhause wählen' 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 'Welt' > 'Hier als Zuhause wählen' verwenden." | 110 | longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ > „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 'Land-Info' > 'Zugang'." | 117 | longdescription="Parzellen-Zugangslisten bearbeiten Sie unter „Land-Info“ > „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 'Land-Info' > 'Verbannen'." | 120 | longdescription="Parzellen-Bannlisten bearbeiten Sie unter „Land-Info“ > „Verbannen“." |
121 | name="land manage banned" /> | 121 | name="land manage banned" /> |
122 | <action | 122 | <action |
123 | description="Parzelleneinstellungen für 'Pässe verkaufen...' ändern" | 123 | description="Parzelleneinstellungen für „Pässe verkaufen...“ ändern" |
124 | longdescription="Die Parzellen-Einstellungen für 'Pässe verkaufen...' ändern Sie unter 'Land-Info' > 'Zugang'." | 124 | longdescription="Die Parzellen-Einstellungen für „Pässe verkaufen...“ ändern Sie unter „Land-Info“ > „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 'Mehr' >, dann 'Ausschließen...' oder '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 „Mehr“ >, 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 'Land-Info' > 'Objekte' zurückgeben." | 134 | longdescription="Gruppeneigene Objekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „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 'Land-Info' > 'Objekte' zurückgeben." | 137 | longdescription="Gruppenobjekte auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „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 'Land-Info' > 'Objekte' zurückgeben." | 140 | longdescription="Objekte von gruppenfremden Personen auf gruppeneigenen Parzellen können Sie unter „Land-Info“ > „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 'Objekte'. Sie lassen sich auch mit der Schaltfläche 'Erstellen' 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 'Auswahl-Tool' > 'Bearbeiten' auf der Registerkarte 'Allgemein' vorgenommen. Klicken Sie mit rechts auf ein Objekt und wählen Sie 'Bearbeiten', 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“ > „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 'Auswahl-Tool' > 'Bearbeiten' auf der Registerkarte 'Allgemein'." | 150 | longdescription="Objekte an eine Gruppe übertragen können Sie unter „Auswahl-Tool“ > „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 'Auswahl-Tool' > 'Bearbeiten' auf der Registerkarte 'Allgemein' manipulieren (verschieben, kopieren, bearbeiten)." | 154 | longdescription="Gruppeneigene Objekte lassen sich unter „Auswahl-Tool“ > „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 'Auswahl-Tool' > 'Bearbeiten' auf der Registerkarte 'Allgemein'." | 157 | longdescription="Gruppeneigene Objekte zum Verkauf freigeben können Sie unter „Auswahl-Tool“ > „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 'Mitteilungen' 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 'Mitteilungen' ä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 'Anfragen' 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 'Anfragen' ü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 'Gruppen-Chat beitreten', 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'affichage dépend de votre configuration système. | 2337 | Vos paramètres d'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'à 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'à 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ものお金をかけてもかまいませんか? 慎重に判断してください。 |
64 | 48 時間以内に誰もこのグループに参加しなかった場合、グループは解体され、グループの名前は今後使用できなくなります。 | 61 | 48時間以内に誰もこのグループに参加しなかった場合、グループは解体され、グループの名前は今後使用できなくなります。 |
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's name tag when this group is active." /> | 96 | tool_tip="Sets the title that appears in your avatar'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 |