diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-03-27 18:38:02 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-03-27 18:38:02 +0000 |
commit | 75119176e300f559e1a080b5127b85dff4947d36 (patch) | |
tree | 848e8dd29cf07f664314a21d82a87525d505649f /libs | |
parent | 95114e89ad81e83f56fa5449bc8ead2f7f45eca1 (diff) |
some totally untested FST/VST changes
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4916 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/vst_plugin.cc | 10 | ||||
-rw-r--r-- | libs/fst/fst.h | 1 | ||||
-rw-r--r-- | libs/fst/vstwin.c | 7 |
3 files changed, 17 insertions, 1 deletions
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index e4e623c356..eb067d6c5a 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -222,7 +222,11 @@ VSTPlugin::set_state(const XMLNode& node) } } + _fst->current_program = _plugin->dispatcher (_plugin, 3, /* effGetProgram */, 0, NULL, NULL, 0); + cerr << name() << ": current program is " << _fst->current_program << endl; + return 0; + } else if ((child = find_named_node (node, X_("parameters"))) != 0) { XMLPropertyList::const_iterator i; @@ -238,9 +242,15 @@ VSTPlugin::set_state(const XMLNode& node) _plugin->setParameter (_plugin, param, val); } + /* program number is not knowable */ + + _fst->current_program = -1; + return 0; } + + return -1; } diff --git a/libs/fst/fst.h b/libs/fst/fst.h index 7e2cfec08b..1cecc71d52 100644 --- a/libs/fst/fst.h +++ b/libs/fst/fst.h @@ -82,6 +82,7 @@ struct _FST int destroy; int want_program; + int current_program; float *want_params; float *set_params; diff --git a/libs/fst/vstwin.c b/libs/fst/vstwin.c index 151eedcbdb..82c4d81d68 100644 --- a/libs/fst/vstwin.c +++ b/libs/fst/vstwin.c @@ -71,6 +71,7 @@ fst_new () pthread_cond_init (&fst->window_status_change, NULL); pthread_cond_init (&fst->plugin_dispatcher_called, NULL); fst->want_program = -1; + fst->current_program = -1; return fst; } @@ -165,7 +166,11 @@ again: } if (fst->want_program != -1 ) { - fst->plugin->dispatcher (fst->plugin, effSetProgram, 0, fst->want_program, NULL, 0); + fst->plugin->dispatcher (fst->plugin, 67 /* effBeginSetProgram */, 0, 0, NULL, 0); + fst->plugin->dispatcher (fst->plugin, effSetProgram, 0, fst->want_program, NULL, 0)) + fst->plugin->dispatcher (fst->plugin, 68 /* effEndSetProgram */, 0, 0, NULL, 0); + /* assume it worked */ + fst->current_program = fst->want_program; fst->want_program = -1; } |