diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.cpp')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.cpp | 16 |
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 |