X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginset.C;h=b0c096e44d8d2bdb23739f1ebc45f88e9ac0bbe2;hb=099132c524d32342be6cfc4948ecb1b3a439b988;hp=e1f1215e9f6beba10f7bd85ac7f7aa6062296269;hpb=a0ed17a5d6ecf2b010d977bc1f9b7226f24c20f6;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/pluginset.C b/cinelerra-5.1/cinelerra/pluginset.C index e1f1215e..b0c096e4 100644 --- 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; @@ -59,6 +52,8 @@ void PluginSet::copy_from(PluginSet *src) 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; } @@ -165,11 +160,24 @@ Edit* PluginSet::insert_edit_after(Edit *previous_edit) 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; + KeyFrame *keyframe = 0; Plugin *plugin = (Plugin*)editof(pos, dir, 0); - if( !plugin ) return 0; - KeyFrame *keyframe = (KeyFrame *)(dir == PLAY_FORWARD ? - plugin->keyframes->nearest_after(pos) : - plugin->keyframes->nearest_before(pos)); + if( dir == PLAY_FORWARD ) { + for( ; !keyframe && plugin; plugin=(Plugin*)plugin->next ) { + if( plugin->plugin_type == PLUGIN_NONE ) continue; + keyframe = (KeyFrame *)plugin->keyframes->nearest_after(pos); + } + } + else { + for( ; !keyframe && plugin; plugin=(Plugin*)plugin->previous ) { + if( plugin->plugin_type == PLUGIN_NONE ) continue; + keyframe = (KeyFrame *)plugin->keyframes->nearest_before(pos); + } + } return keyframe; }