diff --git a/interface/resources/qml/hifi/NameCard.qml b/interface/resources/qml/hifi/NameCard.qml index eab9965141..846f1bec3c 100644 --- a/interface/resources/qml/hifi/NameCard.qml +++ b/interface/resources/qml/hifi/NameCard.qml @@ -345,7 +345,7 @@ Item { anchors.verticalCenter: nameCardVUMeter.verticalCenter // Properties visible: !isMyCard && selected - value: pal.gainSliderValueDB[uuid] ? pal.gainSliderValueDB[uuid] : Users.getAvatarGain(uuid) + value: Users.getAvatarGain(uuid) minimumValue: -60.0 maximumValue: 20.0 stepSize: 5 @@ -393,14 +393,9 @@ Item { } function updateGainFromQML(avatarUuid, sliderValue, isReleased) { - if (isReleased || pal.gainSliderValueDB[avatarUuid] !== sliderValue) { - pal.gainSliderValueDB[avatarUuid] = sliderValue; - var data = { - sessionId: avatarUuid, - gain: sliderValue, - isReleased: isReleased - }; - pal.sendToScript({method: 'updateGain', params: data}); + Users.setAvatarGain(avatarUuid, sliderValue); + if (isReleased) { + UserActivityLogger.palAction("avatar_gain_changed", avatarUuid); } } } diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index a613af9593..7ff4e8a4b1 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -37,9 +37,6 @@ Rectangle { property var ignored: ({}); // Keep a local list of ignored avatars & their data. Necessary because HashMap is slow to respond after ignoring. property var userModelData: [] // This simple list is essentially a mirror of the userModel listModel without all the extra complexities. property bool iAmAdmin: false - // Keep a local list of per-avatar gainSliderValueDBs. Far faster than fetching this data from the server. - // NOTE: if another script modifies the per-avatar gain, this value won't be accurate! - property var gainSliderValueDB: ({}); HifiConstants { id: hifi } @@ -556,7 +553,6 @@ Rectangle { break; case 'clearLocalQMLData': ignored = {}; - gainSliderValueDB = {}; break; case 'avatarDisconnected': var sessionID = message.params[0]; diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 7bd6800921..7147682d48 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -252,6 +252,11 @@ void NodeList::reset() { _personalMutedNodeIDs.clear(); _personalMutedSetLock.unlock(); + // lock and clear out set of avatarGains + _avatarGainMapLock.lockForWrite(); + _avatarGainMap.clear(); + _avatarGainMapLock.unlock(); + // refresh the owner UUID to the NULL UUID setSessionUUID(QUuid()); diff --git a/scripts/system/pal.js b/scripts/system/pal.js index 9df4b2df92..106f226a33 100644 --- a/scripts/system/pal.js +++ b/scripts/system/pal.js @@ -245,18 +245,6 @@ function fromQml(message) { // messages are {method, params}, like json-rpc. See populateUserList(message.params.selected); UserActivityLogger.palAction("refresh", ""); break; - case 'updateGain': - data = message.params; - if (data['isReleased']) { - // isReleased=true happens once at the end of a cycle of dragging - // the slider about, but with same gain as last isReleased=false so - // we don't set the gain in that case, and only here do we want to - // send an analytic event. - UserActivityLogger.palAction("avatar_gain_changed", data['sessionId']); - } else { - Users.setAvatarGain(data['sessionId'], data['gain']); - } - break; case 'displayNameUpdate': if (MyAvatar.displayName !== message.params) { MyAvatar.displayName = message.params;