summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/lltexturefetch.cpp10
-rwxr-xr-xindra/newview/lltexturefetch.h1
-rwxr-xr-xindra/newview/lltextureinfo.cpp41
-rwxr-xr-xindra/newview/lltextureinfo.h4
4 files changed, 32 insertions, 24 deletions
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index fab4203ec3..17b273f316 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -2522,7 +2522,8 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
mFetchDebugger(NULL),
mFetchSource(LLTextureFetch::FROM_ALL),
mOriginFetchSource(LLTextureFetch::FROM_ALL),
- mFetcherLocked(FALSE)
+ mFetcherLocked(FALSE),
+ mTextureInfoMainThread(false)
{
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), U32Bytes(gSavedSettings.getU32("TextureLoggingThreshold")));
@@ -3128,6 +3129,7 @@ void LLTextureFetch::shutDownImageDecodeThread()
// Threads: Ttf
void LLTextureFetch::startThread()
{
+ mTextureInfo.startRecording();
}
// Threads: Ttf
@@ -3138,6 +3140,8 @@ void LLTextureFetch::endThread()
<< ", ResWaits: " << mTotalResourceWaitCount
<< ", TotalHTTPReq: " << getTotalNumHTTPRequests()
<< LL_ENDL;
+
+ mTextureInfo.stopRecording();
}
// Threads: Ttf
@@ -3541,8 +3545,8 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
if (log_to_viewer_log || log_to_sim)
{
U64Microseconds timeNow = LLTimer::getTotalTime();
- mTextureInfo.setRequestSize(id, worker->mFileSize);
- mTextureInfo.setRequestCompleteTimeAndLog(id, timeNow);
+ mTextureInfoMainThread.setRequestSize(id, worker->mFileSize);
+ mTextureInfoMainThread.setRequestCompleteTimeAndLog(id, timeNow);
}
}
worker->unlockWorkMutex(); // -Mw
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 27779a31e0..a2658ecd85 100755
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -332,6 +332,7 @@ private:
F32 mTextureBandwidth; // <none>
F32 mMaxBandwidth; // Mfnq
LLTextureInfo mTextureInfo;
+ LLTextureInfo mTextureInfoMainThread;
// XXX possible delete
U32Bits mHTTPTextureBits; // Mfnq
diff --git a/indra/newview/lltextureinfo.cpp b/indra/newview/lltextureinfo.cpp
index 59d692b287..473d8ce709 100755
--- a/indra/newview/lltextureinfo.cpp
+++ b/indra/newview/lltextureinfo.cpp
@@ -36,14 +36,16 @@ static LLTrace::CountStatHandle<S32> sTextureDownloadsCompleted("texture_downloa
static LLTrace::CountStatHandle<S32Bytes > sTextureDataDownloaded("texture_data_downloaded", "amount of texture data downloaded");
static LLTrace::CountStatHandle<U32Milliseconds > sTexureDownloadTime("texture_download_time", "amount of time spent fetching textures");
-LLTextureInfo::LLTextureInfo() :
+LLTextureInfo::LLTextureInfo(bool postponeStartRecoreder) :
mLogTextureDownloadsToViewerLog(false),
mLogTextureDownloadsToSimulator(false),
mTextureDownloadProtocol("NONE"),
mTextureLogThreshold(LLUnits::Kilobytes::fromValue(100))
{
- mTextures.clear();
- mRecording.start();
+ if (!postponeStartRecoreder)
+ {
+ startRecording();
+ }
}
void LLTextureInfo::setUpLogging(bool writeToViewerLog, bool sendToSim, U32Bytes textureLogThreshold)
@@ -78,15 +80,7 @@ U32 LLTextureInfo::getTextureInfoMapSize()
bool LLTextureInfo::has(const LLUUID& id)
{
- std::map<LLUUID, LLTextureInfoDetails *>::iterator iterator = mTextures.find(id);
- if (iterator == mTextures.end())
- {
- return false;
- }
- else
- {
- return true;
- }
+ return mTextures.end() != mTextures.find(id);
}
void LLTextureInfo::setRequestStartTime(const LLUUID& id, U64 startTime)
@@ -192,15 +186,12 @@ void LLTextureInfo::setRequestCompleteTimeAndLog(const LLUUID& id, U64Microsecon
LLSD LLTextureInfo::getAverages()
{
LLSD averagedTextureData;
- S32 averageDownloadRate;
- U32Milliseconds download_time = mRecording.getSum(sTexureDownloadTime);
- if(download_time == (U32Milliseconds)0)
- {
- averageDownloadRate = 0;
- }
- else
+ S32 averageDownloadRate = 0;
+ unsigned int download_time = mRecording.getSum(sTexureDownloadTime).valueInUnits<LLUnits::Seconds>();
+
+ if (0 != download_time)
{
- averageDownloadRate = mRecording.getSum(sTextureDataDownloaded).valueInUnits<LLUnits::Bits>() / download_time.valueInUnits<LLUnits::Seconds>();
+ averageDownloadRate = mRecording.getSum(sTextureDataDownloaded).valueInUnits<LLUnits::Bits>() / download_time;
}
averagedTextureData["bits_per_second"] = averageDownloadRate;
@@ -212,6 +203,16 @@ LLSD LLTextureInfo::getAverages()
return averagedTextureData;
}
+void LLTextureInfo::startRecording()
+{
+ mRecording.start();
+}
+
+void LLTextureInfo::stopRecording()
+{
+ mRecording.stop();
+}
+
void LLTextureInfo::resetTextureStatistics()
{
mRecording.restart();
diff --git a/indra/newview/lltextureinfo.h b/indra/newview/lltextureinfo.h
index 176f2cbb74..03721bdd73 100755
--- a/indra/newview/lltextureinfo.h
+++ b/indra/newview/lltextureinfo.h
@@ -35,7 +35,7 @@
class LLTextureInfo
{
public:
- LLTextureInfo();
+ LLTextureInfo(bool postponeStartRecoreder = true);
~LLTextureInfo();
void setUpLogging(bool writeToViewerLog, bool sendToSim, U32Bytes textureLogThreshold);
@@ -53,6 +53,8 @@ public:
void resetTextureStatistics();
U32 getTextureInfoMapSize();
LLSD getAverages();
+ void startRecording();
+ void stopRecording();
private:
void addRequest(const LLUUID& id);