[kdelibs] Nepomuk::Resource[Data|Watcher] thread-safety (kde#295474)

Rex Dieter rdieter at fedoraproject.org
Tue Mar 13 11:52:22 UTC 2012


commit 756eaa3170df8bf59fa741d4c5235a80920446cf
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Tue Mar 13 06:54:05 2012 -0500

    Nepomuk::Resource[Data|Watcher] thread-safety (kde#295474)

 kdelibs-4.8.1-nepomuk_threading.patch |   52 +++++++++++++++++++++++++++++++++
 kdelibs.spec                          |   11 ++++++-
 2 files changed, 62 insertions(+), 1 deletions(-)
---
diff --git a/kdelibs-4.8.1-nepomuk_threading.patch b/kdelibs-4.8.1-nepomuk_threading.patch
new file mode 100644
index 0000000..145472d
--- /dev/null
+++ b/kdelibs-4.8.1-nepomuk_threading.patch
@@ -0,0 +1,52 @@
+diff --git a/nepomuk/core/resourcedata.cpp b/nepomuk/core/resourcedata.cpp
+index abe55ea..e65e66e 100644
+--- a/nepomuk/core/resourcedata.cpp
++++ b/nepomuk/core/resourcedata.cpp
+@@ -175,7 +175,7 @@ void Nepomuk::ResourceData::resetAll( bool isDelete )
+     if( !m_uri.isEmpty() ) {
+         m_rm->m_initializedData.remove( m_uri );
+         if( m_rm->m_watcher && m_addedToWatcher ) {
+-            m_rm->m_watcher->removeResource(Resource::fromResourceUri(m_uri));
++            QMetaObject::invokeMethod(m_rm->m_watcher, "removeResource", Qt::AutoConnection, Q_ARG(Nepomuk::Resource, Resource::fromResourceUri(m_uri)));
+             m_addedToWatcher = false;
+         }
+     }
+@@ -394,15 +394,16 @@ bool Nepomuk::ResourceData::load()
+ 
+         if(!m_rm->m_watcher) {
+             m_rm->m_watcher = new ResourceWatcher(m_rm->m_manager);
++            m_rm->m_watcher->moveToThread(m_rm->m_manager->thread());
+             QObject::connect( m_rm->m_watcher, SIGNAL(propertyAdded(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)),
+                               m_rm->m_manager, SLOT(slotPropertyAdded(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)) );
+             QObject::connect( m_rm->m_watcher, SIGNAL(propertyRemoved(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)),
+                               m_rm->m_manager, SLOT(slotPropertyRemoved(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)) );
+             m_rm->m_watcher->addResource( Nepomuk::Resource::fromResourceUri(m_uri) );
+-            m_rm->m_watcher->start();
++            QMetaObject::invokeMethod(m_rm->m_watcher, "start", Qt::AutoConnection);
+         }
+         else {
+-            m_rm->m_watcher->addResource( Nepomuk::Resource::fromResourceUri(m_uri) );
++            QMetaObject::invokeMethod(m_rm->m_watcher, "addResource", Qt::AutoConnection, Q_ARG(Nepomuk::Resource, Nepomuk::Resource::fromResourceUri(m_uri)) );
+         }
+         m_addedToWatcher = true;
+ 
+diff --git a/nepomuk/core/resourcewatcher.h b/nepomuk/core/resourcewatcher.h
+index 06b9622..92b12f5 100644
+--- a/nepomuk/core/resourcewatcher.h
++++ b/nepomuk/core/resourcewatcher.h
+@@ -93,6 +93,7 @@ namespace Nepomuk {
+          */
+         virtual ~ResourceWatcher();
+ 
++    public Q_SLOTS:
+         /**
+          * \brief Add a type to be watched.
+          *
+@@ -204,7 +205,6 @@ namespace Nepomuk {
+          */
+         QList<Types::Property> properties() const;
+ 
+-    public Q_SLOTS:
+         /**
+          * \brief Start the signalling of changes.
+          *
diff --git a/kdelibs.spec b/kdelibs.spec
index 5243503..6ce4503 100644
--- a/kdelibs.spec
+++ b/kdelibs.spec
@@ -20,7 +20,7 @@
 
 Summary: KDE Libraries
 Version: 4.8.1
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 Name: kdelibs
 Epoch: 6
@@ -129,9 +129,14 @@ Patch52: kdelibs-4.7.4-SOLID_UPNP.patch
 # add s390/s390x support in kjs
 Patch53: kdelibs-4.7.2-kjs-s390.patch
 
+## upstream 
 # don't set rpath on multiarch dirs,  https://git.reviewboard.kde.org/r/103422
 Patch101: kdelibs-4.8.0-cmake_cxx_implicit_link_directories.patch
 
+# Nepomuk::Resource[Data|Watcher] thread-safety
+# https://bugs.kde.org/show_bug.cgi?id=295474
+Patch102: kdelibs-4.8.1-nepomuk_threading.patch
+
 ## security fix
 # Not Upstreamed? why not ? -- Rex
 Patch200: kdelibs-4.3.1-CVE-2009-2702.patch
@@ -321,6 +326,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
 
 # upstream patches
 %patch101 -p1 -b .cmake_cxx_implicit_link_directories
+%patch102 -p1 -b .nepomuk_threading
 
 # security fixes
 %patch200 -p1 -b .CVE-2009-2702
@@ -574,6 +580,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Tue Mar 13 2012 Rex Dieter <rdieter at fedoraproject.org> 6:4.8.1-2
+- Nepomuk::Resource[Data|Watcher] thread-safety (kde#295474)
+
 * Mon Mar 05 2012 Radek Novacek <rnovacek at redhat.com> 6:4.8.1-1
 - 4.8.1
 - Drop upstreamed patches


More information about the scm-commits mailing list