Merge branch 'master' of https://bitbucket.org/lindenlab/viewer
commit
ffd96d181a
|
|
@ -3428,9 +3428,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>d15ad6b86c0e1ef4a1fc46478da65929</string>
|
||||
<string>c5ab9d9d7482e48cd76f4bf391900a8c</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54837/510043/viewer_manager-2.0.538967-darwin64-538967.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43369/385585/viewer_manager-2.0.531000-darwin64-531000.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -3464,9 +3464,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>856d1e4b60ef57135ecd99cd608e76bd</string>
|
||||
<string>6b10d7407686d9e12e63576256581e3e</string>
|
||||
<key>url</key>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54960/511732/viewer_manager-2.0.538967-windows-538967.tar.bz2</string>
|
||||
<string>http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/43370/385592/viewer_manager-2.0.531000-windows-531000.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -3477,7 +3477,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<key>source_type</key>
|
||||
<string>hg</string>
|
||||
<key>version</key>
|
||||
<string>2.0.538967</string>
|
||||
<string>2.0.531000</string>
|
||||
</map>
|
||||
<key>vlc-bin</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
@ -280,11 +280,14 @@ LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
|
|||
mHTTPPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID),
|
||||
mCoroMapping()
|
||||
{
|
||||
// store in our LLTempBoundListener so that when the LLCoprocedurePool is
|
||||
// destroyed, we implicitly disconnect from this LLEventPump
|
||||
mStatusListener = LLEventPumps::instance().obtain("LLApp").listen(
|
||||
poolName,
|
||||
[pendingCoprocs=mPendingCoprocs, poolName](const LLSD& status)
|
||||
try
|
||||
{
|
||||
// store in our LLTempBoundListener so that when the LLCoprocedurePool is
|
||||
// destroyed, we implicitly disconnect from this LLEventPump
|
||||
// Monitores application status
|
||||
mStatusListener = LLEventPumps::instance().obtain("LLApp").listen(
|
||||
poolName + "_pool", // Make sure it won't repeat names from lleventcoro
|
||||
[pendingCoprocs = mPendingCoprocs, poolName](const LLSD& status)
|
||||
{
|
||||
auto& statsd = status["status"];
|
||||
if (statsd.asString() != "running")
|
||||
|
|
@ -298,6 +301,19 @@ LLCoprocedurePool::LLCoprocedurePool(const std::string &poolName, size_t size):
|
|||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
catch (const LLEventPump::DupListenerName &)
|
||||
{
|
||||
// This shounldn't be possible since LLCoprocedurePool is supposed to have unique names,
|
||||
// yet it somehow did happen, as result pools got '_pool' suffix and this catch.
|
||||
//
|
||||
// If this somehow happens again it is better to crash later on shutdown due to pump
|
||||
// not stopping coroutine and see warning in logs than on startup or during login.
|
||||
LL_WARNS("CoProcMgr") << "Attempted to register dupplicate listener name: " << poolName
|
||||
<< "_pool. Failed to start listener." << LL_ENDL;
|
||||
|
||||
llassert(0); // Fix Me! Ignoring missing listener!
|
||||
}
|
||||
|
||||
for (size_t count = 0; count < mPoolSize; ++count)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
6.4.6
|
||||
6.4.7
|
||||
|
|
|
|||
|
|
@ -3734,8 +3734,15 @@ LLSD LLAppViewer::getViewerInfo() const
|
|||
// return a URL to the release notes for this viewer, such as:
|
||||
// https://releasenotes.secondlife.com/viewer/2.1.0.123456.html
|
||||
// <FS:Ansariel> FIRE-13993: Create URL in the form of https://wiki.firestormviewer.org/firestorm_change_log_x.y.z.rev
|
||||
//std::string url = versionInfo.getReleaseNotes();
|
||||
//info["VIEWER_RELEASE_NOTES_URL"] = url.empty()? LLTrans::getString("RetrievingData") : url;
|
||||
//std::string url = versionInfo.getReleaseNotes(); // VVM supplied
|
||||
//if (url.empty())
|
||||
//{
|
||||
// url = LLTrans::getString("RELEASE_NOTES_BASE_URL");
|
||||
// if (!LLStringUtil::endsWith(url, "/"))
|
||||
// url += "/";
|
||||
// url += LLURI::escape(versionInfo.getVersion()) + ".html";
|
||||
//}
|
||||
//info["VIEWER_RELEASE_NOTES_URL"] = url;
|
||||
std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL") + LLURI::escape(versionInfo.getVersion());
|
||||
info["VIEWER_RELEASE_NOTES_URL"] = url;
|
||||
// </FS:Ansariel>
|
||||
|
|
|
|||
|
|
@ -3184,29 +3184,13 @@ void login_callback(S32 option, void *userdata)
|
|||
void show_release_notes_if_required()
|
||||
{
|
||||
static bool release_notes_shown = false;
|
||||
// We happen to know that instantiating LLVersionInfo implicitly
|
||||
// instantiates the LLEventMailDrop named "relnotes", which we (might) use
|
||||
// below. If viewer release notes stop working, might be because that
|
||||
// LLEventMailDrop got moved out of LLVersionInfo and hasn't yet been
|
||||
// instantiated.
|
||||
if (!release_notes_shown && (LLVersionInfo::instance().getChannelAndVersion() != gLastRunVersion)
|
||||
&& LLVersionInfo::instance().getViewerMaturity() != LLVersionInfo::TEST_VIEWER // don't show Release Notes for the test builds
|
||||
&& gSavedSettings.getBOOL("UpdaterShowReleaseNotes")
|
||||
&& !gSavedSettings.getBOOL("FirstLoginThisInstall"))
|
||||
{
|
||||
// Instantiate a "relnotes" listener which assumes any arriving event
|
||||
// is the release notes URL string. Since "relnotes" is an
|
||||
// LLEventMailDrop, this listener will be invoked whether or not the
|
||||
// URL has already been posted. If so, it will fire immediately;
|
||||
// otherwise it will fire whenever the URL is (later) posted. Either
|
||||
// way, it will display the release notes as soon as the URL becomes
|
||||
// available.
|
||||
LLEventPumps::instance().obtain("relnotes").listen(
|
||||
"showrelnotes",
|
||||
[](const LLSD& url){
|
||||
LLWeb::loadURLInternal(url.asString());
|
||||
return false;
|
||||
});
|
||||
LLSD info(LLAppViewer::instance()->getViewerInfo());
|
||||
LLWeb::loadURLInternal(info["VIEWER_RELEASE_NOTES_URL"]);
|
||||
release_notes_shown = true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@
|
|||
/// LLViewerAssetRequest
|
||||
///----------------------------------------------------------------------------
|
||||
|
||||
static const std::string VIEWER_ASSET_STORAGE_CORO_POOL = "VAssetStorage";
|
||||
|
||||
/**
|
||||
* @brief Local class to encapsulate asset fetch requests with a timestamp.
|
||||
*
|
||||
|
|
@ -129,6 +131,15 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
|
|||
{
|
||||
}
|
||||
|
||||
LLViewerAssetStorage::~LLViewerAssetStorage()
|
||||
{
|
||||
if (!LLCoprocedureManager::wasDeleted())
|
||||
{
|
||||
// This class has dedicated coroutine pool, clean it up, otherwise coroutines will crash later.
|
||||
LLCoprocedureManager::instance().close(VIEWER_ASSET_STORAGE_CORO_POOL);
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLViewerAssetStorage::storeAssetData(
|
||||
const LLTransactionID& tid,
|
||||
|
|
@ -404,7 +415,7 @@ void LLViewerAssetStorage::queueRequestHttp(
|
|||
//LLViewerAssetStatsFF::record_enqueue(atype, with_http, is_temp);
|
||||
// <FS:Ansariel> [UDP Assets]
|
||||
|
||||
LLCoprocedureManager::instance().enqueueCoprocedure("AssetStorage","LLViewerAssetStorage::assetRequestCoro",
|
||||
LLCoprocedureManager::instance().enqueueCoprocedure(VIEWER_ASSET_STORAGE_CORO_POOL,"LLViewerAssetStorage::assetRequestCoro",
|
||||
boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, req, uuid, atype, callback, user_data));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ public:
|
|||
LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, LLVFS *static_vfs);
|
||||
|
||||
~LLViewerAssetStorage();
|
||||
|
||||
virtual void storeAssetData(
|
||||
const LLTransactionID& tid,
|
||||
LLAssetType::EType atype,
|
||||
|
|
|
|||
Loading…
Reference in New Issue