diff options
| -rwxr-xr-x | indra/newview/llagent.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llagent.h | 2 | ||||
| -rw-r--r-- | indra/newview/llscenemonitor.cpp | 23 | ||||
| -rw-r--r-- | indra/newview/llscenemonitor.h | 5 | 
4 files changed, 37 insertions, 1 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 14235bcee4..24c9da8e17 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1046,6 +1046,14 @@ const LLVector3d &LLAgent::getPositionGlobal() const  	return mPositionGlobal;  } +bool LLAgent::isPositionChanged() const +{ +	LLVector3d diff; +	diff = mPositionGlobal - mLastPositionGlobal; +	 +	return diff.lengthSquared() > 1.0; +} +  //-----------------------------------------------------------------------------  // getPositionAgent()  //----------------------------------------------------------------------------- diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 99904e118c..a1e899b45d 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -250,6 +250,8 @@ 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/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 4872200f24..7a960f7baa 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -37,6 +37,7 @@  #include "llwindow.h"  #include "llpointer.h"  #include "llspatialpartition.h" +#include "llagent.h"  LLSceneMonitorView* gSceneMonitorView = NULL; @@ -67,7 +68,10 @@ LLSceneMonitor::LLSceneMonitor() :  	mDiffPixelRatio(0.5f)  {  	mFrames[0] = NULL; -	mFrames[1] = NULL;	 +	mFrames[1] = NULL; + +	mRecording = new LLTrace::ExtendableRecording(); +	mRecording->start();  }  LLSceneMonitor::~LLSceneMonitor() @@ -78,6 +82,9 @@ LLSceneMonitor::~LLSceneMonitor()  void LLSceneMonitor::destroyClass()  {  	reset(); + +	delete mRecording; +	mRecording = NULL;  }  void LLSceneMonitor::reset() @@ -137,6 +144,11 @@ bool LLSceneMonitor::preCapture()  		return false;  	} +	if(gAgent.isPositionChanged()) +	{ +		mRecording->reset(); +	} +  	if(timer.getElapsedTimeF32() < mSamplingTime)  	{  		return false; @@ -388,6 +400,10 @@ void LLSceneMonitor::fetchQueryResult()  	mDiffResult = count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio); //0.5 -> (front face + back face) +	if(mDiffResult > 0.01f) +	{ +		mRecording->extend(); +	}  	//llinfos << count << " : " << mDiffResult << llendl;  }  //------------------------------------------------------------------------------------------------------------- @@ -454,6 +470,11 @@ void LLSceneMonitorView::draw()  	num_str = llformat("Sampling time: %.3f seconds", LLSceneMonitor::getInstance()->getSamplingTime());  	LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP); +	lines++; + +	num_str = llformat("Scene Loading time: %.3f seconds", (F32)LLSceneMonitor::getInstance()->getRecording()->getAcceptedRecording().getDuration().value()); +	LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP); +	lines++;  	LLView::draw();  } diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index 02e3d57d46..93e6c20bb9 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -31,6 +31,7 @@  #include "llmath.h"  #include "llfloater.h"  #include "llcharacter.h" +#include "lltracerecording.h"  class LLCharacter;  class LLRenderTarget; @@ -61,6 +62,8 @@ public:  	bool isEnabled()const {return mEnabled;}  	bool needsUpdate() const; +	LLTrace::ExtendableRecording* getRecording() const {return mRecording;} +  private:  	void freezeScene();  	void unfreezeScene(); @@ -86,6 +89,8 @@ private:  	F32     mDiffPixelRatio; //ratio of pixels used for comparison against the original mDiff size along one dimension  	std::vector<LLAnimPauseRequest> mAvatarPauseHandles; + +	LLTrace::ExtendableRecording* mRecording;  };  class LLSceneMonitorView : public LLFloater  | 
