From 17c22d317f93abc61c68e05a36f56a0359f282ef Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 9 Nov 2017 16:09:51 +0200 Subject: MAINT-2880 Particle generator object doesn't start displaying particles, when unblocking the owner of this object --- indra/newview/llviewerpartsim.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'indra/newview/llviewerpartsim.cpp') diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index b4617566ac..e8ea0eb26d 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -37,6 +37,7 @@ #include "llviewerregion.h" #include "llvopartgroup.h" #include "llworld.h" +#include "llmutelist.h" #include "pipeline.h" #include "llspatialpartition.h" #include "llvoavatarself.h" @@ -711,6 +712,11 @@ void LLViewerPartSim::updateSimulation() upd = FALSE; } + if(vobj && vobj->isOwnerInMuteList()) + { + upd = FALSE; + } + if (upd && vobj && (vobj->getPCode() == LL_PCODE_VOLUME)) { if(vobj->getAvatar() && vobj->getAvatar()->isTooComplex()) -- cgit v1.3 From 8bceb809022981221baa288df673fbb2c59cdd04 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Tue, 5 Dec 2017 18:19:30 +0200 Subject: MAINT-2880 Particle generator object doesn't start displaying particles, when unblocking the owner of this object --- indra/newview/llviewerobject.cpp | 7 ++++--- indra/newview/llviewerobject.h | 2 +- indra/newview/llviewerpartsim.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) (limited to 'indra/newview/llviewerpartsim.cpp') diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index e86d39e9d0..228c686065 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -5118,9 +5118,10 @@ void LLViewerObject::updateText() } } -bool LLViewerObject::isOwnerInMuteList() +bool LLViewerObject::isOwnerInMuteList(LLUUID id) { - if (isAvatar() || mOwnerID.isNull()) + LLUUID owner_id = id.isNull() ? mOwnerID : id; + if (isAvatar() || owner_id.isNull()) { return false; } @@ -5132,7 +5133,7 @@ bool LLViewerObject::isOwnerInMuteList() } else { - muted = LLMuteList::getInstance()->isMuted(mOwnerID); + muted = LLMuteList::getInstance()->isMuted(owner_id); const F64 SECONDS_BETWEEN_MUTE_UPDATES = 1; mCachedMuteListUpdateTime = now + SECONDS_BETWEEN_MUTE_UPDATES; diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index 4f826b9eac..21c95d5533 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -422,7 +422,7 @@ public: void updateText(); // update text label position virtual void updateDrawable(BOOL force_damped); // force updates on static objects - bool isOwnerInMuteList(); + bool isOwnerInMuteList(LLUUID item_id = LLUUID()); void setDrawableState(U32 state, BOOL recursive = TRUE); void clearDrawableState(U32 state, BOOL recursive = TRUE); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index e8ea0eb26d..b066793e3d 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -712,7 +712,7 @@ void LLViewerPartSim::updateSimulation() upd = FALSE; } - if(vobj && vobj->isOwnerInMuteList()) + if(vobj && vobj->isOwnerInMuteList(mViewerPartSources[i]->getOwnerUUID())) { upd = FALSE; } -- cgit v1.3 From bd786ada4f773b0ba13536f26a7858bd9ad69791 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 9 Feb 2018 14:19:31 +0200 Subject: MAINT-8279 Fix for crash on unset pcode --- indra/newview/llviewerobjectlist.cpp | 24 +++++++++++++++++------- indra/newview/llviewerpartsim.cpp | 4 ++-- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'indra/newview/llviewerpartsim.cpp') diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index fede9a792f..dc54346d59 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -478,15 +478,25 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys, { 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"); + + if (pcode == 0) { - compressed_dp.unpackUUID(fullid, "ID"); - compressed_dp.unpackU32(local_id, "LocalID"); - compressed_dp.unpackU8(pcode, "PCode"); - } - else //send to object cache + // object creation will fail, LLViewerObject::createObject() + LL_WARNS() << "Received object " << fullid + << " with 0 PCode. Local id: " << local_id + << " Flags: " << flags + << " Region: " << regionp->getName() + << " Region id: " << regionp->getRegionID() << LL_ENDL; + recorder.objectUpdateFailure(local_id, update_type, msg_size); + continue; + } + else if ((flags & FLAGS_TEMPORARY_ON_REZ) == 0) { + //send to object cache regionp->cacheFullUpdate(compressed_dp, flags); continue; } diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index b066793e3d..25cf082751 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -756,7 +756,7 @@ void LLViewerPartSim::updateSimulation() LLViewerObject* vobj = mViewerPartGroups[i]->mVOPartGroupp; S32 visirate = 1; - if (vobj) + if (vobj && !vobj->isDead() && vobj->mDrawable && !vobj->mDrawable->isDead()) { LLSpatialGroup* group = vobj->mDrawable->getSpatialGroup(); if (group && !group->isVisible()) // && !group->isState(LLSpatialGroup::OBJECT_DIRTY)) @@ -767,7 +767,7 @@ void LLViewerPartSim::updateSimulation() if ((LLDrawable::getCurrentFrame()+mViewerPartGroups[i]->mID)%visirate == 0) { - if (vobj) + if (vobj && !vobj->isDead()) { gPipeline.markRebuild(vobj->mDrawable, LLDrawable::REBUILD_ALL, TRUE); } -- cgit v1.3