diff options
author | Gatis Paeglis <gatis.paeglis@qt.io> | 2018-09-18 21:51:57 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@qt.io> | 2018-10-15 18:33:40 +0000 |
commit | 80b1cce0cfe5d8e527731b921fd5d0c1a007afd5 (patch) | |
tree | 313ae2cf0d5e104843348faf4a7fe8e452a026f8 /src/plugins/platforms/xcb/qxcbconnection.h | |
parent | 793a36258dd946d5c2d2a6c10c87c40e88e4736b (diff) |
xcb: call processXcbEvents() on every event loop iteration
It is necessary for QTBUG-69687. The original code processes the xcb
event queue only when new events have arrived, but if we want to do an
event filtering that buffers some events and processes them later based
on set/unset flags (e.g. QEventLoop::ExcludeUserInputEvents), we need
to call processXcbEvents() on every event loop iteration, not only when
new events have arrived from X server.
The required functionality is implemented by having custom event dispatchers,
instead of using the generic ones from QtGenericUnixDispatcher::
createUnixEventDispatcher() / eventdispatcher_support-private. This also
enables for further customizations, as might be necessary by QTBUG-70095.
Task-number: QTBUG-69687
Change-Id: I1f8b2400d26cccf17279d57bb4b678e40c615f33
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index 29a233496b..3fb64f01a4 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -495,12 +495,11 @@ public: QXcbGlIntegration *glIntegration() const; void flush() { xcb_flush(m_connection); } + void processXcbEvents(); protected: bool event(QEvent *e) override; - void processXcbEvents(); - private: void initializeAllAtoms(); void initializeShm(); |