diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index aac3cc2e2c..a03556a56e 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -346,15 +346,18 @@ Item { } break; case 'updateAudioLevel': - var userId = message.params[0]; - var audioLevel = message.params[1]; - if (!userId) { - myData.audioLevel = audioLevel; - myCard.audioLevel = audioLevel; - } else { - var userIndex = findSessionIndex(userId); - userModel.get(userIndex).audioLevel = audioLevel; - userData[userIndex].audioLevel = audioLevel; + for (var userId in message.params) { + var audioLevel = message.params[userId]; + // If the userId is 0, we're updating "myData". + if (userId == 0) { + myData.audioLevel = audioLevel; + myCard.audioLevel = audioLevel; // Defensive programming + } else { + console.log("userid:" + userId); + var userIndex = findSessionIndex(userId); + userModel.get(userIndex).audioLevel = audioLevel; + userData[userIndex].audioLevel = audioLevel; // Defensive programming + } } break; default: diff --git a/scripts/system/pal.js b/scripts/system/pal.js index 14b3f483da..a19c6a8c29 100644 --- a/scripts/system/pal.js +++ b/scripts/system/pal.js @@ -120,7 +120,7 @@ function populateUserList() { displayName: avatar.sessionDisplayName, userName: '', sessionId: id || '', - audioLevel: getAudioLevel(id) + audioLevel: 0.0 }; // If the current user is an admin OR // they're requesting their own username ("id" is blank)... @@ -300,10 +300,14 @@ function getAudioLevel(id) { // TODO: tune for efficiency - expecially with large numbers of avatars Script.setInterval(function () { if (pal.visible) { + var param = {}; AvatarList.getAvatarIdentifiers().sort().forEach(function (id) { var level = getAudioLevel(id); - pal.sendToQml({method: 'updateAudioLevel', params: [id, level]}); + // qml didn't like an object with null/empty string for a key, so... + var userId = id || 0; + param[userId]= level; }); + pal.sendToQml({method: 'updateAudioLevel', params: param}); } }, AUDIO_LEVEL_UPDATE_INTERVAL_MS); //