diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index dc242757b63cebdff2750afc6fe085666dfb79bc..5d44b01a16f1ed73baef9bf9a07481ab6d0c4754 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -513,7 +513,7 @@ void LLControlAvatar::updateAnimations() getAnimatedVolumes(volumes); // Rebuild mSignaledAnimations from the associated volumes. - std::map<LLUUID, S32> anims; + absl::flat_hash_map<LLUUID, S32> anims; for (std::vector<LLVOVolume*>::iterator vol_it = volumes.begin(); vol_it != volumes.end(); ++vol_it) { LLVOVolume *volp = *vol_it; @@ -523,7 +523,7 @@ void LLControlAvatar::updateAnimations() anim_it != signaled_animations.end(); ++anim_it) { - std::map<LLUUID,S32>::iterator found_anim_it = anims.find(anim_it->first); + auto found_anim_it = anims.find(anim_it->first); if (found_anim_it != anims.end()) { // Animation already present, use the larger sequence id @@ -547,7 +547,7 @@ void LLControlAvatar::updateAnimations() } } - mSignaledAnimations = anims; + mSignaledAnimations.swap(anims); processAnimationStateChanges(); } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f8b1632d84789f5c87119581f93ad7a0bf902e4e..0bfafe2ac2c1c996f16bf397e77704d1f5071d56 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5621,8 +5621,7 @@ void LLVOAvatar::processAnimationStateChanges() } // clear all current animations - std::map<LLUUID, S32>::iterator anim_it; - for (anim_it = mPlayingAnimations.begin(); anim_it != mPlayingAnimations.end();) + for (auto anim_it = mPlayingAnimations.begin(); anim_it != mPlayingAnimations.end();) { auto found_anim = mSignaledAnimations.find(anim_it->first); @@ -5638,7 +5637,7 @@ void LLVOAvatar::processAnimationStateChanges() } // start up all new anims - for (anim_it = mSignaledAnimations.begin(); anim_it != mSignaledAnimations.end();) + for (auto anim_it = mSignaledAnimations.begin(); anim_it != mSignaledAnimations.end();) { auto found_anim = mPlayingAnimations.find(anim_it->first); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 395c03da94534a8458b08f416a80157ef7f63e88..d5ba12c3d18bce789525e31a4d8f362603744eb7 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -49,6 +49,8 @@ #include "llvovolume.h" #include "llavatarrendernotifier.h" +#include "absl/container/flat_hash_map.h" + extern const LLUUID ANIM_AGENT_BODY_NOISE; extern const LLUUID ANIM_AGENT_BREATHE_ROT; extern const LLUUID ANIM_AGENT_PHYSICS_MOTION; @@ -840,8 +842,8 @@ private: // Animation state data //-------------------------------------------------------------------- public: - std::map<LLUUID, S32> mSignaledAnimations; // requested state of Animation name/value - std::map<LLUUID, S32> mPlayingAnimations; // current state of Animation name/value + absl::flat_hash_map<LLUUID, S32> mSignaledAnimations; // requested state of Animation name/value + absl::flat_hash_map<LLUUID, S32> mPlayingAnimations; // current state of Animation name/value typedef std::multimap<LLUUID, LLUUID> AnimationSourceMap; typedef AnimationSourceMap::iterator AnimSourceIterator;