diff --git a/Fix-never-ending-event-loop-when-quitting-app.patch b/Fix-never-ending-event-loop-when-quitting-app.patch new file mode 100644 index 0000000..6ee2bdc --- /dev/null +++ b/Fix-never-ending-event-loop-when-quitting-app.patch @@ -0,0 +1,88 @@ +From: Hartmut Riesenbeck +Date: Fri, 25 Mar 2016 20:35:09 +0000 +Subject: Fix never ending event loop when quitting app and segmentation faults +X-Git-Url: http://quickgit.kde.org/?p=parley.git&a=commitdiff&h=1ecfb75bdddc176cd8837d39935329fd02b9f910 +--- +Fix never ending event loop when quitting app and segmentation faults + +When the app is quited app.exec() doesn't return. The process stays in +sleeping state. Removed app.setQuitOnLastWindowClosed(false) because +the quit() or exec() method of the application were not invoked +somewhere else in the application. + +After this the app ends in the correct way. But after quit is invoked, +there are sporadic segmentation faults and the following message was +shown on stderr: +QCoreApplication::postEvent: Unexpected null receiver +This was fixed by removing zero pointer access in destuctor of +ParleyDocument. + +Added missing this pointer on KEduVocDocument allocation. + +REVIEW: 127441 +--- + + +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -123,8 +123,6 @@ + parser.process(app); + aboutData.processCommandLine(&parser); + +- app.setQuitOnLastWindowClosed(false); +- + if (app.isSessionRestored()) { + int n = 1; + while (KMainWindow::canBeRestored(n)) { + +--- a/src/parleydocument.cpp ++++ b/src/parleydocument.cpp +@@ -88,9 +88,6 @@ + ParleyDocument::~ParleyDocument() + { + close(); +- delete m_backupTimer; +- m_doc->deleteLater(); +- emit documentChanged(0); + } + + +@@ -98,7 +95,7 @@ + { + // If there is no present vocabulary document, create an empty one. + if (!m_doc) { +- m_doc = new KEduVocDocument(); ++ m_doc = new KEduVocDocument(this); + } + + return m_doc; +@@ -118,7 +115,7 @@ + + void ParleyDocument::newDocument(bool wizard) + { +- KEduVocDocument *newDoc = new KEduVocDocument(); ++ KEduVocDocument *newDoc = new KEduVocDocument(this); + + initializeDefaultGrammar(newDoc); + setDefaultDocumentProperties(newDoc); + +--- a/src/parleymainwindow.cpp ++++ b/src/parleymainwindow.cpp +@@ -128,11 +128,11 @@ + + void ParleyMainWindow::documentUpdated(KEduVocDocument *doc) + { +- if (doc != 0) { +- connect(m_document->document(), &KEduVocDocument::docModified +- , this, &ParleyMainWindow::slotUpdateWindowCaption); +- connect(m_document->document(), &QObject::destroyed +- , this, &ParleyMainWindow::slotUpdateWindowCaption); ++ if (doc != nullptr) { ++ connect(doc, &KEduVocDocument::docModified, ++ this, &ParleyMainWindow::slotUpdateWindowCaption); ++ connect(doc, &KEduVocDocument::destroyed, ++ this, &ParleyMainWindow::slotUpdateWindowCaption); + slotUpdateWindowCaption(); + } + } + diff --git a/parley.changes b/parley.changes index 2855654..10dc97b 100644 --- a/parley.changes +++ b/parley.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Mar 30 19:51:39 UTC 2016 - wbauer@tmo.at + +- Added Fix-never-ending-event-loop-when-quitting-app.patch: fixes + the application continuing to run in the background when being + quit + ------------------------------------------------------------------- Sun Mar 13 15:57:34 UTC 2016 - tittiatcoke@gmail.com diff --git a/parley.spec b/parley.spec index 6f3ba12..8b2f598 100644 --- a/parley.spec +++ b/parley.spec @@ -24,6 +24,8 @@ License: GPL-2.0+ Group: Amusements/Teaching/Language Url: http://edu.kde.org Source: %{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM Fix-never-ending-event-loop-when-quitting-app.patch -- fixes the application continuing to run in the background when being quit +Patch: Fix-never-ending-event-loop-when-quitting-app.patch BuildRequires: extra-cmake-modules BuildRequires: kcmutils-devel BuildRequires: kconfig-devel @@ -59,6 +61,7 @@ Parley is a vocabulary trainer for KDE. %prep %setup -q +%patch -p1 %build %cmake_kf5 -d build