summaryrefslogtreecommitdiff
path: root/indra/newview/llviewermessage.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2018-05-03 22:42:02 +0100
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2018-05-03 22:42:02 +0100
commit7ed17b5c2c11b9e57316c87b29524b88edb8f762 (patch)
treed9f513fe93fc86f7adab8d297082d3c715178e8e /indra/newview/llviewermessage.cpp
parent0608bce54bc818774a38403e2252e25fb54d7ed6 (diff)
MAINT-8608, MAINT-8539, MAINT-8615 - changes to make object animation info more persistent, tolerant to race conditions during initialization
Diffstat (limited to 'indra/newview/llviewermessage.cpp')
-rw-r--r--indra/newview/llviewermessage.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 05494b74f7..e8db01efed 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -5075,6 +5075,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
}
}
+
// AXON make logging less spammy after issues resolved, before release.
void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
{
@@ -5085,6 +5086,19 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid);
LL_INFOS("AnimatedObjects") << "Received animation state for object " << uuid << LL_ENDL;
+
+ signaled_animation_map_t signaled_anims;
+ S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList);
+ LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL;
+ for( S32 i = 0; i < num_blocks; i++ )
+ {
+ mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i);
+ mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i);
+ signaled_anims[animation_id] = anim_sequence_id;
+ LL_INFOS("AnimatedObjects") << "added signaled_anims animation request for object "
+ << uuid << " animation id " << animation_id << LL_ENDL;
+ }
+ LLObjectSignaledAnimationMap::instance().getMap()[uuid] = signaled_anims;
LLViewerObject *objp = gObjectList.findObject(uuid);
if (!objp)
@@ -5114,9 +5128,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
return;
}
- S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList);
- LL_INFOS("AnimatedObjects") << "processing object animation requests, num_blocks " << num_blocks << " uuid " << uuid << LL_ENDL;
-
if (!avatarp->mPlaying)
{
avatarp->mPlaying = true;
@@ -5127,17 +5138,6 @@ void process_object_animation(LLMessageSystem *mesgsys, void **user_data)
}
}
- volp->mObjectSignaledAnimations.clear();
-
- for( S32 i = 0; i < num_blocks; i++ )
- {
- mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i);
- mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i);
- volp->mObjectSignaledAnimations[animation_id] = anim_sequence_id;
- LL_INFOS("AnimatedObjects") << "added object animation request for object "
- << uuid << " animation id " << animation_id << LL_ENDL;
- }
-
avatarp->updateAnimations();
}