diff --git a/indra/newview/fsassetblacklist.cpp b/indra/newview/fsassetblacklist.cpp index 6656286505..a78a816c0e 100644 --- a/indra/newview/fsassetblacklist.cpp +++ b/indra/newview/fsassetblacklist.cpp @@ -128,11 +128,15 @@ bool FSAssetBlacklist::removeItem(const LLUUID& id) { return false; } + + // Erase for each possible type + for (auto& [type, container] : mBlacklistTypeContainer) + { + container.erase(id); + } + // Supprime les métadonnées LLSD data = it->second; - LLAssetType::EType type = S32toAssetType(data["asset_type"].asInteger()); - - mBlacklistTypeContainer[type].erase(id); mBlacklistData.erase(it); return data["asset_permanent"].asBoolean(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index d16dc3ce6d..d483d8cc65 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4715,16 +4715,27 @@ void process_sound_trigger(LLMessageSystem *msg, void **) return; } - if (object_id == owner_id) - { + + if (object_id == owner_id) { if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) { return; } } - else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS)) + else { - return; + LLViewerObject* object = gObjectList.findObject(object_id); + if (object && object->isAttachment()) + { + if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) + { + return; + } + } + else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS)) + { + return; + } } // @@ -4836,6 +4847,7 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) { return; } + LLViewerObject* objectp = gObjectList.findObject(object_id); if (object_id == owner_id) { if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) @@ -4843,6 +4855,13 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) return; } } + else if (objectp && objectp->isAttachment()) + { + if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) + { + return; + } + } else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS)) { return; @@ -4863,7 +4882,6 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) return; // - LLViewerObject *objectp = gObjectList.findObject(object_id); if (!objectp) return; if (LLMuteList::getInstance()->isMuted(object_id)) return;