X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftrackview.cpp;h=d202887388b5b14ba818e7df0cdd19fc0dcc24db;hb=1ab9d2421085826637f44c9cf9d70f8b0e063481;hp=68c2e39bfd4a58e432c4c4ed62a30dfe37837c23;hpb=ef1cdedcc9367dc0f8caad2a025071489f68fe77;p=kdenlive diff --git a/src/trackview.cpp b/src/trackview.cpp index 68c2e39b..d2028873 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -195,7 +195,7 @@ void TrackView::parseDocument(QDomDocument doc) { if (transitionAdd) { // Transition should be added to the scene ItemInfo transitionInfo; - QDomElement base = MainWindow::transitions.getEffectByTag(mlt_service, QString()); + QDomElement base = MainWindow::transitions.getEffectByTag(mlt_service, QString()).cloneNode().toElement(); for (int k = 0; k < transitionparams.count(); k++) { p = transitionparams.item(k).toElement(); @@ -398,16 +398,17 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool videotrack) { elem.removeChild(effects.at(ix)); ix--; } else { - clipeffect.setAttribute("kdenlive_ix", effectindex); - QDomNodeList clipeffectparams = clipeffect.childNodes(); + QDomElement currenteffect = clipeffect.cloneNode().toElement(); + currenteffect.setAttribute("kdenlive_ix", effectindex); + QDomNodeList clipeffectparams = currenteffect.childNodes(); - if (MainWindow::videoEffects.hasKeyFrames(clipeffect)) { + if (MainWindow::videoEffects.hasKeyFrames(currenteffect)) { kDebug() << " * * * * * * * * * * ** CLIP EFF WITH KFR FND * * * * * * * * * * *"; // effect is key-framable, read all effects to retrieve keyframes double factor; QString starttag; QString endtag; - QDomNodeList params = clipeffect.elementsByTagName("parameter"); + QDomNodeList params = currenteffect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); if (e.attribute("type") == "keyframe") { @@ -431,7 +432,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool videotrack) { endvalue = effectparam.text().toDouble() * factor; } // add first keyframe - keyframes.append(QString::number(in + effectin) + ":" + QString::number(startvalue) + ";" + QString::number(in + effectout) + ":" + QString::number(endvalue) + ";"); + keyframes.append(QString::number(effectin) + ":" + QString::number(startvalue) + ";" + QString::number(effectout) + ":" + QString::number(endvalue) + ";"); QDomNode lastParsedEffect; ix++; QDomNode n2 = effects.at(ix); @@ -454,11 +455,11 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool videotrack) { break; } } - if (continueParsing) keyframes.append(QString::number(in + effectout) + ":" + QString::number(endvalue) + ";"); + if (continueParsing) keyframes.append(QString::number(effectout) + ":" + QString::number(endvalue) + ";"); ix++; } - params = clipeffect.elementsByTagName("parameter"); + params = currenteffect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); if (e.attribute("type") == "keyframe") e.setAttribute("keyframes", keyframes); @@ -485,7 +486,7 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool videotrack) { } } } - item->addEffect(clipeffect, false); + item->addEffect(currenteffect, false); item->effectsCounter(); } }