summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerobjectlist.cpp
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-02-28 22:49:05 -0700
committerXiaohong Bao <bao@lindenlab.com>2013-02-28 22:49:05 -0700
commitbd60fdbe44d9f996686d31cf48a3f2ca664dd301 (patch)
tree45ef35b52504e9b9788ba19725b38b10257a296c /indra/newview/llviewerobjectlist.cpp
parent8144fa95701122f24c36b8ae2a51a5ce720614a6 (diff)
for SH-3824: interesting: Ensure viewer can handle object updates from entire region gracefully
Diffstat (limited to 'indra/newview/llviewerobjectlist.cpp')
-rw-r--r--indra/newview/llviewerobjectlist.cpp51
1 files changed, 48 insertions, 3 deletions
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index dce963c5c5..995c3e7351 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -455,12 +455,54 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
uncompressed_length = mesgsys->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_Data);
mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_Data, compressed_dpbuffer, 0, i);
compressed_dp.assignBuffer(compressed_dpbuffer, uncompressed_length);
+#if 0
+ if (compressed)
+ {
+ if (update_type != OUT_TERSE_IMPROVED) // OUT_FULL_COMPRESSED only?
+ {
+ U32 flags = 0;
+ mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i);
+
+ if(!(flags & FLAGS_TEMPORARY_ON_REZ))
+ {
+ //bCached = true;
+
+ compressed_dp.unpackU32(local_id, "LocalID");
+ //-------------
+ compressed_dp.unpackUUID(fullid, "ID");
+ //if(fullid == LLUUID("1e5183db-8f28-47f1-abe0-23de9f9042b7"))
+ {
+ llinfos << fullid << llendl;
+ }
+ //-------------
+
+ U32 crc;
+ compressed_dp.unpackU32(crc, "CRC");
+ /*LLViewerRegion::eCacheUpdateResult result = */regionp->cacheFullUpdate(local_id, crc, compressed_dp);
+ //recorder.cacheFullUpdate(local_id, update_type, result, objectp, msg_size);
+
+ continue; //do not creat LLViewerObject for cacheable object, object cache will do the job.
+ }
+ }
+ }
+#endif
if (update_type != OUT_TERSE_IMPROVED) // OUT_FULL_COMPRESSED only?
{
- compressed_dp.unpackUUID(fullid, "ID");
- compressed_dp.unpackU32(local_id, "LocalID");
- compressed_dp.unpackU8(pcode, "PCode");
+ U32 flags = 0;
+ mesgsys->getU32Fast(_PREHASH_ObjectData, _PREHASH_UpdateFlags, flags, i);
+
+ if(flags & FLAGS_TEMPORARY_ON_REZ)
+ {
+ compressed_dp.unpackUUID(fullid, "ID");
+ compressed_dp.unpackU32(local_id, "LocalID");
+ compressed_dp.unpackU8(pcode, "PCode");
+ }
+ else //send to object cache
+ {
+ regionp->cacheFullUpdate(compressed_dp);
+ continue;
+ }
}
else
{
@@ -594,6 +636,8 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
objectp->mLocalID = local_id;
}
processUpdateCore(objectp, user_data, i, update_type, &compressed_dp, justCreated);
+
+#if 0
if (update_type != OUT_TERSE_IMPROVED) // OUT_FULL_COMPRESSED only?
{
U32 flags = 0;
@@ -606,6 +650,7 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
recorder.cacheFullUpdate(local_id, update_type, result, objectp, msg_size);
}
}
+#endif
}
else
{