[SCM] qtdeclarative packaging branch, ubuntu, updated. debian/5.6.1-11-111-gabc88c7

Timo Jyrinki timo at moszumanska.debian.org
Mon Nov 7 12:24:12 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtdeclarative.git;a=commitdiff;h=abc88c7

The following commit has been merged in the ubuntu branch:
commit abc88c713bbb8ec3425d0442de822a2052770d3e
Author: Timo Jyrinki <timo.jyrinki at canonical.com>
Date:   Mon Nov 7 12:23:57 2016 +0000

    New usptream version 5.6.2. Drop patches merged upstream.
    
    * New usptream version 5.6.2.
    * Drop patches merged upstream:
      - qml_only_release_types_if_they_arent_referenced_anymore.patch
      - no_lifetime_dse.diff
      - V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch
      - Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch
      - Flickable-fix-minXExtent-minYExtent-when-content-is-.patch
      - QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch
      - Revert-Remove-this-piece-of-code.patch
---
 debian/changelog                                   |  11 +-
 ...ine-crash-on-big-endian-64-bit-architectu.patch |  39 ---
 ...ix-minXExtent-minYExtent-when-content-is-.patch | 120 -------
 ...w-Fill-out-timestamps-in-QHoverEvents-sen.patch | 261 --------------
 .../patches/Revert-Remove-this-piece-of-code.patch |  99 ------
 ...et-the-tag-when-boxing-a-pointer-in-QV4-V.patch | 374 ---------------------
 debian/patches/fix_test_remove_qlibraryinfo.patch  |   4 +-
 debian/patches/no_lifetime_dse.diff                |  15 -
 ...se_types_if_they_arent_referenced_anymore.patch |  63 ----
 debian/patches/series                              |   7 -
 10 files changed, 12 insertions(+), 981 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 8e8a802..3dd1cb1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,18 @@
-qtdeclarative-opensource-src (5.6.1-11ubuntu1) UNRELEASED; urgency=medium
+qtdeclarative-opensource-src (5.6.2-0ubuntu1) UNRELEASED; urgency=medium
 
   * Update symbols.
   * Merge with Debian 5.6.1-11 changes.
   * Use fix-V4-on-big-endian.patch version from upstream 5.6 branch.
   * Skip certain failing tests on i386 and ppc64el tests on xenial.
+  * New usptream version 5.6.2.
+  * Drop patches merged upstream:
+    - qml_only_release_types_if_they_arent_referenced_anymore.patch
+    - no_lifetime_dse.diff
+    - V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch
+    - Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch
+    - Flickable-fix-minXExtent-minYExtent-when-content-is-.patch
+    - QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch
+    - Revert-Remove-this-piece-of-code.patch
 
  -- Timo Jyrinki <timo-jyrinki at ubuntu.com>  Thu, 06 Oct 2016 14:39:07 +0000
 
