[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