Workaround for QDbus caching introspects. 97/4497/1
authorRisto Avila <risto.avila@theqtcompany.com>
Thu, 17 Dec 2015 03:00:05 +0000 (05:00 +0200)
committerRisto Avila <risto.avila@theqtcompany.com>
Thu, 17 Dec 2015 03:00:05 +0000 (05:00 +0200)
This just quickly removes the cached object to force introspect.
Final solution will upstreamed in the future.

Change-Id: I156a1a97a0c4d1f17eed1d164e18ee8f73dec074
Signed-off-by: Risto Avila <risto.avila@theqtcompany.com>
recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch [new file with mode: 0644]
recipes-qt/qt5/qtbase_%.bbappend

diff --git a/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch b/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch
new file mode 100644 (file)
index 0000000..10a1ddd
--- /dev/null
@@ -0,0 +1,30 @@
+From a4943bb5c7fdf5eb297223d2c3bb02d2271bea48 Mon Sep 17 00:00:00 2001
+From: Risto Avila <risto.avila@theqtcompany.com>
+Date: Thu, 17 Dec 2015 04:22:53 +0200
+Subject: [PATCH] Force qdbus to make introspect for every findMetaObject
+
+---
+ src/dbus/qdbusintegrator.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
+index cce8b9c..ae2a9dc 100644
+--- a/src/dbus/qdbusintegrator.cpp
++++ b/src/dbus/qdbusintegrator.cpp
+@@ -2512,8 +2512,11 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa
+     if (!interface.isEmpty()) {
+         QDBusReadLocker locker(FindMetaObject1Action, this);
+         QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0);
+-        if (mo)
+-            return mo;
++        if (mo) {
++            // service is not unique. Remove cached object to force introspect
++            cachedMetaObjects.remove(interface);
++            delete mo;
++        }
+     }
+     // introspect the target object
+-- 
+1.9.1
+
index 7b6ab87..ebca5c8 100644 (file)
@@ -1,5 +1,9 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
+SRC_URI_append = "\
+    file://0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch \
+    "
+
 DEPENDS_append_koelsch = " libegl"
 DEPENDS_append_porter = " libegl"