diff options
Diffstat (limited to 'linden/indra/newview/llwlparammanager.cpp')
-rw-r--r-- | linden/indra/newview/llwlparammanager.cpp | 40 |
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 | ||
65 | LLWLParamManager * LLWLParamManager::sInstance = NULL; | 65 | LLWLParamManager * LLWLParamManager::sInstance = NULL; |
66 | std::vector<LLWLPresetsObserver*> LLWLParamManager::sObservers; | ||
66 | 67 | ||
67 | LLWLParamManager::LLWLParamManager() : | 68 | LLWLParamManager::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 | ||
244 | void LLWLParamManager::savePreset(const std::string & name) | 247 | void 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 | ||
270 | void LLWLParamManager::updateShaderUniforms(LLGLSLShader * shader) | 274 | void 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 | ||
578 | void LLWLParamManager::addObserver(LLWLPresetsObserver* observer) | ||
579 | { | ||
580 | sObservers.push_back(observer); | ||
581 | } | ||
582 | |||
583 | // static | ||
584 | void 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 | ||
597 | void 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 | } | ||