Reset: clean event-manager shutdown
This commit is contained in:
@@ -54,6 +54,12 @@ void SGEventMgr::unbind()
|
|||||||
_rtProp.clear();
|
_rtProp.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SGEventMgr::shutdown()
|
||||||
|
{
|
||||||
|
_simQueue.clear();
|
||||||
|
_rtQueue.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void SGEventMgr::update(double delta_time_sec)
|
void SGEventMgr::update(double delta_time_sec)
|
||||||
{
|
{
|
||||||
_simQueue.update(delta_time_sec);
|
_simQueue.update(delta_time_sec);
|
||||||
@@ -97,7 +103,7 @@ SGTimerQueue::SGTimerQueue(int size)
|
|||||||
|
|
||||||
_table = new HeapEntry[_tableSize];
|
_table = new HeapEntry[_tableSize];
|
||||||
for(int i=0; i<_tableSize; i++) {
|
for(int i=0; i<_tableSize; i++) {
|
||||||
_table[i].pri = 0;
|
_table[i].pri = 0;
|
||||||
_table[i].timer = 0;
|
_table[i].timer = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,14 +111,24 @@ SGTimerQueue::SGTimerQueue(int size)
|
|||||||
|
|
||||||
SGTimerQueue::~SGTimerQueue()
|
SGTimerQueue::~SGTimerQueue()
|
||||||
{
|
{
|
||||||
|
clear();
|
||||||
|
delete[] _table;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SGTimerQueue::clear()
|
||||||
|
{
|
||||||
|
// delete entries
|
||||||
for(int i=0; i<_numEntries; i++) {
|
for(int i=0; i<_numEntries; i++) {
|
||||||
delete _table[i].timer;
|
delete _table[i].timer;
|
||||||
|
}
|
||||||
|
|
||||||
|
_numEntries = 0;
|
||||||
|
|
||||||
|
// clear entire table to empty
|
||||||
|
for(int i=0; i<_tableSize; i++) {
|
||||||
|
_table[i].pri = 0;
|
||||||
_table[i].timer = 0;
|
_table[i].timer = 0;
|
||||||
}
|
}
|
||||||
_numEntries = 0;
|
|
||||||
delete[] _table;
|
|
||||||
_table = 0;
|
|
||||||
_tableSize = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SGTimerQueue::update(double deltaSecs)
|
void SGTimerQueue::update(double deltaSecs)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public:
|
|||||||
SGTimerQueue(int preSize=1);
|
SGTimerQueue(int preSize=1);
|
||||||
~SGTimerQueue();
|
~SGTimerQueue();
|
||||||
|
|
||||||
|
void clear();
|
||||||
void update(double deltaSecs);
|
void update(double deltaSecs);
|
||||||
|
|
||||||
double now() { return _now; }
|
double now() { return _now; }
|
||||||
@@ -74,6 +75,7 @@ public:
|
|||||||
virtual void init() {}
|
virtual void init() {}
|
||||||
virtual void update(double delta_time_sec);
|
virtual void update(double delta_time_sec);
|
||||||
virtual void unbind();
|
virtual void unbind();
|
||||||
|
virtual void shutdown();
|
||||||
|
|
||||||
void setRealtimeProperty(SGPropertyNode* node) { _rtProp = node; }
|
void setRealtimeProperty(SGPropertyNode* node) { _rtProp = node; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user