this->commonrender = commonrender;
this->plugin_array = plugin_array;
this->track = track;
- transition = 0;
+ transition_id = -1;
transition_server = 0;
attachments = 0;
total_attachments = 0;
nested_edl = 0;
nested_renderengine = 0;
nested_command = 0;
- private_cache = 0;
cache = 0;
}
delete nested_renderengine;
delete nested_command;
- if(private_cache) delete cache;
}
void Module::create_objects()
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.
// 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;
}
}
if(renderengine) {
PluginServer *plugin_server = MWindow::scan_plugindb(transition->title,
track->data_type);
- transition_server = new PluginServer(*plugin_server);
- transition_server->open_plugin(0,
- get_preferences(),
- get_edl(),
- transition);
- transition_server->init_realtime(
- get_edl()->session->real_time_playback &&
- renderengine->command->realtime,
- 1,
- get_buffer_size());
+ if( plugin_server ) {
+ transition_server = new PluginServer(*plugin_server);
+ transition_server->open_plugin(0, get_preferences(), get_edl(),
+ transition);
+ transition_server->init_realtime(
+ get_edl()->session->real_time_playback &&
+ renderengine->command->realtime, 1, get_buffer_size());
+ }
}
else
if(plugin_array) {
PluginServer *plugin_server = MWindow::scan_plugindb(transition->title,
plugin_array->data_type);
- transition_server = new PluginServer(*plugin_server);
- transition_server->open_plugin(0,
- get_preferences(),
- get_edl(),
- transition);
- transition_server->init_realtime(
- 0,
- 1,
- get_buffer_size());
+ if( plugin_server ) {
+ transition_server = new PluginServer(*plugin_server);
+ transition_server->open_plugin(0, get_preferences(), get_edl(),
+ transition);
+ transition_server->init_realtime( 0, 1, get_buffer_size());
+ }
}
}
}