diff --git a/.gitignore b/.gitignore index 96388db..722efc2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /qtdeclarative-opensource-src-5.6.0-rc.tar.xz /qtdeclarative-opensource-src-5.6.0.tar.xz /qtdeclarative-opensource-src-5.6.1.tar.xz +/qtdeclarative-opensource-src-5.7.0.tar.xz diff --git a/0007-Revert-Remove-this-piece-of-code.patch b/0007-Revert-Remove-this-piece-of-code.patch deleted file mode 100644 index 567b62d..0000000 --- a/0007-Revert-Remove-this-piece-of-code.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 6371b208a9e55845090dcd34234e314c6587c105 Mon Sep 17 00:00:00 2001 -From: Simon Hausmann -Date: Tue, 17 May 2016 15:18:12 +0200 -Subject: [PATCH 07/40] Revert "Remove this piece of code" - -This reverts commit bad007360a0f6fba304d8f4c99826a1250fd886c. - -The lookup in the global object is necessary to detect whether we've seen any -unresolved properties. This is used for the optimization of skipping binding -refresh updates when a context property changes. - -Task-number: QTBUG-53431 -Change-Id: Idb39a32e4b58b915496bbb9d8a098dc17a6f688a -Reviewed-by: Lars Knoll ---- - src/qml/qml/qqmlcontextwrapper.cpp | 13 +++++++++++-- - tests/auto/qml/qqmlcontext/data/qtbug_53431.qml | 7 +++++++ - tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp | 14 ++++++++++++++ - 3 files changed, 32 insertions(+), 2 deletions(-) - create mode 100644 tests/auto/qml/qqmlcontext/data/qtbug_53431.qml - -diff --git a/src/qml/qml/qqmlcontextwrapper.cpp b/src/qml/qml/qqmlcontextwrapper.cpp -index 0d84c3b..e3770a7 100644 ---- a/src/qml/qml/qqmlcontextwrapper.cpp -+++ b/src/qml/qml/qqmlcontextwrapper.cpp -@@ -99,14 +99,23 @@ ReturnedValue QmlContextWrapper::get(const Managed *m, String *name, bool *hasPr - QV4::ExecutionEngine *v4 = resource->engine(); - QV4::Scope scope(v4); - -+ // In V8 the JS global object would come _before_ the QML global object, -+ // so simulate that here. -+ bool hasProp; -+ QV4::ScopedValue result(scope, v4->globalObject->get(name, &hasProp)); -+ if (hasProp) { -+ if (hasProperty) -+ *hasProperty = hasProp; -+ return result->asReturnedValue(); -+ } -+ - if (resource->d()->isNullWrapper) - return Object::get(m, name, hasProperty); - - if (v4->callingQmlContext() != resource->d()->context) - return Object::get(m, name, hasProperty); - -- bool hasProp; -- QV4::ScopedValue result(scope, Object::get(m, name, &hasProp)); -+ result = Object::get(m, name, &hasProp); - if (hasProp) { - if (hasProperty) - *hasProperty = hasProp; -diff --git a/tests/auto/qml/qqmlcontext/data/qtbug_53431.qml b/tests/auto/qml/qqmlcontext/data/qtbug_53431.qml -new file mode 100644 -index 0000000..2ceee2b ---- /dev/null -+++ b/tests/auto/qml/qqmlcontext/data/qtbug_53431.qml -@@ -0,0 +1,7 @@ -+import QtQml 2.0 -+QtObject { -+ property int value: { -+ console.log("lookup in global object") -+ return 1 -+ } -+} -diff --git a/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp b/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp -index 18ef7ac..d338e6f 100644 ---- a/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp -+++ b/tests/auto/qml/qqmlcontext/tst_qqmlcontext.cpp -@@ -61,6 +61,7 @@ private slots: - void refreshExpressions(); - void refreshExpressionsCrash(); - void refreshExpressionsRootContext(); -+ void skipExpressionRefresh_qtbug_53431(); - - void qtbug_22535(); - void evalAfterInvalidate(); -@@ -642,6 +643,19 @@ void tst_qqmlcontext::refreshExpressionsRootContext() - delete o1; - } - -+void tst_qqmlcontext::skipExpressionRefresh_qtbug_53431() -+{ -+ QQmlEngine engine; -+ QQmlComponent component(&engine, testFileUrl("qtbug_53431.qml")); -+ QScopedPointer object(component.create(0)); -+ QVERIFY(!object.isNull()); -+ QCOMPARE(object->property("value").toInt(), 1); -+ object->setProperty("value", 10); -+ QCOMPARE(object->property("value").toInt(), 10); -+ engine.rootContext()->setContextProperty("randomContextProperty", 42); -+ QCOMPARE(object->property("value").toInt(), 10); -+} -+ - void tst_qqmlcontext::qtbug_22535() - { - QQmlEngine engine; --- -1.9.3 - diff --git a/0010-Fix-crash-for-unknown-QQmlListModel-roles-in-debug-b.patch b/0010-Fix-crash-for-unknown-QQmlListModel-roles-in-debug-b.patch deleted file mode 100644 index 6d697b0..0000000 --- a/0010-Fix-crash-for-unknown-QQmlListModel-roles-in-debug-b.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 82b0b31fe47a6a54c500f2cbea45b37fc28f3bee Mon Sep 17 00:00:00 2001 -From: Filipe Azevedo -Date: Mon, 2 May 2016 13:11:26 +0200 -Subject: [PATCH 10/40] Fix crash for unknown QQmlListModel roles in debug - builds - -If a role is unknown, trying to access it will crash in getExistingRole. -Fixed that and now return QVariant() for unknown roles. - -Change-Id: Iad5c1292a4faee893fbc5a69984cf776aca85d70 -Reviewed-by: Shawn Rutledge -Reviewed-by: Robin Burchell ---- - src/qml/types/qqmllistmodel.cpp | 2 ++ - tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp | 16 ++++++++++++++++ - 2 files changed, 18 insertions(+) - -diff --git a/src/qml/types/qqmllistmodel.cpp b/src/qml/types/qqmllistmodel.cpp -index 4b0aa47..3d71621 100644 ---- a/src/qml/types/qqmllistmodel.cpp -+++ b/src/qml/types/qqmllistmodel.cpp -@@ -392,6 +392,8 @@ void ListModel::updateCacheIndices() - - QVariant ListModel::getProperty(int elementIndex, int roleIndex, const QQmlListModel *owner, QV4::ExecutionEngine *eng) - { -+ if (roleIndex >= m_layout->roleCount()) -+ return QVariant(); - ListElement *e = elements[elementIndex]; - const ListLayout::Role &r = m_layout->getExistingRole(roleIndex); - return e->getProperty(r, owner, eng); -diff --git a/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp b/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp -index d26c1c5..6b1dece 100644 ---- a/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp -+++ b/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp -@@ -110,6 +110,7 @@ private slots: - void get_nested(); - void get_nested_data(); - void crash_model_with_multiple_roles(); -+ void crash_model_with_unknown_roles(); - void set_model_cache(); - void property_changes(); - void property_changes_data(); -@@ -968,6 +969,21 @@ void tst_qqmllistmodel::crash_model_with_multiple_roles() - delete rootItem; - } - -+void tst_qqmllistmodel::crash_model_with_unknown_roles() -+{ -+ QQmlEngine eng; -+ QQmlComponent component(&eng, testFileUrl("multipleroles.qml")); -+ QScopedPointer rootItem(component.create()); -+ QVERIFY(component.errorString().isEmpty()); -+ QVERIFY(rootItem != 0); -+ QQmlListModel *model = rootItem->findChild("listModel"); -+ QVERIFY(model != 0); -+ -+ // used to cause a crash in debug builds -+ model->index(0, 0, QModelIndex()).data(Qt::DisplayRole); -+ model->index(0, 0, QModelIndex()).data(Qt::UserRole); -+} -+ - //QTBUG-15190 - void tst_qqmllistmodel::set_model_cache() - { --- -1.9.3 - diff --git a/0011-Avoid-Canvas-crashes-with-qtquickcompiler.patch b/0011-Avoid-Canvas-crashes-with-qtquickcompiler.patch deleted file mode 100644 index ba76088..0000000 --- a/0011-Avoid-Canvas-crashes-with-qtquickcompiler.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 40a80ec9d712d8c40ebd6a6373322c3332ff5b50 Mon Sep 17 00:00:00 2001 -From: Laszlo Agocs -Date: Mon, 23 May 2016 16:01:44 +0200 -Subject: [PATCH 11/40] Avoid Canvas crashes with qtquickcompiler - -Change-Id: Ic87052308706b8ef71e2f27837abfbaea57c43cc -Task-number: QTBUG-49692 -Reviewed-by: Mitch Curtis ---- - src/quick/items/context2d/qquickcanvasitem.cpp | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp -index 9fb49f9..47ac2c4 100644 ---- a/src/quick/items/context2d/qquickcanvasitem.cpp -+++ b/src/quick/items/context2d/qquickcanvasitem.cpp -@@ -675,10 +675,14 @@ void QQuickCanvasItem::itemChange(QQuickItem::ItemChange change, const QQuickIte - QSGRenderContext *context = QQuickWindowPrivate::get(d->window)->context; - - // Rendering to FramebufferObject needs a valid OpenGL context. -- if (context != 0 && (d->renderTarget != FramebufferObject || context->isValid())) -- sceneGraphInitialized(); -- else -+ if (context != 0 && (d->renderTarget != FramebufferObject || context->isValid())) { -+ // Defer the call. In some (arguably incorrect) cases we get here due -+ // to ItemSceneChange with the user-supplied property values not yet -+ // set. Work this around by a deferred invoke. (QTBUG-49692) -+ QMetaObject::invokeMethod(this, "sceneGraphInitialized", Qt::QueuedConnection); -+ } else { - connect(d->window, SIGNAL(sceneGraphInitialized()), SLOT(sceneGraphInitialized())); -+ } - } - - void QQuickCanvasItem::updatePolish() --- -1.9.3 - diff --git a/0016-Fix-crash-with-SignalTransition.patch b/0016-Fix-crash-with-SignalTransition.patch deleted file mode 100644 index ce972fe..0000000 --- a/0016-Fix-crash-with-SignalTransition.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 7dcda224fe73cb51a29e8946afd641a989d7209a Mon Sep 17 00:00:00 2001 -From: Simon Hausmann -Date: Wed, 25 May 2016 16:22:44 +0200 -Subject: [PATCH 16/40] Fix crash with SignalTransition - -Don't crash when using SignalTransition with a signal object instead of the -slot used to emit the signal. A signal object is just as good. - -Task-number: QTBUG-53596 -Change-Id: I8a419d16ec0c257c9a798a83ee5bad338794cdd2 -Reviewed-by: Michael Brasser ---- - src/imports/statemachine/signaltransition.cpp | 26 ++++++-- - src/qml/jsruntime/qv4qobjectwrapper_p.h | 2 +- - .../qmltest/statemachine/tst_signaltransition.qml | 76 ++++++++++++++++++++++ - 3 files changed, 96 insertions(+), 8 deletions(-) - create mode 100644 tests/auto/qmltest/statemachine/tst_signaltransition.qml - -diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp -index 33ee11c..4f6c769 100644 ---- a/src/imports/statemachine/signaltransition.cpp -+++ b/src/imports/statemachine/signaltransition.cpp -@@ -105,15 +105,27 @@ void SignalTransition::setSignal(const QJSValue &signal) - QV4::ExecutionEngine *jsEngine = QV8Engine::getV4(QQmlEngine::contextForObject(this)->engine()); - QV4::Scope scope(jsEngine); - -- QV4::Scoped qobjectSignal(scope, QJSValuePrivate::convertedToValue(jsEngine, m_signal)); -- Q_ASSERT(qobjectSignal); -- -- QObject *sender = qobjectSignal->object(); -- Q_ASSERT(sender); -- QMetaMethod metaMethod = sender->metaObject()->method(qobjectSignal->methodIndex()); -+ QObject *sender; -+ QMetaMethod signalMethod; -+ -+ QV4::ScopedValue value(scope, QJSValuePrivate::convertedToValue(jsEngine, m_signal)); -+ -+ // Did we get the "slot" that can be used to invoke the signal? -+ if (QV4::QObjectMethod *signalSlot = value->as()) { -+ sender = signalSlot->object(); -+ Q_ASSERT(sender); -+ signalMethod = sender->metaObject()->method(signalSlot->methodIndex()); -+ } else if (QV4::QmlSignalHandler *signalObject = value->as()) { // or did we get the signal object (the one with the connect()/disconnect() functions) ? -+ sender = signalObject->object(); -+ Q_ASSERT(sender); -+ signalMethod = sender->metaObject()->method(signalObject->signalIndex()); -+ } else { -+ qmlInfo(this) << tr("Specified signal does not exist."); -+ return; -+ } - - QSignalTransition::setSenderObject(sender); -- QSignalTransition::setSignal(metaMethod.methodSignature()); -+ QSignalTransition::setSignal(signalMethod.methodSignature()); - - connectTriggered(); - } -diff --git a/src/qml/jsruntime/qv4qobjectwrapper_p.h b/src/qml/jsruntime/qv4qobjectwrapper_p.h -index 1126013..0fc39b2 100644 ---- a/src/qml/jsruntime/qv4qobjectwrapper_p.h -+++ b/src/qml/jsruntime/qv4qobjectwrapper_p.h -@@ -166,7 +166,7 @@ struct Q_QML_EXPORT QObjectMethod : public QV4::FunctionObject - static void markObjects(Heap::Base *that, QV4::ExecutionEngine *e); - }; - --struct QmlSignalHandler : public QV4::Object -+struct Q_QML_EXPORT QmlSignalHandler : public QV4::Object - { - V4_OBJECT2(QmlSignalHandler, QV4::Object) - V4_PROTOTYPE(signalHandlerPrototype) -diff --git a/tests/auto/qmltest/statemachine/tst_signaltransition.qml b/tests/auto/qmltest/statemachine/tst_signaltransition.qml -new file mode 100644 -index 0000000..0e35207 ---- /dev/null -+++ b/tests/auto/qmltest/statemachine/tst_signaltransition.qml -@@ -0,0 +1,76 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Ford Motor Company -+** Copyright (C) 2016 The Qt Company -+** Contact: https://www.qt.io/licensing/ -+** -+** This file is part of the test suite module of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL21$ -+** Commercial License Usage -+** Licensees holding valid commercial Qt licenses may use this file in -+** accordance with the commercial license agreement provided with the -+** Software or, alternatively, in accordance with the terms contained in -+** a written agreement between you and The Qt Company. For licensing terms -+** and conditions see http://www.qt.io/terms-conditions. For further -+** information use the contact form at http://www.qt.io/contact-us. -+** -+** GNU Lesser General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU Lesser -+** General Public License version 2.1 or version 3 as published by the Free -+** Software Foundation and appearing in the file LICENSE.LGPLv21 and -+** LICENSE.LGPLv3 included in the packaging of this file. Please review the -+** following information to ensure the GNU Lesser General Public License -+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** As a special exception, The Qt Company gives you certain additional -+** rights. These rights are described in The Qt Company LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+import QtTest 1.1 -+import QtQml.StateMachine 1.0 -+ -+TestCase { -+ id: testCase -+ StateMachine { -+ id: machine -+ initialState: startState -+ State { -+ id: startState -+ SignalTransition { -+ id: signalTrans -+ signal: testCase.onMysignal -+ targetState: finalState -+ } -+ } -+ FinalState { -+ id: finalState -+ } -+ } -+ -+ SignalSpy { -+ id: finalStateActive -+ target: finalState -+ signalName: "activeChanged" -+ } -+ -+ signal mysignal() -+ -+ name: "testSignalTransition" -+ function test_signalTransition() -+ { -+ // Start statemachine, should not have reached finalState yet. -+ machine.start() -+ tryCompare(finalStateActive, "count", 0) -+ tryCompare(machine, "running", true) -+ -+ testCase.mysignal() -+ tryCompare(finalStateActive, "count", 1) -+ tryCompare(machine, "running", false) -+ } -+} --- -1.9.3 - diff --git a/0024-Revert-removal-of-Fixed-MouseArea-threshold-with-pre.patch b/0024-Revert-removal-of-Fixed-MouseArea-threshold-with-pre.patch deleted file mode 100644 index 28b70ef..0000000 --- a/0024-Revert-removal-of-Fixed-MouseArea-threshold-with-pre.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 7039db4885a143f8f1d363c9b71665e9160d3d55 Mon Sep 17 00:00:00 2001 -From: Filippo Cucchetto -Date: Thu, 2 Jun 2016 21:49:37 +0200 -Subject: [PATCH 24/40] Revert removal of "Fixed MouseArea threshold with - preventStealing" - -This reverts commit 9c8dab537819f0d999e680490c2d125b8836cbbb -where commit e1400b5b4d8311769ad3b9f631479ee2b0271197 was removed -due to the breakage of QtLocation tests. - -After some hours of debugging it seems that the problem in QtLocation -was due to filtering of mouse move events in QDeclarativeGeoMapItemBase. -See QTBUG-52075 - -Task-number: QTBUG-52534 -Change-Id: I00f002c1d6f60f74a148b5a6ac2b9f63e93718a9 -Reviewed-by: Paolo Angelelli -Reviewed-by: Michal Klocek ---- - src/quick/items/qquickmousearea.cpp | 21 +++++++++++++-------- - src/quick/items/qquickmousearea_p_p.h | 1 + - .../quick/qquickmousearea/tst_qquickmousearea.cpp | 11 +++++++++++ - 3 files changed, 25 insertions(+), 8 deletions(-) - -diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp -index ef053ab..d66e55a 100644 ---- a/src/quick/items/qquickmousearea.cpp -+++ b/src/quick/items/qquickmousearea.cpp -@@ -52,7 +52,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlVisualTouchDebugging, QML_VISUAL_TOUCH_DEBUGGING) - QQuickMouseAreaPrivate::QQuickMouseAreaPrivate() - : enabled(true), scrollGestureEnabled(true), hovered(false), longPress(false), - moved(false), stealMouse(false), doubleClick(false), preventStealing(false), -- propagateComposedEvents(false), pressed(0) -+ propagateComposedEvents(false), overThreshold(false), pressed(0) - #ifndef QT_NO_DRAGANDDROP - , drag(0) - #endif -@@ -715,7 +715,7 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event) - curLocalPos = event->windowPos(); - } - -- if (keepMouseGrab() && d->stealMouse && !d->drag->active()) -+ if (keepMouseGrab() && d->stealMouse && d->overThreshold && !d->drag->active()) - d->drag->setActive(true); - - QPointF startPos = d->drag->target()->parentItem() -@@ -741,16 +741,19 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event) - if (d->drag->active()) - d->drag->target()->setPosition(dragPos); - -- if (!keepMouseGrab() -- && (QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(), Qt::XAxis, event, d->drag->threshold()) -- || QQuickWindowPrivate::dragOverThreshold(dragPos.y() - startPos.y(), Qt::YAxis, event, d->drag->threshold()))) { -- setKeepMouseGrab(true); -- d->stealMouse = true; -- -+ if (!d->overThreshold && (QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(), Qt::XAxis, event, d->drag->threshold()) -+ || QQuickWindowPrivate::dragOverThreshold(dragPos.y() - startPos.y(), Qt::YAxis, event, d->drag->threshold()))) -+ { -+ d->overThreshold = true; - if (d->drag->smoothed()) - d->startScene = event->windowPos(); - } - -+ if (!keepMouseGrab() && d->overThreshold) { -+ setKeepMouseGrab(true); -+ d->stealMouse = true; -+ } -+ - d->moved = true; - } - #endif -@@ -767,6 +770,7 @@ void QQuickMouseArea::mouseReleaseEvent(QMouseEvent *event) - { - Q_D(QQuickMouseArea); - d->stealMouse = false; -+ d->overThreshold = false; - if (!d->enabled && !d->pressed) { - QQuickItem::mouseReleaseEvent(event); - } else { -@@ -875,6 +879,7 @@ void QQuickMouseArea::ungrabMouse() - d->pressed = 0; - d->stealMouse = false; - d->doubleClick = false; -+ d->overThreshold = false; - setKeepMouseGrab(false); - - #ifndef QT_NO_DRAGANDDROP -diff --git a/src/quick/items/qquickmousearea_p_p.h b/src/quick/items/qquickmousearea_p_p.h -index 014729b..f63c5f6 100644 ---- a/src/quick/items/qquickmousearea_p_p.h -+++ b/src/quick/items/qquickmousearea_p_p.h -@@ -86,6 +86,7 @@ public: - bool doubleClick : 1; - bool preventStealing : 1; - bool propagateComposedEvents : 1; -+ bool overThreshold : 1; - Qt::MouseButtons pressed; - #ifndef QT_NO_DRAGANDDROP - QQuickDrag *drag; -diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp -index 82c053d..9cdfd21 100644 ---- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp -+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp -@@ -79,6 +79,7 @@ private slots: - void dragging_data() { acceptedButton_data(); } - void dragging(); - void dragSmoothed(); -+ void dragThreshold_data(); - void dragThreshold(); - void invalidDrag_data() { rejectedButton_data(); } - void invalidDrag(); -@@ -375,8 +376,17 @@ void tst_QQuickMouseArea::dragSmoothed() - QTest::mouseRelease(&window, Qt::LeftButton, 0, QPoint(100, 122)); - } - -+void tst_QQuickMouseArea::dragThreshold_data() -+{ -+ QTest::addColumn("preventStealing"); -+ QTest::newRow("without preventStealing") << false; -+ QTest::newRow("with preventStealing") << true; -+} -+ - void tst_QQuickMouseArea::dragThreshold() - { -+ QFETCH(bool, preventStealing); -+ - QQuickView window; - QByteArray errorMessage; - QVERIFY2(initView(window, testFileUrl("dragging.qml"), true, &errorMessage), errorMessage.constData()); -@@ -386,6 +396,7 @@ void tst_QQuickMouseArea::dragThreshold() - QVERIFY(window.rootObject() != 0); - - QQuickMouseArea *mouseRegion = window.rootObject()->findChild("mouseregion"); -+ mouseRegion->setPreventStealing(preventStealing); - QQuickDrag *drag = mouseRegion->drag(); - - drag->setThreshold(5); --- -1.9.3 - diff --git a/0027-Fix-crash-when-using-with-statement-with-an-expressi.patch b/0027-Fix-crash-when-using-with-statement-with-an-expressi.patch deleted file mode 100644 index ef62d93..0000000 --- a/0027-Fix-crash-when-using-with-statement-with-an-expressi.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 6d54a59bd725ba83e758236c5ff0fc7855109dac Mon Sep 17 00:00:00 2001 -From: Simon Hausmann -Date: Thu, 2 Jun 2016 15:57:41 +0200 -Subject: [PATCH 27/40] Fix crash when using with statement with an expression - that throws - -We need to evaluate the expression for the "with" statement that is supposed to -define the new scope _before_ opening up the scope, otherwise - when the -evaluation of the expression throws an exception - we'll try to pop the "with" -scope we couldn't open in the first place. - -[ChangeLog][QtQml] Fix crash when using the "with" statement with an expression -that throws an exception. - -Task-number: QTBUG-53794 -Change-Id: I7733f5a4c5d844916302b9a91c789a0f6b421e8a -Reviewed-by: Lars Knoll ---- - src/qml/compiler/qv4codegen.cpp | 5 +++-- - tests/auto/qml/qjsengine/tst_qjsengine.cpp | 9 +++++++++ - 2 files changed, 12 insertions(+), 2 deletions(-) - -diff --git a/src/qml/compiler/qv4codegen.cpp b/src/qml/compiler/qv4codegen.cpp -index ea82d07..c14163a 100644 ---- a/src/qml/compiler/qv4codegen.cpp -+++ b/src/qml/compiler/qv4codegen.cpp -@@ -2718,6 +2718,9 @@ bool Codegen::visit(WithStatement *ast) - - _function->hasWith = true; - -+ const int withObject = _block->newTemp(); -+ _block->MOVE(_block->TEMP(withObject), *expression(ast->expression)); -+ - // need an exception handler for with to cleanup the with scope - IR::BasicBlock *withExceptionHandler = _function->newBasicBlock(exceptionHandler()); - withExceptionHandler->EXP(withExceptionHandler->CALL(withExceptionHandler->NAME(IR::Name::builtin_pop_scope, 0, 0), 0)); -@@ -2732,8 +2735,6 @@ bool Codegen::visit(WithStatement *ast) - - _block->JUMP(withBlock); - _block = withBlock; -- int withObject = _block->newTemp(); -- _block->MOVE(_block->TEMP(withObject), *expression(ast->expression)); - IR::ExprList *args = _function->New(); - args->init(_block->TEMP(withObject)); - _block->EXP(_block->CALL(_block->NAME(IR::Name::builtin_push_with_scope, 0, 0), args)); -diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp -index 9a0865c..8594aec 100644 ---- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp -+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp -@@ -193,6 +193,8 @@ private slots: - - void v4FunctionWithoutQML(); - -+ void withNoContext(); -+ - signals: - void testSignal(); - }; -@@ -3840,6 +3842,13 @@ void tst_QJSEngine::v4FunctionWithoutQML() - QVERIFY(obj.called); - } - -+void tst_QJSEngine::withNoContext() -+{ -+ // Don't crash (QTBUG-53794) -+ QJSEngine engine; -+ engine.evaluate("with (noContext) true"); -+} -+ - QTEST_MAIN(tst_QJSEngine) - - #include "tst_qjsengine.moc" --- -1.9.3 - diff --git a/0033-QML-Only-release-types-if-they-aren-t-referenced-any.patch b/0033-QML-Only-release-types-if-they-aren-t-referenced-any.patch deleted file mode 100644 index a274426..0000000 --- a/0033-QML-Only-release-types-if-they-aren-t-referenced-any.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 2ac19881f92c94f4e9427bd9ff513210675f259e Mon Sep 17 00:00:00 2001 -From: Ulf Hermann -Date: Wed, 8 Jun 2016 17:32:32 +0200 -Subject: [PATCH 33/40] QML: Only release types if they aren't referenced - anymore - -Just checking for references on m_compiledData is not enough. The -actual component can also be referenced. Thus it won't be deleted -on release(), but cannot be found in the type cache anymore. - -Task-number: QTBUG-53761 -Change-Id: I8567af8e75a078598e4fed31e4717134e1332278 -Reviewed-by: Mitch Curtis -Reviewed-by: Simon Hausmann ---- - src/qml/qml/qqmltypeloader.cpp | 3 ++- - tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp | 15 ++++++++++++--- - 2 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp -index c684c86..01200fd 100644 ---- a/src/qml/qml/qqmltypeloader.cpp -+++ b/src/qml/qml/qqmltypeloader.cpp -@@ -1961,7 +1961,8 @@ void QQmlTypeLoader::trimCache() - QList unneededTypes; - for (TypeCache::Iterator iter = m_typeCache.begin(), end = m_typeCache.end(); iter != end; ++iter) { - QQmlTypeData *typeData = iter.value(); -- if (typeData->m_compiledData && typeData->m_compiledData->count() == 1) { -+ if (typeData->m_compiledData && typeData->count() == 1 -+ && typeData->m_compiledData->count() == 1) { - // There are no live objects of this type - unneededTypes.append(iter); - } -diff --git a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp -index 7045c7c..a1eaa05 100644 ---- a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp -+++ b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp -@@ -86,10 +86,19 @@ void tst_QQMLTypeLoader::trimCache() - url.setQuery(QString::number(i)); - - QQmlTypeData *data = loader.getType(url); -- if (i % 5 == 0) // keep references to some of them so that they aren't trimmed -- data->compiledData()->addref(); -+ // Run an event loop to receive the callback that release()es. -+ QTRY_COMPARE(data->count(), 2); - -- data->release(); -+ // keep references to some of them so that they aren't trimmed. References to either the -+ // QQmlTypeData or its compiledData() should prevent the trimming. -+ if (i % 10 == 0) { -+ // keep ref on data, don't add ref on data->compiledData() -+ } else if (i % 5 == 0) { -+ data->compiledData()->addref(); -+ data->release(); -+ } else { -+ data->release(); -+ } - } - - for (int i = 0; i < 256; ++i) { --- -1.9.3 - diff --git a/Check-for-NULL-from-glGetString.patch b/Check-for-NULL-from-glGetString.patch deleted file mode 100644 index 5d8e04e..0000000 --- a/Check-for-NULL-from-glGetString.patch +++ /dev/null @@ -1,116 +0,0 @@ -From d4efd5ab810e92202efe672be29136324dd2a3f9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= -Date: Mon, 28 Dec 2015 05:43:18 +0200 -Subject: [PATCH] Check for NULL from glGetString - -glGetString can return NULL pointer in case of error -so check for it before using. - -Change-Id: Ia07424c8f2b3ce6dce675514900a509e3ef3b739 ---- - src/particles/qquickimageparticle.cpp | 6 ++++-- - src/quick/scenegraph/qsgcontext.cpp | 22 ++++++++++++++++------ - .../qsgdefaultdistancefieldglyphcache.cpp | 8 +++++--- - src/quick/scenegraph/util/qsgatlastexture.cpp | 4 ++-- - 4 files changed, 27 insertions(+), 13 deletions(-) - -diff --git a/src/particles/qquickimageparticle.cpp b/src/particles/qquickimageparticle.cpp -index d78a350..b54861e 100644 ---- a/src/particles/qquickimageparticle.cpp -+++ b/src/particles/qquickimageparticle.cpp -@@ -1276,14 +1276,16 @@ void QQuickImageParticle::finishBuildParticleNodes(QSGNode** node) - // OS X 10.8.3 introduced a bug in the AMD drivers, for at least the 2011 macbook pros, - // causing point sprites who read gl_PointCoord in the frag shader to come out as - // green-red blobs. -- if (perfLevel < Deformable && strstr((char *) glGetString(GL_VENDOR), "ATI")) { -+ const char *vendor = (const char *) glGetString(GL_VENDOR); -+ if (perfLevel < Deformable && vendor && strstr(vendor, "ATI")) { - perfLevel = Deformable; - } - #endif - - #ifdef Q_OS_LINUX - // Nouveau drivers can potentially freeze a machine entirely when taking the point-sprite path. -- if (perfLevel < Deformable && strstr((const char *) glGetString(GL_VENDOR), "nouveau")) -+ const char *vendor = (const char *) glGetString(GL_VENDOR); -+ if (perfLevel < Deformable && vendor && strstr(vendor, "nouveau")) - perfLevel = Deformable; - #endif - -diff --git a/src/quick/scenegraph/qsgcontext.cpp b/src/quick/scenegraph/qsgcontext.cpp -index dd6977e..43d549f 100644 ---- a/src/quick/scenegraph/qsgcontext.cpp -+++ b/src/quick/scenegraph/qsgcontext.cpp -@@ -624,14 +624,24 @@ void QSGRenderContext::initialize(QOpenGLContext *context) - m_sg->renderContextInitialized(this); - - #ifdef Q_OS_LINUX -+ while (funcs->glGetError() != GL_NO_ERROR); -+ - const char *vendor = (const char *) funcs->glGetString(GL_VENDOR); -- if (strstr(vendor, "nouveau")) -- m_brokenIBOs = true; - const char *renderer = (const char *) funcs->glGetString(GL_RENDERER); -- if (strstr(renderer, "llvmpipe")) -- m_serializedRender = true; -- if (strstr(vendor, "Hisilicon Technologies") && strstr(renderer, "Immersion.16")) -- m_brokenIBOs = true; -+ -+ if (vendor && renderer) { -+ if (strstr(vendor, "nouveau")) -+ m_brokenIBOs = true; -+ if (strstr(renderer, "llvmpipe")) -+ m_serializedRender = true; -+ if (strstr(vendor, "Hisilicon Technologies") && strstr(renderer, "Immersion.16")) -+ m_brokenIBOs = true; -+ } else { -+ GLenum err; -+ while ((err = funcs->glGetError()) != GL_NO_ERROR) { -+ qWarning("QSGRenderContext::initialize: GL error %x from glGetString", err); -+ } -+ } - #endif - - emit initialized(); -diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp -index dcc485c..43e234b 100644 ---- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp -+++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp -@@ -488,9 +488,11 @@ bool QSGDefaultDistanceFieldGlyphCache::useTextureUploadWorkaround() const - static bool set = false; - static bool useWorkaround = false; - if (!set) { -- useWorkaround = qstrcmp(reinterpret_cast(m_funcs->glGetString(GL_RENDERER)), -- "Mali-400 MP") == 0; -- set = true; -+ const char *renderer = reinterpret_cast(m_funcs->glGetString(GL_RENDERER)); -+ if (renderer) { -+ useWorkaround = qstrcmp(renderer, "Mali-400 MP") == 0; -+ set = true; -+ } - } - return useWorkaround; - } -diff --git a/src/quick/scenegraph/util/qsgatlastexture.cpp b/src/quick/scenegraph/util/qsgatlastexture.cpp -index 8e8e870..d726907 100644 ---- a/src/quick/scenegraph/util/qsgatlastexture.cpp -+++ b/src/quick/scenegraph/util/qsgatlastexture.cpp -@@ -150,13 +150,13 @@ Atlas::Atlas(const QSize &size) - wrongfullyReportsBgra8888Support = false; - - const char *ext = (const char *) QOpenGLContext::currentContext()->functions()->glGetString(GL_EXTENSIONS); -- if (!wrongfullyReportsBgra8888Support -+ if (!wrongfullyReportsBgra8888Support && ext - && (strstr(ext, "GL_EXT_bgra") - || strstr(ext, "GL_EXT_texture_format_BGRA8888") - || strstr(ext, "GL_IMG_texture_format_BGRA8888"))) { - m_internalFormat = m_externalFormat = GL_BGRA; - #ifdef Q_OS_IOS -- } else if (strstr(ext, "GL_APPLE_texture_format_BGRA8888")) { -+ } else if (ext && strstr(ext, "GL_APPLE_texture_format_BGRA8888")) { - m_internalFormat = GL_RGBA; - m_externalFormat = GL_BGRA; - #endif // IOS --- -1.9.3 - diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index d7a03d9..11d2626 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -13,22 +13,24 @@ %endif %endif +%ifarch %{ix86} %global nosse2_hack 1 ## TODO: # * consider debian's approach of runtime detection instead: # https://codereview.qt-project.org/#/c/127354/ +%endif #define prerelease Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} -Version: 5.6.1 -Release: 5%{?prerelease:.%{prerelease}}%{?dist} +Version: 5.7.0 +Release: 2%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details License: LGPLv2 with exceptions or GPLv3 with exceptions Url: http://www.qt.io -Source0: http://download.qt.io/official_releases/qt/5.6/%{version}%{?prerelease:-%{prerelease}}/submodules/%{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}}.tar.xz +Source0: http://download.qt.io/snapshots/qt/5.6/%{version}%{?prerelease:-%{prerelease}}/submodules/%{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}}.tar.xz # support no_sse2 CONFIG (fedora i686 builds cannot assume -march=pentium4 -msse2 -mfpmath=sse flags, or the JIT that needs them) # https://codereview.qt-project.org/#change,73710 @@ -40,30 +42,14 @@ Patch1: qtdeclarative-opensource-src-5.5.0-no_sse2.patch Patch2: qtdeclarative-QQuickShaderEffectSource_deadlock.patch ## upstream patches -Patch7: 0007-Revert-Remove-this-piece-of-code.patch -Patch10: 0010-Fix-crash-for-unknown-QQmlListModel-roles-in-debug-b.patch -Patch11: 0011-Avoid-Canvas-crashes-with-qtquickcompiler.patch -Patch16: 0016-Fix-crash-with-SignalTransition.patch -Patch24: 0024-Revert-removal-of-Fixed-MouseArea-threshold-with-pre.patch -Patch27: 0027-Fix-crash-when-using-with-statement-with-an-expressi.patch -Patch33: 0033-QML-Only-release-types-if-they-aren-t-referenced-any.patch ## upstreamable patches # use system double-conversation -%if 0%{?fedora} || 0%{?rhel} > 6 -%global system_doubleconv 1 -BuildRequires: double-conversion-devel -%endif -Patch200: qtdeclarative-system_doubleconv.patch # https://bugs.kde.org/show_bug.cgi?id=346118#c108 Patch201: qtdeclarative-kdebug346118.patch # additional i686/qml workaround (on top of existing patch135), https://bugzilla.redhat.com/1331593 Patch235: qtdeclarative-opensource-src-5.6.0-qml_no-lifetime-dse.patch -## upstream patches under review -# Check-for-NULL-from-glGetStrin -Patch500: Check-for-NULL-from-glGetString.patch - Obsoletes: qt5-qtjsbackend < 5.2.0 BuildRequires: cmake @@ -71,7 +57,7 @@ BuildRequires: qt5-qtbase-devel >= %{version} BuildRequires: qt5-qtbase-private-devel %{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} %if ! 0%{?bootstrap} -BuildRequires: qt5-qtxmlpatterns-devel +BuildRequires: pkgconfig(Qt5XmlPatterns) %endif BuildRequires: python @@ -126,24 +112,9 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %patch1 -p1 -b .no_sse2 %endif %patch2 -p1 -b .QQuickShaderEffectSource_deadlock - -%patch7 -p1 -b .0007 -%patch10 -p1 -b .0010 -%patch11 -p1 -b .0011 -%patch16 -p1 -b .0016 -%patch24 -p1 -b .0024 -%patch27 -p1 -b .0027 -%patch33 -p1 -b .0033 - -%if 0%{?system_doubleconv} -%patch200 -p1 -b .system_doubleconv -rm -rfv src/3rdparty/double-conversion -%endif %patch201 -p0 -b .kdebug346118 %patch235 -p1 -b .qml_no-lifetime-dse -%patch500 -p1 -b .Check-for-NULL-from-glGetString - %build mkdir %{_target_platform} @@ -208,24 +179,14 @@ popd # nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs pushd %{buildroot}%{_qt5_libdir} for prl_file in libQt5*.prl ; do - sed -i \ - -e "/^QMAKE_PRL_BUILD_DIR/d" \ - -e "/-ldouble-conversion/d" \ - ${prl_file} - if [ -f "$(basename ${prl_file} .prl).so" ]; then - rm -fv "$(basename ${prl_file} .prl).la" - else - sed -i \ - -e "/^QMAKE_PRL_LIBS/d" \ - -e "/-ldouble-conversion/d" \ - $(basename ${prl_file} .prl).la - fi + sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} + rm -fv "$(basename ${prl_file} .prl).la" + sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} done popd %check -test -z "$(grep double-conversion %{buildroot}%{_qt5_libdir}/*.{la,prl})" %if 0%{?tests} export CTEST_OUTPUT_ON_FAILURE=1 export PATH=%{buildroot}%{_qt5_bindir}:$PATH @@ -254,8 +215,8 @@ make check -k -C %{_target_platform}/tests ||: %{_qt5_libdir}/libQt5QuickTest.so.5* %{_qt5_plugindir}/qmltooling/ %{_qt5_archdatadir}/qml/ -%dir %{_qt5_libdir}/cmake/Qt5Qml/ -%{_qt5_libdir}/cmake/Qt5Qml/Qt5Qml_*Factory.cmake + + %files devel %{_bindir}/qml* @@ -269,10 +230,16 @@ make check -k -C %{_target_platform}/tests ||: %{_qt5_libdir}/cmake/Qt5*/Qt5*Config*.cmake %{_qt5_libdir}/pkgconfig/Qt5*.pc %{_qt5_archdatadir}/mkspecs/modules/*.pri +%dir %{_qt5_libdir}/cmake/Qt5Qml/ +%{_qt5_libdir}/cmake/Qt5Qml/Qt5Qml_*Factory.cmake %files static -%{_qt5_libdir}/libQt5QmlDevTools.*a +%{_qt5_libdir}/libQt5QmlDevTools.a %{_qt5_libdir}/libQt5QmlDevTools.prl +%{_qt5_libdir}/libQt5PacketProtocol.a +%{_qt5_libdir}/libQt5PacketProtocol.prl +%{_qt5_libdir}/libQt5QmlDebug.a +%{_qt5_libdir}/libQt5QmlDebug.prl %if 0%{?docs} %files doc @@ -288,17 +255,14 @@ make check -k -C %{_target_platform}/tests ||: %changelog -* Thu Jun 16 2016 Rex Dieter 5.6.1-5 -- backport 5.6 branch fixes +* Mon Jul 04 2016 Helio Chissini de Castro - 5.7.0-2 +- Compiled with gcc -* Wed Jun 15 2016 Rex Dieter - 5.6.1-4 -- drop pkgconfig-style Qt5 deps +* Tue Jun 14 2016 Helio Chissini de Castro - 5.7.0-1 +- Qt 5.7.0 release -* Wed Jun 15 2016 Jan Grulich - 5.6.1-3 -- Apply no_sse2 hack to all architecturs to make qt5-qtdeclarative-devel multilib-clean - -* Fri Jun 10 2016 Rex Dieter - 5.6.1-2 -- strip double-conversion references from .la/.prl files +* Thu Jun 09 2016 Helio Chissini de Castro - 5.7.0-0.1 +- Prepare for 5.7.0 * Thu Jun 09 2016 Jan Grulich - 5.6.1-1 - Update to 5.6.1 diff --git a/qtdeclarative-c++11.patch b/qtdeclarative-c++11.patch deleted file mode 100644 index b218601..0000000 --- a/qtdeclarative-c++11.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 187a5b0c6e74e0109e4ec257104428a3c87fb52f Mon Sep 17 00:00:00 2001 -From: Marco Benelli -Date: Wed, 27 Jan 2016 09:18:02 +0100 -Subject: [PATCH] qmlimportscanner: do not use local predicates. - -Some (?) pre C++11 compilers are not able to resolve template arguments -for std::find_if when the predicates are local to the function. - -Change-Id: I1e5c4adc3409bd32081ddedff158ab9dcc2eaa9a -Reviewed-by: Simon Hausmann ---- - tools/qmlimportscanner/main.cpp | 31 ++++++++++++++++++------------- - 1 file changed, 18 insertions(+), 13 deletions(-) - -diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp -index b16253a..189459f 100644 ---- a/tools/qmlimportscanner/main.cpp -+++ b/tools/qmlimportscanner/main.cpp -@@ -344,6 +344,24 @@ QVariantList mergeImports(const QVariantList &a, const QVariantList &b) - return merged; - } - -+// Predicates needed by findQmlImportsInDirectory. -+ -+struct isMetainfo { -+ bool operator() (const QFileInfo &x) const { -+ return x.suffix() == QLatin1String("metainfo"); -+ } -+}; -+ -+struct pathStartsWith { -+ pathStartsWith(const QString &path) : _path(path) {} -+ bool operator() (const QString &x) const { -+ return _path.startsWith(x); -+ } -+ const QString _path; -+}; -+ -+ -+ - // Scan all qml files in directory for import statements - QVariantList findQmlImportsInDirectory(const QString &qmlDir) - { -@@ -353,19 +371,6 @@ QVariantList findQmlImportsInDirectory(const QString &qmlDir) - - QDirIterator iterator(qmlDir, QDir::AllDirs | QDir::NoDotDot, QDirIterator::Subdirectories); - QStringList blacklist; -- struct isMetainfo { -- bool operator() (const QFileInfo &x) const { -- return x.suffix() == QLatin1String("metainfo"); -- } -- }; -- struct pathStartsWith { -- pathStartsWith(const QString &path) : _path(path) {} -- bool operator() (const QString &x) const { -- return _path.startsWith(x); -- } -- const QString _path; -- }; -- - - while (iterator.hasNext()) { - iterator.next(); --- -1.9.3 - diff --git a/qtdeclarative-system_doubleconv.patch b/qtdeclarative-system_doubleconv.patch deleted file mode 100644 index beb0be7..0000000 --- a/qtdeclarative-system_doubleconv.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/jsruntime.pri.system_doubleconv qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/jsruntime.pri ---- qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/jsruntime.pri.system_doubleconv 2016-05-20 08:25:07.986878324 -0500 -+++ qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/jsruntime.pri 2016-05-20 11:21:05.059471545 -0500 -@@ -118,4 +118,5 @@ valgrind { - - ios: DEFINES += ENABLE_ASSEMBLER_WX_EXCLUSIVE=1 - --include(../../3rdparty/double-conversion/double-conversion.pri) -+INCLUDEPATH += /usr/include/double-conversion -+LIBS_PRIVATE += -ldouble-conversion -diff -up qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/qv4runtime.cpp.system_doubleconv qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/qv4runtime.cpp ---- qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/qv4runtime.cpp.system_doubleconv 2016-02-26 03:34:34.000000000 -0600 -+++ qtdeclarative-opensource-src-5.6.0/src/qml/jsruntime/qv4runtime.cpp 2016-05-20 11:22:00.603641534 -0500 -@@ -60,7 +60,7 @@ - - #include - --#include "../../3rdparty/double-conversion/double-conversion.h" -+#include - - #ifdef QV4_COUNT_RUNTIME_FUNCTIONS - # include diff --git a/sources b/sources index 1c8b142..a388da7 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -ea2a2602b8a91f2618a36be09bcd79e9 qtdeclarative-opensource-src-5.6.1.tar.xz +0d9e461aa54dba4793253fa2eb501f9b qtdeclarative-opensource-src-5.7.0.tar.xz