diff options
author | Gatis Paeglis <gatis.paeglis@qt.io> | 2017-08-04 12:10:12 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@qt.io> | 2017-08-11 13:06:38 +0000 |
commit | 255abc1e5a3397bf14e9854388881cd80f0bd2e3 (patch) | |
tree | c0702be550ffce279ae9af34970a904a2fdb3535 /src/plugins/platforms/xcb/qxcbconnection.h | |
parent | a6c4d54eaf467e2db4eef83d737ffcbb263345d0 (diff) |
xcb: add support for peeking into the XCB event queue
This will be used by the Qt X11 Extras module.
Task-number: QTBUG-50358
Change-Id: Ie095cd211c393ea6d78660b4d53cac28b435a3b2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h index a049fc5036..a37ce5f5a6 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.h +++ b/src/plugins/platforms/xcb/qxcbconnection.h @@ -90,6 +90,8 @@ Q_DECLARE_LOGGING_CATEGORY(lcQpaXInputDevices) Q_DECLARE_LOGGING_CATEGORY(lcQpaXInputEvents) Q_DECLARE_LOGGING_CATEGORY(lcQpaScreen) Q_DECLARE_LOGGING_CATEGORY(lcQpaEvents) +Q_DECLARE_LOGGING_CATEGORY(lcQpaXcb) +Q_DECLARE_LOGGING_CATEGORY(lcQpaPeeker) class QXcbVirtualDesktop; class QXcbScreen; @@ -444,6 +446,15 @@ public: typedef bool (*PeekFunc)(QXcbConnection *, xcb_generic_event_t *); void addPeekFunc(PeekFunc f); + // Peek at all queued events + qint32 generatePeekerId(); + bool removePeekerId(qint32 peekerId); + enum PeekOption { PeekDefault = 0, PeekFromCachedIndex = 1 }; // see qx11info_x11.h + Q_DECLARE_FLAGS(PeekOptions, PeekOption) + typedef bool (*PeekerCallback)(xcb_generic_event_t *event, void *peekerData); + bool peekEventQueue(PeekerCallback peeker, void *peekerData = nullptr, + PeekOptions option = PeekDefault, qint32 peekerId = -1); + inline xcb_timestamp_t time() const { return m_time; } inline void setTime(xcb_timestamp_t t) { if (t > m_time) m_time = t; } @@ -692,6 +703,10 @@ private: xcb_window_t m_qtSelectionOwner = 0; + bool m_mainEventLoopFlushedQueue = false; + qint32 m_peekerIdSource = 0; + bool m_peekerIndexCacheDirty = false; + QHash<qint32, qint32> m_peekerToCachedIndex; friend class QXcbEventReader; }; #if QT_CONFIG(xinput2) |