Example #1
0
void
port_control_set_locked (port_controls_t *port_controls, gboolean locked)
{
  GSList *list;
  plugin_slot_t *plugin_slot;
#ifdef HAVE_ALSA
  midi_control_t *midi_ctrl;
#endif
  
  plugin_slot = port_controls->plugin_slot;
  
  port_controls->locked = locked;
  settings_set_lock (plugin_slot->settings, port_controls->control_index, locked);

#ifdef HAVE_ALSA  
  for (list = plugin_slot->midi_controls; list; list = g_slist_next (list))
    {
      midi_ctrl = (midi_control_t *) list->data;
      
      if (midi_ctrl->ctrl_type == LADSPA_CONTROL &&
          midi_ctrl->control.ladspa.control == port_controls->control_index)
        midi_control_set_locked (midi_ctrl, locked);
    }
#endif
  plugin_slot_show_controls (port_controls->plugin_slot, port_controls->lock_copy);
}
Example #2
0
settings_t *
settings_dup     (settings_t * other)
{
    settings_t * settings;
    plugin_desc_t * desc;
    unsigned long channel;

    settings = g_malloc (sizeof (settings_t));

    settings->sample_rate     = other->sample_rate;
    settings->desc            = other->desc;
    settings->copies          = settings_get_copies (other);
    settings->channels        = settings_get_channels (other);
    settings->wet_dry_enabled = settings_get_wet_dry_enabled (other);
    settings->wet_dry_locked  = settings_get_wet_dry_locked (other);
    settings->lock_all        = settings_get_lock_all (other);
    settings->enabled         = settings_get_enabled (other);
    settings->locks           = NULL;
    settings->control_values  = NULL;

    desc = other->desc;

    if (desc->control_port_count > 0)
    {
        guint copy;
        unsigned long control;

        settings->locks = g_malloc (sizeof (gboolean) * desc->control_port_count);
        for (control = 0; control < desc->control_port_count; control++)
            settings_set_lock (settings, control, settings_get_lock (other, control));

        settings->control_values = g_malloc (sizeof (LADSPA_Data *) * settings->copies);
        for (copy = 0; copy < settings->copies; copy++)
        {
            settings->control_values[copy] = g_malloc (sizeof (LADSPA_Data) * desc->control_port_count);

            for (control = 0; control < desc->control_port_count; control++)
            {
                settings->control_values[copy][control] = settings_get_control_value (other, copy, control);
            }
        }
    }

    settings->wet_dry_values = g_malloc (sizeof (LADSPA_Data) * settings->channels);
    for (channel = 0; channel < settings->channels; channel++)
        settings->wet_dry_values[channel] = settings_get_wet_dry_value (other, channel);

    return settings;
}
Example #3
0
static void
saved_rack_parse_plugin (jack_rack_t * jack_rack, saved_rack_t * saved_rack, saved_plugin_t * saved_plugin,
                         const char * filename, xmlNodePtr plugin)
{
  plugin_desc_t * desc;
  settings_t * settings = NULL;
  xmlNodePtr node;
  xmlNodePtr sub_node;
  xmlChar *content;
  unsigned long num;
  unsigned long control = 0;
#ifdef WIN32
  xmlFreeFunc xmlFree = NULL;
  xmlMemGet( &xmlFree, NULL, NULL, NULL);
#endif

  for (node = plugin->children; node; node = node->next)
    {
      if (xmlStrcmp (node->name, _x("id")) == 0)
        {
          content = xmlNodeGetContent (node);
          num = strtoul (_s(content), NULL, 10);
          xmlFree (content);

          desc = plugin_mgr_get_any_desc (jack_rack->plugin_mgr, num);
          if (!desc)
            {
              mlt_log_verbose( NULL, _("The file '%s' contains an unknown plugin with ID '%ld'; skipping\n"), filename, num);
              return;
            }
          
          settings = settings_new (desc, saved_rack->channels, saved_rack->sample_rate);
        }
      else if (xmlStrcmp (node->name, _x("enabled")) == 0)
        {
          content = xmlNodeGetContent (node);
          settings_set_enabled (settings, xmlStrcmp (content, _x("true")) == 0 ? TRUE : FALSE);
          xmlFree (content);
        }
      else if (xmlStrcmp (node->name, _x("wet_dry_enabled")) == 0)
        {
          content = xmlNodeGetContent (node);
          settings_set_wet_dry_enabled (settings, xmlStrcmp (content, _x("true")) == 0 ? TRUE : FALSE);
          xmlFree (content);
        }
      else if (xmlStrcmp (node->name, _x("wet_dry_locked")) == 0)
        {
          content = xmlNodeGetContent (node);
          settings_set_wet_dry_locked (settings, xmlStrcmp (content, _x("true")) == 0 ? TRUE : FALSE);
          xmlFree (content);
        }
      else if (xmlStrcmp (node->name, _x("wet_dry_values")) == 0)
        {
          unsigned long channel = 0;
          
          for (sub_node = node->children; sub_node; sub_node = sub_node->next)
            {
              if (xmlStrcmp (sub_node->name, _x("value")) == 0)
                {
                  content = xmlNodeGetContent (sub_node);
                  settings_set_wet_dry_value (settings, channel, strtod (_s(content), NULL));
                  xmlFree (content);
                  
                  channel++;
                }
            }
        }
      else if (xmlStrcmp (node->name, _x("lockall")) == 0)
        {
          content = xmlNodeGetContent (node);
          settings_set_lock_all (settings, xmlStrcmp (content, _x("true")) == 0 ? TRUE : FALSE);
          xmlFree (content);
        }
      else if (xmlStrcmp (node->name, _x("controlrow")) == 0)
        {
          gint copy = 0;

          for (sub_node = node->children; sub_node; sub_node = sub_node->next)
            {
              if (xmlStrcmp (sub_node->name, _x("lock")) == 0)
                {
                  content = xmlNodeGetContent (sub_node);
                  settings_set_lock (settings, control, xmlStrcmp (content, _x("true")) == 0 ? TRUE : FALSE);
                  xmlFree (content);
                }
              else if (xmlStrcmp (sub_node->name, _x("value")) == 0)
                {
                  content = xmlNodeGetContent (sub_node);
                  settings_set_control_value (settings, copy, control, strtod (_s(content), NULL));
                  xmlFree (content);
                  copy++;
                }
            }
          
          control++;
        }
    }
  
  if (settings)
    saved_plugin->settings = settings;
}