Compare commits
14 Commits
sv-1.8.9.8
...
sv-1.8.9.8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5040275969 | ||
|
|
1daccf40ee | ||
|
|
4fd302286b | ||
|
|
18f9f19e61 | ||
|
|
1de6d4461a | ||
|
|
4198f47ab6 | ||
|
|
d9049ba342 | ||
|
|
f75ac3e4c2 | ||
|
|
06698deaca | ||
|
|
445eb29bd3 | ||
|
|
cc034f6841 | ||
|
|
3c368651f1 | ||
|
|
321730e384 | ||
|
|
c2fd88670f |
@@ -410,11 +410,11 @@
|
|||||||
<key>archive</key>
|
<key>archive</key>
|
||||||
<map>
|
<map>
|
||||||
<key>hash</key>
|
<key>hash</key>
|
||||||
<string>4614b29cc98021cf1770a8290171602b</string>
|
<string>a96fda7ad5cee967823f5c94390ba35b</string>
|
||||||
<key>hash_algorithm</key>
|
<key>hash_algorithm</key>
|
||||||
<string>md5</string>
|
<string>md5</string>
|
||||||
<key>url</key>
|
<key>url</key>
|
||||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-ce32d093.7-windows-7.tar.bz2</string>
|
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-c6d76a90.194-windows-194.tar.bz2</string>
|
||||||
</map>
|
</map>
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>windows</string>
|
<string>windows</string>
|
||||||
@@ -424,18 +424,18 @@
|
|||||||
<key>archive</key>
|
<key>archive</key>
|
||||||
<map>
|
<map>
|
||||||
<key>hash</key>
|
<key>hash</key>
|
||||||
<string>d801461b7a6a40fffab828aa1e01e3e6</string>
|
<string>5ff95ca1007ed2dc300b59de17453201</string>
|
||||||
<key>hash_algorithm</key>
|
<key>hash_algorithm</key>
|
||||||
<string>md5</string>
|
<string>md5</string>
|
||||||
<key>url</key>
|
<key>url</key>
|
||||||
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-ce32d093.7-windows64-7.tar.bz2</string>
|
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-c6d76a90.194-windows64-194.tar.bz2</string>
|
||||||
</map>
|
</map>
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>windows64</string>
|
<string>windows64</string>
|
||||||
</map>
|
</map>
|
||||||
</map>
|
</map>
|
||||||
<key>version</key>
|
<key>version</key>
|
||||||
<string>ce32d093.7</string>
|
<string>c6d76a90.194</string>
|
||||||
</map>
|
</map>
|
||||||
<key>curl</key>
|
<key>curl</key>
|
||||||
<map>
|
<map>
|
||||||
|
|||||||
@@ -270,6 +270,8 @@ if (NOT VIEWER_CHANNEL_GRK)
|
|||||||
set(VIEWER_CHANNEL_GRK "\\u03B1") # "α"
|
set(VIEWER_CHANNEL_GRK "\\u03B1") # "α"
|
||||||
elseif (VIEWER_CHANNEL_TYPE MATCHES "Beta")
|
elseif (VIEWER_CHANNEL_TYPE MATCHES "Beta")
|
||||||
set(VIEWER_CHANNEL_GRK "\\u03B2") # "β"
|
set(VIEWER_CHANNEL_GRK "\\u03B2") # "β"
|
||||||
|
else()
|
||||||
|
set(VIEWER_CHANNEL_GRK "")
|
||||||
endif ()
|
endif ()
|
||||||
endif (NOT VIEWER_CHANNEL_GRK)
|
endif (NOT VIEWER_CHANNEL_GRK)
|
||||||
|
|
||||||
|
|||||||
@@ -353,10 +353,10 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
|
|||||||
|
|
||||||
// NEW Macros for debugging, allow the passing of a string tag
|
// NEW Macros for debugging, allow the passing of a string tag
|
||||||
|
|
||||||
#if SHOW_DEBUG
|
#ifdef SHOW_DEBUG
|
||||||
#define DO_DEBUG_LOG if(true)
|
#define DO_DEBUG_LOG
|
||||||
#else
|
#else
|
||||||
#define DO_DEBUG_LOG if(false)
|
#define DO_DEBUG_LOG if (false)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Pass comma separated list of tags (currently only supports up to 0, 1, or 2)
|
// Pass comma separated list of tags (currently only supports up to 0, 1, or 2)
|
||||||
|
|||||||
@@ -960,4 +960,5 @@ P(webProfileResponders);
|
|||||||
P(wholeModelFeeResponder);
|
P(wholeModelFeeResponder);
|
||||||
P(wholeModelUploadResponder);
|
P(wholeModelUploadResponder);
|
||||||
P2(XMLRPCResponder, connect_40s);
|
P2(XMLRPCResponder, connect_40s);
|
||||||
P(getUpdateInfoResponder);
|
P(getUpdateInfoResponder);
|
||||||
|
P2(AISAPIResponder, connect_60s);
|
||||||
@@ -207,6 +207,7 @@ void LLPrefsAscentSys::refreshValues()
|
|||||||
mDisplayScriptJumps = gSavedSettings.getBOOL("AscentDisplayTotalScriptJumps");
|
mDisplayScriptJumps = gSavedSettings.getBOOL("AscentDisplayTotalScriptJumps");
|
||||||
mNumScriptDiff = gSavedSettings.getF32("Ascentnumscriptdiff");
|
mNumScriptDiff = gSavedSettings.getF32("Ascentnumscriptdiff");
|
||||||
mReplaceLinks = gSavedSettings.getBOOL("SinguReplaceLinks");
|
mReplaceLinks = gSavedSettings.getBOOL("SinguReplaceLinks");
|
||||||
|
mEmergencySeconds = gSavedPerAccountSettings.getU32("EmergencyTeleportSeconds");
|
||||||
mLandmark = gSavedPerAccountSettings.getString("EmergencyTeleportLandmark");
|
mLandmark = gSavedPerAccountSettings.getString("EmergencyTeleportLandmark");
|
||||||
mLandmarkBackup = gSavedPerAccountSettings.getString("EmergencyTeleportLandmarkBackup");
|
mLandmarkBackup = gSavedPerAccountSettings.getString("EmergencyTeleportLandmarkBackup");
|
||||||
|
|
||||||
@@ -353,6 +354,7 @@ void LLPrefsAscentSys::cancel()
|
|||||||
gSavedSettings.setBOOL("AscentDisplayTotalScriptJumps", mDisplayScriptJumps);
|
gSavedSettings.setBOOL("AscentDisplayTotalScriptJumps", mDisplayScriptJumps);
|
||||||
gSavedSettings.setF32("Ascentnumscriptdiff", mNumScriptDiff);
|
gSavedSettings.setF32("Ascentnumscriptdiff", mNumScriptDiff);
|
||||||
gSavedSettings.setBOOL("SinguReplaceLinks", mReplaceLinks);
|
gSavedSettings.setBOOL("SinguReplaceLinks", mReplaceLinks);
|
||||||
|
gSavedPerAccountSettings.setU32("EmergencyTeleportSeconds", mEmergencySeconds);
|
||||||
gSavedPerAccountSettings.setString("EmergencyTeleportLandmark", mLandmark);
|
gSavedPerAccountSettings.setString("EmergencyTeleportLandmark", mLandmark);
|
||||||
gSavedPerAccountSettings.setString("EmergencyTeleportLandmarkBackup", mLandmarkBackup);
|
gSavedPerAccountSettings.setString("EmergencyTeleportLandmarkBackup", mLandmarkBackup);
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ private:
|
|||||||
bool mDisplayScriptJumps;
|
bool mDisplayScriptJumps;
|
||||||
bool mReplaceLinks;
|
bool mReplaceLinks;
|
||||||
F32 mNumScriptDiff;
|
F32 mNumScriptDiff;
|
||||||
|
U32 mEmergencySeconds;
|
||||||
std::string mLandmark;
|
std::string mLandmark;
|
||||||
std::string mLandmarkBackup;
|
std::string mLandmarkBackup;
|
||||||
|
|
||||||
|
|||||||
@@ -40,11 +40,21 @@
|
|||||||
/// Classes for AISv3 support.
|
/// Classes for AISv3 support.
|
||||||
///----------------------------------------------------------------------------
|
///----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
extern AIHTTPTimeoutPolicy AISAPIResponder_timeout;
|
||||||
|
|
||||||
class AISCommand final : public LLHTTPClient::ResponderWithCompleted
|
class AISCommand final : public LLHTTPClient::ResponderWithCompleted
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef boost::function<void()> command_func_type;
|
typedef boost::function<void()> command_func_type;
|
||||||
// AISCommand - base class for retry-able HTTP requests using the AISv3 cap.
|
// AISCommand - base class for retry-able HTTP requests using the AISv3 cap.
|
||||||
|
|
||||||
|
// Limit max in flight requests to 2. Server was aggressively throttling otherwise.
|
||||||
|
constexpr static U8 sMaxActiveAISCommands = 4;
|
||||||
|
static U8 sActiveAISCommands;
|
||||||
|
static std::queue< boost::intrusive_ptr< AISCommand > > sPendingAISCommands;
|
||||||
|
|
||||||
|
virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return AISAPIResponder_timeout; }
|
||||||
|
|
||||||
AISCommand(AISAPI::COMMAND_TYPE type, const char* name, const LLUUID& targetId, AISAPI::completion_t callback) :
|
AISCommand(AISAPI::COMMAND_TYPE type, const char* name, const LLUUID& targetId, AISAPI::completion_t callback) :
|
||||||
mCommandFunc(NULL),
|
mCommandFunc(NULL),
|
||||||
mRetryPolicy(new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10)),
|
mRetryPolicy(new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10)),
|
||||||
@@ -53,10 +63,30 @@ public:
|
|||||||
mName(name),
|
mName(name),
|
||||||
mType(type)
|
mType(type)
|
||||||
{}
|
{}
|
||||||
|
virtual ~AISCommand()
|
||||||
|
{
|
||||||
|
if (mActive)
|
||||||
|
{
|
||||||
|
--sActiveAISCommands;
|
||||||
|
while (sActiveAISCommands < sMaxActiveAISCommands && !sPendingAISCommands.empty())
|
||||||
|
{
|
||||||
|
sPendingAISCommands.front()->dispatch();
|
||||||
|
sPendingAISCommands.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void run( command_func_type func )
|
void run( command_func_type func )
|
||||||
{
|
{
|
||||||
(mCommandFunc = func)();
|
mCommandFunc = func;
|
||||||
|
if (sActiveAISCommands >= sMaxActiveAISCommands)
|
||||||
|
{
|
||||||
|
sPendingAISCommands.push(this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dispatch();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char const* getName(void) const override
|
char const* getName(void) const override
|
||||||
@@ -64,6 +94,17 @@ public:
|
|||||||
return mName;
|
return mName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void dispatch()
|
||||||
|
{
|
||||||
|
if (LLApp::isQuitting())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
++sActiveAISCommands;
|
||||||
|
mActive = true;
|
||||||
|
(mCommandFunc)();
|
||||||
|
}
|
||||||
void markComplete()
|
void markComplete()
|
||||||
{
|
{
|
||||||
// Command func holds a reference to self, need to release it
|
// Command func holds a reference to self, need to release it
|
||||||
@@ -72,42 +113,56 @@ public:
|
|||||||
mRetryPolicy->onSuccess();
|
mRetryPolicy->onSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
void malformedResponse() { mStatus = HTTP_INTERNAL_ERROR_OTHER; mReason = llformat("Malformed response contents (original code: %d)", mStatus); }
|
|
||||||
|
|
||||||
bool onFailure()
|
bool onFailure()
|
||||||
{
|
{
|
||||||
bool retry = mStatus != HTTP_INTERNAL_ERROR_OTHER && mStatus != 410; // We handle these and stop
|
mRetryPolicy->onFailure(mStatus, getResponseHeaders());
|
||||||
LL_WARNS("Inventory") << "Inventory error: " << dumpResponse() << LL_ENDL;
|
|
||||||
if (retry) mRetryPolicy->onFailure(mStatus, getResponseHeaders());
|
|
||||||
F32 seconds_to_wait;
|
F32 seconds_to_wait;
|
||||||
if (retry && mRetryPolicy->shouldRetry(seconds_to_wait))
|
if (mRetryPolicy->shouldRetry(seconds_to_wait))
|
||||||
{
|
{
|
||||||
|
if (mStatus == 503)
|
||||||
|
{
|
||||||
|
// Pad delay a bit more since we're getting throttled.
|
||||||
|
seconds_to_wait += 10.f + ll_frand(4.f);
|
||||||
|
}
|
||||||
|
LL_WARNS("Inventory") << "Retrying in " << seconds_to_wait << "seconds due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
|
||||||
doAfterInterval(mCommandFunc,seconds_to_wait);
|
doAfterInterval(mCommandFunc,seconds_to_wait);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Command func holds a reference to self, need to release it
|
// Command func holds a reference to self, need to release it
|
||||||
// after a success or final failure.
|
// after a success or final failure.
|
||||||
// *TODO: Notify user? This seems bad.
|
// *TODO: Notify user? This seems bad.
|
||||||
|
LL_WARNS("Inventory") << "Abort due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
|
||||||
mCommandFunc = no_op;
|
mCommandFunc = no_op;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return retry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void httpCompleted() override
|
void httpCompleted() override
|
||||||
{
|
{
|
||||||
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType);
|
// Continue through if successful or longer retrying,
|
||||||
|
if (isGoodStatus(mStatus) || !onFailure())
|
||||||
|
{
|
||||||
|
markComplete();
|
||||||
|
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
command_func_type mCommandFunc;
|
command_func_type mCommandFunc;
|
||||||
LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
|
LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
|
||||||
AISAPI::completion_t mCompletionFunc;
|
AISAPI::completion_t mCompletionFunc;
|
||||||
const LLUUID mTargetId;
|
const LLUUID mTargetId;
|
||||||
const char* mName;
|
const char* mName;
|
||||||
|
bool mActive = false;
|
||||||
AISAPI::COMMAND_TYPE mType;
|
AISAPI::COMMAND_TYPE mType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
U8 AISCommand::sActiveAISCommands = 0;
|
||||||
|
std::queue< boost::intrusive_ptr< AISCommand > > AISCommand::sPendingAISCommands;
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
const std::string AISAPI::INVENTORY_CAP_NAME("InventoryAPIv3");
|
const std::string AISAPI::INVENTORY_CAP_NAME("InventoryAPIv3");
|
||||||
const std::string AISAPI::LIBRARY_CAP_NAME("LibraryAPIv3");
|
const std::string AISAPI::LIBRARY_CAP_NAME("LibraryAPIv3");
|
||||||
@@ -312,21 +367,18 @@ void AISAPI::UpdateItem(const LLUUID &itemId, const LLSD &updates, completion_t
|
|||||||
boost::intrusive_ptr< AISCommand > responder = new AISCommand(UPDATEITEM, "UpdateItem",itemId, callback);
|
boost::intrusive_ptr< AISCommand > responder = new AISCommand(UPDATEITEM, "UpdateItem",itemId, callback);
|
||||||
responder->run(boost::bind(&LLHTTPClient::patch, url, updates, responder/*,*/ DEBUG_CURLIO_PARAM(debug_off), keep_alive, (AIStateMachine*)NULL, 0));
|
responder->run(boost::bind(&LLHTTPClient::patch, url, updates, responder/*,*/ DEBUG_CURLIO_PARAM(debug_off), keep_alive, (AIStateMachine*)NULL, 0));
|
||||||
}
|
}
|
||||||
void AISAPI::InvokeAISCommandCoro(AISCommand* responder,
|
void AISAPI::InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
|
||||||
std::string url,
|
std::string url,
|
||||||
LLUUID targetId, LLSD result, completion_t callback, COMMAND_TYPE type)
|
LLUUID targetId, LLSD result, completion_t callback, COMMAND_TYPE type)
|
||||||
{
|
{
|
||||||
LL_DEBUGS("Inventory") << "url: " << url << LL_ENDL;
|
LL_DEBUGS("Inventory") << "url: " << url << LL_ENDL;
|
||||||
|
|
||||||
auto status = responder->getStatus();
|
auto status = responder->getStatus();
|
||||||
|
|
||||||
if (!responder->isGoodStatus(status) || !result.isMap())
|
if (!responder->isGoodStatus(status) || !result.isMap())
|
||||||
{
|
{
|
||||||
if (!result.isMap())
|
LL_WARNS("Inventory") << "Inventory error: " << status << ": " << responder->getReason() << LL_ENDL;
|
||||||
{
|
if (status == 410) //GONE
|
||||||
responder->malformedResponse();
|
|
||||||
}
|
|
||||||
else if (status == 410) //GONE
|
|
||||||
{
|
{
|
||||||
// Item does not exist or was already deleted from server.
|
// Item does not exist or was already deleted from server.
|
||||||
// parent folder is out of sync
|
// parent folder is out of sync
|
||||||
@@ -360,11 +412,12 @@ void AISAPI::InvokeAISCommandCoro(AISCommand* responder,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Keep these statuses accounted for in the responder too
|
if (!result.isMap())
|
||||||
if (responder->onFailure()) // If we're retrying, exit early.
|
{
|
||||||
return;
|
LL_WARNS("Inventory") << "Inventory error: Malformed response contents" << LL_ENDL;
|
||||||
|
}
|
||||||
|
LL_WARNS("Inventory") << ll_pretty_print_sd(result) << LL_ENDL;
|
||||||
}
|
}
|
||||||
else responder->markComplete();
|
|
||||||
|
|
||||||
gInventory.onAISUpdateReceived("AISCommand", result);
|
gInventory.onAISUpdateReceived("AISCommand", result);
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ private:
|
|||||||
static std::string getInvCap();
|
static std::string getInvCap();
|
||||||
static std::string getLibCap();
|
static std::string getLibCap();
|
||||||
|
|
||||||
static void InvokeAISCommandCoro(class AISCommand* responder,
|
static void InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
|
||||||
std::string url, LLUUID targetId, LLSD body,
|
std::string url, LLUUID targetId, LLSD body,
|
||||||
completion_t callback, COMMAND_TYPE type);
|
completion_t callback, COMMAND_TYPE type);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2010,7 +2010,7 @@ void LLFolderView::scrollToShowSelection()
|
|||||||
// However we allow scrolling for folder views with mAutoSelectOverride
|
// However we allow scrolling for folder views with mAutoSelectOverride
|
||||||
// (used in Places SP) as an exception because the selection in them
|
// (used in Places SP) as an exception because the selection in them
|
||||||
// is not reset during items filtering. See STORM-133.
|
// is not reset during items filtering. See STORM-133.
|
||||||
if ( (!LLInventoryModelBackgroundFetch::instance().folderFetchActive() || mAutoSelectOverride)
|
if ( (LLInventoryModelBackgroundFetch::instance().isEverythingFetched() || mAutoSelectOverride)
|
||||||
&& mSelectedItems.size() )
|
&& mSelectedItems.size() )
|
||||||
{
|
{
|
||||||
mNeedsScroll = TRUE;
|
mNeedsScroll = TRUE;
|
||||||
|
|||||||
@@ -872,7 +872,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
|
|||||||
mCacheReadCount(0U),
|
mCacheReadCount(0U),
|
||||||
mCacheWriteCount(0U)
|
mCacheWriteCount(0U)
|
||||||
{
|
{
|
||||||
mCanUseNET = mUrl.empty() ;
|
mCanUseNET = mUrl.empty() && !gHippoGridManager->getConnectedGrid()->isSecondLife();
|
||||||
|
|
||||||
if (!mCanUseNET)
|
if (!mCanUseNET)
|
||||||
{
|
{
|
||||||
@@ -1236,9 +1236,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
if (mState == LOAD_FROM_NETWORK)
|
if (mState == LOAD_FROM_NETWORK)
|
||||||
{
|
{
|
||||||
static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP");
|
static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP");
|
||||||
|
bool is_sl = gHippoGridManager->getConnectedGrid()->isSecondLife();
|
||||||
|
|
||||||
// if (mHost != LLHost::invalid) use_http = false;
|
// if (mHost != LLHost::invalid) use_http = false;
|
||||||
if (use_http && mCanUseHTTP && mUrl.empty()) // get http url.
|
if ((is_sl || use_http) && mCanUseHTTP && mUrl.empty()) // get http url.
|
||||||
{
|
{
|
||||||
LLViewerRegion* region = NULL;
|
LLViewerRegion* region = NULL;
|
||||||
if (mHost == LLHost::invalid)
|
if (mHost == LLHost::invalid)
|
||||||
@@ -1280,6 +1281,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
mWriteToCacheState = CAN_WRITE;
|
mWriteToCacheState = CAN_WRITE;
|
||||||
}
|
}
|
||||||
if (!mUrl.empty() && SGHostBlackList::isBlacklisted(mUrl)){
|
if (!mUrl.empty() && SGHostBlackList::isBlacklisted(mUrl)){
|
||||||
|
LL_DEBUGS("Texture") << mID << "Blacklisted" << LL_ENDL;
|
||||||
mCanUseHTTP = false;
|
mCanUseHTTP = false;
|
||||||
}
|
}
|
||||||
if (mCanUseHTTP && !mUrl.empty())
|
if (mCanUseHTTP && !mUrl.empty())
|
||||||
@@ -1292,7 +1294,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
}
|
}
|
||||||
// don't return, fall through to next state
|
// don't return, fall through to next state
|
||||||
}
|
}
|
||||||
else if (mSentRequest == UNSENT && mCanUseNET)
|
else if (!mCanUseNET)
|
||||||
|
{
|
||||||
|
LL_WARNS(LOG_TXT) << mID << "Unable to retrieve texture via HTTP and UDP unavailable (probable 404): " << mUrl << LL_ENDL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (mSentRequest == UNSENT)
|
||||||
{
|
{
|
||||||
LL_DEBUGS("Texture") << mID << " moving to UDP fetch. mSentRequest=" << mSentRequest << " mCanUseNET = " << mCanUseNET << LL_ENDL;
|
LL_DEBUGS("Texture") << mID << " moving to UDP fetch. mSentRequest=" << mSentRequest << " mCanUseNET = " << mCanUseNET << LL_ENDL;
|
||||||
setState(SEND_UDP_REQ);
|
setState(SEND_UDP_REQ);
|
||||||
@@ -1821,6 +1828,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
S32 discard = mHaveAllData ? 0 : mLoadedDiscard;
|
S32 discard = mHaveAllData ? 0 : mLoadedDiscard;
|
||||||
U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
|
U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
|
||||||
mDecoded = FALSE;
|
mDecoded = FALSE;
|
||||||
|
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
|
||||||
setState(DECODE_IMAGE_UPDATE);
|
setState(DECODE_IMAGE_UPDATE);
|
||||||
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
|
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
|
||||||
<< " All Data: " << mHaveAllData << LL_ENDL;
|
<< " All Data: " << mHaveAllData << LL_ENDL;
|
||||||
|
|||||||
@@ -9950,7 +9950,7 @@ You cannot copy your selection because the object '[OBJ_NAME]' is not transferra
|
|||||||
name="NoPermsNoRemoval"
|
name="NoPermsNoRemoval"
|
||||||
type="notify">
|
type="notify">
|
||||||
<tag>fail</tag>
|
<tag>fail</tag>
|
||||||
Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
|
Removal of the object '[OBJ_NAME]' from the region is disallowed by the permissions system.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
@@ -10221,7 +10221,7 @@ Unable to add script!
|
|||||||
name="AssetServerTimeoutObjReturn"
|
name="AssetServerTimeoutObjReturn"
|
||||||
type="notify">
|
type="notify">
|
||||||
<tag>fail</tag>
|
<tag>fail</tag>
|
||||||
Asset server didn't respond in a timely fashion. Object returned to sim.
|
Asset server didn't respond in a timely fashion. Object returned to region.
|
||||||
</notification>
|
</notification>
|
||||||
|
|
||||||
<notification
|
<notification
|
||||||
@@ -11694,7 +11694,7 @@ Media/audio URL blocked for [DOMAIN]
|
|||||||
name="RadarChatKeysRequest"
|
name="RadarChatKeysRequest"
|
||||||
type="alertmodal">
|
type="alertmodal">
|
||||||
An object owned by you has requested keys from your radar.
|
An object owned by you has requested keys from your radar.
|
||||||
Would you like to enable announcing keys to objects in the sim?
|
Would you like to enable announcing keys to objects in the region?
|
||||||
<usetemplate
|
<usetemplate
|
||||||
name="yesnocancelbuttons"
|
name="yesnocancelbuttons"
|
||||||
yestext="Yes"
|
yestext="Yes"
|
||||||
|
|||||||
@@ -80,8 +80,8 @@
|
|||||||
<button bottom_delta="0" left="146" height="16" width="16" follows="left|bottom" image_overlay="inv_folder_trash.tga" scale_image="true" label="" tool_tip="Delete the currently selected remembered login info, if any." name="remove_login"/>
|
<button bottom_delta="0" left="146" height="16" width="16" follows="left|bottom" image_overlay="inv_folder_trash.tga" scale_image="true" label="" tool_tip="Delete the currently selected remembered login info, if any." name="remove_login"/>
|
||||||
<check_box bottom_delta="0" left="173" control_name="RememberPassword" follows="left|bottom" height="16" label="Save password" name="remember_check" width="158"/>
|
<check_box bottom_delta="0" left="173" control_name="RememberPassword" follows="left|bottom" height="16" label="Save password" name="remember_check" width="158"/>
|
||||||
|
|
||||||
<text name="fmod_text" value="Powered By" bottom="42" height="16" left="-425" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/>
|
<icon name="fmod_logo" bottom="10" height="40" left="-341" width="152" follows="right|bottom" image_name="FMOD_Logo"/>
|
||||||
<icon name="fmod_logo" bottom_delta="-32" height="40" left_delta="84" width="152" follows="right|bottom" image_name="FMOD_Logo"/>
|
<text name="fmod_text" value="Powered By" bottom_delta="40" height="16" left_delta="36" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/>
|
||||||
|
|
||||||
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
bottom="45" drop_shadow_visible="true" follows="right|bottom"
|
bottom="45" drop_shadow_visible="true" follows="right|bottom"
|
||||||
|
|||||||
@@ -115,8 +115,9 @@
|
|||||||
<spinner bottom_delta="0" decimal_digits="0" follows="top" height="16" increment="1" left_delta="210" max_val="9999" min_val="1" name="ScriptJumpCount" width="50" control_name="Ascentnumscriptdiff" tool_tip="Threshold for the script jump message [Default: 100]"/>
|
<spinner bottom_delta="0" decimal_digits="0" follows="top" height="16" increment="1" left_delta="210" max_val="9999" min_val="1" name="ScriptJumpCount" width="50" control_name="Ascentnumscriptdiff" tool_tip="Threshold for the script jump message [Default: 100]"/>
|
||||||
<check_box bottom_delta="-20" left="10" follows="top" label="Restrained Love API Support (RLVa)" name="RestrainedLove" control_name="RestrainedLove" tool_tip="Allows scripts to take greater control of the viewer, if you wear compliant objects."/>
|
<check_box bottom_delta="-20" left="10" follows="top" label="Restrained Love API Support (RLVa)" name="RestrainedLove" control_name="RestrainedLove" tool_tip="Allows scripts to take greater control of the viewer, if you wear compliant objects."/>
|
||||||
<check_box bottom_delta="-20" follows="top" label="Replace slurls and formatted links with labels" name="SinguReplaceLinks" control_name="SinguReplaceLinks" tool_tip="While you can right click to see where they really lead by copying them, this does allow links to be misleading at first glance."/>
|
<check_box bottom_delta="-20" follows="top" label="Replace slurls and formatted links with labels" name="SinguReplaceLinks" control_name="SinguReplaceLinks" tool_tip="While you can right click to see where they really lead by copying them, this does allow links to be misleading at first glance."/>
|
||||||
<text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport there in the last 20 seconds before region restarts</text>
|
<text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport to before region restarts</text>
|
||||||
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/>
|
<spinner name="EmergencyTeleportSeconds" label="Seconds before restart to begin teleport attempts" label_width="380" width="432" control_name="EmergencyTeleportSeconds" bottom_delta="-26" decimal_digits="0" max_val="3600" min_val="0" follows="left|top" height="18" increment="1"/>
|
||||||
|
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-4" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/>
|
||||||
<text name="EmergencyTeleportBackupDesc" halign="center" width="432" left="14" bottom_delta="-26" follows="top">Drop a backup landmark to autoteleport to below, should you already be at above</text>
|
<text name="EmergencyTeleportBackupDesc" halign="center" width="432" left="14" bottom_delta="-26" follows="top">Drop a backup landmark to autoteleport to below, should you already be at above</text>
|
||||||
<drop_target control_name="EmergencyTeleportLandmarkBackup" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_backup_drop" width="430"/>
|
<drop_target control_name="EmergencyTeleportLandmarkBackup" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_backup_drop" width="430"/>
|
||||||
</panel>
|
</panel>
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
<column name="Owner" label="Propietario" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
|
<column name="Owner" label="Propietario" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
|
||||||
<column name="Group" label="Grupo" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
|
<column name="Group" label="Grupo" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
|
||||||
</scroll_list>
|
</scroll_list>
|
||||||
|
<button name="TP" label="TP"/>
|
||||||
|
<button name="Look" label="Ver"/>
|
||||||
<text name="counter">
|
<text name="counter">
|
||||||
Listados/Pendientes/Total
|
Listados/Pendientes/Total
|
||||||
</text>
|
</text>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<menu label="Grupos" name="groups_menu">
|
<menu label="Grupos" name="groups_menu">
|
||||||
<menu_item_call label="Mostrar Perfil" name="show_group"/>
|
<menu_item_call label="Mostrar Información del Grupo" name="show_group"/>
|
||||||
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
|
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
|
||||||
<menu_item_call label="LLamar en el grupo" name="call_group"/>
|
<menu_item_call label="Abrir chat del Grupo" name="call_group"/>
|
||||||
<menu_item_call label="Activar Grupo" name="activate_group"/>
|
<menu_item_call label="Activar Grupo" name="activate_group"/>
|
||||||
<menu_item_call label="Hisotiral de chat" name="Chat History"/>
|
<menu_item_call label="Historial de chat" name="Chat History"/>
|
||||||
<menu_item_call label="Unirse al Grupo" name="join_group"/>
|
<menu_item_call label="Unirse al Grupo" name="join_group"/>
|
||||||
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
|
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
|
||||||
<menu_item_call label="Copiar Nombre" name="copy_name"/>
|
<menu_item_call label="Copiar Nombre" name="copy_name"/>
|
||||||
|
|||||||
@@ -1,27 +1,31 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
<menu label="Propietario" name="Object Owner Submenu">
|
<menu label="Propietario" name="Object Owner Submenu">
|
||||||
<menu_item_call label="Perfil" name="Profile"/>
|
<menu_item_call label="Perfil" name="Profile"/>
|
||||||
<menu name="Acciones" label="Actions"/>
|
<menu name="Actions" label="Acciones">
|
||||||
<menu_item_call label="Pagar" name="Pay"/>
|
<menu_item_call label="Perfil Web" name="Web Profile"/>
|
||||||
<menu_item_call label="Mensaje Instantáneo" name="Instant Message"/>
|
<menu_item_call label="Pagar" name="Pay"/>
|
||||||
<menu_item_call label="Conferencia" name="Conference Chat"/>
|
<menu_item_call label="Mensaje Instantáneo" name="Instant Message"/>
|
||||||
<menu_item_call label="Llamar" name="Call"/>
|
<menu_item_call label="Conferencia" name="Conference Chat"/>
|
||||||
<menu_item_call label="Llamar Conferencia" name="Conference Call"/>
|
<menu_item_call label="Llamar" name="Call"/>
|
||||||
<menu_item_call label="Ofrecer Amistad" name="Add Friend"/>
|
<menu_item_call label="Llamar Conferencia" name="Conference Call"/>
|
||||||
<menu_item_call label="Quitar Amistad" name="Remove Friend"/>
|
<menu_item_call label="Ofrecer Amistad" name="Add Friend"/>
|
||||||
<menu_item_call label="Invitar a un Grupo" name="Invite To Group"/>
|
<menu_item_call label="Quitar Amistad" name="Remove Friend"/>
|
||||||
<menu_item_call label="Seguir" name="Follow"/>
|
<menu_item_call label="Invitar a un Grupo" name="Invite To Group"/>
|
||||||
<menu_item_call label="Movea A" name="Move To"/>
|
<menu_item_call label="Seguir" name="Follow"/>
|
||||||
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
|
<menu_item_call label="Mover A" name="Move To"/>
|
||||||
<menu_item_call label="Teleportar A" name="Teleport To"/>
|
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
|
||||||
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
|
<menu_item_call label="Teleportar A" name="Teleport To"/>
|
||||||
<menu_item_call label="Encontrar en el Mapa" name="Find on Map"/>
|
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
|
||||||
<menu_item_call label="Compartir" name="Share"/>
|
<menu_item_call label="Encontrar en el Mapa" name="Find on Map"/>
|
||||||
<menu_item_call label="Historial de Chat" name="Chat History"/>
|
<menu_item_call label="Compartir" name="Share"/>
|
||||||
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
|
<menu_item_call label="Historial de Chat" name="Chat History"/>
|
||||||
<menu name="Copiar" label="Copy"/>
|
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
|
||||||
<menu_item_call label="Nombre" name="Copy Name"/>
|
</menu>
|
||||||
<menu_item_call label="SLURL" name="Copy SLURL"/>
|
<menu name="Copy" label="Copiar">
|
||||||
|
<menu_item_call label="UUID" name="Copy Key"/>
|
||||||
|
<menu_item_call label="Nombre" name="Copy Name"/>
|
||||||
|
<menu_item_call label="SLURL" name="Copy SLURL"/>
|
||||||
|
</menu>
|
||||||
<menu_item_call label="Enfocar" name="Focus"/>
|
<menu_item_call label="Enfocar" name="Focus"/>
|
||||||
<menu label="Moderación" name="Moderation" create_jump_keys="">
|
<menu label="Moderación" name="Moderation" create_jump_keys="">
|
||||||
<menu_item_call label="Silenciar" name="Mute"/>
|
<menu_item_call label="Silenciar" name="Mute"/>
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
<context_menu name="Url Popup">
|
<context_menu label="Grupo" name="Url Popup">
|
||||||
<menu_item_call label="Mostrar la información del grupo" name="show_group"/>
|
<menu_item_call label="Mostrar la información del grupo" name="show_group"/>
|
||||||
|
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
|
||||||
|
<menu_item_call label="Llamar en el grupo" name="call_group"/>
|
||||||
|
<menu_item_call label="Activar Grupo" name="activate_group"/>
|
||||||
|
<menu_item_call label="Historial de Chat" name="Chat History"/>
|
||||||
|
<menu_item_call label="Unirse al Grupo" name="join_group"/>
|
||||||
|
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
|
||||||
<menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
|
<menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
|
||||||
<menu_item_call label="Copiar SLurl al portapapeles" name="url_copy"/>
|
<menu_item_call label="Copiar SLurl al portapapeles" name="url_copy"/>
|
||||||
<menu_item_call label="Copiar Key al portapapeles" name="key_copy"/>
|
<menu_item_call label="Copiar UUID al portapapeles" name="key_copy"/>
|
||||||
<menu_item_call label="Seleccionar Todo" name="Select All"/>
|
<menu_item_call label="Seleccionar Todo" name="Select All"/>
|
||||||
</context_menu>
|
</context_menu>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<context_menu label="Propietario" name="Object Owner Submenu">
|
<context_menu label="Propietario" name="Object Owner Submenu">
|
||||||
<menu_item_call label="Enviar MI..." name="send_im"/>
|
<menu_item_call label="Enviar MI..." name="send_im"/>
|
||||||
<menu name="Acciones" label="Actions">
|
<menu name="Actions" label="Acciones">
|
||||||
<menu_item_call label="Perfil" name="Profile"/>
|
<menu_item_call label="Perfil" name="Profile"/>
|
||||||
<menu_item_call label="Perfil Web" name="Web Profile"/>
|
<menu_item_call label="Perfil Web" name="Web Profile"/>
|
||||||
<menu_item_call label="Pagar" name="Pay"/>
|
<menu_item_call label="Pagar" name="Pay"/>
|
||||||
|
|||||||
@@ -135,7 +135,8 @@
|
|||||||
<spinner left_delta="270" name="ScriptJumpCount" tool_tip="Umbral para el mensaje de salto de scripts [Predeterminado: 100]"/>
|
<spinner left_delta="270" name="ScriptJumpCount" tool_tip="Umbral para el mensaje de salto de scripts [Predeterminado: 100]"/>
|
||||||
<check_box label="Soporte API Restrained Love (RLVa)" name="RestrainedLove" tool_tip="Permite a los scripts tomar control del visor, si tienes vestido un objeto compatible con RLVa."/>
|
<check_box label="Soporte API Restrained Love (RLVa)" name="RestrainedLove" tool_tip="Permite a los scripts tomar control del visor, si tienes vestido un objeto compatible con RLVa."/>
|
||||||
<check_box label="Reemplazar slurls y enlaces con etiquetas" name="SinguReplaceLinks" tool_tip="Si bien puedes hacer clic con el botón derecho para ver a dónde conducen realmente al copiarlos, esto puede hacer que los enlaces sean confusos a primera vista."/>
|
<check_box label="Reemplazar slurls y enlaces con etiquetas" name="SinguReplaceLinks" tool_tip="Si bien puedes hacer clic con el botón derecho para ver a dónde conducen realmente al copiarlos, esto puede hacer que los enlaces sean confusos a primera vista."/>
|
||||||
<text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito para autoteleportarte en los últimos 20 segundos previos al reinicio de región</text>
|
<text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito debajo para autoteleportarte antes del reinicio de la región</text>
|
||||||
|
<spinner name="EmergencyTeleportSeconds" label="Comenzar intentos de teleporte antes del reinicio, en segundos"/>
|
||||||
<drop_target name="emergency_teleport_landmark_drop" bottom_delta="-15" width="450"/>
|
<drop_target name="emergency_teleport_landmark_drop" bottom_delta="-15" width="450"/>
|
||||||
<text name="EmergencyTeleportBackupDesc" width="440" bottom_delta="-30" >
|
<text name="EmergencyTeleportBackupDesc" width="440" bottom_delta="-30" >
|
||||||
Suelta aquí un hito de resguardo para autoteleportarte, si ya tienes uno en el ítem anterior</text>
|
Suelta aquí un hito de resguardo para autoteleportarte, si ya tienes uno en el ítem anterior</text>
|
||||||
|
|||||||
Reference in New Issue
Block a user