summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/app_settings/settings.xml58
-rwxr-xr-xindra/newview/llagent.cpp58
-rw-r--r--indra/newview/llagent.h2
-rw-r--r--indra/newview/llagentwearables.cpp1
-rw-r--r--indra/newview/llappviewer.cpp11
-rwxr-xr-xindra/newview/llavatariconctrl.cpp1
-rw-r--r--indra/newview/llcallingcard.cpp20
-rw-r--r--indra/newview/lldrawable.cpp2
-rw-r--r--indra/newview/lldrawable.h2
-rw-r--r--indra/newview/lldrawpoolavatar.cpp4
-rw-r--r--indra/newview/llface.h6
-rw-r--r--indra/newview/llfasttimerview.cpp7
-rw-r--r--indra/newview/llfasttimerview.h1
-rw-r--r--indra/newview/llfloateravatartextures.cpp1
-rw-r--r--indra/newview/llfloaterbuyland.cpp4
-rw-r--r--indra/newview/llfloaterland.cpp4
-rw-r--r--indra/newview/llfloaterland.h2
-rw-r--r--indra/newview/llfloaterregioninfo.cpp2
-rw-r--r--indra/newview/llfloaterregioninfo.h2
-rw-r--r--indra/newview/llgroupiconctrl.cpp12
-rw-r--r--indra/newview/llgroupmgr.cpp2
-rw-r--r--indra/newview/llhudicon.h3
-rw-r--r--indra/newview/llhudmanager.h8
-rw-r--r--indra/newview/llimfloater.cpp4
-rw-r--r--indra/newview/llimfloater.h2
-rw-r--r--indra/newview/llimview.cpp1
-rw-r--r--indra/newview/llimview.h3
-rw-r--r--indra/newview/llinspectavatar.cpp2
-rw-r--r--indra/newview/llinventorybridge.cpp1
-rw-r--r--indra/newview/llinventoryicon.cpp3
-rw-r--r--indra/newview/llinventoryicon.h5
-rw-r--r--indra/newview/llinventorymodel.h4
-rw-r--r--indra/newview/lllocalbitmaps.cpp1
-rw-r--r--indra/newview/lllocalbitmaps.h2
-rw-r--r--indra/newview/llmediactrl.cpp6
-rw-r--r--indra/newview/llmediactrl.h4
-rw-r--r--indra/newview/llpanelclassified.cpp1
-rw-r--r--indra/newview/llpaneleditwearable.cpp1
-rw-r--r--indra/newview/llpanelnearbymedia.cpp2
-rw-r--r--indra/newview/llpanelnearbymedia.h2
-rw-r--r--indra/newview/llpaneloutfitedit.cpp4
-rw-r--r--indra/newview/llpaneloutfitedit.h2
-rw-r--r--indra/newview/llpanelpeople.h1
-rw-r--r--indra/newview/llpanelplaceprofile.cpp4
-rw-r--r--indra/newview/llpanelplaceprofile.h2
-rw-r--r--indra/newview/llpanelplaces.cpp4
-rw-r--r--indra/newview/llpanelplaces.h2
-rwxr-xr-xindra/newview/llpanelprofile.cpp1
-rw-r--r--indra/newview/llpaneltopinfobar.cpp4
-rw-r--r--indra/newview/llpaneltopinfobar.h2
-rw-r--r--indra/newview/llpanelvoicedevicesettings.cpp2
-rw-r--r--indra/newview/llpanelvoicedevicesettings.h2
-rw-r--r--indra/newview/llpanelvoiceeffect.cpp1
-rw-r--r--indra/newview/llpanelvolumepulldown.cpp2
-rw-r--r--indra/newview/llpanelvolumepulldown.h2
-rw-r--r--indra/newview/llpreviewgesture.cpp4
-rw-r--r--indra/newview/llpreviewgesture.h2
-rw-r--r--indra/newview/llscenemonitor.cpp357
-rw-r--r--indra/newview/llscenemonitor.h44
-rw-r--r--indra/newview/llsidepanelappearance.cpp4
-rw-r--r--indra/newview/llsidepanelappearance.h2
-rw-r--r--indra/newview/llsidepaneltaskinfo.cpp2
-rw-r--r--indra/newview/llsidepaneltaskinfo.h2
-rw-r--r--indra/newview/llspeakers.cpp2
-rw-r--r--indra/newview/llstartup.cpp6
-rw-r--r--indra/newview/lltexlayer.cpp1
-rw-r--r--indra/newview/lltoolpie.cpp1
-rw-r--r--indra/newview/lltoolselect.cpp1
-rw-r--r--indra/newview/lltoolselect.h2
-rw-r--r--indra/newview/llviewerassetstats.h1
-rw-r--r--indra/newview/llvieweraudio.cpp1
-rw-r--r--indra/newview/llviewercamera.cpp2
-rw-r--r--indra/newview/llviewercamera.h2
-rw-r--r--indra/newview/llviewerdisplay.cpp12
-rw-r--r--indra/newview/llviewerjointmesh.cpp1
-rw-r--r--indra/newview/llviewerjointmesh.h8
-rw-r--r--indra/newview/llviewerobject.cpp1
-rw-r--r--indra/newview/llviewerobject.h27
-rw-r--r--indra/newview/llviewerobjectlist.cpp8
-rw-r--r--indra/newview/llviewerobjectlist.h10
-rw-r--r--indra/newview/llvieweroctree.cpp7
-rw-r--r--indra/newview/llvieweroctree.h3
-rw-r--r--indra/newview/llviewerpartsim.h2
-rw-r--r--indra/newview/llviewerprecompiledheaders.h6
-rw-r--r--indra/newview/llviewerregion.cpp108
-rw-r--r--indra/newview/llviewerregion.h2
-rw-r--r--indra/newview/llviewerstats.cpp23
-rw-r--r--indra/newview/llviewertexturelist.h1
-rwxr-xr-xindra/newview/llviewerwindow.cpp1
-rw-r--r--indra/newview/llvoavatar.cpp122
-rw-r--r--indra/newview/llvoavatar.h5
-rw-r--r--indra/newview/llvoavatarself.cpp1
-rw-r--r--indra/newview/llvocache.cpp56
-rw-r--r--indra/newview/llvocache.h20
-rw-r--r--indra/newview/llvoicechannel.cpp2
-rw-r--r--indra/newview/llvoiceclient.h1
-rw-r--r--indra/newview/llvoinventorylistener.h4
-rw-r--r--indra/newview/llvosurfacepatch.h2
-rw-r--r--indra/newview/llvovolume.cpp2
-rw-r--r--indra/newview/llwearable.h2
-rw-r--r--indra/newview/llworld.cpp9
-rw-r--r--indra/newview/pipeline.cpp10
-rw-r--r--indra/newview/pipeline.h14
-rw-r--r--indra/newview/skins/default/xui/en/floater_stats.xml2
104 files changed, 626 insertions, 574 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 94a8550938..94f032be67 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -19,7 +19,7 @@
<string>
Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never).
Valid values are: 0, 120, 300, 600, 1800
-</string>
+ </string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -6848,6 +6848,17 @@
<key>Value</key>
<real>6.0</real>
</map>
+ <key>ClothingLoadingDelay</key>
+ <map>
+ <key>Comment</key>
+ <string>Time to wait for avatar appearance to resolve before showing world (seconds)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>10.0</real>
+ </map>
<key>PreferredMaturity</key>
<map>
<key>Comment</key>
@@ -7403,7 +7414,6 @@
<key>Value</key>
<integer>1</integer>
</map>
-
<key>OctreeMaxNodeCapacity</key>
<map>
<key>Comment</key>
@@ -9469,6 +9479,28 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>SceneLoadingMonitorSampleTime</key>
+ <map>
+ <key>Comment</key>
+ <string>Time between screen samples when monitor scene load (seconds)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.25</real>
+ </map>
+ <key>SceneLoadingPixelDiffThreshold</key>
+ <map>
+ <key>Comment</key>
+ <string>Amount of pixels changed required to consider the scene as still loading (fraction of pixels on screen)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>0.0003</real>
+ </map>
<key>ScriptHelpFollowsCursor</key>
<map>
<key>Comment</key>
@@ -14117,5 +14149,27 @@
<key>Value</key>
<integer>0</integer>
</map>
+ <key>TeleportArrivalDelay</key>
+ <map>
+ <key>Comment</key>
+ <string>Time to wait before displaying world during teleport (seconds)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>2</real>
+ </map>
+ <key>TeleportLocalDelay</key>
+ <map>
+ <key>Comment</key>
+ <string>Delay to prevent teleports after starting an in-sim teleport. (seconds)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <real>1</real>
+ </map>
</map>
</llsd>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 4e60127ef3..6b996edb76 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1046,14 +1046,6 @@ const LLVector3d &LLAgent::getPositionGlobal() const
return mPositionGlobal;
}
-bool LLAgent::isPositionChanged() const
-{
- LLVector3d diff;
- diff = mPositionGlobal - mLastPositionGlobal;
-
- return diff.lengthSquared() > 1.0;
-}
-
//-----------------------------------------------------------------------------
// getPositionAgent()
//-----------------------------------------------------------------------------
@@ -2852,10 +2844,10 @@ BOOL LLAgent::isInGroup(const LLUUID& group_id, BOOL ignore_god_mode /* FALSE */
if (!ignore_god_mode && isGodlike())
return true;
- S32 count = mGroups.count();
- for(S32 i = 0; i < count; ++i)
+ U32 count = mGroups.size();
+ for(U32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
return TRUE;
}
@@ -2872,12 +2864,12 @@ BOOL LLAgent::hasPowerInGroup(const LLUUID& group_id, U64 power) const
// GP_NO_POWERS can also mean no power is enough to grant an ability.
if (GP_NO_POWERS == power) return FALSE;
- S32 count = mGroups.count();
- for(S32 i = 0; i < count; ++i)
+ U32 count = mGroups.size();
+ for(U32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- return (BOOL)((mGroups.get(i).mPowers & power) > 0);
+ return (BOOL)((mGroups[i].mPowers & power) > 0);
}
}
return FALSE;
@@ -2893,12 +2885,12 @@ U64 LLAgent::getPowerInGroup(const LLUUID& group_id) const
if (isGodlike())
return GP_ALL_POWERS;
- S32 count = mGroups.count();
- for(S32 i = 0; i < count; ++i)
+ U32 count = mGroups.size();
+ for(U32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- return (mGroups.get(i).mPowers);
+ return (mGroups[i].mPowers);
}
}
@@ -2907,12 +2899,12 @@ U64 LLAgent::getPowerInGroup(const LLUUID& group_id) const
BOOL LLAgent::getGroupData(const LLUUID& group_id, LLGroupData& data) const
{
- S32 count = mGroups.count();
+ S32 count = mGroups.size();
for(S32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- data = mGroups.get(i);
+ data = mGroups[i];
return TRUE;
}
}
@@ -2921,12 +2913,12 @@ BOOL LLAgent::getGroupData(const LLUUID& group_id, LLGroupData& data) const
S32 LLAgent::getGroupContribution(const LLUUID& group_id) const
{
- S32 count = mGroups.count();
+ S32 count = mGroups.size();
for(S32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- S32 contribution = mGroups.get(i).mContribution;
+ S32 contribution = mGroups[i].mContribution;
return contribution;
}
}
@@ -2935,12 +2927,12 @@ S32 LLAgent::getGroupContribution(const LLUUID& group_id) const
BOOL LLAgent::setGroupContribution(const LLUUID& group_id, S32 contribution)
{
- S32 count = mGroups.count();
+ S32 count = mGroups.size();
for(S32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- mGroups.get(i).mContribution = contribution;
+ mGroups[i].mContribution = contribution;
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("SetGroupContribution");
msg->nextBlock("AgentData");
@@ -2958,13 +2950,13 @@ BOOL LLAgent::setGroupContribution(const LLUUID& group_id, S32 contribution)
BOOL LLAgent::setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile)
{
- S32 count = mGroups.count();
+ S32 count = mGroups.size();
for(S32 i = 0; i < count; ++i)
{
- if(mGroups.get(i).mID == group_id)
+ if(mGroups[i].mID == group_id)
{
- mGroups.get(i).mAcceptNotices = accept_notices;
- mGroups.get(i).mListInProfile = list_in_profile;
+ mGroups[i].mAcceptNotices = accept_notices;
+ mGroups[i].mListInProfile = list_in_profile;
LLMessageSystem* msg = gMessageSystem;
msg->newMessage("SetGroupAcceptNotices");
msg->nextBlock("AgentData");
@@ -2984,7 +2976,7 @@ BOOL LLAgent::setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOO
BOOL LLAgent::canJoinGroups() const
{
- return mGroups.count() < gMaxAgentGroups;
+ return (S32)mGroups.size() < gMaxAgentGroups;
}
LLQuaternion LLAgent::getHeadRotation()
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index a1e899b45d..46dad1dc20 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -34,6 +34,7 @@
#include "llcharacter.h"
#include "llcoordframe.h" // for mFrameAgent
#include "llvoavatardefines.h"
+#include "lldarray.h"
#include <boost/function.hpp>
#include <boost/shared_ptr.hpp>
@@ -251,7 +252,6 @@ public:
const LLVector3d &getLastPositionGlobal() const { return mLastPositionGlobal; }
void setLastPositionGlobal(const LLVector3d &pos) { mLastPositionGlobal = pos; }
- bool isPositionChanged() const;
private:
std::set<U64> mRegionsVisited; // Stat - what distinct regions has the avatar been to?
F64 mDistanceTraveled; // Stat - how far has the avatar moved?
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index e441f21f90..49e754a720 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -39,6 +39,7 @@
#include "llinventoryfunctions.h"
#include "llinventoryobserver.h"
#include "llinventorypanel.h"
+#include "lllocaltextureobject.h"
#include "llmd5.h"
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index cb813ea889..cd881208ab 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1203,6 +1203,8 @@ LLFastTimer::DeclareTimer FTM_FRAME("Frame", true);
bool LLAppViewer::mainLoop()
{
+ llinfos << "***********************Entering main_loop***********************" << llendflush;
+
mMainloopTimeout = new LLWatchdogTimeout();
//-------------------------------------------
@@ -1528,7 +1530,7 @@ bool LLAppViewer::mainLoop()
destroyMainloopTimeout();
- llinfos << "Exiting main_loop" << llendflush;
+ llinfos << "***********************Exiting main_loop***********************" << llendflush;
return true;
}
@@ -1575,11 +1577,9 @@ bool LLAppViewer::cleanup()
LLEventPumps::instance().reset();
//dump scene loading monitor results
- if(LLSceneMonitor::getInstance()->hasResults())
+ if(LLSceneMonitor::instance().hasResults())
{
- std::string file_name = "scene_monitor_results.csv";
- LLSceneMonitor::getInstance()->dumpToFile(
- gDirUtilp->getExpandedFilename(LL_PATH_LOGS, file_name));
+ LLSceneMonitor::instance().dumpToFile(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "scene_monitor_results.csv"));
}
if (LLFastTimerView::sAnalyzePerformance)
@@ -4264,6 +4264,7 @@ void LLAppViewer::idle()
{
if (gRenderStartTime.getElapsedTimeF32() > qas)
{
+ llinfos << "Quitting after " << qas << " seconds. See setting \"QuitAfterSeconds\"." << llendl;
LLAppViewer::instance()->forceQuit();
}
}
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index b539ac38ed..5f5bded3ad 100755
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -37,6 +37,7 @@
#include "lluictrlfactory.h"
#include "llagentdata.h"
#include "llimfloater.h"
+#include "llviewertexture.h"
// library includes
#include "llavatarnamecache.h"
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index 0d55c4429a..c34c09bf87 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -32,13 +32,10 @@
#include "llcallingcard.h"
-#include <vector>
#include <algorithm>
-//#include <iterator>
#include "indra_constants.h"
-#include "llavatarnamecache.h"
-#include "llcachename.h"
+//#include "llcachename.h"
#include "llstl.h"
#include "lltimer.h"
#include "lluuid.h"
@@ -46,18 +43,13 @@
#include "llagent.h"
#include "llavatarnamecache.h"
-#include "llbutton.h"
#include "llinventoryobserver.h"
#include "llinventorymodel.h"
#include "llnotifications.h"
-#include "llnotificationsutil.h"
-#include "llresmgr.h"
#include "llslurl.h"
#include "llimview.h"
#include "llviewercontrol.h"
-#include "llviewernetwork.h"
#include "llviewerobjectlist.h"
-#include "llviewerwindow.h"
#include "llvoavatar.h"
#include "llavataractions.h"
@@ -104,8 +96,6 @@ static void on_avatar_name_cache_notify(const LLUUID& agent_id,
LLAvatarTracker::LLAvatarTracker() :
mTrackingData(NULL),
mTrackedAgentValid(false),
- //mInventory(NULL),
- //mInventoryObserver(NULL),
mModifyMask(0x0)
{
}
@@ -639,11 +629,11 @@ void LLAvatarTracker::processChange(LLMessageSystem* msg)
payload["from_id"] = agent_id;
if(LLRelationship::GRANT_MODIFY_OBJECTS & new_rights)
{
- LLNotificationsUtil::add("GrantedModifyRights",args, payload);
+ LLNotifications::instance().add("GrantedModifyRights",args, payload);
}
else
{
- LLNotificationsUtil::add("RevokedModifyRights",args, payload);
+ LLNotifications::instance().add("RevokedModifyRights",args, payload);
}
}
(mBuddyInfo[agent_id])->setRightsFrom(new_rights);
@@ -728,7 +718,7 @@ static void on_avatar_name_cache_notify(const LLUUID& agent_id,
if (online)
{
notification =
- LLNotificationsUtil::add("FriendOnline",
+ LLNotifications::instance().add("FriendOnline",
args,
payload.with("respond_on_mousedown", TRUE),
boost::bind(&LLAvatarActions::startIM, agent_id));
@@ -736,7 +726,7 @@ static void on_avatar_name_cache_notify(const LLUUID& agent_id,
else
{
notification =
- LLNotificationsUtil::add("FriendOffline", args, payload);
+ LLNotifications::instance().add("FriendOffline", args, payload);
}
// If there's an open IM session with this agent, send a notification there too.
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 17f610829d..92b3ee4a26 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -79,7 +79,7 @@ LLTrace::MemStatHandle LLDrawable::sMemStat("LLDrawable");
// static
U32 LLDrawable::sNumZombieDrawables = 0;
F32 LLDrawable::sCurPixelAngle = 0;
-LLDynamicArrayPtr<LLPointer<LLDrawable> > LLDrawable::sDeadList;
+LLDynamicArray<LLPointer<LLDrawable>, 32 > LLDrawable::sDeadList;
#define FORCE_INVISIBLE_AREA 16.f
diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h
index 26796b92d0..e400a8b5f2 100644
--- a/indra/newview/lldrawable.h
+++ b/indra/newview/lldrawable.h
@@ -309,7 +309,7 @@ private:
LLVector3 mCurrentScale;
static U32 sNumZombieDrawables;
- static LLDynamicArrayPtr<LLPointer<LLDrawable> > sDeadList;
+ static LLDynamicArray<LLPointer<LLDrawable>, 32> sDeadList;
} LL_ALIGN_POSTFIX(16);
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 294cecc703..67dbe6de8b 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -421,7 +421,7 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
if (pass == 0)
{
- avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
+ avatarp->renderSkinned();
}
else
{
@@ -1246,7 +1246,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
if( !single_avatar || (avatarp == single_avatar) )
{
- avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
+ avatarp->renderSkinned();
}
}
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index 15c9e7856f..dda4bc9b3c 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -28,7 +28,6 @@
#define LL_LLFACE_H
#include "llstrider.h"
-
#include "llrender.h"
#include "v2math.h"
#include "v3math.h"
@@ -37,7 +36,6 @@
#include "v4coloru.h"
#include "llquaternion.h"
#include "xform.h"
-#include "lldarrayptr.h"
#include "llvertexbuffer.h"
#include "llviewertexture.h"
#include "lldrawable.h"
@@ -47,10 +45,8 @@ class LLFacePool;
class LLVolume;
class LLViewerTexture;
class LLTextureEntry;
-class LLVertexProgram;
-class LLViewerTexture;
-class LLGeometryManager;
class LLTextureAtlasSlot;
+class LLDrawInfo;
const F32 MIN_ALPHA_SIZE = 1024.f;
const F32 MIN_TEX_ANIM_SIZE = 512.f;
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 45ffe56ac1..b78dd08bf1 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -422,13 +422,6 @@ void LLFastTimerView::draw()
mHoverBarIndex = -1;
}
-F64 LLFastTimerView::getTime(const std::string& name)
-{
- //TODO: replace calls to this with use of timer object directly
- //llstatic_assert(false, "TODO: implement");
- return 0.0;
-}
-
void saveChart(const std::string& label, const char* suffix, LLImageRaw* scratch)
{
//read result back into raw image
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 8b9ad290bc..341adacd65 100644
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -62,7 +62,6 @@ public:
virtual void draw();
LLTrace::TimeBlock* getLegendID(S32 y);
- F64 getTime(const std::string& name);
protected:
virtual void onClickCloseBtn();
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
index 4e10b4fc2c..0fc9150314 100644
--- a/indra/newview/llfloateravatartextures.cpp
+++ b/indra/newview/llfloateravatartextures.cpp
@@ -36,6 +36,7 @@
#include "lluictrlfactory.h"
#include "llviewerobjectlist.h"
#include "llvoavatarself.h"
+#include "lllocaltextureobject.h"
using namespace LLVOAvatarDefines;
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 8223e89b64..c1cea58801 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -202,7 +202,7 @@ public:
virtual void draw();
virtual BOOL canClose();
- void onVisibilityChange ( const LLSD& new_visibility );
+ void onVisibilityChanged ( const LLSD& new_visibility );
};
@@ -1008,7 +1008,7 @@ BOOL LLFloaterBuyLandUI::canClose()
return can_close;
}
-void LLFloaterBuyLandUI::onVisibilityChange ( const LLSD& new_visibility )
+void LLFloaterBuyLandUI::onVisibilityChanged ( const LLSD& new_visibility )
{
if (new_visibility.asBoolean())
{
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index be743d57d2..a2675d6d3e 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -225,7 +225,7 @@ void LLFloaterLand::onOpen(const LLSD& key)
refresh();
}
-void LLFloaterLand::onVisibilityChange(const LLSD& visible)
+void LLFloaterLand::onVisibilityChanged(const LLSD& visible)
{
if (!visible.asBoolean())
{
@@ -255,7 +255,7 @@ LLFloaterLand::LLFloaterLand(const LLSD& seed)
BOOL LLFloaterLand::postBuild()
{
- setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChanged, this, _2));
LLTabContainer* tab = getChild<LLTabContainer>("landtab");
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 4f1c10274a..dccdfc9acb 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -88,7 +88,7 @@ private:
LLFloaterLand(const LLSD& seed);
virtual ~LLFloaterLand();
- void onVisibilityChange(const LLSD& visible);
+ void onVisibilityChanged(const LLSD& visible);
protected:
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 6cce013105..34c1127826 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2865,7 +2865,7 @@ void LLPanelEnvironmentInfo::onOpen(const LLSD& key)
}
// virtual
-void LLPanelEnvironmentInfo::handleVisibilityChange(BOOL new_visibility)
+void LLPanelEnvironmentInfo::onVisibilityChange(BOOL new_visibility)
{
// If hiding (user switched to another tab or closed the floater),
// display user's preferred environment.
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index f0499f1903..dd961e21b2 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -402,7 +402,7 @@ public:
/*virtual*/ void onOpen(const LLSD& key);
// LLView
- /*virtual*/ void handleVisibilityChange(BOOL new_visibility);
+ /*virtual*/ void onVisibilityChange(BOOL new_visibility);
// LLPanelRegionInfo
/*virtual*/ bool refreshFromRegion(LLViewerRegion* region);
diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp
index 2f9810775b..2bcee69b91 100644
--- a/indra/newview/llgroupiconctrl.cpp
+++ b/indra/newview/llgroupiconctrl.cpp
@@ -29,17 +29,7 @@
#include "llgroupiconctrl.h"
#include "llagent.h"
-/*
-#include "llavatarconstants.h"
-#include "llcallingcard.h" // for LLAvatarTracker
-#include "llavataractions.h"
-#include "llmenugl.h"
-#include "lluictrlfactory.h"
-
-#include "llcachename.h"
-#include "llagentdata.h"
-#include "llimfloater.h"
-*/
+#include "llviewertexture.h"
static LLDefaultChildRegistry::Register<LLGroupIconCtrl> g_i("group_icon");
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 81eb1d397e..eb83015f4a 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -41,6 +41,7 @@
#include "llui.h"
#include "message.h"
#include "roles_constants.h"
+#include "llhttpclient.h"
#include "lltransactiontypes.h"
#include "llstatusbar.h"
#include "lleconomy.h"
@@ -50,6 +51,7 @@
#include "llnotificationsutil.h"
#include "lluictrlfactory.h"
#include "lltrans.h"
+#include "llviewerregion.h"
#include <boost/regex.hpp>
#if LL_MSVC
diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h
index 644daa0299..2bbc9c839d 100644
--- a/indra/newview/llhudicon.h
+++ b/indra/newview/llhudicon.h
@@ -28,7 +28,6 @@
#define LL_LLHUDICON_H
#include "llpointer.h"
-#include "lldarrayptr.h"
#include "llhudobject.h"
#include "v4color.h"
@@ -42,8 +41,6 @@
#include "lldarray.h"
// Renders a 2D icon billboard floating at the location specified.
-class LLDrawable;
-class LLViewerObject;
class LLViewerTexture;
class LLHUDIcon : public LLHUDObject
diff --git a/indra/newview/llhudmanager.h b/indra/newview/llhudmanager.h
index 09e79acbfc..effea8f034 100644
--- a/indra/newview/llhudmanager.h
+++ b/indra/newview/llhudmanager.h
@@ -30,13 +30,9 @@
// Responsible for managing all HUD elements.
#include "llhudobject.h"
-#include "lldarrayptr.h"
+#include "lldarray.h"
-class LLViewerObject;
class LLHUDEffect;
-//Ventrella 9/16/05
-class LLHUDAnimalControls;
-// End Ventrella
class LLMessageSystem;
class LLHUDManager : public LLSingleton<LLHUDManager>
@@ -59,7 +55,7 @@ public:
static LLColor4 sChildColor;
protected:
- LLDynamicArrayPtr<LLPointer<LLHUDEffect> > mHUDEffects;
+ LLDynamicArray<LLPointer<LLHUDEffect>, 32> mHUDEffects;
};
#endif // LL_LLHUDMANAGER_H
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 63eedcdfea..f27eaba760 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -38,6 +38,7 @@
#include "llchiclet.h"
#include "llchicletbar.h"
#include "llfloaterreg.h"
+#include "llhttpclient.h"
#include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
#include "llinventoryfunctions.h"
#include "lllayoutstack.h"
@@ -49,6 +50,7 @@
#include "lltrans.h"
#include "llchathistory.h"
#include "llnotifications.h"
+#include "llviewerregion.h"
#include "llviewerwindow.h"
#include "llvoicechannel.h"
#include "lltransientfloatermgr.h"
@@ -163,7 +165,7 @@ void LLIMFloater::newIMCallback(const LLSD& data){
}
}
-void LLIMFloater::onVisibilityChange(const LLSD& new_visibility)
+void LLIMFloater::onVisibilityChanged(const LLSD& new_visibility)
{
bool visible = new_visibility.asBoolean();
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index f7cd35b5eb..9bdcc113d6 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -88,7 +88,7 @@ public:
// called when docked floater's position has been set by chiclet
void setPositioned(bool b) { mPositioned = b; };
- void onVisibilityChange(const LLSD& new_visibility);
+ void onVisibilityChanged(const LLSD& new_visibility);
void processIMTyping(const LLIMInfo* im_info, BOOL typing);
void processAgentListUpdates(const LLSD& body);
void processSessionUpdate(const LLSD& session_update);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4000570872..080e1e7ad6 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -63,6 +63,7 @@
#include "lltoolbarview.h"
#include "llviewercontrol.h"
#include "llviewerparcelmgr.h"
+#include "llviewerregion.h"
const static std::string ADHOC_NAME_SUFFIX(" Conference");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 7c2cd03d97..3b97ad0901 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -33,13 +33,12 @@
#include "lllogchat.h"
#include "llvoicechannel.h"
-
+#include "lldarray.h"
class LLAvatarName;
class LLFriendObserver;
class LLCallDialogManager;
class LLIMSpeakerMgr;
-
/**
* Timeout Timer for outgoing Ad-Hoc/Group IM sessions which being initialized by the server
*/
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 17d0b0ffbb..4f727bbd7d 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -37,6 +37,7 @@
#include "lldateutil.h"
#include "llfloaterreporter.h"
#include "llfloaterworldmap.h"
+#include "llhttpclient.h"
#include "llimview.h"
#include "llinspect.h"
#include "llmutelist.h"
@@ -46,6 +47,7 @@
#include "llviewermenu.h"
#include "llvoiceclient.h"
#include "llviewerobjectlist.h"
+#include "llviewerregion.h"
#include "lltransientfloatermgr.h"
#include "llnotificationsutil.h"
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 949de312be..927ae090c6 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -68,6 +68,7 @@
#include "llviewermenu.h"
#include "llviewermessage.h"
#include "llviewerobjectlist.h"
+#include "llviewerregion.h"
#include "llviewerwindow.h"
#include "llvoavatarself.h"
#include "llwearablelist.h"
diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
index 34734d57c5..0684734111 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -30,6 +30,7 @@
#include "lldictionary.h"
#include "llinventorydefines.h"
#include "llui.h"
+#include "lluiimage.h"
#include "llwearabletype.h"
struct IconEntry : public LLDictionaryEntry
@@ -47,6 +48,8 @@ public:
LLIconDictionary();
};
+typedef LLPointer<LLUIImage> LLUIImagePtr;
+
LLIconDictionary::LLIconDictionary()
{
addEntry(LLInventoryIcon::ICONNAME_TEXTURE, new IconEntry("Inv_Texture"));
diff --git a/indra/newview/llinventoryicon.h b/indra/newview/llinventoryicon.h
index c7e2998a20..cbcddc26a9 100644
--- a/indra/newview/llinventoryicon.h
+++ b/indra/newview/llinventoryicon.h
@@ -30,7 +30,6 @@
#include "llassettype.h"
#include "llinventorytype.h"
-#include "lluiimage.h"
class LLInventoryIcon
{
@@ -87,11 +86,11 @@ public:
BOOL item_is_multi = FALSE);
static const std::string& getIconName(EIconName idx);
- static LLUIImagePtr getIcon(LLAssetType::EType asset_type,
+ static LLPointer<class LLUIImage> getIcon(LLAssetType::EType asset_type,
LLInventoryType::EType inventory_type = LLInventoryType::IT_NONE,
U32 misc_flag = 0, // different meanings depending on item type
BOOL item_is_multi = FALSE);
- static LLUIImagePtr getIcon(EIconName idx);
+ static LLPointer<class LLUIImage> getIcon(EIconName idx);
protected:
static EIconName assignWearableIcon(U32 misc_flag);
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index 8382e875b4..88463c4aa9 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -31,7 +31,7 @@
#include "llfoldertype.h"
#include "lldarray.h"
#include "llframetimer.h"
-#include "llhttpclient.h"
+#include "llcurl.h"
#include "lluuid.h"
#include "llpermissionsflags.h"
#include "llstring.h"
@@ -79,7 +79,7 @@ public:
typedef LLDynamicArray<LLPointer<LLViewerInventoryItem> > item_array_t;
typedef std::set<LLUUID> changed_items_t;
- class fetchInventoryResponder : public LLHTTPClient::Responder
+ class fetchInventoryResponder : public LLCurl::Responder
{
public:
fetchInventoryResponder(const LLSD& request_sd) : mRequestSD(request_sd) {};
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 97ba5b634a..ce04629104 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -48,6 +48,7 @@
/* misc headers */
#include "llscrolllistctrl.h"
#include "llfilepicker.h"
+#include "lllocaltextureobject.h"
#include "llviewertexturelist.h"
#include "llviewerobjectlist.h"
#include "llviewerobject.h"
diff --git a/indra/newview/lllocalbitmaps.h b/indra/newview/lllocalbitmaps.h
index 7a23c7ef6e..f99fc66f4b 100644
--- a/indra/newview/lllocalbitmaps.h
+++ b/indra/newview/lllocalbitmaps.h
@@ -33,6 +33,8 @@
#include "llvoavatardefines.h"
class LLScrollListCtrl;
+class LLImageRaw;
+class LLViewerObject;
class LLLocalBitmap
{
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 99b4707158..baf5a3a839 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -392,7 +392,7 @@ BOOL LLMediaCtrl::postBuild ()
mContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>(
"menu_media_ctrl.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance());
- setVisibleCallback(boost::bind(&LLMediaCtrl::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLMediaCtrl::onVisibilityChanged, this, _2));
return TRUE;
}
@@ -422,7 +422,7 @@ BOOL LLMediaCtrl::handleKeyHere( KEY key, MASK mask )
////////////////////////////////////////////////////////////////////////////////
//
-void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility )
+void LLMediaCtrl::onVisibilityChange ( BOOL new_visibility )
{
llinfos << "visibility changed to " << (new_visibility?"true":"false") << llendl;
if(mMediaSource)
@@ -450,7 +450,7 @@ BOOL LLMediaCtrl::handleUnicodeCharHere(llwchar uni_char)
////////////////////////////////////////////////////////////////////////////////
//
-void LLMediaCtrl::onVisibilityChange ( const LLSD& new_visibility )
+void LLMediaCtrl::onVisibilityChanged ( const LLSD& new_visibility )
{
// set state of frequent updates automatically if visibility changes
if ( new_visibility.asBoolean() )
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 7f2a5e1642..db501cdb8c 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -149,7 +149,7 @@ public:
// over-rides
virtual BOOL handleKeyHere( KEY key, MASK mask);
- virtual void handleVisibilityChange ( BOOL new_visibility );
+ virtual void onVisibilityChange ( BOOL new_visibility );
virtual BOOL handleUnicodeCharHere(llwchar uni_char);
virtual void reshape( S32 width, S32 height, BOOL called_from_parent = TRUE);
virtual void draw();
@@ -171,7 +171,7 @@ public:
void convertInputCoords(S32& x, S32& y);
private:
- void onVisibilityChange ( const LLSD& new_visibility );
+ void onVisibilityChanged ( const LLSD& new_visibility );
void onPopup(const LLSD& notification, const LLSD& response);
const S32 mTextureDepthBytes;
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 6889b98ab1..a86f722db9 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -52,6 +52,7 @@
#include "llfloaterworldmap.h"
#include "llviewergenericmessage.h" // send_generic_message
#include "llviewerregion.h"
+#include "llviewertexture.h"
#include "lltrans.h"
#include "llscrollcontainer.h"
#include "llstatusbar.h"
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 6b9edcb07c..79713ddb12 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -30,6 +30,7 @@
#include "llpanel.h"
#include "llwearable.h"
#include "lluictrl.h"
+#include "lllocaltextureobject.h"
#include "llscrollingpanellist.h"
#include "llvisualparam.h"
#include "lltoolmorph.h"
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index a50d9074f7..74c810ea79 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -202,7 +202,7 @@ void LLPanelNearByMedia::onTopLost()
/*virtual*/
-void LLPanelNearByMedia::handleVisibilityChange ( BOOL new_visibility )
+void LLPanelNearByMedia::onVisibilityChange ( BOOL new_visibility )
{
if (new_visibility)
{
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index c3634de9b4..a9c1b190cf 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -48,7 +48,7 @@ public:
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/*virtual*/ void onTopLost();
- /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+ /*virtual*/ void onVisibilityChange ( BOOL new_visibility );
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 36234b9536..26496ec9e2 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -488,7 +488,7 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetCommitCallback("shop_btn_1", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
childSetCommitCallback("shop_btn_2", boost::bind(&LLPanelOutfitEdit::onShopButtonClicked, this), NULL);
- setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChanged, this, _2));
mWearablesGearMenuBtn = getChild<LLMenuButton>("wearables_gear_menu_btn");
mGearMenuBtn = getChild<LLMenuButton>("gear_menu_btn");
@@ -774,7 +774,7 @@ void LLPanelOutfitEdit::onPlusBtnClicked(void)
}
}
-void LLPanelOutfitEdit::onVisibilityChange(const LLSD &in_visible_chain)
+void LLPanelOutfitEdit::onVisibilityChanged(const LLSD &in_visible_chain)
{
showAddWearablesPanel(false);
mWearableItemsList->resetSelection();
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 5d4b8d4644..30870daf40 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -145,7 +145,7 @@ public:
void updatePlusButton();
void onPlusBtnClicked(void);
- void onVisibilityChange(const LLSD &in_visible_chain);
+ void onVisibilityChanged(const LLSD &in_visible_chain);
void applyFolderViewFilter(EFolderViewItemType type);
void applyListViewFilter(EListViewItemType type);
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 46c58cd139..76f260cca1 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -38,6 +38,7 @@ class LLFilterEditor;
class LLGroupList;
class LLMenuButton;
class LLTabContainer;
+class LLNetMap;
class LLPanelPeople
: public LLPanel
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index ce8057eead..b74547a9d7 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -302,9 +302,9 @@ void LLPanelPlaceProfile::processParcelInfo(const LLParcelData& parcel_data)
}
// virtual
-void LLPanelPlaceProfile::handleVisibilityChange(BOOL new_visibility)
+void LLPanelPlaceProfile::onVisibilityChange(BOOL new_visibility)
{
- LLPanel::handleVisibilityChange(new_visibility);
+ LLPanel::onVisibilityChange(new_visibility);
LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
if (!parcel_mgr)
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index a33fc12ce4..01adfd4940 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -47,7 +47,7 @@ public:
/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
- /*virtual*/ void handleVisibilityChange(BOOL new_visibility);
+ /*virtual*/ void onVisibilityChange(BOOL new_visibility);
// Displays information about the currently selected parcel
// without sending a request to the server.
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 6c2a01fc82..dc18cc6081 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -998,9 +998,9 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
}
// virtual
-void LLPanelPlaces::handleVisibilityChange(BOOL new_visibility)
+void LLPanelPlaces::onVisibilityChange(BOOL new_visibility)
{
- LLPanel::handleVisibilityChange(new_visibility);
+ LLPanel::onVisibilityChange(new_visibility);
if (!new_visibility && mPlaceInfoType == AGENT_INFO_TYPE)
{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 85bdc2c4e1..b6019ca32e 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -102,7 +102,7 @@ private:
void togglePickPanel(BOOL visible);
void togglePlaceInfoPanel(BOOL visible);
- /*virtual*/ void handleVisibilityChange(BOOL new_visibility);
+ /*virtual*/ void onVisibilityChange(BOOL new_visibility);
void updateVerbs();
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index e2e7006773..435797bf80 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -36,6 +36,7 @@
#include "lltabcontainer.h"
#include "llviewercontrol.h"
#include "llviewernetwork.h"
+#include "llweb.h"
static const std::string PANEL_PICKS = "panel_picks";
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 1830086da2..fa371bd0ca 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -169,7 +169,7 @@ BOOL LLPanelTopInfoBar::postBuild()
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this));
- setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChanged, this, _2));
return TRUE;
}
@@ -186,7 +186,7 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()
// when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of
// PanelTopInfoBar. See EXT-7951.
-void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show)
+void LLPanelTopInfoBar::onVisibilityChanged(const LLSD& show)
{
// this height is used as a vertical offset for ALREADY MINIMIZED floaters
// when PanelTopInfoBar visibility changes
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index d58d95be90..f37bd9c048 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -57,7 +57,7 @@ public:
/**
* Called when the top info bar gets shown or hidden
*/
- void onVisibilityChange(const LLSD& show);
+ void onVisibilityChanged(const LLSD& show);
boost::signals2::connection setResizeCallback( const resize_signal_t::slot_type& cb );
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index 6be2ea6481..1782afddd9 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -85,7 +85,7 @@ BOOL LLPanelVoiceDeviceSettings::postBuild()
}
// virtual
-void LLPanelVoiceDeviceSettings::handleVisibilityChange ( BOOL new_visibility )
+void LLPanelVoiceDeviceSettings::onVisibilityChange ( BOOL new_visibility )
{
if (new_visibility)
{
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
index ba3bcad0dc..83464f476a 100644
--- a/indra/newview/llpanelvoicedevicesettings.h
+++ b/indra/newview/llpanelvoicedevicesettings.h
@@ -44,7 +44,7 @@ public:
void initialize();
void cleanup();
- /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+ /*virtual*/ void onVisibilityChange ( BOOL new_visibility );
void setUseTuningMode(bool use) { mUseTuningMode = use; };
diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp
index 5fec6d967d..59ed53815b 100644
--- a/indra/newview/llpanelvoiceeffect.cpp
+++ b/indra/newview/llpanelvoiceeffect.cpp
@@ -35,6 +35,7 @@
#include "lltrans.h"
#include "lltransientfloatermgr.h"
#include "llvoiceclient.h"
+#include "llweb.h"
static LLRegisterPanelClassWrapper<LLPanelVoiceEffect> t_panel_voice_effect("panel_voice_effect");
diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp
index aea7b33d7f..cb00f742cc 100644
--- a/indra/newview/llpanelvolumepulldown.cpp
+++ b/indra/newview/llpanelvolumepulldown.cpp
@@ -87,7 +87,7 @@ void LLPanelVolumePulldown::onMouseLeave(S32 x, S32 y, MASK mask)
}
/*virtual*/
-void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility )
+void LLPanelVolumePulldown::onVisibilityChange ( BOOL new_visibility )
{
if (new_visibility)
{
diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h
index 0d86e6bd28..b843fab756 100644
--- a/indra/newview/llpanelvolumepulldown.h
+++ b/indra/newview/llpanelvolumepulldown.h
@@ -42,7 +42,7 @@ class LLPanelVolumePulldown : public LLPanel
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
/*virtual*/ void onTopLost();
- /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+ /*virtual*/ void onVisibilityChange ( BOOL new_visibility );
/*virtual*/ BOOL postBuild();
private:
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index cbb4d5f964..bda603262d 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -253,7 +253,7 @@ void LLPreviewGesture::onUpdateSucceeded()
refresh();
}
-void LLPreviewGesture::onVisibilityChange ( const LLSD& new_visibility )
+void LLPreviewGesture::onVisibilityChanged ( const LLSD& new_visibility )
{
if (new_visibility.asBoolean())
{
@@ -333,7 +333,7 @@ LLPreviewGesture::~LLPreviewGesture()
BOOL LLPreviewGesture::postBuild()
{
- setVisibleCallback(boost::bind(&LLPreviewGesture::onVisibilityChange, this, _2));
+ setVisibleCallback(boost::bind(&LLPreviewGesture::onVisibilityChanged, this, _2));
LLLineEditor* edit;
LLComboBox* combo;
diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h
index fd4fcf9d8f..7ce5706a0d 100644
--- a/indra/newview/llpreviewgesture.h
+++ b/indra/newview/llpreviewgesture.h
@@ -102,7 +102,7 @@ protected:
// "Sound", "Chat", or "Wait"
LLScrollListItem* addStep(const enum EStepType step_type);
- void onVisibilityChange ( const LLSD& new_visibility );
+ void onVisibilityChanged ( const LLSD& new_visibility );
static std::string getLabel(std::vector<std::string> labels);
static void updateLabel(LLScrollListItem* item);
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index c592fd0a38..f744a924f5 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -50,36 +50,30 @@ LLSceneMonitorView* gSceneMonitorView = NULL;
//2, (?) disable all sky and water;
//3, capture frames periodically, by calling "capture()";
//4, compute pixel differences between two latest captured frames, by calling "compare()", results are stored at mDiff;
-//5, compute the number of pixels in mDiff above some tolerance threshold in GPU, by calling "queryDiff() -> calcDiffAggregate()";
+//5, compute the number of pixels in mDiff above some tolerance threshold in GPU, by calling "calcDiffAggregate()";
//6, use gl occlusion query to fetch the result from GPU, by calling "fetchQueryResult()";
//END.
//
LLSceneMonitor::LLSceneMonitor() :
- mEnabled(FALSE),
+ mEnabled(false),
mDiff(NULL),
mDiffResult(0.f),
mDiffTolerance(0.1f),
- mCurTarget(NULL),
- mNeedsUpdateDiff(FALSE),
- mHasNewDiff(FALSE),
- mHasNewQueryResult(FALSE),
- mDebugViewerVisible(FALSE),
- mQuitting(FALSE),
+ mDiffState(WAITING_FOR_NEXT_DIFF),
+ mDebugViewerVisible(false),
mQueryObject(0),
- mSamplingTime(1.0f),
mDiffPixelRatio(0.5f)
{
mFrames[0] = NULL;
mFrames[1] = NULL;
- mRecording = new LLTrace::ExtendableRecording();
- mRecording->start();
+ mRecording = new LLTrace::ExtendablePeriodicRecording();
}
LLSceneMonitor::~LLSceneMonitor()
{
- mQuitting = TRUE;
+ mDiffState = VIEWER_QUITTING;
destroyClass();
}
@@ -101,7 +95,8 @@ void LLSceneMonitor::reset()
mFrames[0] = NULL;
mFrames[1] = NULL;
mDiff = NULL;
- mCurTarget = NULL;
+
+ mRecording->reset();
unfreezeScene();
@@ -173,54 +168,15 @@ void LLSceneMonitor::generateDitheringTexture(S32 width, S32 height)
mDitherScaleT = (F32)height / mDitherMatrixWidth;
}
-void LLSceneMonitor::setDebugViewerVisible(BOOL visible)
+void LLSceneMonitor::setDebugViewerVisible(bool visible)
{
mDebugViewerVisible = visible;
}
-bool LLSceneMonitor::preCapture()
+LLRenderTarget& LLSceneMonitor::getCaptureTarget()
{
- static LLCachedControl<bool> monitor_enabled(gSavedSettings,"SceneLoadingMonitorEnabled");
- static LLFrameTimer timer;
-
- mCurTarget = NULL;
- if (!LLGLSLShader::sNoFixedFunction)
- {
- return false;
- }
-
- BOOL enabled = (BOOL)monitor_enabled || mDebugViewerVisible;
- if(mEnabled != enabled)
- {
- if(mEnabled)
- {
- reset();
- unfreezeScene();
- }
- else
- {
- freezeScene();
- }
-
- mEnabled = enabled;
- }
-
- if(!mEnabled)
- {
- return false;
- }
+ LLRenderTarget* cur_target = NULL;
- if(gAgent.isPositionChanged())
- {
- mRecording->reset();
- }
-
- if(timer.getElapsedTimeF32() < mSamplingTime)
- {
- return false;
- }
- timer.reset();
-
S32 width = gViewerWindow->getWorldViewWidthRaw();
S32 height = gViewerWindow->getWorldViewHeightRaw();
@@ -232,7 +188,7 @@ bool LLSceneMonitor::preCapture()
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- mCurTarget = mFrames[0];
+ cur_target = mFrames[0];
}
else if(!mFrames[1])
{
@@ -242,21 +198,22 @@ bool LLSceneMonitor::preCapture()
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
- mCurTarget = mFrames[1];
+ cur_target = mFrames[1];
}
else //swap
{
- mCurTarget = mFrames[0];
+ cur_target = mFrames[0];
mFrames[0] = mFrames[1];
- mFrames[1] = mCurTarget;
+ mFrames[1] = cur_target;
}
- if(mCurTarget->getWidth() != width || mCurTarget->getHeight() != height) //size changed
+ if(cur_target->getWidth() != width || cur_target->getHeight() != height) //size changed
{
- mCurTarget->resize(width, height, GL_RGB);
+ cur_target->resize(width, height, GL_RGB);
}
- return true;
+ // we're promising the target exists
+ return *cur_target;
}
void LLSceneMonitor::freezeAvatar(LLCharacter* avatarp)
@@ -289,7 +246,7 @@ void LLSceneMonitor::unfreezeScene()
//thaw all avatars
mAvatarPauseHandles.clear();
- if(mQuitting)
+ if(mDiffState == VIEWER_QUITTING)
{
return; //we are quitting viewer.
}
@@ -308,61 +265,95 @@ void LLSceneMonitor::unfreezeScene()
void LLSceneMonitor::capture()
{
static U32 last_capture_time = 0;
+ static LLCachedControl<bool> monitor_enabled(gSavedSettings, "SceneLoadingMonitorEnabled");
+ static LLCachedControl<F32> scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime");
+ static LLFrameTimer timer;
- if(last_capture_time == gFrameCount)
+ LLTrace::Recording& last_frame_recording = LLTrace::get_frame_recording().getLastRecording();
+ if (mEnabled
+ && (last_frame_recording.getSum(*LLViewerCamera::getVelocityStat()) > 0.001f
+ || last_frame_recording.getSum(*LLViewerCamera::getAngularVelocityStat()) > 0.01f))
{
- return;
+ reset();
+ freezeScene();
}
- last_capture_time = gFrameCount;
-
- preCapture();
- if(!mCurTarget)
+ bool enabled = monitor_enabled || mDebugViewerVisible;
+ if(mEnabled != enabled)
{
- return;
+ if(mEnabled)
+ {
+ unfreezeScene();
+ }
+ else
+ {
+ reset();
+ freezeScene();
+ }
+
+ mEnabled = enabled;
}
-
- U32 old_FBO = LLRenderTarget::sCurFBO;
- gGL.getTexUnit(0)->bind(mCurTarget);
- glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); //point to the main frame buffer.
+ if(timer.getElapsedTimeF32() > scene_load_sample_time()
+ && mEnabled
+ && LLGLSLShader::sNoFixedFunction
+ && last_capture_time != gFrameCount)
+ {
+ mRecording->resume();
+
+ timer.reset();
+
+ last_capture_time = gFrameCount;
+
+ LLRenderTarget& cur_target = getCaptureTarget();
+
+ U32 old_FBO = LLRenderTarget::sCurFBO;
+
+ gGL.getTexUnit(0)->bind(&cur_target);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); //point to the main frame buffer.
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, mCurTarget->getWidth(), mCurTarget->getHeight()); //copy the content
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, cur_target.getWidth(), cur_target.getHeight()); //copy the content
- glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
- glBindFramebuffer(GL_FRAMEBUFFER, old_FBO);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
+ glBindFramebuffer(GL_FRAMEBUFFER, old_FBO);
- mCurTarget = NULL;
- mNeedsUpdateDiff = TRUE;
+ mDiffState = NEED_DIFF;
+ }
}
bool LLSceneMonitor::needsUpdate() const
{
- return mNeedsUpdateDiff;
+ return mDiffState == NEED_DIFF;
}
+static LLFastTimer::DeclareTimer FTM_GENERATE_SCENE_LOAD_DITHER_TEXTURE("Generate Scene Load Dither Texture");
+static LLFastTimer::DeclareTimer FTM_SCENE_LOAD_IMAGE_DIFF("Scene Load Image Diff");
+
void LLSceneMonitor::compare()
{
- if(!mNeedsUpdateDiff)
+ if(mDiffState != NEED_DIFF)
{
return;
}
- mNeedsUpdateDiff = FALSE;
if(!mFrames[0] || !mFrames[1])
{
return;
}
if(mFrames[0]->getWidth() != mFrames[1]->getWidth() || mFrames[0]->getHeight() != mFrames[1]->getHeight())
- {
- return; //size does not match
+ { //size does not match
+ return;
}
+ LLFastTimer _(FTM_SCENE_LOAD_IMAGE_DIFF);
+ mDiffState = EXECUTE_DIFF;
+
S32 width = gViewerWindow->getWindowWidthRaw();
S32 height = gViewerWindow->getWindowHeightRaw();
if(!mDiff)
{
+ LLFastTimer _(FTM_GENERATE_SCENE_LOAD_DITHER_TEXTURE);
mDiff = new LLRenderTarget();
mDiff->allocate(width, height, GL_RGBA, false, false, LLTexUnit::TT_TEXTURE, true);
@@ -370,6 +361,7 @@ void LLSceneMonitor::compare()
}
else if(mDiff->getWidth() != width || mDiff->getHeight() != height)
{
+ LLFastTimer _(FTM_GENERATE_SCENE_LOAD_DITHER_TEXTURE);
mDiff->resize(width, height, GL_RGBA);
generateDitheringTexture(width, height);
}
@@ -411,26 +403,18 @@ void LLSceneMonitor::compare()
gGL.getTexUnit(2)->disable();
gGL.getTexUnit(2)->unbind(LLTexUnit::TT_TEXTURE);
- mHasNewDiff = TRUE;
-
- //send out the query request.
- queryDiff();
-}
-
-void LLSceneMonitor::queryDiff()
-{
- if(mDebugViewerVisible)
+ if (!mDebugViewerVisible)
{
- return;
+ calcDiffAggregate();
}
-
- calcDiffAggregate();
}
//calculate Diff aggregate information in GPU, and enable gl occlusion query to capture it.
void LLSceneMonitor::calcDiffAggregate()
{
- if(!mHasNewDiff && !mDebugViewerVisible)
+ LLFastTimer _(FTM_SCENE_LOAD_IMAGE_DIFF);
+
+ if(mDiffState != EXECUTE_DIFF && !mDebugViewerVisible)
{
return;
}
@@ -452,18 +436,17 @@ void LLSceneMonitor::calcDiffAggregate()
gOneTextureFilterProgram.bind();
gOneTextureFilterProgram.uniform1f("tolerance", mDiffTolerance);
- if(mHasNewDiff)
+ if(mDiffState == EXECUTE_DIFF)
{
glBeginQueryARB(GL_SAMPLES_PASSED_ARB, mQueryObject);
}
gl_draw_scaled_target(0, 0, S32(mDiff->getWidth() * mDiffPixelRatio), S32(mDiff->getHeight() * mDiffPixelRatio), mDiff);
- if(mHasNewDiff)
+ if(mDiffState == EXECUTE_DIFF)
{
glEndQueryARB(GL_SAMPLES_PASSED_ARB);
- mHasNewDiff = FALSE;
- mHasNewQueryResult = TRUE;
+ mDiffState = WAIT_ON_RESULT;
}
gOneTextureFilterProgram.unbind();
@@ -482,67 +465,155 @@ void LLSceneMonitor::calcDiffAggregate()
static LLTrace::MeasurementStatHandle<> sFramePixelDiff("FramePixelDifference");
void LLSceneMonitor::fetchQueryResult()
{
- if(!mHasNewQueryResult)
- {
- return;
- }
- mHasNewQueryResult = FALSE;
+ LLFastTimer _(FTM_SCENE_LOAD_IMAGE_DIFF);
- GLuint available = 0;
- glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_AVAILABLE_ARB, &available);
- if(!available)
+ if(mDiffState == WAIT_ON_RESULT)
{
- return;
- }
+ mDiffState = WAITING_FOR_NEXT_DIFF;
- GLuint count = 0;
- glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_ARB, &count);
+ GLuint available = 0;
+ glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_AVAILABLE_ARB, &available);
+ if(available)
+ {
+ GLuint count = 0;
+ glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_ARB, &count);
- mDiffResult = count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio); //0.5 -> (front face + back face)
-
- addMonitorResult();
+ mDiffResult = count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio); //0.5 -> (front face + back face)
+
+ LL_DEBUGS("SceneMonitor") << "Frame difference: " << std::setprecision(4) << mDiffResult << LL_ENDL;
+ sample(sFramePixelDiff, mDiffResult);
+
+ static LLCachedControl<F32> diff_threshold(gSavedSettings,"SceneLoadingPixelDiffThreshold");
+ if(mDiffResult > diff_threshold())
+ {
+ mRecording->extend();
+ }
+ else
+ {
+ mRecording->getPotentialRecording().nextPeriod();
+ }
+ }
+ }
}
-void LLSceneMonitor::addMonitorResult()
+//dump results to a file _scene_xmonitor_results.csv
+void LLSceneMonitor::dumpToFile(std::string file_name)
{
- const F32 diff_threshold = 0.001f;
- if(mDiffResult < diff_threshold)
+ LL_INFOS("SceneMonitor") << "Saving scene load stats to " << file_name << LL_ENDL;
+
+ std::ofstream os(file_name.c_str());
+
+ //total scene loading time
+ os << std::setprecision(4);
+
+ LLTrace::PeriodicRecording& scene_load_recording = mRecording->getAcceptedRecording();
+ U32 frame_count = scene_load_recording.getNumPeriods();
+
+ LLUnit<LLUnits::Seconds, F64> frame_time;
+
+ os << "Stat";
+ for (S32 frame = 0; frame < frame_count; frame++)
{
- return;
+ frame_time += scene_load_recording.getPrevRecording(frame_count - frame).getDuration();
+ os << ", " << frame_time.value();
}
+ os << std::endl;
+
+ for (LLTrace::CountStatHandle<F64>::instance_iter it = LLTrace::CountStatHandle<F64>::beginInstances(), end_it = LLTrace::CountStatHandle<F64>::endInstances();
+ it != end_it;
+ ++it)
+ {
+ std::ostringstream row;
+ row << it->getName();
- mRecording->extend();
- sample(sFramePixelDiff, mDiffResult);
+ S32 samples = 0;
- ll_monitor_result_t result;
- result.mTimeStamp = LLImageGL::sLastFrameTime;
- result.mDiff = mDiffResult;
- mMonitorResults.push_back(result);
+ for (S32 i = frame_count - 1; i >= 0; --i)
+ {
+ samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
+ row << ", " << scene_load_recording.getPrevRecording(i).getSum(*it);
+ }
+
+ row << std::endl;
+
+ if (samples > 0)
+ {
+ os << row.str();
+ }
}
-//dump results to a file _scene_monitor_results.csv
-void LLSceneMonitor::dumpToFile(std::string file_name)
-{
- if(mMonitorResults.empty() || !getRecording())
+ for (LLTrace::CountStatHandle<S64>::instance_iter it = LLTrace::CountStatHandle<S64>::beginInstances(), end_it = LLTrace::CountStatHandle<S64>::endInstances();
+ it != end_it;
+ ++it)
{
- return; //nothing to dump
+ std::ostringstream row;
+ row << it->getName();
+
+ S32 samples = 0;
+
+ for (S32 i = frame_count - 1; i >= 0; --i)
+ {
+ samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
+ row << ", " << scene_load_recording.getPrevRecording(i).getSum(*it);
+ }
+
+ row << std::endl;
+
+ if (samples > 0)
+ {
+ os << row.str();
+ }
}
- std::ofstream os(file_name.c_str());
+ for (LLTrace::MeasurementStatHandle<F64>::instance_iter it = LLTrace::MeasurementStatHandle<F64>::beginInstances(), end_it = LLTrace::MeasurementStatHandle<F64>::endInstances();
+ it != end_it;
+ ++it)
+ {
+ std::ostringstream row;
+ row << it->getName();
- //total scene loading time
- os << llformat("Scene Loading time: %.4f seconds\n", (F32)getRecording()->getAcceptedRecording().getDuration().value());
+ S32 samples = 0;
+
+ for (S32 i = frame_count - 1; i >= 0; --i)
+ {
+ samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
+ row << ", " << scene_load_recording.getPrevRecording(i).getMean(*it);
+ }
- S32 num_results = mMonitorResults.size();
- for(S32 i = 0; i < num_results; i++)
+ row << std::endl;
+
+ if (samples > 0)
+ {
+ os << row.str();
+ }
+ }
+
+ for (LLTrace::MeasurementStatHandle<S64>::instance_iter it = LLTrace::MeasurementStatHandle<S64>::beginInstances(), end_it = LLTrace::MeasurementStatHandle<S64>::endInstances();
+ it != end_it;
+ ++it)
{
- os << llformat("%.4f %.4f\n", mMonitorResults[i].mTimeStamp, mMonitorResults[i].mDiff);
+ std::ostringstream row;
+ row << it->getName();
+
+ S32 samples = 0;
+
+ for (S32 i = frame_count - 1; i >= 0; --i)
+ {
+ samples += scene_load_recording.getPrevRecording(i).getSampleCount(*it);
+ row << ", " << scene_load_recording.getPrevRecording(i).getMean(*it);
+ }
+
+ row << std::endl;
+
+ if (samples > 0)
+ {
+ os << row.str();
+ }
}
os.flush();
os.close();
- mMonitorResults.clear();
}
//-------------------------------------------------------------------------------------------------------------
@@ -563,12 +634,10 @@ void LLSceneMonitorView::onClickCloseBtn()
setVisible(false);
}
-void LLSceneMonitorView::setVisible(BOOL visible)
+void LLSceneMonitorView::onVisibilityChange(BOOL visible)
{
visible = visible && LLGLSLShader::sNoFixedFunction;
LLSceneMonitor::getInstance()->setDebugViewerVisible(visible);
-
- LLView::setVisible(visible);
}
void LLSceneMonitorView::draw()
@@ -582,8 +651,6 @@ void LLSceneMonitorView::draw()
F32 ratio = LLSceneMonitor::getInstance()->getDiffPixelRatio();
S32 height = (S32)(target->getHeight() * ratio);
S32 width = (S32)(target->getWidth() * ratio);
- //S32 height = (S32) (gViewerWindow->getWindowRectScaled().getHeight()*0.5f);
- //S32 width = (S32) (gViewerWindow->getWindowRectScaled().getWidth() * 0.5f);
LLRect new_rect;
new_rect.setLeftTopAndSize(getRect().mLeft, getRect().mTop, width, height);
@@ -608,7 +675,7 @@ void LLSceneMonitorView::draw()
LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP);
lines++;
- num_str = llformat("Sampling time: %.3f seconds", LLSceneMonitor::getInstance()->getSamplingTime());
+ num_str = llformat("Sampling time: %.3f seconds", gSavedSettings.getF32("SceneLoadingMonitorSampleTime"));
LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP);
lines++;
diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h
index c897b237b6..3351ed0579 100644
--- a/indra/newview/llscenemonitor.h
+++ b/indra/newview/llscenemonitor.h
@@ -39,6 +39,7 @@ class LLViewerTexture;
class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
{
+ LOG_CLASS(LLSceneMonitor);
public:
LLSceneMonitor();
~LLSceneMonitor();
@@ -46,11 +47,10 @@ public:
void destroyClass();
void freezeAvatar(LLCharacter* avatarp);
- void setDebugViewerVisible(BOOL visible);
+ void setDebugViewerVisible(bool visible);
void capture(); //capture the main frame buffer
void compare(); //compare the stored two buffers.
- void queryDiff();
void fetchQueryResult();
void calcDiffAggregate();
void setDiffTolerance(F32 tol) {mDiffTolerance = tol;}
@@ -58,40 +58,41 @@ public:
const LLRenderTarget* getDiffTarget() const {return mDiff;}
F32 getDiffTolerance() const {return mDiffTolerance;}
F32 getDiffResult() const { return mDiffResult;}
- F32 getSamplingTime() const { return mSamplingTime;}
F32 getDiffPixelRatio() const { return mDiffPixelRatio;}
bool isEnabled()const {return mEnabled;}
bool needsUpdate() const;
- LLTrace::ExtendableRecording* getRecording() const {return mRecording;}
+ LLTrace::ExtendablePeriodicRecording* getRecording() const {return mRecording;}
void dumpToFile(std::string file_name);
- bool hasResults() const { return !mMonitorResults.empty();}
+ bool hasResults() const { return mRecording->getAcceptedRecording().getDuration() != 0;}
private:
void freezeScene();
void unfreezeScene();
void reset();
- bool preCapture();
+ LLRenderTarget& getCaptureTarget();
void generateDitheringTexture(S32 width, S32 height);
- void addMonitorResult();
private:
- BOOL mEnabled;
- BOOL mNeedsUpdateDiff;
- BOOL mHasNewDiff;
- BOOL mHasNewQueryResult;
- BOOL mDebugViewerVisible;
- BOOL mQuitting;
+ bool mEnabled;
+ bool mDebugViewerVisible;
+
+ enum EDiffState
+ {
+ WAITING_FOR_NEXT_DIFF,
+ NEED_DIFF,
+ EXECUTE_DIFF,
+ WAIT_ON_RESULT,
+ VIEWER_QUITTING
+ } mDiffState;
LLRenderTarget* mFrames[2];
LLRenderTarget* mDiff;
- LLRenderTarget* mCurTarget;
GLuint mQueryObject; //used for glQuery
F32 mDiffResult; //aggregate results of mDiff.
F32 mDiffTolerance; //pixels are filtered out when R+G+B < mDiffTolerance
- F32 mSamplingTime; //time interval to capture frames, in seconds
F32 mDiffPixelRatio; //ratio of pixels used for comparison against the original mDiff size along one dimension
LLPointer<LLViewerTexture> mDitheringTexture;
@@ -102,15 +103,7 @@ private:
std::vector<LLAnimPauseRequest> mAvatarPauseHandles;
- LLTrace::ExtendableRecording* mRecording;
-
- //---------------------------------------
- typedef struct _monitor_result
- {
- F32 mTimeStamp;
- F32 mDiff;
- } ll_monitor_result_t;
- std::vector<ll_monitor_result_t> mMonitorResults;
+ LLTrace::ExtendablePeriodicRecording* mRecording;
};
class LLSceneMonitorView : public LLFloater
@@ -119,7 +112,8 @@ public:
LLSceneMonitorView(const LLRect& rect);
virtual void draw();
- virtual void setVisible(BOOL visible);
+
+ virtual void onVisibilityChange(BOOL visible);
protected:
virtual void onClickCloseBtn();
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index d909a218e3..e0fb09d86d 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -142,7 +142,7 @@ BOOL LLSidepanelAppearance::postBuild()
mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
- setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChange,this,_2));
+ setVisibleCallback(boost::bind(&LLSidepanelAppearance::onVisibilityChanged,this,_2));
return TRUE;
}
@@ -181,7 +181,7 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
mOpened = true;
}
-void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility)
+void LLSidepanelAppearance::onVisibilityChanged(const LLSD &new_visibility)
{
LLSD visibility;
visibility["visible"] = new_visibility.asBoolean();
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 6dd3520266..8564827a17 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -67,7 +67,7 @@ public:
private:
void onFilterEdit(const std::string& search_string);
- void onVisibilityChange ( const LLSD& new_visibility );
+ void onVisibilityChanged ( const LLSD& new_visibility );
void onOpenOutfitButtonClicked();
void onEditAppearanceButtonClicked();
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 986ac14140..191e0abefd 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -162,7 +162,7 @@ BOOL LLSidepanelTaskInfo::postBuild()
return TRUE;
}
-/*virtual*/ void LLSidepanelTaskInfo::handleVisibilityChange ( BOOL visible )
+/*virtual*/ void LLSidepanelTaskInfo::onVisibilityChange ( BOOL visible )
{
if (visible)
{
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 05edcda5ed..a1479ef0e7 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -50,7 +50,7 @@ public:
virtual ~LLSidepanelTaskInfo();
/*virtual*/ BOOL postBuild();
- /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+ /*virtual*/ void onVisibilityChange ( BOOL new_visibility );
void setObjectSelection(LLObjectSelectionHandle selection);
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 07d2f1ad6f..5ad8165a72 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -33,7 +33,9 @@
#include "llimview.h"
#include "llsdutil.h"
#include "lluicolortable.h"
+#include "llhttpclient.h"
#include "llviewerobjectlist.h"
+#include "llviewerregion.h"
#include "llvoavatar.h"
#include "llworld.h"
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index cf2b491d6c..f748344cc8 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2048,7 +2048,7 @@ bool idle_startup()
static LLFrameTimer wearables_timer;
const F32 wearables_time = wearables_timer.getElapsedTimeF32();
- const F32 MAX_WEARABLES_TIME = 10.f;
+ static LLCachedControl<F32> max_wearables_time(gSavedSettings, "ClothingLoadingDelay");
if (!gAgent.isGenderChosen() && isAgentAvatarValid())
{
@@ -2068,7 +2068,7 @@ bool idle_startup()
display_startup();
- if (wearables_time > MAX_WEARABLES_TIME)
+ if (wearables_time > max_wearables_time())
{
LLNotificationsUtil::add("ClothingLoading");
add(LLStatViewer::LOADING_WEARABLES_LONG_DELAY, 1);
@@ -2102,7 +2102,7 @@ bool idle_startup()
display_startup();
update_texture_fetch();
display_startup();
- set_startup_status(0.9f + 0.1f * wearables_time / MAX_WEARABLES_TIME,
+ set_startup_status(0.9f + 0.1f * wearables_time / max_wearables_time(),
LLTrans::getString("LoginDownloadingClothing").c_str(),
gAgent.mMOTD.c_str());
display_startup();
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index d6cd881894..1c2bbbed27 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -31,6 +31,7 @@
#include "llagent.h"
#include "llimagej2c.h"
#include "llimagetga.h"
+#include "lllocaltextureobject.h"
#include "llnotificationsutil.h"
#include "llvfile.h"
#include "llvfs.h"
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index a0c12df834..61d879278d 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -42,6 +42,7 @@
#include "llfloaterscriptdebug.h"
#include "lltooltip.h"
#include "llhudeffecttrail.h"
+#include "llhudicon.h"
#include "llhudmanager.h"
#include "llkeyboard.h"
#include "llmediaentry.h"
diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp
index 7c604a04bf..0a9153eecb 100644
--- a/indra/newview/lltoolselect.cpp
+++ b/indra/newview/lltoolselect.cpp
@@ -32,6 +32,7 @@
#include "llagentcamera.h"
#include "llviewercontrol.h"
#include "lldrawable.h"
+#include "llhudicon.h"
#include "llmanip.h"
#include "llmenugl.h"
#include "llselectmgr.h"
diff --git a/indra/newview/lltoolselect.h b/indra/newview/lltoolselect.h
index baa27f6071..74dababe8c 100644
--- a/indra/newview/lltoolselect.h
+++ b/indra/newview/lltoolselect.h
@@ -34,7 +34,7 @@
class LLObjectSelection;
-class LLToolSelect : public LLTool, public LLSingleton<LLToolSelect>
+class LLToolSelect : public LLTool
{
public:
LLToolSelect( LLToolComposite* composite );
diff --git a/indra/newview/llviewerassetstats.h b/indra/newview/llviewerassetstats.h
index 5b25d791a9..56eaa13df9 100644
--- a/indra/newview/llviewerassetstats.h
+++ b/indra/newview/llviewerassetstats.h
@@ -38,6 +38,7 @@
#include "llsd.h"
#include "llvoavatar.h"
#include "lltrace.h"
+#include "llinitparam.h"
/**
* @class LLViewerAssetStats
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index 8d8c401dac..4e97dfb201 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -36,6 +36,7 @@
#include "llviewerwindow.h"
#include "llvoiceclient.h"
#include "llviewermedia.h"
+#include "llviewerregion.h"
#include "llprogressview.h"
#include "llcallbacklist.h"
#include "llstartup.h"
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 1f5bdc8589..45302ebb74 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -57,7 +57,7 @@
LLTrace::CountStatHandle<> LLViewerCamera::sVelocityStat("camera_velocity");
LLTrace::CountStatHandle<> LLViewerCamera::sAngularVelocityStat("camera_angular_velocity");
-U32 LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
+LLViewerCamera::eCameraID LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
//glu pick matrix implementation borrowed from Mesa3D
glh::matrix4f gl_pick_matrix(GLfloat x, GLfloat y, GLfloat width, GLfloat height, GLint* viewport)
diff --git a/indra/newview/llviewercamera.h b/indra/newview/llviewercamera.h
index d7835d8567..7b2887d725 100644
--- a/indra/newview/llviewercamera.h
+++ b/indra/newview/llviewercamera.h
@@ -80,7 +80,7 @@ public:
NUM_CAMERAS
} eCameraID;
- static U32 sCurCameraID;
+ static eCameraID sCurCameraID;
LLViewerCamera();
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 0889c3ec6c..5974c84596 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -85,9 +85,6 @@ extern bool gShiftFrame;
LLPointer<LLViewerTexture> gDisconnectedImagep = NULL;
// used to toggle renderer back on after teleport
-const F32 TELEPORT_RENDER_DELAY = 20.f; // Max time a teleport is allowed to take before we raise the curtain
-const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived.
-const F32 TELEPORT_LOCAL_DELAY = 1.0f; // Delay to prevent teleports after starting an in-sim teleport.
BOOL gTeleportDisplay = FALSE;
LLFrameTimer gTeleportDisplayTimer;
LLFrameTimer gTeleportArrivalTimer;
@@ -373,7 +370,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
{
LLFastTimer t(FTM_TELEPORT_DISPLAY);
LLAppViewer::instance()->pingMainloopTimeout("Display:Teleport");
- const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived.
+ static LLCachedControl<F32> teleport_arrival_delay(gSavedSettings, "TeleportArrivalDelay");
+ static LLCachedControl<F32> teleport_local_delay(gSavedSettings, "TeleportLocalDelay");
S32 attach_count = 0;
if (isAgentAvatarValid())
@@ -441,7 +439,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
case LLAgent::TELEPORT_ARRIVING:
// Make the user wait while content "pre-caches"
{
- F32 arrival_fraction = (gTeleportArrivalTimer.getElapsedTimeF32() / TELEPORT_ARRIVAL_DELAY);
+ F32 arrival_fraction = (gTeleportArrivalTimer.getElapsedTimeF32() / teleport_arrival_delay());
if( arrival_fraction > 1.f )
{
arrival_fraction = 1.f;
@@ -458,7 +456,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
// Short delay when teleporting in the same sim (progress screen active but not shown - did not
// fall-through from TELEPORT_START)
{
- if( gTeleportDisplayTimer.getElapsedTimeF32() > TELEPORT_LOCAL_DELAY )
+ if( gTeleportDisplayTimer.getElapsedTimeF32() > teleport_local_delay() )
{
//LLFirstUse::useTeleport();
gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
@@ -805,6 +803,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
}
}
+ LLSceneMonitor::getInstance()->fetchQueryResult();
+
LLGLState::checkStates();
LLGLState::checkClientArrays();
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 5d1aa870a3..1850ed45d1 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -128,7 +128,6 @@ BOOL LLSkinJoint::setupSkinJoint( LLViewerJoint *joint)
//-----------------------------------------------------------------------------
BOOL LLViewerJointMesh::sPipelineRender = FALSE;
-EAvatarRenderPass LLViewerJointMesh::sRenderPass = AVATAR_RENDER_PASS_SINGLE;
U32 LLViewerJointMesh::sClothingMaskImageName = 0;
LLColor4 LLViewerJointMesh::sClothingInnerColor;
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index dd5dae1dc1..614d87f2b1 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -37,13 +37,6 @@ class LLFace;
class LLCharacter;
class LLTexLayerSet;
-typedef enum e_avatar_render_pass
-{
- AVATAR_RENDER_PASS_SINGLE,
- AVATAR_RENDER_PASS_CLOTHING_INNER,
- AVATAR_RENDER_PASS_CLOTHING_OUTER
-} EAvatarRenderPass;
-
class LLSkinJoint
{
public:
@@ -84,7 +77,6 @@ public:
static BOOL sPipelineRender;
//RN: this is here for testing purposes
static U32 sClothingMaskImageName;
- static EAvatarRenderPass sRenderPass;
static LLColor4 sClothingInnerColor;
public:
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index ef28c3ad53..50b14183c7 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -39,6 +39,7 @@
#include "llfloaterreg.h"
#include "llfontgl.h"
#include "llframetimer.h"
+#include "llhudicon.h"
#include "llinventory.h"
#include "llinventorydefines.h"
#include "llmaterialtable.h"
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 942eb67823..536106fb1e 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -30,8 +30,7 @@
#include <map>
#include "llassetstorage.h"
-#include "lldarrayptr.h"
-#include "llhudicon.h"
+//#include "llhudicon.h"
#include "llinventory.h"
#include "llrefcount.h"
#include "llprimitive.h"
@@ -43,34 +42,30 @@
#include "v3math.h"
#include "llvertexbuffer.h"
#include "llbbox.h"
-#include "llbbox.h"
class LLAgent; // TODO: Get rid of this.
class LLAudioSource;
class LLAudioSourceVO;
-class LLDataPacker;
class LLColor4;
-class LLFrameTimer;
+class LLDataPacker;
+class LLDataPackerBinaryBuffer;
class LLDrawable;
-class LLHost;
class LLHUDText;
-class LLWorld;
-class LLNameValue;
-class LLNetMap;
+class LLHost;
class LLMessageSystem;
+class LLNameValue;
class LLPartSysData;
-class LLPrimitive;
class LLPipeline;
class LLTextureEntry;
-class LLViewerTexture;
+class LLVOAvatar;
+class LLVOInventoryListener;
class LLViewerInventoryItem;
class LLViewerObject;
+class LLViewerObjectMedia;
class LLViewerPartSourceScript;
class LLViewerRegion;
-class LLViewerObjectMedia;
-class LLVOInventoryListener;
-class LLVOAvatar;
-class LLDataPackerBinaryBuffer;
+class LLViewerTexture;
+class LLWorld;
typedef enum e_object_update_type
{
@@ -645,7 +640,7 @@ public:
// TODO: Make all this stuff private. JC
LLPointer<LLHUDText> mText;
- LLPointer<LLHUDIcon> mIcon;
+ LLPointer<class LLHUDIcon> mIcon;
static BOOL sUseSharedDrawables;
static LLTrace::MemStatHandle sMemStat;
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 4d0d3e8718..6ffd3d8fa4 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -47,6 +47,7 @@
#include "lltooltip.h"
#include "llworld.h"
#include "llstring.h"
+#include "llhudicon.h"
#include "llhudnametag.h"
#include "lldrawable.h"
#include "llflexibleobject.h"
@@ -2275,3 +2276,10 @@ bool LLViewerObjectList::OrphanInfo::operator!=(const OrphanInfo &rhs) const
}
+LLDebugBeacon::~LLDebugBeacon()
+{
+ if (mHUDObject.notNull())
+ {
+ mHUDObject->markDead();
+ }
+}
diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h
index a7a4969768..65447156e7 100644
--- a/indra/newview/llviewerobjectlist.h
+++ b/indra/newview/llviewerobjectlist.h
@@ -237,20 +237,14 @@ protected:
class LLDebugBeacon
{
public:
- ~LLDebugBeacon()
- {
- if (mHUDObject.notNull())
- {
- mHUDObject->markDead();
- }
- }
+ ~LLDebugBeacon();
LLVector3 mPositionAgent;
std::string mString;
LLColor4 mColor;
LLColor4 mTextColor;
S32 mLineWidth;
- LLPointer<LLHUDObject> mHUDObject;
+ LLPointer<class LLHUDObject> mHUDObject;
};
diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp
index 844075089f..d9e1774c6d 100644
--- a/indra/newview/llvieweroctree.cpp
+++ b/indra/newview/llvieweroctree.cpp
@@ -426,10 +426,7 @@ void LLViewerOctreeEntryData::setVisible() const
LLviewerOctreeGroup::~LLviewerOctreeGroup()
{
- if(LLViewerRegion::sCurRegionp && isVisible())
- {
- LLViewerRegion::sCurRegionp->clearVisibleGroup(this);
- }
+ //empty here
}
LLviewerOctreeGroup::LLviewerOctreeGroup(OctreeNode* node) :
@@ -623,7 +620,7 @@ void LLviewerOctreeGroup::handleChildAddition(const OctreeNode* parent, OctreeNo
}
else
{
- OCT_ERRS << "LLSpatialGroup redundancy detected." << llendl;
+ OCT_ERRS << "LLviewerOctreeGroup redundancy detected." << llendl;
}
unbound();
diff --git a/indra/newview/llvieweroctree.h b/indra/newview/llvieweroctree.h
index ed77e4bb7e..1d3533e95c 100644
--- a/indra/newview/llvieweroctree.h
+++ b/indra/newview/llvieweroctree.h
@@ -91,9 +91,6 @@ public:
void setGroup(LLviewerOctreeGroup* group);
void removeData(LLViewerOctreeEntryData* data);
- LLViewerOctreeEntryData* getData(U32 data_type)const {return mData[data_type];}
- bool hasData(U32 data_type)const {return mData[data_type] != NULL;}
-
LLViewerOctreeEntryData* getDrawable() const {return mData[LLDRAWABLE];}
bool hasDrawable() const {return mData[LLDRAWABLE] != NULL;}
LLViewerOctreeEntryData* getVOCacheEntry() const {return mData[LLVOCACHEENTRY];}
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index 27bfcd4343..5c71b4c49e 100644
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -27,7 +27,6 @@
#ifndef LL_LLVIEWERPARTSIM_H
#define LL_LLVIEWERPARTSIM_H
-#include "lldarrayptr.h"
#include "llframetimer.h"
#include "llpointer.h"
#include "llpartdata.h"
@@ -36,7 +35,6 @@
class LLViewerTexture;
class LLViewerPart;
class LLViewerRegion;
-class LLViewerTexture;
class LLVOPartGroup;
#define LL_MAX_PARTICLE_COUNT 8192
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index cafe28356d..137849234d 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -54,11 +54,9 @@
// Library headers from llcommon project:
#include "bitpack.h"
-#include "lldeleteutils.h"
#include "imageids.h"
#include "indra_constants.h"
#include "llinitparam.h"
-
#include "llallocator.h"
#include "llapp.h"
#include "llcriticaldamp.h"
@@ -67,11 +65,7 @@
#include "llerror.h"
#include "llfasttimer.h"
#include "llframetimer.h"
-#include "llhash.h"
-#include "lllocalidhashmap.h"
-#include "llnametable.h"
#include "llpointer.h"
-#include "llpriqueuemap.h"
#include "llprocessor.h"
#include "llrefcount.h"
#include "llsafehandle.h"
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index a2ff232d02..85da75510b 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -86,7 +86,6 @@ const F32 CAP_REQUEST_TIMEOUT = 18;
// Even though we gave up on login, keep trying for caps after we are logged in:
const S32 MAX_CAP_REQUEST_ATTEMPTS = 30;
-LLViewerRegion* LLViewerRegion::sCurRegionp = NULL;
BOOL LLViewerRegion::sVOCacheCullingEnabled = FALSE;
typedef std::map<std::string, std::string> CapabilityMap;
@@ -94,28 +93,29 @@ typedef std::map<std::string, std::string> CapabilityMap;
class LLViewerRegionImpl {
public:
LLViewerRegionImpl(LLViewerRegion * region, LLHost const & host)
- : mHost(host),
- mCompositionp(NULL),
- mEventPoll(NULL),
- mSeedCapMaxAttempts(MAX_CAP_REQUEST_ATTEMPTS),
- mSeedCapMaxAttemptsBeforeLogin(MAX_SEED_CAP_ATTEMPTS_BEFORE_LOGIN),
- mSeedCapAttempts(0),
- mHttpResponderID(0),
- mLastCameraUpdate(0),
- mLastCameraOrigin(),
- // I'd prefer to set the LLCapabilityListener name to match the region
- // name -- it's disappointing that's not available at construction time.
- // We could instead store an LLCapabilityListener*, making
- // setRegionNameAndZone() replace the instance. Would that pose
- // consistency problems? Can we even request a capability before calling
- // setRegionNameAndZone()?
- // For testability -- the new Michael Feathers paradigm --
- // LLCapabilityListener binds all the globals it expects to need at
- // construction time.
- mCapabilityListener(host.getString(), gMessageSystem, *region,
- gAgent.getID(), gAgent.getSessionID())
- {
- }
+ : mHost(host),
+ mCompositionp(NULL),
+ mEventPoll(NULL),
+ mSeedCapMaxAttempts(MAX_CAP_REQUEST_ATTEMPTS),
+ mSeedCapMaxAttemptsBeforeLogin(MAX_SEED_CAP_ATTEMPTS_BEFORE_LOGIN),
+ mSeedCapAttempts(0),
+ mHttpResponderID(0),
+ mLastCameraUpdate(0),
+ mLastCameraOrigin(),
+ mVOCachePartition(NULL),
+ mLandp(NULL),
+ // I'd prefer to set the LLCapabilityListener name to match the region
+ // name -- it's disappointing that's not available at construction time.
+ // We could instead store an LLCapabilityListener*, making
+ // setRegionNameAndZone() replace the instance. Would that pose
+ // consistency problems? Can we even request a capability before calling
+ // setRegionNameAndZone()?
+ // For testability -- the new Michael Feathers paradigm --
+ // LLCapabilityListener binds all the globals it expects to need at
+ // construction time.
+ mCapabilityListener(host.getString(), gMessageSystem, *region,
+ gAgent.getID(), gAgent.getSessionID())
+ {}
void buildCapabilityNames(LLSD& capabilityNames);
@@ -142,7 +142,7 @@ public:
LLVOCacheEntry::vocache_entry_map_t mCacheMap; //all cached entries
LLVOCacheEntry::vocache_entry_set_t mActiveSet; //all active entries;
LLVOCacheEntry::vocache_entry_set_t mWaitingSet; //entries waiting for LLDrawable to be generated.
- std::set< LLviewerOctreeGroup* > mVisibleGroups; //visible groupa
+ std::set< LLPointer<LLviewerOctreeGroup> > mVisibleGroups; //visible groupa
LLVOCachePartition* mVOCachePartition;
LLVOCacheEntry::vocache_entry_set_t mVisibleEntries; //must-be-created visible entries wait for objects creation.
LLVOCacheEntry::vocache_entry_priority_list_t mWaitingList; //transient list storing sorted visible entries waiting for object creation.
@@ -439,7 +439,7 @@ void LLViewerRegion::loadObjectCache()
// Presume success. If it fails, we don't want to try again.
mCacheLoaded = TRUE;
- if(LLVOCache::hasInstance())
+ if(LLVOCache::instanceExists())
{
LLVOCache::getInstance()->readFromCache(mHandle, mImpl->mCacheID, mImpl->mCacheMap) ;
if (mImpl->mCacheMap.empty())
@@ -462,7 +462,7 @@ void LLViewerRegion::saveObjectCache()
return;
}
- if(LLVOCache::hasInstance())
+ if(LLVOCache::instanceExists())
{
const F32 start_time_threshold = 600.0f; //seconds
bool removal_enabled = sVOCacheCullingEnabled && (mRegionTimer.getElapsedTimeF32() > start_time_threshold); //allow to remove invalid objects from object cache file.
@@ -755,7 +755,7 @@ void LLViewerRegion::replaceCacheEntry(LLVOCacheEntry* old_entry, LLVOCacheEntry
if(old_entry)
{
- old_entry->copyTo(new_entry);
+ old_entry->moveTo(new_entry);
state = old_entry->getState();
in_vo_tree = (state == LLVOCacheEntry::INACTIVE && old_entry->getGroup() != NULL);
killCacheEntry(old_entry);
@@ -942,18 +942,6 @@ void LLViewerRegion::addVisibleCacheEntry(LLVOCacheEntry* entry)
mImpl->mVisibleEntries.insert(entry);
}
-void LLViewerRegion::clearVisibleGroup(LLviewerOctreeGroup* group)
-{
- if(mDead)
- {
- return;
- }
-
- llassert(!group->getOctreeNode() || group->isEmpty());
-
- mImpl->mVisibleGroups.erase(group);
-}
-
F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
{
if(mImpl->mVisibleGroups.empty() && mImpl->mVisibleEntries.empty())
@@ -1024,11 +1012,12 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
#endif
//process visible groups
- std::set< LLviewerOctreeGroup* >::iterator group_iter = mImpl->mVisibleGroups.begin();
+ std::set< LLPointer<LLviewerOctreeGroup> >::iterator group_iter = mImpl->mVisibleGroups.begin();
for(; group_iter != mImpl->mVisibleGroups.end(); ++group_iter)
{
- LLviewerOctreeGroup* group = *group_iter;
- if(!group->getOctreeNode() || group->isEmpty())
+ LLPointer<LLviewerOctreeGroup> group = *group_iter;
+ if(group->getNumRefs() < 3 || //group to be deleted
+ !group->getOctreeNode() || group->isEmpty()) //group empty
{
continue;
}
@@ -1050,7 +1039,6 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time)
}
}
}
- mImpl->mVisibleGroups.clear();
if(needs_update)
{
@@ -1113,8 +1101,6 @@ BOOL LLViewerRegion::idleUpdate(F32 max_update_time)
return did_update;
}
- sCurRegionp = this;
-
//kill invisible objects
max_update_time = killInvisibleObjects(max_update_time);
@@ -1122,9 +1108,7 @@ BOOL LLViewerRegion::idleUpdate(F32 max_update_time)
createVisibleObjects(max_update_time);
mImpl->mVisibleGroups.clear();
- mImpl->mWaitingList.clear();
- sCurRegionp = NULL;
return did_update;
}
@@ -1135,16 +1119,40 @@ F32 LLViewerRegion::killInvisibleObjects(F32 max_time)
{
return max_time;
}
+ if(mImpl->mActiveSet.empty())
+ {
+ return max_time;
+ }
+ static LLVOCacheEntry* last_visited_entry = NULL;
+
+ const size_t MAX_UPDATE = 32;
std::vector<LLDrawable*> delete_list;
- for(LLVOCacheEntry::vocache_entry_set_t::iterator iter = mImpl->mActiveSet.begin();
- iter != mImpl->mActiveSet.end(); ++iter)
- {
+ S32 update_counter = llmin(MAX_UPDATE, mImpl->mActiveSet.size());
+ LLVOCacheEntry::vocache_entry_set_t::iterator iter = mImpl->mActiveSet.upper_bound(last_visited_entry);
+
+ for(; update_counter > 0; --update_counter, ++iter)
+ {
+ if(iter == mImpl->mActiveSet.end())
+ {
+ iter = mImpl->mActiveSet.begin();
+ }
+
if(!(*iter)->isRecentlyVisible())
{
killObject((*iter), delete_list);
}
}
+
+ if(iter == mImpl->mActiveSet.end())
+ {
+ last_visited_entry = NULL;
+ }
+ else
+ {
+ last_visited_entry = *iter;
+ }
+
for(S32 i = 0; i < delete_list.size(); i++)
{
gObjectList.killObject(delete_list[i]->getVObj());
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 410c903f18..fefd4209aa 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -224,7 +224,6 @@ public:
void addActiveCacheEntry(LLVOCacheEntry* entry);
void removeActiveCacheEntry(LLVOCacheEntry* entry, LLDrawable* drawablep);
void killCacheEntry(U32 local_id); //physically delete the cache entry
- void clearVisibleGroup(LLviewerOctreeGroup* group);
// Like idleUpdate, but forces everything to complete regardless of
// how long it takes.
@@ -395,7 +394,6 @@ public:
LLDynamicArray<U32> mMapAvatars;
LLDynamicArray<LLUUID> mMapAvatarIDs;
- static LLViewerRegion* sCurRegionp;
static BOOL sVOCacheCullingEnabled; //vo cache culling enabled or not.
private:
LLViewerRegionImpl * mImpl;
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 13a005dcbf..e8196e9655 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -64,7 +64,7 @@
namespace LLStatViewer
{
-LLTrace::CountStatHandle<> FPS("fpsstat"),
+LLTrace::CountStatHandle<> FPS("framesrendered"),
PACKETS_IN("packetsinstat"),
PACKETS_LOST("packetsloststat"),
PACKETS_OUT("packetsoutstat"),
@@ -322,19 +322,24 @@ void update_statistics()
add(LLStatViewer::TOOLBOX_TIME, gFrameIntervalSeconds);
}
}
+
+ LLTrace::Recording& last_frame_recording = LLTrace::get_frame_recording().getLastRecording();
+
sample(LLStatViewer::ENABLE_VBO, (F64)gSavedSettings.getBOOL("RenderVBOEnable"));
sample(LLStatViewer::LIGHTING_DETAIL, (F64)gPipeline.getLightingDetail());
sample(LLStatViewer::DRAW_DISTANCE, (F64)gSavedSettings.getF32("RenderFarClip"));
sample(LLStatViewer::CHAT_BUBBLES, (F64)gSavedSettings.getBOOL("UseChatBubbles"));
- sample(LLStatViewer::FRAME_STACKTIME, LLTrace::Seconds(gDebugView->mFastTimerView->getTime("Frame")));
- F64 idle_secs = gDebugView->mFastTimerView->getTime("Idle");
- F64 network_secs = gDebugView->mFastTimerView->getTime("Network");
- sample(LLStatViewer::UPDATE_STACKTIME, LLTrace::Seconds(idle_secs - network_secs));
- sample(LLStatViewer::NETWORK_STACKTIME, LLTrace::Seconds(network_secs));
- sample(LLStatViewer::IMAGE_STACKTIME, LLTrace::Seconds(gDebugView->mFastTimerView->getTime("Update Images")));
- sample(LLStatViewer::REBUILD_STACKTIME, LLTrace::Seconds(gDebugView->mFastTimerView->getTime("Sort Draw State")));
- sample(LLStatViewer::RENDER_STACKTIME, LLTrace::Seconds(gDebugView->mFastTimerView->getTime("Geometry")));
+ typedef LLInstanceTracker<LLTrace::TraceType<LLTrace::TimeBlockAccumulator>, std::string> trace_type_t;
+
+ sample(LLStatViewer::FRAME_STACKTIME, last_frame_recording.getSum(*trace_type_t::getInstance("Frame")).as<LLUnits::Seconds>());
+ LLUnit<LLUnits::Seconds, F64> idle_secs = last_frame_recording.getSum(*trace_type_t::getInstance("Idle"));
+ LLUnit<LLUnits::Seconds, F64> network_secs = last_frame_recording.getSum(*trace_type_t::getInstance("Network"));
+ sample(LLStatViewer::UPDATE_STACKTIME, idle_secs - network_secs);
+ sample(LLStatViewer::NETWORK_STACKTIME, network_secs);
+ sample(LLStatViewer::IMAGE_STACKTIME, last_frame_recording.getSum(*trace_type_t::getInstance("Update Images")).as<LLUnits::Seconds>());
+ sample(LLStatViewer::REBUILD_STACKTIME, last_frame_recording.getSum(*trace_type_t::getInstance("Sort Draw State")).as<LLUnits::Seconds>());
+ sample(LLStatViewer::RENDER_STACKTIME, last_frame_recording.getSum(*trace_type_t::getInstance("Render Geometry")).as<LLUnits::Seconds>());
LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(gAgent.getRegion()->getHost());
if (cdp)
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index e3df71cca2..7ce4a8fc70 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -34,6 +34,7 @@
#include "llui.h"
#include <list>
#include <set>
+#include "lluiimage.h"
const U32 LL_IMAGE_REZ_LOSSLESS_CUTOFF = 128;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index eb004106c3..53c9003fb4 100755
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -38,6 +38,7 @@
#include "llagent.h"
#include "llagentcamera.h"
#include "llfloaterreg.h"
+#include "llhudicon.h"
#include "llmeshrepository.h"
#include "llpanellogin.h"
#include "llviewerkeyboard.h"
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5a07cdf7c9..1381cf9314 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -55,7 +55,6 @@
#include "lldriverparam.h"
#include "lleditingmotion.h"
#include "llemote.h"
-//#include "llfirstuse.h"
#include "llfloatertools.h"
#include "llheadrotmotion.h"
#include "llhudeffecttrail.h"
@@ -80,10 +79,12 @@
#include "lltexlayer.h"
#include "lltoolmorph.h"
#include "llviewercamera.h"
+#include "llviewerjointmesh.h"
#include "llviewertexturelist.h"
#include "llviewermenu.h"
#include "llviewerobjectlist.h"
#include "llviewerparcelmgr.h"
+#include "llviewerregion.h"
#include "llviewershadermgr.h"
#include "llviewerstats.h"
#include "llvoavatarself.h"
@@ -216,6 +217,24 @@ struct LLTextureMaskData
S32 mLastDiscardLevel;
};
+// Simple utility functions to eventually replace the common 2-line
+// idiom scattered throughout the viewer codebase. Note that where
+// possible we would rather be using smart pointers of some sort.
+
+template <class T>
+inline void delete_and_clear(T*& ptr)
+{
+ delete ptr;
+ ptr = NULL;
+}
+
+template <class T>
+inline void delete_and_clear_array(T*& array_ptr)
+{
+ delete[] array_ptr;
+ array_ptr = NULL;
+}
+
/*********************************************************************************
** **
** Begin private LLVOAvatar Support classes
@@ -824,14 +843,14 @@ LLVOAvatar::~LLVOAvatar()
mRoot.removeAllChildren();
mJointMap.clear();
- deleteAndClearArray(mSkeleton);
- deleteAndClearArray(mCollisionVolumes);
+ delete_and_clear_array(mSkeleton);
+ delete_and_clear_array(mCollisionVolumes);
mNumJoints = 0;
for (U32 i = 0; i < mBakedTextureDatas.size(); i++)
{
- deleteAndClear(mBakedTextureDatas[i].mTexLayerSet);
+ delete_and_clear(mBakedTextureDatas[i].mTexLayerSet);
mBakedTextureDatas[i].mMeshes.clear();
for (morph_list_t::iterator iter2 = mBakedTextureDatas[i].mMaskedMorphs.begin();
@@ -845,9 +864,9 @@ LLVOAvatar::~LLVOAvatar()
std::for_each(mAttachmentPoints.begin(), mAttachmentPoints.end(), DeletePairedPointer());
mAttachmentPoints.clear();
- deleteAndClear(mTexSkinColor);
- deleteAndClear(mTexHairColor);
- deleteAndClear(mTexEyeColor);
+ delete_and_clear(mTexSkinColor);
+ delete_and_clear(mTexHairColor);
+ delete_and_clear(mTexEyeColor);
std::for_each(mMeshes.begin(), mMeshes.end(), DeletePairedPointer());
mMeshes.clear();
@@ -1234,7 +1253,7 @@ void LLVOAvatar::initClass()
// parse avatar_lad.xml
if (sAvatarXmlInfo)
{ //this can happen if a login attempt failed
- deleteAndClear(sAvatarXmlInfo);
+ delete_and_clear(sAvatarXmlInfo);
}
sAvatarXmlInfo = new LLVOAvatarXmlInfo;
if (!sAvatarXmlInfo->parseXmlSkeletonNode(root))
@@ -1278,7 +1297,7 @@ void LLVOAvatar::initClass()
void LLVOAvatar::cleanupClass()
{
- deleteAndClear(sAvatarXmlInfo);
+ delete_and_clear(sAvatarXmlInfo);
sSkeletonXMLTree.cleanup();
sXMLTree.cleanup();
}
@@ -4188,7 +4207,7 @@ U32 LLVOAvatar::renderSkinnedAttachments()
//-----------------------------------------------------------------------------
// renderSkinned()
//-----------------------------------------------------------------------------
-U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
+U32 LLVOAvatar::renderSkinned()
{
U32 num_indices = 0;
@@ -4324,57 +4343,50 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
//--------------------------------------------------------------------
// render all geometry attached to the skeleton
//--------------------------------------------------------------------
- LLViewerJointMesh::sRenderPass = pass;
-
- if (pass == AVATAR_RENDER_PASS_SINGLE)
- {
- bool should_alpha_mask = shouldAlphaMask();
- LLGLState test(GL_ALPHA_TEST, should_alpha_mask);
+ bool should_alpha_mask = shouldAlphaMask();
+ LLGLState test(GL_ALPHA_TEST, should_alpha_mask);
- if (should_alpha_mask && !LLGLSLShader::sNoFixedFunction)
- {
- gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
- }
+ if (should_alpha_mask && !LLGLSLShader::sNoFixedFunction)
+ {
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
+ }
- BOOL first_pass = TRUE;
- if (!LLDrawPoolAvatar::sSkipOpaque)
+ BOOL first_pass = TRUE;
+ if (!LLDrawPoolAvatar::sSkipOpaque)
+ {
+ if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender)
{
- if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender)
+ if (isTextureVisible(TEX_HEAD_BAKED) || mIsDummy)
{
- if (isTextureVisible(TEX_HEAD_BAKED) || mIsDummy)
- {
- num_indices += mMeshLOD[MESH_ID_HEAD]->render(mAdjustedPixelArea, TRUE, mIsDummy);
- first_pass = FALSE;
- }
- }
- if (isTextureVisible(TEX_UPPER_BAKED) || mIsDummy)
- {
- num_indices += mMeshLOD[MESH_ID_UPPER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
- first_pass = FALSE;
- }
-
- if (isTextureVisible(TEX_LOWER_BAKED) || mIsDummy)
- {
- num_indices += mMeshLOD[MESH_ID_LOWER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+ num_indices += mMeshLOD[MESH_ID_HEAD]->render(mAdjustedPixelArea, TRUE, mIsDummy);
first_pass = FALSE;
}
}
-
- if (should_alpha_mask && !LLGLSLShader::sNoFixedFunction)
+ if (isTextureVisible(TEX_UPPER_BAKED) || mIsDummy)
{
- gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ num_indices += mMeshLOD[MESH_ID_UPPER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+ first_pass = FALSE;
}
-
- if (!LLDrawPoolAvatar::sSkipTransparent || LLPipeline::sImpostorRender)
+
+ if (isTextureVisible(TEX_LOWER_BAKED) || mIsDummy)
{
- LLGLState blend(GL_BLEND, !mIsDummy);
- LLGLState test(GL_ALPHA_TEST, !mIsDummy);
- num_indices += renderTransparent(first_pass);
+ num_indices += mMeshLOD[MESH_ID_LOWER_BODY]->render(mAdjustedPixelArea, first_pass, mIsDummy);
+ first_pass = FALSE;
}
}
-
- LLViewerJointMesh::sRenderPass = AVATAR_RENDER_PASS_SINGLE;
+
+ if (should_alpha_mask && !LLGLSLShader::sNoFixedFunction)
+ {
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ }
+
+ if (!LLDrawPoolAvatar::sSkipTransparent || LLPipeline::sImpostorRender)
+ {
+ LLGLState blend(GL_BLEND, !mIsDummy);
+ LLGLState test(GL_ALPHA_TEST, !mIsDummy);
+ num_indices += renderTransparent(first_pass);
+ }
return num_indices;
}
@@ -5331,7 +5343,7 @@ LLVector3 LLVOAvatar::getPosAgentFromGlobal(const LLVector3d &position)
//-----------------------------------------------------------------------------
BOOL LLVOAvatar::allocateCharacterJoints( U32 num )
{
- deleteAndClearArray(mSkeleton);
+ delete_and_clear_array(mSkeleton);
mNumJoints = 0;
mSkeleton = new LLViewerJoint[num];
@@ -5355,7 +5367,7 @@ BOOL LLVOAvatar::allocateCharacterJoints( U32 num )
//-----------------------------------------------------------------------------
BOOL LLVOAvatar::allocateCollisionVolumes( U32 num )
{
- deleteAndClearArray(mCollisionVolumes);
+ delete_and_clear_array(mCollisionVolumes);
mNumCollisionVolumes = 0;
mCollisionVolumes = new LLViewerJointCollisionVolume[num];
@@ -7870,9 +7882,9 @@ LLVOAvatar::LLVOAvatarXmlInfo::~LLVOAvatarXmlInfo()
std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer());
std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());
std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer());
- deleteAndClear(mTexSkinColorInfo);
- deleteAndClear(mTexHairColorInfo);
- deleteAndClear(mTexEyeColorInfo);
+ delete_and_clear(mTexSkinColorInfo);
+ delete_and_clear(mTexHairColorInfo);
+ delete_and_clear(mTexEyeColorInfo);
std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());
std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer());
std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer());
@@ -8203,7 +8215,7 @@ BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root)
mTexSkinColorInfo = new LLTexGlobalColorInfo;
if( !mTexSkinColorInfo->parseXml( color_node ) )
{
- deleteAndClear(mTexSkinColorInfo);
+ delete_and_clear(mTexSkinColorInfo);
llwarns << "avatar file: mTexSkinColor->parseXml() failed" << llendl;
return FALSE;
}
@@ -8218,7 +8230,7 @@ BOOL LLVOAvatar::LLVOAvatarXmlInfo::parseXmlColorNodes(LLXmlTreeNode* root)
mTexHairColorInfo = new LLTexGlobalColorInfo;
if( !mTexHairColorInfo->parseXml( color_node ) )
{
- deleteAndClear(mTexHairColorInfo);
+ delete_and_clear(mTexHairColorInfo);
llwarns << "avatar file: mTexHairColor->parseXml() failed" << llendl;
return FALSE;
}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 1adb680962..87d3e40b8c 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -33,7 +33,7 @@
#include <string>
#include <vector>
-#include <boost/signals2.hpp>
+#include <boost/signals2/trackable.hpp>
#include "imageids.h" // IMG_INVISIBLE
#include "llchat.h"
@@ -69,6 +69,7 @@ class LLHUDEffectSpiral;
class LLTexGlobalColor;
class LLVOAvatarBoneInfo;
class LLVOAvatarSkeletonInfo;
+class LLViewerJointMesh;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// LLVOAvatar
@@ -435,7 +436,7 @@ public:
bool isVisuallyMuted() const;
U32 renderRigid();
- U32 renderSkinned(EAvatarRenderPass pass);
+ U32 renderSkinned();
F32 getLastSkinTime() { return mLastSkinTime; }
U32 renderSkinnedAttachments();
U32 renderTransparent(BOOL first_pass);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 4275552117..69f998f0f3 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -43,6 +43,7 @@
#include "llhudeffecttrail.h"
#include "llhudmanager.h"
#include "llinventoryfunctions.h"
+#include "lllocaltextureobject.h"
#include "llnotificationsutil.h"
#include "llselectmgr.h"
#include "lltoolgrab.h" // for needsRenderBeam
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index 6261540765..1a6ad90a78 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -170,7 +170,7 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file)
LLVOCacheEntry::~LLVOCacheEntry()
{
mDP.freeBuffer();
- //llassert(mState == INACTIVE);
+ llassert(mState == INACTIVE);
}
//virtual
@@ -191,7 +191,7 @@ void LLVOCacheEntry::setOctreeEntry(LLViewerOctreeEntry* entry)
LLViewerOctreeEntryData::setOctreeEntry(entry);
}
-void LLVOCacheEntry::copyTo(LLVOCacheEntry* new_entry)
+void LLVOCacheEntry::moveTo(LLVOCacheEntry* new_entry)
{
//copy LLViewerOctreeEntry
if(mEntry.notNull())
@@ -206,6 +206,7 @@ void LLVOCacheEntry::copyTo(LLVOCacheEntry* new_entry)
{
new_entry->addChild(getChild(i));
}
+ mChildrenList.clear();
}
void LLVOCacheEntry::setState(U32 state)
@@ -494,37 +495,10 @@ const U32 INVALID_TIME = 0 ;
const char* object_cache_dirname = "objectcache";
const char* header_filename = "object.cache";
-LLVOCache* LLVOCache::sInstance = NULL;
-
-//static
-LLVOCache* LLVOCache::getInstance()
-{
- if(!sInstance)
- {
- sInstance = new LLVOCache() ;
- }
- return sInstance ;
-}
-
-//static
-BOOL LLVOCache::hasInstance()
-{
- return sInstance != NULL ;
-}
-
-//static
-void LLVOCache::destroyClass()
-{
- if(sInstance)
- {
- delete sInstance ;
- sInstance = NULL ;
- }
-}
LLVOCache::LLVOCache():
- mInitialized(FALSE),
- mReadOnly(TRUE),
+ mInitialized(false),
+ mReadOnly(true),
mNumEntries(0),
mCacheSize(1)
{
@@ -561,7 +535,7 @@ void LLVOCache::initCache(ELLPath location, U32 size, U32 cache_version)
llwarns << "Cache already initialized." << llendl;
return ;
}
- mInitialized = TRUE ;
+ mInitialized = true;
setDirNames(location);
if (!mReadOnly)
@@ -609,7 +583,7 @@ void LLVOCache::removeCache(ELLPath location, bool started)
LLFile::rmdir(cache_dir);
clearCacheInMemory();
- mInitialized = FALSE ;
+ mInitialized = false;
}
void LLVOCache::removeCache()
@@ -636,23 +610,23 @@ void LLVOCache::removeCache()
void LLVOCache::removeEntry(HeaderEntryInfo* entry)
{
- llassert_always(mInitialized) ;
+ llassert_always(mInitialized);
if(mReadOnly)
{
- return ;
+ return;
}
if(!entry)
{
- return ;
+ return;
}
- header_entry_queue_t::iterator iter = mHeaderEntryQueue.find(entry) ;
+ header_entry_queue_t::iterator iter = mHeaderEntryQueue.find(entry);
if(iter != mHeaderEntryQueue.end())
{
- mHandleEntryMap.erase(entry->mHandle) ;
- mHeaderEntryQueue.erase(iter) ;
- removeFromCache(entry) ;
- delete entry ;
+ mHandleEntryMap.erase(entry->mHandle);
+ mHeaderEntryQueue.erase(iter);
+ removeFromCache(entry);
+ delete entry;
mNumEntries = mHandleEntryMap.size() ;
}
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 2aec88537c..7409b94d60 100644
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -29,7 +29,6 @@
#include "lluuid.h"
#include "lldatapacker.h"
-#include "lldlinked.h"
#include "lldir.h"
#include "llvieweroctree.h"
@@ -101,7 +100,7 @@ public:
void recordHit();
void recordDupe() { mDupeCount++; }
- void copyTo(LLVOCacheEntry* new_entry); //copy variables
+ void moveTo(LLVOCacheEntry* new_entry); //copy variables
/*virtual*/ void setOctreeEntry(LLViewerOctreeEntry* entry);
void setParentID(U32 id) {mParentID = id;}
@@ -161,7 +160,7 @@ public:
//
//Note: LLVOCache is not thread-safe
//
-class LLVOCache
+class LLVOCache : public LLSingleton<LLVOCache>
{
private:
struct HeaderEntryInfo
@@ -194,6 +193,7 @@ private:
typedef std::set<HeaderEntryInfo*, header_entry_less> header_entry_queue_t;
typedef std::map<U64, HeaderEntryInfo*> handle_entry_map_t;
private:
+ friend class LLSingleton<LLVOCache>;
LLVOCache() ;
public:
@@ -206,7 +206,7 @@ public:
void writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry::vocache_entry_map_t& cache_entry_map, BOOL dirty_cache, bool removal_enabled);
void removeEntry(U64 handle) ;
- void setReadOnly(BOOL read_only) {mReadOnly = read_only;}
+ void setReadOnly(bool read_only) {mReadOnly = read_only;}
private:
void setDirNames(ELLPath location);
@@ -222,9 +222,9 @@ private:
BOOL updateEntry(const HeaderEntryInfo* entry);
private:
- BOOL mEnabled;
- BOOL mInitialized ;
- BOOL mReadOnly ;
+ bool mEnabled;
+ bool mInitialized ;
+ bool mReadOnly ;
HeaderMetaInfo mMetaInfo;
U32 mCacheSize;
U32 mNumEntries;
@@ -233,12 +233,6 @@ private:
LLVolatileAPRPool* mLocalAPRFilePoolp ;
header_entry_queue_t mHeaderEntryQueue;
handle_entry_map_t mHandleEntryMap;
-
- static LLVOCache* sInstance ;
-public:
- static LLVOCache* getInstance() ;
- static BOOL hasInstance() ;
- static void destroyClass() ;
};
#endif
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index bd12328a6b..0e76a978db 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -28,12 +28,14 @@
#include "llagent.h"
#include "llfloaterreg.h"
+#include "llhttpclient.h"
#include "llimview.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llpanel.h"
#include "llrecentpeople.h"
#include "llviewercontrol.h"
+#include "llviewerregion.h"
#include "llvoicechannel.h"
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index c9aeea35a9..1b362545ec 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -34,7 +34,6 @@ class LLVOAvatar;
#include "lliosocket.h"
#include "v3math.h"
#include "llframetimer.h"
-#include "llviewerregion.h"
#include "llcallingcard.h" // for LLFriendObserver
#include "llsecapi.h"
#include "llcontrol.h"
diff --git a/indra/newview/llvoinventorylistener.h b/indra/newview/llvoinventorylistener.h
index bf14d19b01..c50c475478 100644
--- a/indra/newview/llvoinventorylistener.h
+++ b/indra/newview/llvoinventorylistener.h
@@ -30,7 +30,9 @@
#ifndef LL_LLVOINVENTORYLISTENER_H
#define LL_LLVOINVENTORYLISTENER_H
-#include "llviewerobject.h"
+#include "llinventory.h"
+
+class LLViewerObject;
class LLVOInventoryListener
{
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
index a15878368e..21693e85e1 100644
--- a/indra/newview/llvosurfacepatch.h
+++ b/indra/newview/llvosurfacepatch.h
@@ -33,6 +33,8 @@
class LLSurfacePatch;
class LLDrawPool;
class LLVector2;
+class LLFacePool;
+class LLFace;
class LLVOSurfacePatch : public LLStaticViewerObject
{
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index d1c1602437..664fee9a37 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -406,7 +406,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
dp->dumpBufferToLog();
llwarns << "Flushing cache files" << llendl;
- if(LLVOCache::hasInstance() && getRegion())
+ if(LLVOCache::instanceExists() && getRegion())
{
LLVOCache::getInstance()->removeEntry(getRegion()->getHandle()) ;
}
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index 3d8c53a755..ce5c882c00 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -34,12 +34,12 @@
#include "llassetstorage.h"
#include "llwearabletype.h"
#include "llfile.h"
-#include "lllocaltextureobject.h"
class LLViewerInventoryItem;
class LLVisualParam;
class LLTexGlobalColorInfo;
class LLTexGlobalColor;
+class LLLocalTextureObject;
class LLWearable
{
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 9401773886..9603849b10 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -110,7 +110,7 @@ LLWorld::LLWorld() :
gGL.getTexUnit(0)->bind(mDefaultWaterTexturep);
mDefaultWaterTexturep->setAddressMode(LLTexUnit::TAM_CLAMP);
- LLViewerRegion::sVOCacheCullingEnabled = (BOOL)gSavedSettings.getBOOL("ObjectCacheViewCullingEnabled");
+ LLViewerRegion::sVOCacheCullingEnabled = gSavedSettings.getBOOL("ObjectCacheViewCullingEnabled") && gSavedSettings.getBOOL("ObjectCacheEnabled");
}
@@ -123,10 +123,7 @@ void LLWorld::destroyClass()
LLViewerRegion* region_to_delete = *region_it++;
removeRegion(region_to_delete->getHost());
}
- if(LLVOCache::hasInstance())
- {
- LLVOCache::getInstance()->destroyClass() ;
- }
+ LLVOCache::deleteSingleton();
LLViewerPartSim::getInstance()->destroyClass();
mDefaultWaterTexturep = NULL ;
@@ -138,7 +135,7 @@ void LLWorld::destroyClass()
//make all visible drawbles invisible.
LLDrawable::incrementVisible();
- LLSceneMonitor::getInstance()->destroyClass();
+ LLSceneMonitor::deleteSingleton();
}
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index a8156b46ed..a9ecbdcd5f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2252,7 +2252,7 @@ BOOL LLPipeline::getVisibleExtents(LLCamera& camera, LLVector3& min, LLVector3&
min = LLVector3(X,X,X);
max = LLVector3(-X,-X,-X);
- U32 saved_camera_id = LLViewerCamera::sCurCameraID;
+ LLViewerCamera::eCameraID saved_camera_id = LLViewerCamera::sCurCameraID;
LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_WORLD;
BOOL res = TRUE;
@@ -3233,8 +3233,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
}
postSort(camera);
-
- LLSceneMonitor::getInstance()->fetchQueryResult();
}
void LLPipeline::stateSort(LLSpatialGroup* group, LLCamera& camera)
@@ -9437,7 +9435,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
mShadowFrustPoints[j].clear();
}
- LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+j;
+ LLViewerCamera::sCurCameraID = (LLViewerCamera::eCameraID)(LLViewerCamera::CAMERA_SHADOW0+j);
//restore render matrices
glh_set_current_modelview(saved_view);
@@ -9821,7 +9819,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
//update shadow targets
for (U32 i = 0; i < 2; i++)
{ //for each current shadow
- LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW4+i;
+ LLViewerCamera::sCurCameraID = (LLViewerCamera::eCameraID)(LLViewerCamera::CAMERA_SHADOW4+i);
if (mShadowSpotLight[i].notNull() &&
(mShadowSpotLight[i] == mTargetShadowSpotLight[0] ||
@@ -9940,7 +9938,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
static LLCullResult result[2];
- LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+i+4;
+ LLViewerCamera::sCurCameraID = (LLViewerCamera::eCameraID)(LLViewerCamera::CAMERA_SHADOW0 + i + 4);
renderShadow(view[i+4], proj[i+4], shadow_cam, result[i], FALSE, FALSE, target_width);
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 36abeca295..720ddf79f5 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -29,8 +29,6 @@
#include "llcamera.h"
#include "llerror.h"
-#include "lldarrayptr.h"
-#include "lldqueueptr.h"
#include "lldrawpool.h"
#include "llspatialpartition.h"
#include "m4math.h"
@@ -42,25 +40,13 @@
#include <stack>
-#include <stack>
-
-#include <stack>
-
class LLViewerTexture;
-class LLEdge;
class LLFace;
class LLViewerObject;
-class LLAgent;
-class LLDisplayPrimitive;
class LLTextureEntry;
-class LLRenderFunc;
-class LLCubeMap;
class LLCullResult;
class LLVOAvatar;
class LLGLSLShader;
-class LLCurlRequest;
-
-class LLMeshResponder;
typedef enum e_avatar_skinning_method
{
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index f98fcc349e..0493f487d4 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -38,7 +38,7 @@
name="fps"
label="FPS"
unit_label="fps"
- stat="fpsstat"
+ stat="framesrendered"
bar_min="0"
bar_max="60"
tick_spacing="6"