diff options
author | Xiaohong Bao <bao@lindenlab.com> | 2013-02-28 22:49:05 -0700 |
---|---|---|
committer | Xiaohong Bao <bao@lindenlab.com> | 2013-02-28 22:49:05 -0700 |
commit | bd60fdbe44d9f996686d31cf48a3f2ca664dd301 (patch) | |
tree | 45ef35b52504e9b9788ba19725b38b10257a296c /indra/newview/llviewerregion.h | |
parent | 8144fa95701122f24c36b8ae2a51a5ce720614a6 (diff) |
for SH-3824: interesting: Ensure viewer can handle object updates from entire region gracefully
Diffstat (limited to 'indra/newview/llviewerregion.h')
-rw-r--r-- | indra/newview/llviewerregion.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index de14c0fe27..6da8c191a4 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -317,6 +317,7 @@ public: } eCacheUpdateResult; // handle a full update message + eCacheUpdateResult cacheFullUpdate(LLDataPackerBinaryBuffer &dp); eCacheUpdateResult cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinaryBuffer &dp); LLVOCacheEntry* getCacheEntryForOctree(U32 local_id); bool probeCache(U32 local_id, U32 crc, U32 flags, U8 &cache_miss_type); @@ -347,7 +348,7 @@ public: void getNeighboringRegionsStatus( std::vector<S32>& regions ); private: - void addToVOCacheTree(LLVOCacheEntry* entry); + void addToVOCacheTree(LLVOCacheEntry* entry, bool forced = false); LLViewerObject* addNewObject(LLVOCacheEntry* entry); void killObject(LLVOCacheEntry* entry, std::vector<LLDrawable*>& delete_list); LLVOCacheEntry* getCacheEntry(U32 local_id); @@ -360,6 +361,7 @@ private: F32 updateVisibleEntries(F32 max_time); //update visible entries void addCacheMiss(U32 id, LLViewerRegion::eCacheMissType miss_type, F32 weight); + void postProcesNewEntry(LLVOCacheEntry* entry); public: struct CompareDistance { @@ -445,6 +447,21 @@ private: BOOL mReleaseNotesRequested; BOOL mDead; //if true, this region is in the process of deleting. + class OrphanList + { + public: + OrphanList(){} + OrphanList(U32 child_id){addChild(child_id);} + + void addChild(U32 child_id) {mChildList.insert(child_id);} + std::set<U32>* getChildList() {return &mChildList;} + + private: + std::set<U32> mChildList; + }; + + std::map<U32, OrphanList> mOrphanMap; + class CacheMissItem { public: |