diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 31e1ee43fb..2359ea2460 100755 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -255,6 +255,11 @@ Avatar::~Avatar() { delete _balls; } +void Avatar::deleteOrDeleteLater() { + this->deleteLater(); +} + + void Avatar::init() { _head.init(); _hand.init(); diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index b3c373009f..4258ce6f14 100755 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -134,6 +134,7 @@ public: Avatar(Node* owningNode = NULL); ~Avatar(); + void deleteOrDeleteLater(); void init(); void simulate(float deltaTime, Transmitter* transmitter); diff --git a/libraries/shared/src/Node.cpp b/libraries/shared/src/Node.cpp index dcdc0eacca..d4bd8a084a 100644 --- a/libraries/shared/src/Node.cpp +++ b/libraries/shared/src/Node.cpp @@ -21,7 +21,6 @@ #include "SharedUtil.h" #include "UDPSocket.h" -#include #include Node::Node(const QUuid& uuid, char type, sockaddr* publicSocket, sockaddr* localSocket) : @@ -44,14 +43,8 @@ Node::~Node() { delete _publicSocket; delete _localSocket; - if (QCoreApplication::instance()) { - // even if we have a QCoreApplication instance we don't get here unless it's been exec'ed - // which is only currently the case for interface - if (_linkedData) { - _linkedData->deleteLater(); - } - } else { - delete _linkedData; + if (_linkedData) { + _linkedData->deleteOrDeleteLater(); } delete _bytesReceivedMovingAverage; diff --git a/libraries/shared/src/NodeData.cpp b/libraries/shared/src/NodeData.cpp index 45e8357d4f..6ab7f2242b 100644 --- a/libraries/shared/src/NodeData.cpp +++ b/libraries/shared/src/NodeData.cpp @@ -16,4 +16,8 @@ NodeData::NodeData(Node* owningNode) : NodeData::~NodeData() { +} + +void NodeData::deleteOrDeleteLater() { + delete this; } \ No newline at end of file diff --git a/libraries/shared/src/NodeData.h b/libraries/shared/src/NodeData.h index e92656f977..0a2ba3b514 100644 --- a/libraries/shared/src/NodeData.h +++ b/libraries/shared/src/NodeData.h @@ -21,6 +21,8 @@ public: virtual ~NodeData() = 0; virtual int parseData(unsigned char* sourceBuffer, int numBytes) = 0; + virtual void deleteOrDeleteLater(); + Node* getOwningNode() { return _owningNode; } protected: Node* _owningNode;