From 852b77b3d52c685f22f5705dcc21dc3e71c11ab5 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 10 Mar 2008 17:59:26 +0000 Subject: [PATCH] Render jobs can now be canceled from kuiserver svn path=/branches/KDE4/; revision=2038 --- renderer/renderjob.cpp | 18 +++++++++++++++++- renderer/renderjob.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/renderer/renderjob.cpp b/renderer/renderjob.cpp index 08d4ed08..c9d3dcda 100644 --- a/renderer/renderjob.cpp +++ b/renderer/renderjob.cpp @@ -43,7 +43,20 @@ RenderJob::RenderJob(bool erase, QString renderer, QString player, QString scene RenderJob::~RenderJob() { - delete m_renderProcess; + if (m_renderProcess) delete m_renderProcess; +} + +void RenderJob::slotAbort() { + fprintf(stderr, "Kdenlive-render: JOB ABORTED BY USER...\n"); + m_renderProcess->kill(); + QDBusReply reply = m_jobUiserver->call("terminate", ""); + if (m_erase) { + QFile f(m_scenelist); + f.remove(); + } + QFile f(m_dest); + f.remove(); + exit(1); } void RenderJob::receivedStderr() { @@ -63,6 +76,9 @@ void RenderJob::start() { QString reply = ((QDBusObjectPath) objectPath).path(); m_jobUiserver = new QDBusInterface("org.kde.JobViewServer", reply, "org.kde.JobView"); m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(m_dest)); + + QDBusConnection::sessionBus().connect("org.kde.JobViewServer", reply, "org.kde.JobView", + "cancelRequested", this, SLOT(slotAbort())); m_renderProcess->start(m_prog, m_args); } diff --git a/renderer/renderjob.h b/renderer/renderjob.h index a094d282..106a9feb 100644 --- a/renderer/renderjob.h +++ b/renderer/renderjob.h @@ -35,6 +35,7 @@ public: private slots: void slotIsOver(int exitcode, QProcess::ExitStatus status); void receivedStderr(); + void slotAbort(); private: QString m_scenelist; -- 2.39.2