Remove use of new asset types to manage sounds source type

Add eBlacklistFlag instead in FSAssetBlacklist to manage sounds source type
master
Rohacan Hirons 2025-06-10 00:10:51 +02:00
parent c7e593c4ea
commit 5b1d898024
9 changed files with 137 additions and 89 deletions

View File

@ -131,13 +131,7 @@ public:
AT_GLTF = 58, // gltf json document
AT_GLTF_BIN = 59, // gltf binary data
// <FS> Asset types for sounds muting in Sounds Explorer window
AT_AVATAR_ATTACHED_SOUNDS = 60, // Black list avatar attached sounds
AT_AVATAR_REZZED_SOUNDS = 61, // Black list avatar rezzed sounds
AT_AVATAR_GESTURE_SOUNDS = 62, // Black list avatar gesture sounds
AT_COUNT = 63,
// </FS>
AT_COUNT = 60,
// +*********************************************************+
// | TO ADD AN ELEMENT TO THIS ENUM: |

View File

@ -162,12 +162,6 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
LLInventoryType::IT_MATERIAL, // 57 AT_MATERIAL
LLInventoryType::IT_GLTF, // 58 AT_GLTF
LLInventoryType::IT_GLTF_BIN, // 59 AT_GLTF_BIN
// <FS> Asset types for sounds muting in Sounds Explorer window
LLInventoryType::IT_NONE, // 60 AT_AVATAR_ATTACHED_SOUNDS
LLInventoryType::IT_NONE, // 61 AT_AVATAR_REZZED_SOUNDS
LLInventoryType::IT_NONE, // 62 AT_AVATAR_GESTURE_SOUNDS
// </FS>
};
// static

View File

