diff --git a/src/lib/base/EventQueue.cpp b/src/lib/base/EventQueue.cpp index e1e4cab7e..d992e08fc 100644 --- a/src/lib/base/EventQueue.cpp +++ b/src/lib/base/EventQueue.cpp @@ -32,12 +32,11 @@ EventQueue::EventQueue() : m_readyMutex(new Mutex), m_readyCondVar(new CondVarnewMutex(); ARCH->setSignalHandler(Arch::kINTERRUPT, &interrupt, this); ARCH->setSignalHandler(Arch::kTERMINATE, &interrupt, this); - m_buffer = new SimpleEventQueueBuffer; + m_buffer = std::make_unique(); } EventQueue::~EventQueue() { - delete m_buffer; delete m_readyCondVar; delete m_readyMutex; @@ -84,7 +83,7 @@ void EventQueue::adoptBuffer(IEventQueueBuffer *buffer) } // discard old buffer and old events - delete m_buffer; + m_buffer.reset(); for (auto i = m_events.begin(); i != m_events.end(); ++i) { Event::deleteData(i->second); } @@ -92,9 +91,9 @@ void EventQueue::adoptBuffer(IEventQueueBuffer *buffer) m_oldEventIDs.clear(); // use new buffer - m_buffer = buffer; - if (m_buffer == nullptr) { - m_buffer = new SimpleEventQueueBuffer; + m_buffer.reset(buffer); + if (buffer == nullptr) { + m_buffer = std::make_unique(); } } diff --git a/src/lib/base/EventQueue.h b/src/lib/base/EventQueue.h index cd5abe249..d2015d61a 100644 --- a/src/lib/base/EventQueue.h +++ b/src/lib/base/EventQueue.h @@ -14,6 +14,7 @@ #include "mt/CondVar.h" #include +#include #include #include @@ -106,7 +107,7 @@ private: ArchMutex m_mutex; // buffer of events - IEventQueueBuffer *m_buffer = nullptr; + std::unique_ptr m_buffer; // saved events EventTable m_events;