summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2018-10-23 18:06:55 +0200
committerKirill Burtsev <kirill.burtsev@qt.io>2018-11-28 11:19:31 +0000
commit4213f239361e042ae5a053e3eaa87931b6696caf (patch)
treeca7e6cce2c2f49a0fe186113befaa2ccca0de48a
parent9e1cb252e0c2628c238150250670a55bd479846c (diff)
xcb: Fix leaking events on destroy
This patch amends 243c3044b647357ca6df79ac1497ae43de957d31 Change-Id: Ieeebb1e2b94d7c191bf80a1f439c826c406a0c08 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
-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);
}
};