Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.12.0
-
None
-
-
6258c4994200348220be6f35667a2c0f4b705539 (qt/qtwayland/5.12.1)
Description
Up until 1dc85b95ab0adc1e805d059e2c35c671ef790011 (Client: Full implementation for frame callbacks) the only usable render loop on Wayland was windows, both basic and threaded resulted in stuttering during scrolling.
After this recent commit, threaded stutters heavily and windows have incorrect animation timing (too fast). Threaded can be fixed somewhat with:
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index f596438b..eb48711b 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -1082,6 +1082,9 @@ void QWaylandWindow::requestUpdate() // Can be called from the render thread (without locking anything) so make sure to not make races in this method. void QWaylandWindow::handleUpdate() { + if (mWaitingForFrameCallback) + return; + // TODO: Should sync subsurfaces avoid requesting frame callbacks? if (mFrameCallback) {
but the animation timing is still off because those render loops require swap interval = 1, and it now uses 0 instead.
I can experience it on various Intel GPUs (HD3000, UHD630) and with both Weston and QtWaylandCompositor.
Attachments
Issue Links
- resulted from
-
QTBUG-69077 Qt Wayland blocks in frame callback
- Closed
For Gerrit Dashboard: QTBUG-72578 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
249346,3 | Revert "Client: Full implementation for frame callbacks" | 5.12.1 | qt/qtwayland | Status: MERGED | +2 | 0 |