+
+ Mlt::Service service(m_mltProducer->parent().get_service());
+ mlt_service_lock(service.get_service());
+
+ if (service.type() == tractor_type) {
+ Mlt::Tractor tractor(service);
+ Mlt::Field *field = tractor.field();
+ mlt_service nextservice = mlt_service_get_producer(service.get_service());
+ mlt_properties properties = MLT_SERVICE_PROPERTIES(nextservice);
+ QString mlt_type = mlt_properties_get(properties, "mlt_type");
+ QString resource = mlt_properties_get(properties, "mlt_service");
+ // Delete all transitions
+ while (mlt_type == "transition") {
+ mlt_field_disconnect_service(field->get_field(), nextservice);
+ nextservice = mlt_service_producer(nextservice);
+ if (nextservice == NULL) break;
+ properties = MLT_SERVICE_PROPERTIES(nextservice);
+ mlt_type = mlt_properties_get(properties, "mlt_type");
+ resource = mlt_properties_get(properties, "mlt_service");
+ }
+
+ int trackNb = tractor.count();
+ while (trackNb > 0) {
+ Mlt::Producer trackProducer(tractor.track(trackNb - 1));
+ Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
+ if (trackPlaylist.type() == playlist_type) trackPlaylist.clear();
+ trackNb--;
+ }
+ }
+ mlt_service_unlock(service.get_service());
+
+ qDeleteAll(m_slowmotionProducers.values());
+ m_slowmotionProducers.clear();
+