Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.2.1
-
linux
Description
In Windows main QT loop will peeke WM_MOUSEMOVE event, the event is then pushed to windowSystemEventQueue and handled in separate (WM_USER+1) message. This means there might be multiple WM_MOUSEMOVE events pushed to windowSystemEventQueue before mouse move event is handled in (WM_USER+1).
Mouse move events should be dequeued from system message que (compressed) before mouse move event is handled in (WM_USER+1) message.
Another option is to compress all mouse move events in windowSystemEventQueue. I am attaching proposed patch (against qt 5.2.1).
Attached example reproduces the issue:
Run it with Qt5, click and move your mouse for few second and wait. You will see in the standard output: that the command will be executed several time. The same example on Qt4. You will see less output.
For similar mouse move:
Output In Qt4:
do something 0
do something 13
Output in Qt5:
do something 0
do something 1
do something 2
...
...
do something 12
do something 13
Attachments
Issue Links
- relates to
-
QTBUG-39725 Events for mouse moves arrive delayed in a Widget derived from QGLWidget on Linux desktop
- Closed
-
QTBUG-41214 Two-finger scroll gesture gets sluggish on low frame rates (since Qt5)
- Reported
-
QTBUG-44902 Scrolling of ScrollView is not smooth
- Closed
- resulted in
-
QTBUG-44964 Add API for regulating if a specific event type should be compressed.
- Closed
For Gerrit Dashboard: QTBUG-40889 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
108275,9 | Ignore XI_Motion when compressing motion notify events | dev | qt/qtbase | Status: DEFERRED | 0 | 0 |
115531,13 | xcb: Compress mouse motion and touch update events | 5.5 | qt/qtbase | Status: ABANDONED | +1 | 0 |
126136,2 | xcb: Compress mouse motion and touch update events | 5.6 | qt/qtbase | Status: MERGED | +2 | 0 |