m_args << "-consumer" << rendermodule + ":" + m_dest << "progress=1" << args;
connect(m_renderProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotIsOver(int, QProcess::ExitStatus)));
m_renderProcess->setReadChannel(QProcess::StandardError);
+
+ /*
// Create a log of every render process.
m_logfile.setAutoRemove(false);
m_logfile.setFileTemplate(QDir::tempPath() + "/kdenlive_render.log.XXXXXXXX");
QTextStream in(&file);
m_logstream << in.readAll() << endl;
}
+ */
}
RenderJob::~RenderJob() {
if (m_renderProcess) delete m_renderProcess;
- m_logfile.close();
+ // m_logfile.close();
}
void RenderJob::slotAbort(const QString& url) {
}
QFile f(m_dest);
f.remove();
+ /*
m_logstream << "Job aborted by user" << endl;
m_logstream.flush();
m_logfile.close();
+ */
qApp->quit();
}
void RenderJob::receivedStderr() {
QString result = QString(m_renderProcess->readAllStandardError()).simplified();
if (!result.startsWith("Current Frame")) m_errorMessage.append(result + "<br>");
- m_logstream << "ReceivedStderr from inigo: " << result << endl;
- result = result.section(" ", -1);
- int pro = result.toInt();
- if (m_kdenliveinterface && pro > m_progress) {
- m_dbusargs[1] = pro;
- m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
- }
- if (m_jobUiserver && pro > m_progress) {
- m_progress = pro;
- m_jobUiserver->call("setPercent", (uint) m_progress);
- int seconds = m_startTime.secsTo(QTime::currentTime());
- seconds = seconds * (100 - m_progress) / m_progress;
- m_jobUiserver->call("setDescriptionField", (uint) 1, tr("Remaining time"), QTime(0, 0, seconds).toString("hh:mm:ss"));
- }
+ else {
+ // m_logstream << "ReceivedStderr from inigo: " << result << endl;
+ result = result.section(" ", -1);
+ int pro = result.toInt();
+ if (pro < 0 || pro > 100) return;
+ if (pro > m_progress) {
+ m_progress = pro;
+ if (m_kdenliveinterface) {
+ if (!m_kdenliveinterface->isValid()) {
+ delete m_kdenliveinterface;
+ m_kdenliveinterface = NULL;
+ // qDebug() << "BROKEN COMMUNICATION WITH KDENLIVE";
+ }
+ else {
+ m_dbusargs[1] = pro;
+ m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingProgress", m_dbusargs);
+ }
+ } else if (pro % 5 == 0) {
+ // Try to restart communication with Kdenlive every 5 percents
+ // qDebug() << "TRYING TO RESTART COMMUNICATION WITH KDENLIVE";
+ initKdenliveDbusInterface();
+ }
+ if (m_jobUiserver) {
+ m_jobUiserver->call("setPercent", (uint) m_progress);
+ /*int seconds = m_startTime.secsTo(QTime::currentTime());
+ seconds = seconds * (100 - m_progress) / m_progress;
+ m_jobUiserver->call("setDescriptionField", (uint) 1, tr("Remaining time"), QTime().addSecs(seconds).toString("hh:mm:ss"));*/
+ }
+ }
+ }
}
void RenderJob::start() {
if (interface && m_usekuiserver) {
if (!interface->isServiceRegistered("org.kde.JobViewServer")) {
qDebug() << "No org.kde.JobViewServer registered, trying to start kuiserver";
- m_logstream << "No org.kde.JobViewServer registered, trying to start kuiserver";
+ // m_logstream << "No org.kde.JobViewServer registered, trying to start kuiserver";
if (QProcess::startDetached("kuiserver")) {
qDebug() << "Started kuiserver";
- m_logstream << "Started kuiserver";
+ // m_logstream << "Started kuiserver";
// Give it a couple of seconds to start
QTime t;
t.start();
}
} else {
qDebug() << "Failed to start kuiserver";
- m_logstream << "Failed to start kuiserver";
+ // m_logstream << "Failed to start kuiserver";
}
}
if (interface->isServiceRegistered("org.kde.JobViewServer")) {
QDBusInterface kuiserver("org.kde.JobViewServer", "/JobViewServer", "org.kde.JobViewServer");
- QDBusReply<QDBusObjectPath> objectPath = kuiserver.call("requestView", "kdenlive", "kdenlive", 1);
+ QDBusReply<QDBusObjectPath> objectPath = kuiserver.call("requestView", "kdenlive", "kdenlive", 0x0001);
QString reply = ((QDBusObjectPath) objectPath).path();
m_jobUiserver = new QDBusInterface("org.kde.JobViewServer", reply, "org.kde.JobView");
if (m_jobUiserver) {
m_startTime = QTime::currentTime();
m_jobUiserver->call("setPercent", (uint) 0);
- QDBusReply<QString> reply = m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(QFileInfo(m_dest).fileName()));
- m_jobUiserver->call("setDescriptionField", (uint) 0, tr("Rendering to"), m_dest);
+ m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(QFileInfo(m_dest).fileName()));
+ //m_jobUiserver->call("setDescriptionField", (uint) 0, tr("Rendering to"), m_dest);
QDBusConnection::sessionBus().connect("org.kde.JobViewServer", reply, "org.kde.JobView", "cancelRequested", this, SLOT(slotAbort()));
}
}
}
+ initKdenliveDbusInterface();
+
+ // Because of the logging, we connect to stderr in all cases.
+ connect(m_renderProcess, SIGNAL(readyReadStandardError()), this, SLOT(receivedStderr()));
+ m_renderProcess->start(m_prog, m_args);
+ // m_logstream << "Started render process: " << m_prog << " " << m_args.join(" ") << endl;
+ qDebug() << "Started render process: " << m_prog << " " << m_args.join(" ");
+}
+
+
+void RenderJob::initKdenliveDbusInterface() {
QString kdenliveId;
QDBusConnection connection = QDBusConnection::sessionBus();
QDBusConnectionInterface *ibus = connection.interface();
kdenliveId = service;
break;
}
-
- QDBusConnection bus = QDBusConnection::sessionBus();
+ m_dbusargs.clear();
+ if (kdenliveId.isEmpty()) return;
m_kdenliveinterface = new QDBusInterface(kdenliveId,
"/MainWindow",
"org.kdenlive.MainWindow",
- bus,
+ connection,
this);
if (m_kdenliveinterface) {
connect(m_kdenliveinterface, SIGNAL(abortRenderJob(const QString &)),
this, SLOT(slotAbort(const QString&)));
}
-
- // Because of the logging, we connect to stderr in all cases.
- connect(m_renderProcess, SIGNAL(readyReadStandardError()), this, SLOT(receivedStderr()));
- m_renderProcess->start(m_prog, m_args);
- m_logstream << "Started render process: " << m_prog << " " << m_args.join(" ") << endl;
- qDebug() << "Started render process: " << m_prog << " " << m_args.join(" ");
}
}
QStringList args;
args << "--error" << tr("Rendering of %1 aborted, resulting video will probably be corrupted.").arg(m_dest);
- m_logstream << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted." << endl;
+ // m_logstream << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted." << endl;
qDebug() << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted.";
QProcess::startDetached("kdialog", args);
} else {
m.setArguments(args);
QDBusMessage replyMsg = QDBusConnection::sessionBus().call(m);
}
- m_logstream << "Rendering of " << m_dest << " finished" << endl;
+ // m_logstream << "Rendering of " << m_dest << " finished" << endl;
qDebug() << "Rendering of " << m_dest << " finished";
if (m_player != "-") {
- m_logstream << "Starting player" << endl;
+ // m_logstream << "Starting player" << endl;
QStringList args;
args << m_dest;
QProcess::startDetached(m_player, args);