improve delays created by vicon drawing locks, reset_cache segv fix, gang track toolt...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / edits.C
index 74bd416446c00ce6e072e87dc1e94d9807db0eef..de93e5830d351d41ce3cd68e7a489f999e2c1312 100644 (file)
@@ -178,7 +178,7 @@ void Edits::insert_edits(Edits *source_edits,
 // Open destination area
                Edit *dest_edit = insert_new_edit(position + source_edit->startproject);
 
-               dest_edit->copy_from(source_edit);
+               dest_edit->clone_from(source_edit);
                dest_edit->asset = dest_asset;
                dest_edit->nested_edl = dest_nested_edl;
                dest_edit->startproject = position + source_edit->startproject;
@@ -242,10 +242,10 @@ Edit* Edits::split_edit(int64_t position)
 
        Edit *new_edit = create_edit();
        insert_after(edit, new_edit);
-       new_edit->copy_from(edit);
+       new_edit->clone_from(edit);
        new_edit->length = new_edit->startproject + new_edit->length - position;
        edit->length = position - edit->startproject;
-       if( !new_edit->length 
+       if( !new_edit->length || edit->silence() )
                new_edit->hard_left = new_edit->hard_right = 0;
        else if( !edit->length )
                edit->hard_left = edit->hard_right = 0;
@@ -412,8 +412,8 @@ int Edits::optimize()
                                if( is_glitch(next_edit) )
                                        break;
 // both edits are silence & not a plugin
-                               if( !current->is_plugin && current->silence() &&
-                                   !next_edit->is_plugin && next_edit->silence() )
+                               if( !current->is_plugin() && current->silence() &&
+                                   !next_edit->is_plugin() && next_edit->silence() )
                                        break;
 // source channels are identical & assets are identical
                                if( !result && current->channel == next_edit->channel &&