diff --git a/debian/patches/Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch b/debian/patches/Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch
deleted file mode 100644
index 8bf3809..0000000
--- a/debian/patches/Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 1a55e5907f46166f1e96712d8a19dbf313de4a97 Mon Sep 17 00:00:00 2001
-From: Maximiliano Curia <maxy at debian.org>
-Date: Tue, 19 Jul 2016 15:49:48 +0200
-Subject: [PATCH] Fix QQmlEngine crash on big endian 64 bit architectures
- (s390x)
-
-This change disables the BIG_ENDIAN 32 bits words mangling in 64 bits
-machines (where the words are 64 bits long); this would otherwise result
-in a segfault.
-
-Task-number: QTBUG-54717
-Change-Id: I6b5ab6f213880b030795185c05e609d290168901
----
- src/qml/jsruntime/qv4value_p.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h
-index 7c2bb31..5abf5ad 100644
---- a/src/qml/jsruntime/qv4value_p.h
-+++ b/src/qml/jsruntime/qv4value_p.h
-@@ -96,13 +96,13 @@ public:
-     Q_ALWAYS_INLINE quint64 rawValue() const { return _val; }
-     Q_ALWAYS_INLINE void setRawValue(quint64 raw) { _val = raw; }
- 
--#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
-+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN || defined(QV4_USE_64_BIT_VALUE_ENCODING)
-     static inline int valueOffset() { return 0; }
-     static inline int tagOffset() { return 4; }
-     Q_ALWAYS_INLINE void setTagValue(quint32 tag, quint32 value) { _val = quint64(tag) << 32 | value; }
-     Q_ALWAYS_INLINE quint32 value() const { return _val & quint64(~quint32(0)); }
-     Q_ALWAYS_INLINE quint32 tag() const { return _val >> 32; }
--#else // !Q_LITTLE_ENDIAN
-+#else // !Q_LITTLE_ENDIAN && !defined(QV4_USE_64_BIT_VALUE_ENCODING)
-     static inline int valueOffset() { return 4; }
-     static inline int tagOffset() { return 0; }
-     Q_ALWAYS_INLINE void setTagValue(quint32 tag, quint32 value) { _val = quint64(value) << 32 | tag; }
--- 
-2.8.1
-
diff --git a/debian/patches/Flickable-fix-minXExtent-minYExtent-when-content-is-.patch b/debian/patches/Flickable-fix-minXExtent-minYExtent-when-content-is-.patch
deleted file mode 100644
index b8708ac..0000000
--- a/debian/patches/Flickable-fix-minXExtent-minYExtent-when-content-is-.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 67779215fc919075709d2072e412551b3e126a3d Mon Sep 17 00:00:00 2001
-From: Andrea Bernabei <and.bernabei at gmail.com>
-Date: Tue, 31 May 2016 14:21:44 +0100
-Subject: [PATCH] Flickable: fix minXExtent/minYExtent when content is smaller
- than view
-
-At the moment, defining leftMargin (or topMargin) and contentWidth
-(or contentHeight) so that "leftMargin+contentWidth < flickable.width"
-(or topMargin+contentHeight < flickable.height) leads to widthRatio
-(or heightRatio) having value != 1.
-The value should, however, be 1, as the content is completely visible
-inside the view, margins included.
-
-As a sideeffect, under the assumptions described above, it will now
-not be possible to scroll the leftMargin (or topMargin) out of screen,
-something which was possible (and it shouldn't have) before this fix.
-
-Task-number: QTBUG-53726
-Change-Id: I22426c8038e90a2cfc7445914206eae0e781a3fb
----
- src/quick/items/qquickflickable.cpp                |  4 ++--
- .../qquickflickable/data/ratios_smallContent.qml   | 19 +++++++++++++++
- .../quick/qquickflickable/tst_qquickflickable.cpp  | 28 ++++++++++++++++++++++
- 3 files changed, 49 insertions(+), 2 deletions(-)
- create mode 100644 tests/auto/quick/qquickflickable/data/ratios_smallContent.qml
-
-diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
-index 32d445d..b0980cd 100644
---- a/src/quick/items/qquickflickable.cpp
-+++ b/src/quick/items/qquickflickable.cpp
-@@ -1580,13 +1580,13 @@ qreal QQuickFlickable::minXExtent() const
- qreal QQuickFlickable::maxXExtent() const
- {
-     Q_D(const QQuickFlickable);
--    return qMin<qreal>(0, width() - vWidth() - d->hData.endMargin);
-+    return qMin<qreal>(minXExtent(), width() - vWidth() - d->hData.endMargin);
- }
- /* returns -ve */
- qreal QQuickFlickable::maxYExtent() const
- {
-     Q_D(const QQuickFlickable);
--    return qMin<qreal>(0, height() - vHeight() - d->vData.endMargin);
-+    return qMin<qreal>(minYExtent(), height() - vHeight() - d->vData.endMargin);
- }
- 
- void QQuickFlickable::componentComplete()
-diff --git a/tests/auto/quick/qquickflickable/data/ratios_smallContent.qml b/tests/auto/quick/qquickflickable/data/ratios_smallContent.qml
-new file mode 100644
-index 0000000..07bad68
---- /dev/null
-+++ b/tests/auto/quick/qquickflickable/data/ratios_smallContent.qml
-@@ -0,0 +1,19 @@
-+import QtQuick 2.0
-+
-+Flickable {
-+    property double heightRatioIs: visibleArea.heightRatio
-+    property double widthRatioIs: visibleArea.widthRatio
-+
-+    width: 200
-+    height: 200
-+    contentWidth: item.width
-+    contentHeight: item.height
-+    topMargin: 20
-+    leftMargin: 40
-+
-+    Item {
-+        id: item
-+        width: 100
-+        height: 100
-+    }
-+}
-diff --git a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
-index dc71717..2e134ff 100644
---- a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
-+++ b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
-@@ -95,6 +95,7 @@ private slots:
-     void movementFromProgrammaticFlick();
-     void cleanup();
-     void contentSize();
-+    void ratios_smallContent();
- 
- private:
-     void flickWithTouch(QQuickWindow *window, QTouchDevice *touchDevice, const QPoint &from, const QPoint &to);
-@@ -1817,6 +1818,33 @@ void tst_qquickflickable::contentSize()
-     QCOMPARE(chspy.count(), 1);
- }
- 
-+// QTBUG-53726
-+void tst_qquickflickable::ratios_smallContent()
-+{
-+    QScopedPointer<QQuickView> window(new QQuickView);
-+    window->setSource(testFileUrl("ratios_smallContent.qml"));
-+    QTRY_COMPARE(window->status(), QQuickView::Ready);
-+    QQuickViewTestUtil::centerOnScreen(window.data());
-+    QQuickViewTestUtil::moveMouseAway(window.data());
-+    window->setTitle(QTest::currentTestFunction());
-+    window->show();
-+    QVERIFY(QTest::qWaitForWindowExposed(window.data()));
-+    QQuickItem *root = window->rootObject();
-+    QVERIFY(root);
-+    QQuickFlickable *obj = qobject_cast<QQuickFlickable*>(root);
-+    QVERIFY(obj != 0);
-+
-+    //doublecheck the item, as specified by contentWidth/Height, fits in the view
-+    //use tryCompare to allow a bit of stabilization in component's properties
-+    QTRY_COMPARE(obj->leftMargin() + obj->contentWidth() + obj->rightMargin() <= obj->width(), true);
-+    QTRY_COMPARE(obj->topMargin() + obj->contentHeight() + obj->bottomMargin() <= obj->height(), true);
-+
-+    //the whole item fits in the flickable, heightRatio should be 1
-+    QCOMPARE(obj->property("heightRatioIs").toDouble(), 1.);
-+    QCOMPARE(obj->property("widthRatioIs").toDouble(), 1.);
-+}
-+
-+
- QTEST_MAIN(tst_qquickflickable)
- 
- #include "tst_qquickflickable.moc"
--- 
-2.7.4
-
diff --git a/debian/patches/QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch b/debian/patches/QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch
deleted file mode 100644
index e5de93d..0000000
--- a/debian/patches/QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch
+++ /dev/null
@@ -1,261 +0,0 @@
-From e4f7ab42c6c4f19eed76d9d0de5accda5835a3a8 Mon Sep 17 00:00:00 2001
-From: Daniel d'Andrada <daniel.dandrada at canonical.com>
-Date: Wed, 6 Jul 2016 17:01:35 -0300
-Subject: [PATCH] QQuickWindow: Fill out timestamps in QHoverEvents sent to
- QQuickItems
-
-Task-number: QTBUG-54600
-Change-Id: Ie24c44e2f68aae55ff1146c13c3dfc25349b7a29
-Reviewed-by: Frederik Gladhorn <frederik.gladhorn at qt.io>
-Reviewed-by: Robin Burchell <robin.burchell at viroteck.net>
-Reviewed-by: Shawn Rutledge <shawn.rutledge at qt.io>
----
- src/quick/items/qquickwindow.cpp                   | 28 +++----
- src/quick/items/qquickwindow_p.h                   |  6 +-
- tests/auto/quick/qquickwindow/tst_qquickwindow.cpp | 85 ++++++++++++++++++++++
- 3 files changed, 103 insertions(+), 16 deletions(-)
-
-diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
-index 14e7915..de1b5f2 100644
---- a/src/quick/items/qquickwindow.cpp
-+++ b/src/quick/items/qquickwindow.cpp
-@@ -661,10 +661,10 @@ bool QQuickWindowPrivate::translateTouchToMouse(QQuickItem *item, QTouchEvent *e
-                     lastMousePosition = me->windowPos();
- 
-                     bool accepted = me->isAccepted();
--                    bool delivered = deliverHoverEvent(contentItem, me->windowPos(), last, me->modifiers(), accepted);
-+                    bool delivered = deliverHoverEvent(contentItem, me->windowPos(), last, me->modifiers(), me->timestamp(), accepted);
-                     if (!delivered) {
-                         //take care of any exits
--                        accepted = clearHover();
-+                        accepted = clearHover(me->timestamp());
-                     }
-                     me->setAccepted(accepted);
-                     break;
-@@ -1397,7 +1397,7 @@ QQuickItem *QQuickWindow::mouseGrabberItem() const
- }
- 
- 
--bool QQuickWindowPrivate::clearHover()
-+bool QQuickWindowPrivate::clearHover(ulong timestamp)
- {
-     Q_Q(QQuickWindow);
-     if (hoverItems.isEmpty())
-@@ -1407,7 +1407,7 @@ bool QQuickWindowPrivate::clearHover()
- 
-     bool accepted = false;
-     foreach (QQuickItem* item, hoverItems)
--        accepted = sendHoverEvent(QEvent::HoverLeave, item, pos, pos, QGuiApplication::keyboardModifiers(), true) || accepted;
-+        accepted = sendHoverEvent(QEvent::HoverLeave, item, pos, pos, QGuiApplication::keyboardModifiers(), timestamp, true) || accepted;
-     hoverItems.clear();
-     return accepted;
- }
-@@ -1657,13 +1657,15 @@ void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)
- 
- bool QQuickWindowPrivate::sendHoverEvent(QEvent::Type type, QQuickItem *item,
-                                       const QPointF &scenePos, const QPointF &lastScenePos,
--                                      Qt::KeyboardModifiers modifiers, bool accepted)
-+                                      Qt::KeyboardModifiers modifiers, ulong timestamp,
-+                                      bool accepted)
- {
-     Q_Q(QQuickWindow);
-     const QTransform transform = QQuickItemPrivate::get(item)->windowToItemTransform();
- 
-     //create copy of event
-     QHoverEvent hoverEvent(type, transform.map(scenePos), transform.map(lastScenePos), modifiers);
-+    hoverEvent.setTimestamp(timestamp);
-     hoverEvent.setAccepted(accepted);
- 
-     QSet<QQuickItem *> hasFiltered;
-@@ -1699,10 +1701,10 @@ void QQuickWindow::mouseMoveEvent(QMouseEvent *event)
-         d->lastMousePosition = event->windowPos();
- 
-         bool accepted = event->isAccepted();
--        bool delivered = d->deliverHoverEvent(d->contentItem, event->windowPos(), last, event->modifiers(), accepted);
-+        bool delivered = d->deliverHoverEvent(d->contentItem, event->windowPos(), last, event->modifiers(), event->timestamp(), accepted);
-         if (!delivered) {
-             //take care of any exits
--            accepted = d->clearHover();
-+            accepted = d->clearHover(event->timestamp());
-         }
-         event->setAccepted(accepted);
-         return;
-@@ -1712,7 +1714,7 @@ void QQuickWindow::mouseMoveEvent(QMouseEvent *event)
- }
- 
- bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &scenePos, const QPointF &lastScenePos,
--                                         Qt::KeyboardModifiers modifiers, bool &accepted)
-+                                         Qt::KeyboardModifiers modifiers, ulong timestamp, bool &accepted)
- {
-     Q_Q(QQuickWindow);
-     QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item);
-@@ -1728,7 +1730,7 @@ bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &sce
-         QQuickItem *child = children.at(ii);
-         if (!child->isVisible() || !child->isEnabled() || QQuickItemPrivate::get(child)->culled)
-             continue;
--        if (deliverHoverEvent(child, scenePos, lastScenePos, modifiers, accepted))
-+        if (deliverHoverEvent(child, scenePos, lastScenePos, modifiers, timestamp, accepted))
-             return true;
-     }
- 
-@@ -1737,7 +1739,7 @@ bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &sce
-         if (item->contains(p)) {
-             if (!hoverItems.isEmpty() && hoverItems[0] == item) {
-                 //move
--                accepted = sendHoverEvent(QEvent::HoverMove, item, scenePos, lastScenePos, modifiers, accepted);
-+                accepted = sendHoverEvent(QEvent::HoverMove, item, scenePos, lastScenePos, modifiers, timestamp, accepted);
-             } else {
-                 QList<QQuickItem *> itemsToHover;
-                 QQuickItem* parent = item;
-@@ -1748,12 +1750,12 @@ bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &sce
-                 // Leaving from previous hovered items until we reach the item or one of its ancestors.
-                 while (!hoverItems.isEmpty() && !itemsToHover.contains(hoverItems[0])) {
-                     QQuickItem *hoverLeaveItem = hoverItems.takeFirst();
--                    sendHoverEvent(QEvent::HoverLeave, hoverLeaveItem, scenePos, lastScenePos, modifiers, accepted);
-+                    sendHoverEvent(QEvent::HoverLeave, hoverLeaveItem, scenePos, lastScenePos, modifiers, timestamp, accepted);
-                 }
- 
-                 if (!hoverItems.isEmpty() && hoverItems[0] == item){//Not entering a new Item
-                     // ### Shouldn't we send moves for the parent items as well?
--                    accepted = sendHoverEvent(QEvent::HoverMove, item, scenePos, lastScenePos, modifiers, accepted);
-+                    accepted = sendHoverEvent(QEvent::HoverMove, item, scenePos, lastScenePos, modifiers, timestamp, accepted);
-                 } else {
-                     // Enter items that are not entered yet.
-                     int startIdx = -1;
-@@ -1772,7 +1774,7 @@ bool QQuickWindowPrivate::deliverHoverEvent(QQuickItem *item, const QPointF &sce
-                         // itemToHoverPrivate->window here prevents that case.
-                         if (itemToHoverPrivate->window == q && itemToHoverPrivate->hoverEnabled) {
-                             hoverItems.prepend(itemToHover);
--                            sendHoverEvent(QEvent::HoverEnter, itemToHover, scenePos, lastScenePos, modifiers, accepted);
-+                            sendHoverEvent(QEvent::HoverEnter, itemToHover, scenePos, lastScenePos, modifiers, timestamp, accepted);
-                         }
-                     }
-                 }
-diff --git a/src/quick/items/qquickwindow_p.h b/src/quick/items/qquickwindow_p.h
-index 33aa021..be7252d 100644
---- a/src/quick/items/qquickwindow_p.h
-+++ b/src/quick/items/qquickwindow_p.h
-@@ -155,14 +155,14 @@ public:
-     bool deliverTouchCancelEvent(QTouchEvent *);
-     void deliverDelayedTouchEvent();
-     void flushDelayedTouchEvent();
--    bool deliverHoverEvent(QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos, Qt::KeyboardModifiers modifiers, bool &accepted);
-+    bool deliverHoverEvent(QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos, Qt::KeyboardModifiers modifiers, ulong timestamp, bool &accepted);
-     bool deliverMatchingPointsToItem(QQuickItem *item, QTouchEvent *event, QSet<int> *acceptedNewPoints, const QSet<int> &matchingNewPoints, const QList<QTouchEvent::TouchPoint> &matchingPoints, QSet<QQuickItem*> *filtered);
-     QTouchEvent *touchEventForItemBounds(QQuickItem *target, const QTouchEvent &originalEvent);
-     QTouchEvent *touchEventWithPoints(const QTouchEvent &event, const QList<QTouchEvent::TouchPoint> &newPoints);
-     bool sendFilteredTouchEvent(QQuickItem *target, QQuickItem *item, QTouchEvent *event, QSet<QQuickItem*> *filtered);
-     bool sendHoverEvent(QEvent::Type, QQuickItem *, const QPointF &scenePos, const QPointF &lastScenePos,
--                        Qt::KeyboardModifiers modifiers, bool accepted);
--    bool clearHover();
-+                        Qt::KeyboardModifiers modifiers, ulong timestamp, bool accepted);
-+    bool clearHover(ulong timestamp = 0);
- #ifndef QT_NO_DRAGANDDROP
-     void deliverDragEvent(QQuickDragGrabber *, QEvent *);
-     bool deliverDragEvent(QQuickDragGrabber *, QQuickItem *, QDragMoveEvent *);
-diff --git a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
-index c597cf0..b03cb85 100644
---- a/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
-+++ b/tests/auto/quick/qquickwindow/tst_qquickwindow.cpp
-@@ -371,6 +371,7 @@ private slots:
-     void testRenderJob();
- 
-     void testHoverChildMouseEventFilter();
-+    void testHoverTimestamp();
- private:
-     QTouchDevice *touchDevice;
-     QTouchDevice *touchDeviceWithVelocity;
-@@ -2282,6 +2283,90 @@ void tst_qquickwindow::testHoverChildMouseEventFilter()
-     QCOMPARE(middleItem->eventCount(QEvent::HoverEnter), 0);
- }
- 
-+class HoverTimestampConsumer : public QQuickItem
-+{
-+    Q_OBJECT
-+public:
-+    HoverTimestampConsumer(QQuickItem *parent = 0)
-+        : QQuickItem(parent)
-+    {
-+        setAcceptHoverEvents(true);
-+    }
-+
-+    void hoverEnterEvent(QHoverEvent *event) { hoverTimestamps << event->timestamp(); }
-+    void hoverLeaveEvent(QHoverEvent *event) { hoverTimestamps << event->timestamp(); }
-+    void hoverMoveEvent(QHoverEvent *event) { hoverTimestamps << event->timestamp(); }
-+
-+    QList<ulong> hoverTimestamps;
-+};
-+
-+// Checks that a QHoverEvent carries the timestamp of the QMouseEvent that caused it.
-+// QTBUG-54600
-+void tst_qquickwindow::testHoverTimestamp()
-+{
-+    QQuickWindow window;
-+
-+    window.resize(200, 200);
-+    window.setPosition(100, 100);
-+    window.setTitle(QTest::currentTestFunction());
-+    window.show();
-+    QVERIFY(QTest::qWaitForWindowActive(&window));
-+
-+    HoverTimestampConsumer *hoverConsumer = new HoverTimestampConsumer(window.contentItem());
-+    hoverConsumer->setWidth(100);
-+    hoverConsumer->setHeight(100);
-+    hoverConsumer->setX(50);
-+    hoverConsumer->setY(50);
-+
-+    // First position, outside
-+    {
-+        QMouseEvent mouseEvent(QEvent::MouseMove, QPointF(40, 40), QPointF(40, 40), QPointF(140, 140),
-+                Qt::NoButton, Qt::NoButton, Qt::NoModifier, Qt::MouseEventNotSynthesized);
-+        mouseEvent.setTimestamp(10);
-+        QVERIFY(QCoreApplication::sendEvent(&window, &mouseEvent));
-+    }
-+
-+    // Enter
-+    {
-+        QMouseEvent mouseEvent(QEvent::MouseMove, QPointF(50, 50), QPointF(50, 50), QPointF(150, 150),
-+                Qt::NoButton, Qt::NoButton, Qt::NoModifier, Qt::MouseEventNotSynthesized);
-+        mouseEvent.setTimestamp(20);
-+        QVERIFY(QCoreApplication::sendEvent(&window, &mouseEvent));
-+    }
-+    QCOMPARE(hoverConsumer->hoverTimestamps.size(), 1);
-+    QCOMPARE(hoverConsumer->hoverTimestamps.last(), 20UL);
-+
-+    // Move
-+    {
-+        QMouseEvent mouseEvent(QEvent::MouseMove, QPointF(60, 60), QPointF(60, 60), QPointF(160, 160),
-+                Qt::NoButton, Qt::NoButton, Qt::NoModifier, Qt::MouseEventNotSynthesized);
-+        mouseEvent.setTimestamp(30);
-+        QVERIFY(QCoreApplication::sendEvent(&window, &mouseEvent));
-+    }
-+    QCOMPARE(hoverConsumer->hoverTimestamps.size(), 2);
-+    QCOMPARE(hoverConsumer->hoverTimestamps.last(), 30UL);
-+
-+    // Move
-+    {
-+        QMouseEvent mouseEvent(QEvent::MouseMove, QPointF(100, 100), QPointF(100, 100), QPointF(200, 200),
-+                Qt::NoButton, Qt::NoButton, Qt::NoModifier, Qt::MouseEventNotSynthesized);
-+        mouseEvent.setTimestamp(40);
-+        QVERIFY(QCoreApplication::sendEvent(&window, &mouseEvent));
-+    }
-+    QCOMPARE(hoverConsumer->hoverTimestamps.size(), 3);
-+    QCOMPARE(hoverConsumer->hoverTimestamps.last(), 40UL);
-+
-+    // Leave
-+    {
-+        QMouseEvent mouseEvent(QEvent::MouseMove, QPointF(160, 160), QPointF(160, 160), QPointF(260, 260),
-+                Qt::NoButton, Qt::NoButton, Qt::NoModifier, Qt::MouseEventNotSynthesized);
-+        mouseEvent.setTimestamp(5);
-+        QVERIFY(QCoreApplication::sendEvent(&window, &mouseEvent));
-+    }
-+    QCOMPARE(hoverConsumer->hoverTimestamps.size(), 4);
-+    QCOMPARE(hoverConsumer->hoverTimestamps.last(), 5UL);
-+}
-+
- QTEST_MAIN(tst_qquickwindow)
- 
- #include "tst_qquickwindow.moc"
--- 
-2.8.1
-
diff --git a/debian/patches/Revert-Remove-this-piece-of-code.patch b/debian/patches/Revert-Remove-this-piece-of-code.patch
deleted file mode 100644
index 416e785..0000000
--- a/debian/patches/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 <simon.hausmann at theqtcompany.com>
-Date: Tue, 17 May 2016 15:18:12 +0200
-Subject: [PATCH] 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 <lars.knoll at theqtcompany.com>
----
- 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<QObject> 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;
--- 
-2.9.3
-
diff --git a/debian/patches/V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch b/debian/patches/V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch
deleted file mode 100644
index 4a1bfc9..0000000
--- a/debian/patches/V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch
+++ /dev/null
@@ -1,374 +0,0 @@
-From aa7c3b35ef9b737c574f436ea35452019a2ff29c Mon Sep 17 00:00:00 2001
-From: Erik Verbruggen <erik.verbruggen at digia.com>
-Date: Thu, 16 Jun 2016 13:39:57 +0200
-Subject: [PATCH] V4: Always set the tag when boxing a pointer in QV4::Value.
-
-All setters now store tags, so no-one can play loosy-goosy with the
-boxed values (and accidentally forget to "tag" a value, resulting in
-random garbage).
-
-Change-Id: Ia0b78aa038d3ff46d5292b14bd593de310da16a0
-Reviewed-by: Simon Hausmann <simon.hausmann at qt.io>
----
- .../qmldbg_debugger/qqmlnativedebugservice.cpp     |  2 +-
- src/qml/jsruntime/qv4arraydata.cpp                 | 10 +--
- src/qml/jsruntime/qv4objectiterator.cpp            |  5 --
- src/qml/jsruntime/qv4persistent.cpp                |  9 +--
- src/qml/jsruntime/qv4scopedvalue_p.h               | 16 +---
- src/qml/jsruntime/qv4value_p.h                     | 94 ++++++++++++----------
- 6 files changed, 63 insertions(+), 73 deletions(-)
-
-diff --git a/src/plugins/qmltooling/qmldbg_debugger/qqmlnativedebugservice.cpp b/src/plugins/qmltooling/qmldbg_debugger/qqmlnativedebugservice.cpp
-index f5cc78e..24d2a82 100644
---- a/src/plugins/qmltooling/qmldbg_debugger/qqmlnativedebugservice.cpp
-+++ b/src/plugins/qmltooling/qmldbg_debugger/qqmlnativedebugservice.cpp
-@@ -549,7 +549,7 @@ void NativeDebugger::handleExpressions(QJsonObject *response, const QJsonObject
-             dict[QStringLiteral("name")] = name;
-             dict[QStringLiteral("valueencoded")] = QStringLiteral("undefined");
-             output.append(dict);
--        } else if (result.ptr && result.ptr->_val) {
-+        } else if (result.ptr && result.ptr->rawValue()) {
-             collector.collect(&output, QString(), name, *result);
-         } else {
-             QJsonObject dict;
-diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
-index bd736d7..ec0e611 100644
---- a/src/qml/jsruntime/qv4arraydata.cpp
-+++ b/src/qml/jsruntime/qv4arraydata.cpp
-@@ -93,8 +93,8 @@ Q_STATIC_ASSERT(sizeof(Heap::ArrayData) == sizeof(Heap::SparseArrayData));
- 
- static Q_ALWAYS_INLINE void storeValue(ReturnedValue *target, uint value)
- {
--    Value v = Value::fromReturnedValue(*target);
--    v.setValue(value);
-+    Value v;
-+    v.setTagValue(Value::fromReturnedValue(*target).tag(), value);
-     *target = v.asReturnedValue();
- }
- 
-@@ -189,7 +189,7 @@ void ArrayData::realloc(Object *o, Type newType, uint requested, bool enforceAtt
-                 n->value = i;
-             } else {
-                 storeValue(lastFree, i);
--                sparse->arrayData[i].setTag(Value::Empty_Type);
-+                sparse->arrayData[i].setEmpty();
-                 lastFree = &sparse->arrayData[i].rawValueRef();
-             }
-         }
-@@ -198,7 +198,7 @@ void ArrayData::realloc(Object *o, Type newType, uint requested, bool enforceAtt
-     if (toCopy < sparse->alloc) {
-         for (uint i = toCopy; i < sparse->alloc; ++i) {
-             storeValue(lastFree, i);
--            sparse->arrayData[i].setTag(Value::Empty_Type);
-+            sparse->arrayData[i].setEmpty();
-             lastFree = &sparse->arrayData[i].rawValueRef();
-         }
-         storeValue(lastFree, UINT_MAX);
-@@ -396,7 +396,7 @@ uint SparseArrayData::allocate(Object *o, bool doubleSlot)
-                 // found two slots in a row
-                 uint idx = Value::fromReturnedValue(*last).uint_32();
-                 Value lastV = Value::fromReturnedValue(*last);
--                lastV.setValue(dd->arrayData[lastV.value() + 1].value());
-+                lastV.setTagValue(lastV.tag(), dd->arrayData[lastV.value() + 1].value());
-                 *last = lastV.rawValue();
-                 dd->attrs[idx] = Attr_Accessor;
-                 return idx;
-diff --git a/src/qml/jsruntime/qv4objectiterator.cpp b/src/qml/jsruntime/qv4objectiterator.cpp
-index 1413f43..d4587df 100644
---- a/src/qml/jsruntime/qv4objectiterator.cpp
-+++ b/src/qml/jsruntime/qv4objectiterator.cpp
-@@ -68,11 +68,6 @@ void ObjectIterator::init(const Object *o)
-     object->setM(o ? o->m() : 0);
-     current->setM(o ? o->m() : 0);
- 
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--    object->setTag(QV4::Value::Managed_Type);
--    current->setTag(QV4::Value::Managed_Type);
--#endif
--
-     if (object->as<ArgumentsObject>()) {
-         Scope scope(engine);
-         Scoped<ArgumentsObject> (scope, object->asReturnedValue())->fullyCreate();
-diff --git a/src/qml/jsruntime/qv4persistent.cpp b/src/qml/jsruntime/qv4persistent.cpp
-index 1b0d638..fd3bd1f 100644
---- a/src/qml/jsruntime/qv4persistent.cpp
-+++ b/src/qml/jsruntime/qv4persistent.cpp
-@@ -79,11 +79,9 @@ Page *allocatePage(PersistentValueStorage *storage)
-     if (p->header.next)
-         p->header.next->header.prev = &p->header.next;
-     for (int i = 0; i < kEntriesPerPage - 1; ++i) {
--        p->values[i].setTag(QV4::Value::Empty_Type);
--        p->values[i].setInt_32(i + 1);
-+        p->values[i].setEmpty(i + 1);
-     }
--    p->values[kEntriesPerPage - 1].setTag(QV4::Value::Empty_Type);
--    p->values[kEntriesPerPage - 1].setInt_32(-1);
-+    p->values[kEntriesPerPage - 1].setEmpty(-1);
- 
-     storage->firstPage = p;
- 
-@@ -205,8 +203,7 @@ void PersistentValueStorage::free(Value *v)
- 
-     Page *p = getPage(v);
- 
--    v->setTag(QV4::Value::Empty_Type);
--    v->setInt_32(p->header.freeList);
-+    v->setEmpty(p->header.freeList);
-     p->header.freeList = v - p->values;
-     if (!--p->header.refCount)
-         freePage(p);
-diff --git a/src/qml/jsruntime/qv4scopedvalue_p.h b/src/qml/jsruntime/qv4scopedvalue_p.h
-index ca7efb1..0b063ee 100644
---- a/src/qml/jsruntime/qv4scopedvalue_p.h
-+++ b/src/qml/jsruntime/qv4scopedvalue_p.h
-@@ -120,9 +120,6 @@ struct ScopedValue
-     {
-         ptr = scope.engine->jsStackTop++;
-         ptr->setM(o);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        ptr->setTag(QV4::Value::Managed_Type);
--#endif
-     }
- 
-     ScopedValue(const Scope &scope, Managed *m)
-@@ -144,9 +141,6 @@ struct ScopedValue
- 
-     ScopedValue &operator=(Heap::Base *o) {
-         ptr->setM(o);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        ptr->setTag(QV4::Value::Managed_Type);
--#endif
-         return *this;
-     }
- 
-@@ -186,18 +180,12 @@ struct Scoped
- 
-     inline void setPointer(const Managed *p) {
-         ptr->setM(p ? p->m() : 0);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        ptr->setTag(QV4::Value::Managed_Type);
--#endif
-     }
- 
-     Scoped(const Scope &scope)
-     {
-         ptr = scope.engine->jsStackTop++;
-         ptr->setM(0);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        ptr->setTag(QV4::Value::Managed_Type);
--#endif
-     }
- 
-     Scoped(const Scope &scope, const Value &v)
-@@ -339,14 +327,14 @@ struct ScopedCallData {
- 
- inline Value &Value::operator =(const ScopedValue &v)
- {
--    _val = v.ptr->val();
-+    _val = v.ptr->rawValue();
-     return *this;
- }
- 
- template<typename T>
- inline Value &Value::operator=(const Scoped<T> &t)
- {
--    _val = t.ptr->val();
-+    _val = t.ptr->rawValue();
-     return *this;
- }
- 
-diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h
-index 6bd3935..7c2bb31 100644
---- a/src/qml/jsruntime/qv4value_p.h
-+++ b/src/qml/jsruntime/qv4value_p.h
-@@ -66,6 +66,7 @@ typedef uint Bool;
- 
- struct Q_QML_PRIVATE_EXPORT Value
- {
-+private:
-     /*
-         We use two different ways of encoding JS values. One for 32bit and one for 64bit systems.
- 
-@@ -90,10 +91,10 @@ struct Q_QML_PRIVATE_EXPORT Value
- 
-     quint64 _val;
- 
--    Q_ALWAYS_INLINE quint64 val() const { return _val; }
--    Q_ALWAYS_INLINE void setVal(quint64 v) { _val = v; }
--    Q_ALWAYS_INLINE void setValue(quint32 v) { memcpy(&_val, &v, 4); }
--    Q_ALWAYS_INLINE void setTag(quint32 t) { memcpy(4 + (quint8 *)&_val, &t, 4); }
-+public:
-+    Q_ALWAYS_INLINE quint64 &rawValueRef() { return _val; }
-+    Q_ALWAYS_INLINE quint64 rawValue() const { return _val; }
-+    Q_ALWAYS_INLINE void setRawValue(quint64 raw) { _val = raw; }
- 
- #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
-     static inline int valueOffset() { return 0; }
-@@ -113,17 +114,53 @@ struct Q_QML_PRIVATE_EXPORT Value
-     Q_ALWAYS_INLINE Heap::Base *m() const { Q_UNREACHABLE(); return Q_NULLPTR; }
-     Q_ALWAYS_INLINE void setM(Heap::Base *b) { Q_UNUSED(b); Q_UNREACHABLE(); }
- #elif defined(QV4_USE_64_BIT_VALUE_ENCODING)
--    Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; memcpy(&b, &_val, 8); return b; }
--    Q_ALWAYS_INLINE void setM(Heap::Base *b) { memcpy(&_val, &b, 8); }
-+    Q_ALWAYS_INLINE Heap::Base *m() const
-+    {
-+        Heap::Base *b;
-+        memcpy(&b, &_val, 8);
-+        return b;
-+    }
-+    Q_ALWAYS_INLINE void setM(Heap::Base *b)
-+    {
-+        memcpy(&_val, &b, 8);
-+    }
- #else // !QV4_USE_64_BIT_VALUE_ENCODING
--    Q_ALWAYS_INLINE Heap::Base *m() const { Q_STATIC_ASSERT(sizeof(Heap::Base*) == sizeof(quint32)); Heap::Base *b; quint32 v = value(); memcpy(&b, &v, 4); return b; }
--    Q_ALWAYS_INLINE void setM(Heap::Base *b) { quint32 v; memcpy(&v, &b, 4); setValue(v); }
-+    Q_ALWAYS_INLINE Heap::Base *m() const
-+    {
-+        Q_STATIC_ASSERT(sizeof(Heap::Base*) == sizeof(quint32));
-+        Heap::Base *b;
-+        quint32 v = value();
-+        memcpy(&b, &v, 4);
-+        return b;
-+    }
-+    Q_ALWAYS_INLINE void setM(Heap::Base *b)
-+    {
-+        quint32 v;
-+        memcpy(&v, &b, 4);
-+        setTagValue(Managed_Type, v);
-+    }
- #endif
- 
--    Q_ALWAYS_INLINE int int_32() const { int i; quint32 v = value(); memcpy(&i, &v, 4); return i; }
--    Q_ALWAYS_INLINE void setInt_32(int i) { quint32 u; memcpy(&u, &i, 4); setValue(u); }
-+    Q_ALWAYS_INLINE int int_32() const
-+    {
-+        return int(value());
-+    }
-+    Q_ALWAYS_INLINE void setInt_32(int i)
-+    {
-+        setTagValue(Integer_Type_Internal, quint32(i));
-+    }
-     Q_ALWAYS_INLINE uint uint_32() const { return value(); }
- 
-+    Q_ALWAYS_INLINE void setEmpty()
-+    {
-+        setTagValue(Empty_Type, value());
-+    }
-+
-+    Q_ALWAYS_INLINE void setEmpty(int i)
-+    {
-+        setTagValue(Empty_Type, quint32(i));
-+    }
-+
- #ifndef QV4_USE_64_BIT_VALUE_ENCODING
-     enum Masks {
-         SilentNaNBit           =                  0x00040000,
-@@ -260,7 +297,6 @@ struct Q_QML_PRIVATE_EXPORT Value
-             int i = (int)d;
-             if (i == d) {
-                 setInt_32(i);
--                setTag(Integer_Type_Internal);
-                 return true;
-             }
-         }
-@@ -292,22 +328,10 @@ struct Q_QML_PRIVATE_EXPORT Value
-         return m();
-     }
- 
--    Q_ALWAYS_INLINE quint64 &rawValueRef() {
--        return _val;
--    }
--    Q_ALWAYS_INLINE quint64 rawValue() const {
--        return _val;
--    }
--    Q_ALWAYS_INLINE void setRawValue(quint64 raw) { _val = raw; }
--
-     static inline Value fromHeapObject(Heap::Base *m)
-     {
-         Value v;
--        v.setRawValue(0);
-         v.setM(m);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        v.setTag(Managed_Type);
--#endif
-         return v;
-     }
- 
-@@ -328,7 +352,7 @@ struct Q_QML_PRIVATE_EXPORT Value
-     inline bool tryIntegerConversion() {
-         bool b = integerCompatible();
-         if (b)
--            setTag(Integer_Type_Internal);
-+            setTagValue(Integer_Type_Internal, value());
-         return b;
-     }
- 
-@@ -378,7 +402,7 @@ struct Q_QML_PRIVATE_EXPORT Value
-     Value &operator=(ReturnedValue v) { _val = v; return *this; }
-     Value &operator=(Managed *m) {
-         if (!m) {
--            setTagValue(Undefined_Type, 0);
-+            setM(0);
-         } else {
-             _val = reinterpret_cast<Value *>(m)->_val;
-         }
-@@ -386,9 +410,6 @@ struct Q_QML_PRIVATE_EXPORT Value
-     }
-     Value &operator=(Heap::Base *o) {
-         setM(o);
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--        setTag(Managed_Type);
--#endif
-         return *this;
-     }
- 
-@@ -479,13 +500,7 @@ struct Q_QML_PRIVATE_EXPORT Primitive : public Value
- inline Primitive Primitive::undefinedValue()
- {
-     Primitive v;
--#ifdef QV4_USE_64_BIT_VALUE_ENCODING
--    v.setRawValue(quint64(Undefined_Type) << Tag_Shift);
--#else
--    v.setRawValue(0);
--    v.setTag(Undefined_Type);
--    v.setValue(0);
--#endif
-+    v.setTagValue(Undefined_Type, 0);
-     return v;
- }
- 
-@@ -499,11 +514,7 @@ inline Primitive Primitive::emptyValue()
- inline Primitive Primitive::nullValue()
- {
-     Primitive v;
--#ifndef QV4_USE_64_BIT_VALUE_ENCODING
--    v.setRawValue(quint64(Null_Type_Internal) << Tag_Shift);
--#else
-     v.setTagValue(Null_Type_Internal, 0);
--#endif
-     return v;
- }
- 
-@@ -524,7 +535,7 @@ inline Primitive Primitive::fromDouble(double d)
- inline Primitive Primitive::fromInt32(int i)
- {
-     Primitive v;
--    v.setTagValue(Integer_Type_Internal, 0); // For mingw482, because it complains, and for VS9, because of internal compiler errors.
-+    v.setTagValue(Integer_Type_Internal, 0);
-     v.setInt_32(i);
-     return v;
- }
-@@ -533,8 +544,7 @@ inline Primitive Primitive::fromUInt32(uint i)
- {
-     Primitive v;
-     if (i < INT_MAX) {
--        v.setTagValue(Integer_Type_Internal, 0); // For mingw482, because it complains, and for VS9, because of internal compiler errors.
--        v.setInt_32((int)i);
-+        v.setTagValue(Integer_Type_Internal, i);
-     } else {
-         v.setDouble(i);
-     }
--- 
-2.8.1
-
diff --git a/debian/patches/fix_test_remove_qlibraryinfo.patch b/debian/patches/fix_test_remove_qlibraryinfo.patch
index eab28f6..7502bea 100644
--- a/debian/patches/fix_test_remove_qlibraryinfo.patch
+++ b/debian/patches/fix_test_remove_qlibraryinfo.patch
@@ -93,13 +93,13 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
 --- a/.qmake.conf
 +++ b/.qmake.conf
 @@ -2,4 +2,7 @@ load(qt_build_config)
- CONFIG += qt_example_installs
+ load(qt_build_config)
  CONFIG += warning_clean
  
 +QMAKE_CXXFLAGS += -DTESTBINDIR=\\"$$PWD/bin\\"
 +QMAKE_CXXFLAGS += -DTESTEXAMPLEDIR=\\"$$PWD/examples\\"
 +
- MODULE_VERSION = 5.6.1
+ MODULE_VERSION = 5.6.2
 --- a/tests/auto/qml/debugger/qqmlenginedebuginspectorintegrationtest/tst_qqmlenginedebuginspectorintegration.cpp
 +++ b/tests/auto/qml/debugger/qqmlenginedebuginspectorintegrationtest/tst_qqmlenginedebuginspectorintegration.cpp
 @@ -102,8 +102,7 @@ void tst_QQmlEngineDebugInspectorIntegra
diff --git a/debian/patches/no_lifetime_dse.diff b/debian/patches/no_lifetime_dse.diff
deleted file mode 100644
index f980eee..0000000
--- a/debian/patches/no_lifetime_dse.diff
+++ /dev/null
@@ -1,15 +0,0 @@
-Description: workaround crashes in QtQml code related to dead-store elimination
-Origin: upstream, https://code.qt.io/cgit/qt/qtdeclarative.git/commit/?id=fcc2c95421710f98
-Last-Update: 2016-08-29
-
---- a/src/qml/qml.pro
-+++ b/src/qml/qml.pro
-@@ -18,7 +18,7 @@
- 
- greaterThan(QT_GCC_MAJOR_VERSION, 5) {
-     # Our code is bad. Temporary workaround.
--    QMAKE_CXXFLAGS += -fno-delete-null-pointer-checks
-+    QMAKE_CXXFLAGS += -fno-delete-null-pointer-checks -fno-lifetime-dse
- }
- 
- QMAKE_DOCS = $$PWD/doc/qtqml.qdocconf
diff --git a/debian/patches/qml_only_release_types_if_they_arent_referenced_anymore.patch b/debian/patches/qml_only_release_types_if_they_arent_referenced_anymore.patch
deleted file mode 100644
index fa5bd96..0000000
--- a/debian/patches/qml_only_release_types_if_they_arent_referenced_anymore.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 9b1231ca3d21ade574a8a7cf3f0805a8b520bcd5 Mon Sep 17 00:00:00 2001
-From: Ulf Hermann <ulf.hermann at qt.io>
-Date: Wed, 8 Jun 2016 17:32:32 +0200
-Subject: [PATCH] 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 <mitch.curtis at qt.io>
-Reviewed-by: Simon Hausmann <simon.hausmann at qt.io>
-(cherry picked from commit 2ac19881f92c94f4e9427bd9ff513210675f259e)
----
- 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<TypeCache::Iterator> 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) {
--- 
-2.1.4
-
diff --git a/debian/patches/series b/debian/patches/series
index df2eb4a..a8df99a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,16 +1,9 @@
 # Backported patches
 QQuickItemView-forceLayout-Also-call-layout-when-d-f.patch
-qml_only_release_types_if_they_arent_referenced_anymore.patch
-no_lifetime_dse.diff
-V4-Always-set-the-tag-when-boxing-a-pointer-in-QV4-V.patch
-Fix-QQmlEngine-crash-on-big-endian-64-bit-architectu.patch
 #Add-a-facility-to-version-type-information-for-debug.patch
 #V4-Free-up-2-address-bits-in-64bit-mode.patch
 fix-V4-on-big-endian.patch
-Flickable-fix-minXExtent-minYExtent-when-content-is-.patch
-QQuickWindow-Fill-out-timestamps-in-QHoverEvents-sen.patch
 Fix-visibility-of-properties-in-value-types.patch
-Revert-Remove-this-piece-of-code.patch
 #V4-Fix-usage-of-QV4-Value-tags-types.patch
 
 # Debian patches

-- 
qtdeclarative packaging



More information about the pkg-kde-commits mailing list