diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp
index 0f54723867..901a61bbf6 100644
--- a/indra/newview/aoengine.cpp
+++ b/indra/newview/aoengine.cpp
@@ -63,6 +63,7 @@ AOEngine::AOEngine() :
{
gSavedPerAccountSettings.getControl("UseAO")->getCommitSignal()->connect(boost::bind(&AOEngine::onToggleAOControl, this));
gSavedPerAccountSettings.getControl("UseAOStands")->getCommitSignal()->connect(boost::bind(&AOEngine::onToggleAOStandsControl, this));
+ gSavedPerAccountSettings.getControl("PauseAO")->getCommitSignal()->connect(boost::bind(&AOEngine::onPauseAO, this));
mRegionChangeConnection = gAgent.addRegionChangedCallback(boost::bind(&AOEngine::onRegionChange, this));
}
@@ -117,6 +118,15 @@ void AOEngine::onToggleAOStandsControl()
enableStands(gSavedPerAccountSettings.getBOOL("UseAOStands"));
}
+void AOEngine::onPauseAO()
+{
+ // can't use mEnabled here as that gets switched over by enable()
+ if (gSavedPerAccountSettings.getBOOL("UseAO"))
+ {
+ enable(!gSavedPerAccountSettings.getBOOL("PauseAO"));
+ }
+}
+
void AOEngine::clear(bool from_timer)
{
mOldSets.insert(mOldSets.end(), mSets.begin(), mSets.end());
diff --git a/indra/newview/aoengine.h b/indra/newview/aoengine.h
index 2bfb85d10b..23b6dd9ba3 100644
--- a/indra/newview/aoengine.h
+++ b/indra/newview/aoengine.h
@@ -183,6 +183,8 @@ class AOEngine
void onToggleAOControl();
void onToggleAOStandsControl();
+ void onPauseAO();
+
static void onNotecardLoadComplete(LLVFS* vfs, const LLUUID& assetUUID, LLAssetType::EType type,
void* userdata, S32 status, LLExtStat extStatus);
void parseNotecard(const char* buffer);
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index e35efe7f38..267f34b562 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -744,6 +744,17 @@
Value
0
+ UseAO
+
UseAOStands