summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/xcb/qxcbeventqueue.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbeventqueue.cpp b/src/plugins/platforms/xcb/qxcbeventqueue.cpp
index 862f68764b..f6158d3127 100644
--- a/src/plugins/platforms/xcb/qxcbeventqueue.cpp
+++ b/src/plugins/platforms/xcb/qxcbeventqueue.cpp
@@ -105,7 +105,8 @@ QXcbEventQueue::~QXcbEventQueue()
wait();
}
- while (xcb_generic_event_t *event = takeFirst())
+ flushBufferedEvents();
+ while (xcb_generic_event_t *event = takeFirst(QEventLoop::AllEvents))
free(event);
if (m_head && m_head->fromHeap)
@@ -219,6 +220,8 @@ void QXcbEventQueue::run()
tail->next = qXcbEventNodeFactory(event);
tail = tail->next;
m_tail.store(tail, std::memory_order_release);
+ } else {
+ free(event);
}
};