summaryrefslogtreecommitdiff
path: root/indra/newview/lltexturefetch.cpp
diff options
context:
space:
mode:
authorOz Linden <oz@lindenlab.com>2013-06-19 13:59:52 -0400
committerOz Linden <oz@lindenlab.com>2013-06-19 13:59:52 -0400
commite23228fef2834587af490d0345f29212445666d8 (patch)
treedfa761027aca1227ec1817707f8141b833c061df /indra/newview/lltexturefetch.cpp
parentc880c961bb2a0838bc529efc07cfeb12f5636d88 (diff)
parent8a330ee2eb1008951f5e5159057fa5736dd805b4 (diff)
merge 3.5.0-release
Diffstat (limited to 'indra/newview/lltexturefetch.cpp')
-rwxr-xr-xindra/newview/lltexturefetch.cpp54
1 files changed, 28 insertions, 26 deletions
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index a037d0d6c1..cd49ab54e5 100755
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -3690,13 +3690,14 @@ public:
if (status)
{
- LL_WARNS("Texture") << "Successfully delivered asset metrics to grid."
- << LL_ENDL;
+ LL_DEBUGS("Texture") << "Successfully delivered asset metrics to grid."
+ << LL_ENDL;
}
else
{
- LL_WARNS("Texture") << "Error delivering asset metrics to grid. Reason: "
- << status.toString() << LL_ENDL;
+ LL_WARNS("Texture") << "Error delivering asset metrics to grid. Status: "
+ << status.toHex()
+ << ", Reason: " << status.toString() << LL_ENDL;
}
}
}; // end class AssetReportHandler
@@ -3896,11 +3897,15 @@ private:
LLTextureFetchDebugger::LLTextureFetchDebugger(LLTextureFetch* fetcher, LLTextureCache* cache, LLImageDecodeThread* imagedecodethread) :
+ LLCore::HttpHandler(),
mFetcher(fetcher),
mTextureCache(cache),
mImageDecodeThread(imagedecodethread),
mHttpHeaders(NULL),
- mHttpPolicyClass(fetcher->getPolicyClass())
+ mHttpPolicyClass(fetcher->getPolicyClass()),
+ mNbCurlCompleted(0),
+ mTempIndex(0),
+ mHistoryListIndex(0)
{
init();
}
@@ -3926,6 +3931,7 @@ void LLTextureFetchDebugger::init()
mDecodingTime = -1.f;
mHTTPTime = -1.f;
mGLCreationTime = -1.f;
+
mTotalFetchingTime = 0.f;
mRefetchVisCacheTime = -1.f;
mRefetchVisHTTPTime = -1.f;
@@ -3952,6 +3958,9 @@ void LLTextureFetchDebugger::init()
mFreezeHistory = FALSE;
mStopDebug = FALSE;
mClearHistory = FALSE;
+ mRefetchNonVis = FALSE;
+
+ mNbCurlRequests = 0;
if (! mHttpHeaders)
{
@@ -4025,7 +4034,8 @@ bool LLTextureFetchDebugger::processStartDebug(F32 max_time)
S32 pending = 0;
pending += LLAppViewer::getTextureCache()->update(1);
pending += LLAppViewer::getImageDecodeThread()->update(1);
- pending += LLAppViewer::getTextureFetch()->update(1);
+ // pending += LLAppViewer::getTextureFetch()->update(1); // This causes infinite recursion in some cases
+ pending += mNbCurlRequests;
if(!pending)
{
break;
@@ -4315,7 +4325,6 @@ void LLTextureFetchDebugger::debugHTTP()
{
mFetchingHistory[i].mCurlState = FetchEntry::CURL_NOT_DONE;
mFetchingHistory[i].mCurlReceivedSize = 0;
- mFetchingHistory[i].mHTTPFailCount = 0;
mFetchingHistory[i].mFormattedImage = NULL;
}
mNbCurlRequests = 0;
@@ -4339,8 +4348,6 @@ S32 LLTextureFetchDebugger::fillCurlQueue()
S32 size = mFetchingHistory.size();
for (S32 i = 0 ; i < size ; i++)
{
- mNbCurlRequests++;
-
if (mFetchingHistory[i].mCurlState != FetchEntry::CURL_NOT_DONE)
{
continue;
@@ -4366,15 +4373,22 @@ S32 LLTextureFetchDebugger::fillCurlQueue()
mFetchingHistory[i].mHttpHandle = handle;
mFetchingHistory[i].mCurlState = FetchEntry::CURL_IN_PROGRESS;
mNbCurlRequests++;
- // Hack
- if (mNbCurlRequests == HTTP_REQUESTS_IN_QUEUE_HIGH_WATER) // emulate normal pipeline
+ if (mNbCurlRequests >= HTTP_REQUESTS_IN_QUEUE_HIGH_WATER) // emulate normal pipeline
{
break;
}
}
else
{
- break;
+ // Failed to queue request, log it and mark it done.
+ LLCore::HttpStatus status(mFetcher->getHttpRequest().getStatus());
+
+ LL_WARNS("Texture") << "Couldn't issue HTTP request in debugger for texture "
+ << mFetchingHistory[i].mID
+ << ", status: " << status.toHex()
+ << " reason: " << status.toString()
+ << LL_ENDL;
+ mFetchingHistory[i].mCurlState = FetchEntry::CURL_DONE;
}
}
//llinfos << "Fetch Debugger : Having " << mNbCurlRequests << " requests through the curl thread." << llendl;
@@ -4728,14 +4742,13 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon
LLCore::HttpStatus status(response->getStatus());
mNbCurlRequests--;
+ mNbCurlCompleted++;
+ fetch.mCurlState = FetchEntry::CURL_DONE;
if (status)
{
const bool partial(par_status == status);
LLCore::BufferArray * ba(response->getBody()); // *Not* holding reference to body
- fetch.mCurlState = FetchEntry::CURL_DONE;
- mNbCurlCompleted++;
-
S32 data_size = ba ? ba->size() : 0;
fetch.mCurlReceivedSize += data_size;
//llinfos << "Fetch Debugger : got results for " << fetch.mID << ", data_size = " << data_size << ", received = " << fetch.mCurlReceivedSize << ", requested = " << fetch.mRequestedSize << ", partial = " << partial << llendl;
@@ -4767,17 +4780,6 @@ void LLTextureFetchDebugger::callbackHTTP(FetchEntry & fetch, LLCore::HttpRespon
llinfos << "Fetch Debugger : CURL GET FAILED, ID = " << fetch.mID
<< ", status: " << status.toHex()
<< " reason: " << status.toString() << llendl;
- fetch.mHTTPFailCount++;
- if(fetch.mHTTPFailCount < 5)
- {
- // Fetch will have to be redone
- fetch.mCurlState = FetchEntry::CURL_NOT_DONE;
- }
- else //skip
- {
- fetch.mCurlState = FetchEntry::CURL_DONE;
- mNbCurlCompleted++;
- }
}
}