]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: ladspa: Delay LADSPA plugin activate call
authorMatthias Larisch <mail@matthias-larisch.de>
Thu, 27 Mar 2014 18:05:10 +0000 (19:05 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 3 Apr 2014 10:02:03 +0000 (12:02 +0200)
Some LADSPA Plugins rely on connected control ports on activate call.
While this is not okay by spec, the spec also encourages the activate
call happening as late as possible.

Signed-off-by: Matthias Larisch <mail@matthias-larisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_ladspa.c

index 9ce5242e235955c70593cc7baf870f63db39e7b2..7d1e3df878b05d6096d1c5a2fd8d4dfacb16d123 100644 (file)
@@ -645,8 +645,6 @@ static int snd_pcm_ladspa_allocate_instances(snd_pcm_t *pcm, snd_pcm_ladspa_t *l
                                return -EINVAL;
                        }
                        list_add_tail(&instance->list, &plugin->instances);
-                       if (plugin->desc->activate)
-                               plugin->desc->activate(instance->handle);
                        if (plugin->policy == SND_PCM_LADSPA_POLICY_DUPLICATE) {
                                err = snd_pcm_ladspa_connect_plugin_duplicate(plugin, &plugin->input, &plugin->output, instance, idx);
                                if (err < 0) {
@@ -664,6 +662,8 @@ static int snd_pcm_ladspa_allocate_instances(snd_pcm_t *pcm, snd_pcm_ladspa_t *l
                        assert(err >= 0);
                        err = snd_pcm_ladspa_connect_controls(plugin, &plugin->output, instance);
                        assert(err >= 0);
+                       if (plugin->desc->activate)
+                               plugin->desc->activate(instance->handle);
                }
                err = snd_pcm_ladspa_check_connect(plugin, &plugin->input, &instance->input, depth);
                if (err < 0)