From acf592419bde744d171ceb3d0b978fe18dc32198 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 19 Jun 2019 16:52:44 +0300 Subject: DRTVWR-493 LLFollowCamMgr to singleton --- indra/newview/llvoavatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 20fa327790..3feea2abc0 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7329,7 +7329,7 @@ void LLVOAvatar::getOffObject() if (sit_object) { stopMotionFromSource(sit_object->getID()); - LLFollowCamMgr::setCameraActive(sit_object->getID(), FALSE); + LLFollowCamMgr::getInstance()->setCameraActive(sit_object->getID(), FALSE); LLViewerObject::const_child_list_t& child_list = sit_object->getChildren(); for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin(); @@ -7338,7 +7338,7 @@ void LLVOAvatar::getOffObject() LLViewerObject* child_objectp = *iter; stopMotionFromSource(child_objectp->getID()); - LLFollowCamMgr::setCameraActive(child_objectp->getID(), FALSE); + LLFollowCamMgr::getInstance()->setCameraActive(child_objectp->getID(), FALSE); } } -- cgit v1.2.3 From 6ec37fac60c0288e576b72b91b16d74b37dbc32d Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 29 Oct 2019 22:37:02 +0200 Subject: SL-12196 Crash at updateMeshTextures --- indra/newview/llvoavatar.cpp | 68 +++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 32 deletions(-) (limited to 'indra/newview/llvoavatar.cpp') diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index a974c66ee4..74cc1c63aa 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1377,7 +1377,7 @@ void LLVOAvatar::calculateSpatialExtents(LLVector4a& newMin, LLVector4a& newMax) ++attachment_iter) { // Don't we need to look at children of attached_object as well? - const LLViewerObject* attached_object = (*attachment_iter); + const LLViewerObject* attached_object = attachment_iter->get(); if (attached_object && !attached_object->isHUDAttachment()) { const LLVOVolume *vol = dynamic_cast(attached_object); @@ -1800,7 +1800,7 @@ BOOL LLVOAvatar::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject* attached_object = (*attachment_iter); + LLViewerObject* attached_object = attachment_iter->get(); if (attached_object && !attached_object->isDead() && attachment->getValid()) { @@ -1864,7 +1864,7 @@ LLViewerObject* LLVOAvatar::lineSegmentIntersectRiggedAttachments(const LLVector attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject* attached_object = (*attachment_iter); + LLViewerObject* attached_object = attachment_iter->get(); if (attached_object->lineSegmentIntersect(start, local_end, face, pick_transparent, pick_rigged, face_hit, &local_intersection, tex_coord, normal, tangent)) { @@ -2688,7 +2688,7 @@ void LLVOAvatar::idleUpdateMisc(bool detailed_update) attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject* attached_object = (*attachment_iter); + LLViewerObject* attached_object = attachment_iter->get(); BOOL visibleAttachment = visible || (attached_object && !(attached_object->mDrawable->getSpatialBridge() && attached_object->mDrawable->getSpatialBridge()->getRadius() < 2.0)); @@ -4569,7 +4569,7 @@ void LLVOAvatar::updateVisibility() attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - if (LLViewerObject *attached_object = (*attachment_iter)) + if (LLViewerObject *attached_object = attachment_iter->get()) { if(attached_object->mDrawable->isVisible()) { @@ -5993,7 +5993,7 @@ void LLVOAvatar::rebuildAttachmentOverrides() for (LLViewerJointAttachment::attachedobjs_vec_t::iterator at_it = attachment_pt->mAttachedObjects.begin(); at_it != attachment_pt->mAttachedObjects.end(); ++at_it) { - LLViewerObject *vo = *at_it; + LLViewerObject *vo = at_it->get(); // Attached animated objects affect joints in their control // avs, not the avs to which they are attached. if (vo && !vo->isAnimatedObject()) @@ -6044,7 +6044,7 @@ void LLVOAvatar::updateAttachmentOverrides() for (LLViewerJointAttachment::attachedobjs_vec_t::iterator at_it = attachment_pt->mAttachedObjects.begin(); at_it != attachment_pt->mAttachedObjects.end(); ++at_it) { - LLViewerObject *vo = *at_it; + LLViewerObject *vo = at_it->get(); // Attached animated objects affect joints in their control // avs, not the avs to which they are attached. if (vo && !vo->isAnimatedObject()) @@ -7147,29 +7147,33 @@ void LLVOAvatar::lazyAttach() for (U32 i = 0; i < mPendingAttachment.size(); i++) { LLPointer cur_attachment = mPendingAttachment[i]; - if (cur_attachment->mDrawable) + // Object might have died while we were waiting for drawable + if (!cur_attachment->isDead()) { - if (isSelf()) + if (cur_attachment->mDrawable) { - const LLUUID& item_id = cur_attachment->getAttachmentItemID(); - LLViewerInventoryItem *item = gInventory.getItem(item_id); - LL_DEBUGS("Avatar") << "ATT attaching object " - << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + if (isSelf()) + { + const LLUUID& item_id = cur_attachment->getAttachmentItemID(); + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LL_DEBUGS("Avatar") << "ATT attaching object " + << (item ? item->getName() : "UNKNOWN") << " id " << item_id << LL_ENDL; + } + if (!attachObject(cur_attachment)) + { // Drop it + LL_WARNS() << "attachObject() failed for " + << cur_attachment->getID() + << " item " << cur_attachment->getAttachmentItemID() + << LL_ENDL; + // MAINT-3312 backout + //still_pending.push_back(cur_attachment); + } } - if (!attachObject(cur_attachment)) - { // Drop it - LL_WARNS() << "attachObject() failed for " - << cur_attachment->getID() - << " item " << cur_attachment->getAttachmentItemID() - << LL_ENDL; - // MAINT-3312 backout - //still_pending.push_back(cur_attachment); + else + { + still_pending.push_back(cur_attachment); } } - else - { - still_pending.push_back(cur_attachment); - } } mPendingAttachment = still_pending; @@ -7189,7 +7193,7 @@ void LLVOAvatar::resetHUDAttachments() attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - const LLViewerObject* attached_object = (*attachment_iter); + const LLViewerObject* attached_object = attachment_iter->get(); if (attached_object && attached_object->mDrawable.notNull()) { gPipeline.markMoved(attached_object->mDrawable); @@ -7519,7 +7523,7 @@ LLViewerObject * LLVOAvatar::findAttachmentByID( const LLUUID & target_id ) cons attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject *attached_object = (*attachment_iter); + LLViewerObject *attached_object = attachment_iter->get(); if (attached_object && attached_object->getID() == target_id) { @@ -7941,7 +7945,7 @@ void LLVOAvatar::updateMeshVisibility() attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject *objectp = (*attachment_iter); + LLViewerObject *objectp = attachment_iter->get(); if (objectp) { for (int face_index = 0; face_index < objectp->getNumTEs(); face_index++) @@ -8258,7 +8262,7 @@ void LLVOAvatar::updateMeshTextures() attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - LLViewerObject* attached_object = (*attachment_iter); + LLViewerObject* attached_object = attachment_iter->get(); if (attached_object && !attached_object->isDead()) { attached_object->refreshBakeTexture(); @@ -8496,7 +8500,7 @@ LLBBox LLVOAvatar::getHUDBBox() const attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - const LLViewerObject* attached_object = (*attachment_iter); + const LLViewerObject* attached_object = attachment_iter->get(); if (attached_object == NULL) { LL_WARNS() << "HUD attached object is NULL!" << LL_ENDL; @@ -9862,7 +9866,7 @@ void LLVOAvatar::getAssociatedVolumes(std::vector& volumes) for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attach_iter = attachment->mAttachedObjects.begin(); attach_iter != attach_end; ++attach_iter) { - LLViewerObject* attached_object = *attach_iter; + LLViewerObject* attached_object = attach_iter->get(); LLVOVolume *volume = dynamic_cast(attached_object); if (volume) { @@ -10380,7 +10384,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity() attachment_iter != attachment->mAttachedObjects.end(); ++attachment_iter) { - const LLViewerObject* attached_object = (*attachment_iter); + const LLViewerObject* attached_object = attachment_iter->get(); accountRenderComplexityForObject(attached_object, max_attachment_complexity, textures, cost, hud_complexity_list); } -- cgit v1.2.3