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.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 78f1efb745..405a16d488 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -969,6 +969,22 @@ void QXcbConnection::processXcbEvents()
continue;
}
+ if (response_type == XCB_CONFIGURE_NOTIFY) {
+ // compress multiple configure notify events for the same window
+ bool found = false;
+ for (int j = i; j < eventqueue->size(); ++j) {
+ xcb_generic_event_t *other = eventqueue->at(j);
+ if (other && (other->response_type & ~0x80) == XCB_CONFIGURE_NOTIFY
+ && ((xcb_configure_notify_event_t *)other)->event == ((xcb_configure_notify_event_t *)event)->event)
+ {
+ found = true;
+ break;
+ }
+ }
+ if (found)
+ continue;
+ }
+
QVector<PeekFunc>::iterator it = m_peekFuncs.begin();
while (it != m_peekFuncs.end()) {
// These callbacks return true if the event is what they were