#include "clip.h"
#include "bchash.h"
+#include "filesystem.h"
#include "filexml.h"
#include "language.h"
+#include "mwindow.h"
#include "pluginaclientlad.h"
#include "pluginserver.h"
#include "samples.h"
// Need PluginServer to do this.
void PluginAClientConfig::copy_from(PluginAClientConfig &that)
{
- int n = bmin(total_ports, that.total_ports);
- for( int i=0; i<n; ++i ) {
+ if( total_ports != that.total_ports ) {
+ delete_objects();
+ total_ports = that.total_ports;
+ port_data = new LADSPA_Data[total_ports];
+ port_type = new int[total_ports];
+ }
+ for( int i=0; i<total_ports; ++i ) {
port_type[i] = that.port_type[i];
port_data[i] = that.port_data[i];
}
total_outbuffers = 0;
buffer_allocation = 0;
lad_instance = 0;
+ snprintf(title, sizeof(title), "L_%s", server->lad_descriptor->Name);
}
PluginAClientLAD::~PluginAClientLAD()
const char* PluginAClientLAD::plugin_title()
{
- return (char*)server->lad_descriptor->Name;
+ return title;
}
int PluginAClientLAD::uses_gui()
void PluginAClientLAD::save_data(KeyFrame *keyframe)
{
- FileXML output;
- char string[BCTEXTLEN];
if( !config.port_data ) config.initialize(server);
-
+ FileXML output;
// cause data to be stored directly in text
- output.set_shared_output(keyframe->get_data(), MESSAGESIZE);
+ output.set_shared_output(keyframe->xbuf);
+ char string[BCTEXTLEN];
output.tag.set_title(lad_to_upper(string, plugin_title()));
const LADSPA_Descriptor *lad_desc = server->lad_descriptor;
void PluginAClientLAD::read_data(KeyFrame *keyframe)
{
- FileXML input;
- char string[BCTEXTLEN];
-
- input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data()));
if( !config.port_data ) config.initialize(server);
+ FileXML input;
+ input.set_shared_input(keyframe->xbuf);
while(! input.read_tag() ) {
//printf("PluginAClientLAD::read_data %s\n", input.tag.get_title());
+ char string[BCTEXTLEN];
if(! input.tag.title_is(lad_to_upper(string, plugin_title())) ) continue;
const LADSPA_Descriptor *lad_desc = server->lad_descriptor;
const LADSPA_PortDescriptor *port_desc = lad_desc->PortDescriptors;
void PluginAClientLAD::delete_buffers()
{
- if(in_buffers)
- for(int i = 0; i < total_inbuffers; i++) delete [] in_buffers[i];
- if(out_buffers)
- for(int i = 0; i < total_outbuffers; i++) delete [] out_buffers[i];
- in_buffers = 0;
- out_buffers = 0;
+ if( in_buffers ) {
+ for( int i=0; i<total_inbuffers; ++i ) delete [] in_buffers[i];
+ delete [] in_buffers; in_buffers = 0;
+ }
+ if( out_buffers ) {
+ for( int i=0; i<total_outbuffers; ++i ) delete [] out_buffers[i];
+ delete [] out_buffers; out_buffers = 0;
+ }
total_inbuffers = 0;
total_outbuffers = 0;
buffer_allocation = 0;
return size;
}
-
+int MWindow::init_ladspa_index(MWindow *mwindow, Preferences *preferences,
+ FILE *fp, const char *plugin_dir)
+{
+ char plugin_path[BCTEXTLEN], *path = FileSystem::basepath(plugin_dir);
+ strcpy(plugin_path, path); delete [] path;
+ printf("init ladspa index: %s\n", plugin_dir);
+ fprintf(fp, "%d\n", PLUGIN_FILE_VERSION);
+ fprintf(fp, "%s\n", plugin_dir);
+ init_plugin_index(mwindow, preferences, fp, plugin_path);
+ return 0;
+}