Merge branch 'master' of https://github.com/highfidelity/hifi into avatarMixerLoopImprovements

Conflicts:
	assignment-client/src/avatars/AvatarMixer.cpp
This commit is contained in:
Brad Hefta-Gaub 2017-02-16 18:14:52 -08:00
commit 3a0c63cbc7
5 changed files with 21 additions and 30 deletions

View file

@ -61,7 +61,7 @@ void AudioMixerClientData::processPackets() {
_packetQueue.node.clear();
while (!_packetQueue.empty()) {
auto& packet = _packetQueue.back();
auto& packet = _packetQueue.front();
switch (packet->getType()) {
case PacketType::MicrophoneAudioNoEcho:

View file

@ -314,8 +314,6 @@ void AvatarMixer::broadcastAvatarData() {
++framesSinceCutoffEvent;
}
//avatarLoops();
_lastFrameTimestamp = p_high_resolution_clock::now();
#ifdef WANT_DEBUG
@ -403,6 +401,7 @@ void AvatarMixer::handleRequestsDomainListDataPacket(QSharedPointer<ReceivedMess
bool isRequesting;
message->readPrimitive(&isRequesting);
nodeData->setRequestsDomainListData(isRequesting);
qDebug() << "node" << nodeData->getNodeID() << "requestsDomainListData" << isRequesting;
}
}
auto end = usecTimestampNow();

View file

@ -333,7 +333,7 @@ void AvatarMixerSlave::broadcastAvatarData(const SharedNodePointer& node) {
bool isInView = nodeData->otherAvatarInView(otherNodeBox);
// this throttles the extra data to only be sent every Nth message
if (!isInView && getsOutOfView && (lastSeqToReceiver % EXTRA_AVATAR_DATA_FRAME_RATIO > 0)) {
if (!isInView && !getsOutOfView && (lastSeqToReceiver % EXTRA_AVATAR_DATA_FRAME_RATIO > 0)) {
quint64 endAvatarDataPacking = usecTimestampNow();
_stats.avatarDataPackingElapsedTime += (endAvatarDataPacking - startAvatarDataPacking);

View file

@ -360,7 +360,7 @@ Rectangle {
TextMetrics {
id: displayNameHeaderMetrics
text: displayNameHeader.title
font: displayNameHeader.font
// font: displayNameHeader.font // was this always undefined? giving error now...
}
// This Rectangle refers to the [?] popup button next to "NAMES"
Rectangle {
@ -426,7 +426,6 @@ Rectangle {
onExited: adminHelpText.color = hifi.colors.redHighlight
}
}
}
HifiControls.Keyboard {
id: keyboard
@ -438,6 +437,7 @@ Rectangle {
right: parent.right
}
}
}
// Timer used when selecting table rows that aren't yet present in the model
// (i.e. when selecting avatars using edit.js or sphere overlays)

View file

@ -290,17 +290,14 @@ function populateUserList(selectData) {
userName: '',
sessionId: id || '',
audioLevel: 0.0,
admin: false
admin: false,
personalMute: !!id && Users.getPersonalMuteStatus(id), // expects proper boolean, not null
ignore: !!id && Users.getIgnoreStatus(id) // ditto
};
// Request the username, fingerprint, and admin status from the given UUID
// Username and fingerprint returns default constructor output if the requesting user isn't an admin
Users.requestUsernameFromID(id);
// Request personal mute status and ignore status
// from NodeList (as long as we're not requesting it for our own ID)
if (id) {
avatarPalDatum['personalMute'] = Users.getPersonalMuteStatus(id);
avatarPalDatum['ignore'] = Users.getIgnoreStatus(id);
addAvatarNode(id); // No overlay for ourselves
// Everyone needs to see admin status. Username and fingerprint returns default constructor output if the requesting user isn't an admin.
Users.requestUsernameFromID(id);
}
data.push(avatarPalDatum);
print('PAL data:', JSON.stringify(avatarPalDatum));
@ -314,20 +311,13 @@ function populateUserList(selectData) {
// The function that handles the reply from the server
function usernameFromIDReply(id, username, machineFingerprint, isAdmin) {
var data;
// If the ID we've received is our ID...
if (MyAvatar.sessionUUID === id) {
// Set the data to contain specific strings.
data = ['', username, isAdmin];
} else if (Users.canKick) {
// Set the data to contain the ID and the username (if we have one)
// or fingerprint (if we don't have a username) string.
data = [id, username || machineFingerprint, isAdmin];
} else {
// Set the data to contain specific strings.
data = [id, '', isAdmin];
}
print('Username Data:', JSON.stringify(data));
var data = [
(MyAvatar.sessionUUID === id) ? '' : id, // Pal.qml recognizes empty id specially.
// If we get username (e.g., if in future we receive it when we're friends), use it.
// Otherwise, use valid machineFingerprint (which is not valid when not an admin).
username || (Users.canKick && machineFingerprint) || '',
isAdmin
];
// Ship the data off to QML
sendToQml({ method: 'updateUsername', params: data });
}
@ -339,13 +329,15 @@ function updateOverlays() {
if (!id) {
return; // don't update ourself
}
var avatar = AvatarList.getAvatar(id);
if (!avatar) {
return; // will be deleted below if there had been an overlay.
}
var overlay = ExtendedOverlay.get(id);
if (!overlay) { // For now, we're treating this as a temporary loss, as from the personal space bubble. Add it back.
print('Adding non-PAL avatar node', id);
overlay = addAvatarNode(id);
}
var avatar = AvatarList.getAvatar(id);
var target = avatar.position;
var distance = Vec3.distance(target, eye);
var offset = 0.2;