@ -75,9 +75,9 @@ bool NACLFloaterExploreSounds::postBuild()
getChild<LLButton>("stop_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::handleStop, this));
getChild<LLButton>("bl_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistSound, this));
getChild<LLButton>("stop_locally_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::handleStopLocally, this));
getChild<LLButton>("block_avatar_attached_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarAttachedSounds, this));
getChild<LLButton>("block_avatar_rezzed_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarRezzedSounds, this));
getChild<LLButton>("block_avatar_gesture_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarGestureSounds, this));
getChild<LLButton>("block_avatar_attached_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagWorn, this));
getChild<LLButton>("block_avatar_rezzed_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagRezzed, this));
getChild<LLButton>("block_avatar_gesture_sounds_btn")->setClickedCallback(boost::bind(&NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagGesture, this));
mHistoryScroller = getChild<LLScrollListCtrl>("sound_list");
mHistoryScroller->setCommitCallback(boost::bind(&NACLFloaterExploreSounds::handleSelection, this));
@ -521,11 +521,11 @@ void NACLFloaterExploreSounds::onBlacklistAvatarNameCacheCallback(const LLUUID&
}
// add avatar attachments sounds to blacklist
void NACLFloaterExploreSounds::blacklistAvatarAttachedSounds()
void NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagWorn()
{
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
for (; selection_iter != selection_end; ++selection_iter)
{
@ -553,15 +553,12 @@ void NACLFloaterExploreSounds::blacklistAvatarAttachedSounds()
}
LLAvatarNameCache::callback_connection_t cb = LLAvatarNameCache::get(
item.mOwnerID,
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarAttachedSoundsNameCacheCallback, this, _1, _2, item.mOwnerID, region_name));
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagWornNameCacheCallback, this, _1, _2, item.mOwnerID, region_name));
mBlacklistAvatarNameCacheConnections.insert(std::make_pair(item.mOwnerID, cb));
}
}
void NACLFloaterExploreSounds::onBlacklistAvatarAttachedSoundsNameCacheCallback(const LLUUID& av_id,
const LLAvatarName& av_name,
const LLUUID& owner_id,
const std::string& region_name)
void NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagWornNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& owner_id, const std::string& region_name)
{
blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.find(av_id);
if (it != mBlacklistAvatarNameCacheConnections.end())
@ -572,15 +569,15 @@ void NACLFloaterExploreSounds::onBlacklistAvatarAttachedSoundsNameCacheCallback(
}
mBlacklistAvatarNameCacheConnections.erase(it);
}
FSAssetBlacklist::getInstance()->addNewItemToBlacklist(owner_id, av_name.getCompleteName(), region_name, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS);
FSAssetBlacklist::getInstance()->addNewAvatarSoundsByFlagToBlacklist(owner_id, av_name.getCompleteName(), region_name, FSAssetBlacklist::eBlacklistFlag::WORN);
}
// add avatar rezzed objects sounds to blacklist
void NACLFloaterExploreSounds::blacklistAvatarRezzedSounds()
void NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagRezzed()
{
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
for (; selection_iter != selection_end; ++selection_iter)
{
@ -606,22 +603,14 @@ void NACLFloaterExploreSounds::blacklistAvatarRezzedSounds()
}
mBlacklistAvatarNameCacheConnections.erase(it);
}
LLAvatarNameCache::callback_connection_t cb =
LLAvatarNameCache::get(item.mOwnerID,
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarRezzedSoundsNameCacheCallback,
this,
_1,
_2,
item.mOwnerID,
region_name));
LLAvatarNameCache::callback_connection_t cb = LLAvatarNameCache::get(
item.mOwnerID,
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagRezzedNameCacheCallback, this, _1, _2, item.mOwnerID, region_name));
mBlacklistAvatarNameCacheConnections.insert(std::make_pair(item.mOwnerID, cb));
}
}
void NACLFloaterExploreSounds::onBlacklistAvatarRezzedSoundsNameCacheCallback(const LLUUID& av_id,
const LLAvatarName& av_name,
const LLUUID& owner_id,
const std::string& region_name)
void NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagRezzedNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& owner_id, const std::string& region_name)
{
blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.find(av_id);
if (it != mBlacklistAvatarNameCacheConnections.end())
@ -632,15 +621,15 @@ void NACLFloaterExploreSounds::onBlacklistAvatarRezzedSoundsNameCacheCallback(co
}
mBlacklistAvatarNameCacheConnections.erase(it);
}
FSAssetBlacklist::getInstance()->addNewItemToBlacklist(owner_id, av_name.getCompleteName(), region_name, LLAssetType::AT_AVATAR_REZZED_SOUNDS);
FSAssetBlacklist::getInstance()->addNewAvatarSoundsByFlagToBlacklist(owner_id, av_name.getCompleteName(), region_name, FSAssetBlacklist::eBlacklistFlag::REZZED);
}
// add avatar gestures sounds to blacklist
void NACLFloaterExploreSounds::blacklistAvatarGestureSounds()
// add avatar attachments sounds to blacklist
void NACLFloaterExploreSounds::blacklistAvatarSoundsByFlagGesture()
{
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*> selection = mHistoryScroller->getAllSelected();
std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
std::vector<LLScrollListItem*>::iterator selection_end = selection.end();
for (; selection_iter != selection_end; ++selection_iter)
{
@ -666,22 +655,14 @@ void NACLFloaterExploreSounds::blacklistAvatarGestureSounds()
}
mBlacklistAvatarNameCacheConnections.erase(it);
}
LLAvatarNameCache::callback_connection_t cb =
LLAvatarNameCache::get(item.mOwnerID,
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarGestureSoundsNameCacheCallback,
this,
_1,
_2,
item.mOwnerID,
region_name));
LLAvatarNameCache::callback_connection_t cb = LLAvatarNameCache::get(
item.mOwnerID,
boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagGestureNameCacheCallback, this, _1, _2, item.mOwnerID, region_name));
mBlacklistAvatarNameCacheConnections.insert(std::make_pair(item.mOwnerID, cb));
}
}
void NACLFloaterExploreSounds::onBlacklistAvatarGestureSoundsNameCacheCallback(const LLUUID& av_id,
const LLAvatarName& av_name,
const LLUUID& owner_id,
const std::string& region_name)
void NACLFloaterExploreSounds::onBlacklistAvatarSoundsByFlagGestureNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& owner_id, const std::string& region_name)
{
blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.find(av_id);
if (it != mBlacklistAvatarNameCacheConnections.end())
@ -692,5 +673,5 @@ void NACLFloaterExploreSounds::onBlacklistAvatarGestureSoundsNameCacheCallback(c
}
mBlacklistAvatarNameCacheConnections.erase(it);
}
FSAssetBlacklist::getInstance()->addNewItemToBlacklist(owner_id, av_name.getCompleteName(), region_name, LLAssetType::AT_AVATAR_GESTURE_SOUNDS);
FSAssetBlacklist::getInstance()->addNewAvatarSoundsByFlagToBlacklist(owner_id, av_name.getCompleteName(), region_name, FSAssetBlacklist::eBlacklistFlag::GESTURE);
}

View File

