mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-12-16 16:03:25 -05:00
45 lines
1019 B
C++
45 lines
1019 B
C++
#include "SDRThreadQueue.h"
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif
|
|
|
|
SDRThreadQueue::SDRThreadQueue(wxEvtHandler* pParent) :
|
|
m_pParent(pParent) {
|
|
}
|
|
|
|
void SDRThreadQueue::addTask(const SDRThreadTask& task, const SDR_PRIORITY& priority) {
|
|
wxMutexLocker lock(m_MutexQueue);
|
|
m_Tasks.insert(std::make_pair(priority, task));
|
|
m_QueueCount.Post();
|
|
}
|
|
|
|
SDRThreadTask SDRThreadQueue::pop() {
|
|
SDRThreadTask element;
|
|
m_QueueCount.Wait();
|
|
m_MutexQueue.Lock();
|
|
element = (m_Tasks.begin())->second;
|
|
m_Tasks.erase(m_Tasks.begin());
|
|
m_MutexQueue.Unlock();
|
|
return element;
|
|
}
|
|
|
|
void SDRThreadQueue::sendIQData(const SDRThreadTask::SDR_COMMAND& cmd, SDRThreadIQData *data) {
|
|
wxCommandEvent evt(wxEVT_THREAD, cmd);
|
|
|
|
evt.SetClientData(data);
|
|
|
|
m_pParent->AddPendingEvent(evt);
|
|
}
|
|
|
|
size_t SDRThreadQueue::stackSize() {
|
|
wxMutexLocker lock(m_MutexQueue);
|
|
return m_Tasks.size();
|
|
}
|
|
|
|
wxEvtHandler* SDRThreadQueue::getHandler() {
|
|
return m_pParent;
|
|
}
|