diff options
-rw-r--r-- | indra/newview/llappviewer.cpp | 1 | ||||
-rwxr-xr-x | indra/newview/llfloatermodelpreview.cpp | 8 | ||||
-rw-r--r-- | indra/newview/llfloatermodelpreview.h | 2 | ||||
-rwxr-xr-x | indra/newview/llmeshrepository.cpp | 25 | ||||
-rw-r--r-- | indra/newview/llmeshrepository.h | 6 |
5 files changed, 31 insertions, 11 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 08f5cb4685..0ff4336f4c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1262,6 +1262,7 @@ bool LLAppViewer::mainLoop() break; } } + gMeshRepo.update() ; if(!total_work_pending) //pause texture fetching threads if nothing to process. { diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 85d0ae02cf..cc4359a1bf 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -475,10 +475,10 @@ void LLFloaterModelPreview::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata) S32 which_mode = 0; - LLComboBox* combo = (LLComboBox*) ctrl;
-
- which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order
-
+ LLComboBox* combo = (LLComboBox*) ctrl; + + which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order + fp->mModelPreview->setPreviewLOD(which_mode); } diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 64b220d86b..623cd286fb 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -52,7 +52,7 @@ class domTranslate; class LLMenuButton; class LLToggleableMenu; -const S32 NUM_LOD = 4;
+const S32 NUM_LOD = 4; class LLModelLoader : public LLThread { diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 4873eaeabd..2815054865 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1486,7 +1486,7 @@ void LLMeshUploadThread::run() { textures.insert(material_iter->mDiffuseMap); - LLTextureUploadData data(material_iter->mDiffuseMap, material_iter->mDiffuseMapLabel); + LLTextureUploadData data(material_iter->mDiffuseMap.get(), material_iter->mDiffuseMapLabel); uploadTexture(data); } } @@ -2135,6 +2135,24 @@ void LLMeshRepository::shutdown() LLConvexDecomposition::quitSystem(); } +//called in the main thread. +S32 LLMeshRepository::update() +{ + if(mUploadWaitList.empty()) + { + return 0 ; + } + + S32 size = mUploadWaitList.size() ; + for (S32 i = 0; i < size; ++i) + { + mUploads.push_back(mUploadWaitList[i]); + mUploadWaitList[i]->start() ; + } + mUploadWaitList.clear() ; + + return size ; +} S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_params, S32 detail) { @@ -2654,8 +2672,7 @@ void LLMeshRepository::uploadModel(std::vector<LLModelInstance>& data, LLVector3 bool upload_skin, bool upload_joints) { LLMeshUploadThread* thread = new LLMeshUploadThread(data, scale, upload_textures, upload_skin, upload_joints); - mUploads.push_back(thread); - thread->start(); + mUploadWaitList.push_back(thread); } S32 LLMeshRepository::getMeshSize(const LLUUID& mesh_id, S32 lod) @@ -2742,7 +2759,7 @@ void LLMeshUploadThread::sendCostRequest(LLMeshUploadData& data) void LLMeshUploadThread::sendCostRequest(LLTextureUploadData& data) { - if (data.mTexture.notNull() && data.mTexture->getDiscardLevel() >= 0) + if (data.mTexture && data.mTexture->getDiscardLevel() >= 0) { LLSD asset_resources = LLSD::emptyMap(); diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 8687ac750b..0926a94ec2 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -65,7 +65,7 @@ public: class LLTextureUploadData { public: - LLPointer<LLViewerFetchedTexture> mTexture; + LLViewerFetchedTexture* mTexture; LLUUID mUUID; std::string mRSVP; std::string mLabel; @@ -399,7 +399,7 @@ public: std::queue<LLTextureUploadData> mTextureQ; std::queue<LLTextureUploadData> mConfirmedTextureQ; - std::map<LLPointer<LLViewerFetchedTexture>, LLTextureUploadData> mTextureMap; + std::map<LLViewerFetchedTexture*, LLTextureUploadData> mTextureMap; LLMeshUploadThread(instance_list& data, LLVector3& scale, bool upload_textures, bool upload_skin, bool upload_joints); @@ -442,6 +442,7 @@ public: void init(); void shutdown(); + S32 update() ; //mesh management functions S32 loadMesh(LLVOVolume* volume, const LLVolumeParams& mesh_params, S32 detail = 0); @@ -505,6 +506,7 @@ public: LLMeshRepoThread* mThread; std::vector<LLMeshUploadThread*> mUploads; + std::vector<LLMeshUploadThread*> mUploadWaitList; LLPhysicsDecomp* mDecompThread; |