From 4e1f7ce4e8935db2724a646d980f81699825916e Mon Sep 17 00:00:00 2001 From: Cinders Date: Tue, 1 Oct 2013 17:49:02 -0600 Subject: [PATCH] Save some frames from updating export info when llselectmgr signals change but we have the same object selected --- indra/newview/daeexport.cpp | 12 +++++++++++- indra/newview/daeexport.h | 1 + indra/newview/fsfloaterexport.cpp | 10 ++++++++++ indra/newview/fsfloaterexport.h | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/indra/newview/daeexport.cpp b/indra/newview/daeexport.cpp index f8fb77df34..a4f407da91 100644 --- a/indra/newview/daeexport.cpp +++ b/indra/newview/daeexport.cpp @@ -108,6 +108,7 @@ namespace DAEExportUtil ColladaExportFloater::ColladaExportFloater(const LLSD& key) : LLFloater(key), + mCurrentObjectID(NULL), mDirty(true) { mCommitCallbackRegistrar.add("ColladaExport.TextureExport", boost::bind(&ColladaExportFloater::onTextureExportCheck, this)); @@ -250,6 +251,7 @@ void ColladaExportFloater::addSelectedObjects() LLSelectNode* node = mObjectSelection->getFirstRootNode(); if (node) { + mCurrentObjectID = node->getObject()->getID(); mSaver.mOffset = -mObjectSelection->getFirstRootObject()->getRenderPosition(); mObjectName = node->mName; @@ -280,7 +282,15 @@ void ColladaExportFloater::addSelectedObjects() void ColladaExportFloater::updateSelection() { - mObjectSelection = LLSelectMgr::getInstance()->getSelection(); + LLObjectSelectionHandle object_selection = LLSelectMgr::getInstance()->getSelection(); + LLSelectNode* node = object_selection->getFirstRootNode(); + + if (node && !node->mValid && node->getObject()->getID() == mCurrentObjectID) + { + return; + } + + mObjectSelection = object_selection; dirty(); refresh(); } diff --git a/indra/newview/daeexport.h b/indra/newview/daeexport.h index 813079fe24..725f764aff 100644 --- a/indra/newview/daeexport.h +++ b/indra/newview/daeexport.h @@ -148,6 +148,7 @@ private: std::string mObjectName; LLUIString mTitleProgress; LLPanel* mTexturePanel; + LLUUID mCurrentObjectID; bool mDirty; class CacheReadResponder : public LLTextureCache::ReadResponder diff --git a/indra/newview/fsfloaterexport.cpp b/indra/newview/fsfloaterexport.cpp index 86bf7ddbfc..2337b16e86 100644 --- a/indra/newview/fsfloaterexport.cpp +++ b/indra/newview/fsfloaterexport.cpp @@ -196,6 +196,7 @@ void FSFloaterObjectExport::onIdle() FSFloaterObjectExport::FSFloaterObjectExport(const LLSD& key) : LLFloater(key), + mCurrentObjectID(NULL), mDirty(true) { } @@ -257,8 +258,16 @@ void FSFloaterObjectExport::onOpen(const LLSD& key) void FSFloaterObjectExport::updateSelection() { LLObjectSelectionHandle object_selection = LLSelectMgr::getInstance()->getSelection(); + LLSelectNode* node = object_selection->getFirstRootNode(); + + if (node && !node->mValid && node->getObject()->getID() == mCurrentObjectID) + { + return; + } + mObjectSelection = object_selection; dirty(); + refresh(); } bool FSFloaterObjectExport::exportSelection() @@ -1145,6 +1154,7 @@ void FSFloaterObjectExport::addSelectedObjects() LLSelectNode* node = mObjectSelection->getFirstRootNode(); if (node) { + mCurrentObjectID = node->getObject()->getID(); mObjectName = node->mName; for (LLObjectSelection::iterator iter = mObjectSelection->begin(); iter != mObjectSelection->end(); ++iter) { diff --git a/indra/newview/fsfloaterexport.h b/indra/newview/fsfloaterexport.h index 7a6935477e..4faceacb50 100644 --- a/indra/newview/fsfloaterexport.h +++ b/indra/newview/fsfloaterexport.h @@ -98,6 +98,7 @@ private: obj_info_t mObjects; std::string mFilename; LLSafeHandle mObjectSelection; + LLUUID mCurrentObjectID; S32 mTotal; S32 mIncluded;