cleaning up nodeKilled()

This commit is contained in:
ZappoMan 2014-03-31 14:54:39 -07:00
parent 6df3ff57c4
commit 6601a0d4e9
3 changed files with 24 additions and 6 deletions

View file

@ -44,7 +44,7 @@ OctreeQueryNode::OctreeQueryNode() :
OctreeQueryNode::~OctreeQueryNode() {
_isShuttingDown = true;
const bool extraDebugging = false;
const bool extraDebugging = true;
if (extraDebugging) {
qDebug() << "OctreeQueryNode::~OctreeQueryNode()";
}
@ -75,6 +75,25 @@ void OctreeQueryNode::deleteLater() {
OctreeQuery::deleteLater();
}
void OctreeQueryNode::nodeKilled() {
_isShuttingDown = true;
const bool extraDebugging = true;
if (extraDebugging) {
qDebug() << "OctreeQueryNode::nodeKilled()";
}
if (_octreeSendThread) {
if (extraDebugging) {
qDebug() << "OctreeQueryNode::nodeKilled()... calling _octreeSendThread->terminate()";
}
_octreeSendThread->terminate();
if (extraDebugging) {
qDebug() << "OctreeQueryNode::nodeKilled()... calling delete _octreeSendThread";
}
delete _octreeSendThread;
_octreeSendThread = NULL;
}
}
void OctreeQueryNode::initializeOctreeSendThread(const SharedAssignmentPointer& myAssignment, const SharedNodePointer& node) {
// Create octree sending thread...

View file

@ -94,6 +94,7 @@ public:
unsigned int getlastOctreePacketLength() const { return _lastOctreePacketLength; }
int getDuplicatePacketCount() const { return _duplicatePacketCount; }
void nodeKilled();
bool isShuttingDown() const { return _isShuttingDown; }
private:

View file

@ -21,7 +21,7 @@
#include "OctreeServer.h"
#include "OctreeServerConsts.h"
OctreeServer* OctreeServer::_instance;
OctreeServer* OctreeServer::_instance = NULL;
int OctreeServer::_clientCount = 0;
const int MOVING_AVERAGE_SAMPLE_COUNTS = 1000000;
@ -1064,10 +1064,8 @@ void OctreeServer::nodeKilled(SharedNodePointer node) {
qDebug() << qPrintable(_safeServerName) << "server killed node:" << *node;
OctreeQueryNode* nodeData = static_cast<OctreeQueryNode*>(node->getLinkedData());
if (nodeData) {
qDebug() << qPrintable(_safeServerName) << "server resetting Linked Data for node:" << *node;
node->setLinkedData(NULL); // set this first in case another thread comes through and tryes to acces this
qDebug() << qPrintable(_safeServerName) << "server deleting Linked Data for node:" << *node;
nodeData->deleteLater();
qDebug() << qPrintable(_safeServerName) << "server calling nodeData->nodeKilled() for node:" << *node;
nodeData->nodeKilled(); // tell our node data and sending threads that we'd like to shut down
} else {
qDebug() << qPrintable(_safeServerName) << "server node missing linked data node:" << *node;
}