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; return false;
} }
// Erase for each possible type
for (auto& [type, container] : mBlacklistTypeContainer)
{
container.erase(id);
}
// Supprime les métadonnées
LLSD data = it->second; LLSD data = it->second;
LLAssetType::EType type = S32toAssetType(data["asset_type"].asInteger());
mBlacklistTypeContainer[type].erase(id);
mBlacklistData.erase(it); mBlacklistData.erase(it);
return data["asset_permanent"].asBoolean(); return data["asset_permanent"].asBoolean();

View File

@ -4715,16 +4715,27 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
return; return;
} }
if (object_id == owner_id)
{ if (object_id == owner_id) {
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS))
{ {
return; 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> // </FS>
@ -4836,6 +4847,7 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
{ {
return; return;
} }
LLViewerObject* objectp = gObjectList.findObject(object_id);
if (object_id == owner_id) if (object_id == owner_id)
{ {
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS)) 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; 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)) else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS))
{ {
return; return;
@ -4863,7 +4882,6 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
return; return;
// </FS:ND> // </FS:ND>
LLViewerObject *objectp = gObjectList.findObject(object_id);
if (!objectp) return; if (!objectp) return;
if (LLMuteList::getInstance()->isMuted(object_id)) return; if (LLMuteList::getInstance()->isMuted(object_id)) return;