From a14a19e33ac2a28b640ebbad514e9829f999a5f3 Mon Sep 17 00:00:00 2001
From: brad kittenbrink <brad@lindenlab.com>
Date: Tue, 30 Jun 2009 12:08:24 -0400
Subject: [PATCH] Added a new setSetting listener.

---
 indra/newview/llappviewerlistener.cpp | 13 +++++++++++++
 indra/newview/llappviewerlistener.h   |  1 +
 2 files changed, 14 insertions(+)

diff --git a/indra/newview/llappviewerlistener.cpp b/indra/newview/llappviewerlistener.cpp
index a8c98b17a73..befebae88ee 100644
--- a/indra/newview/llappviewerlistener.cpp
+++ b/indra/newview/llappviewerlistener.cpp
@@ -18,6 +18,7 @@
 // external library headers
 // other Linden headers
 #include "llappviewer.h"
+#include "llviewercontrol.h"
 
 LLAppViewerListener::LLAppViewerListener(const std::string& pumpname, LLAppViewer* llappviewer):
     LLDispatchListener(pumpname, "op"),
@@ -25,9 +26,21 @@ LLAppViewerListener::LLAppViewerListener(const std::string& pumpname, LLAppViewe
 {
     // add() every method we want to be able to invoke via this event API.
     add("requestQuit", &LLAppViewerListener::requestQuit);
+    add("setSetting", &LLAppViewerListener::setSetting);
 }
 
 void LLAppViewerListener::requestQuit(const LLSD& event) const
 {
     mAppViewer->requestQuit();
 }
+
+void LLAppViewerListener::setSetting(const LLSD & event) const
+{
+	std::string control_name = event["name"].asString();
+	if (gSavedSettings.controlExists(control_name))
+	{
+		LLControlVariable* control = gSavedSettings.getControl(control_name);
+
+		control->set(event["value"]);
+	}
+}
diff --git a/indra/newview/llappviewerlistener.h b/indra/newview/llappviewerlistener.h
index ab17dd1d904..ff63b69c137 100644
--- a/indra/newview/llappviewerlistener.h
+++ b/indra/newview/llappviewerlistener.h
@@ -27,6 +27,7 @@ class LLAppViewerListener: public LLDispatchListener
 
 private:
     void requestQuit(const LLSD& event) const;
+    void setSetting(const LLSD & event) const;
 
     LLAppViewer* mAppViewer;
 };
-- 
GitLab