From dec077e54a21ccda7d7cc0b610a87eacfd36af09 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Mon, 12 Feb 2018 16:47:39 +0000 Subject: MAINT-8239 - more logging and better notes about the fix --- indra/newview/llvoavatar.cpp | 5 +++++ indra/newview/llvovolume.cpp | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 2c330daa27..40fb05abc4 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5902,6 +5902,7 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo) if (vobj->isMesh() && ((vobj->getVolume() && !vobj->getVolume()->isMeshAssetLoaded()) || !gMeshRepo.meshRezEnabled())) { + LL_DEBUGS("AnimatedObjects") << "failed to add attachment overrides for root object " << root_object->getID() << " mesh asset not loaded" << LL_ENDL; return; } const LLMeshSkinInfo* pSkinData = vobj->getSkinInfo(); @@ -5968,6 +5969,10 @@ void LLVOAvatar::addAttachmentOverridesForObject(LLViewerObject *vo) } } } + else + { + LL_DEBUGS("AnimatedObjects") << "failed to add attachment overrides for root object " << root_object->getID() << " not mesh or no pSkinData" << LL_ENDL; + } //Rebuild body data if we altered joints/pelvis if ( pelvisGotSet ) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8fcb498fca..c007b446f7 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3474,9 +3474,16 @@ void LLVOVolume::afterReparent() if (isAnimatedObject() && getControlAvatar()) { - LL_DEBUGS("AnimatedObjects") << "adding attachment overrides, parent is animated object" + LL_DEBUGS("AnimatedObjects") << "adding attachment overrides, parent is animated object " << ((LLViewerObject*)getParent())->getID() << LL_ENDL; - //getControlAvatar()->addAttachmentOverridesForObject(this); + + // MAINT-8239 - doing a full rebuild whenever parent is set + // makes the joint overrides load more robustly. In theory, + // addAttachmentOverrides should be sufficient, but in + // practice doing a full rebuild helps compensate for + // notifyMeshLoaded() not being called reliably enough. + + // was: getControlAvatar()->addAttachmentOverridesForObject(this); getControlAvatar()->rebuildAttachmentOverrides(); getControlAvatar()->updateAnimations(); } -- cgit v1.2.3