diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index f662ab31d..cf8e2d501 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -95,20 +95,26 @@ LLFeatureList::~LLFeatureList() void LLFeatureList::addFeature(const std::string& name, const BOOL available, const F32 level) { - if (mFeatures.count(name)) + LLFeatureInfo fi(name, available, level); + + feature_map_t::iterator iter = mFeatures.find(name); + if (iter != mFeatures.end()) { LL_WARNS("RenderInit") << "LLFeatureList::Attempting to add preexisting feature " << name << LL_ENDL; + iter->second = fi; + } + else + { + mFeatures.insert(std::make_pair(name, fi)); } - - LLFeatureInfo fi(name, available, level); - mFeatures[name] = fi; } BOOL LLFeatureList::isFeatureAvailable(const std::string& name) { - if (mFeatures.count(name)) + feature_map_t::iterator iter = mFeatures.find(name); + if (iter != mFeatures.end()) { - return mFeatures[name].mAvailable; + return iter->second.mAvailable; } LL_WARNS_ONCE("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL; @@ -118,17 +124,6 @@ BOOL LLFeatureList::isFeatureAvailable(const std::string& name) return TRUE; } -F32 LLFeatureList::getRecommendedValue(const std::string& name) -{ - if (mFeatures.count(name) && isFeatureAvailable(name)) - { - return mFeatures[name].mRecommendedLevel; - } - - LL_WARNS_ONCE("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL; - return 0; -} - BOOL LLFeatureList::maskList(LLFeatureList &mask) { //llinfos << "Masking with " << mask.mName << llendl; @@ -146,13 +141,14 @@ BOOL LLFeatureList::maskList(LLFeatureList &mask) // // Look for the corresponding feature // - if (!mFeatures.count(mask_fi.mName)) + feature_map_t::iterator iter = mFeatures.find(mask_fi.mName); + if (iter == mFeatures.end()) { LL_WARNS("RenderInit") << "Feature " << mask_fi.mName << " in mask not in top level!" << LL_ENDL; continue; } - LLFeatureInfo &cur_fi = mFeatures[mask_fi.mName]; + LLFeatureInfo &cur_fi = iter->second; if (mask_fi.mAvailable && !cur_fi.mAvailable) { LL_WARNS("RenderInit") << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << LL_ENDL; @@ -503,22 +499,29 @@ void LLFeatureManager::applyFeatures(bool skipFeatures) continue; } + if (!mIt->second.mAvailable) + { + LL_WARNS_ONCE("RenderInit") << "Feature " << mIt->first << " not available!" << LL_ENDL; + } + + F32 val = mIt->second.mAvailable ? mIt->second.mRecommendedLevel : 0.f; + // handle all the different types if(ctrl->isType(TYPE_BOOLEAN)) { - gSavedSettings.setBOOL(mIt->first, (BOOL)getRecommendedValue(mIt->first)); + gSavedSettings.setBOOL(mIt->first, (BOOL)val); } else if (ctrl->isType(TYPE_S32)) { - gSavedSettings.setS32(mIt->first, (S32)getRecommendedValue(mIt->first)); + gSavedSettings.setS32(mIt->first, (S32)val); } else if (ctrl->isType(TYPE_U32)) { - gSavedSettings.setU32(mIt->first, (U32)getRecommendedValue(mIt->first)); + gSavedSettings.setU32(mIt->first, (U32)val); } else if (ctrl->isType(TYPE_F32)) { - gSavedSettings.setF32(mIt->first, (F32)getRecommendedValue(mIt->first)); + gSavedSettings.setF32(mIt->first, (F32)val); } else { diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index a9cb33598..8fc87eb69 100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h @@ -72,7 +72,6 @@ public: virtual ~LLFeatureList(); BOOL isFeatureAvailable(const std::string& name); - F32 getRecommendedValue(const std::string& name); void setFeatureAvailable(const std::string& name, const BOOL available); void setRecommendedLevel(const std::string& name, const F32 level);