Browse Source

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

adaptive-webui-19844
sledgehammer999 11 years ago
parent
commit
77329a2609
  1. 17
      src/qtlibtorrent/qbtsession.cpp
  2. 3
      src/qtlibtorrent/qbtsession.h

17
src/qtlibtorrent/qbtsession.cpp

@ -2072,11 +2072,7 @@ void QBtSession::recursiveTorrentDownload(const QTorrentHandle &h) { @@ -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) { @@ -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() { @@ -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);

3
src/qtlibtorrent/qbtsession.h

@ -197,8 +197,7 @@ private slots: @@ -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);

Loading…
Cancel
Save