From 0b52b8266ee4b846e3abcbafa50b58e41a0f1067 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jan 2014 12:44:46 -0800 Subject: [PATCH 1/2] don't return an iterator from killNodeAtHashIterator --- libraries/shared/src/NodeList.cpp | 14 +++++++++----- libraries/shared/src/NodeList.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 2cfa490e44..b90367123e 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -274,7 +274,9 @@ void NodeList::clear() { // iterate the nodes in the list while (nodeItem != _nodeHash.end()) { - nodeItem = killNodeAtHashIterator(nodeItem); + NodeHash::iterator previousNodeItem = nodeItem; + ++nodeItem; + killNodeAtHashIterator(previousNodeItem); } } @@ -440,14 +442,13 @@ void NodeList::killNodeWithUUID(const QUuid& nodeUUID) { } } -NodeHash::iterator NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) { +void NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) { qDebug() << "Killed" << *nodeItemToKill.value(); emit nodeKilled(nodeItemToKill.value()); - return _nodeHash.erase(nodeItemToKill); + _nodeHash.erase(nodeItemToKill); } - void NodeList::sendKillNode(const char* nodeTypes, int numNodeTypes) { unsigned char packet[MAX_PACKET_SIZE]; unsigned char* packetPosition = packet; @@ -790,7 +791,10 @@ void NodeList::removeSilentNodes() { if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) { // call our private method to kill this node (removes it and emits the right signal) - nodeItem = killNodeAtHashIterator(nodeItem); + NodeHash::iterator previousNodeItem = nodeItem; + ++nodeItem; + + killNodeAtHashIterator(previousNodeItem); } else { // we didn't kill this node, push the iterator forwards ++nodeItem; diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index 8e8555a98f..d128eb94df 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -137,7 +137,7 @@ private: void processKillNode(unsigned char* packetData, size_t dataBytes); - NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill); + void killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill); NodeHash _nodeHash; QString _domainHostname; From 1912ed0d9eb213b968300bc5b9d638f35e96d2c2 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jan 2014 13:14:13 -0800 Subject: [PATCH 2/2] have the Agent ask for an audio-mixer for audio scripting --- assignment-client/src/Agent.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 6b5a4923f8..ca89d3998f 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -55,7 +55,8 @@ void Agent::run() { // XXXBHG - this seems less than ideal. There might be classes (like jurisdiction listeners, that need access to // other node types, but for them to get access to those node types, we have to add them here. It seems like // NodeList should support adding types of interest - const NODE_TYPE AGENT_NODE_TYPES_OF_INTEREST[] = { NODE_TYPE_VOXEL_SERVER, NODE_TYPE_PARTICLE_SERVER }; + const NODE_TYPE AGENT_NODE_TYPES_OF_INTEREST[] = { NODE_TYPE_VOXEL_SERVER, NODE_TYPE_PARTICLE_SERVER, + NODE_TYPE_AUDIO_MIXER }; nodeList->setNodeTypesOfInterest(AGENT_NODE_TYPES_OF_INTEREST, sizeof(AGENT_NODE_TYPES_OF_INTEREST));