summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikolaj Boc <mikolaj.boc@qt.io>2022-08-17 08:42:20 +0200
committerMikolaj Boc <mikolaj.boc@qt.io>2022-08-20 02:51:34 +0200
commit503018ae070d9d39ab85b66499e14a8085adf51e (patch)
tree3ea6c8e8ae0bc2c7df1d3c41d91199a2718ea252
parent2a23652bbbba8def270b78d76c91a5a96d391106 (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. Pick-to: 6.4 Change-Id: Ied2922a000d3c8e6143e64d029154d74bc4f3480 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
-rw-r--r--src/plugins/platforms/wasm/qwasmcompositor.cpp2
-rw-r--r--src/plugins/platforms/wasm/qwasmwindow.cpp9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp
index 30c61d2668..959f3dbf2d 100644
--- a/src/plugins/platforms/wasm/qwasmcompositor.cpp
+++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp
@@ -962,6 +962,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 bfcc556d6d..5cdee1a8d0 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)