1
0
Fork 0
spectre/source/System/MessageQueue.cpp

52 lines
876 B
C++

#include <Spectre/System/MessageQueue.h>
#ifdef _WIN32
#include <Platform/Win32/Win32EventQueue.h>
typedef sp::Win32EventQueue ImplType;
#elif defined(__linux__) || defined(unix) || defined(__unix) || defined(__unix__)
#include <Platform/Unix/X11EventQueue.h>
typedef sp::X11EventQueue ImplType;
#else
#error "No MessageQueue implementation exists"
#endif
namespace sp {
MessageQueue::MessageQueue()
{
m_impl = new ImplType();
}
MessageQueue::~MessageQueue()
{
delete m_impl;
}
void MessageQueue::postEvent(Event event)
{
m_queue.push_back(event);
}
bool MessageQueue::pollEvent(Event& event)
{
// Process platform events first.
if (m_impl->poll(event)) {
return true;
}
if (!isEmpty()) {
event = m_queue.front();
m_queue.pop_front();
return true;
}
return false;
}
bool MessageQueue::isEmpty() const
{
return m_queue.empty();
}
} // namespace sp