add edit length update when open_edl changes media length, replace stack_warn with...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / edits.C
index 0bf6e0ae24eddd7804c3b1b1198210a90befa70c..a64024ada45ad77505b3b53905e823a04608a9ed 100644 (file)
@@ -898,3 +898,20 @@ void Edits::align_timecodes(double offset)
        }
 }
 
+void Edits::update_idxbl_length(int id, int64_t du)
+{
+       for( Edit *edit=first; edit; edit=edit->next ) {
+               Indexable *idxbl = edit->asset ? (Indexable *)edit->asset :
+                       edit->nested_edl ? (Indexable *)edit->nested_edl : 0;
+               if( !idxbl || idxbl->id != id ) continue;
+               edit->length += du;
+               if(  edit->length > 0 && edit->next ) {
+                       int64_t next_start = edit->next->startproject;
+                       int64_t edit_end = edit->startproject + edit->length;
+                       if( edit_end > next_start )
+                               edit->length = next_start - edit->startproject;
+               }
+               if( edit->length < 0 ) edit->length = 0;
+       }
+}
+