From 6601a0d4e96140cd6868294f5696560eb35d443d Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 31 Mar 2014 14:54:39 -0700 Subject: [PATCH] cleaning up nodeKilled() --- .../src/octree/OctreeQueryNode.cpp | 21 ++++++++++++++++++- .../src/octree/OctreeQueryNode.h | 1 + assignment-client/src/octree/OctreeServer.cpp | 8 +++---- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/assignment-client/src/octree/OctreeQueryNode.cpp b/assignment-client/src/octree/OctreeQueryNode.cpp index 20a8d5ce4c..57de87c45d 100644 --- a/assignment-client/src/octree/OctreeQueryNode.cpp +++ b/assignment-client/src/octree/OctreeQueryNode.cpp @@ -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... diff --git a/assignment-client/src/octree/OctreeQueryNode.h b/assignment-client/src/octree/OctreeQueryNode.h index fd8d338663..c08bdcb2bf 100644 --- a/assignment-client/src/octree/OctreeQueryNode.h +++ b/assignment-client/src/octree/OctreeQueryNode.h @@ -94,6 +94,7 @@ public: unsigned int getlastOctreePacketLength() const { return _lastOctreePacketLength; } int getDuplicatePacketCount() const { return _duplicatePacketCount; } + void nodeKilled(); bool isShuttingDown() const { return _isShuttingDown; } private: diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index 3134b577ae..6499a2f4a4 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -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(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; }