- m_consumer->start();
- prod->set_speed(1);
- while (jobStatus != JOBABORTED && !m_consumer->is_stopped()) {
-
- }
- m_consumer->stop();
- QStringList wanted = properties.split(',', QString::SkipEmptyParts);
- stringMap jobResults;
- foreach(const QString &key, wanted) {
- QString value = mltFilter.get(key.toUtf8().constData());
- jobResults.insert(key, value);
- }
- if (!jobResults.isEmpty()) emit gotFilterJobResults(m_clipId, startPos, track, finalFilter, jobResults);
- setStatus(JOBDONE);
- delete m_consumer;
- delete prod;
- return;
+ m_producer->set_speed(1);
+ m_consumer->run();
+
+ QMap <QString, QString> jobResults;
+ if (m_jobStatus != JobAborted && m_extra.contains(QLatin1String("key"))) {
+ QString result = QString::fromLatin1(m_filter->get(m_extra.value(QLatin1String("key")).toUtf8().constData()));
+ jobResults.insert(m_extra.value(QLatin1String("key")), result);
+ }
+ if (!jobResults.isEmpty() && m_jobStatus != JobAborted) {
+ emit gotFilterJobResults(m_clipId, startPos, track, jobResults, m_extra);
+ }
+ if (m_jobStatus == JobAborted || m_jobStatus == JobWorking) m_jobStatus = JobDone;