aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llwlparammanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llwlparammanager.cpp')
-rw-r--r--linden/indra/newview/llwlparammanager.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp
index b8a2bf0..081313c 100644
--- a/linden/indra/newview/llwlparammanager.cpp
+++ b/linden/indra/newview/llwlparammanager.cpp
@@ -63,6 +63,7 @@
63#include "curl/curl.h" 63#include "curl/curl.h"
64 64
65LLWLParamManager * LLWLParamManager::sInstance = NULL; 65LLWLParamManager * LLWLParamManager::sInstance = NULL;
66std::vector<LLWLPresetsObserver*> LLWLParamManager::sObservers;
66 67
67LLWLParamManager::LLWLParamManager() : 68LLWLParamManager::LLWLParamManager() :
68 69
@@ -239,6 +240,8 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate)
239 getParamSet(name, mCurParams); 240 getParamSet(name, mCurParams);
240 propagateParameters(); 241 propagateParameters();
241 } 242 }
243
244 notifyObservers();
242} 245}
243 246
244void LLWLParamManager::savePreset(const std::string & name) 247void LLWLParamManager::savePreset(const std::string & name)
@@ -265,6 +268,7 @@ void LLWLParamManager::savePreset(const std::string & name)
265 presetsXML.close(); 268 presetsXML.close();
266 269
267 propagateParameters(); 270 propagateParameters();
271 notifyObservers();
268} 272}
269 273
270void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) 274void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader)
@@ -539,6 +543,8 @@ bool LLWLParamManager::removeParamSet(const std::string& name, bool delete_from_
539 gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml"); 543 gDirUtilp->deleteFilesInDir(path_name, escaped_name + ".xml");
540 } 544 }
541 545
546 notifyObservers();
547
542 return true; 548 return true;
543} 549}
544 550
@@ -567,3 +573,37 @@ LLWLParamManager * LLWLParamManager::instance()
567 573
568 return sInstance; 574 return sInstance;
569} 575}
576
577// static
578void LLWLParamManager::addObserver(LLWLPresetsObserver* observer)
579{
580 sObservers.push_back(observer);
581}
582
583// static
584void LLWLParamManager::removeObserver(LLWLPresetsObserver* observer)
585{
586 std::vector<LLWLPresetsObserver*>::iterator it;
587 it = std::find(sObservers.begin(), sObservers.end(), observer);
588 if (it != sObservers.end())
589 {
590 sObservers.erase(it);
591 }
592}
593
594// Call this method when it's time to update everyone on a new state.
595// Copy the list because an observer could respond by removing itself
596// from the list. Static
597void LLWLParamManager::notifyObservers()
598{
599 lldebugs << "LLWLPresetsObserver::notifyObservers" << llendl;
600
601 std::vector<LLWLPresetsObserver*> observers = sObservers;
602
603 std::vector<LLWLPresetsObserver*>::iterator it;
604 for (it = observers.begin(); it != observers.end(); ++it)
605 {
606 LLWLPresetsObserver* observer = *it;
607 observer->changed();
608 }
609}