diff options
-rwxr-xr-x | doc/contributions.txt | 1 | ||||
-rw-r--r-- | indra/newview/llmeshrepository.cpp | 17 | ||||
-rw-r--r-- | indra/newview/llmeshrepository.h | 4 | ||||
-rw-r--r-- | indra/newview/llvoicevivox.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llvovolume.cpp | 5 |
5 files changed, 16 insertions, 13 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt index f1111a2210..71612af544 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -196,6 +196,7 @@ Ansariel Hiller MAINT-6513 MAINT-6514 MAINT-6552 + STORM-2133 Aralara Rajal Arare Chantilly CHUIBUG-191 diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index c3d41c65a6..3d8490bbd7 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; } @@ -4034,7 +4033,9 @@ void LLMeshRepository::uploadError(LLSD& args) //static F32 LLMeshRepository::getStreamingCost(LLSD& header, F32 radius, S32* bytes, S32* bytes_visible, S32 lod, F32 *unscaled_value) { - if (header.size() == 0 || header.has("404") || header["version"].asInteger() > MAX_MESH_VERSION) + if (header.has("404") + || !header.has("lowest_lod") + || (header.has("version") && header["version"].asInteger() > MAX_MESH_VERSION)) { return 0.f; } 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/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index 07427e0377..189ed54993 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -427,7 +427,7 @@ void LLVivoxVoiceClient::connectorCreate() void LLVivoxVoiceClient::connectorShutdown() { - if(!mConnectorEstablished) + if(mConnectorEstablished) { std::ostringstream stream; stream diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 55d65b8a09..177ad9ab3d 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3631,8 +3631,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); } |