diff options
Diffstat (limited to 'src/plugins/updateinfo')
-rw-r--r-- | src/plugins/updateinfo/updateinfoplugin.cpp | 12 |
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; |