projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add auto next/prev tab (alt-a), update shortcuts, fix keyframe paste track tabbing...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
cinelerra
/
pluginset.C
diff --git
a/cinelerra-5.1/cinelerra/pluginset.C
b/cinelerra-5.1/cinelerra/pluginset.C
index a0d3b6c2b494aa8976853ffabacd29206c5989aa..575f04651ce78c10fc33d24958b618ecb4c65ac4 100644
(file)
--- a/
cinelerra-5.1/cinelerra/pluginset.C
+++ b/
cinelerra-5.1/cinelerra/pluginset.C
@@
-44,13
+44,6
@@
PluginSet::~PluginSet()
}
}
-PluginSet& PluginSet::operator=(PluginSet& plugins)
-{
-printf("PluginSet::operator= 1\n");
- copy_from(&plugins);
- return *this;
-}
-
void PluginSet::copy_from(PluginSet *src)
{
while(last) delete last;
void PluginSet::copy_from(PluginSet *src)
{
while(last) delete last;
@@
-59,6
+52,8
@@
void PluginSet::copy_from(PluginSet *src)
Plugin *new_plugin;
append(new_plugin = (Plugin*)create_edit());
new_plugin->copy_from(current);
Plugin *new_plugin;
append(new_plugin = (Plugin*)create_edit());
new_plugin->copy_from(current);
+// update gui_id when copying edl
+ new_plugin->gui_id = current->gui_id;
}
this->record = src->record;
}
}
this->record = src->record;
}
@@
-165,6
+160,10
@@
Edit* PluginSet::insert_edit_after(Edit *previous_edit)
KeyFrame *PluginSet::nearest_keyframe(int64_t pos, int dir)
{
KeyFrame *PluginSet::nearest_keyframe(int64_t pos, int dir)
{
+ if( first && pos < first->startproject )
+ pos = first->startproject;
+ else if( last && pos > last->startproject+last->length )
+ pos = last->startproject+last->length;
Plugin *plugin = (Plugin*)editof(pos, dir, 0);
if( !plugin ) return 0;
KeyFrame *keyframe = (KeyFrame *)(dir == PLAY_FORWARD ?
Plugin *plugin = (Plugin*)editof(pos, dir, 0);
if( !plugin ) return 0;
KeyFrame *keyframe = (KeyFrame *)(dir == PLAY_FORWARD ?
@@
-442,6
+441,13
@@
int PluginSet::optimize()
int result = 1;
Plugin *current_edit;
int result = 1;
Plugin *current_edit;
+// trim plugins before position 0
+ while( first && first->startproject+first->length < 0 )
+ delete first;
+ if( first && first->startproject < 0 ) {
+ first->length += first->startproject;
+ first->startproject = 0;
+ }
// Delete keyframes out of range
for(current_edit = (Plugin*)first;
// Delete keyframes out of range
for(current_edit = (Plugin*)first;