summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbconnection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 7f23c84cb9..a2ce392151 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -1842,9 +1842,26 @@ QXcbSystemTrayTracker *QXcbConnection::systemTrayTracker()
return m_systemTrayTracker;
}
-void QXcbConnection::syncWindow(QXcbWindow *window)
+bool QXcbConnection::event(QEvent *e)
{
- window->updateSyncRequestCounter();
+ if (e->type() == QEvent::User + 1) {
+ QXcbSyncWindowRequest *ev = static_cast<QXcbSyncWindowRequest *>(e);
+ QXcbWindow *w = ev->window();
+ if (w) {
+ w->updateSyncRequestCounter();
+ ev->invalidate();
+ }
+ return true;
+ }
+ return QObject::event(e);
+}
+
+void QXcbSyncWindowRequest::invalidate()
+{
+ if (m_window) {
+ m_window->clearSyncWindowRequest();
+ m_window = 0;
+ }
}
QXcbConnectionGrabber::QXcbConnectionGrabber(QXcbConnection *connection)