diff options
Diffstat (limited to 'src/uscxml/concurrency/DelayedEventQueue.cpp')
-rw-r--r-- | src/uscxml/concurrency/DelayedEventQueue.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/uscxml/concurrency/DelayedEventQueue.cpp b/src/uscxml/concurrency/DelayedEventQueue.cpp index 642c4a0..ca43c8e 100644 --- a/src/uscxml/concurrency/DelayedEventQueue.cpp +++ b/src/uscxml/concurrency/DelayedEventQueue.cpp @@ -99,6 +99,15 @@ void DelayedEventQueue::addEvent(std::string eventId, void (*callback)(void*, co event_add(event, &delay); } +void DelayedEventQueue::cancelAllEvents() { + tthread::lock_guard<tthread::recursive_mutex> lock(_mutex); + while(_callbackData.size() > 0) { + event_del(_callbackData[_callbackData.begin()->first].event); + event_free(_callbackData[_callbackData.begin()->first].event); + _callbackData.erase(_callbackData.begin()); + } +} + void DelayedEventQueue::cancelEvent(std::string eventId) { tthread::lock_guard<tthread::recursive_mutex> lock(_mutex); @@ -122,6 +131,7 @@ void DelayedEventQueue::stop() { if (_thread) { _thread->join(); delete _thread; + _thread = NULL; } } |