diff mbox

src/pcm/pcm_ladspa.c: Delay LADSPA plugin activate call

Message ID 20140327190510.5cf481d0@purefruit (mailing list archive)
State Accepted
Headers show

Commit Message

Matthias Larisch March 27, 2014, 6:05 p.m. UTC
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>
---
 src/pcm/pcm_ladspa.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Takashi Iwai April 3, 2014, 10:02 a.m. UTC | #1
At Thu, 27 Mar 2014 19:05:10 +0100,
Matthias Larisch wrote:
> 
> 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>

Thanks, applied.


Takashi

> ---
>  src/pcm/pcm_ladspa.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c
> index 9ce5242..7d1e3df 100644
> --- a/src/pcm/pcm_ladspa.c
> +++ b/src/pcm/pcm_ladspa.c
> @@ -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)
> -- 
> 1.9.1
> [1.2 signature.asc <application/pgp-signature (7bit)>]
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
diff mbox

Patch

diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c
index 9ce5242..7d1e3df 100644
--- a/src/pcm/pcm_ladspa.c
+++ b/src/pcm/pcm_ladspa.c
@@ -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)