utility: Fixed message buffer might become empty while applying message filters
This commit is contained in:
@@ -216,13 +216,13 @@ void MessageQueue::processMessages()
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_messageBufferMutex);
|
||||
|
||||
if (!m_messageBuffer.size())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
for (std::shared_ptr<MessageFilter> filter : m_filters)
|
||||
{
|
||||
if (!m_messageBuffer.size())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
filter->filter(&m_messageBuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,11 @@ class MessageFilterFocusInOut
|
||||
{
|
||||
void filter(MessageQueue::MessageBufferType* messageBuffer) override
|
||||
{
|
||||
if (messageBuffer->size() < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBase* message = messageBuffer->front().get();
|
||||
if (message->getType() == MessageFocusIn::getStaticType())
|
||||
{
|
||||
|
||||
@@ -9,6 +9,11 @@ class MessageFilterSearchAutocomplete
|
||||
{
|
||||
void filter(MessageQueue::MessageBufferType* messageBuffer) override
|
||||
{
|
||||
if (messageBuffer->size() < 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
MessageBase* message = messageBuffer->front().get();
|
||||
if (message->getType() == MessageSearchAutocomplete::getStaticType())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user