summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorCinder <cinder.roxley@phoenixviewer.com>2014-06-20 11:02:50 -0600
committerCinder <cinder.roxley@phoenixviewer.com>2014-06-20 11:02:50 -0600
commit984353d7ca6184d7252c716150d42139aae94e5c (patch)
tree598a5a1039fc8bb4bd1cf6d2c848d34ca41474a6 /indra/newview
parentd949bee053610fe8769055589984e721ae1ee3d1 (diff)
STORM-2036 - Fix trying to parse caps too early by adding a callback to check region caps when they haven't already been received
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llsyntaxid.cpp19
-rw-r--r--indra/newview/llsyntaxid.h1
2 files changed, 16 insertions, 4 deletions
diff --git a/indra/newview/llsyntaxid.cpp b/indra/newview/llsyntaxid.cpp
index 9b82710161..b1194dcd1b 100644
--- a/indra/newview/llsyntaxid.cpp
+++ b/indra/newview/llsyntaxid.cpp
@@ -128,7 +128,6 @@ void LLSyntaxIdLSL::buildFullFileSpec()
//-----------------------------------------------------------------------------
bool LLSyntaxIdLSL::syntaxIdChanged()
{
- bool version_changed = false;
LLViewerRegion* region = gAgent.getRegion();
if (region)
@@ -148,7 +147,7 @@ bool LLSyntaxIdLSL::syntaxIdChanged()
{
LL_DEBUGS("SyntaxLSL") << "New SyntaxID '" << new_syntax_id << "' found." << LL_ENDL;
mSyntaxId = new_syntax_id;
- version_changed = true;
+ return true;
}
else
LL_DEBUGS("SyntaxLSL") << "SyntaxID matches what we have." << LL_ENDL;
@@ -156,10 +155,11 @@ bool LLSyntaxIdLSL::syntaxIdChanged()
}
else
{
- LL_WARNS("SyntaxLSL") << "Region '" << region->getName() << "' has not received capabilities. Cannot process SyntaxId." << LL_ENDL;
+ region->setCapabilitiesReceivedCallback(boost::bind(&LLSyntaxIdLSL::handleCapsReceived, this, _1));
+ LL_DEBUGS("SyntaxLSL") << "Region has not received capabilities. Waiting for caps..." << LL_ENDL;
}
}
- return version_changed;
+ return false;
}
//-----------------------------------------------------------------------------
@@ -307,6 +307,17 @@ void LLSyntaxIdLSL::handleRegionChanged()
}
}
+void LLSyntaxIdLSL::handleCapsReceived(const LLUUID& region_uuid)
+{
+ LLViewerRegion* current_region = gAgent.getRegion();
+
+ if (region_uuid.notNull()
+ && current_region->getRegionID() == region_uuid)
+ {
+ syntaxIdChanged();
+ }
+}
+
void LLSyntaxIdLSL::handleFileFetched(const std::string& filepath)
{
mInflightFetches.remove(filepath);
diff --git a/indra/newview/llsyntaxid.h b/indra/newview/llsyntaxid.h
index 70f6b28337..504fb0997e 100644
--- a/indra/newview/llsyntaxid.h
+++ b/indra/newview/llsyntaxid.h
@@ -48,6 +48,7 @@ private:
bool syntaxIdChanged();
bool isSupportedVersion(const LLSD& content);
void handleRegionChanged();
+ void handleCapsReceived(const LLUUID& region_uuid);
void handleFileFetched(const std::string& filepath);
void setKeywordsXml(const LLSD& content) { mKeywordsXml = content; };
void buildFullFileSpec();