From 936a9a82309f4e93a22ae7dc24c3004f72ca46a9 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mon, 31 Oct 2022 11:19:31 +0100 Subject: [PATCH] 5.15.7 --- .gitignore | 1 + ...yledText-also-supports-nbsp-and-quot.patch | 4 +- 0002-Support-apos-in-styled-text.patch | 4 +- ...ve-unused-QPointer-QQuickPointerMask.patch | 4 +- ...s-in-Yarr.h-to-fix-build-with-GCC-11.patch | 43 -- ...l-Refresh-the-view-when-a-column-is-.patch | 4 +- ...or-tainted-QObject-JavaScript-wrappe.patch | 4 +- ...not-incubate-if-the-source-arrives-a.patch | 112 ---- ...ossible-crash-in-QSGDefaultLayer-gra.patch | 4 +- ...-so-that-it-actually-registers-a-tap.patch | 4 +- ...ext-with-subpixel-matrix-translation.patch | 483 ------------------ ...ndler-so-that-it-actually-registers-.patch | 4 +- ...Array-fix-UB-precondition-violation-.patch | 4 +- ...dtor-of-an-object-we-continue-to-use.patch | 4 +- ...Widget-and-its-offscreen-window-s-sc.patch | 4 +- ...-against-cycles-in-nextPrevItemInTab.patch | 6 +- ...eFieldGlyphCache-fix-multiplication-.patch | 4 +- ...eFieldGlyphCache-fix-UB-ordering-of-.patch | 4 +- ...Flickable-wheel-velocity-calculation.patch | 10 +- ...kable-with-QTBUG-56075-patch-applied.patch | 6 +- ...nges-if-currentChanges-is-active-whe.patch | 6 +- ...iew.isCurrentItem-when-used-with-Del.patch | 94 ++++ qt5-qtdeclarative.spec | 46 +- sources | 2 +- 24 files changed, 160 insertions(+), 701 deletions(-) delete mode 100644 0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch rename 0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch => 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch (98%) rename 0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch => 0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch (97%) delete mode 100644 0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch rename 0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch => 0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch (95%) rename 0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch => 0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch (95%) delete mode 100644 0008-Fix-distorted-text-with-subpixel-matrix-translation.patch rename 0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch => 0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch (94%) rename 0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch => 0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch (89%) rename 0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch => 0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch (93%) rename 0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch => 0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch (96%) rename 0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch => 0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch (97%) rename 0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch => 0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch (93%) rename 0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch => 0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch (96%) rename 0018-Fix-Flickable-wheel-velocity-calculation.patch => 0015-Fix-Flickable-wheel-velocity-calculation.patch (98%) rename 0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch => 0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch (80%) rename 0020-Reset-currentChanges-if-currentChanges-is-active-whe.patch => 0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch (89%) create mode 100644 0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch diff --git a/.gitignore b/.gitignore index 0386793..dd65155 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /qtdeclarative-everywhere-opensource-src-5.15.4.tar.xz /qtdeclarative-everywhere-opensource-src-5.15.5.tar.xz /qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz +/qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz diff --git a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch b/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch index fc9d72c..b4b0970 100644 --- a/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch +++ b/0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch @@ -1,7 +1,7 @@ -From 343649de778b8c338438e19991c2354d05ec5329 Mon Sep 17 00:00:00 2001 +From 43b6267d024afd655a8c0c8c833f71850d7a8bb9 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 21 May 2021 13:17:15 +0200 -Subject: [PATCH 01/20] Document that StyledText also supports   and +Subject: [PATCH 01/18] Document that StyledText also supports   and " Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd diff --git a/0002-Support-apos-in-styled-text.patch b/0002-Support-apos-in-styled-text.patch index f74e53e..9715951 100644 --- a/0002-Support-apos-in-styled-text.patch +++ b/0002-Support-apos-in-styled-text.patch @@ -1,7 +1,7 @@ -From 933f752d3223301cbcfe0adc496ffc4442dab5cb Mon Sep 17 00:00:00 2001 +From 8e28af8076873503bbf036487aaf7310407a2f11 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Fri, 21 May 2021 13:42:35 +0200 -Subject: [PATCH 02/20] Support ' in styled text +Subject: [PATCH 02/18] Support ' in styled text Pick-to: 6.1 5.15 Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929 diff --git a/0003-Remove-unused-QPointer-QQuickPointerMask.patch b/0003-Remove-unused-QPointer-QQuickPointerMask.patch index e222236..fdb521f 100644 --- a/0003-Remove-unused-QPointer-QQuickPointerMask.patch +++ b/0003-Remove-unused-QPointer-QQuickPointerMask.patch @@ -1,7 +1,7 @@ -From 7ff3dc36c1bd518bcfaf890694cfea07178cf7f7 Mon Sep 17 00:00:00 2001 +From 0f3b328766038c1161f4f613a0bf3a4fcbdb4cef Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 17 Jun 2021 16:32:28 +0200 -Subject: [PATCH 03/20] Remove unused QPointer +Subject: [PATCH 03/18] Remove unused QPointer Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851 Reviewed-by: Shawn Rutledge diff --git a/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch b/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch deleted file mode 100644 index 5a3dd84..0000000 --- a/0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 2e36092b74206315a637fd68eceb5e864e6dd0dd Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev -Date: Wed, 18 Aug 2021 22:50:29 +0300 -Subject: [PATCH 04/20] Include in Yarr.h to fix build with GCC 11 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- (aka ) is needed for UINT_MAX macro constant. -- is needed for std::numeric_limits. - -Without this fix, qtdeclarative failed to build on some platforms: - - In file included from jsruntime/qv4regexp_p.h:62, - from jsruntime/qv4regexp.cpp:40: - ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’ - 46 | static const unsigned offsetNoMatch = std::numeric_limits::max(); - | ^~~~~~~~~~~~~~ - -Pick-to: 5.15 6.2 -Change-Id: I7cc9f7bc6624a52c8659f09034ab16064da5fd2f -Reviewed-by: Albert Astals Cid -Reviewed-by: Ulf Hermann -(cherry picked from commit db58b8518e157b765bf2e01e6382a9eed4751f27) ---- - src/3rdparty/masm/yarr/Yarr.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/3rdparty/masm/yarr/Yarr.h b/src/3rdparty/masm/yarr/Yarr.h -index ccf78f9880..2955ea7e72 100644 ---- a/src/3rdparty/masm/yarr/Yarr.h -+++ b/src/3rdparty/masm/yarr/Yarr.h -@@ -28,6 +28,7 @@ - #pragma once - - #include -+#include - #include "YarrErrorCode.h" - - namespace JSC { namespace Yarr { --- -2.37.3 - diff --git a/0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch b/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch similarity index 98% rename from 0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch rename to 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch index be54328..afdc492 100644 --- a/0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch +++ b/0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch @@ -1,7 +1,7 @@ -From 3fc1e9fa7aee33fe804f53653ec593caa810beb0 Mon Sep 17 00:00:00 2001 +From ad09b853a3a137127de847d4d6d55f73ab09899d Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Thu, 23 Sep 2021 03:43:04 +0200 -Subject: [PATCH 06/20] QQmlDelegateModel: Refresh the view when a column is +Subject: [PATCH 04/18] QQmlDelegateModel: Refresh the view when a column is added at 0 It can happen that a model reports n>0 rows but columns=0 (See diff --git a/0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch b/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch similarity index 97% rename from 0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch rename to 0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch index 93dde86..7242c29 100644 --- a/0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch +++ b/0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch @@ -1,7 +1,7 @@ -From aabe4e4cb74855205a5c7fa3f1dff4fea7fe05af Mon Sep 17 00:00:00 2001 +From 55caf921033dc1f310c1d370a046908cb0a6bc57 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Sun, 10 Oct 2021 21:04:21 +0300 -Subject: [PATCH 07/20] Fix sweep step for tainted QObject JavaScript wrappers +Subject: [PATCH 05/18] Fix sweep step for tainted QObject JavaScript wrappers Currently, whenever the garbage collector runs, it will destroy all valid tainted wrappers. diff --git a/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch b/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch deleted file mode 100644 index 4eb7135..0000000 --- a/0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 412bc857ee5cc43671f2c003af50c6393ebb6592 Mon Sep 17 00:00:00 2001 -From: Aleix Pol -Date: Tue, 21 Sep 2021 00:10:26 +0200 -Subject: [PATCH 05/20] QQuickLoader: Do not incubate if the source arrives - after setActive(false) - -Otherwise we end up in the crazy place of active being false but item -being non-null and forces us to workaround within the apps. - -Change-Id: I88c27c4b00ccec8b8e0c05a8e10b44fcabfc2e30 -Reviewed-by: Ulf Hermann -(cherry picked from commit e78c068700fa74ab3aca6a23ab2450563b1c3a5c) -Reviewed-by: Qt Cherry-pick Bot ---- - src/quick/items/qquickloader.cpp | 3 +++ - .../data/loader-async-race-rect.qml | 10 ++++++++++ - .../qquickloader/data/loader-async-race.qml | 14 ++++++++++++++ - .../quick/qquickloader/tst_qquickloader.cpp | 19 +++++++++++++++++++ - 4 files changed, 46 insertions(+) - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race-rect.qml - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race.qml - -diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp -index cb4f79a3c2..7fbe66fdda 100644 ---- a/src/quick/items/qquickloader.cpp -+++ b/src/quick/items/qquickloader.cpp -@@ -737,6 +737,9 @@ void QQuickLoaderPrivate::_q_sourceLoaded() - return; - } - -+ if (!active) -+ return; -+ - QQmlContext *creationContext = component->creationContext(); - if (!creationContext) creationContext = qmlContext(q); - itemContext = new QQmlContext(creationContext); -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -new file mode 100644 -index 0000000000..a56dcea5ad ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -@@ -0,0 +1,10 @@ -+import QtQuick 2.15 -+ -+Rectangle { -+ anchors.fill: parent -+ color: "blue" -+ Item { -+ Item { -+ } -+ } -+} -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race.qml b/tests/auto/quick/qquickloader/data/loader-async-race.qml -new file mode 100644 -index 0000000000..8ba625c5c1 ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race.qml -@@ -0,0 +1,14 @@ -+import QtQuick 2.15 -+ -+Item { -+ id: root -+ Component.onCompleted: { -+ myloader.active = false -+ } -+ Loader { -+ id: myloader -+ anchors.fill: parent -+ asynchronous: true -+ source: "loader-async-race-rect.qml" -+ } -+} -diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -index 0f6c811adb..dddacbaa0b 100644 ---- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp -+++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -@@ -132,6 +132,7 @@ private slots: - void statusChangeOnlyEmittedOnce(); - - void setSourceAndCheckStatus(); -+ void asyncLoaderRace(); - }; - - Q_DECLARE_METATYPE(QList) -@@ -1496,6 +1497,24 @@ void tst_QQuickLoader::setSourceAndCheckStatus() - QCOMPARE(loader->status(), QQuickLoader::Null); - } - -+void tst_QQuickLoader::asyncLoaderRace() -+{ -+ QQmlApplicationEngine engine; -+ auto url = testFileUrl("loader-async-race.qml"); -+ engine.load(url); -+ auto root = engine.rootObjects().at(0); -+ QVERIFY(root); -+ -+ QQuickLoader *loader = root->findChild(); -+ QCOMPARE(loader->active(), false); -+ QCOMPARE(loader->status(), QQuickLoader::Null); -+ QCOMPARE(loader->item(), nullptr); -+ -+ QSignalSpy spy(loader, &QQuickLoader::itemChanged); -+ QVERIFY(!spy.wait(100)); -+ QCOMPARE(loader->item(), nullptr); -+} -+ - QTEST_MAIN(tst_QQuickLoader) - - #include "tst_qquickloader.moc" --- -2.37.3 - diff --git a/0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch b/0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch similarity index 95% rename from 0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch rename to 0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch index c8aad7a..24de445 100644 --- a/0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch +++ b/0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch @@ -1,7 +1,7 @@ -From 783cb960224ecd984bb585b5633bacc3ba9b6391 Mon Sep 17 00:00:00 2001 +From 1cb0de43684c7f23cd121d48ebd84a9da688c8ef Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 11 Oct 2021 15:37:33 +0200 -Subject: [PATCH 09/20] Revert "Fix for possible crash in +Subject: [PATCH 06/18] Revert "Fix for possible crash in QSGDefaultLayer::grab" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 diff --git a/0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch b/0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch similarity index 95% rename from 0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch rename to 0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch index f5e2321..a22fa4c 100644 --- a/0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch +++ b/0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch @@ -1,7 +1,7 @@ -From b03b25f417d1db2a43e2df39a6fb355f993a341d Mon Sep 17 00:00:00 2001 +From 7dd0d9f9ce9bbd5e21f017069256d52b397a6195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= Date: Thu, 3 Sep 2020 10:51:01 +0200 -Subject: [PATCH 10/20] Fix TapHandler so that it actually registers a tap +Subject: [PATCH 07/18] Fix TapHandler so that it actually registers a tap This bug caused all quick examples that used the shared\LauncherList.qml to be broken. diff --git a/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch b/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch deleted file mode 100644 index c0e28af..0000000 --- a/0008-Fix-distorted-text-with-subpixel-matrix-translation.patch +++ /dev/null @@ -1,483 +0,0 @@ -From 6b86df958de8c887e8685183e068bb200e357785 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt -Date: Tue, 12 Oct 2021 13:13:01 +0200 -Subject: [PATCH 08/20] Fix distorted text with subpixel matrix translation - -We would pixel-align native text *before* applying the -model-view matrix, which would cause GL_NEAREST artifacts to -show up when the text was positioned at a subpixel offset in -some cases. Instead, we pixel-align the coordinates after mapping -them to the view frustum, but before applying the projection to the -screen. - -To make it easier to modify the buffer layout for the shaders the -next time, this also adds some constants for offsets. - -[ChangeLog][Text] Fixed an issue where text using NativeRendering -would look slightly skewed if it was inside a parent that had -been positioned at a subpixel offset. - -Pick-to: 5.15 6.2 -Fixes: QTBUG-96112 -Fixes: QTBUG-83626 -Task-number: QTBUG-55638 -Change-Id: Ifb785ad5830093df94afc75a7bc288e24ca7aa38 -Reviewed-by: Eirik Aavitsland -(cherry picked from commit b21948f5e811ce1b7abf065bc48af61a231e86f4) ---- - .../scenegraph/qsgdefaultglyphnode_p.cpp | 46 ++++++---- - .../scenegraph/shaders_ng/24bittextmask.frag | 5 +- - .../scenegraph/shaders_ng/32bitcolortext.frag | 5 +- - .../scenegraph/shaders_ng/8bittextmask.frag | 3 +- - .../scenegraph/shaders_ng/8bittextmask_a.frag | 3 +- - .../scenegraph/shaders_ng/outlinedtext.frag | 5 +- - .../scenegraph/shaders_ng/outlinedtext.vert | 9 +- - .../scenegraph/shaders_ng/outlinedtext_a.frag | 5 +- - .../scenegraph/shaders_ng/styledtext.frag | 3 +- - .../scenegraph/shaders_ng/styledtext.vert | 7 +- - .../scenegraph/shaders_ng/styledtext_a.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.vert | 7 +- - ...text_nativerendering_subpixelpositions.qml | 91 +++++++++++++++++++ - 14 files changed, 155 insertions(+), 40 deletions(-) - create mode 100644 tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml - -diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -index 3c60f830de..0fd6581dc4 100644 ---- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -+++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -@@ -428,6 +428,18 @@ QSGTextMaskRhiShader::QSGTextMaskRhiShader(QFontEngine::GlyphFormat glyphFormat) - QStringLiteral(":/qt-project.org/scenegraph/shaders_ng/textmask.frag.qsb")); - } - -+enum UbufOffset { -+ ModelViewMatrixOffset = 0, -+ ProjectionMatrixOffset = ModelViewMatrixOffset + 64, -+ ColorOffset = ProjectionMatrixOffset + 64, -+ TextureScaleOffset = ColorOffset + 16, -+ DprOffset = TextureScaleOffset + 8, -+ -+ // + 1 float padding (vec4 must be aligned to 16) -+ StyleColorOffset = DprOffset + 4 + 4, -+ ShiftOffset = StyleColorOffset + 16 -+}; -+ - bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - QSGMaterial *newMaterial, QSGMaterial *oldMaterial) - { -@@ -443,11 +455,14 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - - bool changed = false; - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= DprOffset + 4); - - if (state.isMatrixDirty()) { -- const QMatrix4x4 m = state.combinedMatrix(); -- memcpy(buf->data(), m.constData(), 64); -+ const QMatrix4x4 mv = state.modelViewMatrix(); -+ memcpy(buf->data() + ModelViewMatrixOffset, mv.constData(), 64); -+ const QMatrix4x4 p = state.projectionMatrix(); -+ memcpy(buf->data() + ProjectionMatrixOffset, p.constData(), 64); -+ - changed = true; - } - -@@ -456,13 +471,13 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - if (updated || !oldMat || oldRtex != newRtex) { - const QVector2D textureScale = QVector2D(1.0f / mat->rhiGlyphCache()->width(), - 1.0f / mat->rhiGlyphCache()->height()); -- memcpy(buf->data() + 64 + 16, &textureScale, 8); -+ memcpy(buf->data() + TextureScaleOffset, &textureScale, 8); - changed = true; - } - - if (!oldMat) { - float dpr = state.devicePixelRatio(); -- memcpy(buf->data() + 64 + 16 + 8, &dpr, 4); -+ memcpy(buf->data() + DprOffset, &dpr, 4); - } - - // move texture uploads/copies onto the renderer's soon-to-be-committed list -@@ -510,11 +525,11 @@ bool QSG8BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 80); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -553,12 +568,12 @@ bool QSG24BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only; coloring happens via the blend constant - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -608,12 +623,12 @@ bool QSG32BitColorTextRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only - const QVector4D color(0, 0, 0, mat->color().w() * state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -649,20 +664,17 @@ bool QSGStyledTextRhiShader::updateUniformData(RenderState &state, - QSGStyledTextMaterial *oldMat = static_cast(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 120); -- -- // matrix..dpr + 1 float padding (vec4 must be aligned to 16) -- const int startOffset = 64 + 16 + 8 + 4 + 4; -+ Q_ASSERT(buf->size() >= ShiftOffset + 8); - - if (oldMat == nullptr || mat->styleColor() != oldMat->styleColor() || state.isOpacityDirty()) { - const QVector4D styleColor = qsg_premultiply(mat->styleColor(), state.opacity()); -- memcpy(buf->data() + startOffset, &styleColor, 16); -+ memcpy(buf->data() + StyleColorOffset, &styleColor, 16); - changed = true; - } - - if (oldMat == nullptr || oldMat->styleShift() != mat->styleShift()) { - const QVector2D v = mat->styleShift(); -- memcpy(buf->data() + startOffset + 16, &v, 8); -+ memcpy(buf->data() + ShiftOffset, &v, 8); - changed = true; - } - -diff --git a/src/quick/scenegraph/shaders_ng/24bittextmask.frag b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -index bc3826a924..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/24bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -index 63e445f90b..4198a4d339 100644 ---- a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -+++ b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask.frag b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -index 6304e821ff..a06743876d 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -index 0d0fa1cd3a..f725cbc5e7 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.frag b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -index 947d161a50..e2f82d3845 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -index 023f9dfdc2..4068e42f28 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -@@ -10,11 +10,12 @@ layout(location = 3) out vec2 sCoordLeft; - layout(location = 4) out vec2 sCoordRight; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -@@ -28,6 +29,6 @@ void main() - sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale; - sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale; - sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -index 5b7bd9ca82..274d891a3c 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.frag b/src/quick/scenegraph/shaders_ng/styledtext.frag -index 0b16396037..2e380dfeae 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert b/src/quick/scenegraph/shaders_ng/styledtext.vert -index beadf07c79..271dae8d8a 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.vert -+++ b/src/quick/scenegraph/shaders_ng/styledtext.vert -@@ -7,7 +7,8 @@ layout(location = 0) out vec2 sampleCoord; - layout(location = 1) out vec2 shiftedSampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -22,6 +23,6 @@ void main() - { - sampleCoord = tCoord * ubuf.textureScale; - shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/styledtext_a.frag b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -index b673137895..62e162c851 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.frag b/src/quick/scenegraph/shaders_ng/textmask.frag -index 518d5c965f..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.frag -+++ b/src/quick/scenegraph/shaders_ng/textmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert b/src/quick/scenegraph/shaders_ng/textmask.vert -index 9d80d5dadb..e0b3c01bce 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.vert -+++ b/src/quick/scenegraph/shaders_ng/textmask.vert -@@ -6,7 +6,8 @@ layout(location = 1) in vec2 tCoord; - layout(location = 0) out vec2 sampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -17,6 +18,6 @@ out gl_PerVertex { vec4 gl_Position; }; - void main() - { - sampleCoord = tCoord * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -new file mode 100644 -index 0000000000..c60fc4d8b0 ---- /dev/null -+++ b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -@@ -0,0 +1,91 @@ -+import QtQuick 2.0 -+ -+//vary font style, native rendering at non-integer offsets -+ -+Item { -+ id: topLevel -+ width: 320 -+ height: 580 -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 100.5 + 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 200.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 300.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Rectangle { -+ y: 400.5 + 20 * index -+ x: 0.5 -+ width: topLevel.width -+ height: topLevel.height -+ clip: true -+ Text { -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ } -+} --- -2.37.3 - diff --git a/0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch b/0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch similarity index 94% rename from 0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch rename to 0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch index e0edbc9..b7b7d58 100644 --- a/0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch +++ b/0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch @@ -1,7 +1,7 @@ -From da454326a35facfe70b0f672b3d42fed9804607b Mon Sep 17 00:00:00 2001 +From ad102f786a12d0cc139bfbebea8edbab3dd8206d Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Tue, 16 Nov 2021 22:43:37 +0100 -Subject: [PATCH 11/20] Revert "Fix TapHandler so that it actually registers a +Subject: [PATCH 08/18] Revert "Fix TapHandler so that it actually registers a tap" This reverts commit 36e8ccd434f948e4f11a8f9d59139ec072e41ff5. diff --git a/0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch b/0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch similarity index 89% rename from 0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch rename to 0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch index a2e4fb3..fde8f4b 100644 --- a/0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch +++ b/0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch @@ -1,7 +1,7 @@ -From a3344d5b32e36e513de18eb3685652cd29d5ef93 Mon Sep 17 00:00:00 2001 +From 2d11778ce9348716ce936ce11c89ced58d8ec188 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 21 Dec 2021 09:20:17 +0100 -Subject: [PATCH 12/20] QQmlJs::FixedPoolArray: fix UB (precondition violation) +Subject: [PATCH 09/18] QQmlJs::FixedPoolArray: fix UB (precondition violation) in allocate() Says ubsan: diff --git a/0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch b/0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch similarity index 93% rename from 0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch rename to 0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch index 0c1b2d6..a3c1aa3 100644 --- a/0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch +++ b/0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch @@ -1,7 +1,7 @@ -From 757782a0a62b90b223e6e008287b4cafc91beff1 Mon Sep 17 00:00:00 2001 +From eb04ee7e02c5e7a2b84b129c09f13025242688d6 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 3 Feb 2022 10:02:06 +0100 -Subject: [PATCH 13/20] V4: Do not call dtor of an object we continue to use +Subject: [PATCH 10/18] V4: Do not call dtor of an object we continue to use After destroyObject(), the QObjectWrapper is still alive. We might use its heap object again. Furthermore, the Heap::QObjectWrapper dtor does diff --git a/0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch b/0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch similarity index 96% rename from 0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch rename to 0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch index bd9fe49..bedaf01 100644 --- a/0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch +++ b/0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch @@ -1,7 +1,7 @@ -From b4b283555f446ecfecb3f73f620c9ced2b261031 Mon Sep 17 00:00:00 2001 +From 436f3c0550f64b4cb629480a6b7ceb1381f30501 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Sat, 29 Jan 2022 21:59:33 +0200 -Subject: [PATCH 14/20] Make sure QQuickWidget and its offscreen window's +Subject: [PATCH 11/18] Make sure QQuickWidget and its offscreen window's screens are always in sync By default, the offscreen window is placed on the primary screen. diff --git a/0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch b/0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch similarity index 97% rename from 0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch rename to 0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch index 1cf55f1..50f9d95 100644 --- a/0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch +++ b/0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch @@ -1,7 +1,7 @@ -From 731025928d89403dbe8cdc79c40dddeb8d68a7e1 Mon Sep 17 00:00:00 2001 +From 74c8c421763597f778313ea976fffdc03183226b Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Wed, 4 May 2022 09:10:54 +0200 -Subject: [PATCH 15/20] QQuickItem: Guard against cycles in +Subject: [PATCH 12/18] QQuickItem: Guard against cycles in nextPrevItemInTabFocusChain MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -37,7 +37,7 @@ Reviewed-by: Volker Hilsheimer create mode 100644 tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp -index 64123c82c4..aede212126 100644 +index 75f1457816..9de244ed9e 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -59,6 +59,7 @@ diff --git a/0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch b/0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch similarity index 93% rename from 0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch rename to 0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch index fcb063e..241a805 100644 --- a/0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch +++ b/0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch @@ -1,7 +1,7 @@ -From 920c4e95b85f7f06b58ac1016ca01ecb4043e755 Mon Sep 17 00:00:00 2001 +From 76113c63af23d516f488f5e6b9062ca97e062e9e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 16 Jul 2019 11:23:37 +0200 -Subject: [PATCH 16/20] QSGOpenGLDistanceFieldGlyphCache: fix multiplication +Subject: [PATCH 13/18] QSGOpenGLDistanceFieldGlyphCache: fix multiplication result truncation The type of the expression int * int is int, so truncation has already diff --git a/0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch b/0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch similarity index 96% rename from 0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch rename to 0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch index a016ba0..63d6cf3 100644 --- a/0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch +++ b/0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch @@ -1,7 +1,7 @@ -From 98e65ca71e389ad3e36aa3461ad4617815f9cd9a Mon Sep 17 00:00:00 2001 +From 985358efb1e60a8ff493da4d6ca9056f63dc9982 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 16 Jul 2019 11:31:01 +0200 -Subject: [PATCH 17/20] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of +Subject: [PATCH 14/18] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of pointers not from the same array) The code performed out of bounds checks by adding the size of the diff --git a/0018-Fix-Flickable-wheel-velocity-calculation.patch b/0015-Fix-Flickable-wheel-velocity-calculation.patch similarity index 98% rename from 0018-Fix-Flickable-wheel-velocity-calculation.patch rename to 0015-Fix-Flickable-wheel-velocity-calculation.patch index 07b0124..f8837b2 100644 --- a/0018-Fix-Flickable-wheel-velocity-calculation.patch +++ b/0015-Fix-Flickable-wheel-velocity-calculation.patch @@ -1,7 +1,7 @@ -From 79fa06279d26de7da111ddc88201324e55d68e8a Mon Sep 17 00:00:00 2001 +From 8dbc2a0a112752ab85c688ba66e86e5598896aae Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Tue, 4 May 2021 10:12:39 +0200 -Subject: [PATCH 18/20] Fix Flickable wheel velocity calculation +Subject: [PATCH 15/18] Fix Flickable wheel velocity calculation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -90,7 +90,7 @@ Reviewed-by: Richard Moe Gustavsen 5 files changed, 107 insertions(+), 31 deletions(-) diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp -index 9a68be4c49..efb2f11d02 100644 +index e12e85db64..9eea0e1487 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -263,7 +263,8 @@ QQuickFlickablePrivate::QQuickFlickablePrivate() @@ -240,7 +240,7 @@ index 9a68be4c49..efb2f11d02 100644 } void QQuickFlickable::viewportMoved(Qt::Orientations orient) -@@ -2491,9 +2512,23 @@ void QQuickFlickable::setMaximumFlickVelocity(qreal v) +@@ -2504,9 +2525,23 @@ void QQuickFlickable::setMaximumFlickVelocity(qreal v) /*! \qmlproperty real QtQuick::Flickable::flickDeceleration @@ -267,7 +267,7 @@ index 9a68be4c49..efb2f11d02 100644 */ qreal QQuickFlickable::flickDeceleration() const { -@@ -2506,7 +2541,7 @@ void QQuickFlickable::setFlickDeceleration(qreal deceleration) +@@ -2519,7 +2554,7 @@ void QQuickFlickable::setFlickDeceleration(qreal deceleration) Q_D(QQuickFlickable); if (deceleration == d->deceleration) return; diff --git a/0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch b/0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch similarity index 80% rename from 0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch rename to 0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch index 6480d2d..8eb6c76 100644 --- a/0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch +++ b/0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch @@ -1,14 +1,14 @@ -From e1ecf1c4e09b2f1d04f94971771019e59a50679f Mon Sep 17 00:00:00 2001 +From 46e932d87ffd6b2437b0411dd792112f5d4380fa Mon Sep 17 00:00:00 2001 From: Wolfgang Frisch Date: Thu, 19 May 2022 00:55:50 +0200 -Subject: [PATCH 19/20] Fix Flickable with QTBUG-56075 patch applied +Subject: [PATCH 16/18] Fix Flickable with QTBUG-56075 patch applied --- src/quick/items/qquickflickable.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp -index efb2f11d02..2a5b16c31a 100644 +index 9eea0e1487..2fa3b7142c 100644 --- a/src/quick/items/qquickflickable.cpp +++ b/src/quick/items/qquickflickable.cpp @@ -62,6 +62,8 @@ diff --git a/0020-Reset-currentChanges-if-currentChanges-is-active-whe.patch b/0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch similarity index 89% rename from 0020-Reset-currentChanges-if-currentChanges-is-active-whe.patch rename to 0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch index c55b290..e7c8df8 100644 --- a/0020-Reset-currentChanges-if-currentChanges-is-active-whe.patch +++ b/0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch @@ -1,7 +1,7 @@ -From b3aaf1482c48bbc0ca4f7c7934597c055afe4b6a Mon Sep 17 00:00:00 2001 +From 10d77845723f1e7fa60bbb0f60f708949f3a538c Mon Sep 17 00:00:00 2001 From: Tony Leinonen Date: Thu, 21 Oct 2021 14:44:02 +0300 -Subject: [PATCH 20/20] Reset currentChanges if currentChanges is active when +Subject: [PATCH 17/18] Reset currentChanges if currentChanges is active when refilling listView currentIndex was not getting updated because itemViewChangeSet was left @@ -21,7 +21,7 @@ Reviewed-by: Richard Moe Gustavsen 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp -index 010a0152e1..f8ad168a17 100644 +index 13e7b87049..c8ea286d3e 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1785,7 +1785,7 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to) diff --git a/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch b/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch new file mode 100644 index 0000000..d51482e --- /dev/null +++ b/0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch @@ -0,0 +1,94 @@ +From 45d43c04088efb8346979f633f72bb1f23183461 Mon Sep 17 00:00:00 2001 +From: Mitch Curtis +Date: Thu, 4 Nov 2021 10:41:28 +0100 +Subject: [PATCH 18/18] Revert "Fix ListView.isCurrentItem when used with + DelegateModel" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit d9f9d773e92940786f159897623618f3bf6bcf0f. + +It causes a heap-use-after-free in tst_swipeview.qml. + +Task-number: QTBUG-97423 +Pick-to: 5.15 6.1 6.2 +Change-Id: I42e9831ae1399a010df28c39496a7778121f5e35 +Reviewed-by: Jan Arve Sæther +Reviewed-by: Oliver Eftevaag +(cherry picked from commit 5d656b31eb371c9e0bb97c558f9193b08471f1d7) +--- + src/quick/items/qquickitemview.cpp | 2 -- + .../quick/qquicklistview/data/qtbug86744.qml | 21 ------------------- + .../qquicklistview/tst_qquicklistview.cpp | 14 ------------- + 3 files changed, 37 deletions(-) + delete mode 100644 tests/auto/quick/qquicklistview/data/qtbug86744.qml + +diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp +index c8ea286d3e..f8ad168a17 100644 +--- a/src/quick/items/qquickitemview.cpp ++++ b/src/quick/items/qquickitemview.cpp +@@ -2402,8 +2402,6 @@ void QQuickItemView::createdItem(int index, QObject* object) + d->repositionPackageItemAt(item, index); + else if (index == d->currentIndex) + d->updateCurrent(index); +- } else if (index == d->currentIndex) { +- d->updateCurrent(index); + } + } + +diff --git a/tests/auto/quick/qquicklistview/data/qtbug86744.qml b/tests/auto/quick/qquicklistview/data/qtbug86744.qml +deleted file mode 100644 +index 6dc82d57eb..0000000000 +--- a/tests/auto/quick/qquicklistview/data/qtbug86744.qml ++++ /dev/null +@@ -1,21 +0,0 @@ +-import QtQuick 2.15 +-import QtQml.Models 2.15 +- +-Item { +- height: 200 +- width: 100 +- DelegateModel { +- id: dm +- model: 2 +- delegate: Item { +- width: 100; height: 20 +- property bool isCurrent: ListView.isCurrentItem +- } +- } +- ListView { +- objectName: "listView" +- model: dm +- currentIndex: 1 +- anchors.fill: parent +- } +-} +diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +index df329f8318..b564fd3ba5 100644 +--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp ++++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp +@@ -10201,20 +10201,6 @@ void tst_QQuickListView::dragDelegateWithMouseArea_data() + } + } + +-void tst_QQuickListView::isCurrentItem_DelegateModel() +-{ +- QScopedPointer window(createView()); +- window->setSource(testFileUrl("qtbug86744.qml")); +- window->resize(640, 480); +- window->show(); +- QVERIFY(QTest::qWaitForWindowExposed(window.data())); +- +- QQuickListView* listView = window->rootObject()->findChild("listView"); +- QVERIFY(listView); +- QVariant value = listView->itemAtIndex(1)->property("isCurrent"); +- QVERIFY(value.toBool() == true); +-} +- + QTEST_MAIN(tst_QQuickListView) + + #include "tst_qquicklistview.moc" +-- +2.37.3 + diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index 34d407a..f5f6b75 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -11,7 +11,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} -Version: 5.15.6 +Version: 5.15.7 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -27,27 +27,26 @@ Source5: qv4global_p-multilib.h ## upstream patches ## repo: https://invent.kde.org/qt/qt/qtdeclarative ## branch: kde/5.15 -## git format-patch v5.15.6-lts-lgpl -Patch1: 0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch -Patch2: 0002-Support-apos-in-styled-text.patch -Patch3: 0003-Remove-unused-QPointer-QQuickPointerMask.patch -Patch4: 0004-Include-limits-in-Yarr.h-to-fix-build-with-GCC-11.patch -Patch5: 0005-QQuickLoader-Do-not-incubate-if-the-source-arrives-a.patch -Patch6: 0006-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch -Patch7: 0007-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch -Patch8: 0008-Fix-distorted-text-with-subpixel-matrix-translation.patch -Patch0: 0009-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch -Patch10: 0010-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch -Patch11: 0011-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch -Patch12: 0012-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch -Patch13: 0013-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch -Patch14: 0014-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch -Patch15: 0015-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch -Patch16: 0016-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch -Patch17: 0017-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch -Patch18: 0018-Fix-Flickable-wheel-velocity-calculation.patch -Patch19: 0019-Fix-Flickable-with-QTBUG-56075-patch-applied.patch -Patch20: 0020-Reset-currentChanges-if-currentChanges-is-active-whe.patch +## git format-patch v5.15.7-lts-lgpl +Patch01: 0001-Document-that-StyledText-also-supports-nbsp-and-quot.patch +Patch02: 0002-Support-apos-in-styled-text.patch +Patch03: 0003-Remove-unused-QPointer-QQuickPointerMask.patch +Patch04: 0004-QQmlDelegateModel-Refresh-the-view-when-a-column-is-.patch +Patch05: 0005-Fix-sweep-step-for-tainted-QObject-JavaScript-wrappe.patch +Patch06: 0006-Revert-Fix-for-possible-crash-in-QSGDefaultLayer-gra.patch +Patch07: 0007-Fix-TapHandler-so-that-it-actually-registers-a-tap.patch +Patch08: 0008-Revert-Fix-TapHandler-so-that-it-actually-registers-.patch +Patch09: 0009-QQmlJs-FixedPoolArray-fix-UB-precondition-violation-.patch +Patch10: 0010-V4-Do-not-call-dtor-of-an-object-we-continue-to-use.patch +Patch11: 0011-Make-sure-QQuickWidget-and-its-offscreen-window-s-sc.patch +Patch12: 0012-QQuickItem-Guard-against-cycles-in-nextPrevItemInTab.patch +Patch13: 0013-QSGOpenGLDistanceFieldGlyphCache-fix-multiplication-.patch +Patch14: 0014-QSGOpenGLDistanceFieldGlyphCache-fix-UB-ordering-of-.patch +Patch15: 0015-Fix-Flickable-wheel-velocity-calculation.patch +Patch16: 0016-Fix-Flickable-with-QTBUG-56075-patch-applied.patch +Patch17: 0017-Reset-currentChanges-if-currentChanges-is-active-whe.patch +Patch18: 0018-Revert-Fix-ListView.isCurrentItem-when-used-with-Del.patch + ## upstreamable patches Patch100: %{name}-gcc11.patch @@ -230,6 +229,9 @@ make check -k -C tests ||: %changelog +* Mon Oct 31 2022 Jan Grulich - 5.15.7-1 +- 5.15.7 + * Tue Sep 20 2022 Jan Grulich - 5.15.6-1 - 5.15.6 diff --git a/sources b/sources index 96fa38b..8259c68 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (qtdeclarative-everywhere-opensource-src-5.15.6.tar.xz) = a4824b6ec2de5e78819b726850767db6d4280208d6cc985219f4c33b6b0dcd6194557f32b577df97b0596d157190aa9c00e99bf6879554936a356fa7afe8a7d5 +SHA512 (qtdeclarative-everywhere-opensource-src-5.15.7.tar.xz) = 909721a7c756ad3f55fa30b539ddd7f459449edc599883a4e04acbe6f1cecaf44b3a5f2b3b17adb83adaf8cd3e1e5e7e09829b30b0df3dacb1e203892b996508