change to id based refs for plugins, save plugin on/off in edit drag/drop, fix transi...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / module.C
index 3c21504e6a7e30471c91866bd50774cd447d6f60..01f3095f1c69d2e8d0b87ee726d1128fb9dd216d 100644 (file)
@@ -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;
                }
        }