Snowgobe 1.4.2 to 1.5.0 patch part 1 (no rejects)
This commit is contained in:
@@ -336,6 +336,8 @@ JB Kraft
|
||||
VWR-7802
|
||||
Joghert LeSabre
|
||||
VWR-64
|
||||
Jonathan Yap
|
||||
VWR-8999
|
||||
Kage Pixel
|
||||
VWR-11
|
||||
Ken March
|
||||
|
||||
@@ -72,6 +72,21 @@ if (WINDOWS)
|
||||
if (NOT VS_DISABLE_FATAL_WARNINGS)
|
||||
add_definitions(/WX)
|
||||
endif (NOT VS_DISABLE_FATAL_WARNINGS)
|
||||
|
||||
# Various libs are compiler specific, generate some variables here we can just use
|
||||
# when we require them instead of reimplementing the test each time.
|
||||
|
||||
if (MSVC71)
|
||||
set(MSVC_DIR 7.1)
|
||||
set(MSVC_SUFFIX 71)
|
||||
elseif (MSVC80)
|
||||
set(MSVC_DIR 8.0)
|
||||
set(MSVC_SUFFIX 80)
|
||||
elseif (MSVC90)
|
||||
set(MSVC_DIR 9.0)
|
||||
set(MSVC_SUFFIX 90)
|
||||
endif (MSVC71)
|
||||
|
||||
endif (WINDOWS)
|
||||
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ else (STANDALONE)
|
||||
use_prebuilt_binary(jsoncpp)
|
||||
if (WINDOWS)
|
||||
set(JSONCPP_LIBRARIES
|
||||
debug json_vc80d
|
||||
optimized json_vc80)
|
||||
debug json_vc${MSVC_SUFFIX}d
|
||||
optimized json_vc${MSVC_SUFFIX})
|
||||
elseif (DARWIN)
|
||||
set(JSONCPP_LIBRARIES json_mac-universal-gcc_libmt)
|
||||
elseif (LINUX)
|
||||
|
||||
@@ -73,7 +73,7 @@ ENDMACRO(ADD_SIMULATOR_BUILD_TEST name parent)
|
||||
MACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files)
|
||||
# Optional additional parameter: pathname of Python wrapper script
|
||||
SET(wrapper "${ARGN}")
|
||||
#MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} wrapper = ${wrapper}")
|
||||
#MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} libraries = \"${libraries}\"; source_files = \"${source_files}\"; wrapper = \"${wrapper}\"")
|
||||
|
||||
SET(TEST_SOURCE_FILES ${source_files})
|
||||
SET(HEADER "${name}.h")
|
||||
@@ -96,11 +96,19 @@ MACRO(ADD_BUILD_TEST_INTERNAL name parent libraries source_files)
|
||||
ENDIF ("${wrapper}" STREQUAL "")
|
||||
|
||||
#MESSAGE(STATUS "ADD_BUILD_TEST_INTERNAL ${name} test_cmd = ${TEST_CMD}")
|
||||
#MESSAGE(STATUS "CMAKE_BINARY_DIR = \"${CMAKE_BINARY_DIR}\"")
|
||||
SET(LD_LIBRARY_PATH "${CMAKE_BINARY_DIR}/llcommon:/usr/lib:/usr/local/lib")
|
||||
IF (NOT "${ARCH_PREBUILT_DIRS}" STREQUAL "")
|
||||
SET(LD_LIBRARY_PATH "${ARCH_PREBUILT_DIRS}:${LD_LIBRARY_PATH}")
|
||||
ENDIF (NOT "${ARCH_PREBUILT_DIRS}" STREQUAL "")
|
||||
IF (NOT "$ENV{LD_LIBRARY_PATH}" STREQUAL "")
|
||||
SET(LD_LIBRARY_PATH "$ENV{LD_LIBRARY_PATH}:${LD_LIBRARY_PATH}")
|
||||
ENDIF (NOT "$ENV{LD_LIBRARY_PATH}" STREQUAL "")
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${TEST_OUTPUT}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND}
|
||||
"-DLD_LIBRARY_PATH=${ARCH_PREBUILT_DIRS}:/usr/lib"
|
||||
"-DLD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
|
||||
"-DTEST_CMD:STRING=${TEST_CMD}"
|
||||
-P ${CMAKE_SOURCE_DIR}/cmake/RunBuildTest.cmake
|
||||
DEPENDS ${name}_test
|
||||
|
||||
@@ -30,6 +30,7 @@ set(LIBS_SERVER_DIR ${CMAKE_SOURCE_DIR}/${LIBS_SERVER_PREFIX})
|
||||
set(SCRIPTS_DIR ${CMAKE_SOURCE_DIR}/${SCRIPTS_PREFIX})
|
||||
set(SERVER_DIR ${CMAKE_SOURCE_DIR}/${SERVER_PREFIX})
|
||||
set(VIEWER_DIR ${CMAKE_SOURCE_DIR}/${VIEWER_PREFIX})
|
||||
set(LL_TESTS ON CACHE BOOL "Build and run unit and integration tests (disable for build timing runs to reduce variation)")
|
||||
|
||||
set(LIBS_PREBUILT_DIR ${CMAKE_SOURCE_DIR}/../libraries CACHE PATH
|
||||
"Location of prebuilt libraries.")
|
||||
|
||||
@@ -46,7 +46,7 @@ void LLCurl::Responder::completed(U32 status, std::basic_string<char, std::char_
|
||||
}
|
||||
else
|
||||
{
|
||||
error(status, reason, mContent);
|
||||
errorWithContent(status, reason, mContent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ void LLCurl::Responder::completedRaw(unsigned,
|
||||
{
|
||||
}
|
||||
|
||||
void LLCurl::Responder::error(unsigned,
|
||||
void LLCurl::Responder::errorWithContent(unsigned,
|
||||
std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&,
|
||||
LLSD const&)
|
||||
{
|
||||
|
||||
@@ -3003,6 +3003,17 @@
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ChatSpacing</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Add extra vertical spacing between local chat lines</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ChatVisible</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -206,11 +206,26 @@ void LLConsole::draw()
|
||||
|
||||
F32 line_height = mFont->getLineHeight();
|
||||
|
||||
S32 message_spacing=4;
|
||||
S32 message_spacing = 0;
|
||||
|
||||
//080813 Spatters: This section makes a single huge black box behind all the text.
|
||||
S32 bkg_height=4;
|
||||
S32 bkg_height=8;
|
||||
S32 bkg_width=0;
|
||||
|
||||
// VWR-8999
|
||||
// ChatSpacing: 0 -- chat lines are close together, as they were in the 1.20 viewer.
|
||||
// 4 -- chat lines are farther apart as they are in SnowGlobe 1.4.
|
||||
static LLCachedControl<S32> chat_spacing("ChatSpacing", 0);
|
||||
// Perform clamping.
|
||||
S32 const clamped_chat_spacing = llclamp((S32)chat_spacing, -16, 128);
|
||||
if (chat_spacing != clamped_chat_spacing)
|
||||
{
|
||||
gSavedSettings.setS32("ChatSpacing", clamped_chat_spacing);
|
||||
}
|
||||
// Adjust spacing.
|
||||
message_spacing += chat_spacing;
|
||||
bkg_height -= chat_spacing;
|
||||
|
||||
for(paragraph_it = mParagraphs.rbegin(); paragraph_it != mParagraphs.rend(); paragraph_it++)
|
||||
{
|
||||
S32 target_height = llfloor( (*paragraph_it)->mLines.size() * line_height + message_spacing);
|
||||
|
||||
@@ -868,7 +868,7 @@ bool LLTextureCache::updateTextureEntryList(const LLUUID& id, S32 bodysize)
|
||||
|
||||
//static
|
||||
const S32 MAX_REASONABLE_FILE_SIZE = 512*1024*1024; // 512 MB
|
||||
F32 LLTextureCache::sHeaderCacheVersion = 1.2f;
|
||||
F32 LLTextureCache::sHeaderCacheVersion = 1.4f;
|
||||
U32 LLTextureCache::sCacheMaxEntries = MAX_REASONABLE_FILE_SIZE / TEXTURE_CACHE_ENTRY_SIZE;
|
||||
S64 LLTextureCache::sCacheMaxTexturesSize = 0; // no limit
|
||||
const char* entries_filename = "texture.entries";
|
||||
|
||||
@@ -168,6 +168,9 @@ public:
|
||||
mGetReason = reason;
|
||||
}
|
||||
|
||||
void setCanUseHTTP(bool can_use_http) {mCanUseHTTP = can_use_http;}
|
||||
bool getCanUseHTTP()const {return mCanUseHTTP ;}
|
||||
|
||||
protected:
|
||||
LLTextureFetchWorker(LLTextureFetch* fetcher, const LLUUID& id, const LLHost& host,
|
||||
F32 priority, S32 discard, S32 size);
|
||||
@@ -217,8 +220,15 @@ private:
|
||||
QUEUED = 1,
|
||||
SENT_SIM = 2
|
||||
};
|
||||
enum e_write_to_cache_state //mWriteToCacheState
|
||||
{
|
||||
NOT_WRITE = 0,
|
||||
CAN_WRITE = 1,
|
||||
SHOULD_WRITE = 2
|
||||
};
|
||||
static const char* sStateDescs[];
|
||||
e_state mState;
|
||||
e_write_to_cache_state mWriteToCacheState;
|
||||
LLTextureFetch* mFetcher;
|
||||
LLPointer<LLImageFormatted> mFormattedImage;
|
||||
LLPointer<LLImageRaw> mRawImage;
|
||||
@@ -253,6 +263,8 @@ private:
|
||||
BOOL mNeedsAux;
|
||||
BOOL mHaveAllData;
|
||||
BOOL mInLocalCache;
|
||||
bool mCanUseHTTP ;
|
||||
bool mCanUseNET ; //can get from asset server.
|
||||
S32 mHTTPFailCount;
|
||||
S32 mRetryAttempt;
|
||||
S32 mActiveCount;
|
||||
@@ -378,6 +390,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
||||
S32 size) // Desired size
|
||||
: LLWorkerClass(fetcher, "TextureFetch"),
|
||||
mState(INIT),
|
||||
mWriteToCacheState(NOT_WRITE),
|
||||
mFetcher(fetcher),
|
||||
mID(id),
|
||||
mHost(host),
|
||||
@@ -406,6 +419,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
||||
mNeedsAux(FALSE),
|
||||
mHaveAllData(FALSE),
|
||||
mInLocalCache(FALSE),
|
||||
mCanUseHTTP(true),
|
||||
mHTTPFailCount(0),
|
||||
mRetryAttempt(0),
|
||||
mActiveCount(0),
|
||||
@@ -416,6 +430,8 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
||||
mTotalPackets(0),
|
||||
mImageCodec(IMG_CODEC_INVALID)
|
||||
{
|
||||
mCanUseNET = mUrl.empty() ;
|
||||
|
||||
calcWorkPriority();
|
||||
mType = host.isOk() ? LLImageBase::TYPE_AVATAR_BAKE : LLImageBase::TYPE_NORMAL;
|
||||
// llinfos << "Create: " << mID << " mHost:" << host << " Discard=" << discard << llendl;
|
||||
@@ -572,13 +588,25 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
{
|
||||
LLMutexLock lock(&mWorkMutex);
|
||||
|
||||
if ((mFetcher->isQuitting() || (mImagePriority <= 0.0f) || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
|
||||
if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
|
||||
{
|
||||
if (mState < WRITE_TO_CACHE)
|
||||
if (mState < DECODE_IMAGE)
|
||||
{
|
||||
return true; // abort
|
||||
}
|
||||
}
|
||||
if(mImagePriority < 1.0f)
|
||||
{
|
||||
if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
|
||||
{
|
||||
return true; // abort
|
||||
}
|
||||
}
|
||||
if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
|
||||
{
|
||||
//nowhere to get data, abort.
|
||||
return true ;
|
||||
}
|
||||
|
||||
if (mFetcher->mDebugPause)
|
||||
{
|
||||
@@ -656,7 +684,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
mCacheReadHandle = mFetcher->mTextureCache->readFromCache(mID, cache_priority,
|
||||
offset, size, responder);
|
||||
}
|
||||
else
|
||||
else if(mCanUseHTTP)
|
||||
{
|
||||
if (!(mUrl.compare(0, 7, "http://") == 0))
|
||||
{
|
||||
@@ -666,6 +694,11 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
mState = SEND_HTTP_REQ;
|
||||
}
|
||||
else
|
||||
{
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
mState = LOAD_FROM_NETWORK;
|
||||
}
|
||||
}
|
||||
|
||||
if (mLoaded)
|
||||
@@ -698,6 +731,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
// we have enough data, decode it
|
||||
llassert_always(mFormattedImage->getDataSize() > 0);
|
||||
mState = DECODE_IMAGE;
|
||||
mWriteToCacheState = NOT_WRITE ;
|
||||
LL_DEBUGS("Texture") << mID << ": Cached. Bytes: " << mFormattedImage->getDataSize()
|
||||
<< " Size: " << llformat("%dx%d",mFormattedImage->getWidth(),mFormattedImage->getHeight())
|
||||
<< " Desired Discard: " << mDesiredDiscard << " Desired Size: " << mDesiredSize << LL_ENDL;
|
||||
// fall through
|
||||
}
|
||||
else
|
||||
@@ -726,7 +763,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
bool get_url = image_pipeline_use_http;
|
||||
if (!mUrl.empty()) get_url = false;
|
||||
// if (mHost != LLHost::invalid) get_url = false;
|
||||
if ( get_url )
|
||||
if ( get_url && mCanUseHTTP && mUrl.empty())//get http url.
|
||||
{
|
||||
LLViewerRegion* region = NULL;
|
||||
if (mHost == LLHost::invalid)
|
||||
@@ -740,23 +777,35 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
if (!http_url.empty())
|
||||
{
|
||||
mUrl = http_url + "/?texture_id=" + mID.asString().c_str();
|
||||
mWriteToCacheState = CAN_WRITE ; //because this texture has a fixed texture id.
|
||||
}
|
||||
else
|
||||
{
|
||||
mCanUseHTTP = false ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Region not found for host: " << mHost << llendl;
|
||||
// This will happen if not logged in or if a region deoes not have HTTP Texture enabled
|
||||
//llwarns << "Region not found for host: " << mHost << llendl;
|
||||
mCanUseHTTP = false;
|
||||
}
|
||||
}
|
||||
if (!mUrl.empty())
|
||||
if (mCanUseHTTP && !mUrl.empty())
|
||||
{
|
||||
mState = LLTextureFetchWorker::SEND_HTTP_REQ;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
if(mWriteToCacheState != NOT_WRITE)
|
||||
{
|
||||
mWriteToCacheState = CAN_WRITE ;
|
||||
}
|
||||
// don't return, fall through to next state
|
||||
}
|
||||
else if (mSentRequest == UNSENT)
|
||||
{
|
||||
// Add this to the network queue and sit here.
|
||||
// LLTextureFetch::update() will send off a request which will change our state
|
||||
mWriteToCacheState = CAN_WRITE ;
|
||||
mRequestedSize = mDesiredSize;
|
||||
mRequestedDiscard = mDesiredDiscard;
|
||||
mSentRequest = QUEUED;
|
||||
@@ -788,6 +837,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
}
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
mState = DECODE_IMAGE;
|
||||
mWriteToCacheState = SHOULD_WRITE ;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -798,6 +848,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
|
||||
if (mState == SEND_HTTP_REQ)
|
||||
{
|
||||
if(mCanUseHTTP)
|
||||
{
|
||||
const S32 HTTP_QUEUE_MAX_SIZE = 32;
|
||||
// *TODO: Integrate this with llviewerthrottle
|
||||
@@ -864,28 +915,82 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
S32 cur_size = mFormattedImage.notNull() ? mFormattedImage->getDataSize() : 0;
|
||||
if (mRequestedSize < 0)
|
||||
{
|
||||
const S32 HTTP_MAX_RETRY_COUNT = 4;
|
||||
llinfos << "HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus << " Reason: " << mGetReason
|
||||
<< " Try:" << mHTTPFailCount+1 << "/" << HTTP_MAX_RETRY_COUNT << llendl;
|
||||
if (cur_size == 0)
|
||||
S32 max_attempts;
|
||||
if (mGetStatus == HTTP_NOT_FOUND)
|
||||
{
|
||||
++mHTTPFailCount;
|
||||
if (mGetStatus == HTTP_NOT_FOUND || mHTTPFailCount >= HTTP_MAX_RETRY_COUNT)
|
||||
mHTTPFailCount = max_attempts = 1; // Don't retry
|
||||
llwarns << "Texture missing from server (404): " << mUrl << llendl;
|
||||
|
||||
//roll back to try UDP
|
||||
if(mCanUseNET)
|
||||
{
|
||||
resetFormattedData();
|
||||
return true; // failed
|
||||
llinfos << "Falling back to UDP fetch for texture " << mID << llendl;
|
||||
mState = INIT ;
|
||||
mCanUseHTTP = false ;
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
return false ;
|
||||
}
|
||||
else
|
||||
{
|
||||
mState = SEND_HTTP_REQ;
|
||||
return false; // retry
|
||||
// UDP is not an option, we are dead
|
||||
llwarns << "No UDP fallback available for texture " << mID << llendl;
|
||||
resetFormattedData();
|
||||
return true; // failed
|
||||
}
|
||||
}
|
||||
else if (mGetStatus == HTTP_SERVICE_UNAVAILABLE)
|
||||
{
|
||||
// *TODO: Should probably introduce a timer here to delay future HTTP requsts
|
||||
// for a short time (~1s) to ease server load? Ideally the server would queue
|
||||
// requests instead of returning 503... we already limit the number pending.
|
||||
++mHTTPFailCount;
|
||||
max_attempts = mHTTPFailCount+1; // Keep retrying
|
||||
LL_INFOS_ONCE("Texture") << "Texture server busy (503): " << mUrl << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
const S32 HTTP_MAX_RETRY_COUNT = 3;
|
||||
max_attempts = HTTP_MAX_RETRY_COUNT + 1;
|
||||
++mHTTPFailCount;
|
||||
llinfos << "HTTP GET failed for: " << mUrl
|
||||
<< " Status: " << mGetStatus << " Reason: '" << mGetReason << "'"
|
||||
<< " Attempt:" << mHTTPFailCount+1 << "/" << max_attempts << llendl;
|
||||
}
|
||||
|
||||
if (mHTTPFailCount >= max_attempts)
|
||||
{
|
||||
// Make max_attempts attempt at decoding what data we have, then bail forever on this image
|
||||
if (cur_size > 0 && (mHTTPFailCount < (max_attempts+1)) )
|
||||
{
|
||||
// Use available data
|
||||
mLoadedDiscard = mFormattedImage->getDiscardLevel();
|
||||
mState = DECODE_IMAGE;
|
||||
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);
|
||||
return false ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// UDP is not an option, we are dead
|
||||
llwarns << "No UDP fallback available for texture " << mID << llendl;
|
||||
resetFormattedData();
|
||||
return true; // failed
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mState = DECODE_IMAGE;
|
||||
return false; // use what we have
|
||||
mState = SEND_HTTP_REQ;
|
||||
return false; // retry
|
||||
}
|
||||
}
|
||||
|
||||
@@ -901,10 +1006,15 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
}
|
||||
|
||||
llassert_always(mBufferSize == cur_size + mRequestedSize);
|
||||
if (mHaveAllData)
|
||||
if (mHaveAllData && mRequestedDiscard == 0) //the image file is fully loaded.
|
||||
{
|
||||
mFileSize = mBufferSize;
|
||||
}
|
||||
else //the file size is unknown.
|
||||
{
|
||||
mFileSize = mBufferSize + 1 ; //flag the file is not fully loaded.
|
||||
}
|
||||
|
||||
U8* buffer = new U8[mBufferSize];
|
||||
if (cur_size > 0)
|
||||
{
|
||||
@@ -919,6 +1029,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
mBufferSize = 0;
|
||||
mLoadedDiscard = mRequestedDiscard;
|
||||
mState = DECODE_IMAGE;
|
||||
if(mWriteToCacheState != NOT_WRITE)
|
||||
{
|
||||
mWriteToCacheState = SHOULD_WRITE ;
|
||||
}
|
||||
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
|
||||
return false;
|
||||
}
|
||||
@@ -983,7 +1097,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
|
||||
if (mState == WRITE_TO_CACHE)
|
||||
{
|
||||
if (mInLocalCache || mSentRequest == UNSENT || mFormattedImage.isNull())
|
||||
if (mWriteToCacheState != SHOULD_WRITE || mFormattedImage.isNull())
|
||||
{
|
||||
// If we're in a local cache or we didn't actually receive any new data,
|
||||
// or we failed to load anything, skip
|
||||
@@ -1035,8 +1149,16 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
||||
else
|
||||
{
|
||||
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
|
||||
|
||||
if(mDecodedDiscard<=0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -1379,7 +1501,7 @@ LLTextureFetch::~LLTextureFetch()
|
||||
}
|
||||
|
||||
bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, const LLHost& host, F32 priority,
|
||||
S32 w, S32 h, S32 c, S32 desired_discard, bool needs_aux)
|
||||
S32 w, S32 h, S32 c, S32 desired_discard, bool needs_aux, bool can_use_http)
|
||||
{
|
||||
if (mDebugPause)
|
||||
{
|
||||
@@ -1441,6 +1563,7 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
|
||||
worker->lockWorkMutex();
|
||||
worker->setImagePriority(priority);
|
||||
worker->setDesiredDiscard(desired_discard, desired_size);
|
||||
worker->setCanUseHTTP(can_use_http) ;
|
||||
worker->unlockWorkMutex();
|
||||
if (!worker->haveWork())
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
S32 w, S32 h, S32 c, S32 discard, bool needs_aux, bool can_use_http);
|
||||
void deleteRequest(const LLUUID& id, bool cancel);
|
||||
bool getRequestFinished(const LLUUID& id, S32& discard_level,
|
||||
LLPointer<LLImageRaw>& raw, LLPointer<LLImageRaw>& aux);
|
||||
|
||||
@@ -412,6 +412,8 @@ void LLViewerImage::init(bool firstinit)
|
||||
mForceToSaveRawImage = FALSE ;
|
||||
mSavedRawDiscardLevel = -1 ;
|
||||
mDesiredSavedRawDiscardLevel = -1 ;
|
||||
|
||||
mCanUseHTTP = true; //default on if cap/settings allows us
|
||||
}
|
||||
|
||||
// virtual
|
||||
@@ -1251,7 +1253,7 @@ bool LLViewerImage::updateFetch()
|
||||
// bypass texturefetch directly by pulling from LLTextureCache
|
||||
bool fetch_request_created = false;
|
||||
fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), decode_priority,
|
||||
w, h, c, desired_discard, needsAux());
|
||||
w, h, c, desired_discard, needsAux(), mCanUseHTTP);
|
||||
|
||||
if (fetch_request_created)
|
||||
{
|
||||
@@ -1330,7 +1332,7 @@ BOOL LLViewerImage::forceFetch()
|
||||
c = getComponents();
|
||||
}
|
||||
fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), maxDecodePriority(),
|
||||
w, h, c, desired_discard, needsAux());
|
||||
w, h, c, desired_discard, needsAux(), mCanUseHTTP);
|
||||
|
||||
if (fetch_request_created)
|
||||
{
|
||||
|
||||
@@ -319,6 +319,9 @@ public:
|
||||
|
||||
void addFace(LLFace* facep) ;
|
||||
void removeFace(LLFace* facep) ;
|
||||
|
||||
void setCanUseHTTP(bool can_use_http) {mCanUseHTTP = can_use_http;};
|
||||
|
||||
private:
|
||||
/*virtual*/ void cleanup(); // Cleanup the LLViewerImage (so we can reinitialize it)
|
||||
|
||||
@@ -424,6 +427,8 @@ private:
|
||||
typedef std::list<LLFace*> ll_face_list_t ;
|
||||
ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture
|
||||
|
||||
bool mCanUseHTTP; // can this image be fetched by http
|
||||
|
||||
public:
|
||||
static const U32 sCurrentFileVersion;
|
||||
// Default textures
|
||||
|
||||
@@ -5517,6 +5517,7 @@ void LLVOAvatar::addLocalTextureStats( ETextureIndex idx, LLViewerImage* imagep,
|
||||
|
||||
void LLVOAvatar::addBakedTextureStats( LLViewerImage* imagep, F32 pixel_area, F32 texel_area_ratio, S32 boost_level)
|
||||
{
|
||||
imagep->setCanUseHTTP(false) ; //turn off http fetching for baked textures.
|
||||
mMaxPixelArea = llmax(pixel_area, mMaxPixelArea);
|
||||
mMinPixelArea = llmin(pixel_area, mMinPixelArea);
|
||||
imagep->addTextureStats(pixel_area / texel_area_ratio);
|
||||
|
||||
@@ -1,193 +1,193 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#ifdef IDC_STATIC
|
||||
#undef IDC_STATIC
|
||||
#endif
|
||||
#define IDC_STATIC (-1)
|
||||
#include "winresrc.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
// Commented out because it only compiles if you have MFC installed.
|
||||
//#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_LL_ICON ICON "snowglobe_icon.ico"
|
||||
IDI_LCD_LL_ICON ICON "icon1.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
SPLASHSCREEN DIALOG 32, 32, 144, 34
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
ICON IDI_LL_ICON,IDC_STATIC,7,7,20,20
|
||||
LTEXT "Loading Second Life...",666,36,13,91,8
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
|
||||
"SPLASHSCREEN", DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 137
|
||||
VERTGUIDE, 36
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 27
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Cursor
|
||||
//
|
||||
|
||||
TOOLGRAB CURSOR "lltoolgrab.cur"
|
||||
TOOLLAND CURSOR "lltoolland.cur"
|
||||
TOOLZOOMIN CURSOR "lltoolzoomin.cur"
|
||||
TOOLCREATE CURSOR "lltoolcreate.cur"
|
||||
ARROWDRAG CURSOR "llarrowdrag.cur"
|
||||
ARROW CURSOR "llarrow.cur"
|
||||
NOLOCKED CURSOR "llnolocked.cur"
|
||||
ARROWLOCKED CURSOR "llarrowlocked.cur"
|
||||
GRABLOCKED CURSOR "llgrablocked.cur"
|
||||
TOOLROTATE CURSOR "lltoolrotate.cur"
|
||||
TOOLTRANSLATE CURSOR "lltooltranslate.cur"
|
||||
TOOLSCALE CURSOR "lltoolscale.cur"
|
||||
TOOLCAMERA CURSOR "lltoolcamera.cur"
|
||||
TOOLPAN CURSOR "lltoolpan.cur"
|
||||
TOOLFOCUS CURSOR "lltoolfocus.cur"
|
||||
TOOLPICKOBJECT3 CURSOR "toolpickobject3.cur"
|
||||
ARROWCOPY CURSOR "arrowcop.cur"
|
||||
ARROWDRAGMULTI CURSOR "llarrowdragmulti.cur"
|
||||
ARROWCOPYMULTI CURSOR "arrowcopmulti.cur"
|
||||
TOOLSIT CURSOR "toolsit.cur"
|
||||
TOOLBUY CURSOR "toolbuy.cur"
|
||||
TOOLPAY CURSOR "toolpay.cur"
|
||||
TOOLOPEN CURSOR "toolopen.cur"
|
||||
TOOLPIPETTE CURSOR "toolpipette.cur"
|
||||
TOOLPLAY CURSOR "toolplay.cur"
|
||||
TOOLPAUSE CURSOR "toolpause.cur"
|
||||
TOOLMEDIAOPEN CURSOR "toolmediaopen.cur"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,4,0,0
|
||||
PRODUCTVERSION 1,4,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Linden Lab"
|
||||
VALUE "FileDescription", "Ascent"
|
||||
VALUE "FileVersion", "1.4.0.0"
|
||||
VALUE "InternalName", "Second Life"
|
||||
VALUE "LegalCopyright", "Copyright <20> 2001-2010, Linden Research, Inc."
|
||||
VALUE "OriginalFilename", "Ascent.exe"
|
||||
VALUE "ProductName", "Ascent"
|
||||
VALUE "ProductVersion", "1.4.0.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#ifdef IDC_STATIC
|
||||
#undef IDC_STATIC
|
||||
#endif
|
||||
#define IDC_STATIC (-1)
|
||||
#include "winresrc.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
// Commented out because it only compiles if you have MFC installed.
|
||||
//#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_LL_ICON ICON "snowglobe_icon.ico"
|
||||
IDI_LCD_LL_ICON ICON "icon1.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
SPLASHSCREEN DIALOG 32, 32, 144, 34
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
ICON IDI_LL_ICON,IDC_STATIC,7,7,20,20
|
||||
LTEXT "Loading Second Life...",666,36,13,91,8
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
|
||||
"SPLASHSCREEN", DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 137
|
||||
VERTGUIDE, 36
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 27
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Cursor
|
||||
//
|
||||
|
||||
TOOLGRAB CURSOR "lltoolgrab.cur"
|
||||
TOOLLAND CURSOR "lltoolland.cur"
|
||||
TOOLZOOMIN CURSOR "lltoolzoomin.cur"
|
||||
TOOLCREATE CURSOR "lltoolcreate.cur"
|
||||
ARROWDRAG CURSOR "llarrowdrag.cur"
|
||||
ARROW CURSOR "llarrow.cur"
|
||||
NOLOCKED CURSOR "llnolocked.cur"
|
||||
ARROWLOCKED CURSOR "llarrowlocked.cur"
|
||||
GRABLOCKED CURSOR "llgrablocked.cur"
|
||||
TOOLROTATE CURSOR "lltoolrotate.cur"
|
||||
TOOLTRANSLATE CURSOR "lltooltranslate.cur"
|
||||
TOOLSCALE CURSOR "lltoolscale.cur"
|
||||
TOOLCAMERA CURSOR "lltoolcamera.cur"
|
||||
TOOLPAN CURSOR "lltoolpan.cur"
|
||||
TOOLFOCUS CURSOR "lltoolfocus.cur"
|
||||
TOOLPICKOBJECT3 CURSOR "toolpickobject3.cur"
|
||||
ARROWCOPY CURSOR "arrowcop.cur"
|
||||
ARROWDRAGMULTI CURSOR "llarrowdragmulti.cur"
|
||||
ARROWCOPYMULTI CURSOR "arrowcopmulti.cur"
|
||||
TOOLSIT CURSOR "toolsit.cur"
|
||||
TOOLBUY CURSOR "toolbuy.cur"
|
||||
TOOLPAY CURSOR "toolpay.cur"
|
||||
TOOLOPEN CURSOR "toolopen.cur"
|
||||
TOOLPIPETTE CURSOR "toolpipette.cur"
|
||||
TOOLPLAY CURSOR "toolplay.cur"
|
||||
TOOLPAUSE CURSOR "toolpause.cur"
|
||||
TOOLMEDIAOPEN CURSOR "toolmediaopen.cur"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,4,0,0
|
||||
PRODUCTVERSION 1,4,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Linden Lab"
|
||||
VALUE "FileDescription", "Ascent"
|
||||
VALUE "FileVersion", "1.4.0.0"
|
||||
VALUE "InternalName", "Second Life"
|
||||
VALUE "LegalCopyright", "Copyright <20> 2001-2010, Linden Research, Inc."
|
||||
VALUE "OriginalFilename", "Ascent.exe"
|
||||
VALUE "ProductName", "Ascent"
|
||||
VALUE "ProductVersion", "1.4.0.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
|
||||
Reference in New Issue
Block a user