summaryrefslogtreecommitdiff
path: root/src/plugins/updateinfo
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/updateinfo')
-rw-r--r--src/plugins/updateinfo/updateinfoplugin.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp
index eb09d92c2a..2882cf8bb0 100644
--- a/src/plugins/updateinfo/updateinfoplugin.cpp
+++ b/src/plugins/updateinfo/updateinfoplugin.cpp
@@ -91,6 +91,9 @@ UpdateInfoPlugin::UpdateInfoPlugin()
UpdateInfoPlugin::~UpdateInfoPlugin()
{
+ d->lastCheckUpdateInfoTask.cancel();
+ d->lastCheckUpdateInfoTask.waitForFinished();
+
delete d;
}
@@ -230,7 +233,14 @@ QDomDocument UpdateInfoPlugin::update()
// start
QProcess updater;
updater.start(d->updaterProgram, QStringList() << d->updaterCheckOnlyArgument);
- updater.waitForFinished();
+ while (updater.state() != QProcess::NotRunning) {
+ if (!updater.waitForFinished(1000)
+ && d->lastCheckUpdateInfoTask.isCanceled()) {
+ updater.kill();
+ updater.waitForFinished(-1);
+ return QDomDocument();
+ }
+ }
// process return value
QDomDocument updates;