refactor: Make IEventQueueBuffer Types an enum class, use proper names rename kNone => Unknown to reflect its unknowns an unknown type of event
This commit is contained in:
parent
fc58688bb0
commit
c12aa4c6e9
7 changed files with 26 additions and 24 deletions
|
|
@ -126,7 +126,8 @@ bool EventQueue::processEvent(Event &event, double timeout, Stopwatch &timer)
|
||||||
uint32_t dataID;
|
uint32_t dataID;
|
||||||
IEventQueueBuffer::Type type = m_buffer->getEvent(event, dataID);
|
IEventQueueBuffer::Type type = m_buffer->getEvent(event, dataID);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IEventQueueBuffer::kNone:
|
using enum IEventQueueBuffer::Type;
|
||||||
|
case Unknown:
|
||||||
if (timeout < 0.0 || timeout <= timer.getTime()) {
|
if (timeout < 0.0 || timeout <= timer.getTime()) {
|
||||||
// don't want to fail if client isn't expecting that
|
// don't want to fail if client isn't expecting that
|
||||||
// so if getEvent() fails with an infinite timeout
|
// so if getEvent() fails with an infinite timeout
|
||||||
|
|
@ -135,10 +136,10 @@ bool EventQueue::processEvent(Event &event, double timeout, Stopwatch &timer)
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case IEventQueueBuffer::kSystem:
|
case System:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case IEventQueueBuffer::kUser: {
|
case User: {
|
||||||
std::scoped_lock lock{m_mutex};
|
std::scoped_lock lock{m_mutex};
|
||||||
event = removeEvent(dataID);
|
event = removeEvent(dataID);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,11 @@ An event queue buffer provides a queue of events for an IEventQueue.
|
||||||
class IEventQueueBuffer : public IInterface
|
class IEventQueueBuffer : public IInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum Type
|
enum class Type : uint8_t
|
||||||
{
|
{
|
||||||
kNone, //!< No event is available
|
Unknown, //!< No event is available
|
||||||
kSystem, //!< Event is a system event
|
System, //!< Event is a system event
|
||||||
kUser //!< Event is a user event
|
User //!< Event is a user event
|
||||||
};
|
};
|
||||||
|
|
||||||
//! @name manipulators
|
//! @name manipulators
|
||||||
|
|
@ -45,11 +45,11 @@ public:
|
||||||
|
|
||||||
//! Get the next event
|
//! Get the next event
|
||||||
/*!
|
/*!
|
||||||
Get the next event from the buffer. Return kNone if no event is
|
Get the next event from the buffer. Return None if no event is
|
||||||
available. If a system event is next, return kSystem and fill in
|
available. If a system event is next, return System and fill in
|
||||||
event. The event data in a system event can point to a static
|
event. The event data in a system event can point to a static
|
||||||
buffer (because Event::deleteData() will not attempt to delete
|
buffer (because Event::deleteData() will not attempt to delete
|
||||||
data in a kSystem event). Otherwise, return kUser and fill in
|
data in a System event). Otherwise, return User and fill in
|
||||||
\p dataID with the value passed to \c addEvent().
|
\p dataID with the value passed to \c addEvent().
|
||||||
*/
|
*/
|
||||||
virtual Type getEvent(Event &event, uint32_t &dataID) = 0;
|
virtual Type getEvent(Event &event, uint32_t &dataID) = 0;
|
||||||
|
|
|
||||||
|
|
@ -49,12 +49,12 @@ IEventQueueBuffer::Type SimpleEventQueueBuffer::getEvent(Event &, uint32_t &data
|
||||||
{
|
{
|
||||||
ArchMutexLock lock(m_queueMutex);
|
ArchMutexLock lock(m_queueMutex);
|
||||||
if (!m_queueReady) {
|
if (!m_queueReady) {
|
||||||
return kNone;
|
return IEventQueueBuffer::Type::Unknown;
|
||||||
}
|
}
|
||||||
dataID = m_queue.back();
|
dataID = m_queue.back();
|
||||||
m_queue.pop_back();
|
m_queue.pop_back();
|
||||||
m_queueReady = !m_queue.empty();
|
m_queueReady = !m_queue.empty();
|
||||||
return kUser;
|
return IEventQueueBuffer::Type::User;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SimpleEventQueueBuffer::addEvent(uint32_t dataID)
|
bool SimpleEventQueueBuffer::addEvent(uint32_t dataID)
|
||||||
|
|
|
||||||
|
|
@ -115,12 +115,12 @@ IEventQueueBuffer::Type EiEventQueueBuffer::getEvent(Event &event, uint32_t &dat
|
||||||
// if this an injected special event, just return the data and exit
|
// if this an injected special event, just return the data and exit
|
||||||
if (pair.first == false) {
|
if (pair.first == false) {
|
||||||
dataID = pair.second;
|
dataID = pair.second;
|
||||||
return kUser;
|
return IEventQueueBuffer::Type::User;
|
||||||
}
|
}
|
||||||
|
|
||||||
event = Event(EventTypes::System, m_events->getSystemTarget());
|
event = Event(EventTypes::System, m_events->getSystemTarget());
|
||||||
|
|
||||||
return kSystem;
|
return IEventQueueBuffer::Type::System;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EiEventQueueBuffer::addEvent(uint32_t dataID)
|
bool EiEventQueueBuffer::addEvent(uint32_t dataID)
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ void MSWindowsEventQueueBuffer::waitForEvent(double timeout)
|
||||||
|
|
||||||
IEventQueueBuffer::Type MSWindowsEventQueueBuffer::getEvent(Event &event, uint32_t &dataID)
|
IEventQueueBuffer::Type MSWindowsEventQueueBuffer::getEvent(Event &event, uint32_t &dataID)
|
||||||
{
|
{
|
||||||
|
using enum IEventQueueBuffer::Type;
|
||||||
// NOTE: QS_ALLINPUT was replaced with QS_ALLPOSTMESSAGE.
|
// NOTE: QS_ALLINPUT was replaced with QS_ALLPOSTMESSAGE.
|
||||||
//
|
//
|
||||||
// peek at messages first. waiting for QS_ALLINPUT will return
|
// peek at messages first. waiting for QS_ALLINPUT will return
|
||||||
|
|
@ -73,25 +74,25 @@ IEventQueueBuffer::Type MSWindowsEventQueueBuffer::getEvent(Event &event, uint32
|
||||||
// dispatch that message behind our backs and block. PeekMessage
|
// dispatch that message behind our backs and block. PeekMessage
|
||||||
// will also dispatch behind our backs but won't block.
|
// will also dispatch behind our backs but won't block.
|
||||||
if (!PeekMessage(&m_event, nullptr, 0, 0, PM_NOREMOVE) && !PeekMessage(&m_event, (HWND)-1, 0, 0, PM_NOREMOVE)) {
|
if (!PeekMessage(&m_event, nullptr, 0, 0, PM_NOREMOVE) && !PeekMessage(&m_event, (HWND)-1, 0, 0, PM_NOREMOVE)) {
|
||||||
return kNone;
|
return Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
// BOOL. yeah, right.
|
// BOOL. yeah, right.
|
||||||
BOOL result = GetMessage(&m_event, nullptr, 0, 0);
|
BOOL result = GetMessage(&m_event, nullptr, 0, 0);
|
||||||
if (result == -1) {
|
if (result == -1) {
|
||||||
return kNone;
|
return Unknown;
|
||||||
} else if (result == 0) {
|
} else if (result == 0) {
|
||||||
event = Event(EventTypes::Quit);
|
event = Event(EventTypes::Quit);
|
||||||
return kSystem;
|
return System;
|
||||||
} else if (m_daemonQuit != 0 && m_event.message == m_daemonQuit) {
|
} else if (m_daemonQuit != 0 && m_event.message == m_daemonQuit) {
|
||||||
event = Event(EventTypes::Quit);
|
event = Event(EventTypes::Quit);
|
||||||
return kSystem;
|
return System;
|
||||||
} else if (m_event.message == m_userEvent) {
|
} else if (m_event.message == m_userEvent) {
|
||||||
dataID = static_cast<uint32_t>(m_event.wParam);
|
dataID = static_cast<uint32_t>(m_event.wParam);
|
||||||
return kUser;
|
return User;
|
||||||
} else {
|
} else {
|
||||||
event = Event(EventTypes::System, m_events->getSystemTarget(), &m_event);
|
event = Event(EventTypes::System, m_events->getSystemTarget(), &m_event);
|
||||||
return kSystem;
|
return System;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ IEventQueueBuffer::Type OSXEventQueueBuffer::getEvent(Event &event, uint32_t &da
|
||||||
std::unique_lock lock(m_mutex);
|
std::unique_lock lock(m_mutex);
|
||||||
if (m_dataQueue.empty()) {
|
if (m_dataQueue.empty()) {
|
||||||
LOG_DEBUG2("no events in queue");
|
LOG_DEBUG2("no events in queue");
|
||||||
return kNone;
|
return IEventQueueBuffer::Type::Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataID = m_dataQueue.front();
|
dataID = m_dataQueue.front();
|
||||||
|
|
@ -59,7 +59,7 @@ IEventQueueBuffer::Type OSXEventQueueBuffer::getEvent(Event &event, uint32_t &da
|
||||||
lock.unlock(); // Unlock early to allow other threads to proceed
|
lock.unlock(); // Unlock early to allow other threads to proceed
|
||||||
|
|
||||||
LOG_DEBUG2("handled user event with dataID: %u", dataID);
|
LOG_DEBUG2("handled user event with dataID: %u", dataID);
|
||||||
return kUser;
|
return IEventQueueBuffer::Type::User;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OSXEventQueueBuffer::addEvent(uint32_t dataID)
|
bool OSXEventQueueBuffer::addEvent(uint32_t dataID)
|
||||||
|
|
|
||||||
|
|
@ -142,10 +142,10 @@ IEventQueueBuffer::Type XWindowsEventQueueBuffer::getEvent(Event &event, uint32_
|
||||||
// process event
|
// process event
|
||||||
if (m_event.xany.type == ClientMessage && m_event.xclient.message_type == m_userEvent) {
|
if (m_event.xany.type == ClientMessage && m_event.xclient.message_type == m_userEvent) {
|
||||||
dataID = static_cast<uint32_t>(m_event.xclient.data.l[0]);
|
dataID = static_cast<uint32_t>(m_event.xclient.data.l[0]);
|
||||||
return kUser;
|
return IEventQueueBuffer::Type::User;
|
||||||
} else {
|
} else {
|
||||||
event = Event(EventTypes::System, m_events->getSystemTarget(), &m_event);
|
event = Event(EventTypes::System, m_events->getSystemTarget(), &m_event);
|
||||||
return kSystem;
|
return IEventQueueBuffer::Type::System;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue