diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index c9aa5b1807..3228761cc3 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -40,6 +40,7 @@ #include "ardour/session.h" #include "ardour/filesystem_paths.h" #include "ardour/audio_buffer.h" +#include "ardour/plugin_insert.h" #include "pbd/i18n.h" @@ -464,7 +465,13 @@ VSTPlugin::load_plugin_preset (PresetRecord r) sscanf (r.uri.c_str(), "VST:%d:%d", &id, &index); #endif _state->want_program = index; - LoadPresetProgram (); /* EMIT SIGNAL */ /* used for macvst */ + if (!has_editor () || 0 == plugin_insert ()->window_proxy ()) { + vststate_maybe_set_program (_state); + _state->want_chunk = 0; + _state->want_program = -1; + } else { + LoadPresetProgram (); /* EMIT SIGNAL */ /* used for macvst */ + } return true; } @@ -506,7 +513,13 @@ VSTPlugin::load_user_preset (PresetRecord r) _state->wanted_chunk = raw_data; _state->wanted_chunk_size = size; _state->want_chunk = 1; - LoadPresetProgram (); /* EMIT SIGNAL */ /* used for macvst */ + if (!has_editor () || 0 == plugin_insert ()->window_proxy ()) { + vststate_maybe_set_program (_state); + _state->want_chunk = 0; + _state->want_program = -1; + } else { + LoadPresetProgram (); /* EMIT SIGNAL */ /* used for macvst */ + } return true; } }