From 8161a92b5fe1c0e4818a0fb19ed2177d7a12f731 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 3 Nov 2016 14:34:43 +0100 Subject: Quick: Do not calculate the difference in a geometryChange This difference is only used by the ListView, so calculating it and storing it (on the stack) introduces a penalty for all items. As the new geometry is already applied, the old geometry is passed along. This has the added advantage that the ListView does not have to re-calculate that either. This fixes a performance regression. Change-Id: Id5e67bb663a5b11a55ec15ff24ca5b213d1fcef5 Reviewed-by: Gunnar Sletta --- src/quickwidgets/qquickwidget.cpp | 4 ++-- src/quickwidgets/qquickwidget_p.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/quickwidgets') diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index de3692afb0..1d617f5098 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -245,14 +245,14 @@ void QQuickWidgetPrivate::execute() } void QQuickWidgetPrivate::itemGeometryChanged(QQuickItem *resizeItem, QQuickGeometryChange change, - const QRectF &diff) + const QRectF &oldGeometry) { Q_Q(QQuickWidget); if (resizeItem == root && resizeMode == QQuickWidget::SizeViewToRootObject) { // wait for both width and height to be changed resizetimer.start(0,q); } - QQuickItemChangeListener::itemGeometryChanged(resizeItem, change, diff); + QQuickItemChangeListener::itemGeometryChanged(resizeItem, change, oldGeometry); } void QQuickWidgetPrivate::render(bool needsSync) diff --git a/src/quickwidgets/qquickwidget_p.h b/src/quickwidgets/qquickwidget_p.h index 3d64981797..0ba86172e6 100644 --- a/src/quickwidgets/qquickwidget_p.h +++ b/src/quickwidgets/qquickwidget_p.h @@ -87,7 +87,7 @@ public: ~QQuickWidgetPrivate(); void execute(); - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) Q_DECL_OVERRIDE; + void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &oldGeometry) Q_DECL_OVERRIDE; void initResize(); void updateSize(); void updatePosition(); -- cgit v1.2.3