* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2018-04-15 17:15 Andreas Sturmlechner
0 siblings, 0 replies; 10+ messages in thread
From: Andreas Sturmlechner @ 2018-04-15 17:15 UTC (permalink / raw
To: gentoo-commits
commit: d6f36672e351416d761178757a021c57e6e18560
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Apr 15 15:32:35 2018 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Apr 15 17:15:21 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d6f36672
dev-qt/qtdeclarative: Backport fix for textures memleak
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=368838
See also: https://codereview.qt-project.org/#/c/224684/
https://pointieststick.wordpress.com/2018/04/14/this-week-in-usability-productivity-part-14/
Tested-by: bitlord, stikonas in #gentoo-kde
Package-Manager: Portage-2.3.28, Repoman-2.3.9
.../qtdeclarative-5.9.5-texture-memleak.patch | 59 ++++++++++++++++++++++
dev-qt/qtdeclarative/qtdeclarative-5.9.5-r1.ebuild | 58 +++++++++++++++++++++
2 files changed, 117 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.9.5-texture-memleak.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.9.5-texture-memleak.patch
new file mode 100644
index 00000000000..c2a143ecbed
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.9.5-texture-memleak.patch
@@ -0,0 +1,59 @@
+From 839f09c65523fb5c419b62e078f72bb39285449a Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Wed, 28 Mar 2018 00:24:56 +0100
+Subject: [PATCH] Avoid marking hidden windows as updatePending in Gui render
+ loop
+
+Since eeb320bbd8763f3e72f79369cc3908e999a0da3c the GL context only
+deletes textures when all windows with pending updates have finished
+rendering.
+
+renderWindow will not process any window that is not visible. This
+leaves a logic bug that we can have the updatePending flag set but
+never cleared.
+
+If we have two windows, this leaves the other window still updating
+normally, but lastDirtyWindow will always be false and we never call
+endSync.
+
+This results in an effective memory leak of all textures.
+
+This patch resets the flag on hide() a move that can be considered safe
+given the show() method will reset this flag anyway.
+
+Change-Id: Iab0171716e27e31077a66b5e36a00bf28a2e7a8c
+Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
+Reviewed-by: Aleix Pol
+Reviewed-by: Andy Nichols <andy.nichols@qt.io>
+---
+ src/quick/scenegraph/qsgrenderloop.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp
+index 60f3538662..2eaed497ef 100644
+--- a/src/quick/scenegraph/qsgrenderloop.cpp
++++ b/src/quick/scenegraph/qsgrenderloop.cpp
+@@ -305,6 +305,8 @@ void QSGGuiThreadRenderLoop::hide(QQuickWindow *window)
+ {
+ QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window);
+ cd->fireAboutToStop();
++ if (m_windows.contains(window))
++ m_windows[window].updatePending = false;
+ }
+
+ void QSGGuiThreadRenderLoop::windowDestroyed(QQuickWindow *window)
+@@ -494,7 +496,8 @@ QImage QSGGuiThreadRenderLoop::grab(QQuickWindow *window)
+
+ void QSGGuiThreadRenderLoop::maybeUpdate(QQuickWindow *window)
+ {
+- if (!m_windows.contains(window))
++ QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window);
++ if (!cd->isRenderable() || !m_windows.contains(window))
+ return;
+
+ m_windows[window].updatePending = true;
+--
+2.16.3
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.9.5-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.9.5-r1.ebuild
new file mode 100644
index 00000000000..393f329132b
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.9.5-r1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+inherit python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~x86 ~amd64-fbsd"
+fi
+
+IUSE="gles2 +jit localstorage +widgets xml"
+
+# qtgui[gles2=] is needed because of bug 504322
+COMMON_DEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}[gles2=]
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qttest-${PV}
+ localstorage? ( ~dev-qt/qtsql-${PV} )
+ widgets? ( ~dev-qt/qtwidgets-${PV}[gles2=] )
+ xml? (
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qtxmlpatterns-${PV}
+ )
+"
+DEPEND="${COMMON_DEPEND}
+ ${PYTHON_DEPS}
+"
+RDEPEND="${COMMON_DEPEND}
+ !<dev-qt/qtquickcontrols-5.7:5
+"
+
+PATCHES=( "${FILESDIR}/${P}-texture-memleak.patch" )
+
+src_prepare() {
+ use jit || PATCHES+=("${FILESDIR}/${PN}-5.4.2-disable-jit.patch")
+
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt_use_disable_mod xml xmlpatterns \
+ src/imports/imports.pro \
+ tests/auto/quick/quick.pro \
+ tests/auto/quick/examples/examples.pro
+
+ qt5-build_src_prepare
+}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2019-11-20 21:21 Andreas Sturmlechner
0 siblings, 0 replies; 10+ messages in thread
From: Andreas Sturmlechner @ 2019-11-20 21:21 UTC (permalink / raw
To: gentoo-commits
commit: c501b6c8adce80fc35e846f4aebfc6e3007f07cc
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 16 12:45:21 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Nov 20 21:20:42 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c501b6c8
dev-qt/qtdeclarative: Handle reads of QQmlPropertyMap correctly
Package-Manager: Portage-2.3.79, Repoman-2.3.17
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...ive-5.13.2-read-QQmlPropertyMap-correctly.patch | 92 ++++++++++++++++++++++
.../qtdeclarative/qtdeclarative-5.13.2-r1.ebuild | 57 ++++++++++++++
2 files changed, 149 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-read-QQmlPropertyMap-correctly.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-read-QQmlPropertyMap-correctly.patch
new file mode 100644
index 00000000000..63f4235c9e7
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.13.2-read-QQmlPropertyMap-correctly.patch
@@ -0,0 +1,92 @@
+From bcbc3c9cec1f7d7bb8c9d5f5ea94eb5c81ec2853 Mon Sep 17 00:00:00 2001
+From: Fabian Kosmale <fabian.kosmale@qt.io>
+Date: Wed, 30 Oct 2019 10:15:23 +0100
+Subject: [PATCH] QQmlProperty: handle reads of QQmlPropertyMap correctly
+
+Fixes: QTBUG-79614
+Change-Id: Iaf84c0178dc88072a367da2b42b09554b85c7d57
+Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
+---
+ src/qml/qml/qqmlproperty.cpp | 12 +++++++++---
+ tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp | 21 +++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 3 deletions(-)
+
+diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp
+index c8166695bad..a394ed1ad9a 100644
+--- a/src/qml/qml/qqmlproperty.cpp
++++ b/src/qml/qml/qqmlproperty.cpp
+@@ -63,6 +63,7 @@
+ #include <private/qqmlvaluetypewrapper_p.h>
+ #include <QtCore/qdebug.h>
+ #include <cmath>
++#include <QtQml/QQmlPropertyMap>
+
+ Q_DECLARE_METATYPE(QList<int>)
+ Q_DECLARE_METATYPE(QList<qreal>)
+@@ -331,10 +332,15 @@ void QQmlPropertyPrivate::initProperty(QObject *obj, const QString &name)
+
+ return;
+ } else {
+- if (!property->isQObject())
+- return; // Not an object property
++ if (!property->isQObject()) {
++ if (auto asPropertyMap = qobject_cast<QQmlPropertyMap*>(currentObject))
++ currentObject = asPropertyMap->value(path.at(ii).toString()).value<QObject*>();
++ else
++ return; // Not an object property, and not a property map
++ } else {
++ property->readProperty(currentObject, ¤tObject);
++ }
+
+- property->readProperty(currentObject, ¤tObject);
+ if (!currentObject) return; // No value
+
+ }
+diff --git a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp
+index 27e06c6f674..ed213cd01aa 100644
+--- a/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp
++++ b/tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp
+@@ -37,6 +37,7 @@
+ #include <QtCore/qdir.h>
+ #include <QtCore/private/qobject_p.h>
+ #include "../../shared/util.h"
++#include <QtQml/QQmlPropertyMap>
+
+ #include <QDebug>
+ class MyQmlObject : public QObject
+@@ -149,6 +150,8 @@ private slots:
+ void floatToStringPrecision();
+
+ void copy();
++
++ void nestedQQmlPropertyMap();
+ private:
+ QQmlEngine engine;
+ };
+@@ -2106,6 +2109,24 @@ void tst_qqmlproperty::initTestCase()
+ qmlRegisterType<MyContainer>("Test",1,0,"MyContainer");
+ }
+
++void tst_qqmlproperty::nestedQQmlPropertyMap()
++{
++ QQmlPropertyMap mainPropertyMap;
++ QQmlPropertyMap nestedPropertyMap;
++ QQmlPropertyMap deeplyNestedPropertyMap;
++
++ mainPropertyMap.insert("nesting1", QVariant::fromValue(&nestedPropertyMap));
++ nestedPropertyMap.insert("value", 42);
++ nestedPropertyMap.insert("nesting2", QVariant::fromValue(&deeplyNestedPropertyMap));
++ deeplyNestedPropertyMap.insert("value", "success");
++
++ QQmlProperty value{&mainPropertyMap, "nesting1.value"};
++ QCOMPARE(value.read().toInt(), 42);
++
++ QQmlProperty success{&mainPropertyMap, "nesting1.nesting2.value"};
++ QCOMPARE(success.read().toString(), QLatin1String("success"));
++}
++
+ QTEST_MAIN(tst_qqmlproperty)
+
+ #include "tst_qqmlproperty.moc"
+--
+2.16.3
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild
new file mode 100644
index 00000000000..90abd95d64f
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.13.2-r1.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2009-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python2_7 python3_{5,6,7} )
+inherit python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~x86"
+fi
+
+IUSE="gles2 +jit localstorage +widgets"
+
+BDEPEND="${PYTHON_DEPS}"
+# qtgui[gles2=] is needed because of bug 504322
+DEPEND="
+ ~dev-qt/qtcore-${PV}
+ ~dev-qt/qtgui-${PV}[gles2=]
+ ~dev-qt/qtnetwork-${PV}
+ ~dev-qt/qttest-${PV}
+ localstorage? ( ~dev-qt/qtsql-${PV} )
+ widgets? ( ~dev-qt/qtwidgets-${PV}[gles2=] )
+"
+RDEPEND="${DEPEND}
+ !<dev-qt/qtquickcontrols-5.7:5
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-read-QQmlPropertyMap-correctly.patch" # QTBUG-79614
+)
+
+src_prepare() {
+ use jit || PATCHES+=("${FILESDIR}/${PN}-5.4.2-disable-jit.patch")
+
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt5-build_src_prepare
+}
+
+src_configure() {
+ local myqmakeargs=(
+ --
+ -qml-debug
+ )
+ qt5-build_src_configure
+}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2021-01-24 13:03 Andreas Sturmlechner
0 siblings, 0 replies; 10+ messages in thread
From: Andreas Sturmlechner @ 2021-01-24 13:03 UTC (permalink / raw
To: gentoo-commits
commit: 6733c610258ddf66de113f23dde026e31f7a8069
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 10 22:05:58 2021 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Jan 24 13:03:13 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6733c610
dev-qt/qtdeclarative: Fix build with GCC-11
Closes: https://bugs.gentoo.org/752093
Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
.../files/qtdeclarative-5.15.2-gcc11.patch | 31 ++++++++++++++++++++++
dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild | 1 +
2 files changed, 32 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-gcc11.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-gcc11.patch
new file mode 100644
index 00000000000..c5dd916912d
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.2-gcc11.patch
@@ -0,0 +1,31 @@
+From 543594243ad0006bf4d98998ecfa52b46242f0ed Mon Sep 17 00:00:00 2001
+From: Jeff Law <law@redhat.com>
+Date: Oct 16 2020 21:12:18 +0000
+Subject: Fix missing #include for gcc-11
+
+
+diff --git a/src/qml/jsruntime/qv4regexp.cpp b/src/qml/jsruntime/qv4regexp.cpp
+index 76daead8..4f707703 100644
+--- a/src/qml/jsruntime/qv4regexp.cpp
++++ b/src/qml/jsruntime/qv4regexp.cpp
+@@ -37,6 +37,7 @@
+ **
+ ****************************************************************************/
+
++#include <limits>
+ #include "qv4regexp_p.h"
+ #include "qv4engine_p.h"
+ #include "qv4scopedvalue_p.h"
+diff --git a/src/qmldebug/qqmlprofilerevent_p.h b/src/qmldebug/qqmlprofilerevent_p.h
+index a7e37d19..21c3b465 100644
+--- a/src/qmldebug/qqmlprofilerevent_p.h
++++ b/src/qmldebug/qqmlprofilerevent_p.h
+@@ -40,6 +40,8 @@
+ #ifndef QQMLPROFILEREVENT_P_H
+ #define QQMLPROFILEREVENT_P_H
+
++#include <limits>
++
+ #include "qqmlprofilerclientdefinitions_p.h"
+
+ #include <QtCore/qstring.h>
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
index 91ee527902f..e4bb580355c 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.15.2.ebuild
@@ -30,6 +30,7 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}/${PN}-5.14.2-QQuickItemView-fix-maxXY-extent.patch" # QTBUG-83890
+ "${FILESDIR}/${P}-gcc11.patch" # bug 752093
)
src_prepare() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2022-12-10 12:25 Andreas Sturmlechner
0 siblings, 0 replies; 10+ messages in thread
From: Andreas Sturmlechner @ 2022-12-10 12:25 UTC (permalink / raw
To: gentoo-commits
commit: 0207ab30fffe152804e4a288a0f2e01d224ec4da
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 10 12:12:12 2022 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Dec 10 12:23:49 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0207ab30
dev-qt/qtdeclarative: a11y: track item enabled state
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...tive-5.15.7-a11y-track-item-enabled-state.patch | 57 ++++++++++++++++++
.../qtdeclarative/qtdeclarative-5.15.7-r1.ebuild | 68 ++++++++++++++++++++++
2 files changed, 125 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-5.15.7-a11y-track-item-enabled-state.patch b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.7-a11y-track-item-enabled-state.patch
new file mode 100644
index 000000000000..e41838a34e30
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-5.15.7-a11y-track-item-enabled-state.patch
@@ -0,0 +1,57 @@
+From f697f2e1a4c5f60f3f09ae7d2e3d3dcd20854aef Mon Sep 17 00:00:00 2001
+From: Harald Sitter <sitter@kde.org>
+Date: Mon, 28 Nov 2022 14:59:33 +0100
+Subject: [PATCH 1/2] a11y: track item enabled state
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+disabled items are neither enabled nor focusable
+
+Change-Id: I4f286c7b85605d5ad6fa787d1f5cfcce1297d268
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
+(cherry picked from commit 20fd2902a6d7bdb4a3306005d2718ca5a8fef96d)
+---
+ src/quick/accessible/qaccessiblequickitem.cpp | 4 ++++
+ src/quick/items/qquickitem.cpp | 9 +++++++++
+ 2 files changed, 13 insertions(+)
+
+diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp
+index eb3df4d4cd..78e2ab302c 100644
+--- a/src/quick/accessible/qaccessiblequickitem.cpp
++++ b/src/quick/accessible/qaccessiblequickitem.cpp
+@@ -210,6 +210,10 @@ QAccessible::State QAccessibleQuickItem::state() const
+ if (role() == QAccessible::EditableText)
+ if (auto ti = qobject_cast<QQuickTextInput *>(item()))
+ state.passwordEdit = ti->echoMode() != QQuickTextInput::Normal;
++ if (!item()->isEnabled()) {
++ state.focusable = false;
++ state.disabled = true;
++ }
+ return state;
+ }
+
+diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
+index 4cf73ff73d..dec0ae19ae 100644
+--- a/src/quick/items/qquickitem.cpp
++++ b/src/quick/items/qquickitem.cpp
+@@ -6174,6 +6174,15 @@ void QQuickItemPrivate::setEffectiveEnableRecur(QQuickItem *scope, bool newEffec
+ }
+
+ itemChange(QQuickItem::ItemEnabledHasChanged, effectiveEnable);
++#if QT_CONFIG(accessibility)
++ if (isAccessible) {
++ QAccessible::State changedState;
++ changedState.disabled = true;
++ changedState.focusable = true;
++ QAccessibleStateChangeEvent ev(q, changedState);
++ QAccessible::updateAccessibility(&ev);
++ }
++#endif
+ emit q->enabledChanged();
+ }
+
+--
+2.38.1
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-5.15.7-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-5.15.7-r1.ebuild
new file mode 100644
index 000000000000..f92c424c84cb
--- /dev/null
+++ b/dev-qt/qtdeclarative/qtdeclarative-5.15.7-r1.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2009-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+if [[ ${PV} != *9999* ]]; then
+ QT5_KDEPATCHSET_REV=1
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
+fi
+
+PYTHON_COMPAT=( python3_{8..11} )
+inherit flag-o-matic python-any-r1 qt5-build
+
+DESCRIPTION="The QML and Quick modules for the Qt5 framework"
+
+IUSE="gles2-only +jit localstorage vulkan +widgets"
+
+# qtgui[gles2-only=] is needed because of bug 504322
+DEPEND="
+ =dev-qt/qtcore-${QT5_PV}*
+ =dev-qt/qtgui-${QT5_PV}*:5=[gles2-only=,vulkan=]
+ =dev-qt/qtnetwork-${QT5_PV}*
+ =dev-qt/qttest-${QT5_PV}*
+ media-libs/libglvnd
+ localstorage? ( =dev-qt/qtsql-${QT5_PV}* )
+ widgets? ( =dev-qt/qtwidgets-${QT5_PV}*[gles2-only=] )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="${PYTHON_DEPS}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-5.14.2-QQuickItemView-fix-maxXY-extent.patch" # QTBUG-83890
+ "${FILESDIR}/${P}-a11y-track-item-enabled-state.patch" # kde/5.15
+)
+
+src_prepare() {
+ qt_use_disable_mod localstorage sql \
+ src/imports/imports.pro
+
+ qt_use_disable_mod widgets widgets \
+ src/src.pro \
+ src/qmltest/qmltest.pro \
+ tests/auto/auto.pro \
+ tools/tools.pro \
+ tools/qmlscene/qmlscene.pro \
+ tools/qml/qml.pro
+
+ qt5-build_src_prepare
+}
+
+src_configure() {
+ replace-flags "-Os" "-O2" # bug 840861
+
+ local myqmakeargs=(
+ --
+ -qml-debug
+ $(qt_use jit feature-qml-jit)
+ )
+ qt5-build_src_configure
+}
+
+src_install() {
+ qt5-build_src_install
+ qt5_symlink_binary_to_path qml 5
+ qt5_symlink_binary_to_path qmleasing 5
+ qt5_symlink_binary_to_path qmlpreview 5
+ qt5_symlink_binary_to_path qmlscene 5
+}
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-10-08 18:19 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-10-08 18:19 UTC (permalink / raw
To: gentoo-commits
commit: b453f3146786c474326edb8764cf3a23f9ab7ebb
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 8 18:16:47 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Oct 8 18:18:48 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b453f314
dev-qt/qtdeclarative: drop QTBUG-129797 patch for now
spectacle still fails but with a different error, "possibly"
caused by the patch itself if not a different issue.
Will give this more time to be investigated upstream and
drop it to be safe for now.
Sorry for quick succession revbumps (albeit 6.8.0 is masked
anyway).
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.8.0-QTBUG-129797.patch | 19 -------------------
...-6.8.0-r1.ebuild => qtdeclarative-6.8.0-r2.ebuild} | 1 -
2 files changed, 20 deletions(-)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
deleted file mode 100644
index 12c15ad1accd..000000000000
--- a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-https://bugs.kde.org/show_bug.cgi?id=494281
-https://bugreports.qt.io/browse/QTBUG-129797
-https://codereview.qt-project.org/c/qt/qtdeclarative/+/596457
---- a/src/qmlcompiler/qqmljscodegenerator.cpp
-+++ b/src/qmlcompiler/qqmljscodegenerator.cpp
-@@ -79,5 +79,5 @@
- + (m_jsUnitGenerator->hasStringId(elementName)
- ? QString::number(m_jsUnitGenerator->getStringId(elementName))
-- : u'"' + elementName + u'"') + u")"_s;
-+ : u"QStringLiteral(\"%1\")"_s.arg(elementName));
- }
-
-@@ -87,5 +87,5 @@
- + (m_jsUnitGenerator->hasStringId(elementName)
- ? QString::number(m_jsUnitGenerator->getStringId(elementName))
-- : u'"' + elementName + u'"') + u")"_s;
-+ : u"QStringLiteral(\"%1\")"_s.arg(elementName));
- }
-
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild
index 41fbd3c4f304..749123d1c04f 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r1.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild
@@ -35,7 +35,6 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
- "${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
)
src_configure() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-10-10 1:27 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-10-10 1:27 UTC (permalink / raw
To: gentoo-commits
commit: 0f87690bf7284775cc0d44775a7d1fc1a8751921
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 10 01:11:38 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Thu Oct 10 01:27:28 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f87690b
dev-qt/qtdeclarative: backport fix for QTBUG-129797 take two
Closes: https://bugs.gentoo.org/941172
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.8.0-QTBUG-129797.patch | 24 ++++++++++++++++++++++
...8.0-r2.ebuild => qtdeclarative-6.8.0-r3.ebuild} | 1 +
2 files changed, 25 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
new file mode 100644
index 000000000000..e43e65c992d6
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129797.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/941172
+https://bugs.kde.org/show_bug.cgi?id=494281
+https://bugreports.qt.io/browse/QTBUG-129797
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/596457
+--- a/src/qmlcompiler/qqmljscodegenerator.cpp
++++ b/src/qmlcompiler/qqmljscodegenerator.cpp
+@@ -78,6 +78,6 @@
+ return u"QQmlPrivate::compositeListMetaType(aotContext->compilationUnit, "_s
+ + (m_jsUnitGenerator->hasStringId(elementName)
+- ? QString::number(m_jsUnitGenerator->getStringId(elementName))
+- : u'"' + elementName + u'"') + u")"_s;
++ ? QString::number(m_jsUnitGenerator->getStringId(elementName)) + u')'
++ : u"QStringLiteral(\"%1\"))"_s.arg(elementName));
+ }
+
+@@ -86,6 +86,6 @@
+ return u"QQmlPrivate::compositeMetaType(aotContext->compilationUnit, "_s
+ + (m_jsUnitGenerator->hasStringId(elementName)
+- ? QString::number(m_jsUnitGenerator->getStringId(elementName))
+- : u'"' + elementName + u'"') + u")"_s;
++ ? QString::number(m_jsUnitGenerator->getStringId(elementName)) + u')'
++ : u"QStringLiteral(\"%1\"))"_s.arg(elementName));
+ }
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
index 749123d1c04f..41fbd3c4f304 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r2.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r3.ebuild
@@ -35,6 +35,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+ "${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
)
src_configure() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-10-19 22:20 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-10-19 22:20 UTC (permalink / raw
To: gentoo-commits
commit: 419035b78d22c5d4ef2fe8f0240c70c771d2a4fe
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 19 22:06:54 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sat Oct 19 22:19:55 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=419035b7
dev-qt/qtdeclarative: backport QTBUG-129165 fix for kcm_pulseaudio
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.7.3-QTBUG-129165.patch | 162 +++++++++++++++++++++
...7.3-r2.ebuild => qtdeclarative-6.7.3-r3.ebuild} | 1 +
2 files changed, 163 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129165.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129165.patch
new file mode 100644
index 000000000000..78ea5f72a341
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.7.3-QTBUG-129165.patch
@@ -0,0 +1,162 @@
+Recommended backport from 6.8.0 to prevent a crash with kcm_pulseaudio.
+https://bugreports.qt.io/browse/QTBUG-129165
+https://bugs.kde.org/show_bug.cgi?id=493266
+(kde bug mentions is for 6.8.0, but was seemingly the -rc without the fix)
+--- a/src/quick/items/qquickitemview.cpp
++++ b/src/quick/items/qquickitemview.cpp
+@@ -11,4 +11,5 @@
+
+ Q_LOGGING_CATEGORY(lcItemViewDelegateLifecycle, "qt.quick.itemview.lifecycle")
++Q_LOGGING_CATEGORY(lcCount, "qt.quick.itemview.count")
+
+ // Default cacheBuffer for all views.
+@@ -224,5 +225,5 @@
+ if (QQmlDelegateModel *dataModel = qobject_cast<QQmlDelegateModel*>(d->model))
+ QObjectPrivate::connect(dataModel, &QQmlDelegateModel::delegateChanged, d, &QQuickItemViewPrivate::applyDelegateChange);
+- emit countChanged();
++ d->emitCountChanged();
+ }
+ emit modelChanged();
+@@ -256,5 +257,5 @@
+ dataModel->setDelegate(delegate);
+ if (oldCount != dataModel->count())
+- emit countChanged();
++ d->emitCountChanged();
+ }
+ emit delegateChanged();
+@@ -1126,4 +1127,12 @@
+ }
+
++// Simplifies debugging of count.
++void QQuickItemViewPrivate::emitCountChanged()
++{
++ Q_Q(QQuickItemView);
++ qCDebug(lcCount).nospace() << "about to emit countChanged for " << q << "; count changed to " << q->count();
++ emit q->countChanged();
++}
++
+ void QQuickItemViewPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change,
+ const QRectF &oldGeometry)
+@@ -1225,5 +1234,5 @@
+ }
+ d->moveReason = QQuickItemViewPrivate::Other;
+- emit countChanged();
++ d->emitCountChanged();
+ #if QT_CONFIG(quick_viewtransitions)
+ if (d->transitioner && d->transitioner->populateTransition)
+@@ -1488,5 +1497,5 @@
+ }
+ if (d->model && d->model->count())
+- emit countChanged();
++ d->emitCountChanged();
+ }
+
+@@ -1814,5 +1823,5 @@
+
+ if (prevCount != itemCount)
+- emit q->countChanged();
++ emitCountChanged();
+ } while (currentChanges.hasPendingChanges() || bufferedChanges.hasPendingChanges());
+ storeFirstVisibleItemPosition();
+@@ -1865,4 +1874,14 @@
+ // views (see tst_QQuickListView::resizeView).
+ if ((!isValid() && !visibleItems.size()) || q->size().isNull()) {
++ if (q->size().isNull() && hasPendingChanges()) {
++ // count() refers to the number of items in the model, not in the view
++ // (which is why we don't emit for the !visibleItems.size() case).
++ // If there are pending model changes, emit countChanged in order to
++ // support the use case of QTBUG-129165, where visible is bound to count > 0
++ // and the ListView is in a layout with Layout.preferredHeight bound to
++ // contentHeight. This ensures that a hidden ListView will become visible.
++ emitCountChanged();
++ }
++
+ clear();
+ setPosition(contentStartOffset());
+@@ -2139,5 +2158,5 @@
+ updateSections();
+ if (prevItemCount != itemCount)
+- emit q->countChanged();
++ emitCountChanged();
+ if (!visibleAffected && viewportChanged)
+ updateViewport();
+--- a/src/quick/items/qquickitemview_p_p.h
++++ b/src/quick/items/qquickitemview_p_p.h
+@@ -230,4 +230,6 @@
+ }
+
++ void emitCountChanged();
++
+ virtual QQuickItemViewAttached *getAttachedObject(const QObject *) const { return nullptr; }
+
+--- a/tests/auto/quick/qquicklistview2/data/visibleBoundToCountGreaterThanZero.qml
++++ b/tests/auto/quick/qquicklistview2/data/visibleBoundToCountGreaterThanZero.qml
+@@ -0,0 +1,31 @@
++import QtQuick
++import QtQuick.Layouts
++
++ColumnLayout {
++ property alias listView: listView
++
++ ListView {
++ id: listView
++
++ visible: count > 0 // actual defect. countChanged never fires so this never turns true
++
++ Layout.fillWidth: true
++ Layout.preferredHeight: contentHeight // grow with content, initially 0
++
++ model: ListModel {
++ id: idModel
++ }
++
++ delegate: Text {
++ required property string name
++ text: name
++ }
++
++ Timer {
++ running: true
++ interval: 10
++ repeat: true
++ onTriggered: idModel.append({name:"Hello"})
++ }
++ }
++}
+--- a/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp
++++ b/tests/auto/quick/qquicklistview2/tst_qquicklistview2.cpp
+@@ -19,4 +19,6 @@
+ using namespace QQuickVisualTestUtils;
+
++static const int oneSecondInMs = 1000;
++
+ class tst_QQuickListView2 : public QQmlDataTest
+ {
+@@ -69,4 +71,5 @@
+
+ void clearObjectListModel();
++ void visibleBoundToCountGreaterThanZero();
+
+ private:
+@@ -1313,4 +1316,21 @@
+ }
+
++void tst_QQuickListView2::visibleBoundToCountGreaterThanZero()
++{
++ QQuickView window;
++ QVERIFY(QQuickTest::showView(window, testFileUrl("visibleBoundToCountGreaterThanZero.qml")));
++
++ auto *listView = window.rootObject()->property("listView").value<QQuickListView *>();
++ QVERIFY(listView);
++
++ QSignalSpy countChangedSpy(listView, SIGNAL(countChanged()));
++ QVERIFY(countChangedSpy.isValid());
++
++ QTRY_COMPARE_GT_WITH_TIMEOUT(listView->count(), 1, oneSecondInMs);
++ // Using the TRY variant here as well is necessary.
++ QTRY_COMPARE_GT_WITH_TIMEOUT(countChangedSpy.count(), 1, oneSecondInMs);
++ QVERIFY(listView->isVisible());
++}
++
+ QTEST_MAIN(tst_QQuickListView2)
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
index 749123d1c04f..83e4113532cf 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r2.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.7.3-r3.ebuild
@@ -35,6 +35,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
+ "${FILESDIR}"/${PN}-6.7.3-QTBUG-129165.patch
)
src_configure() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-11-05 4:29 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-11-05 4:29 UTC (permalink / raw
To: gentoo-commits
commit: d9fd350987a72f9b8c442f4114df342b5a033cd5
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 5 04:14:14 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Nov 5 04:28:45 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d9fd3509
dev-qt/qtdeclarative: backport fix for QTBUG-129500 in 6.8.0
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.8.0-QTBUG-129500.patch | 80 ++++++++++++++++++++++
...8.0-r4.ebuild => qtdeclarative-6.8.0-r5.ebuild} | 1 +
2 files changed, 81 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129500.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129500.patch
new file mode 100644
index 000000000000..45f165f374d2
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-129500.patch
@@ -0,0 +1,80 @@
+Prevents crashes in Neochat and other kirigami-based applications.
+https://bugreports.qt.io/browse/QTBUG-129500
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/595278
+--- a/src/quick/items/qquickitem.cpp
++++ b/src/quick/items/qquickitem.cpp
+@@ -8757,7 +8757,8 @@
+ QPointF p = mapToScene(point);
+ if (item) {
+- const QQuickWindow *itemWindow = item->window();
+- if (itemWindow != nullptr && itemWindow != window())
+- p = itemWindow->mapFromGlobal(window()->mapToGlobal(p));
++ const auto *itemWindow = item->window();
++ const auto *thisWindow = window();
++ if (thisWindow && itemWindow && itemWindow != thisWindow)
++ p = itemWindow->mapFromGlobal(thisWindow->mapToGlobal(p));
+
+ p = item->mapFromScene(p);
+@@ -8864,7 +8865,8 @@
+ if (item) {
+ p = item->mapToScene(point);
+-
+- if (item->window() != window())
+- p = window()->mapFromGlobal(item->window()->mapToGlobal(p));
++ const auto *itemWindow = item->window();
++ const auto *thisWindow = window();
++ if (thisWindow && itemWindow && itemWindow != thisWindow)
++ p = thisWindow->mapFromGlobal(itemWindow->mapToGlobal(p));
+ }
+ return mapFromScene(p);
+--- a/tests/auto/quick/qquickitem2/data/mapCoordinatesWithWindows.qml
++++ b/tests/auto/quick/qquickitem2/data/mapCoordinatesWithWindows.qml
+@@ -49,3 +49,14 @@
+ }
+ }
++
++ property Item itemWithoutWindowA: Item {
++ x: 20; y: 20
++ }
++ property Item itemWithoutWindowB: Item {
++ x: 40; y: 40
++ Item {
++ objectName: "childItemWithoutWindow"
++ x: 30; y: 30
++ }
++ }
+ }
+--- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
++++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
+@@ -2884,4 +2884,31 @@
+ QCOMPARE(childItemInChildWindow->mapFromItem(childItemInOtherWindow, {0, 0}),
+ globalItemOffset(childItemInOtherWindow, childItemInChildWindow));
++
++ // If one or both of the items are not in a scene (yet), they are assumed
++ // to eventually be in the same scene.
++
++ auto *itemWithoutWindowA = root->property("itemWithoutWindowA").value<QQuickItem*>();
++ QVERIFY(itemWithoutWindowA);
++ auto *itemWithoutWindowB = root->property("itemWithoutWindowB").value<QQuickItem*>();
++ QVERIFY(itemWithoutWindowB);
++ auto *childItemWithoutWindow = itemWithoutWindowB->findChild<QQuickItem*>("childItemWithoutWindow");
++ QVERIFY(childItemWithoutWindow);
++
++ QPoint itemWithoutWindowAPos = itemWithoutWindowA->position().toPoint();
++ QPoint itemWithoutWindowBPos = itemWithoutWindowB->position().toPoint();
++
++ QCOMPARE(itemWithoutWindowA->mapToItem(childItemWithoutWindow, {0, 0}),
++ itemWithoutWindowAPos - (itemWithoutWindowBPos + childItemWithoutWindow->position()));
++ QCOMPARE(itemWithoutWindowA->mapFromItem(childItemWithoutWindow, {0, 0}),
++ (itemWithoutWindowBPos + childItemWithoutWindow->position()) - itemWithoutWindowAPos);
++
++ QCOMPARE(itemWithoutWindowA->mapToItem(childItem, {0, 0}),
++ itemWithoutWindowAPos - itemPos);
++ QCOMPARE(itemWithoutWindowA->mapFromItem(childItem, {0, 0}),
++ itemPos - itemWithoutWindowAPos);
++ QCOMPARE(childItem->mapToItem(itemWithoutWindowA, {0, 0}),
++ itemPos - itemWithoutWindowAPos);
++ QCOMPARE(childItem->mapFromItem(itemWithoutWindowA, {0, 0}),
++ itemWithoutWindowAPos - itemPos);
+ }
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild
index 84d5899b33b6..3dcd70472b17 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r4.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild
@@ -38,6 +38,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
"${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
+ "${FILESDIR}"/${PN}-6.8.0-QTBUG-129500.patch
)
src_configure() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-11-15 8:04 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-11-15 8:04 UTC (permalink / raw
To: gentoo-commits
commit: 07424846a2e87d58e386a16f3d3d279ed5ed7385
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 15 07:45:10 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Nov 15 08:02:45 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=07424846
dev-qt/qtdeclarative: fix 6.8.0's QTBUG-125053 patch
The version for 6.7.3 seems correct but sharing it with 6.8.0 was not,
thankfully 6.8.0 is masked so this didn't affect many people.
Closes: https://bugs.gentoo.org/943527
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.8.0-QTBUG-125053.patch | 258 +++++++++++++++++++++
...8.0-r5.ebuild => qtdeclarative-6.8.0-r6.ebuild} | 2 +-
2 files changed, 259 insertions(+), 1 deletion(-)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-125053.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-125053.patch
new file mode 100644
index 000000000000..250a33f7b166
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-125053.patch
@@ -0,0 +1,258 @@
+https://bugreports.qt.io/browse/QTBUG-125053
+https://bugreports.qt.io/browse/QTBUG-127340
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/593122
+https://bugs.gentoo.org/943527 (see also)
+--- a/src/qmlmodels/qqmldelegatemodel.cpp
++++ b/src/qmlmodels/qqmldelegatemodel.cpp
+@@ -4,4 +4,6 @@
+ #include "qqmldelegatemodel_p_p.h"
+
++#include <QtCore/private/qabstractitemmodel_p.h>
++
+ #include <QtQml/qqmlinfo.h>
+
+@@ -172,5 +174,4 @@
+ , m_incubatorCleanupScheduled(false)
+ , m_waitingToFetchMore(false)
+- , m_maybeResetRoleNames(false)
+ , m_cacheItems(nullptr)
+ , m_items(nullptr)
+@@ -366,5 +367,4 @@
+ QObject::connect(aim, &QAbstractItemModel::rowsMoved, q, &QQmlDelegateModel::_q_rowsMoved);
+ QObject::connect(aim, &QAbstractItemModel::modelAboutToBeReset, q, &QQmlDelegateModel::_q_modelAboutToBeReset);
+- QObject::connect(aim, &QAbstractItemModel::modelReset, q, &QQmlDelegateModel::handleModelReset);
+ QObject::connect(aim, &QAbstractItemModel::layoutChanged, q, &QQmlDelegateModel::_q_layoutChanged);
+ }
+@@ -387,5 +387,4 @@
+ QObject::disconnect(aim, &QAbstractItemModel::rowsMoved, q, &QQmlDelegateModel::_q_rowsMoved);
+ QObject::disconnect(aim, &QAbstractItemModel::modelAboutToBeReset, q, &QQmlDelegateModel::_q_modelAboutToBeReset);
+- QObject::disconnect(aim, &QAbstractItemModel::modelReset, q, &QQmlDelegateModel::handleModelReset);
+ QObject::disconnect(aim, &QAbstractItemModel::layoutChanged, q, &QQmlDelegateModel::_q_layoutChanged);
+ }
+@@ -412,4 +411,19 @@
+ d->requestMoreIfNecessary();
+ }
++
++ // Since 837c2f18cd223707e7cedb213257b0158ea07146, we connect to modelAboutToBeReset
++ // rather than modelReset so that we can handle role name changes. _q_modelAboutToBeReset
++ // now connects modelReset to handleModelReset with a single shot connection instead.
++ // However, it's possible for user code to begin the reset before connectToAbstractItemModel is called
++ // (QTBUG-125053), in which case we connect to modelReset too late and handleModelReset is never called,
++ // resulting in delegates not being created in certain cases.
++ // So, we check at the earliest point we can if the model is in the process of being reset,
++ // and if so, connect modelReset to handleModelReset.
++ if (d->m_adaptorModel.adaptsAim()) {
++ auto *aim = d->m_adaptorModel.aim();
++ auto *aimPrivate = QAbstractItemModelPrivate::get(aim);
++ if (aimPrivate->resetting)
++ QObject::connect(aim, &QAbstractItemModel::modelReset, this, &QQmlDelegateModel::handleModelReset, Qt::SingleShotConnection);
++ }
+ }
+
+@@ -1898,26 +1912,23 @@
+ if (!d->m_adaptorModel.adaptsAim())
+ return;
+-
+- /*
+- roleNames are generally guaranteed to be stable (given that QAIM has no
+- change signal for them), except that resetting the model is allowed to
+- invalidate them (QTBUG-32132). DelegateModel must take this into account by
+- snapshotting the current roleNames before the model is reset.
+- Afterwards, if we detect that roleNames has changed, we throw the
+- current model set up away and rebuild everything from scratch – it is
+- unlikely that a more efficient implementation would be worth it.
+-
+- If we detect no changes, we simply use the existing logic to handle the
+- model reset.
+-
+- This (role name resetting) logic relies on the fact that
+- modelAboutToBeReset must be followed by a modelReset signal before any
+- further modelAboutToBeReset can occur. However, it's possible for user
+- code to begin the reset before connectToAbstractItemModel is called
+- (QTBUG-125053), in which case we don't attempt to reset the role names.
+- */
+- Q_ASSERT(!d->m_maybeResetRoleNames);
+- d->m_maybeResetRoleNames = true;
+- d->m_roleNamesBeforeReset = d->m_adaptorModel.aim()->roleNames();
++ auto aim = d->m_adaptorModel.aim();
++ auto oldRoleNames = aim->roleNames();
++ // this relies on the fact that modelAboutToBeReset must be followed
++ // by a modelReset signal before any further modelAboutToBeReset can occur
++ QObject::connect(aim, &QAbstractItemModel::modelReset, this, [this, d, oldRoleNames, aim](){
++ if (!d->m_adaptorModel.adaptsAim() || d->m_adaptorModel.aim() != aim)
++ return;
++ if (oldRoleNames == aim->roleNames()) {
++ // if the rolenames stayed the same (most common case), then we don't have
++ // to throw away all the setup that we did
++ handleModelReset();
++ } else {
++ // If they did change, we give up and just start from scratch via setMode
++ setModel(QVariant::fromValue(model()));
++ // but we still have to call handleModelReset, otherwise views will
++ // not refresh
++ handleModelReset();
++ }
++ }, Qt::SingleShotConnection);
+ }
+
+@@ -1929,21 +1940,4 @@
+
+ int oldCount = d->m_count;
+-
+- if (d->m_maybeResetRoleNames) {
+- auto aim = d->m_adaptorModel.aim();
+- if (!d->m_adaptorModel.adaptsAim() || d->m_adaptorModel.aim() != aim)
+- return;
+-
+- // If the role names stayed the same (most common case), then we don't have
+- // to throw away all the setup that we did.
+- // If they did change, we give up and just start from scratch via setModel.
+- // We do this before handling the reset to ensure that views refresh.
+- if (aim->roleNames() != d->m_roleNamesBeforeReset)
+- setModel(QVariant::fromValue(model()));
+-
+- d->m_maybeResetRoleNames = false;
+- d->m_roleNamesBeforeReset.clear();
+- }
+-
+ d->m_adaptorModel.rootIndex = QModelIndex();
+
+--- a/src/qmlmodels/qqmldelegatemodel_p_p.h
++++ b/src/qmlmodels/qqmldelegatemodel_p_p.h
+@@ -335,5 +335,4 @@
+ QList<QQDMIncubationTask *> m_finishedIncubating;
+ QList<QByteArray> m_watchedRoles;
+- QHash<int, QByteArray> m_roleNamesBeforeReset;
+
+ QString m_filterGroup;
+@@ -349,5 +348,4 @@
+ bool m_incubatorCleanupScheduled : 1;
+ bool m_waitingToFetchMore : 1;
+- bool m_maybeResetRoleNames : 1;
+
+ union {
+--- a/tests/auto/qml/qqmldelegatemodel/data/proxyModelWithDelayedSourceModelInListView.qml
++++ b/tests/auto/qml/qqmldelegatemodel/data/proxyModelWithDelayedSourceModelInListView.qml
+@@ -0,0 +1,30 @@
++import QtQuick
++import Test
++
++Window {
++ id: root
++ title: listView.count
++
++ property alias listView: listView
++ property ProxySourceModel connectionModel: null
++
++ Component {
++ id: modelComponent
++ ProxySourceModel {}
++ }
++
++ ListView {
++ id: listView
++ anchors.fill: parent
++
++ delegate: Text {
++ text: model.Name
++ }
++
++ model: ProxyModel {
++ sourceModel: root.connectionModel
++ }
++ }
++
++ Component.onCompleted: root.connectionModel = modelComponent.createObject(root)
++}
+--- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
++++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
+@@ -4,4 +4,5 @@
+ #include <QtTest/qtest.h>
+ #include <QtCore/qjsonobject.h>
++#include <QtCore/qsortfilterproxymodel.h>
+ #include <QtCore/QConcatenateTablesProxyModel>
+ #include <QtCore/qtimer.h>
+@@ -52,4 +53,5 @@
+ void clearCacheDuringInsertion();
+ void viewUpdatedOnDelegateChoiceAffectingRoleChange();
++ void proxyModelWithDelayedSourceModelInListView();
+ };
+
+@@ -732,4 +734,77 @@
+ }
+
++class ProxySourceModel : public QAbstractListModel
++{
++ Q_OBJECT
++ QML_ELEMENT
++public:
++ explicit ProxySourceModel(QObject *parent = nullptr)
++ : QAbstractListModel(parent)
++ {
++ for (int i = 0; i < rows; ++i) {
++ beginInsertRows(QModelIndex(), i, i);
++ endInsertRows();
++ }
++ }
++
++ ~ProxySourceModel() override = default;
++
++ int rowCount(const QModelIndex &) const override
++ {
++ return rows;
++ }
++
++ QVariant data(const QModelIndex &, int ) const override
++ {
++ return "Hello";
++ }
++
++ QHash<int, QByteArray> roleNames() const override
++ {
++ QHash<int, QByteArray> roles = QAbstractListModel::roleNames();
++ roles[Qt::UserRole + 1] = "Name";
++
++ return roles;
++ }
++
++ static const int rows = 1;
++};
++
++class ProxyModel : public QSortFilterProxyModel
++{
++ Q_OBJECT
++ QML_ELEMENT
++ Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel)
++
++public:
++ explicit ProxyModel(QObject *parent = nullptr)
++ : QSortFilterProxyModel(parent)
++ {
++ }
++
++ ~ProxyModel() override = default;
++};
++
++// Checks that the correct amount of delegates are created when using a proxy
++// model whose source model is set after a delay.
++void tst_QQmlDelegateModel::proxyModelWithDelayedSourceModelInListView()
++{
++ QTest::failOnWarning();
++
++ qmlRegisterTypesAndRevisions<ProxySourceModel>("Test", 1);
++ qmlRegisterTypesAndRevisions<ProxyModel>("Test", 1);
++
++ QQuickApplicationHelper helper(this, "proxyModelWithDelayedSourceModelInListView.qml");
++ QVERIFY2(helper.ready, helper.failureMessage());
++ QQuickWindow *window = helper.window;
++ window->show();
++ QVERIFY(QTest::qWaitForWindowExposed(window));
++
++ auto *listView = window->property("listView").value<QQuickListView *>();
++ QVERIFY(listView);
++ const auto delegateModel = QQuickItemViewPrivate::get(listView)->model;
++ QTRY_COMPARE(listView->count(), 1);
++}
++
+ QTEST_MAIN(tst_QQmlDelegateModel)
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild
index 3dcd70472b17..7f4c05e68b3e 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r5.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild
@@ -35,8 +35,8 @@ BDEPEND="
"
PATCHES=(
- "${FILESDIR}"/${PN}-6.7.3-QTBUG-125053.patch
"${FILESDIR}"/${PN}-6.7.3-QTBUG-129622.patch
+ "${FILESDIR}"/${PN}-6.8.0-QTBUG-125053.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129500.patch
)
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/
@ 2024-11-15 14:44 Ionen Wolkens
0 siblings, 0 replies; 10+ messages in thread
From: Ionen Wolkens @ 2024-11-15 14:44 UTC (permalink / raw
To: gentoo-commits
commit: 5234ec1826825db9964b365f21d3952484f08846
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 15 14:24:59 2024 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Fri Nov 15 14:43:11 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5234ec18
dev-qt/qtdeclarative: backport 6.8 branch fix for QTBUG-130767
Currently fix seems to be only in 6.8.2 so we may need this for
6.8.1 as well.
Leaving it out of the live ebuild given that is currently
building 6.8.2
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../files/qtdeclarative-6.8.0-QTBUG-130767.patch | 255 +++++++++++++++++++++
...8.0-r6.ebuild => qtdeclarative-6.8.0-r7.ebuild} | 1 +
2 files changed, 256 insertions(+)
diff --git a/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-130767.patch b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-130767.patch
new file mode 100644
index 000000000000..aefc46bd3604
--- /dev/null
+++ b/dev-qt/qtdeclarative/files/qtdeclarative-6.8.0-QTBUG-130767.patch
@@ -0,0 +1,255 @@
+https://bugreports.qt.io/browse/QTBUG-130767
+https://bugs.kde.org/show_bug.cgi?id=494804
+https://codereview.qt-project.org/c/qt/qtdeclarative/+/604180
+(+required https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=104b0d6e88)
+--- a/src/qml/jsruntime/qv4qobjectwrapper_p.h
++++ b/src/qml/jsruntime/qv4qobjectwrapper_p.h
+@@ -224,2 +224,15 @@
+
++// We generally musn't pass ReturnedValue as arguments to other functions.
++// In this case, we do it solely for marking purposes so it's fine.
++inline void markIfPastMarkWeakValues(ExecutionEngine *engine, ReturnedValue rv)
++{
++ const auto gcState = engine->memoryManager->gcStateMachine->state;
++ if (gcState != GCStateMachine::Invalid && gcState >= GCState::MarkWeakValues) {
++ QV4::WriteBarrier::markCustom(engine, [rv](QV4::MarkStack *ms) {
++ auto *m = StaticValue::fromReturnedValue(rv).m();
++ m->mark(ms);
++ });
++ }
++}
++
+ inline ReturnedValue QObjectWrapper::wrap(ExecutionEngine *engine, QObject *object)
+@@ -235,3 +248,5 @@
+
+- return wrap_slowPath(engine, object);
++ const auto rv = wrap_slowPath(engine, object);
++ markIfPastMarkWeakValues(engine, rv);
++ return rv;
+ }
+@@ -244,3 +259,5 @@
+
+- return wrapConst_slowPath(engine, object);
++ const auto rv = wrapConst_slowPath(engine, object);
++ markIfPastMarkWeakValues(engine, rv);
++ return rv;
+ }
+--- a/src/qml/memory/qv4mm.cpp
++++ b/src/qml/memory/qv4mm.cpp
+@@ -62,2 +62,4 @@
+ Q_DECLARE_LOGGING_CATEGORY(lcGcAllocatorStats)
++Q_LOGGING_CATEGORY(lcGcStateTransitions, "qt.qml.gc.stateTransitions")
++Q_DECLARE_LOGGING_CATEGORY(lcGcStateTransitions)
+
+@@ -682,3 +684,3 @@
+ that->mm->engine->isGCOngoing = true;
+- return MarkGlobalObject;
++ return GCState::MarkGlobalObject;
+ }
+@@ -688,3 +690,3 @@
+ that->mm->engine->markObjects(that->mm->m_markStack.get());
+- return MarkJSStack;
++ return GCState::MarkJSStack;
+ }
+@@ -694,3 +696,3 @@
+ that->mm->collectFromJSStack(that->mm->markStack());
+- return InitMarkPersistentValues;
++ return GCState::InitMarkPersistentValues;
+ }
+@@ -700,5 +702,5 @@
+ if (!that->mm->m_persistentValues)
+- return InitMarkWeakValues; // no persistent values to mark
++ return GCState::InitMarkWeakValues; // no persistent values to mark
+ stateData = GCIteratorStorage { that->mm->m_persistentValues->begin() };
+- return MarkPersistentValues;
++ return GCState::MarkPersistentValues;
+ }
+@@ -719,3 +721,3 @@
+ if (wasDrainNecessary(markStack, that->deadline) && that->deadline.hasExpired())
+- return MarkPersistentValues;
++ return GCState::MarkPersistentValues;
+ PersistentValueStorage::Iterator& it = get<GCIteratorStorage>(stateData).it;
+@@ -724,3 +726,3 @@
+ if (!it.p)
+- return InitMarkWeakValues;
++ return GCState::InitMarkWeakValues;
+ if (Managed *m = (*it).as<Managed>())
+@@ -729,3 +731,3 @@
+ }
+- return MarkPersistentValues;
++ return GCState::MarkPersistentValues;
+ }
+@@ -735,3 +737,3 @@
+ stateData = GCIteratorStorage { that->mm->m_weakValues->begin() };
+- return MarkWeakValues;
++ return GCState::MarkWeakValues;
+ }
+@@ -742,3 +744,3 @@
+ if (wasDrainNecessary(markStack, that->deadline) && that->deadline.hasExpired())
+- return MarkWeakValues;
++ return GCState::MarkWeakValues;
+ PersistentValueStorage::Iterator& it = get<GCIteratorStorage>(stateData).it;
+@@ -747,3 +749,3 @@
+ if (!it.p)
+- return MarkDrain;
++ return GCState::MarkDrain;
+ QObjectWrapper *qobjectWrapper = (*it).as<QObjectWrapper>();
+@@ -768,3 +770,3 @@
+ }
+- return MarkWeakValues;
++ return GCState::MarkWeakValues;
+ }
+@@ -775,3 +777,3 @@
+ that->mm->markStack()->drain();
+- return MarkReady;
++ return GCState::MarkReady;
+ }
+@@ -779,4 +781,4 @@
+ return drainState == MarkStack::DrainState::Complete
+- ? MarkReady
+- : MarkDrain;
++ ? GCState::MarkReady
++ : GCState::MarkDrain;
+ }
+@@ -786,3 +788,3 @@
+ //Possibility to do some clean up, stat printing, etc...
+- return InitCallDestroyObjects;
++ return GCState::InitCallDestroyObjects;
+ }
+@@ -803,5 +805,5 @@
+ if (!that->mm->m_weakValues)
+- return FreeWeakMaps; // no need to call destroy objects
++ return GCState::FreeWeakMaps; // no need to call destroy objects
+ stateData = GCIteratorStorage { that->mm->m_weakValues->begin() };
+- return CallDestroyObjects;
++ return GCState::CallDestroyObjects;
+ }
+@@ -818,3 +820,3 @@
+ if (!it.p)
+- return FreeWeakMaps;
++ return GCState::FreeWeakMaps;
+ Managed *m = (*it).managed();
+@@ -828,3 +830,3 @@
+ }
+- return CallDestroyObjects;
++ return GCState::CallDestroyObjects;
+ }
+@@ -845,3 +847,3 @@
+ freeWeakMaps(that->mm);
+- return FreeWeakSets;
++ return GCState::FreeWeakSets;
+ }
+@@ -863,3 +865,3 @@
+ freeWeakSets(that->mm);
+- return HandleQObjectWrappers;
++ return GCState::HandleQObjectWrappers;
+ }
+@@ -869,3 +871,3 @@
+ that->mm->cleanupDeletedQObjectWrappersInSweep();
+- return DoSweep;
++ return GCState::DoSweep;
+ }
+@@ -893,3 +895,3 @@
+
+- return Invalid;
++ return GCState::Invalid;
+ }
+@@ -1493,4 +1495,8 @@
+ }
++ qCDebug(lcGcStateTransitions) << "Preparing to execute the"
++ << QMetaEnum::fromType<GCState>().key(state) << "state";
+ GCStateInfo& stateInfo = stateInfoMap[int(state)];
+ state = stateInfo.execute(this, stateData);
++ qCDebug(lcGcStateTransitions) << "Transitioning to the"
++ << QMetaEnum::fromType<GCState>().key(state) << "state";
+ if (stateInfo.breakAfter)
+@@ -1507,4 +1513,8 @@
+ while (state != GCState::Invalid) {
++ qCDebug(lcGcStateTransitions) << "Preparing to execute the"
++ << QMetaEnum::fromType<GCState>().key(state) << "state";
+ GCStateInfo& stateInfo = stateInfoMap[int(state)];
+ state = stateInfo.execute(this, stateData);
++ qCDebug(lcGcStateTransitions) << "Transitioning to the"
++ << QMetaEnum::fromType<GCState>().key(state) << "state";
+ }
+@@ -1516 +1526,3 @@
+ QT_END_NAMESPACE
++
++#include "moc_qv4mm_p.cpp"
+--- a/src/qml/memory/qv4mm_p.h
++++ b/src/qml/memory/qv4mm_p.h
+@@ -30,22 +30,2 @@
+
+-enum GCState {
+- MarkStart = 0,
+- MarkGlobalObject,
+- MarkJSStack,
+- InitMarkPersistentValues,
+- MarkPersistentValues,
+- InitMarkWeakValues,
+- MarkWeakValues,
+- MarkDrain,
+- MarkReady,
+- InitCallDestroyObjects,
+- CallDestroyObjects,
+- FreeWeakMaps,
+- FreeWeakSets,
+- HandleQObjectWrappers,
+- DoSweep,
+- Invalid,
+- Count,
+-};
+-
+ struct GCData { virtual ~GCData(){};};
+@@ -55,11 +35,39 @@
+ };
+-struct GCStateMachine;
+-
+-struct GCStateInfo {
+- using ExtraData = std::variant<std::monostate, GCIteratorStorage>;
+- GCState (*execute)(GCStateMachine *, ExtraData &) = nullptr; // Function to execute for this state, returns true if ready to transition
+- bool breakAfter{false};
+-};
+
+ struct GCStateMachine {
++ Q_GADGET_EXPORT(Q_QML_EXPORT)
++
++public:
++ enum GCState {
++ MarkStart = 0,
++ MarkGlobalObject,
++ MarkJSStack,
++ InitMarkPersistentValues,
++ MarkPersistentValues,
++ InitMarkWeakValues,
++ MarkWeakValues,
++ MarkDrain,
++ MarkReady,
++ InitCallDestroyObjects,
++ CallDestroyObjects,
++ FreeWeakMaps,
++ FreeWeakSets,
++ HandleQObjectWrappers,
++ DoSweep,
++ Invalid,
++ Count,
++ };
++ Q_ENUM(GCState)
++
++ struct StepTiming {
++ qint64 rolling_sum = 0;
++ qint64 count = 0;
++ };
++
++ struct GCStateInfo {
++ using ExtraData = std::variant<std::monostate, GCIteratorStorage>;
++ GCState (*execute)(GCStateMachine *, ExtraData &) = nullptr; // Function to execute for this state, returns true if ready to transition
++ bool breakAfter{false};
++ };
++
+ using ExtraData = GCStateInfo::ExtraData;
+@@ -96,2 +104,4 @@
+
++using GCState = GCStateMachine::GCState;
++using GCStateInfo = GCStateMachine::GCStateInfo;
+
diff --git a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r7.ebuild
similarity index 97%
rename from dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild
rename to dev-qt/qtdeclarative/qtdeclarative-6.8.0-r7.ebuild
index 7f4c05e68b3e..21baad2c9b84 100644
--- a/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r6.ebuild
+++ b/dev-qt/qtdeclarative/qtdeclarative-6.8.0-r7.ebuild
@@ -39,6 +39,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-6.8.0-QTBUG-125053.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129797.patch
"${FILESDIR}"/${PN}-6.8.0-QTBUG-129500.patch
+ "${FILESDIR}"/${PN}-6.8.0-QTBUG-130767.patch
)
src_configure() {
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-11-15 14:44 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-20 21:21 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtdeclarative/files/, dev-qt/qtdeclarative/ Andreas Sturmlechner
-- strict thread matches above, loose matches on Subject: below --
2024-11-15 14:44 Ionen Wolkens
2024-11-15 8:04 Ionen Wolkens
2024-11-05 4:29 Ionen Wolkens
2024-10-19 22:20 Ionen Wolkens
2024-10-10 1:27 Ionen Wolkens
2024-10-08 18:19 Ionen Wolkens
2022-12-10 12:25 Andreas Sturmlechner
2021-01-24 13:03 Andreas Sturmlechner
2018-04-15 17:15 Andreas Sturmlechner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox