Mlt::Service clipService(trackPlaylist.get_service());
m_isBlocked = true;
+ mlt_service_lock(service.get_service());
int ct = 0;
Mlt::Filter *filter = clipService.filter(ct);
while (filter) {
- if ((index == "-1" && strcmp(filter->get("kdenlive_id"), "")) || QString(filter->get("kdenlive_ix")) == index) {
+ if ((index == "-1" && strcmp(filter->get("kdenlive_id"), "")) || filter->get_int("kdenlive_ix") == index.toInt()) {
if (clipService.detach(*filter) == 0) success = true;
} else if (updateIndex) {
// Adjust the other effects index
filter = clipService.filter(ct);
}
m_isBlocked = false;
+ mlt_service_unlock(service.get_service());
refresh();
return success;
}
// if (tag.startsWith("ladspa")) tag = "ladspa";
m_isBlocked = true;
+ mlt_service_lock(service.get_service());
int ct = 0;
Mlt::Filter *filter = clipService.filter(ct);
while (filter) {
- if ((index == "-1" && strcmp(filter->get("kdenlive_id"), "")) || QString(filter->get("kdenlive_ix")) == index) {// && filter->get("kdenlive_id") == id) {
+ if ((index == "-1" && strcmp(filter->get("kdenlive_id"), "")) || filter->get_int("kdenlive_ix") == index.toInt()) {// && filter->get("kdenlive_id") == id) {
if (clipService.detach(*filter) == 0) success = true;
//kDebug()<<"Deleted filter id:"<<filter->get("kdenlive_id")<<", ix:"<<filter->get("kdenlive_ix")<<", SERVICE:"<<filter->get("mlt_service");
} else if (updateIndex) {
filter = clipService.filter(ct);
}
m_isBlocked = false;
+ mlt_service_unlock(service.get_service());
if (doRefresh) refresh();
return success;
}
}
Mlt::Service clipService(clip->get_service());
- m_isBlocked = true;
int duration = clip->get_playtime();
if (doRefresh) {
// Check if clip is visible in monitor
const int filter_ix = params.paramValue("kdenlive_ix").toInt();
const QString region = params.paramValue("region");
int ct = 0;
+ m_isBlocked = true;
+ mlt_service_lock(service.get_service());
+
Mlt::Filter *filter = service.filter(ct);
while (filter) {
if (filter->get_int("kdenlive_ix") == filter_ix) {
filter = service.filter(ct);
}
m_isBlocked = false;
+ mlt_service_unlock(service.get_service());
if (doRefresh) refresh();
return true;
}
} else {
kDebug() << "filter is NULL";
m_isBlocked = false;
+ mlt_service_unlock(service.get_service());
return false;
}
params.removeParam("kdenlive_id");
service.attach(*filter);
}
m_isBlocked = false;
+ mlt_service_unlock(service.get_service());
if (doRefresh) refresh();
return true;
}
Mlt::Filter *filter = clipService.filter(ct);
while (filter) {
- if (QString(filter->get("kdenlive_ix")) == index) {
+ if (filter->get_int("kdenlive_ix") == index.toInt()) {
break;
}
ct++;
// This is a keyframe effect, to edit it, we remove it and re-add it.
bool success = mltRemoveEffect(track, position, index, false);
if (!success) kDebug() << "// ERROR Removing effect : " << index;
- success = mltAddTrackEffect(track, params);
+ if (position < GenTime()) success = mltAddTrackEffect(track, params);
+ else success = mltAddEffect(track, position, params);
if (!success) kDebug() << "// ERROR Adding effect : " << index;
return success;
}
Mlt::Filter *filter = clipService.filter(ct);
while (filter) {
- if (QString(filter->get("kdenlive_ix")) == index) {
+ if (filter->get_int("kdenlive_ix") == index.toInt()) {
break;
}
ct++;