From 02330a5ef2170bbfb3e4bf65d65f5eb6509b4f05 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 26 Oct 2021 18:40:06 +0200 Subject: [PATCH] qt6-base: update to 6.2.1. --- srcpkgs/qt6-base/patches/qtbug-97811.patch | 53 ++++++++++++++++++++++ srcpkgs/qt6-base/template | 4 +- 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/qt6-base/patches/qtbug-97811.patch diff --git a/srcpkgs/qt6-base/patches/qtbug-97811.patch b/srcpkgs/qt6-base/patches/qtbug-97811.patch new file mode 100644 index 00000000000..e3ea6b09d84 --- /dev/null +++ b/srcpkgs/qt6-base/patches/qtbug-97811.patch @@ -0,0 +1,53 @@ +From ffc9323671d045e3566980d9ed4567f071004e65 Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer +Date: Thu, 28 Oct 2021 16:55:33 +0200 +Subject: Fix performance regression when avoiding scrollbar flipping + +Amends 6c4dc722cb9bf765904feefff4fb00bdb0b3dc9f. + +Don't search for the optimal size of the scrollarea's widget if it can't +be found anyway. Try the size with scrollbar first, which covers the +vast majority of sizes. + +Optimizing the loop with e.g. a binary search adds no value, as the size +is often just a pixel too small. + +Since we can't rely on the number of height-for-width calls, we can't +meaningfully test this behavior. The number of calls is still very high +during showing and resizing; optimizing this further is for a separate +commit. + +Fixes: QTBUG-97811 +Pick-to: 6.2 5.15 +Change-Id: If145302e6414b32cf1ce7251ff33b0039f584867 +Reviewed-by: Jonas Kvinge +Reviewed-by: Richard Moe Gustavsen +--- + src/widgets/widgets/qscrollarea.cpp | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp +index f880240ea7..e8fdadb648 100644 +--- a/src/widgets/widgets/qscrollarea.cpp ++++ b/src/widgets/widgets/qscrollarea.cpp +@@ -203,10 +203,13 @@ void QScrollAreaPrivate::updateScrollBars() + if (vbarpolicy == Qt::ScrollBarAsNeeded) { + int vbarWidth = vbar->sizeHint().width(); + QSize m_hfw = m.expandedTo(min).boundedTo(max); +- while (h > m.height() && vbarWidth) { +- --vbarWidth; +- --m_hfw.rwidth(); +- h = widget->heightForWidth(m_hfw.width()); ++ // is there any point in searching? ++ if (widget->heightForWidth(m_hfw.width() - vbarWidth) <= m.height()) { ++ while (h > m.height() && vbarWidth) { ++ --vbarWidth; ++ --m_hfw.rwidth(); ++ h = widget->heightForWidth(m_hfw.width()); ++ } + } + max = QSize(m_hfw.width(), qMax(m_hfw.height(), h)); + } +-- +cgit v1.2.1 + diff --git a/srcpkgs/qt6-base/template b/srcpkgs/qt6-base/template index 4fea74a5b09..d1bcbe898e9 100644 --- a/srcpkgs/qt6-base/template +++ b/srcpkgs/qt6-base/template @@ -1,6 +1,6 @@ # Template file for 'qt6-base' pkgname=qt6-base -version=6.2.0 +version=6.2.1 revision=1 wrksrc="qtbase-everywhere-src-${version}" build_style=cmake @@ -29,7 +29,7 @@ maintainer="John " license="GPL-3.0-only WITH Qt-GPL-exception-1.0, LGPL-3.0-only, GPL-2.0-or-later" homepage="https://www.qt.io" distfiles="https://download.qt.io/official_releases/qt/${version%.*}/${version}/submodules/qtbase-everywhere-src-${version}.tar.xz" -checksum=fdfff0716d093bcb6bcd53746ce1d3c9701a6bf3326d47813866d43949b47769 +checksum=2c5f07b5c3ea27d3fc1a46686ea3fb6724f94dddf1fb007de3eb0bdb87429079 python_version=3 if [ "$CROSS_BUILD" ]; then