summaryrefslogtreecommitdiff
path: root/indra/newview/llmaterialmgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llmaterialmgr.cpp')
-rw-r--r--indra/newview/llmaterialmgr.cpp53
1 files changed, 28 insertions, 25 deletions
diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp
index edf8e83038..fdc1dfd749 100644
--- a/indra/newview/llmaterialmgr.cpp
+++ b/indra/newview/llmaterialmgr.cpp
@@ -217,7 +217,6 @@ boost::signals2::connection LLMaterialMgr::get(const LLUUID& region_id, const LL
return connection;
}
-#if USE_TE_SPECIFIC_REGISTRATION
boost::signals2::connection LLMaterialMgr::getTE(const LLUUID& region_id, const LLMaterialID& material_id, U32 te, LLMaterialMgr::get_callback_te_t::slot_type cb)
{
boost::signals2::connection connection;
@@ -262,7 +261,6 @@ boost::signals2::connection LLMaterialMgr::getTE(const LLUUID& region_id, const
return connection;
}
-#endif
bool LLMaterialMgr::isGetAllPending(const LLUUID& region_id) const
{
@@ -337,34 +335,39 @@ const LLMaterialPtr LLMaterialMgr::setMaterial(const LLUUID& region_id, const LL
itMaterial = ret.first;
}
- mGetPending.erase(pending_material_t(region_id, material_id));
-
- get_callback_map_t::iterator itCallback = mGetCallbacks.find(material_id);
- if (itCallback != mGetCallbacks.end())
- {
- (*itCallback->second)(material_id, itMaterial->second);
-
- delete itCallback->second;
- mGetCallbacks.erase(itCallback);
- }
+ // we may have cleared our queues on leaving a region before we recv'd our
+ // update for this material...too late now!
+ //
+ if (isGetPending(region_id, material_id))
+ {
+
+ TEMaterialPair te_mat_pair;
+ te_mat_pair.materialID = material_id;
-#if USE_TE_SPECIFIC_REGISTRATION
- TEMaterialPair te_mat_pair;
- te_mat_pair.materialID = material_id;
+ U32 i = 0;
+ while (i < LLTEContents::MAX_TES)
+ {
+ te_mat_pair.te = i++;
+ get_callback_te_map_t::iterator itCallbackTE = mGetTECallbacks.find(te_mat_pair);
+ if (itCallbackTE != mGetTECallbacks.end())
+ {
+ (*itCallbackTE->second)(material_id, itMaterial->second, te_mat_pair.te);
+ delete itCallbackTE->second;
+ mGetTECallbacks.erase(itCallbackTE);
+ }
+ }
- U32 i = 0;
- while (i < LLTEContents::MAX_TES)
- {
- te_mat_pair.te = i++;
- get_callback_te_map_t::iterator itCallbackTE = mGetTECallbacks.find(te_mat_pair);
- if (itCallbackTE != mGetTECallbacks.end())
+ get_callback_map_t::iterator itCallback = mGetCallbacks.find(material_id);
+ if (itCallback != mGetCallbacks.end())
{
- (*itCallbackTE->second)(material_id, itMaterial->second, te_mat_pair.te);
- delete itCallbackTE->second;
- mGetTECallbacks.erase(itCallbackTE);
+ (*itCallback->second)(material_id, itMaterial->second);
+
+ delete itCallback->second;
+ mGetCallbacks.erase(itCallback);
}
}
-#endif
+
+ mGetPending.erase(pending_material_t(region_id, material_id));
return itMaterial->second;
}