void plugin_destroy (plugin_t * plugin, ui_t *ui) { unsigned long i, j; int err; /* destroy holders */ for (i = 0; i < plugin->copies; i++) { if (plugin->descriptor->deactivate) plugin->descriptor->deactivate (plugin->holders[i].instance); /* if (plugin->descriptor->cleanup) plugin->descriptor->cleanup (plugin->holders[i].instance); */ if (plugin->desc->control_port_count > 0) { for (j = 0; j < plugin->desc->control_port_count; j++) { lff_free (plugin->holders[i].ui_control_fifos + j); #ifdef HAVE_ALSA lff_free (plugin->holders[i].midi_control_fifos + j); #endif } g_free (plugin->holders[i].ui_control_fifos); #ifdef HAVE_ALSA g_free (plugin->holders[i].midi_control_fifos); #endif g_free (plugin->holders[i].control_memory); } /* aux ports */ if (plugin->desc->aux_channels > 0) { for (j = 0; j < plugin->desc->aux_channels; j++) { err = jack_port_unregister (ui->procinfo->jack_client, plugin->holders[i].aux_ports[j]); if (err) fprintf (stderr, _("%s: could not unregister jack port\n"), __FUNCTION__); } g_free (plugin->holders[i].aux_ports); } } g_free (plugin->holders); for (i = 0; i < ui->jack_rack->channels; i++) { g_free (plugin->audio_output_memory[i]); lff_free (plugin->wet_dry_fifos + i); #ifdef HAVE_ALSA lff_free (plugin->wet_dry_midi_fifos + i); #endif } g_free (plugin->audio_output_memory); g_free (plugin->wet_dry_fifos); #ifdef HAVE_ALSA g_free (plugin->wet_dry_midi_fifos); #endif g_free (plugin->wet_dry_values); err = dlclose (plugin->dl_handle); if (err) { fprintf (stderr, _("%s: error closing shared object '%s': %s\n"), __FUNCTION__, plugin->desc->object_file, dlerror ()); } g_free (plugin); }
void lff_destroy (lff_t * lff) { lff_free (lff); g_free (lff); }
void plugin_destroy (plugin_t * plugin) { unsigned long i, j; int err; /* destroy holders */ for (i = 0; i < plugin->copies; i++) { if (plugin->descriptor->deactivate) plugin->descriptor->deactivate (plugin->holders[i].instance); /* if (plugin->descriptor->cleanup) plugin->descriptor->cleanup (plugin->holders[i].instance); */ if (plugin->desc->control_port_count > 0) { for (j = 0; j < plugin->desc->control_port_count; j++) { lff_free (plugin->holders[i].ui_control_fifos + j); } g_free (plugin->holders[i].ui_control_fifos); g_free (plugin->holders[i].control_memory); } if (plugin->desc->status_port_count > 0) { g_free (plugin->holders[i].status_memory); } /* aux ports */ if (plugin->jack_rack->procinfo->jack_client && plugin->desc->aux_channels > 0) { for (j = 0; j < plugin->desc->aux_channels; j++) { err = jack_port_unregister (plugin->jack_rack->procinfo->jack_client, plugin->holders[i].aux_ports[j]); if (err) mlt_log_warning( NULL, "%s: could not unregister jack port\n", __FUNCTION__); } g_free (plugin->holders[i].aux_ports); } } g_free (plugin->holders); for (i = 0; i < plugin->jack_rack->channels; i++) { g_free (plugin->audio_output_memory[i]); lff_free (plugin->wet_dry_fifos + i); } g_free (plugin->audio_output_memory); g_free (plugin->wet_dry_fifos); g_free (plugin->wet_dry_values); err = dlclose (plugin->dl_handle); if (err) { mlt_log_warning( NULL, "%s: error closing shared object '%s': %s\n", __FUNCTION__, plugin->desc->object_file, dlerror ()); } g_free (plugin); }