diff options
| author | Rye <rye@alchemyviewer.org> | 2026-01-02 09:50:34 -0500 |
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2026-01-05 20:45:57 +0200 |
| commit | 23bfecf0b1dd92efcd743ec00637cd1122220fb9 (patch) | |
| tree | 324daa3b834019caa2d7b33bfd66b691bb9cc5d4 /indra/newview | |
| parent | 24dccc4015a291b819c2a4bb0451c8898e5a3cc2 (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.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llmeshrepository.h | 8 |
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; }; |
