diff options
| author | Cosmic Linden <cosmic@lindenlab.com> | 2022-07-12 14:43:31 -0700 | 
|---|---|---|
| committer | Cosmic Linden <cosmic@lindenlab.com> | 2022-07-12 17:43:01 -0700 | 
| commit | 1614e4390b514de33609ea94835e75c6ddf9b316 (patch) | |
| tree | 9ec73d5e5eb922e0e2b47b5bed4520467be5d233 | |
| parent | 0aaf52c77c6c65258ca580557b6fd0766011471c (diff) | |
SL-17691: Consolidate calls to onDrawableUpdateFromServer to reduce false positives, change mServerDrawableUpdateCount from U64->U32
| -rw-r--r-- | indra/newview/llvovolume.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/llvovolume.h | 2 | 
2 files changed, 13 insertions, 8 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 367d8e328d..f4a938e57d 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -326,6 +326,9 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  	LLColor4U color;  	const S32 teDirtyBits = (TEM_CHANGE_TEXTURE|TEM_CHANGE_COLOR|TEM_CHANGE_MEDIA); +    const bool previously_volume_changed = mVolumeChanged; +    const bool previously_face_mapping_changed = mFaceMappingChanged; +    const bool previously_color_changed = mColorChanged;  	// Do base class updates...  	U32 retval = LLViewerObject::processUpdateMessage(mesgsys, user_data, block_num, update_type, dp); @@ -388,7 +391,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,                      }  					gPipeline.markTextured(mDrawable); -                    onDrawableUpdateFromServer();  					mFaceMappingChanged = TRUE;  					mTexAnimMode = 0;  				} @@ -402,7 +404,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  			if (setVolume(volume_params, 0))  			{  				markForUpdate(TRUE); -                onDrawableUpdateFromServer();  			}  		} @@ -413,7 +414,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  		//  		S32 result = unpackTEMessage(mesgsys, _PREHASH_ObjectData, (S32) block_num); -        onDrawableUpdateFromServer();  		if (result & teDirtyBits)  		{  			updateTEData(); @@ -440,10 +440,8 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  			if (setVolume(volume_params, 0))  			{  				markForUpdate(TRUE); -                onDrawableUpdateFromServer();  			}  			S32 res2 = unpackTEMessage(*dp); -            onDrawableUpdateFromServer();  			if (TEM_INVALID == res2)  			{  				// There's something bogus in the data that we're unpacking. @@ -504,7 +502,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,                  }  				gPipeline.markTextured(mDrawable); -                onDrawableUpdateFromServer();  				mFaceMappingChanged = TRUE;  				mTexAnimMode = 0;  			} @@ -523,7 +520,6 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  				LLDataPackerBinaryBuffer	tdp(tdpbuffer, 1024);  				mesgsys->getBinaryDataFast(_PREHASH_ObjectData, _PREHASH_TextureEntry, tdpbuffer, 0, block_num, 1024);  				S32 result = unpackTEMessage(tdp); -                onDrawableUpdateFromServer();  				if (result & teDirtyBits)  				{  					updateTEData(); @@ -556,6 +552,15 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,  	// ...and clean up any media impls  	cleanUpMediaImpls(); +    if (( +            (mVolumeChanged && !previously_volume_changed) || +            (mFaceMappingChanged && !previously_face_mapping_changed) || +            (mColorChanged && !previously_color_changed) +        ) +        && !mLODChanged) { +        onDrawableUpdateFromServer(); +    } +  	return retval;  } diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 71ac152490..4136c13315 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -425,7 +425,7 @@ private:  	LLPointer<LLViewerFetchedTexture> mLightTexture;  	media_list_t mMediaImplList;  	S32			mLastFetchedMediaVersion; // as fetched from the server, starts as -1 -    U64         mServerDrawableUpdateCount; +    U32         mServerDrawableUpdateCount;  	S32 mIndexInTex[LLRender::NUM_VOLUME_TEXTURE_CHANNELS];  	S32 mMDCImplCount; | 
