[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdenlive/frameworks] src: Fix multistream clips
From:       Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date:       2015-03-22 11:34:27
Message-ID: E1YZe9D-0003mv-Qy () scm ! kde ! org
[Download RAW message or body]

Git commit 75764960bc2c79e37444bc3467d1d40455b62bbc by Jean-Baptiste Mardelle.
Committed on 22/03/2015 at 11:34.
Pushed by mardelle into branch 'frameworks'.

Fix multistream clips

M  +1    -1    src/bin/bin.cpp
M  +2    -2    src/mainwindow.cpp
M  +1    -1    src/project/projectlist.cpp
M  +20   -6    src/renderer.cpp
M  +2    -0    src/renderer.h

http://commits.kde.org/kdenlive/75764960bc2c79e37444bc3467d1d40455b62bbc

diff --git a/src/bin/bin.cpp b/src/bin/bin.cpp
index ff395fa..f4132c9 100644
--- a/src/bin/bin.cpp
+++ b/src/bin/bin.cpp
@@ -522,7 +522,7 @@ void Bin::slotAddUrl(QString url, QMap <QString, QString> data)
     QList <QUrl>urls;
     urls << QUrl::fromLocalFile(url);
     QStringList folderInfo = getFolderInfo();
-    ClipCreationDialog::createClipsCommand(m_doc, urls, folderInfo, this);
+    ClipCreationDialog::createClipsCommand(m_doc, urls, folderInfo, this, data);
 }
 
 void Bin::createClip(QDomElement xml)
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 3a360d0..210cda3 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2441,8 +2441,8 @@ void MainWindow::hideEvent(QHideEvent */*event*/)
     QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
     okButton->setDefault(true);
     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
-    dialog->connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
-    dialog->connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+    dialog->connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept()));
+    dialog->connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject()));
 
     QLabel *label1 = new QLabel(i18n("Save clip zone as:"), this);
     if (path.isEmpty()) {
diff --git a/src/project/projectlist.cpp b/src/project/projectlist.cpp
index c7d46f3..c96f877 100644
--- a/src/project/projectlist.cpp
+++ b/src/project/projectlist.cpp
@@ -3000,7 +3000,7 @@ void ProjectList::slotShowJobLog()
     d.setLayout(mainLayout);
     mainLayout->addWidget(mainWidget);
     mainLayout->addWidget(buttonBox);
-    d.connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
+    d.connect(buttonBox, SIGNAL(accepted()), &d, SLOT(accept()));
     d.exec();
 }
 
diff --git a/src/renderer.cpp b/src/renderer.cpp
index f665f9d..e145bb3 100644
--- a/src/renderer.cpp
+++ b/src/renderer.cpp
@@ -625,6 +625,21 @@ ClipType Render::getTypeForService(const QString &id) const
     return Unknown;
 }
 
+void Render::processProducerProperties(Mlt::Producer *prod, QDomElement xml)
+{
+    QString value;
+    QStringList internalProperties;
+    internalProperties << "bypassDuplicate";
+    QDomNodeList props = xml.elementsByTagName("property");
+    for (int i = 0; i < props.count(); ++i) {
+        QString propertyName = props.at(i).toElement().attribute("name");
+        if (!internalProperties.contains(propertyName)) {
+            value = props.at(i).firstChild().nodeValue();
+            prod->set(propertyName.toUtf8().constData(), \
value.toUtf8().constData()); +        }
+    }
+}
+
 void Render::processFileProperties()
 {
     requestClipInfo info;
@@ -693,11 +708,8 @@ void Render::processFileProperties()
         } else if (type == Text) {
             path.prepend("kdenlivetitle:");
             producer = new Mlt::Producer(*m_mltProfile, 0, \
                path.toUtf8().constData());
-            QString xmldata = ProjectClip::getXmlProperty(info.xml, "xmldata");
-            if (producer && producer->is_valid() && !xmldata.isEmpty())
-                producer->set("xmldata", xmldata.toUtf8().constData());
         } else if (type == SlideShow) {
-            producer = new Mlt::Producer(*m_mltProfile, "xml-string", \
info.xml.ownerDocument().toString().toUtf8().constData()); +            producer = \
new Mlt::Producer(*m_mltProfile, 0, path.toUtf8().constData());  } else if \
                (!url.isValid()) {
             //WARNING: when is this case used? Not sure it is working.. JBM/
             QDomDocument doc;
@@ -728,6 +740,8 @@ void Render::processFileProperties()
             delete producer;
             continue;
         }
+        // Pass useful properties
+        processProducerProperties(producer, info.xml);
         QString clipName = ProjectClip::getXmlProperty(info.xml, \
"kdenlive:clipname");  if (!clipName.isEmpty()) {
             producer->set("kdenlive:clipname", clipName.toUtf8().constData());
@@ -4666,8 +4680,8 @@ void Render::slotMultiStreamProducerFound(const QString &path, \
QList<int> audio_  QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
     okButton->setDefault(true);
     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
-    dialog->connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
-    dialog->connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
+    dialog->connect(buttonBox, SIGNAL(accepted()), dialog, SLOT(accept()));
+    dialog->connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject()));
     okButton->setText(i18n("Import selected clips"));
     
     QLabel *lab1 = new QLabel(i18n("Additional streams for clip\n %1", path), \
                mainWidget);
diff --git a/src/renderer.h b/src/renderer.h
index 85275f8..877cc34 100644
--- a/src/renderer.h
+++ b/src/renderer.h
@@ -415,6 +415,8 @@ private:
     /** @brief Get a track producer from a clip's id */
     Mlt::Producer *getProducerForTrack(Mlt::Playlist &trackPlaylist, const QString \
&clipId);  ClipType getTypeForService(const QString &id) const;
+    /** @brief Pass xml values to an MLT producer at build time */
+    void processProducerProperties(Mlt::Producer *prod, QDomElement xml);
     
 private slots:
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic