diff options
| -rw-r--r-- | indra/newview/llmeshrepository.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llmeshrepository.h | 4 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 5 | 
3 files changed, 11 insertions, 11 deletions
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 39ebf9f95b..bf7f91d19a 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -3906,8 +3906,8 @@ void LLMeshRepository::buildHull(const LLVolumeParams& params, S32 detail)  bool LLMeshRepository::hasPhysicsShape(const LLUUID& mesh_id)  { -	LLSD mesh = mThread->getMeshHeader(mesh_id); -	if (mesh.has("physics_mesh") && mesh["physics_mesh"].has("size") && (mesh["physics_mesh"]["size"].asInteger() > 0)) +	const LLSD* mesh = mThread->getMeshHeader(mesh_id); +	if (mesh && mesh->has("physics_mesh") && (*mesh)["physics_mesh"].has("size") && ((*mesh)["physics_mesh"]["size"].asInteger() > 0))  	{  		return true;  	} @@ -3921,27 +3921,26 @@ bool LLMeshRepository::hasPhysicsShape(const LLUUID& mesh_id)  	return false;  } -LLSD& LLMeshRepository::getMeshHeader(const LLUUID& mesh_id) +const LLSD* LLMeshRepository::getMeshHeader(const LLUUID& mesh_id)  {  	LL_RECORD_BLOCK_TIME(FTM_MESH_FETCH);  	return mThread->getMeshHeader(mesh_id);  } -LLSD& LLMeshRepoThread::getMeshHeader(const LLUUID& mesh_id) +const LLSD* LLMeshRepoThread::getMeshHeader(const LLUUID& mesh_id)  { -	static LLSD dummy_ret;  	if (mesh_id.notNull())  	{  		LLMutexLock lock(mHeaderMutex);  		mesh_header_map::iterator iter = mMeshHeader.find(mesh_id);  		if (iter != mMeshHeader.end())  		{ -			return iter->second; +			return &(iter->second);  		}  	} -	return dummy_ret; +	return NULL;  } diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index d35c44397b..8a1166522f 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -305,7 +305,7 @@ public:  	bool skinInfoReceived(const LLUUID& mesh_id, U8* data, S32 data_size);  	bool decompositionReceived(const LLUUID& mesh_id, U8* data, S32 data_size);  	bool physicsShapeReceived(const LLUUID& mesh_id, U8* data, S32 data_size); -	LLSD& getMeshHeader(const LLUUID& mesh_id); +	const LLSD* getMeshHeader(const LLUUID& mesh_id);  	void notifyLoadedMeshes();  	S32 getActualMeshLOD(const LLVolumeParams& mesh_params, S32 lod); @@ -506,7 +506,7 @@ public:  	bool meshRezEnabled(); -	LLSD& getMeshHeader(const LLUUID& mesh_id); +	const LLSD* getMeshHeader(const LLUUID& mesh_id);  	void uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures,  			bool upload_skin, bool upload_joints, std::string upload_url, bool do_upload = true, diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 8f0b233f01..486f6fae61 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3627,8 +3627,9 @@ F32 LLVOVolume::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_v  	F32 radius = getScale().length()*0.5f;  	if (isMesh()) -	{	 -		LLSD& header = gMeshRepo.getMeshHeader(getVolume()->getParams().getSculptID()); +	{ +		const LLSD* header_ptr = gMeshRepo.getMeshHeader(getVolume()->getParams().getSculptID()); +		LLSD header = header_ptr ? *header_ptr : LLSD();  		return LLMeshRepository::getStreamingCost(header, radius, bytes, visible_bytes, mLOD, unscaled_value);  	}  | 
