I have made the following changes intended for :
  CE:MW:Shared / qtcontacts-tracker

Please review and accept or decline.
BOSS has already run some checks on this request.
See the "Messages from BOSS" section below.

https://build.pub.meego.com//request/show/6757

Thank You,
John Brooks

[This message was auto-generated]

---

Request # 6757:

Messages from BOSS:

State: review at 2012-09-20T03:08:49 by bossbot

Reviews:
       accepted by bossbot : Prechecks succeeded.
       new for CE-maintainers : Please replace this text with a review and 
approve/reject the review (not the SR). BOSS will take care of the rest

Changes:
  submit: home:special:branches:CE:MW:Shared / qtcontacts-tracker -> 
CE:MW:Shared / qtcontacts-tracker
  
changes files:
--------------
--- qtcontacts-tracker.changes
+++ qtcontacts-tracker.changes
@@ -0,0 +1,3 @@
+* Wed Sep 19 2012 John Brooks <[email protected]> - 4.19.2
+- Added 0001-Fix-QObject-thread-ownership-issues.patch
+

new:
----
  0001-Fix-QObject-thread-ownership-issues.patch

spec files:
-----------
--- qtcontacts-tracker.spec
+++ qtcontacts-tracker.spec
@@ -20,6 +20,7 @@
 Patch1:     
qtcontacts-tracker-4.19.2-fix-private-dtor-in-thread-local-storage-class.patch
 Patch2:     
qtcontacts-tracker-4.19.2-fix-broken-docs-check-we-don-t-want-them.patch
 Patch3:     
qtcontacts-tracker-4.19.2-fix-field-extended-address-reference.patch
+Patch4:     0001-Fix-QObject-thread-ownership-issues.patch
 Requires:   libqtsparql-tracker >= 0.0.18
 Requires:   libqtsparql-tracker-direct
 BuildRequires:  pkgconfig(QtContacts) >= 1.2
@@ -89,6 +90,8 @@
 %patch2 -p1
 # qtcontacts-tracker-4.19.2-fix-field-extended-address-reference.patch
 %patch3 -p1
+# 0001-Fix-QObject-thread-ownership-issues.patch
+%patch4 -p1
 # >> setup
 # << setup
 

other changes:
--------------

++++++ 0001-Fix-QObject-thread-ownership-issues.patch (new)
--- 0001-Fix-QObject-thread-ownership-issues.patch
+++ 0001-Fix-QObject-thread-ownership-issues.patch
@@ -0,0 +1,58 @@
+From 8c89b1dcfae7f3842d3a0521b342fb0c07918f58 Mon Sep 17 00:00:00 2001
+From: John Brooks <[email protected]>
+Date: Wed, 19 Sep 2012 14:52:59 -0600
+Subject: [PATCH 1/1] Fix QObject thread ownership issues
+
+QThread objects cannot be used as parents for objects in the thread
+they represent. QctTrackerChangeListener is managed by
+QctThreadLocalData anyway, which will delete it when the thread exits.
+
+QctSettingsSingleton is pushed into the main thread, so the
+QFileSystemWatcher it owns must be pushed as well.
+---
+ src/engine/contactmanagerengine.cpp |    2 +-
+ src/lib/settings.cpp                |    7 +++++--
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/engine/contactmanagerengine.cpp 
b/src/engine/contactmanagerengine.cpp
+index c1c3362..9dfa1d9 100644
+--- a/src/engine/contactmanagerengine.cpp
++++ b/src/engine/contactmanagerengine.cpp
+@@ -1558,7 +1558,7 @@ QctContactManagerEngine::connectNotify(const char 
*signal)
+ 
+         if (0 == d->m_changeListener) {
+             // Create new listener when needed.
+-            d->m_changeListener = new 
QctTrackerChangeListener(contactClassIris.toList(), QThread::currentThread());
++            d->m_changeListener = new 
QctTrackerChangeListener(contactClassIris.toList());
+             
d->m_changeListener->setCoalescingDelay(d->m_parameters.m_coalescingDelay);
+             d->m_changeListener->setChangeFilterMode(changeFilterMode);
+             d->m_changeListener->setDebugFlags(debugFlags);
+diff --git a/src/lib/settings.cpp b/src/lib/settings.cpp
+index 60bd5c6..5b1a40a 100644
+--- a/src/lib/settings.cpp
++++ b/src/lib/settings.cpp
+@@ -115,16 +115,19 @@ QctSettingsSingleton::QctSettingsSingleton()
+ 
+     // watch settings file to send notifications about changes
+     const QStringList paths = QStringList() << 
settingsFileInfo.absoluteFilePath();
+-    QFileSystemWatcher *settingsStoreWatcher = new QFileSystemWatcher(paths, 
this);
+-    connect(settingsStoreWatcher, SIGNAL(fileChanged(QString)), 
SLOT(onStoredSettingsChanged()));
++    QFileSystemWatcher *settingsStoreWatcher = new QFileSystemWatcher(paths);
+ 
+     if (qApp) {
++        settingsStoreWatcher->moveToThread(qApp->thread());
+         // Ensure the QFileSystemWatcher is destroyed before the event loop 
quits.
+         // Otherwise a dead-lock will occur on application shutdown. 
QTBUG-15255.
+         // Now the file watcher will get deleted when the singleton gets 
destroyed,
+         // or right before the application object tears down. Whatever occurs 
first.
+         connect(qApp, SIGNAL(aboutToQuit()), settingsStoreWatcher, 
SLOT(deleteLater()));
+     }
++
++    settingsStoreWatcher->setParent(this);
++    connect(settingsStoreWatcher, SIGNAL(fileChanged(QString)), 
SLOT(onStoredSettingsChanged()));
+ }
+ 
+ void
+-- 
+1.7.9.5
+

++++++ qtcontacts-tracker.yaml
--- qtcontacts-tracker.yaml
+++ qtcontacts-tracker.yaml
@@ -12,6 +12,7 @@
     - 
qtcontacts-tracker-4.19.2-fix-private-dtor-in-thread-local-storage-class.patch
     - qtcontacts-tracker-4.19.2-fix-broken-docs-check-we-don-t-want-them.patch
     - qtcontacts-tracker-4.19.2-fix-field-extended-address-reference.patch
+    - 0001-Fix-QObject-thread-ownership-issues.patch
 Description: QtContact tracker storage plugin.
 
 Requires:



Reply via email to