diff options
author | Mikolaj Boc <mikolaj.boc@qt.io> | 2022-08-17 08:42:20 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-08-20 00:51:43 +0000 |
commit | c5e659be7ca8689f4536953b37078af1fa936bc9 (patch) | |
tree | 4596dd64689707b10a7258b11479515aa3f6a638 /src | |
parent | bf945666945951d63f9d588f52111760e0c35689 (diff) |
Do not invalidate the entire window on window move on WASM
The invalidate on window move is redundant - the previous texture can
be reused for the window. Just request another refresh on the compositor
and don't update the window texture. Makes window moves smoother.
Change-Id: Ied2922a000d3c8e6143e64d029154d74bc4f3480
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
(cherry picked from commit 503018ae070d9d39ab85b66499e14a8085adf51e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/wasm/qwasmcompositor.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/wasm/qwasmwindow.cpp | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index 9a83b62b5b..684d769c1c 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -1017,6 +1017,8 @@ bool QWasmCompositor::processPointer(const PointerEvent& event) } m_windowManipulation.onPointerMove(event); + if (m_windowManipulation.operation() != WindowManipulation::Operation::None) + requestUpdate(); break; } case EventType::PointerEnter: diff --git a/src/plugins/platforms/wasm/qwasmwindow.cpp b/src/plugins/platforms/wasm/qwasmwindow.cpp index 9f63f4bccf..31e6ead6ad 100644 --- a/src/plugins/platforms/wasm/qwasmwindow.cpp +++ b/src/plugins/platforms/wasm/qwasmwindow.cpp @@ -84,11 +84,16 @@ void QWasmWindow::setGeometry(const QRect &rect) if (r.y() < yMin) r.moveTop(yMin); } - if (!m_windowState.testFlag(Qt::WindowFullScreen) && !m_windowState.testFlag(Qt::WindowMaximized)) + bool shouldInvalidate = true; + if (!m_windowState.testFlag(Qt::WindowFullScreen) + && !m_windowState.testFlag(Qt::WindowMaximized)) { + shouldInvalidate = m_normalGeometry.size() != r.size(); m_normalGeometry = r; + } QPlatformWindow::setGeometry(r); QWindowSystemInterface::handleGeometryChange(window(), r); - invalidate(); + if (shouldInvalidate) + invalidate(); } void QWasmWindow::setVisible(bool visible) |