diff options
author | Ima Mechanique <ima.mechanique@secondlife.com> | 2014-02-06 16:41:07 +0000 |
---|---|---|
committer | Ima Mechanique <ima.mechanique@secondlife.com> | 2014-02-06 16:41:07 +0000 |
commit | 01b7ae8abe7efc101202fea786e97862c44e1d21 (patch) | |
tree | d5576b877dc949999a38145a0c835e2ee394ffb2 | |
parent | 5551e8f04c84d1427fc39b0927eebc6dd58a772f (diff) |
Changing how state of loading is reported to better allow other classes to know what is happening.
-rw-r--r-- | indra/newview/llsyntaxid.cpp | 45 | ||||
-rw-r--r-- | indra/newview/llsyntaxid.h | 3 |
2 files changed, 26 insertions, 22 deletions
diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp index 4b84098b39..3ee9859ccd 100644 --- a/indra/newview/llsyntaxid.cpp +++ b/indra/newview/llsyntaxid.cpp @@ -67,9 +67,10 @@ void fetchKeywordsFileResponder::result(const LLSD& content_ref) if (LLSyntaxIdLSL::isSupportedVersion(content_ref)) { LL_INFOS("SyntaxLSL") - << "Is a supported verson of syntax file." << LL_ENDL; + << "Supported verson of syntax file." << LL_ENDL; LLSyntaxIdLSL::setKeywordsXml(content_ref); + LLSyntaxIdLSL::sInitialised = true; LLSyntaxIdLSL::sLoaded = true; LLSyntaxIdLSL::sLoadFailed = false; @@ -115,6 +116,7 @@ const std::string LLSyntaxIdLSL::CAPABILITY_NAME = "LSLSyntax"; const std::string LLSyntaxIdLSL::FILENAME_DEFAULT = "keywords_lsl_default.xml"; const std::string LLSyntaxIdLSL::SIMULATOR_FEATURE = "LSLSyntaxId"; +bool LLSyntaxIdLSL::sInitialised; LLSD LLSyntaxIdLSL::sKeywordsXml; bool LLSyntaxIdLSL::sLoaded; bool LLSyntaxIdLSL::sLoadFailed; @@ -162,13 +164,14 @@ std::string LLSyntaxIdLSL::buildFullFileSpec() //----------------------------------------------------------------------------- bool LLSyntaxIdLSL::checkSyntaxIdChanged() { - bool changed = false; + sVersionChanged = false; LLViewerRegion* region = gAgent.getRegion(); if (region) { if (!region->capabilitiesReceived()) { // Shouldn't be possible, but experience shows that it may be needed. + sLoadFailed = true; LL_ERRS("SyntaxLSL") << "Region '" << region->getName() << "' has not received capabilities yet! Cannot process SyntaxId." @@ -191,7 +194,7 @@ bool LLSyntaxIdLSL::checkSyntaxIdChanged() << "It has LSLSyntaxId capability, and the new hash is '" << mSyntaxIdNew.asString() << "'" << LL_ENDL; - changed = true; + sVersionChanged = true; } else { @@ -202,7 +205,7 @@ bool LLSyntaxIdLSL::checkSyntaxIdChanged() } else { - if ( mSyntaxIdCurrent.isNull() ) + if ( mSyntaxIdCurrent.isNull() && isInitialised()) { LL_INFOS("SyntaxLSL") << "It does not have LSLSyntaxId capability, remaining with default keywords file!" @@ -215,13 +218,12 @@ bool LLSyntaxIdLSL::checkSyntaxIdChanged() LL_INFOS("SyntaxLSL") << "It does not have LSLSyntaxId capability, using default keywords file!" << LL_ENDL; - changed = true; + sVersionChanged = true; } } } } - sVersionChanged = changed; - return changed; + return sVersionChanged; } /** @@ -231,7 +233,7 @@ bool LLSyntaxIdLSL::checkSyntaxIdChanged() */ bool LLSyntaxIdLSL::fetching() { - return (!sLoaded && !sLoadFailed); + return !(sLoaded || sLoadFailed); } //----------------------------------------------------------------------------- @@ -256,11 +258,17 @@ void LLSyntaxIdLSL::initialise() { mFileNameNew = mFileNameCurrent; mSyntaxIdNew = mSyntaxIdCurrent; + if (checkSyntaxIdChanged()) { sKeywordsXml = LLSD(); sLoaded = sLoadFailed = false; - if (!mCapabilityURL.empty()) + + if (mSyntaxIdNew.isNull()) + { // Need to open the default + loadDefaultKeywordsIntoLLSD(); + } + else if (!mCapabilityURL.empty() ) { LL_INFOS("SyntaxLSL") << "LSL version has changed, getting appropriate file." @@ -268,7 +276,7 @@ void LLSyntaxIdLSL::initialise() // Need a full spec regardless of file source, so build it now. buildFullFileSpec(); - if ( !mSyntaxIdNew.isNull() ) + if ( !mSyntaxIdNew.isNull()) { if ( !gDirUtilp->fileExists(mFullFileSpec) ) { // Does not exist, so fetch it from the capability @@ -295,17 +303,11 @@ void LLSyntaxIdLSL::initialise() sLoadFailed = true; LL_ERRS("SyntaxLSL") << "LSLSyntaxId capability URL is empty!!" << LL_ENDL; + loadDefaultKeywordsIntoLLSD(); } - } - else if (sKeywordsXml.isDefined()) + else if (!isInitialised()) { - LL_INFOS("SyntaxLSL") - << "No change to Syntax! Nothing to see. Move along now!" - << LL_ENDL; - } - else - { // Need to open the default loadDefaultKeywordsIntoLLSD(); } @@ -320,7 +322,7 @@ bool LLSyntaxIdLSL::isSupportedVersion(const LLSD& content) { bool isValid = false; /* - * If the schema used to store lsl keywords and hints changes, this value is incremented + * If the schema used to store LSL keywords and hints changes, this value is incremented * Note that it should _not_ be changed if the keywords and hints _content_ changes. */ const U32 LLSD_SYNTAX_LSL_VERSION_EXPECTED = 2; @@ -392,13 +394,14 @@ void LLSyntaxIdLSL::loadKeywordsIntoLLSD() if (isSupportedVersion(content)) { sKeywordsXml = content; + sLoaded = true; + sInitialised = true; LL_INFOS("SyntaxLSL") << "Deserialised file: " << mFullFileSpec << LL_ENDL; } else { - LLSyntaxIdLSL::sLoaded = false; - LLSyntaxIdLSL::sLoadFailed = true; + sLoaded = false; LL_WARNS("SyntaxLSL") << "Unknown or unsupported version of syntax file." << LL_ENDL; } diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h index a24edf7204..226f1f4941 100644 --- a/indra/newview/llsyntaxid.h +++ b/indra/newview/llsyntaxid.h @@ -54,12 +54,12 @@ static const std::string SIMULATOR_FEATURE; protected: //LLViewerRegion* region; + static bool sInitialised; static LLSD sKeywordsXml; static bool sLoaded; static bool sLoadFailed; static bool sVersionChanged; - private: std::string mCapabilityName; std::string mCapabilityURL; @@ -85,6 +85,7 @@ public: LLSD getKeywordsXML() const { return sKeywordsXml; } LLUUID getSyntaxId() const { return mSyntaxIdCurrent; } bool isDifferentVersion() const { return sVersionChanged; } + bool isInitialised() const { return sInitialised; } void initialise(); bool isLoaded() { return sLoaded; } |