From 77329a260989ce4ff0444c7ffd4c0e7300696f58 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 26 Jan 2014 14:26:24 +0200 Subject: [PATCH] Launch external programs async and don't block. Closes #1252. --- src/qtlibtorrent/qbtsession.cpp | 17 +++-------------- src/qtlibtorrent/qbtsession.h | 3 +-- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/qtlibtorrent/qbtsession.cpp b/src/qtlibtorrent/qbtsession.cpp index e82979d5b..27e6c528c 100755 --- a/src/qtlibtorrent/qbtsession.cpp +++ b/src/qtlibtorrent/qbtsession.cpp @@ -2072,11 +2072,7 @@ void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) { } } -void QBtSession::cleanUpAutoRunProcess(int) { - sender()->deleteLater(); -} - -void QBtSession::autoRunExternalProgram(const QTorrentHandle &h, bool async) { +void QBtSession::autoRunExternalProgram(const QTorrentHandle &h) { if (!h.is_valid()) return; QString program = Preferences().getAutoRunProgram().trimmed(); if (program.isEmpty()) return; @@ -2089,14 +2085,7 @@ void QBtSession::autoRunExternalProgram(const QTorrentHandle &h, bool async) { program.replace("%f", torrent_path); // Replace %n by torrent name program.replace("%n", h.name()); - QProcess *process = new QProcess; - if (async) { - connect(process, SIGNAL(finished(int)), this, SLOT(cleanUpAutoRunProcess(int))); - process->start(program); - } else { - process->execute(program); - delete process; - } + QProcess::startDetached(program); } void QBtSession::sendNotificationEmail(const QTorrentHandle &h) { @@ -2183,7 +2172,7 @@ void QBtSession::readAlerts() { #endif // AutoRun program if (pref.isAutoRunEnabled()) - autoRunExternalProgram(h, will_shutdown); + autoRunExternalProgram(h); // Move .torrent file to another folder if (pref.isFinishedTorrentExportEnabled()) exportTorrentFile(h, FinishedTorrentExportFolder); diff --git a/src/qtlibtorrent/qbtsession.h b/src/qtlibtorrent/qbtsession.h index 836104b2d..0c89e6010 100755 --- a/src/qtlibtorrent/qbtsession.h +++ b/src/qtlibtorrent/qbtsession.h @@ -197,8 +197,7 @@ private slots: void exportTorrentFiles(QString path); void saveTempFastResumeData(); void sendNotificationEmail(const QTorrentHandle &h); - void autoRunExternalProgram(const QTorrentHandle &h, bool async=true); - void cleanUpAutoRunProcess(int); + void autoRunExternalProgram(const QTorrentHandle &h); void mergeTorrents(QTorrentHandle& h_ex, boost::intrusive_ptr t); void mergeTorrents(QTorrentHandle& h_ex, const QString& magnet_uri); void exportTorrentFile(const QTorrentHandle &h, TorrentExportFolder folder = RegularTorrentExportFolder);