summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdoc/contributions.txt1
-rw-r--r--indra/newview/llsyntaxid.cpp19
-rw-r--r--indra/newview/llsyntaxid.h1
3 files changed, 17 insertions, 4 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt
index a3ca5d5f58..3ba4ee8973 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -321,6 +321,7 @@ Cinder Roxley
STORM-1958
STORM-1952
STORM-1951
+ STORM-2036
Clara Young
Coaldust Numbers
VWR-1095
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();