diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index b089610c6..8bbf22d5a 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -38,6 +38,7 @@
#include "lltexturefetch.h"
+#include "llappviewer.h"
#include "llcurl.h"
#include "lldir.h"
#include "llhttpclient.h"
@@ -316,7 +317,7 @@ public:
mFetcher->mTextureInfo.setRequestCompleteTimeAndLog(mID, timeNow);
}
- lldebugs << "HTTP COMPLETE: " << mID << llendl;
+ LL_DEBUGS("TextureFetch") << "HTTP COMPLETE: " << mID << " with status: " << status << LL_ENDL;
mFetcher->lockQueue();
LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
if (worker)
@@ -334,9 +335,10 @@ public:
}
else if (status == HTTP_REQUESTED_RANGE_NOT_SATISFIABLE)
{
- llwarns << "TextureFetch: Request was an unsatisfiable range: mRequestedSize=" << mRequestedSize << " mOffset=" << mOffset << " for: " << mID << LL_ENDL;
+ LL_DEBUGS("TextureFetch") << "Request was an unsatisfiable range: mRequestedSize=" << mRequestedSize << " mOffset=" << mOffset << " for: " << mID << LL_ENDL;
unsatisfiable = true;
}
+
if (!success)
{
worker->setGetStatus(status, reason);
@@ -593,24 +595,24 @@ bool LLTextureFetchWorker::doWork(S32 param)
if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
{
if (mState < DECODE_IMAGE)
- {
+ {
return true; // abort
}
}
- if(mImagePriority < 1.0f)
+ if (mImagePriority < 1.0f)
{
if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
- {
- return true; // abort
- }
- }
- if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
+ {
+ return true; // abort
+ }
+ }
+ if (mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
{
//nowhere to get data, abort.
return true ;
}
- if (mFetcher->mDebugPause)
+ if (mFetcher->mDebugPause|| gDisconnected)
{
return false; // debug: don't do any work
}
@@ -626,13 +628,14 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mState == INIT)
{
- if(gAssetStorage && std::find(gAssetStorage->mBlackListedAsset.begin(),
- gAssetStorage->mBlackListedAsset.end(),mID) != gAssetStorage->mBlackListedAsset.end())
- {
- llinfos << "Blacklisted asset " << mID.asString() << " was trying to be accessed!!!!!!" << llendl;
- mState = DONE;
- return true;
- }
+ if(gAssetStorage && std::find(gAssetStorage->mBlackListedAsset.begin(),
+ gAssetStorage->mBlackListedAsset.end(),mID) != gAssetStorage->mBlackListedAsset.end())
+ {
+ llinfos << "Blacklisted asset " << mID.asString() << " was trying to be accessed!!!!!!" << llendl;
+ mState = DONE;
+ return true;
+ }
+
mRequestedDiscard = -1;
mLoadedDiscard = -1;
mDecodedDiscard = -1;
@@ -643,9 +646,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
mSentRequest = UNSENT;
mDecoded = FALSE;
mWritten = FALSE;
- //
- if(mBuffer)
- //
delete[] mBuffer;
mBuffer = NULL;
mBufferSize = 0;
@@ -761,8 +761,9 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mState == LOAD_FROM_NETWORK)
{
- static const LLCachedControl image_pipeline_use_http("ImagePipelineUseHTTP",false);
+ static const LLCachedControl image_pipeline_use_http("ImagePipelineUseHTTP", false);
bool get_url = image_pipeline_use_http;
+
if (!mUrl.empty()) get_url = false;
// if (mHost != LLHost::invalid) get_url = false;
if ( get_url && mCanUseHTTP && mUrl.empty())//get http url.
@@ -852,7 +853,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
{
if(mCanUseHTTP)
{
- const S32 HTTP_QUEUE_MAX_SIZE = 8;
+ const S32 HTTP_QUEUE_MAX_SIZE = 16;
// *TODO: Integrate this with llviewerthrottle
// Note: LLViewerThrottle uses dynamic throttling which makes sense for UDP,
// but probably not for Textures.
@@ -879,6 +880,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
return false;
}
}
+
mRequestedSize = mDesiredSize;
mRequestedDiscard = mDesiredDiscard;
mRequestedSize -= cur_size;
@@ -892,11 +894,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
mLoaded = FALSE;
mGetStatus = 0;
mGetReason.clear();
- lldebugs << "HTTP GET: " << mID << " Offset: " << offset
+ LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset
<< " Bytes: " << mRequestedSize
<< " Range: " << offset << "-" << offset+mRequestedSize-1
<< " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth
- << llendl;
+ << LL_ENDL;
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
mState = WAIT_HTTP_REQ;
@@ -934,7 +936,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
//roll back to try UDP
if(mCanUseNET)
{
- llinfos << "Falling back to UDP fetch for texture " << mID << llendl;
mState = INIT ;
mCanUseHTTP = false ;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -943,7 +944,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
else
{
// UDP is not an option, we are dead
- llwarns << "No UDP fallback available for texture " << mID << llendl;
resetFormattedData();
return true; // failed
}
@@ -957,7 +957,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
max_attempts = mHTTPFailCount+1; // Keep retrying
LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL;
}
- else
+ else
{
const S32 HTTP_MAX_RETRY_COUNT = 3;
max_attempts = HTTP_MAX_RETRY_COUNT + 1;
@@ -965,7 +965,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
llinfos << "HTTP GET failed for: " << mUrl
<< " Status: " << mGetStatus << " Reason: '" << mGetReason << "'"
<< " Attempt:" << mHTTPFailCount+1 << "/" << max_attempts << llendl;
- }
+ }
if (mHTTPFailCount >= max_attempts)
{
@@ -975,14 +975,13 @@ bool LLTextureFetchWorker::doWork(S32 param)
// Use available data
mLoadedDiscard = mFormattedImage->getDiscardLevel();
mState = DECODE_IMAGE;
- return false;
- }
- else
- {
+ return false;
+ }
+ else
+ {
//roll back to try UDP
if(mCanUseNET)
{
- llinfos << "Falling back to UDP fetch for texture " << mID << llendl;
mState = INIT ;
mCanUseHTTP = false ;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
@@ -991,7 +990,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
else
{
// UDP is not an option, we are dead
- llwarns << "No UDP fallback available for texture " << mID << llendl;
resetFormattedData();
return true; // failed
}
@@ -1024,7 +1022,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
{
mFileSize = mBufferSize + 1 ; //flag the file is not fully loaded.
}
-
+
U8* buffer = new U8[mBufferSize];
if (cur_size > 0)
{
@@ -1161,7 +1159,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
if(mDecodedDiscard<=0)
- {
+ {
return true;
}
else
@@ -1332,7 +1330,7 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
llwarns << "Duplicate callback for " << mID.asString() << llendl;
return; // ignore duplicate callback
}
-
+
S32 data_size = 0;
if (success)
{
@@ -1341,13 +1339,14 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
gImageList.sTextureBits += data_size * 8; // Approximate - does not include header bits
- //llinfos << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << llendl;
+ LL_DEBUGS("TextureFetch") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << " mRequestedSize: " << mRequestedSize << LL_ENDL;
+
if (data_size > 0)
{
bool clean_data = false;
bool done = false;
if (!partial)
- {
+ {
// we got the whole image in one go
done = true;
clean_data = true;
@@ -1379,15 +1378,15 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
}
if (clean_data)
- {
+ {
resetFormattedData(); // discard any previous data we had
llassert(mBufferSize == 0);
- }
+ }
if (done)
- {
+ {
mHaveAllData = TRUE;
mRequestedDiscard = 0;
- }
+ }
// *TODO: set the formatted image data here directly to avoid the copy
mBuffer = new U8[data_size];
@@ -1415,6 +1414,7 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
mRequestedSize = -1; // treat this fetch as if it failed.
}
}
+
mLoaded = TRUE;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
}
@@ -1784,8 +1784,7 @@ S32 LLTextureFetch::update(U32 max_time_ms)
{
S32 res;
- static const LLCachedControl throttle_bandwidth_kbps("ThrottleBandwidthKBPS",500);
- mMaxBandwidth = throttle_bandwidth_kbps;
+ mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
res = LLWorkerThread::update(max_time_ms);
@@ -2269,4 +2268,3 @@ void LLTextureFetch::dump()
<< llendl;
}
}
-
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index a5f2c3357..18fa89df7 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -60,7 +60,7 @@ public:
/*virtual*/ S32 update(U32 max_time_ms);
bool createRequest(const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
- S32 w, S32 h, S32 c, S32 discard, bool needs_aux, bool can_use_http);
+ S32 w, S32 h, S32 c, S32 discard, bool needs_aux, bool use_http);
void deleteRequest(const LLUUID& id, bool cancel);
bool getRequestFinished(const LLUUID& id, S32& discard_level,
LLPointer& raw, LLPointer& aux);
@@ -85,7 +85,7 @@ public:
LLTextureFetchWorker* getWorker(const LLUUID& id);
LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
-
+
protected:
void addToNetworkQueue(LLTextureFetchWorker* worker);
void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);