From 05aea239de6bb74cb1e44a966ae8ec9f47f9be54 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Tue, 17 May 2022 01:30:30 -0400 Subject: [PATCH] Revert "SL-16644 OUT_FULL updates should reset cache" This reverts commit 30df481c61578506ed3413381ef49e9d67408e5d. --- indra/newview/llviewerobjectlist.cpp | 2 +- indra/newview/llviewerregion.cpp | 14 +++++++++++--- indra/newview/llviewerregion.h | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index c676949b988..1a39a1b98a4 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -580,7 +580,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, if(update_cache) { - objectp = regionp->updateCacheEntry(local_id, objectp); + objectp = regionp->updateCacheEntry(local_id, objectp, update_type); } // This looks like it will break if the local_id of the object doesn't change diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index f593809c5c2..c6a10737a0e 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1816,8 +1816,13 @@ LLViewerObject* LLViewerRegion::addNewObject(LLVOCacheEntry* entry) //update object cache if the object receives a full-update or terse update //update_type == EObjectUpdateType::OUT_TERSE_IMPROVED or EObjectUpdateType::OUT_FULL -LLViewerObject* LLViewerRegion::updateCacheEntry(U32 local_id, LLViewerObject* objectp) +LLViewerObject* LLViewerRegion::updateCacheEntry(U32 local_id, LLViewerObject* objectp, U32 update_type) { + if(objectp && update_type != (U32)OUT_TERSE_IMPROVED) + { + return objectp; //no need to access cache + } + LLVOCacheEntry* entry = getCacheEntry(local_id); if (!entry) { @@ -1829,8 +1834,11 @@ LLViewerObject* LLViewerRegion::updateCacheEntry(U32 local_id, LLViewerObject* o objectp = addNewObject(entry); } - //remove from cache. - killCacheEntry(entry, true); + //remove from cache if terse update + if(update_type == (U32)OUT_TERSE_IMPROVED) + { + killCacheEntry(entry, true); + } return objectp; } diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 151071a478e..da947a9fc1a 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -362,7 +362,7 @@ class LLViewerRegion final : public LLCapabilityProvider // implements this inte void requestCacheMisses(); void addCacheMissFull(const U32 local_id); //update object cache if the object receives a full-update or terse update - LLViewerObject* updateCacheEntry(U32 local_id, LLViewerObject* objectp); + LLViewerObject* updateCacheEntry(U32 local_id, LLViewerObject* objectp, U32 update_type); void findOrphans(U32 parent_id); void clearCachedVisibleObjects(); void dumpCache(); -- GitLab