+void RenderJob::initKdenliveDbusInterface()
+{
+ QString kdenliveId;
+ QDBusConnection connection = QDBusConnection::sessionBus();
+ QDBusConnectionInterface* ibus = connection.interface();
+ kdenliveId = QString("org.kde.kdenlive-%1").arg(m_pid);
+ if (!ibus->isServiceRegistered(kdenliveId))
+ {
+ kdenliveId.clear();
+ const QStringList services = ibus->registeredServiceNames();
+ foreach(const QString & service, services) {
+ if (!service.startsWith("org.kde.kdenlive"))
+ continue;
+ kdenliveId = service;
+ break;
+ }
+ }
+ m_dbusargs.clear();
+ if (kdenliveId.isEmpty()) return;
+ m_kdenliveinterface = new QDBusInterface(kdenliveId,
+ "/MainWindow",
+ "org.kdenlive.MainWindow",
+ connection,
+ this);
+
+ if (m_kdenliveinterface) {
+ m_dbusargs.append(m_dest);
+ m_dbusargs.append((int) 0);
+ if (!m_args.contains("pass=2"))
+ m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+ connect(m_kdenliveinterface, SIGNAL(abortRenderJob(QString)),
+ this, SLOT(slotAbort(QString)));
+ }
+}
+
+
+void RenderJob::slotCheckProcess(QProcess::ProcessState state)
+{
+ if (state == QProcess::NotRunning) slotIsOver(m_renderProcess->exitStatus());
+}
+
+
+
+void RenderJob::slotIsOver(QProcess::ExitStatus status, bool isWritable)
+{
+ if (m_jobUiserver) m_jobUiserver->call("terminate", QString());
+ if (!isWritable) {
+ QString error = tr("Cannot write to %1, check the permissions.").arg(m_dest);
+ if (m_kdenliveinterface) {
+ m_dbusargs[1] = (int) - 2;
+ m_dbusargs.append(error);
+ m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingFinished", m_dbusargs);
+ }
+ QStringList args;
+ args << "--error" << error;
+ if (m_enablelog) m_logstream << error << endl;
+ qDebug() << error;
+ QProcess::startDetached("kdialog", args);
+ qApp->quit();
+ }