aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--linden/indra/newview/app_settings/settings.xml2
-rw-r--r--linden/indra/newview/gpu_table.txt2
-rw-r--r--linden/indra/newview/llagent.cpp9
-rw-r--r--linden/indra/newview/llappviewer.cpp16
-rw-r--r--linden/indra/newview/llappviewer.h2
-rw-r--r--linden/indra/newview/lldrawable.cpp10
-rw-r--r--linden/indra/newview/lldrawpoolalpha.cpp1
-rw-r--r--linden/indra/newview/lldrawpoolavatar.cpp2
-rw-r--r--linden/indra/newview/lldrawpoolbump.cpp9
-rw-r--r--linden/indra/newview/lldriverparam.cpp1
-rw-r--r--linden/indra/newview/lldriverparam.h3
-rw-r--r--linden/indra/newview/llface.cpp4
-rw-r--r--linden/indra/newview/llface.h3
-rw-r--r--linden/indra/newview/llfloateranimpreview.cpp191
-rw-r--r--linden/indra/newview/llfloateranimpreview.h1
-rw-r--r--linden/indra/newview/llfloateravatarinfo.cpp8
-rw-r--r--linden/indra/newview/llfloatercustomize.h1
-rw-r--r--linden/indra/newview/llfloatergroups.cpp3
-rw-r--r--linden/indra/newview/llhudeffectlookat.cpp6
-rw-r--r--linden/indra/newview/llhudeffectpointat.cpp6
-rw-r--r--linden/indra/newview/llinventoryactions.cpp1
-rw-r--r--linden/indra/newview/llinventorybridge.cpp1
-rw-r--r--linden/indra/newview/llmemoryview.cpp23
-rw-r--r--linden/indra/newview/llmutelist.cpp28
-rw-r--r--linden/indra/newview/llmutelist.h5
-rw-r--r--linden/indra/newview/llpreviewanim.cpp1
-rw-r--r--linden/indra/newview/llselectmgr.cpp9
-rw-r--r--linden/indra/newview/llstartup.cpp16
-rw-r--r--linden/indra/newview/lltexlayer.h1
-rw-r--r--linden/indra/newview/llviewerimagelist.cpp7
-rw-r--r--linden/indra/newview/llviewerjoint.cpp304
-rw-r--r--linden/indra/newview/llviewerjoint.h14
-rw-r--r--linden/indra/newview/llviewerjointattachment.cpp1
-rw-r--r--linden/indra/newview/llviewerjointattachment.h2
-rw-r--r--linden/indra/newview/llviewerjointmesh.cpp2
-rw-r--r--linden/indra/newview/llviewerjointmesh.h2
-rw-r--r--linden/indra/newview/llviewernetwork.cpp11
-rw-r--r--linden/indra/newview/llviewerobjectlist.cpp1
-rw-r--r--linden/indra/newview/llviewerstats.cpp1
-rw-r--r--linden/indra/newview/llviewerwindow.cpp1
-rw-r--r--linden/indra/newview/llvoavatar.cpp142
-rw-r--r--linden/indra/newview/llvoavatar.h7
-rw-r--r--linden/indra/newview/llvoiceclient.h2
-rw-r--r--linden/indra/newview/llwebbrowserctrl.cpp2
-rw-r--r--linden/indra/newview/macview.xcodeproj/project.pbxproj1
-rw-r--r--linden/indra/newview/pipeline.cpp13
-rw-r--r--linden/indra/newview/releasenotes.txt56
-rw-r--r--linden/indra/newview/skins/xui/de/teleport_strings.xml2
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_buy_land.xml8
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_directory.xml7
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_hud.xml2
-rw-r--r--linden/indra/newview/skins/xui/en-us/floater_url_entry.xml2
-rw-r--r--linden/indra/newview/skins/xui/en-us/teleport_strings.xml2
-rw-r--r--linden/indra/newview/skins/xui/ja/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/xui/ja/teleport_strings.xml2
-rw-r--r--linden/indra/newview/skins/xui/ko/teleport_strings.xml2
56 files changed, 472 insertions, 491 deletions
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 18ca143..9d074ad 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -9921,7 +9921,7 @@
9921 <key>Type</key> 9921 <key>Type</key>
9922 <string>Boolean</string> 9922 <string>Boolean</string>
9923 <key>Value</key> 9923 <key>Value</key>
9924 <integer>0</integer> 9924 <integer>1</integer>
9925 </map> 9925 </map>
9926 <key>WaterEditPresets</key> 9926 <key>WaterEditPresets</key>
9927 <map> 9927 <map>
diff --git a/linden/indra/newview/gpu_table.txt b/linden/indra/newview/gpu_table.txt
index f0b0f0c..f038e0f 100644
--- a/linden/indra/newview/gpu_table.txt
+++ b/linden/indra/newview/gpu_table.txt
@@ -186,6 +186,7 @@ NVIDIA GeForce Go 6700 .*NVIDIA.*GeForce Go 67.* 1 1
186NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 186NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1
187NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 187NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1
188NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 188NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1
189NVIDIA GeForce Go 7300 LE .*NVIDIA.*GeForce Go 73.*LE.* 0 1
189NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 190NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1
190NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 191NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1
191NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 192NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1
@@ -194,6 +195,7 @@ NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1
194NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 195NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1
195NVIDIA GeForce PCX .*GeForce PCX.* 0 1 196NVIDIA GeForce PCX .*GeForce PCX.* 0 1
196NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 197NVIDIA Generic .*NVIDIA.*Unknown.* 0 0
198NVIDIA NV34 .*NVIDIA.*NV34.* 0 1
197NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 199NVIDIA NV43 .*NVIDIA.*NV43.* 1 1
198NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1 200NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1
199NVIDIA Quadro2 .*Quadro2.* 0 1 201NVIDIA Quadro2 .*Quadro2.* 0 1
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 1d3c5d4..b65a1f6 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -6429,6 +6429,7 @@ BOOL LLAgent::isWearingItem( const LLUUID& item_id )
6429 return (getWearableFromWearableItem( item_id ) != NULL); 6429 return (getWearableFromWearableItem( item_id ) != NULL);
6430} 6430}
6431 6431
6432extern LLString gInitialOutfit;
6432 6433
6433// static 6434// static
6434void LLAgent::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void** user_data ) 6435void LLAgent::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void** user_data )
@@ -6468,8 +6469,12 @@ void LLAgent::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void
6468 //avatar->createStandardWearables(); 6469 //avatar->createStandardWearables();
6469 6470
6470 // no, deal with it by noting that we need to choose a 6471 // no, deal with it by noting that we need to choose a
6471 // gender. 6472 // gender, but only if an initial outfit load isn't happening.
6472 gAgent.setGenderChosen(FALSE); 6473 // This whole check (num_wearables < 4) can probably be deleted. JC
6474 if (gInitialOutfit.empty())
6475 {
6476 gAgent.setGenderChosen(FALSE);
6477 }
6473 return; 6478 return;
6474 } 6479 }
6475 6480
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 96d96dc..1ec2c14 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -530,7 +530,7 @@ void LLAppViewer::initGridChoice()
530 LLString custom_server = gSavedSettings.getString("CustomServer"); 530 LLString custom_server = gSavedSettings.getString("CustomServer");
531 LLViewerLogin::getInstance()->setGridChoice(custom_server); 531 LLViewerLogin::getInstance()->setGridChoice(custom_server);
532 } 532 }
533 else if(server != 0) 533 else if(server != (S32)GRID_INFO_NONE)
534 { 534 {
535 LLViewerLogin::getInstance()->setGridChoice((EGridInfo)server); 535 LLViewerLogin::getInstance()->setGridChoice((EGridInfo)server);
536 } 536 }
@@ -1139,12 +1139,12 @@ bool LLAppViewer::cleanup()
1139 1139
1140 llinfos << "Cleaning Up" << llendflush; 1140 llinfos << "Cleaning Up" << llendflush;
1141 1141
1142 LLKeyframeDataCache::clear();
1143
1144 // Must clean up texture references before viewer window is destroyed. 1142 // Must clean up texture references before viewer window is destroyed.
1145 LLHUDObject::cleanupHUDObjects(); 1143 LLHUDObject::cleanupHUDObjects();
1146 llinfos << "HUD Objects cleaned up" << llendflush; 1144 llinfos << "HUD Objects cleaned up" << llendflush;
1147 1145
1146 LLKeyframeDataCache::clear();
1147
1148 // End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage) 1148 // End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage)
1149#if 0 // this seems to get us stuck in an infinite loop... 1149#if 0 // this seems to get us stuck in an infinite loop...
1150 gTransferManager.cleanup(); 1150 gTransferManager.cleanup();
@@ -1322,7 +1322,7 @@ bool LLAppViewer::cleanup()
1322 1322
1323 removeMarkerFile(); // Any crashes from here on we'll just have to ignore 1323 removeMarkerFile(); // Any crashes from here on we'll just have to ignore
1324 1324
1325 closeDebug(); 1325 writeDebugInfo();
1326 1326
1327 // Let threads finish 1327 // Let threads finish
1328 LLTimer idleTimer; 1328 LLTimer idleTimer;
@@ -2139,7 +2139,7 @@ bool LLAppViewer::initWindow()
2139 return true; 2139 return true;
2140} 2140}
2141 2141
2142void LLAppViewer::closeDebug() 2142void LLAppViewer::writeDebugInfo()
2143{ 2143{
2144 std::string debug_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"debug_info.log"); 2144 std::string debug_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"debug_info.log");
2145 llinfos << "Opening debug file " << debug_filename << llendl; 2145 llinfos << "Opening debug file " << debug_filename << llendl;
@@ -2219,6 +2219,8 @@ void LLAppViewer::writeSystemInfo()
2219 gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH; 2219 gDebugInfo["ClientInfo"]["PatchVersion"] = LL_VERSION_PATCH;
2220 gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD; 2220 gDebugInfo["ClientInfo"]["BuildVersion"] = LL_VERSION_BUILD;
2221 2221
2222 gDebugInfo["CAFilename"] = gDirUtilp->getCAFile();
2223
2222 gDebugInfo["CPUInfo"]["CPUString"] = gSysCPU.getCPUString(); 2224 gDebugInfo["CPUInfo"]["CPUString"] = gSysCPU.getCPUString();
2223 gDebugInfo["CPUInfo"]["CPUFamily"] = gSysCPU.getFamily(); 2225 gDebugInfo["CPUInfo"]["CPUFamily"] = gSysCPU.getFamily();
2224 gDebugInfo["CPUInfo"]["CPUMhz"] = gSysCPU.getMhz(); 2226 gDebugInfo["CPUInfo"]["CPUMhz"] = gSysCPU.getMhz();
@@ -2257,6 +2259,8 @@ void LLAppViewer::writeSystemInfo()
2257 LL_INFOS("SystemInfo") << "Memory info:\n" << gSysMemory << LL_ENDL; 2259 LL_INFOS("SystemInfo") << "Memory info:\n" << gSysMemory << LL_ENDL;
2258 LL_INFOS("SystemInfo") << "OS: " << getOSInfo().getOSStringSimple() << LL_ENDL; 2260 LL_INFOS("SystemInfo") << "OS: " << getOSInfo().getOSStringSimple() << LL_ENDL;
2259 LL_INFOS("SystemInfo") << "OS info: " << getOSInfo() << LL_ENDL; 2261 LL_INFOS("SystemInfo") << "OS info: " << getOSInfo() << LL_ENDL;
2262
2263 writeDebugInfo(); // Save out debug_info.log early, in case of crash.
2260} 2264}
2261 2265
2262void LLAppViewer::handleSyncViewerCrash() 2266void LLAppViewer::handleSyncViewerCrash()
@@ -2376,7 +2380,7 @@ void LLAppViewer::handleViewerCrash()
2376 LLWorld::getInstance()->getInfo(gDebugInfo); 2380 LLWorld::getInstance()->getInfo(gDebugInfo);
2377 2381
2378 // Close the debug file 2382 // Close the debug file
2379 pApp->closeDebug(); 2383 pApp->writeDebugInfo();
2380 2384
2381 LLError::logToFile(""); 2385 LLError::logToFile("");
2382 2386
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h
index 02406be..c98be41 100644
--- a/linden/indra/newview/llappviewer.h
+++ b/linden/indra/newview/llappviewer.h
@@ -70,7 +70,7 @@ public:
70 bool quitRequested() { return mQuitRequested; } 70 bool quitRequested() { return mQuitRequested; }
71 bool logoutRequestSent() { return mLogoutRequestSent; } 71 bool logoutRequestSent() { return mLogoutRequestSent; }
72 72
73 void closeDebug(); 73 void writeDebugInfo();
74 74
75 const LLOSInfo& getOSInfo() const { return mSysOSInfo; } 75 const LLOSInfo& getOSInfo() const { return mSysOSInfo; }
76 76
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp
index a228f68..71c9ebb 100644
--- a/linden/indra/newview/lldrawable.cpp
+++ b/linden/indra/newview/lldrawable.cpp
@@ -127,7 +127,6 @@ void LLDrawable::destroy()
127 llerrs << "Illegal deletion of LLDrawable!" << llendl; 127 llerrs << "Illegal deletion of LLDrawable!" << llendl;
128 } 128 }
129 129
130 LLFace::sDeleteLock = mFaces.size() ;
131 std::for_each(mFaces.begin(), mFaces.end(), DeletePointer()); 130 std::for_each(mFaces.begin(), mFaces.end(), DeletePointer());
132 mFaces.clear(); 131 mFaces.clear();
133 132
@@ -190,7 +189,6 @@ void LLDrawable::cleanupReferences()
190{ 189{
191 LLFastTimer t(LLFastTimer::FTM_PIPELINE); 190 LLFastTimer t(LLFastTimer::FTM_PIPELINE);
192 191
193 LLFace::sDeleteLock = mFaces.size() ;
194 std::for_each(mFaces.begin(), mFaces.end(), DeletePointer()); 192 std::for_each(mFaces.begin(), mFaces.end(), DeletePointer());
195 mFaces.clear(); 193 mFaces.clear();
196 194
@@ -284,7 +282,6 @@ void LLDrawable::setNumFaces(const S32 newFaces, LLFacePool *poolp, LLViewerImag
284 } 282 }
285 else if (newFaces < (S32)mFaces.size()) 283 else if (newFaces < (S32)mFaces.size())
286 { 284 {
287 LLFace::sDeleteLock = (S32)mFaces.size() - newFaces ;
288 std::for_each(mFaces.begin() + newFaces, mFaces.end(), DeletePointer()); 285 std::for_each(mFaces.begin() + newFaces, mFaces.end(), DeletePointer());
289 mFaces.erase(mFaces.begin() + newFaces, mFaces.end()); 286 mFaces.erase(mFaces.begin() + newFaces, mFaces.end());
290 } 287 }
@@ -308,7 +305,6 @@ void LLDrawable::setNumFacesFast(const S32 newFaces, LLFacePool *poolp, LLViewer
308 } 305 }
309 else if (newFaces < (S32)mFaces.size()) 306 else if (newFaces < (S32)mFaces.size())
310 { 307 {
311 LLFace::sDeleteLock = (S32)mFaces.size() - newFaces ;
312 std::for_each(mFaces.begin() + newFaces, mFaces.end(), DeletePointer()); 308 std::for_each(mFaces.begin() + newFaces, mFaces.end(), DeletePointer());
313 mFaces.erase(mFaces.begin() + newFaces, mFaces.end()); 309 mFaces.erase(mFaces.begin() + newFaces, mFaces.end());
314 } 310 }
@@ -343,12 +339,8 @@ void LLDrawable::deleteFaces(S32 offset, S32 count)
343 face_list_t::iterator face_begin = mFaces.begin() + offset; 339 face_list_t::iterator face_begin = mFaces.begin() + offset;
344 face_list_t::iterator face_end = face_begin + count; 340 face_list_t::iterator face_end = face_begin + count;
345 341
346 S32 end = (S32)mFaces.size() ;
347 LLFace::sDeleteLock = count ;
348 std::for_each(face_begin, face_end, DeletePointer()); 342 std::for_each(face_begin, face_end, DeletePointer());
349 mFaces.erase(face_begin, face_end); 343 mFaces.erase(face_begin, face_end);
350
351 llassert_always(mFaces.size() == end - count) ;
352} 344}
353 345
354void LLDrawable::update() 346void LLDrawable::update()
@@ -526,7 +518,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
526 } 518 }
527 519
528 if ((mCurrentScale != target_scale) || 520 if ((mCurrentScale != target_scale) ||
529 (!isRoot() && (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED*camdist2))) 521 (!isRoot() && (dist_squared >= MIN_INTERPOLATE_DISTANCE_SQUARED) || !mVObjp->getAngularVelocity().isExactlyZero()))
530 { //child prim moving or scale change requires immediate rebuild 522 { //child prim moving or scale change requires immediate rebuild
531 gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE); 523 gPipeline.markRebuild(this, LLDrawable::REBUILD_POSITION, TRUE);
532 } 524 }
diff --git a/linden/indra/newview/lldrawpoolalpha.cpp b/linden/indra/newview/lldrawpoolalpha.cpp
index efe774f..ca8f3b4 100644
--- a/linden/indra/newview/lldrawpoolalpha.cpp
+++ b/linden/indra/newview/lldrawpoolalpha.cpp
@@ -230,7 +230,6 @@ void LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask
230 230
231 if (texture && params.mTexture.notNull()) 231 if (texture && params.mTexture.notNull())
232 { 232 {
233 llassert_always(gGL.getTexUnit(0)) ;
234 gGL.getTexUnit(0)->activate(); 233 gGL.getTexUnit(0)->activate();
235 params.mTexture->bind(); 234 params.mTexture->bind();
236 params.mTexture->addTextureStats(params.mVSize); 235 params.mTexture->addTextureStats(params.mVSize);
diff --git a/linden/indra/newview/lldrawpoolavatar.cpp b/linden/indra/newview/lldrawpoolavatar.cpp
index fe5d4cd..4e1e390 100644
--- a/linden/indra/newview/lldrawpoolavatar.cpp
+++ b/linden/indra/newview/lldrawpoolavatar.cpp
@@ -452,7 +452,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
452 return; 452 return;
453 } 453 }
454 454
455 if (single_avatar && avatarp->mSpecialRenderMode >= 2) // 2=image preview, 3=morph view 455 if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview, 3=morph view
456 { 456 {
457 gPipeline.enableLightsAvatarEdit(LLColor4(.5f, .5f, .5f, 1.f)); 457 gPipeline.enableLightsAvatarEdit(LLColor4(.5f, .5f, .5f, 1.f));
458 } 458 }
diff --git a/linden/indra/newview/lldrawpoolbump.cpp b/linden/indra/newview/lldrawpoolbump.cpp
index 6154c5b..68fa934 100644
--- a/linden/indra/newview/lldrawpoolbump.cpp
+++ b/linden/indra/newview/lldrawpoolbump.cpp
@@ -584,10 +584,6 @@ BOOL LLDrawPoolBump::bindBumpMap(LLDrawInfo& params)
584 if( tex ) 584 if( tex )
585 { 585 {
586 bump = gBumpImageList.getBrightnessDarknessImage( tex, bump_code ); 586 bump = gBumpImageList.getBrightnessDarknessImage( tex, bump_code );
587 //------------------------------------------
588 //error check to make sure bump is valid
589 llassert_always(!bump || bump->getNumRefs() == 1) ;
590 //------------------------------------------
591 } 587 }
592 break; 588 break;
593 589
@@ -602,11 +598,6 @@ BOOL LLDrawPoolBump::bindBumpMap(LLDrawInfo& params)
602 598
603 if (bump) 599 if (bump)
604 { 600 {
605 //------------------------------------------
606 //error check to make sure bump is valid
607 llassert_always(bump->getNumRefs() > 0 && bump->getNumRefs() < 100000) ;
608 //------------------------------------------
609
610 bump->bind(1); 601 bump->bind(1);
611 bump->bind(0); 602 bump->bind(0);
612 return TRUE; 603 return TRUE;
diff --git a/linden/indra/newview/lldriverparam.cpp b/linden/indra/newview/lldriverparam.cpp
index dcae69d..4809182 100644
--- a/linden/indra/newview/lldriverparam.cpp
+++ b/linden/indra/newview/lldriverparam.cpp
@@ -34,6 +34,7 @@
34#include "lldriverparam.h" 34#include "lldriverparam.h"
35 35
36#include "llfasttimer.h" 36#include "llfasttimer.h"
37#include "llvoavatar.h"
37 38
38//----------------------------------------------------------------------------- 39//-----------------------------------------------------------------------------
39// LLDriverParamInfo 40// LLDriverParamInfo
diff --git a/linden/indra/newview/lldriverparam.h b/linden/indra/newview/lldriverparam.h
index d767d6b..afcda9c 100644
--- a/linden/indra/newview/lldriverparam.h
+++ b/linden/indra/newview/lldriverparam.h
@@ -32,9 +32,10 @@
32#ifndef LL_LLDRIVERPARAM_H 32#ifndef LL_LLDRIVERPARAM_H
33#define LL_LLDRIVERPARAM_H 33#define LL_LLDRIVERPARAM_H
34 34
35#include "llvoavatar.h"
36#include "llviewervisualparam.h" 35#include "llviewervisualparam.h"
37 36
37class LLVOAvatar;
38
38//----------------------------------------------------------------------------- 39//-----------------------------------------------------------------------------
39 40
40struct LLDrivenEntryInfo 41struct LLDrivenEntryInfo
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index 77251ce..3e0c5b2 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -57,7 +57,6 @@
57extern BOOL gPickFaces; 57extern BOOL gPickFaces;
58 58
59BOOL LLFace::sSafeRenderSelect = TRUE; // FALSE 59BOOL LLFace::sSafeRenderSelect = TRUE; // FALSE
60S32 LLFace::sDeleteLock = 0 ;
61 60
62#define DOTVEC(a,b) (a.mV[0]*b.mV[0] + a.mV[1]*b.mV[1] + a.mV[2]*b.mV[2]) 61#define DOTVEC(a,b) (a.mV[0]*b.mV[0] + a.mV[1]*b.mV[1] + a.mV[2]*b.mV[2])
63 62
@@ -178,9 +177,6 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
178 177
179void LLFace::destroy() 178void LLFace::destroy()
180{ 179{
181 llassert_always(sDeleteLock >= 1);
182 --sDeleteLock;
183
184 mDrawablep = NULL; 180 mDrawablep = NULL;
185 mVObjp = NULL; 181 mVObjp = NULL;
186 182
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h
index 35063a0..533851c 100644
--- a/linden/indra/newview/llface.h
+++ b/linden/indra/newview/llface.h
@@ -296,9 +296,6 @@ public:
296 lhs->getTexture() < rhs->getTexture(); 296 lhs->getTexture() < rhs->getTexture();
297 } 297 }
298 }; 298 };
299
300public://paranoia check only
301 static S32 sDeleteLock ;
302}; 299};
303 300
304#endif // LL_LLFACE_H 301#endif // LL_LLFACE_H
diff --git a/linden/indra/newview/llfloateranimpreview.cpp b/linden/indra/newview/llfloateranimpreview.cpp
index ca6982b..41a1a35 100644
--- a/linden/indra/newview/llfloateranimpreview.cpp
+++ b/linden/indra/newview/llfloateranimpreview.cpp
@@ -76,13 +76,14 @@ const F32 PREVIEW_CAMERA_DISTANCE = 4.f;
76const F32 MIN_CAMERA_ZOOM = 0.5f; 76const F32 MIN_CAMERA_ZOOM = 0.5f;
77const F32 MAX_CAMERA_ZOOM = 10.f; 77const F32 MAX_CAMERA_ZOOM = 10.f;
78 78
79const F32 BASE_ANIM_TIME_OFFSET = 5.f;
80
79//----------------------------------------------------------------------------- 81//-----------------------------------------------------------------------------
80// LLFloaterAnimPreview() 82// LLFloaterAnimPreview()
81//----------------------------------------------------------------------------- 83//-----------------------------------------------------------------------------
82LLFloaterAnimPreview::LLFloaterAnimPreview(const char* filename) : 84LLFloaterAnimPreview::LLFloaterAnimPreview(const char* filename) :
83 LLFloaterNameDesc(filename) 85 LLFloaterNameDesc(filename)
84{ 86{
85 mLastSliderValue = 0.f;
86 mLastMouseX = 0; 87 mLastMouseX = 0;
87 mLastMouseY = 0; 88 mLastMouseY = 0;
88 89
@@ -413,20 +414,32 @@ void LLFloaterAnimPreview::resetMotion()
413 LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar(); 414 LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
414 BOOL paused = avatarp->areAnimationsPaused(); 415 BOOL paused = avatarp->areAnimationsPaused();
415 416
416 mPauseRequest = NULL; 417 // *TODO: Fix awful casting hack
418 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
419
420 // Set emotion
421 std::string emote = childGetValue("emote_combo").asString();
422 motionp->setEmote(mIDList[emote]);
417 423
418 LLUUID anim_id = mIDList[childGetValue("preview_base_anim").asString()]; 424 LLUUID base_id = mIDList[childGetValue("preview_base_anim").asString()];
419 avatarp->stopMotion(anim_id, TRUE); 425 avatarp->deactivateAllMotions();
420 avatarp->stopMotion(mMotionID, TRUE); 426 avatarp->startMotion(base_id, BASE_ANIM_TIME_OFFSET);
421 avatarp->startMotion(anim_id, 5.f); 427 avatarp->startMotion(mMotionID, 0.0f);
422 avatarp->startMotion(mMotionID); 428 childSetValue("playback_slider", 0.0f);
423 childSetValue("playback_slider", 0.0); 429
424 mLastSliderValue = 0.0f; 430 // Set pose
431 std::string handpose = childGetValue("hand_pose_combo").asString();
432 avatarp->startMotion( ANIM_AGENT_HAND_MOTION, 0.0f );
433 motionp->setHandPose(LLHandMotion::getHandPose(handpose));
425 434
426 if (paused) 435 if (paused)
427 { 436 {
428 mPauseRequest = avatarp->requestPause(); 437 mPauseRequest = avatarp->requestPause();
429 } 438 }
439 else
440 {
441 mPauseRequest = NULL;
442 }
430} 443}
431 444
432//----------------------------------------------------------------------------- 445//-----------------------------------------------------------------------------
@@ -537,7 +550,8 @@ void LLFloaterAnimPreview::onMouseCaptureLost()
537void LLFloaterAnimPreview::onBtnPlay(void* user_data) 550void LLFloaterAnimPreview::onBtnPlay(void* user_data)
538{ 551{
539 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data; 552 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
540 if (!previewp->getEnabled()) return; 553 if (!previewp->getEnabled())
554 return;
541 555
542 if (previewp->mMotionID.notNull() && previewp->mAnimPreview) 556 if (previewp->mMotionID.notNull() && previewp->mAnimPreview)
543 { 557 {
@@ -568,22 +582,14 @@ void LLFloaterAnimPreview::onBtnPlay(void* user_data)
568void LLFloaterAnimPreview::onBtnStop(void* user_data) 582void LLFloaterAnimPreview::onBtnStop(void* user_data)
569{ 583{
570 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data; 584 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
571 if (!previewp->getEnabled()) return; 585 if (!previewp->getEnabled())
586 return;
572 587
573 if (previewp->mMotionID.notNull() && previewp->mAnimPreview) 588 if (previewp->mMotionID.notNull() && previewp->mAnimPreview)
574 { 589 {
575 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 590 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
576 591 previewp->resetMotion();
577 // is the motion looping and have we passed the loop in point? 592 previewp->mPauseRequest = avatarp->requestPause();
578 if (previewp->childGetValue("loop_check").asBoolean() &&
579 (F32)previewp->childGetValue("loop_in_point").asReal() <= (F32)previewp->childGetValue("playback_slider").asReal() * 100.f)
580 {
581 avatarp->stopMotion(previewp->mMotionID, FALSE);
582 }
583 else
584 {
585 avatarp->stopMotion(previewp->mMotionID, FALSE);
586 }
587 } 593 }
588} 594}
589 595
@@ -593,43 +599,24 @@ void LLFloaterAnimPreview::onBtnStop(void* user_data)
593void LLFloaterAnimPreview::onSliderMove(LLUICtrl* ctrl, void*user_data) 599void LLFloaterAnimPreview::onSliderMove(LLUICtrl* ctrl, void*user_data)
594{ 600{
595 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data; 601 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)user_data;
596 if (!previewp->getEnabled()) return; 602 if (!previewp->getEnabled())
603 return;
597 604
598 if (previewp->mAnimPreview) 605 if (previewp->mAnimPreview)
599 { 606 {
600 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 607 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
608 F32 slider_value = (F32)previewp->childGetValue("playback_slider").asReal();
609 LLUUID base_id = previewp->mIDList[previewp->childGetValue("preview_base_anim").asString()];
601 LLMotion* motionp = avatarp->findMotion(previewp->mMotionID); 610 LLMotion* motionp = avatarp->findMotion(previewp->mMotionID);
602 LLMotion* base_motionp = 611 F32 duration = motionp->getDuration();// + motionp->getEaseOutDuration();
603 avatarp->findMotion(previewp->mIDList[previewp->childGetValue("preview_base_anim").asString()]); 612 F32 delta_time = duration * slider_value;
604 613 avatarp->deactivateAllMotions();
605 if (motionp && base_motionp) 614 avatarp->startMotion(base_id, delta_time + BASE_ANIM_TIME_OFFSET);
606 { 615 avatarp->startMotion(previewp->mMotionID, delta_time);
607 if (!avatarp->isMotionActive(previewp->mMotionID)) 616 previewp->mPauseRequest = avatarp->requestPause();
608 { 617 previewp->refresh();
609 previewp->resetMotion();
610 }
611
612 previewp->mPauseRequest = avatarp->requestPause();
613 F32 original_activation_time = motionp->mActivationTimestamp;
614 motionp->mActivationTimestamp -= ((F32)previewp->childGetValue("playback_slider").asReal() - previewp->mLastSliderValue) *
615 motionp->getDuration();
616 base_motionp->mActivationTimestamp -= ((F32)previewp->childGetValue("playback_slider").asReal() - previewp->mLastSliderValue) *
617 base_motionp->getDuration();
618
619 if (motionp->mSendStopTimestamp != F32_MIN)
620 {
621 motionp->mSendStopTimestamp = motionp->mSendStopTimestamp - original_activation_time + motionp->mActivationTimestamp;
622 }
623
624 if (motionp->mStopTimestamp != F32_MIN)
625 {
626 motionp->mStopTimestamp = motionp->mStopTimestamp - original_activation_time + motionp->mActivationTimestamp;
627 }
628 previewp->refresh();
629 }
630 } 618 }
631 619
632 previewp->mLastSliderValue = (F32)previewp->childGetValue("playback_slider").asReal();
633} 620}
634 621
635//----------------------------------------------------------------------------- 622//-----------------------------------------------------------------------------
@@ -638,8 +625,8 @@ void LLFloaterAnimPreview::onSliderMove(LLUICtrl* ctrl, void*user_data)
638void LLFloaterAnimPreview::onCommitBaseAnim(LLUICtrl* ctrl, void* data) 625void LLFloaterAnimPreview::onCommitBaseAnim(LLUICtrl* ctrl, void* data)
639{ 626{
640 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 627 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
641 628 if (!previewp->getEnabled())
642 if (!previewp->getEnabled()) return; 629 return;
643 630
644 if (previewp->mAnimPreview) 631 if (previewp->mAnimPreview)
645 { 632 {
@@ -668,8 +655,9 @@ void LLFloaterAnimPreview::onCommitBaseAnim(LLUICtrl* ctrl, void* data)
668void LLFloaterAnimPreview::onCommitLoop(LLUICtrl* ctrl, void* data) 655void LLFloaterAnimPreview::onCommitLoop(LLUICtrl* ctrl, void* data)
669{ 656{
670 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 657 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
671 658 if (!previewp->getEnabled())
672 if (!previewp->getEnabled()) return; 659 return;
660
673 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 661 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
674 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 662 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
675 663
@@ -687,7 +675,8 @@ void LLFloaterAnimPreview::onCommitLoop(LLUICtrl* ctrl, void* data)
687void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data) 675void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data)
688{ 676{
689 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 677 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
690 if (!previewp->getEnabled()) return; 678 if (!previewp->getEnabled())
679 return;
691 680
692 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 681 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
693 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 682 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -707,7 +696,8 @@ void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data)
707void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data) 696void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data)
708{ 697{
709 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 698 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
710 if (!previewp->getEnabled()) return; 699 if (!previewp->getEnabled())
700 return;
711 701
712 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 702 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
713 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 703 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -727,7 +717,8 @@ void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data)
727void LLFloaterAnimPreview::onCommitName(LLUICtrl* ctrl, void* data) 717void LLFloaterAnimPreview::onCommitName(LLUICtrl* ctrl, void* data)
728{ 718{
729 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 719 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
730 if (!previewp->getEnabled()) return; 720 if (!previewp->getEnabled())
721 return;
731 722
732 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 723 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
733 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 724 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -746,13 +737,10 @@ void LLFloaterAnimPreview::onCommitName(LLUICtrl* ctrl, void* data)
746void LLFloaterAnimPreview::onCommitHandPose(LLUICtrl* ctrl, void* data) 737void LLFloaterAnimPreview::onCommitHandPose(LLUICtrl* ctrl, void* data)
747{ 738{
748 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 739 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
749 if (!previewp->getEnabled()) return; 740 if (!previewp->getEnabled())
750 741 return;
751 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
752 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
753 742
754 motionp->setHandPose(LLHandMotion::getHandPose(previewp->childGetValue("hand_pose_combo").asString())); 743 previewp->resetMotion(); // sets hand pose
755 previewp->resetMotion();
756} 744}
757 745
758//----------------------------------------------------------------------------- 746//-----------------------------------------------------------------------------
@@ -761,13 +749,10 @@ void LLFloaterAnimPreview::onCommitHandPose(LLUICtrl* ctrl, void* data)
761void LLFloaterAnimPreview::onCommitEmote(LLUICtrl* ctrl, void* data) 749void LLFloaterAnimPreview::onCommitEmote(LLUICtrl* ctrl, void* data)
762{ 750{
763 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 751 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
764 if (!previewp->getEnabled()) return; 752 if (!previewp->getEnabled())
753 return;
765 754
766 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 755 previewp->resetMotion(); // ssts emote
767 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
768
769 motionp->setEmote(previewp->mIDList[previewp->childGetValue("emote_combo").asString()]);
770 previewp->resetMotion();
771} 756}
772 757
773//----------------------------------------------------------------------------- 758//-----------------------------------------------------------------------------
@@ -776,7 +761,8 @@ void LLFloaterAnimPreview::onCommitEmote(LLUICtrl* ctrl, void* data)
776void LLFloaterAnimPreview::onCommitPriority(LLUICtrl* ctrl, void* data) 761void LLFloaterAnimPreview::onCommitPriority(LLUICtrl* ctrl, void* data)
777{ 762{
778 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 763 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
779 if (!previewp->getEnabled()) return; 764 if (!previewp->getEnabled())
765 return;
780 766
781 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 767 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
782 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 768 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -790,7 +776,8 @@ void LLFloaterAnimPreview::onCommitPriority(LLUICtrl* ctrl, void* data)
790void LLFloaterAnimPreview::onCommitEaseIn(LLUICtrl* ctrl, void* data) 776void LLFloaterAnimPreview::onCommitEaseIn(LLUICtrl* ctrl, void* data)
791{ 777{
792 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 778 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
793 if (!previewp->getEnabled()) return; 779 if (!previewp->getEnabled())
780 return;
794 781
795 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 782 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
796 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 783 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -805,7 +792,8 @@ void LLFloaterAnimPreview::onCommitEaseIn(LLUICtrl* ctrl, void* data)
805void LLFloaterAnimPreview::onCommitEaseOut(LLUICtrl* ctrl, void* data) 792void LLFloaterAnimPreview::onCommitEaseOut(LLUICtrl* ctrl, void* data)
806{ 793{
807 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 794 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
808 if (!previewp->getEnabled()) return; 795 if (!previewp->getEnabled())
796 return;
809 797
810 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 798 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
811 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 799 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -819,9 +807,9 @@ void LLFloaterAnimPreview::onCommitEaseOut(LLUICtrl* ctrl, void* data)
819//----------------------------------------------------------------------------- 807//-----------------------------------------------------------------------------
820BOOL LLFloaterAnimPreview::validateEaseIn(LLUICtrl* spin, void* data) 808BOOL LLFloaterAnimPreview::validateEaseIn(LLUICtrl* spin, void* data)
821{ 809{
822 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 810 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
823 811 if (!previewp->getEnabled())
824 if (!previewp->getEnabled()) return FALSE; 812 return FALSE;
825 813
826 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 814 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
827 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 815 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -842,7 +830,8 @@ BOOL LLFloaterAnimPreview::validateEaseOut(LLUICtrl* spin, void* data)
842{ 830{
843 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 831 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
844 832
845 if (!previewp->getEnabled()) return FALSE; 833 if (!previewp->getEnabled())
834 return FALSE;
846 835
847 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar(); 836 LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
848 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID); 837 LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(previewp->mMotionID);
@@ -862,8 +851,8 @@ BOOL LLFloaterAnimPreview::validateEaseOut(LLUICtrl* spin, void* data)
862BOOL LLFloaterAnimPreview::validateLoopIn(LLUICtrl* ctrl, void* data) 851BOOL LLFloaterAnimPreview::validateLoopIn(LLUICtrl* ctrl, void* data)
863{ 852{
864 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 853 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
865 854 if (!previewp->getEnabled())
866 if (!previewp->getEnabled()) return FALSE; 855 return FALSE;
867 856
868 F32 loop_in_value = (F32)previewp->childGetValue("loop_in_point").asReal(); 857 F32 loop_in_value = (F32)previewp->childGetValue("loop_in_point").asReal();
869 F32 loop_out_value = (F32)previewp->childGetValue("loop_out_point").asReal(); 858 F32 loop_out_value = (F32)previewp->childGetValue("loop_out_point").asReal();
@@ -891,8 +880,8 @@ BOOL LLFloaterAnimPreview::validateLoopIn(LLUICtrl* ctrl, void* data)
891BOOL LLFloaterAnimPreview::validateLoopOut(LLUICtrl* spin, void* data) 880BOOL LLFloaterAnimPreview::validateLoopOut(LLUICtrl* spin, void* data)
892{ 881{
893 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data; 882 LLFloaterAnimPreview* previewp = (LLFloaterAnimPreview*)data;
894 883 if (!previewp->getEnabled())
895 if (!previewp->getEnabled()) return FALSE; 884 return FALSE;
896 885
897 F32 loop_out_value = (F32)previewp->childGetValue("loop_out_point").asReal(); 886 F32 loop_out_value = (F32)previewp->childGetValue("loop_out_point").asReal();
898 F32 loop_in_value = (F32)previewp->childGetValue("loop_in_point").asReal(); 887 F32 loop_in_value = (F32)previewp->childGetValue("loop_in_point").asReal();
@@ -947,11 +936,8 @@ void LLFloaterAnimPreview::refresh()
947 { 936 {
948 if (motionp) 937 if (motionp)
949 { 938 {
950 F32 fraction_complete; 939 F32 fraction_complete = motionp->getLastUpdateTime() / motionp->getDuration();
951 fraction_complete = motionp->getLastUpdateTime() / motionp->getDuration();
952
953 childSetValue("playback_slider", fraction_complete); 940 childSetValue("playback_slider", fraction_complete);
954 mLastSliderValue = fraction_complete;
955 } 941 }
956 mPlayButton->setImages("button_anim_pause.tga", 942 mPlayButton->setImages("button_anim_pause.tga",
957 "button_anim_pause_selected.tga"); 943 "button_anim_pause_selected.tga");
@@ -964,7 +950,7 @@ void LLFloaterAnimPreview::refresh()
964 mPlayButton->setImages("button_anim_play.tga", 950 mPlayButton->setImages("button_anim_play.tga",
965 "button_anim_play_selected.tga"); 951 "button_anim_play_selected.tga");
966 952
967 mStopButton->setEnabled(FALSE); 953 mStopButton->setEnabled(TRUE); // stop also resets, leave enabled.
968 } 954 }
969 childEnable("ok_btn"); 955 childEnable("ok_btn");
970 mAnimPreview->requestUpdate(); 956 mAnimPreview->requestUpdate();
@@ -1037,12 +1023,12 @@ LLPreviewAnimation::LLPreviewAnimation(S32 width, S32 height) : LLDynamicTexture
1037 mDummyAvatar = (LLVOAvatar*)gObjectList.createObjectViewer(LL_PCODE_LEGACY_AVATAR, gAgent.getRegion()); 1023 mDummyAvatar = (LLVOAvatar*)gObjectList.createObjectViewer(LL_PCODE_LEGACY_AVATAR, gAgent.getRegion());
1038 mDummyAvatar->createDrawable(&gPipeline); 1024 mDummyAvatar->createDrawable(&gPipeline);
1039 mDummyAvatar->mIsDummy = TRUE; 1025 mDummyAvatar->mIsDummy = TRUE;
1040 mDummyAvatar->mSpecialRenderMode = 2; 1026 mDummyAvatar->mSpecialRenderMode = 1;
1041 mDummyAvatar->setPositionAgent(LLVector3::zero); 1027 mDummyAvatar->setPositionAgent(LLVector3::zero);
1042 mDummyAvatar->slamPosition(); 1028 mDummyAvatar->slamPosition();
1043 mDummyAvatar->updateJointLODs(); 1029 mDummyAvatar->updateJointLODs();
1044 mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable); 1030 mDummyAvatar->updateGeometry(mDummyAvatar->mDrawable);
1045 mDummyAvatar->startMotion(ANIM_AGENT_STAND, 5.f); 1031 mDummyAvatar->startMotion(ANIM_AGENT_STAND, BASE_ANIM_TIME_OFFSET);
1046 mDummyAvatar->mSkirtLOD.setVisible(FALSE, TRUE); 1032 mDummyAvatar->mSkirtLOD.setVisible(FALSE, TRUE);
1047 gPipeline.markVisible(mDummyAvatar->mDrawable, *LLViewerCamera::getInstance()); 1033 gPipeline.markVisible(mDummyAvatar->mDrawable, *LLViewerCamera::getInstance());
1048 1034
@@ -1110,30 +1096,15 @@ BOOL LLPreviewAnimation::render()
1110 1096
1111 //avatarp->setAnimationData("LookAtPoint", (void *)&mCameraRelPos); 1097 //avatarp->setAnimationData("LookAtPoint", (void *)&mCameraRelPos);
1112 1098
1113 //RN: timestep must be zero, because paused animations will never initialize 1099 //SJB: Animation is updated in LLVOAvatar::updateCharacter
1114 // av skeleton otherwise
1115 avatarp->setTimeStep(0.f);
1116 if (avatarp->areAnimationsPaused())
1117 {
1118 avatarp->updateMotion(TRUE);
1119 }
1120 else
1121 {
1122 avatarp->updateMotion();
1123 }
1124 1100
1125 LLVertexBuffer::unbind();
1126 avatarp->updateLOD();
1127
1128
1129 avatarp->mRoot.updateWorldMatrixChildren();
1130
1131 stop_glerror();
1132
1133 LLGLDepthTest gls_depth(GL_TRUE);
1134
1135 if (avatarp->mDrawable.notNull()) 1101 if (avatarp->mDrawable.notNull())
1136 { 1102 {
1103 avatarp->updateLOD();
1104
1105 LLVertexBuffer::unbind();
1106 LLGLDepthTest gls_depth(GL_TRUE);
1107
1137 LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool(); 1108 LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool();
1138 avatarp->dirtyMesh(); 1109 avatarp->dirtyMesh();
1139 avatarPoolp->renderAvatars(avatarp); // renders only one avatar 1110 avatarPoolp->renderAvatars(avatarp); // renders only one avatar
diff --git a/linden/indra/newview/llfloateranimpreview.h b/linden/indra/newview/llfloateranimpreview.h
index 52c2d6f..99b66d7 100644
--- a/linden/indra/newview/llfloateranimpreview.h
+++ b/linden/indra/newview/llfloateranimpreview.h
@@ -118,7 +118,6 @@ protected:
118 S32 mLastMouseY; 118 S32 mLastMouseY;
119 LLButton* mPlayButton; 119 LLButton* mPlayButton;
120 LLButton* mStopButton; 120 LLButton* mStopButton;
121 F32 mLastSliderValue;
122 LLRect mPreviewRect; 121 LLRect mPreviewRect;
123 LLRectf mPreviewImageRect; 122 LLRectf mPreviewImageRect;
124 LLAssetID mMotionID; 123 LLAssetID mMotionID;
diff --git a/linden/indra/newview/llfloateravatarinfo.cpp b/linden/indra/newview/llfloateravatarinfo.cpp
index d4b0b1c..b740a46 100644
--- a/linden/indra/newview/llfloateravatarinfo.cpp
+++ b/linden/indra/newview/llfloateravatarinfo.cpp
@@ -120,22 +120,14 @@ LLFloaterAvatarInfo::LLFloaterAvatarInfo(const std::string& name, const LLRect &
120 mPanelAvatarp->selectTab(0); 120 mPanelAvatarp->selectTab(0);
121 } 121 }
122 122
123 llassert_always(!gAvatarInfoInstances.checkData(mAvatarID));//if not inserted.
124 gAvatarInfoInstances.addData(avatar_id, this); 123 gAvatarInfoInstances.addData(avatar_id, this);
125
126
127} 124}
128 125
129// virtual 126// virtual
130LLFloaterAvatarInfo::~LLFloaterAvatarInfo() 127LLFloaterAvatarInfo::~LLFloaterAvatarInfo()
131{ 128{
132 llassert_always(gAvatarInfoInstances.checkData(mAvatarID));//if there
133 llinfos << "to remove profile floater for avatar " << mAvatarID << llendl ;
134 // child views automatically deleted 129 // child views automatically deleted
135 gAvatarInfoInstances.removeData(mAvatarID); 130 gAvatarInfoInstances.removeData(mAvatarID);
136
137 llinfos << "successfully removed profile floater for avatar " << mAvatarID << llendl ;
138
139} 131}
140 132
141void LLFloaterAvatarInfo::resetGroupList() 133void LLFloaterAvatarInfo::resetGroupList()
diff --git a/linden/indra/newview/llfloatercustomize.h b/linden/indra/newview/llfloatercustomize.h
index 96db2d2..9ca22d0 100644
--- a/linden/indra/newview/llfloatercustomize.h
+++ b/linden/indra/newview/llfloatercustomize.h
@@ -40,7 +40,6 @@
40#include "lltimer.h" 40#include "lltimer.h"
41#include "llundo.h" 41#include "llundo.h"
42#include "llviewermenu.h" 42#include "llviewermenu.h"
43#include "llvoavatar.h"
44#include "llwearable.h" 43#include "llwearable.h"
45#include "lliconctrl.h" 44#include "lliconctrl.h"
46 45
diff --git a/linden/indra/newview/llfloatergroups.cpp b/linden/indra/newview/llfloatergroups.cpp
index c9ccf1a..f6e226d 100644
--- a/linden/indra/newview/llfloatergroups.cpp
+++ b/linden/indra/newview/llfloatergroups.cpp
@@ -438,7 +438,8 @@ void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 pow
438 { 438 {
439 id = gAgent.mGroups.get(i).mID; 439 id = gAgent.mGroups.get(i).mID;
440 LLGroupData* group_datap = &gAgent.mGroups.get(i); 440 LLGroupData* group_datap = &gAgent.mGroups.get(i);
441 if ((group_datap->mPowers & powers_mask) != 0) { 441 if ((powers_mask == GP_ALL_POWERS) || ((group_datap->mPowers & powers_mask) != 0))
442 {
442 LLString style = "NORMAL"; 443 LLString style = "NORMAL";
443 if(highlight_id == id) 444 if(highlight_id == id)
444 { 445 {
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp
index 88ad5d6..0829fb2 100644
--- a/linden/indra/newview/llhudeffectlookat.cpp
+++ b/linden/indra/newview/llhudeffectlookat.cpp
@@ -501,8 +501,8 @@ void LLHUDEffectLookAt::render()
501 501
502 LLVector3 target = mTargetPos + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->mHeadp->getWorldPosition(); 502 LLVector3 target = mTargetPos + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->mHeadp->getWorldPosition();
503 glMatrixMode(GL_MODELVIEW); 503 glMatrixMode(GL_MODELVIEW);
504 glPushMatrix(); 504 gGL.pushMatrix();
505 glTranslatef(target.mV[VX], target.mV[VY], target.mV[VZ]); 505 gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
506 glScalef(0.3f, 0.3f, 0.3f); 506 glScalef(0.3f, 0.3f, 0.3f);
507 gGL.begin(LLVertexBuffer::LINES); 507 gGL.begin(LLVertexBuffer::LINES);
508 { 508 {
@@ -517,7 +517,7 @@ void LLHUDEffectLookAt::render()
517 gGL.vertex3f(0.f, 0.f, -1.f); 517 gGL.vertex3f(0.f, 0.f, -1.f);
518 gGL.vertex3f(0.f, 0.f, 1.f); 518 gGL.vertex3f(0.f, 0.f, 1.f);
519 } gGL.end(); 519 } gGL.end();
520 glPopMatrix(); 520 gGL.popMatrix();
521 } 521 }
522} 522}
523 523
diff --git a/linden/indra/newview/llhudeffectpointat.cpp b/linden/indra/newview/llhudeffectpointat.cpp
index 8cd1023..7ab03f2 100644
--- a/linden/indra/newview/llhudeffectpointat.cpp
+++ b/linden/indra/newview/llhudeffectpointat.cpp
@@ -331,8 +331,8 @@ void LLHUDEffectPointAt::render()
331 LLGLSNoTexture gls_no_texture; 331 LLGLSNoTexture gls_no_texture;
332 332
333 LLVector3 target = mTargetPos + mSourceObject->getRenderPosition(); 333 LLVector3 target = mTargetPos + mSourceObject->getRenderPosition();
334 glPushMatrix(); 334 gGL.pushMatrix();
335 glTranslatef(target.mV[VX], target.mV[VY], target.mV[VZ]); 335 gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
336 glScalef(0.3f, 0.3f, 0.3f); 336 glScalef(0.3f, 0.3f, 0.3f);
337 gGL.begin(LLVertexBuffer::LINES); 337 gGL.begin(LLVertexBuffer::LINES);
338 { 338 {
@@ -346,7 +346,7 @@ void LLHUDEffectPointAt::render()
346 gGL.vertex3f(0.f, 0.f, -1.f); 346 gGL.vertex3f(0.f, 0.f, -1.f);
347 gGL.vertex3f(0.f, 0.f, 1.f); 347 gGL.vertex3f(0.f, 0.f, 1.f);
348 } gGL.end(); 348 } gGL.end();
349 glPopMatrix(); 349 gGL.popMatrix();
350 } 350 }
351} 351}
352 352
diff --git a/linden/indra/newview/llinventoryactions.cpp b/linden/indra/newview/llinventoryactions.cpp
index 78b43d5..7f7a15f 100644
--- a/linden/indra/newview/llinventoryactions.cpp
+++ b/linden/indra/newview/llinventoryactions.cpp
@@ -76,6 +76,7 @@
76#include "llviewerinventory.h" 76#include "llviewerinventory.h"
77#include "llviewerobjectlist.h" 77#include "llviewerobjectlist.h"
78#include "llviewerwindow.h" 78#include "llviewerwindow.h"
79#include "llvoavatar.h"
79#include "llwearable.h" 80#include "llwearable.h"
80#include "llwearablelist.h" 81#include "llwearablelist.h"
81#include "llviewermessage.h" 82#include "llviewermessage.h"
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp
index 1d5cd88..a909262 100644
--- a/linden/indra/newview/llinventorybridge.cpp
+++ b/linden/indra/newview/llinventorybridge.cpp
@@ -76,6 +76,7 @@
76#include "llviewerinventory.h" 76#include "llviewerinventory.h"
77#include "llviewerobjectlist.h" 77#include "llviewerobjectlist.h"
78#include "llviewerwindow.h" 78#include "llviewerwindow.h"
79#include "llvoavatar.h"
79#include "llwearable.h" 80#include "llwearable.h"
80#include "llwearablelist.h" 81#include "llwearablelist.h"
81#include "llviewermessage.h" 82#include "llviewermessage.h"
diff --git a/linden/indra/newview/llmemoryview.cpp b/linden/indra/newview/llmemoryview.cpp
index ca38a9c..32f5431 100644
--- a/linden/indra/newview/llmemoryview.cpp
+++ b/linden/indra/newview/llmemoryview.cpp
@@ -41,6 +41,7 @@
41#include "llfontgl.h" 41#include "llfontgl.h"
42#include "llmemtype.h" 42#include "llmemtype.h"
43 43
44#include "llcharacter.h"
44#include "llui.h" 45#include "llui.h"
45#include "llviewercontrol.h" 46#include "llviewercontrol.h"
46#include "llstat.h" 47#include "llstat.h"
@@ -120,6 +121,7 @@ static const struct mtv_display_info mtv_display_table[] =
120 { LLMemType::MTYPE_SPACE_PARTITION, "Space Partition", &LLColor4::blue2 }, 121 { LLMemType::MTYPE_SPACE_PARTITION, "Space Partition", &LLColor4::blue2 },
121 { LLMemType::MTYPE_VERTEX_DATA, "Vertex Buffer", &LLColor4::blue3 }, 122 { LLMemType::MTYPE_VERTEX_DATA, "Vertex Buffer", &LLColor4::blue3 },
122 { LLMemType::MTYPE_AVATAR, "Avatar", &LLColor4::purple1 }, 123 { LLMemType::MTYPE_AVATAR, "Avatar", &LLColor4::purple1 },
124 { LLMemType::MTYPE_ANIMATION, "Animation", &LLColor4::purple3 },
123 { LLMemType::MTYPE_REGIONS, "Regions", &LLColor4::blue1 }, 125 { LLMemType::MTYPE_REGIONS, "Regions", &LLColor4::blue1 },
124 { LLMemType::MTYPE_VOLUME, "Volume", &LLColor4::pink1 }, 126 { LLMemType::MTYPE_VOLUME, "Volume", &LLColor4::pink1 },
125 { LLMemType::MTYPE_PRIMITIVE, "Profile", &LLColor4::pink2 }, 127 { LLMemType::MTYPE_PRIMITIVE, "Profile", &LLColor4::pink2 },
@@ -208,10 +210,25 @@ void LLMemoryView::draw()
208 if (textw > labelwidth) 210 if (textw > labelwidth)
209 labelwidth = textw; 211 labelwidth = textw;
210 } 212 }
213
214 S32 num_avatars = 0;
215 S32 num_motions = 0;
216 S32 num_loading_motions = 0;
217 S32 num_loaded_motions = 0;
218 S32 num_active_motions = 0;
219 S32 num_deprecated_motions = 0;
220 for (std::vector<LLCharacter*>::iterator iter = LLCharacter::sInstances.begin();
221 iter != LLCharacter::sInstances.end(); ++iter)
222 {
223 num_avatars++;
224 (*iter)->getMotionController().incMotionCounts(num_motions, num_loading_motions, num_loaded_motions, num_active_motions, num_deprecated_motions);
225 }
226
211 x = xleft; 227 x = xleft;
212 tdesc = llformat("Total Bytes: %d MB Overhead: %d KB", 228 tdesc = llformat("Total Bytes: %d MB Overhead: %d KB Avs %d Motions:%d Loading:%d Loaded:%d Active:%d Dep:%d",
213 LLMemType::sTotalMem >> 20, LLMemType::sOverheadMem >> 10); 229 LLMemType::sTotalMem >> 20, LLMemType::sOverheadMem >> 10,
214 LLFontGL::sMonospace->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP); 230 num_avatars, num_motions, num_loading_motions, num_loaded_motions, num_active_motions, num_deprecated_motions);
231 LLFontGL::sMonospace->renderUTF8(tdesc, 0, x, y, LLColor4::white, LLFontGL::LEFT, LLFontGL::TOP);
215 } 232 }
216 233
217 // Bars 234 // Bars
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp
index 75c7cce..408b70e 100644
--- a/linden/indra/newview/llmutelist.cpp
+++ b/linden/indra/newview/llmutelist.cpp
@@ -72,9 +72,6 @@
72#include "llviewerobjectlist.h" 72#include "llviewerobjectlist.h"
73 73
74 74
75std::map<LLUUID, F32> LLMuteList::sUserVolumeSettings;
76
77
78// "emptymutelist" 75// "emptymutelist"
79class LLDispatchEmptyMuteList : public LLDispatchHandler 76class LLDispatchEmptyMuteList : public LLDispatchHandler
80{ 77{
@@ -182,10 +179,19 @@ LLMuteList* LLMuteList::getInstance()
182// LLMuteList() 179// LLMuteList()
183//----------------------------------------------------------------------------- 180//-----------------------------------------------------------------------------
184LLMuteList::LLMuteList() : 181LLMuteList::LLMuteList() :
185 mIsLoaded(FALSE) 182 mIsLoaded(FALSE),
183 mUserVolumesLoaded(FALSE)
186{ 184{
187 gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList); 185 gGenericDispatcher.addHandler("emptymutelist", &sDispatchEmptyMuteList);
186}
188 187
188void LLMuteList::loadUserVolumes()
189{
190 // call once, after LLDir::setLindenUserDir() has been called
191 if (mUserVolumesLoaded)
192 return;
193 mUserVolumesLoaded = TRUE;
194
189 // load per-resident voice volume information 195 // load per-resident voice volume information
190 // conceptually, this is part of the mute list information, although it is only stored locally 196 // conceptually, this is part of the mute list information, although it is only stored locally
191 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); 197 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml");
@@ -201,7 +207,7 @@ LLMuteList::LLMuteList() :
201 for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); 207 for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
202 iter != settings_llsd.endMap(); ++iter) 208 iter != settings_llsd.endMap(); ++iter)
203 { 209 {
204 sUserVolumeSettings.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal())); 210 mUserVolumeSettings.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal()));
205 } 211 }
206} 212}
207 213
@@ -213,7 +219,7 @@ LLMuteList::~LLMuteList()
213 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); 219 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml");
214 LLSD settings_llsd; 220 LLSD settings_llsd;
215 221
216 for(user_volume_map_t::iterator iter = sUserVolumeSettings.begin(); iter != sUserVolumeSettings.end(); ++iter) 222 for(user_volume_map_t::iterator iter = mUserVolumeSettings.begin(); iter != mUserVolumeSettings.end(); ++iter)
217 { 223 {
218 settings_llsd[iter->first.asString()] = iter->second; 224 settings_llsd[iter->first.asString()] = iter->second;
219 } 225 }
@@ -669,6 +675,8 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const LLString& name, U32 flags) cons
669//----------------------------------------------------------------------------- 675//-----------------------------------------------------------------------------
670void LLMuteList::requestFromServer(const LLUUID& agent_id) 676void LLMuteList::requestFromServer(const LLUUID& agent_id)
671{ 677{
678 loadUserVolumes();
679
672 char agent_id_string[UUID_STR_LENGTH]; /*Flawfinder: ignore*/ 680 char agent_id_string[UUID_STR_LENGTH]; /*Flawfinder: ignore*/
673 char filename[LL_MAX_PATH]; /*Flawfinder: ignore*/ 681 char filename[LL_MAX_PATH]; /*Flawfinder: ignore*/
674 agent_id.toString(agent_id_string); 682 agent_id.toString(agent_id_string);
@@ -706,15 +714,15 @@ void LLMuteList::cache(const LLUUID& agent_id)
706void LLMuteList::setSavedResidentVolume(const LLUUID& id, F32 volume) 714void LLMuteList::setSavedResidentVolume(const LLUUID& id, F32 volume)
707{ 715{
708 // store new value in volume settings file 716 // store new value in volume settings file
709 sUserVolumeSettings[id] = volume; 717 mUserVolumeSettings[id] = volume;
710} 718}
711 719
712F32 LLMuteList::getSavedResidentVolume(const LLUUID& id) 720F32 LLMuteList::getSavedResidentVolume(const LLUUID& id)
713{ 721{
714 const F32 DEFAULT_VOLUME = 0.5f; 722 const F32 DEFAULT_VOLUME = 0.5f;
715 723
716 user_volume_map_t::iterator found_it = sUserVolumeSettings.find(id); 724 user_volume_map_t::iterator found_it = mUserVolumeSettings.find(id);
717 if (found_it != sUserVolumeSettings.end()) 725 if (found_it != mUserVolumeSettings.end())
718 { 726 {
719 return found_it->second; 727 return found_it->second;
720 } 728 }
diff --git a/linden/indra/newview/llmutelist.h b/linden/indra/newview/llmutelist.h
index 0a8c6aa..fa38cde 100644
--- a/linden/indra/newview/llmutelist.h
+++ b/linden/indra/newview/llmutelist.h
@@ -131,6 +131,8 @@ public:
131 F32 getSavedResidentVolume(const LLUUID& id); 131 F32 getSavedResidentVolume(const LLUUID& id);
132 132
133private: 133private:
134 void loadUserVolumes();
135
134 BOOL loadFromFile(const LLString& filename); 136 BOOL loadFromFile(const LLString& filename);
135 BOOL saveToFile(const LLString& filename); 137 BOOL saveToFile(const LLString& filename);
136 138
@@ -171,11 +173,12 @@ private:
171 observer_set_t mObservers; 173 observer_set_t mObservers;
172 174
173 BOOL mIsLoaded; 175 BOOL mIsLoaded;
176 BOOL mUserVolumesLoaded;
174 177
175 friend class LLDispatchEmptyMuteList; 178 friend class LLDispatchEmptyMuteList;
176 179
177 typedef std::map<LLUUID, F32> user_volume_map_t; 180 typedef std::map<LLUUID, F32> user_volume_map_t;
178 static user_volume_map_t sUserVolumeSettings; 181 user_volume_map_t mUserVolumeSettings;
179}; 182};
180 183
181class LLMuteListObserver 184class LLMuteListObserver
diff --git a/linden/indra/newview/llpreviewanim.cpp b/linden/indra/newview/llpreviewanim.cpp
index c7b1dc7..9c7fb4a 100644
--- a/linden/indra/newview/llpreviewanim.cpp
+++ b/linden/indra/newview/llpreviewanim.cpp
@@ -194,6 +194,7 @@ void LLPreviewAnim::onClose(bool app_quitting)
194 194
195 if (motion) 195 if (motion)
196 { 196 {
197 // *TODO: minor memory leak here, user data is never deleted (Use real callbacks)
197 motion->setDeactivateCallback(NULL, (void *)NULL); 198 motion->setDeactivateCallback(NULL, (void *)NULL);
198 } 199 }
199 } 200 }
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp
index 1aad3e2..75e1fcc 100644
--- a/linden/indra/newview/llselectmgr.cpp
+++ b/linden/indra/newview/llselectmgr.cpp
@@ -4827,18 +4827,9 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
4827 4827
4828 for (S32 pass = 0; pass < 2; pass++) 4828 for (S32 pass = 0; pass < 2; pass++)
4829 { 4829 {
4830 LLObjectSelection::iterator end_ = mSelectedObjects->end();
4831 S32 num_nodes = mSelectedObjects->getNumNodes() ;
4832 LLObjectSelection::iterator prev_iter = mSelectedObjects->end();
4833 for (LLObjectSelection::iterator iter = mSelectedObjects->begin(); 4830 for (LLObjectSelection::iterator iter = mSelectedObjects->begin();
4834 iter != mSelectedObjects->end(); iter++) 4831 iter != mSelectedObjects->end(); iter++)
4835 { 4832 {
4836 llassert_always(end_ == mSelectedObjects->end()) ;//mSelectedObjects should not grow
4837 llassert_always(prev_iter != iter) ; //iter should move
4838 llassert_always(num_nodes > 0) ; //iter should not circle inside mSelectedObjects.
4839 num_nodes-- ;
4840 prev_iter = iter ;
4841
4842 LLSelectNode* node = *iter; 4833 LLSelectNode* node = *iter;
4843 LLViewerObject* objectp = node->getObject(); 4834 LLViewerObject* objectp = node->getObject();
4844 if (!objectp) 4835 if (!objectp)
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 5a5aa8d..1eb0654 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -2201,6 +2201,18 @@ BOOL idle_startup()
2201 { 2201 {
2202 do_normal_idle = TRUE; 2202 do_normal_idle = TRUE;
2203 2203
2204 // Avoid generic Ruth avatar in Orientation Island by starting
2205 // our outfit load as soon as possible. This will be replaced
2206 // with a more definitive patch from featurettes-4 later. JC
2207 if (gAgent.isFirstLogin()
2208 && !gInitialOutfit.empty() // registration set up an outfit
2209 && gAgent.getAvatarObject() // can't wear clothes until have obj
2210 && !gAgent.isGenderChosen() ) // nothing already loaded
2211 {
2212 llinfos << "Wearing initial outfit " << gInitialOutfit << llendl;
2213 callback_choose_gender(-1, NULL);
2214 }
2215
2204 F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY; 2216 F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY;
2205 // wait precache-delay and for agent's avatar or a lot longer. 2217 // wait precache-delay and for agent's avatar or a lot longer.
2206 if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) 2218 if(((timeout_frac > 1.f) && gAgent.getAvatarObject())
@@ -2211,7 +2223,7 @@ BOOL idle_startup()
2211 else 2223 else
2212 { 2224 {
2213 update_texture_fetch(); 2225 update_texture_fetch();
2214 set_startup_status(0.60f + 0.40f * timeout_frac, 2226 set_startup_status(0.60f + 0.20f * timeout_frac,
2215 "Loading world...", 2227 "Loading world...",
2216 gAgent.mMOTD.c_str()); 2228 gAgent.mMOTD.c_str());
2217 } 2229 }
@@ -2241,7 +2253,7 @@ BOOL idle_startup()
2241 else 2253 else
2242 { 2254 {
2243 update_texture_fetch(); 2255 update_texture_fetch();
2244 set_startup_status(0.f + 0.25f * wearables_time / MAX_WEARABLES_TIME, 2256 set_startup_status(0.80f + 0.20f * wearables_time / MAX_WEARABLES_TIME,
2245 LLTrans::getString("LoginDownloadingClothing").c_str(), 2257 LLTrans::getString("LoginDownloadingClothing").c_str(),
2246 gAgent.mMOTD.c_str()); 2258 gAgent.mMOTD.c_str());
2247 } 2259 }
diff --git a/linden/indra/newview/lltexlayer.h b/linden/indra/newview/lltexlayer.h
index 8306071..17cfb7c 100644
--- a/linden/indra/newview/lltexlayer.h
+++ b/linden/indra/newview/lltexlayer.h
@@ -40,7 +40,6 @@
40#include "lluuid.h" 40#include "lluuid.h"
41#include "llviewerimage.h" 41#include "llviewerimage.h"
42#include "llviewervisualparam.h" 42#include "llviewervisualparam.h"
43#include "llvoavatar.h"
44#include "llwearable.h" 43#include "llwearable.h"
45#include "v4color.h" 44#include "v4color.h"
46#include "llfloater.h" 45#include "llfloater.h"
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 384de83..142e862 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -47,6 +47,7 @@
47#include "llvfs.h" 47#include "llvfs.h"
48#include "llvfile.h" 48#include "llvfile.h"
49#include "llvfsthread.h" 49#include "llvfsthread.h"
50#include "llxmltree.h"
50#include "message.h" 51#include "message.h"
51 52
52#include "llagent.h" 53#include "llagent.h"
@@ -534,7 +535,7 @@ void LLViewerImageList::updateImagesDecodePriorities()
534 const size_t max_update_count = llmin((S32) (1024*gFrameIntervalSeconds) + 1, 32); //target 1024 textures per second 535 const size_t max_update_count = llmin((S32) (1024*gFrameIntervalSeconds) + 1, 32); //target 1024 textures per second
535 S32 update_counter = llmin(max_update_count, mUUIDMap.size()/10); 536 S32 update_counter = llmin(max_update_count, mUUIDMap.size()/10);
536 uuid_map_t::iterator iter = mUUIDMap.upper_bound(mLastUpdateUUID); 537 uuid_map_t::iterator iter = mUUIDMap.upper_bound(mLastUpdateUUID);
537 while(update_counter > 0) 538 while(update_counter > 0 && !mUUIDMap.empty())
538 { 539 {
539 if (iter == mUUIDMap.end()) 540 if (iter == mUUIDMap.end())
540 { 541 {
@@ -715,10 +716,6 @@ void LLViewerImageList::updateImagesUpdateStats()
715 iter != mImageList.end(); ) 716 iter != mImageList.end(); )
716 { 717 {
717 LLViewerImage* imagep = *iter++; 718 LLViewerImage* imagep = *iter++;
718
719 llassert_always(imagep) ;
720 llassert_always(imagep->getNumRefs() > 0 && imagep->getNumRefs() < 100000) ;
721
722 imagep->resetTextureStats(mForceResetTextureStats); 719 imagep->resetTextureStats(mForceResetTextureStats);
723 } 720 }
724 mUpdateStats = FALSE; 721 mUpdateStats = FALSE;
diff --git a/linden/indra/newview/llviewerjoint.cpp b/linden/indra/newview/llviewerjoint.cpp
index 1be6e66..914448e 100644
--- a/linden/indra/newview/llviewerjoint.cpp
+++ b/linden/indra/newview/llviewerjoint.cpp
@@ -118,123 +118,124 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
118 118
119//-------------------------------------------------------------------- 119//--------------------------------------------------------------------
120// renderSkeleton() 120// renderSkeleton()
121// DEBUG (UNUSED)
121//-------------------------------------------------------------------- 122//--------------------------------------------------------------------
122void LLViewerJoint::renderSkeleton(BOOL recursive) 123// void LLViewerJoint::renderSkeleton(BOOL recursive)
123{ 124// {
124 F32 nc = 0.57735f; 125// F32 nc = 0.57735f;
125 126
126 //---------------------------------------------------------------- 127// //----------------------------------------------------------------
127 // push matrix stack 128// // push matrix stack
128 //---------------------------------------------------------------- 129// //----------------------------------------------------------------
129 glPushMatrix(); 130// glPushMatrix();
130 131
131 //---------------------------------------------------------------- 132// //----------------------------------------------------------------
132 // render the bone to my parent 133// // render the bone to my parent
133 //---------------------------------------------------------------- 134// //----------------------------------------------------------------
134 if (mComponents & SC_BONE) 135// if (mComponents & SC_BONE)
135 { 136// {
136 drawBone(); 137// drawBone();
137 } 138// }
138 139
139 //---------------------------------------------------------------- 140// //----------------------------------------------------------------
140 // offset to joint position and 141// // offset to joint position and
141 // rotate to our orientation 142// // rotate to our orientation
142 //---------------------------------------------------------------- 143// //----------------------------------------------------------------
143 glLoadIdentity(); 144// glLoadIdentity();
144 glMultMatrixf( &getWorldMatrix().mMatrix[0][0] ); 145// glMultMatrixf( &getWorldMatrix().mMatrix[0][0] );
145 146
146 //---------------------------------------------------------------- 147// //----------------------------------------------------------------
147 // render joint axes 148// // render joint axes
148 //---------------------------------------------------------------- 149// //----------------------------------------------------------------
149 if (mComponents & SC_AXES) 150// if (mComponents & SC_AXES)
150 { 151// {
151 gGL.begin(LLVertexBuffer::LINES); 152// gGL.begin(LLVertexBuffer::LINES);
152 gGL.color3f( 1.0f, 0.0f, 0.0f ); 153// gGL.color3f( 1.0f, 0.0f, 0.0f );
153 gGL.vertex3f( 0.0f, 0.0f, 0.0f ); 154// gGL.vertex3f( 0.0f, 0.0f, 0.0f );
154 gGL.vertex3f( 0.1f, 0.0f, 0.0f ); 155// gGL.vertex3f( 0.1f, 0.0f, 0.0f );
155 156
156 gGL.color3f( 0.0f, 1.0f, 0.0f ); 157// gGL.color3f( 0.0f, 1.0f, 0.0f );
157 gGL.vertex3f( 0.0f, 0.0f, 0.0f ); 158// gGL.vertex3f( 0.0f, 0.0f, 0.0f );
158 gGL.vertex3f( 0.0f, 0.1f, 0.0f ); 159// gGL.vertex3f( 0.0f, 0.1f, 0.0f );
159 160
160 gGL.color3f( 0.0f, 0.0f, 1.0f ); 161// gGL.color3f( 0.0f, 0.0f, 1.0f );
161 gGL.vertex3f( 0.0f, 0.0f, 0.0f ); 162// gGL.vertex3f( 0.0f, 0.0f, 0.0f );
162 gGL.vertex3f( 0.0f, 0.0f, 0.1f ); 163// gGL.vertex3f( 0.0f, 0.0f, 0.1f );
163 gGL.end(); 164// gGL.end();
164 } 165// }
165 166
166 //---------------------------------------------------------------- 167// //----------------------------------------------------------------
167 // render the joint graphic 168// // render the joint graphic
168 //---------------------------------------------------------------- 169// //----------------------------------------------------------------
169 if (mComponents & SC_JOINT) 170// if (mComponents & SC_JOINT)
170 { 171// {
171 gGL.color3f( 1.0f, 1.0f, 0.0f ); 172// gGL.color3f( 1.0f, 1.0f, 0.0f );
172 173
173 gGL.begin(LLVertexBuffer::TRIANGLES); 174// gGL.begin(LLVertexBuffer::TRIANGLES);
174 175
175 // joint top half 176// // joint top half
176 glNormal3f(nc, nc, nc); 177// glNormal3f(nc, nc, nc);
177 gGL.vertex3f(0.0f, 0.0f, 0.05f); 178// gGL.vertex3f(0.0f, 0.0f, 0.05f);
178 gGL.vertex3f(0.05f, 0.0f, 0.0f); 179// gGL.vertex3f(0.05f, 0.0f, 0.0f);
179 gGL.vertex3f(0.0f, 0.05f, 0.0f); 180// gGL.vertex3f(0.0f, 0.05f, 0.0f);
180 181
181 glNormal3f(-nc, nc, nc); 182// glNormal3f(-nc, nc, nc);
182 gGL.vertex3f(0.0f, 0.0f, 0.05f); 183// gGL.vertex3f(0.0f, 0.0f, 0.05f);
183 gGL.vertex3f(0.0f, 0.05f, 0.0f); 184// gGL.vertex3f(0.0f, 0.05f, 0.0f);
184 gGL.vertex3f(-0.05f, 0.0f, 0.0f); 185// gGL.vertex3f(-0.05f, 0.0f, 0.0f);
185 186
186 glNormal3f(-nc, -nc, nc); 187// glNormal3f(-nc, -nc, nc);
187 gGL.vertex3f(0.0f, 0.0f, 0.05f); 188// gGL.vertex3f(0.0f, 0.0f, 0.05f);
188 gGL.vertex3f(-0.05f, 0.0f, 0.0f); 189// gGL.vertex3f(-0.05f, 0.0f, 0.0f);
189 gGL.vertex3f(0.0f, -0.05f, 0.0f); 190// gGL.vertex3f(0.0f, -0.05f, 0.0f);
190 191
191 glNormal3f(nc, -nc, nc); 192// glNormal3f(nc, -nc, nc);
192 gGL.vertex3f(0.0f, 0.0f, 0.05f); 193// gGL.vertex3f(0.0f, 0.0f, 0.05f);
193 gGL.vertex3f(0.0f, -0.05f, 0.0f); 194// gGL.vertex3f(0.0f, -0.05f, 0.0f);
194 gGL.vertex3f(0.05f, 0.0f, 0.0f); 195// gGL.vertex3f(0.05f, 0.0f, 0.0f);
195 196
196 // joint bottom half 197// // joint bottom half
197 glNormal3f(nc, nc, -nc); 198// glNormal3f(nc, nc, -nc);
198 gGL.vertex3f(0.0f, 0.0f, -0.05f); 199// gGL.vertex3f(0.0f, 0.0f, -0.05f);
199 gGL.vertex3f(0.0f, 0.05f, 0.0f); 200// gGL.vertex3f(0.0f, 0.05f, 0.0f);
200 gGL.vertex3f(0.05f, 0.0f, 0.0f); 201// gGL.vertex3f(0.05f, 0.0f, 0.0f);
201 202
202 glNormal3f(-nc, nc, -nc); 203// glNormal3f(-nc, nc, -nc);
203 gGL.vertex3f(0.0f, 0.0f, -0.05f); 204// gGL.vertex3f(0.0f, 0.0f, -0.05f);
204 gGL.vertex3f(-0.05f, 0.0f, 0.0f); 205// gGL.vertex3f(-0.05f, 0.0f, 0.0f);
205 gGL.vertex3f(0.0f, 0.05f, 0.0f); 206// gGL.vertex3f(0.0f, 0.05f, 0.0f);
206 207
207 glNormal3f(-nc, -nc, -nc); 208// glNormal3f(-nc, -nc, -nc);
208 gGL.vertex3f(0.0f, 0.0f, -0.05f); 209// gGL.vertex3f(0.0f, 0.0f, -0.05f);
209 gGL.vertex3f(0.0f, -0.05f, 0.0f); 210// gGL.vertex3f(0.0f, -0.05f, 0.0f);
210 gGL.vertex3f(-0.05f, 0.0f, 0.0f); 211// gGL.vertex3f(-0.05f, 0.0f, 0.0f);
211 212
212 glNormal3f(nc, -nc, -nc); 213// glNormal3f(nc, -nc, -nc);
213 gGL.vertex3f(0.0f, 0.0f, -0.05f); 214// gGL.vertex3f(0.0f, 0.0f, -0.05f);
214 gGL.vertex3f(0.05f, 0.0f, 0.0f); 215// gGL.vertex3f(0.05f, 0.0f, 0.0f);
215 gGL.vertex3f(0.0f, -0.05f, 0.0f); 216// gGL.vertex3f(0.0f, -0.05f, 0.0f);
216 217
217 gGL.end(); 218// gGL.end();
218 } 219// }
219 220
220 //---------------------------------------------------------------- 221// //----------------------------------------------------------------
221 // render children 222// // render children
222 //---------------------------------------------------------------- 223// //----------------------------------------------------------------
223 if (recursive) 224// if (recursive)
224 { 225// {
225 for (child_list_t::iterator iter = mChildren.begin(); 226// for (child_list_t::iterator iter = mChildren.begin();
226 iter != mChildren.end(); ++iter) 227// iter != mChildren.end(); ++iter)
227 { 228// {
228 LLViewerJoint* joint = (LLViewerJoint*)(*iter); 229// LLViewerJoint* joint = (LLViewerJoint*)(*iter);
229 joint->renderSkeleton(); 230// joint->renderSkeleton();
230 } 231// }
231 } 232// }
232 233
233 //---------------------------------------------------------------- 234// //----------------------------------------------------------------
234 // pop matrix stack 235// // pop matrix stack
235 //---------------------------------------------------------------- 236// //----------------------------------------------------------------
236 glPopMatrix(); 237// glPopMatrix();
237} 238// }
238 239
239 240
240//-------------------------------------------------------------------- 241//--------------------------------------------------------------------
@@ -330,59 +331,60 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass )
330 331
331//-------------------------------------------------------------------- 332//--------------------------------------------------------------------
332// drawBone() 333// drawBone()
334// DEBUG (UNUSED)
333//-------------------------------------------------------------------- 335//--------------------------------------------------------------------
334void LLViewerJoint::drawBone() 336// void LLViewerJoint::drawBone()
335{ 337// {
336 if ( mParent == NULL ) 338// if ( mParent == NULL )
337 return; 339// return;
338 340
339 F32 boneSize = 0.02f; 341// F32 boneSize = 0.02f;
340 342
341 // rotate to point to child (bone direction) 343// // rotate to point to child (bone direction)
342 glPushMatrix(); 344// glPushMatrix();
343 345
344 LLVector3 boneX = getPosition(); 346// LLVector3 boneX = getPosition();
345 F32 length = boneX.normVec(); 347// F32 length = boneX.normVec();
346 348
347 LLVector3 boneZ(1.0f, 0.0f, 1.0f); 349// LLVector3 boneZ(1.0f, 0.0f, 1.0f);
348 350
349 LLVector3 boneY = boneZ % boneX; 351// LLVector3 boneY = boneZ % boneX;
350 boneY.normVec(); 352// boneY.normVec();
351 353
352 boneZ = boneX % boneY; 354// boneZ = boneX % boneY;
353 355
354 LLMatrix4 rotateMat; 356// LLMatrix4 rotateMat;
355 rotateMat.setFwdRow( boneX ); 357// rotateMat.setFwdRow( boneX );
356 rotateMat.setLeftRow( boneY ); 358// rotateMat.setLeftRow( boneY );
357 rotateMat.setUpRow( boneZ ); 359// rotateMat.setUpRow( boneZ );
358 glMultMatrixf( &rotateMat.mMatrix[0][0] ); 360// glMultMatrixf( &rotateMat.mMatrix[0][0] );
359 361
360 // render the bone 362// // render the bone
361 gGL.color3f( 0.5f, 0.5f, 0.0f ); 363// gGL.color3f( 0.5f, 0.5f, 0.0f );
362 364
363 gGL.begin(LLVertexBuffer::TRIANGLES); 365// gGL.begin(LLVertexBuffer::TRIANGLES);
364 366
365 gGL.vertex3f( length, 0.0f, 0.0f); 367// gGL.vertex3f( length, 0.0f, 0.0f);
366 gGL.vertex3f( 0.0f, boneSize, 0.0f); 368// gGL.vertex3f( 0.0f, boneSize, 0.0f);
367 gGL.vertex3f( 0.0f, 0.0f, boneSize); 369// gGL.vertex3f( 0.0f, 0.0f, boneSize);
368 370
369 gGL.vertex3f( length, 0.0f, 0.0f); 371// gGL.vertex3f( length, 0.0f, 0.0f);
370 gGL.vertex3f( 0.0f, 0.0f, -boneSize); 372// gGL.vertex3f( 0.0f, 0.0f, -boneSize);
371 gGL.vertex3f( 0.0f, boneSize, 0.0f); 373// gGL.vertex3f( 0.0f, boneSize, 0.0f);
372 374
373 gGL.vertex3f( length, 0.0f, 0.0f); 375// gGL.vertex3f( length, 0.0f, 0.0f);
374 gGL.vertex3f( 0.0f, -boneSize, 0.0f); 376// gGL.vertex3f( 0.0f, -boneSize, 0.0f);
375 gGL.vertex3f( 0.0f, 0.0f, -boneSize); 377// gGL.vertex3f( 0.0f, 0.0f, -boneSize);
376 378
377 gGL.vertex3f( length, 0.0f, 0.0f); 379// gGL.vertex3f( length, 0.0f, 0.0f);
378 gGL.vertex3f( 0.0f, 0.0f, boneSize); 380// gGL.vertex3f( 0.0f, 0.0f, boneSize);
379 gGL.vertex3f( 0.0f, -boneSize, 0.0f); 381// gGL.vertex3f( 0.0f, -boneSize, 0.0f);
380 382
381 gGL.end(); 383// gGL.end();
382 384
383 // restore matrix 385// // restore matrix
384 glPopMatrix(); 386// glPopMatrix();
385} 387// }
386 388
387//-------------------------------------------------------------------- 389//--------------------------------------------------------------------
388// isTransparent() 390// isTransparent()
@@ -437,13 +439,13 @@ void LLViewerJoint::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind)
437 } 439 }
438} 440}
439 441
440void LLViewerJoint::updateGeometry() 442void LLViewerJoint::updateJointGeometry()
441{ 443{
442 for (child_list_t::iterator iter = mChildren.begin(); 444 for (child_list_t::iterator iter = mChildren.begin();
443 iter != mChildren.end(); ++iter) 445 iter != mChildren.end(); ++iter)
444 { 446 {
445 LLViewerJoint* joint = (LLViewerJoint*)(*iter); 447 LLViewerJoint* joint = (LLViewerJoint*)(*iter);
446 joint->updateGeometry(); 448 joint->updateJointGeometry();
447 } 449 }
448} 450}
449 451
diff --git a/linden/indra/newview/llviewerjoint.h b/linden/indra/newview/llviewerjoint.h
index d223c42..f73e705 100644
--- a/linden/indra/newview/llviewerjoint.h
+++ b/linden/indra/newview/llviewerjoint.h
@@ -60,7 +60,12 @@ public:
60 // Primarily for debugging and character setup 60 // Primarily for debugging and character setup
61 // Derived classes may add text/graphic output. 61 // Derived classes may add text/graphic output.
62 // Draw skeleton graphic for debugging and character setup 62 // Draw skeleton graphic for debugging and character setup
63 virtual void renderSkeleton(BOOL recursive=TRUE); 63 void renderSkeleton(BOOL recursive=TRUE); // debug only (unused)
64
65 // Draws a bone graphic to the parent joint.
66 // Derived classes may add text/graphic output.
67 // Called by renderSkeleton().
68 void drawBone(); // debug only (unused)
64 69
65 // Render character hierarchy. 70 // Render character hierarchy.
66 // Traverses the entire joint hierarchy, setting up 71 // Traverses the entire joint hierarchy, setting up
@@ -68,11 +73,6 @@ public:
68 // Derived classes may add text/graphic output. 73 // Derived classes may add text/graphic output.
69 virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE ); // Returns triangle count 74 virtual U32 render( F32 pixelArea, BOOL first_pass = TRUE ); // Returns triangle count
70 75
71 // Draws a bone graphic to the parent joint.
72 // Derived classes may add text/graphic output.
73 // Called by renderSkeleton().
74 virtual void drawBone();
75
76 // Returns true if this object is transparent. 76 // Returns true if this object is transparent.
77 // This is used to determine in which order to draw objects. 77 // This is used to determine in which order to draw objects.
78 virtual BOOL isTransparent(); 78 virtual BOOL isTransparent();
@@ -127,7 +127,7 @@ public:
127 virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area); 127 virtual void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
128 virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE); 128 virtual void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE);
129 virtual BOOL updateLOD(F32 pixel_area, BOOL activate); 129 virtual BOOL updateLOD(F32 pixel_area, BOOL activate);
130 virtual void updateGeometry(); 130 virtual void updateJointGeometry();
131 virtual void dump(); 131 virtual void dump();
132 132
133 void setVisible( BOOL visible, BOOL recursive ); 133 void setVisible( BOOL visible, BOOL recursive );
diff --git a/linden/indra/newview/llviewerjointattachment.cpp b/linden/indra/newview/llviewerjointattachment.cpp
index f5a5d8a..1cdd10f 100644
--- a/linden/indra/newview/llviewerjointattachment.cpp
+++ b/linden/indra/newview/llviewerjointattachment.cpp
@@ -56,7 +56,6 @@ extern LLPipeline gPipeline;
56// LLViewerJointAttachment() 56// LLViewerJointAttachment()
57//----------------------------------------------------------------------------- 57//-----------------------------------------------------------------------------
58LLViewerJointAttachment::LLViewerJointAttachment() : 58LLViewerJointAttachment::LLViewerJointAttachment() :
59mJoint(NULL),
60mAttachedObject(NULL), 59mAttachedObject(NULL),
61mVisibleInFirst(FALSE), 60mVisibleInFirst(FALSE),
62mGroup(0), 61mGroup(0),
diff --git a/linden/indra/newview/llviewerjointattachment.h b/linden/indra/newview/llviewerjointattachment.h
index 63484c7..8e665aa 100644
--- a/linden/indra/newview/llviewerjointattachment.h
+++ b/linden/indra/newview/llviewerjointattachment.h
@@ -68,7 +68,6 @@ public:
68 // accessors 68 // accessors
69 // 69 //
70 70
71 void setJoint (LLJoint* joint) { mJoint = joint; }
72 void setPieSlice(S32 pie_slice) { mPieSlice = pie_slice; } 71 void setPieSlice(S32 pie_slice) { mPieSlice = pie_slice; }
73 void setVisibleInFirstPerson(BOOL visibility) { mVisibleInFirst = visibility; } 72 void setVisibleInFirstPerson(BOOL visibility) { mVisibleInFirst = visibility; }
74 BOOL getVisibleInFirstPerson() { return mVisibleInFirst; } 73 BOOL getVisibleInFirstPerson() { return mVisibleInFirst; }
@@ -99,7 +98,6 @@ protected:
99 void calcLOD(); 98 void calcLOD();
100 99
101protected: 100protected:
102 LLJoint* mJoint;
103 // Backlink only; don't make this an LLPointer. 101 // Backlink only; don't make this an LLPointer.
104 LLViewerObject* mAttachedObject; 102 LLViewerObject* mAttachedObject;
105 BOOL mVisibleInFirst; 103 BOOL mVisibleInFirst;
diff --git a/linden/indra/newview/llviewerjointmesh.cpp b/linden/indra/newview/llviewerjointmesh.cpp
index 0dcf4ab..9ffeee4 100644
--- a/linden/indra/newview/llviewerjointmesh.cpp
+++ b/linden/indra/newview/llviewerjointmesh.cpp
@@ -873,7 +873,7 @@ void LLViewerJointMesh::updateVectorize()
873 } 873 }
874} 874}
875 875
876void LLViewerJointMesh::updateGeometry() 876void LLViewerJointMesh::updateJointGeometry()
877{ 877{
878 if (!(mValid 878 if (!(mValid
879 && mMesh 879 && mMesh
diff --git a/linden/indra/newview/llviewerjointmesh.h b/linden/indra/newview/llviewerjointmesh.h
index 85f8e97..fd7f550 100644
--- a/linden/indra/newview/llviewerjointmesh.h
+++ b/linden/indra/newview/llviewerjointmesh.h
@@ -142,7 +142,7 @@ public:
142 /*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area); 142 /*virtual*/ void updateFaceSizes(U32 &num_vertices, U32& num_indices, F32 pixel_area);
143 /*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE); 143 /*virtual*/ void updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_wind = FALSE);
144 /*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate); 144 /*virtual*/ BOOL updateLOD(F32 pixel_area, BOOL activate);
145 /*virtual*/ void updateGeometry(); 145 /*virtual*/ void updateJointGeometry();
146 /*virtual*/ void dump(); 146 /*virtual*/ void dump();
147 147
148 void setIsTransparent(BOOL is_transparent) { mIsTransparent = is_transparent; } 148 void setIsTransparent(BOOL is_transparent) { mIsTransparent = is_transparent; }
diff --git a/linden/indra/newview/llviewernetwork.cpp b/linden/indra/newview/llviewernetwork.cpp
index c1de774..42cbe46 100644
--- a/linden/indra/newview/llviewernetwork.cpp
+++ b/linden/indra/newview/llviewernetwork.cpp
@@ -120,13 +120,8 @@ static LLGridData gGridInfo[GRID_INFO_COUNT] =
120 "" } 120 "" }
121}; 121};
122 122
123#if LL_RELEASE_FOR_DOWNLOAD 123const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_AGNI;
124 // Default userserver for production builds is agni 124
125 const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_AGNI;
126#else
127 // Default userserver for development builds is none
128 const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_NONE;
129#endif
130 125
131unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */ 126unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */
132 127
@@ -142,7 +137,7 @@ void LLViewerLogin::setGridChoice(EGridInfo grid)
142 llerrs << "Invalid grid index specified." << llendl; 137 llerrs << "Invalid grid index specified." << llendl;
143 } 138 }
144 139
145 if(mGridChoice != grid) 140 if(mGridChoice != grid || gSavedSettings.getS32("ServerChoice") != grid)
146 { 141 {
147 mGridChoice = grid; 142 mGridChoice = grid;
148 if(GRID_INFO_LOCAL == mGridChoice) 143 if(GRID_INFO_LOCAL == mGridChoice)
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp
index 84475ab..bd8ed97 100644
--- a/linden/indra/newview/llviewerobjectlist.cpp
+++ b/linden/indra/newview/llviewerobjectlist.cpp
@@ -685,7 +685,6 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
685 idle_iter != idle_list.end(); idle_iter++) 685 idle_iter != idle_list.end(); idle_iter++)
686 { 686 {
687 objectp = *idle_iter; 687 objectp = *idle_iter;
688 llassert_always(objectp) ;
689 if (!objectp->idleUpdate(agent, world, frame_time)) 688 if (!objectp->idleUpdate(agent, world, frame_time))
690 { 689 {
691 // If Idle Update returns false, kill object! 690 // If Idle Update returns false, kill object!
diff --git a/linden/indra/newview/llviewerstats.cpp b/linden/indra/newview/llviewerstats.cpp
index 52b6748..fd56c21 100644
--- a/linden/indra/newview/llviewerstats.cpp
+++ b/linden/indra/newview/llviewerstats.cpp
@@ -52,6 +52,7 @@
52#include "lldebugview.h" 52#include "lldebugview.h"
53#include "llfasttimerview.h" 53#include "llfasttimerview.h"
54#include "llviewerregion.h" 54#include "llviewerregion.h"
55#include "llvoavatar.h"
55#include "llfloaterhtml.h" 56#include "llfloaterhtml.h"
56#include "llviewerwindow.h" // *TODO: remove, only used for width/height 57#include "llviewerwindow.h" // *TODO: remove, only used for width/height
57#include "llworld.h" 58#include "llworld.h"
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index d61fa59..c2fd92c 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -4522,7 +4522,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
4522 else 4522 else
4523 { 4523 {
4524 display(do_rebuild, scale_factor, subimage_x+(subimage_y*llceil(scale_factor)), use_fbo); 4524 display(do_rebuild, scale_factor, subimage_x+(subimage_y*llceil(scale_factor)), use_fbo);
4525 render_ui_and_swap();
4526 } 4525 }
4527 4526
4528 S32 subimage_x_offset = llclamp(buffer_x_offset - (subimage_x * window_width), 0, window_width); 4527 S32 subimage_x_offset = llclamp(buffer_x_offset - (subimage_x * window_width), 0, window_width);
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 6b5f066..b4357d8 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -888,52 +888,53 @@ LLVOAvatar::LLVOAvatar(
888 if (LLCharacter::sInstances.size() == 1) 888 if (LLCharacter::sInstances.size() == 1)
889 { 889 {
890 LLKeyframeMotion::setVFS(gStaticVFS); 890 LLKeyframeMotion::setVFS(gStaticVFS);
891 addMotion( ANIM_AGENT_BUSY, LLNullMotion::create ); 891 registerMotion( ANIM_AGENT_BUSY, LLNullMotion::create );
892 addMotion( ANIM_AGENT_CROUCH, LLKeyframeStandMotion::create ); 892 registerMotion( ANIM_AGENT_CROUCH, LLKeyframeStandMotion::create );
893 addMotion( ANIM_AGENT_CROUCHWALK, LLKeyframeWalkMotion::create ); 893 registerMotion( ANIM_AGENT_CROUCHWALK, LLKeyframeWalkMotion::create );
894 addMotion( ANIM_AGENT_EXPRESS_AFRAID, LLEmote::create ); 894 registerMotion( ANIM_AGENT_EXPRESS_AFRAID, LLEmote::create );
895 addMotion( ANIM_AGENT_EXPRESS_ANGER, LLEmote::create ); 895 registerMotion( ANIM_AGENT_EXPRESS_ANGER, LLEmote::create );
896 addMotion( ANIM_AGENT_EXPRESS_BORED, LLEmote::create ); 896 registerMotion( ANIM_AGENT_EXPRESS_BORED, LLEmote::create );
897 addMotion( ANIM_AGENT_EXPRESS_CRY, LLEmote::create ); 897 registerMotion( ANIM_AGENT_EXPRESS_CRY, LLEmote::create );
898 addMotion( ANIM_AGENT_EXPRESS_DISDAIN, LLEmote::create ); 898 registerMotion( ANIM_AGENT_EXPRESS_DISDAIN, LLEmote::create );
899 addMotion( ANIM_AGENT_EXPRESS_EMBARRASSED, LLEmote::create ); 899 registerMotion( ANIM_AGENT_EXPRESS_EMBARRASSED, LLEmote::create );
900 addMotion( ANIM_AGENT_EXPRESS_FROWN, LLEmote::create ); 900 registerMotion( ANIM_AGENT_EXPRESS_FROWN, LLEmote::create );
901 addMotion( ANIM_AGENT_EXPRESS_KISS, LLEmote::create ); 901 registerMotion( ANIM_AGENT_EXPRESS_KISS, LLEmote::create );
902 addMotion( ANIM_AGENT_EXPRESS_LAUGH, LLEmote::create ); 902 registerMotion( ANIM_AGENT_EXPRESS_LAUGH, LLEmote::create );
903 addMotion( ANIM_AGENT_EXPRESS_OPEN_MOUTH, LLEmote::create ); 903 registerMotion( ANIM_AGENT_EXPRESS_OPEN_MOUTH, LLEmote::create );
904 addMotion( ANIM_AGENT_EXPRESS_REPULSED, LLEmote::create ); 904 registerMotion( ANIM_AGENT_EXPRESS_REPULSED, LLEmote::create );
905 addMotion( ANIM_AGENT_EXPRESS_SAD, LLEmote::create ); 905 registerMotion( ANIM_AGENT_EXPRESS_SAD, LLEmote::create );
906 addMotion( ANIM_AGENT_EXPRESS_SHRUG, LLEmote::create ); 906 registerMotion( ANIM_AGENT_EXPRESS_SHRUG, LLEmote::create );
907 addMotion( ANIM_AGENT_EXPRESS_SMILE, LLEmote::create ); 907 registerMotion( ANIM_AGENT_EXPRESS_SMILE, LLEmote::create );
908 addMotion( ANIM_AGENT_EXPRESS_SURPRISE, LLEmote::create ); 908 registerMotion( ANIM_AGENT_EXPRESS_SURPRISE, LLEmote::create );
909 addMotion( ANIM_AGENT_EXPRESS_TONGUE_OUT, LLEmote::create ); 909 registerMotion( ANIM_AGENT_EXPRESS_TONGUE_OUT, LLEmote::create );
910 addMotion( ANIM_AGENT_EXPRESS_TOOTHSMILE, LLEmote::create ); 910 registerMotion( ANIM_AGENT_EXPRESS_TOOTHSMILE, LLEmote::create );
911 addMotion( ANIM_AGENT_EXPRESS_WINK, LLEmote::create ); 911 registerMotion( ANIM_AGENT_EXPRESS_WINK, LLEmote::create );
912 addMotion( ANIM_AGENT_EXPRESS_WORRY, LLEmote::create ); 912 registerMotion( ANIM_AGENT_EXPRESS_WORRY, LLEmote::create );
913 addMotion( ANIM_AGENT_RUN, LLKeyframeWalkMotion::create ); 913 registerMotion( ANIM_AGENT_RUN, LLKeyframeWalkMotion::create );
914 addMotion( ANIM_AGENT_STAND, LLKeyframeStandMotion::create ); 914 registerMotion( ANIM_AGENT_STAND, LLKeyframeStandMotion::create );
915 addMotion( ANIM_AGENT_STAND_1, LLKeyframeStandMotion::create ); 915 registerMotion( ANIM_AGENT_STAND_1, LLKeyframeStandMotion::create );
916 addMotion( ANIM_AGENT_STAND_2, LLKeyframeStandMotion::create ); 916 registerMotion( ANIM_AGENT_STAND_2, LLKeyframeStandMotion::create );
917 addMotion( ANIM_AGENT_STAND_3, LLKeyframeStandMotion::create ); 917 registerMotion( ANIM_AGENT_STAND_3, LLKeyframeStandMotion::create );
918 addMotion( ANIM_AGENT_STAND_4, LLKeyframeStandMotion::create ); 918 registerMotion( ANIM_AGENT_STAND_4, LLKeyframeStandMotion::create );
919 addMotion( ANIM_AGENT_STANDUP, LLKeyframeFallMotion::create ); 919 registerMotion( ANIM_AGENT_STANDUP, LLKeyframeFallMotion::create );
920 addMotion( ANIM_AGENT_TURNLEFT, LLKeyframeWalkMotion::create ); 920 registerMotion( ANIM_AGENT_TURNLEFT, LLKeyframeWalkMotion::create );
921 addMotion( ANIM_AGENT_TURNRIGHT, LLKeyframeWalkMotion::create ); 921 registerMotion( ANIM_AGENT_TURNRIGHT, LLKeyframeWalkMotion::create );
922 addMotion( ANIM_AGENT_WALK, LLKeyframeWalkMotion::create ); 922 registerMotion( ANIM_AGENT_WALK, LLKeyframeWalkMotion::create );
923 923
924 // motions without a start/stop bit 924 // motions without a start/stop bit
925 addMotion( ANIM_AGENT_BODY_NOISE, LLBodyNoiseMotion::create ); 925 registerMotion( ANIM_AGENT_BODY_NOISE, LLBodyNoiseMotion::create );
926 addMotion( ANIM_AGENT_BREATHE_ROT, LLBreatheMotionRot::create ); 926 registerMotion( ANIM_AGENT_BREATHE_ROT, LLBreatheMotionRot::create );
927 addMotion( ANIM_AGENT_EDITING, LLEditingMotion::create ); 927 registerMotion( ANIM_AGENT_EDITING, LLEditingMotion::create );
928 addMotion( ANIM_AGENT_EYE, LLEyeMotion::create ); 928 registerMotion( ANIM_AGENT_EYE, LLEyeMotion::create );
929 addMotion( ANIM_AGENT_FEMALE_WALK, LLKeyframeWalkMotion::create ); 929 registerMotion( ANIM_AGENT_FEMALE_WALK, LLKeyframeWalkMotion::create );
930 addMotion( ANIM_AGENT_FLY_ADJUST, LLFlyAdjustMotion::create ); 930 registerMotion( ANIM_AGENT_FLY_ADJUST, LLFlyAdjustMotion::create );
931 addMotion( ANIM_AGENT_HAND_MOTION, LLHandMotion::create ); 931 registerMotion( ANIM_AGENT_HAND_MOTION, LLHandMotion::create );
932 addMotion( ANIM_AGENT_HEAD_ROT, LLHeadRotMotion::create ); 932 registerMotion( ANIM_AGENT_HEAD_ROT, LLHeadRotMotion::create );
933 addMotion( ANIM_AGENT_PELVIS_FIX, LLPelvisFixMotion::create ); 933 registerMotion( ANIM_AGENT_PELVIS_FIX, LLPelvisFixMotion::create );
934 addMotion( ANIM_AGENT_SIT_FEMALE, LLKeyframeMotion::create ); 934 registerMotion( ANIM_AGENT_SIT_FEMALE, LLKeyframeMotion::create );
935 addMotion( ANIM_AGENT_TARGET, LLTargetingMotion::create ); 935 registerMotion( ANIM_AGENT_TARGET, LLTargetingMotion::create );
936 addMotion( ANIM_AGENT_WALK_ADJUST, LLWalkAdjustMotion::create ); 936 registerMotion( ANIM_AGENT_WALK_ADJUST, LLWalkAdjustMotion::create );
937
937 } 938 }
938 939
939 if (gNoRender) 940 if (gNoRender)
@@ -3329,7 +3330,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
3329 // the rest should only be done occasionally for far away avatars 3330 // the rest should only be done occasionally for far away avatars
3330 //-------------------------------------------------------------------- 3331 //--------------------------------------------------------------------
3331 3332
3332 if (!mIsSelf && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter) 3333 if (!mIsSelf && !mIsDummy && sUseImpostors && !mNeedsAnimUpdate && !sFreezeCounter)
3333 { 3334 {
3334 F32 impostor_area = 256.f*512.f*(8.125f - LLVOAvatar::sLODFactor*8.f); 3335 F32 impostor_area = 256.f*512.f*(8.125f - LLVOAvatar::sLODFactor*8.f);
3335 if (LLMuteList::getInstance()->isMuted(getID())) 3336 if (LLMuteList::getInstance()->isMuted(getID()))
@@ -3350,22 +3351,13 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
3350 3351
3351 if (!visible) 3352 if (!visible)
3352 { 3353 {
3353 if (!mMotionController.isPaused()) 3354 updateMotions(LLCharacter::HIDDEN_UPDATE);
3354 {
3355 mMotionController.pause();
3356 mMotionController.updateMotion();
3357 mMotionController.unpause();
3358 }
3359 else
3360 {
3361 mMotionController.updateMotion();
3362 }
3363 return FALSE; 3355 return FALSE;
3364 } 3356 }
3365 } 3357 }
3366 3358
3367 // change animation time quanta based on avatar render load 3359 // change animation time quanta based on avatar render load
3368 if (!mIsSelf) 3360 if (!mIsSelf && !mIsDummy)
3369 { 3361 {
3370 F32 time_quantum = clamp_rescale((F32)sInstances.size(), 10.f, 35.f, 0.f, 0.25f); 3362 F32 time_quantum = clamp_rescale((F32)sInstances.size(), 10.f, 35.f, 0.f, 0.25f);
3371 F32 pixel_area_scale = clamp_rescale(mPixelArea, 100, 5000, 1.f, 0.f); 3363 F32 pixel_area_scale = clamp_rescale(mPixelArea, 100, 5000, 1.f, 0.f);
@@ -3639,10 +3631,10 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
3639 mSpeed = speed; 3631 mSpeed = speed;
3640 3632
3641 // update animations 3633 // update animations
3642 { 3634 if (mSpecialRenderMode == 1) // Animation Preview
3643 LLFastTimer t(LLFastTimer::FTM_UPDATE_ANIMATION); 3635 updateMotions(LLCharacter::FORCE_UPDATE);
3644 updateMotion(); 3636 else
3645 } 3637 updateMotions(LLCharacter::NORMAL_UPDATE);
3646 3638
3647 // update head position 3639 // update head position
3648 updateHeadOffset(); 3640 updateHeadOffset();
@@ -3818,9 +3810,6 @@ void LLVOAvatar::updateVisibility()
3818 } 3810 }
3819 else 3811 else
3820 { 3812 {
3821 // calculate avatar distance wrt head
3822 mDrawable->updateDistance(*LLViewerCamera::getInstance());
3823
3824 if (!mDrawable->getSpatialGroup() || mDrawable->getSpatialGroup()->isVisible()) 3813 if (!mDrawable->getSpatialGroup() || mDrawable->getSpatialGroup()->isVisible())
3825 { 3814 {
3826 visible = TRUE; 3815 visible = TRUE;
@@ -3837,8 +3826,7 @@ void LLVOAvatar::updateVisibility()
3837 visible = FALSE; 3826 visible = FALSE;
3838 } 3827 }
3839 } 3828 }
3840 else 3829 else if( !mFirstAppearanceMessageReceived )
3841 if( !mFirstAppearanceMessageReceived )
3842 { 3830 {
3843 visible = FALSE; 3831 visible = FALSE;
3844 } 3832 }
@@ -3984,19 +3972,19 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
3984 if (mNeedsSkin) 3972 if (mNeedsSkin)
3985 { 3973 {
3986 //generate animated mesh 3974 //generate animated mesh
3987 mLowerBodyLOD.updateGeometry(); 3975 mLowerBodyLOD.updateJointGeometry();
3988 mUpperBodyLOD.updateGeometry(); 3976 mUpperBodyLOD.updateJointGeometry();
3989 3977
3990 if( isWearingWearableType( WT_SKIRT ) ) 3978 if( isWearingWearableType( WT_SKIRT ) )
3991 { 3979 {
3992 mSkirtLOD.updateGeometry(); 3980 mSkirtLOD.updateJointGeometry();
3993 } 3981 }
3994 3982
3995 if (!mIsSelf || gAgent.needsRenderHead()) 3983 if (!mIsSelf || gAgent.needsRenderHead())
3996 { 3984 {
3997 mEyeLashLOD.updateGeometry(); 3985 mEyeLashLOD.updateJointGeometry();
3998 mHeadLOD.updateGeometry(); 3986 mHeadLOD.updateJointGeometry();
3999 mHairLOD.updateGeometry(); 3987 mHairLOD.updateJointGeometry();
4000 } 3988 }
4001 mNeedsSkin = FALSE; 3989 mNeedsSkin = FALSE;
4002 3990
@@ -5756,6 +5744,7 @@ void LLVOAvatar::setPixelAreaAndAngle(LLAgent &agent)
5756//----------------------------------------------------------------------------- 5744//-----------------------------------------------------------------------------
5757BOOL LLVOAvatar::updateJointLODs() 5745BOOL LLVOAvatar::updateJointLODs()
5758{ 5746{
5747 const F32 MAX_PIXEL_AREA = 100000000.f;
5759 F32 lod_factor = (sLODFactor * AVATAR_LOD_TWEAK_RANGE + (1.f - AVATAR_LOD_TWEAK_RANGE)); 5748 F32 lod_factor = (sLODFactor * AVATAR_LOD_TWEAK_RANGE + (1.f - AVATAR_LOD_TWEAK_RANGE));
5760 F32 avatar_num_min_factor = clamp_rescale(sLODFactor, 0.f, 1.f, 0.25f, 0.6f); 5749 F32 avatar_num_min_factor = clamp_rescale(sLODFactor, 0.f, 1.f, 0.25f, 0.6f);
5761 F32 avatar_num_factor = clamp_rescale((F32)sNumVisibleAvatars, 8, 25, 1.f, avatar_num_min_factor); 5750 F32 avatar_num_factor = clamp_rescale((F32)sNumVisibleAvatars, 8, 25, 1.f, avatar_num_min_factor);
@@ -5766,7 +5755,7 @@ BOOL LLVOAvatar::updateJointLODs()
5766 { 5755 {
5767 if(gAgent.cameraCustomizeAvatar() || gAgent.cameraMouselook()) 5756 if(gAgent.cameraCustomizeAvatar() || gAgent.cameraMouselook())
5768 { 5757 {
5769 mAdjustedPixelArea = 1000000; 5758 mAdjustedPixelArea = MAX_PIXEL_AREA;
5770 } 5759 }
5771 else 5760 else
5772 { 5761 {
@@ -5775,7 +5764,7 @@ BOOL LLVOAvatar::updateJointLODs()
5775 } 5764 }
5776 else if (mIsDummy) 5765 else if (mIsDummy)
5777 { 5766 {
5778 mAdjustedPixelArea = 1000000; 5767 mAdjustedPixelArea = MAX_PIXEL_AREA;
5779 } 5768 }
5780 else 5769 else
5781 { 5770 {
@@ -6729,7 +6718,7 @@ void LLVOAvatar::dumpTotalLocalTextureByteCount()
6729 6718
6730BOOL LLVOAvatar::isVisible() 6719BOOL LLVOAvatar::isVisible()
6731{ 6720{
6732 return mDrawable.notNull() && mDrawable->isVisible(); 6721 return mDrawable.notNull() && (mDrawable->isVisible() || mIsDummy);
6733} 6722}
6734 6723
6735 6724
@@ -9691,7 +9680,8 @@ BOOL LLVOAvatar::updateLOD()
9691 mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY); 9680 mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
9692 } 9681 }
9693 9682
9694 9683 updateVisibility();
9684
9695 return res; 9685 return res;
9696} 9686}
9697 9687
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index 1df8275..a1f5bd2 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -751,9 +751,9 @@ public:
751 //-------------------------------------------------------------------- 751 //--------------------------------------------------------------------
752 F32 mSpeed; 752 F32 mSpeed;
753 753
754 // 754 //--------------------------------------------------------------------
755 // Shadow stuff 755 // Shadow stuff
756 // 756 //--------------------------------------------------------------------
757 LLDrawable* mShadow; 757 LLDrawable* mShadow;
758 BOOL mInAir; 758 BOOL mInAir;
759 LLFrameTimer mTimeInAir; 759 LLFrameTimer mTimeInAir;
@@ -1009,7 +1009,7 @@ protected:
1009 S32 getLocalDiscardLevel( S32 index); 1009 S32 getLocalDiscardLevel( S32 index);
1010 1010
1011 void shame(); //generate shame metric 1011 void shame(); //generate shame metric
1012//Ventrella 1012
1013 //----------------------------------------------------------------------------------------------- 1013 //-----------------------------------------------------------------------------------------------
1014 // the Voice Visualizer is responsible for detecting the user's voice signal, and when the 1014 // the Voice Visualizer is responsible for detecting the user's voice signal, and when the
1015 // user speaks, it puts a voice symbol over the avatar's head, and triggering gesticulations 1015 // user speaks, it puts a voice symbol over the avatar's head, and triggering gesticulations
@@ -1017,7 +1017,6 @@ protected:
1017 private: 1017 private:
1018 LLVoiceVisualizer * mVoiceVisualizer; 1018 LLVoiceVisualizer * mVoiceVisualizer;
1019 int mCurrentGesticulationLevel; 1019 int mCurrentGesticulationLevel;
1020//End Ventrella
1021 1020
1022private: 1021private:
1023 static S32 sFreezeCounter ; 1022 static S32 sFreezeCounter ;
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index d1609a8..8d2c2ac 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -31,8 +31,6 @@
31#ifndef LL_VOICE_CLIENT_H 31#ifndef LL_VOICE_CLIENT_H
32#define LL_VOICE_CLIENT_H 32#define LL_VOICE_CLIENT_H
33 33
34// This would create a circular reference -- just do a forward definition of necessary class names.
35//#include "llvoavatar.h"
36class LLVOAvatar; 34class LLVOAvatar;
37class LLVivoxProtocolParser; 35class LLVivoxProtocolParser;
38 36
diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp
index 1d187cb..cfe5cb6 100644
--- a/linden/indra/newview/llwebbrowserctrl.cpp
+++ b/linden/indra/newview/llwebbrowserctrl.cpp
@@ -862,7 +862,7 @@ BOOL LLWebBrowserTexture::render()
862 mTexture->setSubImage( pixels, 862 mTexture->setSubImage( pixels,
863 media_data_width, media_data_height, 863 media_data_width, media_data_height,
864 0, 0, 864 0, 0,
865 width, height ); 865 llmin(width, media_data_width), llmin(media_data_height, height) );
866 }; 866 };
867 } 867 }
868 else 868 else
diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj
index c361fcf..81e0874 100644
--- a/linden/indra/newview/macview.xcodeproj/project.pbxproj
+++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj
@@ -5544,6 +5544,7 @@
5544 "-DLL_RELEASE_FOR_DOWNLOAD=1", 5544 "-DLL_RELEASE_FOR_DOWNLOAD=1",
5545 "-DNDEBUG", 5545 "-DNDEBUG",
5546 "-fconstant-cfstrings", 5546 "-fconstant-cfstrings",
5547 "-mlong-branch",
5547 ); 5548 );
5548 OTHER_CPLUSPLUSFLAGS = ( 5549 OTHER_CPLUSPLUSFLAGS = (
5549 "$(OTHER_CFLAGS)", 5550 "$(OTHER_CFLAGS)",
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 5088b16..cd546d4 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -1786,17 +1786,16 @@ void LLPipeline::stateSort(LLDrawable* drawablep, LLCamera& camera)
1786 LLSpatialGroup* group = drawablep->getSpatialGroup(); 1786 LLSpatialGroup* group = drawablep->getSpatialGroup();
1787 if (!group || group->changeLOD()) 1787 if (!group || group->changeLOD())
1788 { 1788 {
1789 if (!drawablep->isActive() && drawablep->isVisible()) 1789 if (drawablep->isVisible() && !sSkipUpdate)
1790 { 1790 {
1791 if (!sSkipUpdate) 1791 if (!drawablep->isActive())
1792 { 1792 {
1793 drawablep->updateDistance(camera); 1793 drawablep->updateDistance(camera);
1794 } 1794 }
1795 } 1795 else if (drawablep->isAvatar())
1796 else if (drawablep->isAvatar() && drawablep->isVisible()) 1796 {
1797 { 1797 drawablep->updateDistance(camera); // calls vobj->updateLOD() which calls LLVOAvatar::updateVisibility()
1798 LLVOAvatar* vobj = (LLVOAvatar*) drawablep->getVObj().get(); 1798 }
1799 vobj->updateVisibility();
1800 } 1799 }
1801 } 1800 }
1802 1801
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt
index f3fbcb1..5ec38fc 100644
--- a/linden/indra/newview/releasenotes.txt
+++ b/linden/indra/newview/releasenotes.txt
@@ -4,10 +4,37 @@
4| http://wiki.secondlife.com/wiki/Beta_Release_Notes | 4| http://wiki.secondlife.com/wiki/Beta_Release_Notes |
5+------------------------------------------------------+ 5+------------------------------------------------------+
6 6
7Release Notes for Second Life 1.20(11) June 17th, 2008
8=====================================
9
10Fixes:
11* Fixed: VWR-7730: Sound / UI Sound broken on Mac PPC RC 1.20.10
12* Fixed: VWR-7614: Snapshots show user interface when "Show Interface In Snapshot" is un-checked/ VWR-7679: Interface also shows in screen_last.bmp
13* Fixed: VWR-2633: Some groups can't be accessed from Communicate window and only show in profile / VWR-6889: Unable to leave group when role has no allowed abilities
14* Fixed: VWR-5895: slowly rotating llTargetOmega child prims stop rotating when you move away
15* Fixed: VWR-6828: Character > Show Look At / Show Point At don't work
16* Fixed: VWR-7682: Typo on Teleport Failure dialog
17* Fixed: VWR-7086: floater_buy_land.xml still contains messages regarding First Land
18* Fixed: VWR-5697: RC 1.19.1 crash on startup with Vista UAC enabled
19* Fixed: VWR-7723: crash on LLImageGL::setSubImage line 780
20* Fixed: crash on LLViewerImageList::removeImageFromList
21* Fixed: crash on LLViewerImageList::updateImagesUpdateStats
22* Fixed: crash when creating many default boxes
23* Fixed: changing to and from Fullscreen view using Alt+Enter shortcut causes viewer to crash/hang
24* Fixed: Load the initial avatar outfit earlier in the startup process to avoid Ruth effect at Orientation Island
25* Fixed: Add the new TRANSPARENT_TEXTURE constant's target texture to the inventory Library of 1.20
26* Fixed: Search > Places tab results are displayed in white text
27* Fixed: 1.20 viewer reports GeForce FX5200 card incorrectly
28* Fixed: Fix the URL used by crash_logger for pre login crashes.
29* Fixed: The viewer's crash logger needs to trim very long SecondLife.log files before sending.
30
31Localization Fixes:
32* Fixed: VWR-7731: Bad Japanese translation of "Select tool"
33
7Release Notes for Second Life 1.20(10) June 9th, 2008 34Release Notes for Second Life 1.20(10) June 9th, 2008
8===================================== 35=====================================
9 36
10Changes: 37New features:
11* Added five texture constants for referencing in llSetLinkTexture: 38* Added five texture constants for referencing in llSetLinkTexture:
12** TEXTURE_BLANK is the non-transparent blank texture, equivalent to UUID "5748decc-f629-461c-9a36-a35a221fe21f" 39** TEXTURE_BLANK is the non-transparent blank texture, equivalent to UUID "5748decc-f629-461c-9a36-a35a221fe21f"
13** TEXTURE_DEFAULT is the default plywood texture, equivalent to UUID "89556747-24cb-43ed-920b-47caed15465f" 40** TEXTURE_DEFAULT is the default plywood texture, equivalent to UUID "89556747-24cb-43ed-920b-47caed15465f"
@@ -23,28 +50,31 @@ Changes:
23 then you have to revert to the earlier LSL requirement to use the UUID of the texture you want to use. 50 then you have to revert to the earlier LSL requirement to use the UUID of the texture you want to use.
24*** The TEXTURE_TRANSPARENT texture will be gray unless you view it with a viewer that supports this transparent texture (1.20.10 or above). 51*** The TEXTURE_TRANSPARENT texture will be gray unless you view it with a viewer that supports this transparent texture (1.20.10 or above).
25 52
53Changes:
54* Watchdog is disabled in settings for final Release Candidates
55* VWR-7315: "TEXTURE_DEFAULT" is a bad constant name; (this now refers to Plywood texture)
56
26Fixes: 57Fixes:
27* Fixed: PowerPC Mac unexpectedly quits when SL runs 58* Fixed: VWR-7612: PowerPC Mac unexpectedly quits when SL runs
28* Fixed: VWR-7069: Can't login to v1.20 RC until the second try 59** also Possible Fix: VWR-7400 Mac PPC 1.20.8: Unable to connect
29* Fixed: Openssl hangs on first https request 60* Fixed: VWR-7069: Can't login to v1.20 RC until the second try (Openssl hangs on first https request)
30* Fixed: VWR-7261: pixellation static/rectangle seen nearby avatar imposters 61* Fixed: VWR-7261: pixellation static/rectangle seen nearby avatar imposters
31* Fixed: VWR-1715: Macintosh: cyclic short-term freezing of display, getting worse over time: does not respond to commands, eventually change of POV attempt crashes app 62* Fixed: VWR-1715: Macintosh: cyclic short-term freezing of display, getting worse over time: does not respond to commands, eventually change of POV attempt crashes app
32* Fixed: VWR-7338: New Texture Constant "TEXTURE_TRANSPARENT" is NOT transparent! 63* Fixed: VWR-7338: New Texture Constant "TEXTURE_TRANSPARENT" is NOT transparent!
33* Fixed: VWR-7315: "TEXTURE_DEFAULT" is a bad constant name 64* Fixed: crash on LLSpeakerMgr::findSpeaker
34* Fixed: Automatic linux font selection doesn't override legacy data in config file
35* Fixed: Viewer crash logger should trim very long SecondLife.log files before sending
36* Fixed: viewer sends no grid choice to the web server
37* Fixed: Fix the URL used by crash_logger for pre login crashes
38* Fixed: Any change to preferences "restores" the viewer window size
39* Fixed: Crash on LLSpeakerMgr::findSpeaker
40* Fixed: crash on LLAudioData - llaudio/audioengine.cpp 65* Fixed: crash on LLAudioData - llaudio/audioengine.cpp
41* Fixed: crash on LLGroupNotifyBox::moveToBack 66* Fixed: crash on LLGroupNotifyBox::moveToBack
42* Fixed: crash on LLPieMenu::show 67* Fixed: crash on LLPieMenu::show
43* Fixed: crash on LLFloaterWorldMap::buildLandmarkIDLists 68* Fixed: crash on LLFloaterWorldMap::buildLandmarkIDLists
44* Fixed: Setting Preferences > General > Crash Reports to Never Send crashes to desktop 69* Fixed: crash on LLDrawable::destroy
70* Fixed: Automatic linux font selection doesn't override legacy data in config file
71* Fixed: Any change to preferences "restores" the viewer window size
72* Fixed: viewer sends no grid choice to the web server
73* Fixed: Fix the URL used by crash_logger for pre login crashes
74* Fixed: Viewer crash logger should trim very long SecondLife.log files before sending
45 75
46Localization Fixes: 76Localization Fixes:
47Partial Fix: Repair truncated text in 1.20.9 localizations 77* Partial Fix: Repair truncated text in 1.20.9 localizations
48 78
49Release Notes for Second Life 1.20(9) June 3rd, 2008 79Release Notes for Second Life 1.20(9) June 3rd, 2008
50===================================== 80=====================================
diff --git a/linden/indra/newview/skins/xui/de/teleport_strings.xml b/linden/indra/newview/skins/xui/de/teleport_strings.xml
index 061f41d..6beba54 100644
--- a/linden/indra/newview/skins/xui/de/teleport_strings.xml
+++ b/linden/indra/newview/skins/xui/de/teleport_strings.xml
@@ -4,7 +4,7 @@
4 <message name="invalid_tport"> 4 <message name="invalid_tport">
5 Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen 5 Bei der Bearbeitung Ihrer Teleport-Anfrage ist ein Problem aufgetreten. Sie müssen
6sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese 6sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese
7Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: 7Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter:
8www.secondlife.com/support 8www.secondlife.com/support
9 </message> 9 </message>
10 <message name="invalid_region_handoff"> 10 <message name="invalid_region_handoff">
diff --git a/linden/indra/newview/skins/xui/en-us/floater_buy_land.xml b/linden/indra/newview/skins/xui/en-us/floater_buy_land.xml
index fe76e10..a7fd3ed 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_buy_land.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_buy_land.xml
@@ -213,14 +213,6 @@ Try selecting a smaller area.
213 Land owned by another user is selected. 213 Land owned by another user is selected.
214Try selecting a smaller area. 214Try selecting a smaller area.
215 </string> 215 </string>
216 <string name="for_first_time_group">
217 This land is reserved for first time buyers.
218You cannot buy it for a group.
219 </string>
220 <string name="for_first_time">
221 This land is reserved for first time buyers.
222You already own land.
223 </string>
224 <string name="processing"> 216 <string name="processing">
225 Processing your purchase... 217 Processing your purchase...
226 218
diff --git a/linden/indra/newview/skins/xui/en-us/floater_directory.xml b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
index dd7520c..8cfb470 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_directory.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
@@ -385,6 +385,7 @@ To buy direct, visit the land and click on the place name in the title bar.
385 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4" 385 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4"
386 mouse_opaque="true" name="result_text" v_pad="0" width="328" /> 386 mouse_opaque="true" name="result_text" v_pad="0" width="328" />
387 </panel> 387 </panel>
388
388 <panel border="true" bottom="-549" follows="left|top|right|bottom" height="533" 389 <panel border="true" bottom="-549" follows="left|top|right|bottom" height="533"
389 label="Places" left="1" mouse_opaque="false" name="places_panel" 390 label="Places" left="1" mouse_opaque="false" name="places_panel"
390 width="778"> 391 width="778">
@@ -458,9 +459,8 @@ To buy direct, visit the land and click on the place name in the title bar.
458 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20" 459 <button bottom="-26" follows="left|top" font="SansSerif" halign="center" height="20"
459 label="Search" label_selected="Search" left_delta="136" mouse_opaque="true" 460 label="Search" label_selected="Search" left_delta="136" mouse_opaque="true"
460 name="Search" width="70" /> 461 name="Search" width="70" />
461 <scroll_list background_visible="false" bottom="-513" column_padding="0" draw_border="true" 462 <scroll_list background_visible="true" bottom="-513" column_padding="0" draw_border="true"
462 draw_heading="true" fg_disable_color="1, 1, 1, 1" 463 draw_heading="true"
463 fg_selected_color="1, 1, 1, 1" fg_unselected_color="1, 1, 1, 1"
464 follows="left|top|right|bottom" height="464" left="4" mouse_opaque="true" 464 follows="left|top|right|bottom" height="464" left="4" mouse_opaque="true"
465 multi_select="false" name="results" search_column="2" width="339"> 465 multi_select="false" name="results" search_column="2" width="339">
466 <column label="" name="icon" width="24" /> 466 <column label="" name="icon" width="24" />
@@ -473,6 +473,7 @@ To buy direct, visit the land and click on the place name in the title bar.
473 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4" 473 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4"
474 mouse_opaque="true" name="result_text" v_pad="0" width="328" /> 474 mouse_opaque="true" name="result_text" v_pad="0" width="328" />
475 </panel> 475 </panel>
476
476 <panel border="true" bottom="-549" follows="left|top|right|bottom" height="533" 477 <panel border="true" bottom="-549" follows="left|top|right|bottom" height="533"
477 label="People" left="1" mouse_opaque="false" name="people_panel" 478 label="People" left="1" mouse_opaque="false" name="people_panel"
478 width="778"> 479 width="778">
diff --git a/linden/indra/newview/skins/xui/en-us/floater_hud.xml b/linden/indra/newview/skins/xui/en-us/floater_hud.xml
index 6a72920..2372f3e 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_hud.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_hud.xml
@@ -2,7 +2,7 @@
2<floater can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="false" 2<floater can_close="true" can_drag_on_left="false" can_minimize="false" can_resize="false"
3 height="272" min_height="272" width="342" min_width="342" name="floater_hud" 3 height="272" min_height="272" width="342" min_width="342" name="floater_hud"
4 title="Tutorial"> 4 title="Tutorial">
5 <web_browser border_visible="false" left="0" bottom="0" right="-1" top="-16" caret_color="1 1 1 1" follows="top|left|bottom|right" 5 <web_browser border_visible="false" left="0" bottom="0" right="-1" top="-24" caret_color="1 1 1 1" follows="top|left|bottom|right"
6 name="floater_hud_browser" 6 name="floater_hud_browser"
7 start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody bgcolor=%22#000000%22 text=%22ffffff%22%3E%3Ch1%3E%3Ctt%3E%0D%0A%0D%0ALoading...%3C/tt%3E%3C/h1%3E%3C/body%3E%3C/html%3E" 7 start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody bgcolor=%22#000000%22 text=%22ffffff%22%3E%3Ch1%3E%3Ctt%3E%0D%0A%0D%0ALoading...%3C/tt%3E%3C/h1%3E%3C/body%3E%3C/html%3E"
8 /> 8 />
diff --git a/linden/indra/newview/skins/xui/en-us/floater_url_entry.xml b/linden/indra/newview/skins/xui/en-us/floater_url_entry.xml
index 64926c9..fb1f64a 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_url_entry.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_url_entry.xml
@@ -12,8 +12,6 @@
12 left="20" name="ok_btn" width="64" /> 12 left="20" name="ok_btn" width="64" />
13 <button bottom="10" bottom_delta="0" follows="top|left" height="20" label="Cancel" 13 <button bottom="10" bottom_delta="0" follows="top|left" height="20" label="Cancel"
14 left="112" name="cancel_btn" width="64" /> 14 left="112" name="cancel_btn" width="64" />
15 <button bottom="10" bottom_delta="0" follows="top|left" height="20" label="Cancel"
16 left="112" name="cancel_btn2" width="64" />
17 <button bottom="10" bottom_delta="0" follows="top|right" height="20" label="Clear" 15 <button bottom="10" bottom_delta="0" follows="top|right" height="20" label="Clear"
18 name="clear_btn" right="460" width="64" /> 16 name="clear_btn" right="460" width="64" />
19 <text bottom_delta="2" follows="bottom|left" height="15" left="220" 17 <text bottom_delta="2" follows="bottom|left" height="15" left="220"
diff --git a/linden/indra/newview/skins/xui/en-us/teleport_strings.xml b/linden/indra/newview/skins/xui/en-us/teleport_strings.xml
index 4b3dfa4..616dc1a 100644
--- a/linden/indra/newview/skins/xui/en-us/teleport_strings.xml
+++ b/linden/indra/newview/skins/xui/en-us/teleport_strings.xml
@@ -4,7 +4,7 @@
4 <message name="invalid_tport"> 4 <message name="invalid_tport">
5 Problem encountered processing your teleport request. You may 5 Problem encountered processing your teleport request. You may
6need to log back in before you can teleport. If you continue 6need to log back in before you can teleport. If you continue
7to get this message, please check the Tech Support FAQ at: 7to get this message, please check the Tech Support FAQ at:
8www.secondlife.com/support 8www.secondlife.com/support
9 </message> 9 </message>
10 <message name="invalid_region_handoff"> 10 <message name="invalid_region_handoff">
diff --git a/linden/indra/newview/skins/xui/ja/menu_viewer.xml b/linden/indra/newview/skins/xui/ja/menu_viewer.xml
index c987ea4..278e43f 100644
--- a/linden/indra/newview/skins/xui/ja/menu_viewer.xml
+++ b/linden/indra/newview/skins/xui/ja/menu_viewer.xml
@@ -177,7 +177,7 @@
177 <menu label="ツール" name="Tools"> 177 <menu label="ツール" name="Tools">
178 <menu_item_check label="リンクされたパートを編集" name="Edit Linked Parts" /> 178 <menu_item_check label="リンクされたパートを編集" name="Edit Linked Parts" />
179 <menu_item_separator label="-----------" name="separator7" /> 179 <menu_item_separator label="-----------" name="separator7" />
180 <menu label="報告" name="Select Tool"> 180 <menu label="" name="Select Tool">
181 <menu_item_call label="フォーカス" name="Focus" /> 181 <menu_item_call label="フォーカス" name="Focus" />
182 <menu_item_call label="移動" name="Move" /> 182 <menu_item_call label="移動" name="Move" />
183 <menu_item_call label="編集" name="Edit" /> 183 <menu_item_call label="編集" name="Edit" />
diff --git a/linden/indra/newview/skins/xui/ja/teleport_strings.xml b/linden/indra/newview/skins/xui/ja/teleport_strings.xml
index f86ec55..288c44b 100644
--- a/linden/indra/newview/skins/xui/ja/teleport_strings.xml
+++ b/linden/indra/newview/skins/xui/ja/teleport_strings.xml
@@ -4,7 +4,7 @@
4 <message name="invalid_tport"> 4 <message name="invalid_tport">
5 テレポート・リクエストの処理中に問題が発生しました。テレポートするには、 5 テレポート・リクエストの処理中に問題が発生しました。テレポートするには、
6再度ログインする必要があります。このメッセージが 6再度ログインする必要があります。このメッセージが
7 引き続き表示される場合は、技術サポートFAQ(www.secondlife.com/support) 7引き続き表示される場合は、技術サポートFAQ(www.secondlife.com/support)
8を参照してください。 8を参照してください。
9 </message> 9 </message>
10 <message name="invalid_region_handoff"> 10 <message name="invalid_region_handoff">
diff --git a/linden/indra/newview/skins/xui/ko/teleport_strings.xml b/linden/indra/newview/skins/xui/ko/teleport_strings.xml
index afb83d0..e7985e9 100644
--- a/linden/indra/newview/skins/xui/ko/teleport_strings.xml
+++ b/linden/indra/newview/skins/xui/ko/teleport_strings.xml
@@ -4,7 +4,7 @@
4 <message name="invalid_tport"> 4 <message name="invalid_tport">
5 텔리포트 요청 처리 중 문제가 발생했습니다. 지역 횡단을 하기 전에 5 텔리포트 요청 처리 중 문제가 발생했습니다. 지역 횡단을 하기 전에
6다시 로그인을 해야 합니다. 이러한 메시지를 6다시 로그인을 해야 합니다. 이러한 메시지를
7계속 받는 경우에는 www.secondlife.com/support에서 기술 지원 FAQ를 7계속 받는 경우에는 www.secondlife.com/support에서 기술 지원 FAQ를
8참조하십시오. 8참조하십시오.
9 </message> 9 </message>
10 <message name="invalid_region_handoff"> 10 <message name="invalid_region_handoff">