http://www.kdenlive.org:80/mantis/view.php?id=281
svn path=/branches/KDE4/; revision=2913
needRepaint = true;
}
m_effectList.removeAt(i);
needRepaint = true;
}
m_effectList.removeAt(i);
- } else if (ix.toInt() > index.toInt()) m_effectList[i].setAttribute("kdenlive_ix", ix.toInt() - 1);
+ i--;
+ } else if (ix.toInt() > index.toInt()) {
+ m_effectList[i].setAttribute("kdenlive_ix", ix.toInt() - 1);
+ }
}
m_effectNames = m_effectList.effectNames().join(" / ");
if (needRepaint) update(boundingRect());
}
m_effectNames = m_effectList.effectNames().join(" / ");
if (needRepaint) update(boundingRect());
void CustomTrackView::slotRefreshEffects(ClipItem *clip) {
int track = m_document->tracksCount() - clip->track();
GenTime pos = clip->startPos();
void CustomTrackView::slotRefreshEffects(ClipItem *clip) {
int track = m_document->tracksCount() - clip->track();
GenTime pos = clip->startPos();
- if (!m_document->renderer()->mltRemoveEffect(track, pos, "-1", false)) {
+ if (!m_document->renderer()->mltRemoveEffect(track, pos, "-1", false, false)) {
emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
return;
}
emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
return;
}
void CustomTrackView::deleteEffect(int track, GenTime pos, QDomElement effect) {
QString index = effect.attribute("kdenlive_ix");
void CustomTrackView::deleteEffect(int track, GenTime pos, QDomElement effect) {
QString index = effect.attribute("kdenlive_ix");
- if (effect.attribute("disabled") != "1" && !m_document->renderer()->mltRemoveEffect(track, pos, index)) {
+ if (!m_document->renderer()->mltRemoveEffect(track, pos, index, true) && effect.attribute("disabled") != "1") {
+ kDebug() << "// ERROR REMOV EFFECT: " << index << ", DISABLE: " << effect.attribute("disabled");
emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
return;
}
emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
return;
}
effectParams = clip->getEffectArgs(effect);
}
if (effectParams.paramValue("disabled") == "1") {
effectParams = clip->getEffectArgs(effect);
}
if (effectParams.paramValue("disabled") == "1") {
- if (m_document->renderer()->mltRemoveEffect(track, pos, effectParams.paramValue("kdenlive_ix"))) {
+ if (m_document->renderer()->mltRemoveEffect(track, pos, effectParams.paramValue("kdenlive_ix"), false)) {
kDebug() << "////// DISABLING EFFECT: " << index << ", CURRENTLA: " << clip->selectedEffectIndex();
} else emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
} else if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams))
kDebug() << "////// DISABLING EFFECT: " << index << ", CURRENTLA: " << clip->selectedEffectIndex();
} else emit displayMessage(i18n("Problem deleting effect"), ErrorMessage);
} else if (!m_document->renderer()->mltEditEffect(m_document->tracksCount() - clip->track(), clip->startPos(), effectParams))
delete m_thumbProd;
}
if (m_audioTimer) {
delete m_thumbProd;
}
if (m_audioTimer) {
- m_audioTimer->stop();
- delete m_audioTimer;
+ m_audioTimer->stop();
+ delete m_audioTimer;
}
qDeleteAll(m_baseTrackProducers);
m_baseTrackProducers.clear();
}
qDeleteAll(m_baseTrackProducers);
m_baseTrackProducers.clear();
-bool Render::mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh) {
-
+bool Render::mltRemoveEffect(int track, GenTime position, QString index, bool updateIndex, bool doRefresh) {
+ kDebug() << "// TRYing to remove effect at: " << index;
Mlt::Service service(m_mltProducer->parent().get_service());
bool success = false;
Mlt::Tractor tractor(service);
Mlt::Service service(m_mltProducer->parent().get_service());
bool success = false;
Mlt::Tractor tractor(service);
if ((index == "-1" && filter->get("kdenlive_id") != "") || filter->get("kdenlive_ix") == index) {// && filter->get("kdenlive_id") == id) {
if (clipService.detach(*filter) == 0) success = true;
kDebug() << " / / / DLEETED EFFECT: " << ct;
if ((index == "-1" && filter->get("kdenlive_id") != "") || filter->get("kdenlive_ix") == index) {// && filter->get("kdenlive_id") == id) {
if (clipService.detach(*filter) == 0) success = true;
kDebug() << " / / / DLEETED EFFECT: " << ct;
+ } else if (updateIndex) {
+ // Adjust the other effects index
if (QString(filter->get("kdenlive_ix")).toInt() > index.toInt()) filter->set("kdenlive_ix", QString(filter->get("kdenlive_ix")).toInt() - 1);
ct++;
if (QString(filter->get("kdenlive_ix")).toInt() > index.toInt()) filter->set("kdenlive_ix", QString(filter->get("kdenlive_ix")).toInt() - 1);
ct++;
filter = clipService.filter(ct);
}
m_isBlocked = false;
filter = clipService.filter(ct);
}
m_isBlocked = false;
if (!params.paramValue("keyframes").isEmpty() || /*it.key().startsWith("#") || */tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") {
// This is a keyframe effect, to edit it, we remove it and re-add it.
if (!params.paramValue("keyframes").isEmpty() || /*it.key().startsWith("#") || */tag.startsWith("ladspa") || tag == "sox" || tag == "autotrack_rectangle") {
// This is a keyframe effect, to edit it, we remove it and re-add it.
- mltRemoveEffect(track, position, index);
+ mltRemoveEffect(track, position, index, true);
bool success = mltAddEffect(track, position, params);
return success;
}
bool success = mltAddEffect(track, position, params);
return success;
}
bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod);
bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart, Mlt::Producer *prod);
bool mltRemoveClip(int track, GenTime position);
bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod);
bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart, Mlt::Producer *prod);
bool mltRemoveClip(int track, GenTime position);
- bool mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true);
+ bool mltRemoveEffect(int track, GenTime position, QString index, bool updateIndex, bool doRefresh = true);
bool mltAddEffect(int track, GenTime position, EffectsParameterList params, bool doRefresh = true);
bool mltEditEffect(int track, GenTime position, EffectsParameterList params);
void mltMoveEffect(int track, GenTime position, int oldPos, int newPos);
bool mltAddEffect(int track, GenTime position, EffectsParameterList params, bool doRefresh = true);
bool mltEditEffect(int track, GenTime position, EffectsParameterList params);
void mltMoveEffect(int track, GenTime position, int oldPos, int newPos);