summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRye <rye@alchemyviewer.org>2026-01-02 09:50:34 -0500
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-01-05 20:45:57 +0200
commit23bfecf0b1dd92efcd743ec00637cd1122220fb9 (patch)
tree324daa3b834019caa2d7b33bfd66b691bb9cc5d4 /indra/newview
parent24dccc4015a291b819c2a4bb0451c8898e5a3cc2 (diff)
Further optimize unregistration of loading meshes via std::unordered_set
This container type is better suited to the repeated find and erase patterns used here. Signed-off-by: Rye <rye@alchemyviewer.org>
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llmeshrepository.cpp12
-rw-r--r--indra/newview/llmeshrepository.h8
2 files changed, 10 insertions, 10 deletions
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 8ee5a4f028..ed342935ad 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -4281,8 +4281,8 @@ void LLMeshRepository::unregisterMesh(LLVOVolume* vobj, const LLVolumeParams& me
auto param_iter = lod.find(mesh_params.getSculptID());
if (param_iter != lod.end())
{
- vector_replace_with_last(param_iter->second.mVolumes, vobj);
- llassert(!vector_replace_with_last(param_iter->second.mVolumes, vobj));
+ param_iter->second.mVolumes.erase(vobj);
+ llassert(!param_iter->second.mVolumes.contains(vobj));
if (param_iter->second.mVolumes.empty())
{
lod.erase(param_iter);
@@ -4298,8 +4298,8 @@ void LLMeshRepository::unregisterSkinInfo(const LLUUID& mesh_id, LLVOVolume* vob
auto skin_pair_iter = mLoadingSkins.find(mesh_id);
if (skin_pair_iter != mLoadingSkins.end())
{
- vector_replace_with_last(skin_pair_iter->second.mVolumes, vobj);
- llassert(!vector_replace_with_last(skin_pair_iter->second.mVolumes, vobj));
+ skin_pair_iter->second.mVolumes.erase(vobj);
+ llassert(!skin_pair_iter->second.mVolumes.contains(vobj));
if (skin_pair_iter->second.mVolumes.empty())
{
mLoadingSkins.erase(skin_pair_iter);
@@ -4349,7 +4349,7 @@ S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_para
mesh_load_map::iterator iter = mLoadingMeshes[new_lod].find(mesh_id);
if (iter != mLoadingMeshes[new_lod].end())
{ //request pending for this mesh, append volume id to list
- auto it = std::find(iter->second.mVolumes.begin(), iter->second.mVolumes.end(), vobj);
+ auto it = iter->second.mVolumes.find(vobj);
if (it == iter->second.mVolumes.end()) {
iter->second.addVolume(vobj);
}
@@ -4847,7 +4847,7 @@ const LLMeshSkinInfo* LLMeshRepository::getSkinInfo(const LLUUID& mesh_id, LLVOV
skin_load_map::iterator iter = mLoadingSkins.find(mesh_id);
if (iter != mLoadingSkins.end())
{ //request pending for this mesh, append volume id to list
- auto it = std::find(iter->second.mVolumes.begin(), iter->second.mVolumes.end(), requesting_obj);
+ auto it = iter->second.mVolumes.find(requesting_obj);
if (it == iter->second.mVolumes.end()) {
iter->second.addVolume(requesting_obj);
}
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h
index b0dd8d7ba1..56ad8297c7 100644
--- a/indra/newview/llmeshrepository.h
+++ b/indra/newview/llmeshrepository.h
@@ -290,7 +290,7 @@ private:
class MeshLoadData
{
public:
- MeshLoadData() {}
+ MeshLoadData() = default;
~MeshLoadData()
{
if (std::shared_ptr<PendingRequestBase> request = mRequest.lock())
@@ -300,19 +300,19 @@ public:
}
void initData(LLVOVolume* vol, std::shared_ptr<PendingRequestBase>& request)
{
- mVolumes.push_back(vol);
+ mVolumes.insert(vol);
request->trackData(this);
mRequest = request;
}
void addVolume(LLVOVolume* vol)
{
- mVolumes.push_back(vol);
+ mVolumes.insert(vol);
if (std::shared_ptr<PendingRequestBase> request = mRequest.lock())
{
request->setScoreDirty();
}
}
- std::vector<LLVOVolume*> mVolumes;
+ std::unordered_set<LLVOVolume*> mVolumes;
private:
std::weak_ptr<PendingRequestBase> mRequest;
};