Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-base for openSUSE:Factory checked in at 2021-11-06 18:18:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-base (Old) and /work/SRC/openSUSE:Factory/.qt6-base.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-base" Sat Nov 6 18:18:00 2021 rev:12 rq:929783 version:6.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-base/qt6-base.changes 2021-11-04 16:09:16.329036410 +0100 +++ /work/SRC/openSUSE:Factory/.qt6-base.new.1890/qt6-base.changes 2021-11-06 18:21:20.444990729 +0100 @@ -1,0 +2,6 @@ +Thu Nov 4 20:59:52 UTC 2021 - Jonas Kvinge <jona...@opensuse.org> + +- Add patch for critical performance regression in qscrollarea + * 0001-qscrollarea-performance-fix.patch + +------------------------------------------------------------------- New: ---- 0001-qscrollarea-performance-fix.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-base.spec ++++++ --- /var/tmp/diff_new_pack.DBrNMb/_old 2021-11-06 18:21:20.948991009 +0100 +++ /var/tmp/diff_new_pack.DBrNMb/_new 2021-11-06 18:21:20.948991009 +0100 @@ -44,6 +44,7 @@ %if 0%{?suse_version} == 1500 Patch101: 0001-Require-GCC-10.patch %endif +Patch102: 0001-qscrollarea-performance-fix.patch ## BuildRequires: cmake >= 3.18.3 BuildRequires: cups-devel ++++++ 0001-qscrollarea-performance-fix.patch ++++++ >From ffc9323671d045e3566980d9ed4567f071004e65 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer <volker.hilshei...@qt.io> 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 <jo...@jkvinge.net> Reviewed-by: Richard Moe Gustavsen <richard.gustav...@qt.io> --- src/widgets/widgets/qscrollarea.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/widgets/widgets/qscrollarea.cpp') 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