From patchwork Mon Mar 17 18:40:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthias Larisch X-Patchwork-Id: 3845931 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id CC42DBF540 for ; Mon, 17 Mar 2014 18:40:31 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F27EB20218 for ; Mon, 17 Mar 2014 18:40:30 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 248B320165 for ; Mon, 17 Mar 2014 18:40:29 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 38B54261A68; Mon, 17 Mar 2014 19:40:27 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id 0886D261A48; Mon, 17 Mar 2014 19:40:17 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id D4CA1261A57; Mon, 17 Mar 2014 19:40:13 +0100 (CET) Received: from mail.mlh-server.de (mail.mlh-server.de [5.9.104.232]) by alsa0.perex.cz (Postfix) with ESMTP id D46B7261A48 for ; Mon, 17 Mar 2014 19:40:02 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail.mlh-server.de (Postfix) with ESMTP id 852F73074D7 for ; Mon, 17 Mar 2014 19:40:02 +0100 (CET) Received: from mail.mlh-server.de ([127.0.0.1]) by localhost (mail.mlh-server.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Am9FTZmWTRlZ for ; Mon, 17 Mar 2014 19:40:02 +0100 (CET) Received: from purefruit.fritz.box (dslb-092-076-230-060.pools.arcor-ip.net [92.76.230.60]) (Authenticated sender: mail@matthias-larisch.de) by mail.mlh-server.de (Postfix) with ESMTPSA id 3A7E4300137 for ; Mon, 17 Mar 2014 19:40:02 +0100 (CET) Date: Mon, 17 Mar 2014 19:40:00 +0100 From: Matthias Larisch To: alsa-devel@alsa-project.org Message-ID: <20140317194000.5fa76393@purefruit.fritz.box> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.22; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Subject: [alsa-devel] [RFC PATCH] alsa-lib: Call LADSPA activate after all ports are setup X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP Hey there, I notices mainly swh-plugins (like butterworth_1902) to crash on seek with mplayer or mpd. This is due to their behaviour on relying on the activate call after the control inputs are set. This is not right by LADSPA API description but I see no point in NOT calling activate as late as possible in alsa-lib. Comments? Regards, Matthias From f7f5d920c845fc54ffef208f68f568b06e8fadd1 Mon Sep 17 00:00:00 2001 From: Matthias Larisch Date: Mon, 17 Mar 2014 19:37:01 +0100 Subject: [PATCH] call ladspa activate as late as possible to work around wrong plugin behaviour --- 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)