diff options
Diffstat (limited to '')
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 | |||
186 | NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 | 186 | NVIDIA GeForce Go 6800 .*NVIDIA.*GeForce Go 68.* 1 1 |
187 | NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 | 187 | NVIDIA GeForce Go 7200 .*NVIDIA.*GeForce Go 72.* 1 1 |
188 | NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 | 188 | NVIDIA GeForce Go 7300 .*NVIDIA.*GeForce Go 73.* 1 1 |
189 | NVIDIA GeForce Go 7300 LE .*NVIDIA.*GeForce Go 73.*LE.* 0 1 | ||
189 | NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 | 190 | NVIDIA GeForce Go 7400 .*NVIDIA.*GeForce Go 74.* 1 1 |
190 | NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 | 191 | NVIDIA GeForce Go 7600 .*NVIDIA.*GeForce Go 76.* 2 1 |
191 | NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 | 192 | NVIDIA GeForce Go 7700 .*NVIDIA.*GeForce Go 77.* 2 1 |
@@ -194,6 +195,7 @@ NVIDIA GeForce Go 7900 .*NVIDIA.*GeForce Go 79.* 2 1 | |||
194 | NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 | 195 | NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 |
195 | NVIDIA GeForce PCX .*GeForce PCX.* 0 1 | 196 | NVIDIA GeForce PCX .*GeForce PCX.* 0 1 |
196 | NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 | 197 | NVIDIA Generic .*NVIDIA.*Unknown.* 0 0 |
198 | NVIDIA NV34 .*NVIDIA.*NV34.* 0 1 | ||
197 | NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 | 199 | NVIDIA NV43 .*NVIDIA.*NV43.* 1 1 |
198 | NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1 | 200 | NVIDIA MCP78 .*NVIDIA.*MCP78.* 1 1 |
199 | NVIDIA Quadro2 .*Quadro2.* 0 1 | 201 | NVIDIA 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 | ||
6432 | extern LLString gInitialOutfit; | ||
6432 | 6433 | ||
6433 | // static | 6434 | // static |
6434 | void LLAgent::processAgentInitialWearablesUpdate( LLMessageSystem* mesgsys, void** user_data ) | 6435 | void 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 | ||
2142 | void LLAppViewer::closeDebug() | 2142 | void 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 | ||
2262 | void LLAppViewer::handleSyncViewerCrash() | 2266 | void 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 | ||
354 | void LLDrawable::update() | 346 | void 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 | ||
37 | class LLVOAvatar; | ||
38 | |||
38 | //----------------------------------------------------------------------------- | 39 | //----------------------------------------------------------------------------- |
39 | 40 | ||
40 | struct LLDrivenEntryInfo | 41 | struct 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 @@ | |||
57 | extern BOOL gPickFaces; | 57 | extern BOOL gPickFaces; |
58 | 58 | ||
59 | BOOL LLFace::sSafeRenderSelect = TRUE; // FALSE | 59 | BOOL LLFace::sSafeRenderSelect = TRUE; // FALSE |
60 | S32 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 | ||
179 | void LLFace::destroy() | 178 | void 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 | |||
300 | public://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; | |||
76 | const F32 MIN_CAMERA_ZOOM = 0.5f; | 76 | const F32 MIN_CAMERA_ZOOM = 0.5f; |
77 | const F32 MAX_CAMERA_ZOOM = 10.f; | 77 | const F32 MAX_CAMERA_ZOOM = 10.f; |
78 | 78 | ||
79 | const F32 BASE_ANIM_TIME_OFFSET = 5.f; | ||
80 | |||
79 | //----------------------------------------------------------------------------- | 81 | //----------------------------------------------------------------------------- |
80 | // LLFloaterAnimPreview() | 82 | // LLFloaterAnimPreview() |
81 | //----------------------------------------------------------------------------- | 83 | //----------------------------------------------------------------------------- |
82 | LLFloaterAnimPreview::LLFloaterAnimPreview(const char* filename) : | 84 | LLFloaterAnimPreview::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() | |||
537 | void LLFloaterAnimPreview::onBtnPlay(void* user_data) | 550 | void 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) | |||
568 | void LLFloaterAnimPreview::onBtnStop(void* user_data) | 582 | void 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) | |||
593 | void LLFloaterAnimPreview::onSliderMove(LLUICtrl* ctrl, void*user_data) | 599 | void 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) | |||
638 | void LLFloaterAnimPreview::onCommitBaseAnim(LLUICtrl* ctrl, void* data) | 625 | void 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) | |||
668 | void LLFloaterAnimPreview::onCommitLoop(LLUICtrl* ctrl, void* data) | 655 | void 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) | |||
687 | void LLFloaterAnimPreview::onCommitLoopIn(LLUICtrl* ctrl, void* data) | 675 | void 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) | |||
707 | void LLFloaterAnimPreview::onCommitLoopOut(LLUICtrl* ctrl, void* data) | 696 | void 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) | |||
727 | void LLFloaterAnimPreview::onCommitName(LLUICtrl* ctrl, void* data) | 717 | void 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) | |||
746 | void LLFloaterAnimPreview::onCommitHandPose(LLUICtrl* ctrl, void* data) | 737 | void 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) | |||
761 | void LLFloaterAnimPreview::onCommitEmote(LLUICtrl* ctrl, void* data) | 749 | void 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) | |||
776 | void LLFloaterAnimPreview::onCommitPriority(LLUICtrl* ctrl, void* data) | 761 | void 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) | |||
790 | void LLFloaterAnimPreview::onCommitEaseIn(LLUICtrl* ctrl, void* data) | 776 | void 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) | |||
805 | void LLFloaterAnimPreview::onCommitEaseOut(LLUICtrl* ctrl, void* data) | 792 | void 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 | //----------------------------------------------------------------------------- |
820 | BOOL LLFloaterAnimPreview::validateEaseIn(LLUICtrl* spin, void* data) | 808 | BOOL 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) | |||
862 | BOOL LLFloaterAnimPreview::validateLoopIn(LLUICtrl* ctrl, void* data) | 851 | BOOL 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) | |||
891 | BOOL LLFloaterAnimPreview::validateLoopOut(LLUICtrl* spin, void* data) | 880 | BOOL 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 |
130 | LLFloaterAvatarInfo::~LLFloaterAvatarInfo() | 127 | LLFloaterAvatarInfo::~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 | ||
141 | void LLFloaterAvatarInfo::resetGroupList() | 133 | void 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 | ||
75 | std::map<LLUUID, F32> LLMuteList::sUserVolumeSettings; | ||
76 | |||
77 | |||
78 | // "emptymutelist" | 75 | // "emptymutelist" |
79 | class LLDispatchEmptyMuteList : public LLDispatchHandler | 76 | class LLDispatchEmptyMuteList : public LLDispatchHandler |
80 | { | 77 | { |
@@ -182,10 +179,19 @@ LLMuteList* LLMuteList::getInstance() | |||
182 | // LLMuteList() | 179 | // LLMuteList() |
183 | //----------------------------------------------------------------------------- | 180 | //----------------------------------------------------------------------------- |
184 | LLMuteList::LLMuteList() : | 181 | LLMuteList::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 | ||
188 | void 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 | //----------------------------------------------------------------------------- |
670 | void LLMuteList::requestFromServer(const LLUUID& agent_id) | 676 | void 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) | |||
706 | void LLMuteList::setSavedResidentVolume(const LLUUID& id, F32 volume) | 714 | void 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 | ||
712 | F32 LLMuteList::getSavedResidentVolume(const LLUUID& id) | 720 | F32 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 | ||
133 | private: | 133 | private: |
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 | ||
181 | class LLMuteListObserver | 184 | class 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 | //-------------------------------------------------------------------- |
122 | void 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 | //-------------------------------------------------------------------- |
334 | void 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 | ||
440 | void LLViewerJoint::updateGeometry() | 442 | void 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 | //----------------------------------------------------------------------------- |
58 | LLViewerJointAttachment::LLViewerJointAttachment() : | 58 | LLViewerJointAttachment::LLViewerJointAttachment() : |
59 | mJoint(NULL), | ||
60 | mAttachedObject(NULL), | 59 | mAttachedObject(NULL), |
61 | mVisibleInFirst(FALSE), | 60 | mVisibleInFirst(FALSE), |
62 | mGroup(0), | 61 | mGroup(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 | ||
101 | protected: | 100 | protected: |
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 | ||
876 | void LLViewerJointMesh::updateGeometry() | 876 | void 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 | 123 | const 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 | ||
131 | unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */ | 126 | unsigned 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 | //----------------------------------------------------------------------------- |
5757 | BOOL LLVOAvatar::updateJointLODs() | 5745 | BOOL 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 | ||
6730 | BOOL LLVOAvatar::isVisible() | 6719 | BOOL 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 | ||
1022 | private: | 1021 | private: |
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" | ||
36 | class LLVOAvatar; | 34 | class LLVOAvatar; |
37 | class LLVivoxProtocolParser; | 35 | class 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 | ||
7 | Release Notes for Second Life 1.20(11) June 17th, 2008 | ||
8 | ===================================== | ||
9 | |||
10 | Fixes: | ||
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 | |||
31 | Localization Fixes: | ||
32 | * Fixed: VWR-7731: Bad Japanese translation of "Select tool" | ||
33 | |||
7 | Release Notes for Second Life 1.20(10) June 9th, 2008 | 34 | Release Notes for Second Life 1.20(10) June 9th, 2008 |
8 | ===================================== | 35 | ===================================== |
9 | 36 | ||
10 | Changes: | 37 | New 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 | ||
53 | Changes: | ||
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 | |||
26 | Fixes: | 57 | Fixes: |
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 | ||
46 | Localization Fixes: | 76 | Localization Fixes: |
47 | Partial Fix: Repair truncated text in 1.20.9 localizations | 77 | * Partial Fix: Repair truncated text in 1.20.9 localizations |
48 | 78 | ||
49 | Release Notes for Second Life 1.20(9) June 3rd, 2008 | 79 | Release 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 |
6 | sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese | 6 | sich zum Teleportieren eventuell neu anmelden. Wenn Sie diese |
7 | Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: | 7 | Nachricht weiterhin erhalten, konsultieren Sie bitte die Tech-Support-FAQ unter: |
8 | www.secondlife.com/support | 8 | www.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. |
214 | Try selecting a smaller area. | 214 | Try selecting a smaller area. |
215 | </string> | 215 | </string> |
216 | <string name="for_first_time_group"> | ||
217 | This land is reserved for first time buyers. | ||
218 | You cannot buy it for a group. | ||
219 | </string> | ||
220 | <string name="for_first_time"> | ||
221 | This land is reserved for first time buyers. | ||
222 | You 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 |
6 | need to log back in before you can teleport. If you continue | 6 | need to log back in before you can teleport. If you continue |
7 | to get this message, please check the Tech Support FAQ at: | 7 | to get this message, please check the Tech Support FAQ at: |
8 | www.secondlife.com/support | 8 | www.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"> |