Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
void
lff_destroy (lff_t * lff)
{
  lff_free (lff);
  g_free (lff);
}
Ejemplo n.º 3
0
Archivo: plugin.c Proyecto: vpinon/mlt
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);
}