Launch external programs async and don't block. Closes #1252.

This commit is contained in:
sledgehammer999 2014-01-26 14:26:24 +02:00
parent bf291dbfb1
commit 77329a2609
2 changed files with 4 additions and 16 deletions

View file

@ -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);

View file

@ -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<libtorrent::torrent_info> t);
void mergeTorrents(QTorrentHandle& h_ex, const QString& magnet_uri);
void exportTorrentFile(const QTorrentHandle &h, TorrentExportFolder folder = RegularTorrentExportFolder);