@ -32,9 +32,9 @@ private:
void handleStopLocally();
void handleSelection();
void blacklistSound();
void blacklistAvatarAttachedSounds();
void blacklistAvatarRezzedSounds();
void blacklistAvatarGestureSounds();
void blacklistAvatarSoundsByFlagWorn();
void blacklistAvatarSoundsByFlagRezzed();
void blacklistAvatarSoundsByFlagGesture();
LLScrollListCtrl* mHistoryScroller;
LLCheckBoxCtrl* mCollisionSounds;
@ -51,9 +51,9 @@ private:
blacklist_avatar_name_cache_connection_map_t mBlacklistAvatarNameCacheConnections;
void onBlacklistAvatarNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarAttachedSoundsNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarRezzedSoundsNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarGestureSoundsNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarSoundsByFlagWornNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarSoundsByFlagRezzedNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
void onBlacklistAvatarSoundsByFlagGestureNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name);
};
#endif

View File

@ -60,15 +60,6 @@ LLAssetType::EType S32toAssetType(S32 assetindex)
case 45:
type = LLAssetType::AT_PERSON;
break;
case 60:
type = LLAssetType::AT_AVATAR_ATTACHED_SOUNDS;
break;
case 61:
type = LLAssetType::AT_AVATAR_REZZED_SOUNDS;
break;
case 62:
type = LLAssetType::AT_AVATAR_GESTURE_SOUNDS;
break;
default:
type = LLAssetType::AT_NONE;
}
@ -121,6 +112,53 @@ void FSAssetBlacklist::addNewItemToBlacklist(const LLUUID& id, const std::string
addNewItemToBlacklistData(id, data, save);
}
bool FSAssetBlacklist::isBlacklistedAvatarSoundsByFlag(const LLUUID& id, eBlacklistFlag flag)
{
if (mBlacklistData.empty())
{
return false;
}
auto it = mBlacklistData.find(id);
if (it == mBlacklistData.end())
{
return false;
}
const LLSD& data = it->second;
if (!data.has("asset_flag"))
{
return false;
}
eBlacklistFlag stored_source = static_cast<eBlacklistFlag>(data["asset_flag"].asInteger());
return stored_source == flag;
}
void FSAssetBlacklist::addNewAvatarSoundsByFlagToBlacklist(const LLUUID& id, const std::string& name, const std::string& region, eBlacklistFlag flag, bool permanent /*= true*/, bool save /*= true*/)
{
if (isBlacklistedAvatarSoundsByFlag(id, flag))
{
return;
}
LLDate curdate = LLDate((double)time_corrected());
std::string input_date = curdate.asString();
input_date.replace(input_date.find("T"), 1, " ");
input_date.resize(input_date.size() - 1);
LLSD data;
data["asset_name"] = name;
data["asset_region"] = region;
data["asset_type"] = LLAssetType::EType::AT_SOUND;
data["asset_flag"] = static_cast<S32> (flag);
data["asset_date"] = input_date;
data["asset_permanent"] = permanent;
addNewItemToBlacklistData(id, data, save);
}
bool FSAssetBlacklist::removeItem(const LLUUID& id)
{
gObjectList.removeDerenderedItem(id);

View File

@ -46,11 +46,20 @@ class FSAssetBlacklist : public LLSingleton<FSAssetBlacklist>
public:
void init();
bool isBlacklisted(const LLUUID& id, LLAssetType::EType type);
void addNewItemToBlacklist(const LLUUID& id, const std::string& name, const std::string& region, LLAssetType::EType type, bool permanent = true, bool save = true);
void addNewItemToBlacklist(const LLUUID& id, const std::string& name, const std::string& region, LLAssetType::EType type,bool permanent = true, bool save = true);
void addNewItemToBlacklistData(const LLUUID& id, const LLSD& data, bool save = true);
void removeItemFromBlacklist(const LLUUID& id);
void removeItemsFromBlacklist(const uuid_vec_t& ids);
void saveBlacklist();
enum class eBlacklistFlag
{
NONE = 0,
WORN,
REZZED,
GESTURE
};
bool isBlacklistedAvatarSoundsByFlag(const LLUUID& id, eBlacklistFlag source);
void addNewAvatarSoundsByFlagToBlacklist(const LLUUID& id, const std::string& name, const std::string& region, eBlacklistFlag source, bool permanent = true, bool save = true);
blacklist_data_t getBlacklistData() const { return mBlacklistData; };

View File

@ -90,31 +90,49 @@ void FSFloaterAssetBlacklist::onOpen(const LLSD& key)
buildBlacklist();
}
FSAssetBlacklist::eBlacklistFlag FSFloaterAssetBlacklist::getFlagFromLLSD(const LLSD& data)
{
if (data.has("asset_flag"))
{
return static_cast<FSAssetBlacklist::eBlacklistFlag>(data["asset_flag"].asInteger());
}
return FSAssetBlacklist::eBlacklistFlag::NONE;
}
std::string FSFloaterAssetBlacklist::getTypeString(S32 type)
{
switch (type)
{
case LLAssetType::AT_TEXTURE:
return getString("asset_texture");
case LLAssetType::AT_SOUND:
return getString("asset_sound");
case LLAssetType::AT_OBJECT:
return getString("asset_object");
case LLAssetType::AT_ANIMATION:
return getString("asset_animation");
case LLAssetType::AT_PERSON:
return getString("asset_resident");
case LLAssetType::AT_AVATAR_ATTACHED_SOUNDS:
return getString("asset_avatar_attached_sounds");
case LLAssetType::AT_AVATAR_REZZED_SOUNDS:
return getString("asset_avatar_rezzed_sounds");
case LLAssetType::AT_AVATAR_GESTURE_SOUNDS:
return getString("asset_avatar_gesture_sounds");
case LLAssetType::AT_SOUND:
return getString("asset_sound");
default:
return getString("asset_unknown");
}
}
std::string FSFloaterAssetBlacklist::getFlagString(FSAssetBlacklist::eBlacklistFlag flag)
{
switch (flag)
{
case FSAssetBlacklist::eBlacklistFlag::WORN:
return getString("asset_avatar_attached_sounds");
case FSAssetBlacklist::eBlacklistFlag::REZZED:
return getString("asset_avatar_rezzed_sounds");
case FSAssetBlacklist::eBlacklistFlag::GESTURE:
return getString("asset_avatar_gesture_sounds");
default:
return getString("asset_sound");
}
}
void FSFloaterAssetBlacklist::buildBlacklist()
{
bool needs_sort = mResultList->isSorted();
@ -141,6 +159,18 @@ void FSFloaterAssetBlacklist::addElementToList(const LLUUID& id, const LLSD& dat
substitution["datetime"] = date.secondsSinceEpoch();
LLStringUtil::format(date_str, substitution);
const S32 asset_type = data["asset_type"].asInteger();
const FSAssetBlacklist::eBlacklistFlag source = getFlagFromLLSD(data);
std::string type_label;
if (asset_type == LLAssetType::AT_SOUND)
{
type_label = getFlagString(source);
}
else
{
type_label = getTypeString(asset_type);
}
LLSD element;
element["id"] = id;
element["columns"][0]["column"] = "name";
@ -151,7 +181,7 @@ void FSFloaterAssetBlacklist::addElementToList(const LLUUID& id, const LLSD& dat
element["columns"][1]["value"] = !data["asset_region"].asString().empty() ? data["asset_region"].asString() : getString("unknown_region");
element["columns"][2]["column"] = "type";
element["columns"][2]["type"] = "text";
element["columns"][2]["value"] = getTypeString(data["asset_type"].asInteger());
element["columns"][2]["value"] = type_label;
element["columns"][3]["column"] = "date";
element["columns"][3]["type"] = "text";
element["columns"][3]["value"] = date_str;

View File

@ -65,6 +65,8 @@ protected:
void buildBlacklist();
std::string getTypeString(S32 type);
std::string getFlagString(FSAssetBlacklist::eBlacklistFlag source);
static FSAssetBlacklist::eBlacklistFlag getFlagFromLLSD(const LLSD& data);
LLUUID mAudioSourceID;

View File

@ -4717,7 +4717,7 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
// Gesture sound
if (object_id == owner_id) {
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_GESTURE_SOUNDS))
if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::GESTURE))
{
return;
}
@ -4728,13 +4728,13 @@ void process_sound_trigger(LLMessageSystem *msg, void **)
// Attachment sound
if (object && object->isAttachment())
{
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS))
if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::WORN))
{
return;
}
}
// Rezzed object sound
else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS))
else if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::REZZED))
{
return;
}
@ -4853,7 +4853,7 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
// Gesture sound
if (object_id == owner_id)
{
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_GESTURE_SOUNDS))
if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::GESTURE))
{
return;
}
@ -4861,13 +4861,13 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data)
// Attachment sound
else if (objectp && objectp->isAttachment())
{
if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_ATTACHED_SOUNDS))
if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::WORN))
{
return;
}
}
// Rezzed object sound
else if (FSAssetBlacklist::getInstance()->isBlacklisted(owner_id, LLAssetType::AT_AVATAR_REZZED_SOUNDS))
else if (FSAssetBlacklist::getInstance()->isBlacklistedAvatarSoundsByFlag(owner_id, FSAssetBlacklist::eBlacklistFlag::REZZED))
{
return;
}