use virtual deleteOrDeleteLater in NodeData to handle AvatarVoxelSystem

This commit is contained in:
Stephen Birarda 2013-11-07 15:41:10 -08:00
parent ce52395a08
commit 5889d4122f
5 changed files with 14 additions and 9 deletions

View file

@ -255,6 +255,11 @@ Avatar::~Avatar() {
delete _balls;
}
void Avatar::deleteOrDeleteLater() {
this->deleteLater();
}
void Avatar::init() {
_head.init();
_hand.init();

View file

@ -134,6 +134,7 @@ public:
Avatar(Node* owningNode = NULL);
~Avatar();
void deleteOrDeleteLater();
void init();
void simulate(float deltaTime, Transmitter* transmitter);

View file

@ -21,7 +21,6 @@
#include "SharedUtil.h"
#include "UDPSocket.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
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;

View file

@ -16,4 +16,8 @@ NodeData::NodeData(Node* owningNode) :
NodeData::~NodeData() {
}
void NodeData::deleteOrDeleteLater() {
delete this;
}

View file

@ -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;