]> git.sesse.net Git - kdenlive/commitdiff
Render jobs can now be canceled from kuiserver
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 10 Mar 2008 17:59:26 +0000 (17:59 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 10 Mar 2008 17:59:26 +0000 (17:59 +0000)
svn path=/branches/KDE4/; revision=2038

renderer/renderjob.cpp
renderer/renderjob.h

index 08d4ed08051b577e8871375a68fe93093812dab3..c9d3dcda532dc952972c6ef10739e6fa400c38f9 100644 (file)
@@ -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<QString> 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);
 }
 
index a094d282869703961a7c0d59651cfe8ba04dea90..106a9feb780bf33cebc3484b253b39645b83e9e7 100644 (file)
@@ -35,6 +35,7 @@ public:
 private slots:
     void slotIsOver(int exitcode, QProcess::ExitStatus status);
     void receivedStderr();
+    void slotAbort();
 
 private:
     QString m_scenelist;