X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmodule.C;h=01f3095f1c69d2e8d0b87ee726d1128fb9dd216d;hp=3c21504e6a7e30471c91866bd50774cd447d6f60;hb=12d4e343f31707c899e6e4daa10c68b172433cff;hpb=d5cfea2a21712b316a4b42b19bbbbc0d76b7b8d4 diff --git a/cinelerra-5.1/cinelerra/module.C b/cinelerra-5.1/cinelerra/module.C index 3c21504e..01f3095f 100644 --- a/cinelerra-5.1/cinelerra/module.C +++ b/cinelerra-5.1/cinelerra/module.C @@ -50,7 +50,7 @@ Module::Module(RenderEngine *renderengine, this->commonrender = commonrender; this->plugin_array = plugin_array; this->track = track; - transition = 0; + transition_id = -1; transition_server = 0; attachments = 0; total_attachments = 0; @@ -283,8 +283,9 @@ int Module::test_plugins() void Module::update_transition(int64_t current_position, int direction) { - transition = track->get_current_transition(current_position, + Plugin *transition = track->get_current_transition(current_position, direction, 0, 0); + transition_id = transition ? transition->orig_id : -1; // For situations where we had a transition but not anymore, // keep the server open. @@ -295,13 +296,14 @@ void Module::update_transition(int64_t current_position, // If the current transition differs from the previous transition, delete the // server. if (transition && transition_server) { - if (strcmp(transition->title, transition_server->plugin->title)) { + Plugin *plugin = transition->edl->tracks->plugin_exists(transition_server->plugin_id); + if (!plugin || strcmp(transition->title, plugin->title)) { transition_server->close_plugin(); delete transition_server; transition_server = 0; } else { - transition_server->plugin = transition; + transition_server->plugin_id = transition_id; } }