qt/qt-everywhere-opensource-src-4.8.0-filter_event.patch

16 lines
1.1 KiB
Diff

--- qt-opensource-4.8.0.old/src/gui/kernel/qapplication_x11.cpp 2011-12-16 03:22:33.918428374 -0500
+++ qt-opensource-4.8.0.new/src/gui/kernel/qapplication_x11.cpp 2011-12-27 06:39:22.852191952 -0500
@@ -4244,6 +4244,12 @@ bool QETWidget::translateMouseEvent(cons
&& (nextEvent.xclient.message_type == ATOM(_QT_SCROLL_DONE) ||
(nextEvent.xclient.message_type == ATOM(WM_PROTOCOLS) &&
(Atom)nextEvent.xclient.data.l[0] == ATOM(_NET_WM_SYNC_REQUEST))))) {
+ // As we may run through a significant number of a large class of non-MotionNotify
+ // events here, without returning to the event loop, just before processing nextEvent,
+ // pass it through QAbstractEventDispatcher::filterEvent(). Note that this issue may
+ // exist elsewhere, wherever events are compressed in a similar manner.
+ if (QAbstractEventDispatcher::instance()->filterEvent(&nextEvent))
+ continue;
qApp->x11ProcessEvent(&nextEvent);
continue;
} else if (nextEvent.type != MotionNotify ||