Add check to determine if sound-emitting object is an attachment. Previously, checking if object_id == owner_id was only valid for gestures.

Fix removeItem to fully delete asset ID from all blacklist types
master
Rohacan Hirons 2025-06-09 04:28:03 +02:00
parent f85c085f5f
commit a620722087
2 changed files with 30 additions and 8 deletions

View File

@ -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();

View File

@ -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;
}
}
// </FS>
@ -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;
// </FS:ND>
LLViewerObject *objectp = gObjectList.findObject(object_id);
if (!objectp) return;
if (LLMuteList::getInstance()->isMuted(object_id)) return;