diff options
| -rw-r--r-- | indra/llcommon/llfasttimer.cpp | 41 | ||||
| -rw-r--r-- | indra/llcommon/llfasttimer.h | 10 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfasttimerview.cpp | 6 | 
4 files changed, 26 insertions, 33 deletions
diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp index 700ad65bf9..6970c29092 100644 --- a/indra/llcommon/llfasttimer.cpp +++ b/indra/llcommon/llfasttimer.cpp @@ -113,9 +113,11 @@ public:  	/*virtual */ void initSingleton()  	{  		mTimerRoot = new LLFastTimer::NamedTimer("root"); -		mRootFrameState = &mTimerRoot->getFrameState(); +		mRootFrameState.setNamedTimer(mTimerRoot); +		mTimerRoot->setFrameState(&mRootFrameState);  		mTimerRoot->mParent = mTimerRoot; -		mRootFrameState->mParent = mRootFrameState; +		mTimerRoot->setCollapsed(false); +		mRootFrameState.mParent = &mRootFrameState;  	}  	~NamedTimerFactory() @@ -125,15 +127,10 @@ public:  		delete mTimerRoot;  	} -	LLFastTimer::NamedTimer& createNamedTimer(const std::string& name) +	LLFastTimer::NamedTimer& createNamedTimer(const std::string& name, LLFastTimer::FrameState* state)  	{ -		timer_map_t::iterator found_it = mTimers.find(name); -		if (found_it != mTimers.end()) -		{ -			return *found_it->second; -		} -  		LLFastTimer::NamedTimer* timer = new LLFastTimer::NamedTimer(name); +		timer->setFrameState(state);  		timer->setParent(mTimerRoot);  		mTimers.insert(std::make_pair(name, timer)); @@ -152,7 +149,7 @@ public:  	LLFastTimer::NamedTimer* getRootTimer() { return mTimerRoot; } -	typedef std::map<std::string, LLFastTimer::NamedTimer*> timer_map_t; +	typedef std::multimap<std::string, LLFastTimer::NamedTimer*> timer_map_t;  	timer_map_t::iterator beginTimers() { return mTimers.begin(); }  	timer_map_t::iterator endTimers() { return mTimers.end(); }  	S32 timerCount() { return mTimers.size(); } @@ -161,20 +158,18 @@ private:  	timer_map_t mTimers;  	LLFastTimer::NamedTimer*		mTimerRoot; -	LLFastTimer::FrameState*	mRootFrameState; +	LLFastTimer::FrameState			mRootFrameState;  };  LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name, bool open ) -:	mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +:	mTimer(NamedTimerFactory::instance().createNamedTimer(name, &mFrameState))  { -	mFrameState = &mTimer.getFrameState();  	mTimer.setCollapsed(!open);  }  LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name) -:	mTimer(NamedTimerFactory::instance().createNamedTimer(name)) +:	mTimer(NamedTimerFactory::instance().createNamedTimer(name, &mFrameState))  { -	mFrameState = &mTimer.getFrameState();  }  //static @@ -224,13 +219,13 @@ LLFastTimer::NamedTimer::NamedTimer(const std::string& name)  	mTotalTimeCounter(0),  	mCountAverage(0),  	mCallAverage(0), -	mNeedsSorting(false) +	mNeedsSorting(false), +	mFrameState(NULL)  {  	mCountHistory = new U32[HISTORY_NUM];  	memset(mCountHistory, 0, sizeof(U32) * HISTORY_NUM);  	mCallHistory = new U32[HISTORY_NUM];  	memset(mCallHistory, 0, sizeof(U32) * HISTORY_NUM); -	mFrameState.setNamedTimer(this);  }  LLFastTimer::NamedTimer::~NamedTimer() @@ -290,9 +285,10 @@ S32 LLFastTimer::NamedTimer::getDepth()  {  	S32 depth = 0;  	NamedTimer* timerp = mParent; -	while(timerp && timerp->mParent != timerp) +	while(timerp)  	{  		depth++; +		if (timerp->getParent() == timerp) break;  		timerp = timerp->mParent;  	}  	return depth; @@ -545,14 +541,9 @@ U32 LLFastTimer::NamedTimer::getHistoricalCalls(S32 history_index ) const  	return mCallHistory[history_idx];  } -const LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() const -{ -	return mFrameState; -} - -LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() +LLFastTimer::FrameState& LLFastTimer::NamedTimer::getFrameState() const  { -	return mFrameState; +	return *mFrameState;  }  std::vector<LLFastTimer::NamedTimer*>::const_iterator LLFastTimer::NamedTimer::beginChildren() diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index 07af0f1d4d..e42e549df5 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -91,8 +91,8 @@ public:  		U32 getHistoricalCount(S32 history_index = 0) const;  		U32 getHistoricalCalls(S32 history_index = 0) const; -		const FrameState& getFrameState() const; -		FrameState& getFrameState(); +		void setFrameState(FrameState* state) { mFrameState = state; state->setNamedTimer(this); } +		FrameState& getFrameState() const;  	private:  		friend class LLFastTimer; @@ -116,7 +116,7 @@ public:  		//  		// members  		// -		FrameState		mFrameState; +		FrameState*		mFrameState;  		std::string	mName; @@ -147,7 +147,7 @@ public:  		NamedTimer& getNamedTimer() { return mTimer; }  	private: -		FrameState*		mFrameState; +		FrameState		mFrameState;  		NamedTimer&		mTimer;  	}; @@ -155,7 +155,7 @@ public:  	LLFastTimer(LLFastTimer::FrameState* state);  	LL_FORCE_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) -	:	mFrameState(timer.mFrameState) +	:	mFrameState(&timer.mFrameState)  	{  #if FAST_TIMER_ON  		LLFastTimer::FrameState* frame_state = mFrameState; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index bf01627bad..a8763aae0c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1178,7 +1178,7 @@ static LLFastTimer::DeclareTimer FTM_SERVICE_CALLBACK("Callback");  static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot");  static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update"); -LLFastTimer::DeclareTimer FTM_FRAME("Frame"); +LLFastTimer::DeclareTimer FTM_FRAME("Frame", true);  bool LLAppViewer::mainLoop()  { diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index fd92f8ac18..4dfb93f1bc 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -511,9 +511,10 @@ void LLFastTimerView::draw()  			x += dx;  			BOOL is_child_of_hover_item = (idp == mHoverID);  			LLFastTimer::NamedTimer* next_parent = idp->getParent(); -			while(!is_child_of_hover_item && next_parent && next_parent != next_parent->getParent()) +			while(!is_child_of_hover_item && next_parent)  			{  				is_child_of_hover_item = (mHoverID == next_parent); +				if (next_parent->getParent() == next_parent) break;  				next_parent = next_parent->getParent();  			} @@ -778,9 +779,10 @@ void LLFastTimerView::draw()  					BOOL is_child_of_hover_item = (idp == mHoverID);  					LLFastTimer::NamedTimer* next_parent = idp->getParent(); -					while(!is_child_of_hover_item && next_parent && next_parent != next_parent->getParent()) +					while(!is_child_of_hover_item && next_parent)  					{  						is_child_of_hover_item = (mHoverID == next_parent); +						if (next_parent->getParent() == next_parent) break;  						next_parent = next_parent->getParent();  					}  | 
