diff options
| author | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-09-18 18:37:18 +0300 |
|---|---|---|
| committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-09-18 18:37:18 +0300 |
| commit | 89c48daf35ba1499100cdf81e07a91a75eea63c8 (patch) | |
| tree | 043bbc6ce0654e6443f042d07f4163e0d6a7a833 /indra/newview/llfloaterfixedenvironment.cpp | |
| parent | 6858f007c767ffb2c01d218f9e0288134a7f36c1 (diff) | |
SL-9678 EEP Sometimes not switching inventory based environments
Diffstat (limited to 'indra/newview/llfloaterfixedenvironment.cpp')
| -rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index 9831a5fa84..d65a578a6d 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -292,12 +292,30 @@ void LLFloaterFixedEnvironment::checkAndConfirmSettingsLoss(LLFloaterFixedEnviro void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id) { + mInventoryItem = NULL; + mInventoryId.setNull(); + if (!mInventoryFloater.isDead()) + { + LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get()); + if (picker) + { + mInventoryId = picker->findItemID(asset_id, false); + mInventoryItem = gInventory.getItem(mInventoryId); + } + } + LLSettingsVOBase::getSettingsAsset(asset_id, [this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); }); } void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) { + if (mInventoryItem && mInventoryItem->getAssetUUID() != asset_id) + { + LL_WARNS("ENVIRONMENT") << "Discarding obsolete asset callback" << LL_ENDL; + return; + } + if (!settings || status) { LLSD args; |
