From 08ab36a5d92da619c355726b1e785b2028e1d776 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Sat, 14 Jul 2012 19:44:06 -0500 Subject: [PATCH 1/3] mPendingInventoryItemsIDs wasn't having entries removed. --- indra/newview/llviewerobject.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 191b0850d..54ed9ac8d 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -2874,6 +2874,23 @@ void LLViewerObject::processTaskInvFile(void** user_data, S32 error_code, LLExtS (object = gObjectList.findObject(ft->mTaskID))) { object->loadTaskInvFile(ft->mFilename); + + LLInventoryObject::object_list_t::iterator it = object->mInventory->begin(); + LLInventoryObject::object_list_t::iterator end = object->mInventory->end(); + std::list& pending_lst = object->mPendingInventoryItemsIDs; + + for (; it != end && pending_lst.size(); ++it) + { + LLViewerInventoryItem* item = dynamic_cast(it->get()); + if(item && item->getType() != LLAssetType::AT_CATEGORY) + { + std::list::iterator id_it = std::find(pending_lst.begin(), pending_lst.begin(), item->getAssetUUID()); + if (id_it != pending_lst.end()) + { + pending_lst.erase(id_it); + } + } + } } else { @@ -4894,9 +4911,11 @@ void LLViewerObject::deleteParticleSource() // virtual void LLViewerObject::updateDrawable(BOOL force_damped) { - if (mDrawable.notNull() && - !mDrawable->isState(LLDrawable::ON_MOVE_LIST) && - isChanged(MOVED)) + if (!isChanged(MOVED)) + { //most common case, having an empty if case here makes for better branch prediction + } + else if (mDrawable.notNull() && + !mDrawable->isState(LLDrawable::ON_MOVE_LIST)) { BOOL damped_motion = !isChanged(SHIFTED) && // not shifted between regions this frame and... From fa9c366076755d82929adb4c30326ac1de68ee05 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Sat, 14 Jul 2012 19:45:11 -0500 Subject: [PATCH 2/3] Fixed alpha textures not entering the alpha pool an alternative way. --- indra/newview/lldrawable.cpp | 1 + indra/newview/llvovolume.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index cb57169a5..b9df32f06 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -802,6 +802,7 @@ void LLDrawable::updateTexture() } }*/ + getVOVolume()->mFaceMappingChanged = TRUE; gPipeline.markRebuild(this, LLDrawable::REBUILD_MATERIAL, TRUE); } } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 1ae31e9b3..d6ff925cb 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1433,7 +1433,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) return TRUE; // No update to complete } - if (mVolumeChanged || mFaceMappingChanged || mDrawable->isState(LLDrawable::REBUILD_MATERIAL)) + if (mVolumeChanged || mFaceMappingChanged) { dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); From 08dd79fafdb1a9d2ae54a880699938bd998960aa Mon Sep 17 00:00:00 2001 From: Shyotl Date: Sat, 14 Jul 2012 20:42:47 -0500 Subject: [PATCH 3/3] Recent occlusion changes rearing their head again. Fix a crash when graphics set to low. --- indra/newview/llfeaturemanager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index b1e13d54e..1551744bd 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -556,6 +556,7 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures) LLViewerShaderMgr::sSkipReload = false; LLViewerShaderMgr::instance()->setShaders(); + gPipeline.refreshCachedSettings(); } void LLFeatureManager::applyBaseMasks()