+void RenderJob::initKdenliveDbusInterface()
+{
+ QString kdenliveId;
+ QDBusConnection connection = QDBusConnection::sessionBus();
+ QDBusConnectionInterface* ibus = connection.interface();
+ kdenliveId = QString::fromLatin1("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(QLatin1String("org.kde.kdenlive")))
+ continue;
+ kdenliveId = service;
+ break;
+ }
+ }
+ m_dbusargs.clear();
+ if (kdenliveId.isEmpty()) return;
+ m_kdenliveinterface = new QDBusInterface(kdenliveId,
+ QLatin1String("/MainWindow"),
+ QLatin1String("org.kdenlive.MainWindow"),
+ connection,
+ this);
+
+ if (m_kdenliveinterface) {
+ m_dbusargs.append(m_dest);
+ m_dbusargs.append((int) 0);
+ if (!m_args.contains(QLatin1String("pass=2")))
+ m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, QLatin1String("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(QLatin1String("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, QLatin1String("setRenderingFinished"), m_dbusargs);
+ }
+ QStringList args;
+ args << QLatin1String("--error") << error;
+ if (m_enablelog) m_logstream << error << endl;
+ qDebug() << error;
+ QProcess::startDetached(QLatin1String("kdialog"), args);
+ qApp->quit();
+ }