]> git.sesse.net Git - kdenlive/commitdiff
Workaround empty .yml metadata in MLT effects
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 9 Jun 2011 14:15:18 +0000 (14:15 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 9 Jun 2011 14:15:18 +0000 (14:15 +0000)
svn path=/trunk/kdenlive/; revision=5692

src/initeffects.cpp

index ecb9c967375f517dcb2c45aef10630743d78cc15..3bf90cd43c31488bfbe9e1550b956e6d4ce518bc 100644 (file)
@@ -196,24 +196,6 @@ Mlt::Repository *initEffects::parseEffectFiles()
     KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/lib64/ladspa");
     KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/local/lib64/ladspa");*/
 
-    // Set the directories to look into for effects.
-    QStringList direc = KGlobal::dirs()->findDirs("appdata", "effects");
-
-    // Iterate through effects directories to parse all XML files.
-    for (more = direc.begin(); more != direc.end(); ++more) {
-        QDir directory(*more);
-        QStringList filter;
-        filter << "*.xml";
-        fileList = directory.entryList(filter, QDir::Files);
-        for (it = fileList.begin(); it != fileList.end(); ++it) {
-            itemName = KUrl(*more + *it).path();
-            parseEffectFile(&MainWindow::customEffects,
-                            &MainWindow::audioEffects,
-                            &MainWindow::videoEffects,
-                            itemName, filtersList, producersList, repository);
-        }
-    }
-
     // Remove blacklisted effects from the filters list.
     QFile file2(KStandardDirs::locate("appdata", "blacklisted_effects.txt"));
     if (file2.open(QIODevice::ReadOnly)) {
@@ -251,21 +233,11 @@ Mlt::Repository *initEffects::parseEffectFiles()
         MainWindow::transitions.append(effect);
     effectsMap.clear();
 
-    // Create custom effects
-    for (int i = 0; i < MainWindow::customEffects.count(); ++i) {
-        effectInfo = MainWindow::customEffects.at(i);
-        effectsMap.insert(effectInfo.elementsByTagName("name").item(0).toElement().text().toLower().toUtf8().data(), effectInfo);
-    }
-    MainWindow::customEffects.clearList();
-    foreach(const QDomElement & effect, effectsMap)
-        MainWindow::customEffects.append(effect);
-    effectsMap.clear();
-
     // Create effects from MLT
     foreach(const QString & filtername, filtersList) {
         QDomDocument doc = createDescriptionFromMlt(repository, "filters", filtername);
-        if (!doc.isNull()) {
-            //kDebug()<<"ADDING: "<<doc.documentElement().elementsByTagName("name").item(0).toElement().text().toLower().toUtf8().data();
+        //WARNING: TEMPORARY FIX for empty MLT effects descriptions - disable effects without parameters - jbm 09-06-2011
+        if (!doc.isNull() && doc.elementsByTagName("parameter").count() > 0) {
             if (doc.documentElement().attribute("type") == "audio") {
                 audioEffectsMap.insert(doc.documentElement().elementsByTagName("name").item(0).toElement().text().toLower().toUtf8().data(), doc.documentElement());
             }
@@ -274,6 +246,33 @@ Mlt::Repository *initEffects::parseEffectFiles()
         }
     }
 
+    // Set the directories to look into for effects.
+    QStringList direc = KGlobal::dirs()->findDirs("appdata", "effects");
+    // Iterate through effects directories to parse all XML files.
+    for (more = direc.begin(); more != direc.end(); ++more) {
+        QDir directory(*more);
+        QStringList filter;
+        filter << "*.xml";
+        fileList = directory.entryList(filter, QDir::Files);
+        for (it = fileList.begin(); it != fileList.end(); ++it) {
+            itemName = KUrl(*more + *it).path();
+            parseEffectFile(&MainWindow::customEffects,
+                            &MainWindow::audioEffects,
+                            &MainWindow::videoEffects,
+                            itemName, filtersList, producersList, repository);
+        }
+    }
+
+    // Create custom effects
+    for (int i = 0; i < MainWindow::customEffects.count(); ++i) {
+        effectInfo = MainWindow::customEffects.at(i);
+        effectsMap.insert(effectInfo.elementsByTagName("name").item(0).toElement().text().toLower().toUtf8().data(), effectInfo);
+    }
+    MainWindow::customEffects.clearList();
+    foreach(const QDomElement & effect, effectsMap)
+        MainWindow::customEffects.append(effect);
+    effectsMap.clear();
+
     // Create audio effects
     for (int i = 0; i < MainWindow::audioEffects.count(); ++i) {
         effectInfo = MainWindow::audioEffects.at(i);