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/xcb_qpa_lib.pro | |
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/xcb_qpa_lib.pro')
-rw-r--r-- | src/plugins/platforms/xcb/xcb_qpa_lib.pro | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/plugins/platforms/xcb/xcb_qpa_lib.pro b/src/plugins/platforms/xcb/xcb_qpa_lib.pro index fbda8c39b9..a747b25c88 100644 --- a/src/plugins/platforms/xcb/xcb_qpa_lib.pro +++ b/src/plugins/platforms/xcb/xcb_qpa_lib.pro @@ -5,7 +5,7 @@ DEFINES += QT_NO_FOREACH QT += \ core-private gui-private \ service_support-private theme_support-private \ - eventdispatcher_support-private fontdatabase_support-private \ + fontdatabase_support-private \ edid_support-private qtHaveModule(linuxaccessibility_support-private): \ @@ -13,6 +13,8 @@ qtHaveModule(linuxaccessibility_support-private): \ qtConfig(vulkan): QT += vulkan_support-private +qtConfig(glib) : QMAKE_USE_PRIVATE += glib + SOURCES = \ qxcbclipboard.cpp \ qxcbconnection.cpp \ @@ -28,7 +30,8 @@ SOURCES = \ qxcbimage.cpp \ qxcbxsettings.cpp \ qxcbsystemtraytracker.cpp \ - qxcbeventqueue.cpp + qxcbeventqueue.cpp \ + qxcbeventdispatcher.cpp HEADERS = \ qxcbclipboard.h \ @@ -47,7 +50,8 @@ HEADERS = \ qxcbxsettings.h \ qxcbsystemtraytracker.h \ qxcbxkbcommon.h \ - qxcbeventqueue.h + qxcbeventqueue.h \ + qxcbeventdispatcher.h qtConfig(draganddrop) { SOURCES += qxcbdrag.cpp |