diff options
| author | Oz Linden <oz@lindenlab.com> | 2016-03-02 13:46:19 -0500 | 
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2016-03-02 13:46:19 -0500 | 
| commit | 9c727eb2fb9924f0b67fb1e4d0e1cdaf2f20e969 (patch) | |
| tree | 4118e295bdf310489ae322405cbbc63f57a78161 /indra | |
| parent | 2ed1fd432ae40df91343f8c21dc6ed80abca9f0e (diff) | |
| parent | 0ffc4f2667806653d1f0548fdda7eb91bdea5025 (diff) | |
Merged in ruslantproductengine/ruslanteliuk-391-blizzard (pull request #21)
MAINT-5700 [QuickGraphics-RC] Blocked avatars should always be derendered
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/lldrawpoolavatar.cpp | 10 | ||||
| -rwxr-xr-x | indra/newview/llviewermenu.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llviewerpartsim.cpp | 8 | ||||
| -rwxr-xr-x | indra/newview/llvoavatar.cpp | 6 | ||||
| -rwxr-xr-x | indra/newview/pipeline.cpp | 4 | 
5 files changed, 22 insertions, 8 deletions
| diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index c200ecfaf8..63e4abb308 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -472,7 +472,9 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)  	}  	BOOL impostor = avatarp->isImpostor(); -	if (impostor) +	if (impostor  +		&& LLVOAvatar::AV_DO_NOT_RENDER != avatarp->getVisualMuteSettings() +		&& LLVOAvatar::AV_ALWAYS_RENDER != avatarp->getVisualMuteSettings())  	{  		return;  	} @@ -1246,7 +1248,9 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)  	BOOL impostor = avatarp->isImpostor() && !single_avatar; -	if (impostor && pass != 0) +	if (( avatarp->isInMuteList()  +		  || impostor  +		  || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()) ) && pass != 0)  	{ //don't draw anything but the impostor for impostored avatars  		return;  	} @@ -1263,7 +1267,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)  			LLVOAvatar::sNumVisibleAvatars++;  		} -		if (impostor) +		if (impostor || (LLVOAvatar::AV_DO_NOT_RENDER == avatarp->getVisualMuteSettings() && !avatarp->needsImpostorUpdate()))  		{  			if (LLPipeline::sRenderDeferred && !LLPipeline::sReflectionRender && avatarp->mImpostor.isComplete())   			{ diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index cbc2ecc3c0..20f3d25be3 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -3145,6 +3145,8 @@ class LLObjectMute : public view_listener_t  		LLVOAvatar* avatar = find_avatar_from_object(object);   		if (avatar)  		{ +			avatar->mNeedsImpostorUpdate = TRUE; +  			id = avatar->getID();  			LLNameValue *firstname = avatar->getNVPair("FirstName"); diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index ab510c1e95..b4617566ac 100755 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -705,7 +705,13 @@ void LLViewerPartSim::updateSimulation()  		{  			BOOL upd = TRUE;  			LLViewerObject* vobj = mViewerPartSources[i]->mSourceObjectp; -			if (vobj && (vobj->getPCode() == LL_PCODE_VOLUME)) + +			if (vobj && vobj->isAvatar() && ((LLVOAvatar*)vobj)->isInMuteList()) +			{ +				upd = FALSE; +			} + +			if (upd && vobj && (vobj->getPCode() == LL_PCODE_VOLUME))  			{  				if(vobj->getAvatar() && vobj->getAvatar()->isTooComplex())  				{ diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index c88f5d1fce..c3c18f7c54 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -1,4 +1,4 @@ -/**  +/**    * @File llvoavatar.cpp   * @brief Implementation of LLVOAvatar class which is a derivation of LLViewerObject   * @@ -8138,7 +8138,7 @@ void LLVOAvatar::updateImpostors()  	{  		LLVOAvatar* avatar = (LLVOAvatar*) *iter;  		if (!avatar->isDead() && avatar->isVisible() -			&& (avatar->isImpostor() && avatar->needsImpostorUpdate()) +			&& ((avatar->isImpostor() || LLVOAvatar::AV_DO_NOT_RENDER == avatar->getVisualMuteSettings()) && avatar->needsImpostorUpdate())              )  		{              avatar->calcMutedAVColor(); @@ -8487,7 +8487,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()  void LLVOAvatar::setVisualMuteSettings(VisualMuteSettings set)  {      mVisuallyMuteSetting = set; -    mNeedsImpostorUpdate = true; +    mNeedsImpostorUpdate = TRUE;  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 4d1725e927..a4d41164e5 100755 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -3114,7 +3114,9 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)  					if (vobj) // this test may not be needed, see above  					{  						LLVOAvatar* av = vobj->asAvatar(); -						if (av && av->isImpostor()) +						if (av && (av->isImpostor()  +							|| av->isInMuteList()  +							|| (LLVOAvatar::AV_DO_NOT_RENDER == av->getVisualMuteSettings() && !av->needsImpostorUpdate()) ))  						{  							return;  						} | 
