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:
