Hello community,

here is the log from the commit of package libqt5-qtdeclarative for 
openSUSE:Factory checked in at 2016-06-25 01:56:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtdeclarative (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtdeclarative"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/libqt5-qtdeclarative/libqt5-qtdeclarative.changes    
    2016-06-21 15:32:34.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new/libqt5-qtdeclarative.changes
   2016-06-25 01:56:02.000000000 +0200
@@ -2 +2 @@
-Tue Jun 21 09:53:21 UTC 2016 - lbeltr...@kde.org
+Tue Jun 21 09:41:43 UTC 2016 - lbeltr...@kde.org
@@ -5 +5,15 @@
-  - Fix crashes with i686 and QML loader (boo#985768)
+  * Fix crash with i586 and QML loaders (boo#985768)
+
+-------------------------------------------------------------------
+Thu Jun 16 15:39:26 UTC 2016 - hrvoje.sen...@gmail.com
+
+- Added qml_only_release_types_if_they_arent_referenced_anymore.patch
+
+-------------------------------------------------------------------
+Wed Jun  8 14:15:15 UTC 2016 - hrvoje.sen...@gmail.com
+
+- Update to 5.6.1
+  * For more details please see:
+    http://blog.qt.io/blog/2016/06/08/qt-5-6-1-released/
+- Drop upstreamed
+  Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch

Old:
----
  Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
  qtdeclarative-opensource-src-5.6.0.tar.xz

New:
----
  qml_only_release_types_if_they_arent_referenced_anymore.patch
  qtdeclarative-opensource-src-5.6.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtdeclarative.spec ++++++
--- /var/tmp/diff_new_pack.FdiqYI/_old  2016-06-25 01:56:04.000000000 +0200
+++ /var/tmp/diff_new_pack.FdiqYI/_new  2016-06-25 01:56:04.000000000 +0200
@@ -21,22 +21,22 @@
 %define libname libQtQuick5
 
 Name:           libqt5-qtdeclarative
-Version:        5.6.0
+Version:        5.6.1
 Release:        0
 Summary:        Qt 5 Declarative Library
 License:        SUSE-LGPL-2.1-with-digia-exception-1.1 or GPL-3.0
 Group:          Development/Libraries/X11
 Url:            http://qt.digia.com
 %define base_name libqt5
-%define real_version 5.6.0
-%define so_version 5.6.0
+%define real_version 5.6.1
+%define so_version 5.6.1
 %define tar_version qtdeclarative-opensource-src-%{real_version}
 Source:         %{tar_version}.tar.xz
 Source1:        baselibs.conf
 # PATCH-FIX-OPENSUSE overflow.patch -- Statement might be overflowing a buffer
 Patch0:         overflow.patch
-# PATCH-FIX-UPSTREAM 
Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
-Patch1:         
Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
+# PATCH-FIX-UPSTREAM 
qml_only_release_types_if_they_arent_referenced_anymore.patch
+Patch1:         qml_only_release_types_if_they_arent_referenced_anymore.patch
 # PATCH-FIX-OPENSUSE: 
qtdeclarative-opensource-src-5.6.0-qml_no-lifetime-dse.patch - fix crashes with 
i586 and Plasma (boo #985768)
 Patch2:         qtdeclarative-opensource-src-5.6.0-qml_no-lifetime-dse.patch
 BuildRequires:  fdupes

++++++ overflow.patch ++++++
--- /var/tmp/diff_new_pack.FdiqYI/_old  2016-06-25 01:56:04.000000000 +0200
+++ /var/tmp/diff_new_pack.FdiqYI/_new  2016-06-25 01:56:04.000000000 +0200
@@ -1,13 +1,13 @@
 --- a/src/qml/jsruntime/qv4value_p.h.orig      2015-08-23 09:15:03.157582462 
+0200
 +++ b/src/qml/jsruntime/qv4value_p.h   2015-08-23 09:19:46.516039994 +0200
-@@ -103,8 +103,8 @@ struct Q_QML_PRIVATE_EXPORT Value
- #endif
- 
- #ifdef QV4_USE_64_BIT_VALUE_ENCODING
+@@ -123,8 +123,8 @@ 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, 
QT_POINTER_SIZE); return b; }
 +    Q_ALWAYS_INLINE void setM(Heap::Base *b) { memcpy(&_val, &b, 
QT_POINTER_SIZE); }
  #else // !QV4_USE_64_BIT_VALUE_ENCODING
-     Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; quint32 v = 
value(); memcpy(&b, &v, 4); return b; }
+     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); }

++++++ qml_only_release_types_if_they_arent_referenced_anymore.patch ++++++
>From 9b1231ca3d21ade574a8a7cf3f0805a8b520bcd5 Mon Sep 17 00:00:00 2001
From: Ulf Hermann <ulf.herm...@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.cur...@qt.io>
Reviewed-by: Simon Hausmann <simon.hausm...@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
++++++ qtdeclarative-opensource-src-5.6.0.tar.xz -> 
qtdeclarative-opensource-src-5.6.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/libqt5-qtdeclarative/qtdeclarative-opensource-src-5.6.0.tar.xz
 
/work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new/qtdeclarative-opensource-src-5.6.1.tar.xz
 differ: char 25, line 1


Reply via email to