some totally untested FST/VST changes

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@4916 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-03-27 18:38:02 +00:00
parent 95114e89ad
commit 75119176e3
4 changed files with 23 additions and 2 deletions

View File

@ -167,7 +167,12 @@ VSTPluginUI::create_preset_store ()
CellRenderer* renderer = manage (new CellRendererText());
vst_preset_combo.pack_start (*renderer, true);
vst_preset_combo.add_attribute (*renderer, "text", 0);
vst_preset_combo.set_active (0);
if (vst->fst()->current_program != -1) {
vst_preset_combo.set_active (vst->fst()->current_program);
} else {
vst_preset_combo.set_active (0);
}
}
typedef int (*error_handler_t)( Display *, XErrorEvent *);

View File

@ -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;
}

View File

@ -82,6 +82,7 @@ struct _FST
int destroy;
int want_program;
int current_program;
float *want_params;
float *set_params;

View File

@ -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;
}