+void Render::mltUpdateEffectPosition(int track, GenTime position, int oldPos, int newPos)
+{
+
+ kDebug() << "MOVING EFFECT FROM " << oldPos << ", TO: " << newPos;
+ Mlt::Service service(m_mltProducer->parent().get_service());
+
+ Mlt::Tractor tractor(service);
+ Mlt::Producer trackProducer(tractor.track(track));
+ Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
+ //int clipIndex = trackPlaylist.get_clip_index_at(position.frames(m_fps));
+ Mlt::Producer *clip = trackPlaylist.get_clip_at((int) position.frames(m_fps));
+ if (!clip) {
+ kDebug() << "WARINIG, CANNOT FIND CLIP ON track: " << track << ", AT POS: " << position.frames(m_fps);
+ return;
+ }
+ Mlt::Service clipService(clip->get_service());
+ delete clip;
+ m_isBlocked = true;
+ int ct = 0;
+ Mlt::Filter *filter = clipService.filter(ct);
+ while (filter) {
+ int pos = QString(filter->get("kdenlive_ix")).toInt();
+ if (pos == oldPos) {
+ filter->set("kdenlive_ix", newPos);
+ } else ct++;
+ filter = clipService.filter(ct);
+ }
+
+ m_isBlocked = false;
+ refresh();
+}
+