]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Speedup project opening (threaded loading) and fix shortcut conflict
[kdenlive] / src / renderer.cpp
index 17ab206be0c49ad2e5917e959bc9a53a6e68fff0..c0a86da5a5b530d0446a62d1cace2c04ebfa3a62 100644 (file)
@@ -520,7 +520,7 @@ void Render::slotSplitView(bool doit)
     }
 }
 
-void Render::getFileProperties(const QDomElement xml, const QString &clipId, int imageHeight, bool replaceProducer)
+void Render::getFileProperties(const QDomElement xml, const QString &clipId, int imageHeight, bool replaceProducer, bool selectClip)
 {
     QString path;
     if (xml.hasAttribute("proxy")) path = xml.attribute("proxy");
@@ -623,7 +623,7 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int
 
     if (!replaceProducer && xml.hasAttribute("file_hash")) {
         // Clip  already has all properties
-        emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer);
+        emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer, selectClip);
         return;
     }
 
@@ -799,7 +799,7 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int
             metadataPropertyMap[ name.section('.', 0, -2)] = value;
     }
     producer->seek(0);
-    emit replyGetFileProperties(clipId, producer, filePropertyMap, metadataPropertyMap, replaceProducer);
+    emit replyGetFileProperties(clipId, producer, filePropertyMap, metadataPropertyMap, replaceProducer, selectClip);
     // FIXME: should delete this to avoid a leak...
     //delete producer;
 }
@@ -3328,12 +3328,11 @@ void Render::mltPlantTransition(Mlt::Field *field, Mlt::Transition &tr, int a_tr
         mlt_type = mlt_properties_get(properties, "mlt_type");
         resource = mlt_properties_get(properties, "mlt_service");
     }
-
     field->plant_transition(tr, a_track, b_track);
 
     // re-add upper transitions
-    for (int i = 0; i < trList.count(); i++) {
-        // kDebug()<< "REPLANT ON TK: "<<trList.at(i)->get_a_track()<<", "<<trList.at(i)->get_b_track();
+    for (int i = trList.count() - 1; i >= 0; i--) {
+        //kDebug()<< "REPLANT ON TK: "<<trList.at(i)->get_a_track()<<", "<<trList.at(i)->get_b_track();
         field->plant_transition(*trList.at(i), trList.at(i)->get_a_track(), trList.at(i)->get_b_track());
     }
 }
@@ -3342,6 +3341,7 @@ void Render::mltUpdateTransition(QString oldTag, QString tag, int a_track, int b
 {
     if (oldTag == tag && !force) mltUpdateTransitionParams(tag, a_track, b_track, in, out, xml);
     else {
+        kDebug()<<"// DELETING TRANS: "<<a_track<<"-"<<b_track;
         mltDeleteTransition(oldTag, a_track, b_track, in, out, xml, false);
         mltAddTransition(tag, a_track, b_track, in, out, xml, false);
     }
@@ -3666,8 +3666,12 @@ bool Render::mltAddTransition(QString tag, int a_track, int b_track, GenTime in,
         //kDebug() << " ------  ADDING TRANS PARAM: " << key << ": " << it.value();
     }
     // attach transition
+    m_isBlocked++;
+    mlt_service_lock(service.get_service());
     mltPlantTransition(field, *transition, a_track, b_track);
     // field->plant_transition(*transition, a_track, b_track);
+    mlt_service_unlock(service.get_service());
+    m_isBlocked--;
     if (do_refresh) refresh();
     return true;
 }