add Autosave continuous backups by Andras Reuss and Andrew-R
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / keyframegui.C
index f590571d8be69916cd24958de728134fd6c8dc9a..fb7de36f93d32e6f118e52313b2b430235a21c1a 100644 (file)
@@ -208,7 +208,9 @@ void KeyFrameThread::handle_done_event(int result)
 {
 // Apply the preset
        if( !result ) {
+               get_gui()->lock_window("KeyFrameThread::handle_done_event");
                apply_preset(preset_text, is_factory);
+               get_gui()->unlock_window();
        }
 }
 
@@ -361,9 +363,16 @@ void KeyFrameThread::apply_preset(const char *title, int is_factory)
                mwindow->undo->update_undo_before();
 
 #ifdef USE_KEYFRAME_SPANNING
-               KeyFrame keyframe;
-               presets_db->load_preset(plugin_title, title, &keyframe, is_factory);
-               plugin->keyframes->update_parameter(&keyframe);
+               ArrayList<PluginServer*> &plugindb = *mwindow->plugindb;
+               int k = plugindb.size();
+               while( --k>=0 && strcmp(plugindb[k]->title, plugin->title) );
+               if( k >= 0 ) {
+                       PluginServer server(*plugindb[k]);
+                       server.open_plugin(0, mwindow->preferences, mwindow->edl, plugin);
+                       KeyFrame keyframe(mwindow->edl, plugin->keyframes);
+                       presets_db->load_preset(plugin_title, title, &keyframe, is_factory);
+                       server.apply_keyframe(plugin, &keyframe);
+               }
 #else
                KeyFrame *keyframe = plugin->get_keyframe();
                presets_db->load_preset(plugin_title, title, keyframe, is_factory);