From a0c7a7ecdc7b9fb53fa1175babf0d8497a3e9112 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Thu, 3 Nov 2022 13:18:14 +0200 Subject: SL-18548 fix for crash when trying to Save material without caps --- indra/newview/llmaterialeditor.cpp | 19 +++++++++++++++++++ indra/newview/llmaterialeditor.h | 2 ++ indra/newview/skins/default/xui/en/notifications.xml | 8 ++++++++ 3 files changed, 29 insertions(+) diff --git a/indra/newview/llmaterialeditor.cpp b/indra/newview/llmaterialeditor.cpp index 00105c1e8f..397a302069 100644 --- a/indra/newview/llmaterialeditor.cpp +++ b/indra/newview/llmaterialeditor.cpp @@ -883,6 +883,11 @@ static U32 write_texture(const LLUUID& id, tinygltf::Model& model) void LLMaterialEditor::onClickSave() { + if (!capabilitiesAvalaible()) + { + LLNotificationsUtil::add("MissingMaterialCaps"); + return; + } if (!can_afford_transaction(mExpectedUploadCost)) { LLSD args; @@ -2809,3 +2814,17 @@ void LLMaterialEditor::loadDefaults() setFromGltfModel(model_in, 0, true); } +bool LLMaterialEditor::capabilitiesAvalaible() +{ + const LLViewerRegion* region = gAgent.getRegion(); + if (!region) + { + LL_WARNS("MaterialEditor") << "Not connected to a region, cannot save material." << LL_ENDL; + return false; + } + std::string agent_url = region->getCapability("UpdateMaterialAgentInventory"); + std::string task_url = region->getCapability("UpdateMaterialTaskInventory"); + + return (!agent_url.empty() && !task_url.empty()); +} + diff --git a/indra/newview/llmaterialeditor.h b/indra/newview/llmaterialeditor.h index 1fb10dbcf1..8f0c16881b 100644 --- a/indra/newview/llmaterialeditor.h +++ b/indra/newview/llmaterialeditor.h @@ -228,6 +228,8 @@ public: U32 getUnsavedChangesFlags() { return mUnsavedChanges; } + bool capabilitiesAvalaible(); + private: static bool updateInventoryItem(const std::string &buffer, const LLUUID &item_id, const LLUUID &task_id); static void createInventoryItem(const std::string &buffer, const std::string &name, const std::string &desc); diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 07ad2838b0..1dc979fda6 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -6856,6 +6856,14 @@ Please try again. fail + + fail + Not connected to a materials capable region. + +