summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfloaterperms.cpp19
-rw-r--r--indra/newview/llfloaterperms.h3
-rw-r--r--indra/newview/llviewerregion.cpp5
3 files changed, 22 insertions, 5 deletions
diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp
index c167c03c30..f5a9bc7bb5 100644
--- a/indra/newview/llfloaterperms.cpp
+++ b/indra/newview/llfloaterperms.cpp
@@ -97,6 +97,8 @@ U32 LLFloaterPerms::getNextOwnerPermsInverted(std::string prefix)
return flags;
}
+static bool mCapSent = false;
+
LLFloaterPermsDefault::LLFloaterPermsDefault(const LLSD& seed)
: LLFloater(seed)
{
@@ -160,12 +162,18 @@ public:
}
void result(const LLSD& content)
{
- LL_INFOS("FloaterPermsResponder") << "Set new values" << LL_ENDL;
+ LLFloaterPermsDefault::setCapSent(true);
+ LL_INFOS("FloaterPermsResponder") << "Sent default permissions to simulator" << LL_ENDL;
}
};
-void LLFloaterPermsDefault::updateCap()
+void LLFloaterPermsDefault::updateCap(bool alwaysUpdate)
{
+ if(!alwaysUpdate && mCapSent)
+ {
+ return;
+ }
+
std::string object_url = gAgent.getRegion()->getCapability("DefaultObjectPermissions");
if(!object_url.empty())
@@ -178,6 +186,11 @@ void LLFloaterPermsDefault::updateCap()
}
}
+void LLFloaterPermsDefault::setCapSent(bool cap_sent)
+{
+ mCapSent = cap_sent;
+}
+
void LLFloaterPermsDefault::ok()
{
// Changes were already applied automatically to saved settings.
@@ -186,7 +199,7 @@ void LLFloaterPermsDefault::ok()
// We know some setting has changed but not which one. Just in case it was a setting for
// object permissions tell the server what the values are.
- updateCap();
+ updateCap(true);
}
void LLFloaterPermsDefault::cancel()
diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h
index 5fe39a2c1b..a31d034ec8 100644
--- a/indra/newview/llfloaterperms.h
+++ b/indra/newview/llfloaterperms.h
@@ -59,7 +59,8 @@ public:
void onClickOK();
void onClickCancel();
void onCommitCopy(const LLSD& user_data);
- static void updateCap();
+ static void updateCap(bool alwaysUpdate);
+ static void setCapSent(bool cap_sent);
enum Categories
{
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 7b5721cb39..68db98580f 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1487,7 +1487,10 @@ void LLViewerRegion::unpackRegionHandshake()
msg->addU32("Flags", 0x0 );
msg->sendReliable(host);
- LLFloaterPermsDefault::updateCap();
+ // Supplying false in this call means only send the default permissions to the simulator if
+ // it has never been sent. Once this data is sent the simulator will pass this data to new
+ // simulators as the agent moves around.
+ LLFloaterPermsDefault::updateCap(false);
}
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)