From patchwork Sun Dec 23 20:52:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Wm9sdMOhbiBLxZF2w6Fnw7M=?= X-Patchwork-Id: 10741859 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 79E236C5 for ; Sun, 23 Dec 2018 21:19:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6785D286E6 for ; Sun, 23 Dec 2018 21:19:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5798928783; Sun, 23 Dec 2018 21:19:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 9ACC5286E6 for ; Sun, 23 Dec 2018 21:19:41 +0000 (UTC) Received: from localhost ([127.0.0.1]:59873 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbB9v-0006Zf-8A for patchwork-qemu-devel@patchwork.kernel.org; Sun, 23 Dec 2018 16:19:39 -0500 Received: from eggs.gnu.org ([208.118.235.92]:52359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbAk0-0007tg-QP for qemu-devel@nongnu.org; Sun, 23 Dec 2018 15:52:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gbAjz-0002bb-Oy for qemu-devel@nongnu.org; Sun, 23 Dec 2018 15:52:52 -0500 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:45127) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gbAjz-0002Ya-Gy for qemu-devel@nongnu.org; Sun, 23 Dec 2018 15:52:51 -0500 Received: by mail-wr1-x442.google.com with SMTP id t6so10090887wrr.12 for ; Sun, 23 Dec 2018 12:52:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YPuNGIRKm2jxLFFPWotlUp4dlUU0csmb5qDX1UMMr1I=; b=SrUHEwVJ8efc6/fVH62qEE8UD0O9OSwS1bXcfNgsYX82Ea+3RfZhdEInQB0qH35Rqi MJI+yGMmAIjdX0ej0WzuUWGZogP7MrDAnSZofEg24yZ0ko5Ees9/M9pwfmIc/im4JEBq 6IT+EXECvRE0+r+PJHxPVNPU0I/cgSwZ5Bz2AalZRU5h5ezGBKtrTrULPjdi3WPiaHs1 XB8vwG4dR0Np0fSYVwUB24fwRJd5au1XLdOWFhrlrboHiULywfVAWlJkTe7RK/V7FII7 6CqWcfy6au+nCnS7NRav0ecFj1G/dYy1KFhnOLfLXMM9Vi8+qePVmhCWvLBZvPiew4i9 7RBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YPuNGIRKm2jxLFFPWotlUp4dlUU0csmb5qDX1UMMr1I=; b=idSL3Rn7E+KUMv7F/ob/TGq/jczMeDUS/lHu8tDr36QQ/LSJM7cgLDgjjN9R2y1AEO F2TJnPWqArmTu5R0uzHthQA9Ul0hvb7hRAoKPKWPO1s6gEUtoHpluvmZvNNz9vNjWhWh 5ojSRddZTg3ebZtlN2qNJMlu27Em3oUp2o8cX7cOY1a/krKhcEEIe/me5Qrhzj+jFBz6 kU9GCq+kCYh36aFBdrHbnwVT0bAOfW5hKAe6fU+XWi5ihY7oQIkkBgntLP6gpcfLg/O0 RhPBF3NM1l0ujC5Jgh7mPcLKGAFpk00yzp7iJ3JRDVd87ieApgYVdq+Sg1r8+iWplJUo Ibgg== X-Gm-Message-State: AJcUukfMkyglFn9yhpIb5Fi8XAVx/pYru/MLHWACIm4CABvRTzaOkH5R cBeir39/9G63hpVEd1r7XdUSGgSZgyI= X-Google-Smtp-Source: ALg8bN4CzSSXGCzZmc0O76C/KkpUdRGTRCXR7J4/KHTM4haO0ozlommwgHoLjrKKwqnaqEF5Ffaalg== X-Received: by 2002:adf:93e2:: with SMTP id 89mr10073781wrp.129.1545598370033; Sun, 23 Dec 2018 12:52:50 -0800 (PST) Received: from nullptr.home.dirty-ice.org (2a01-036c-0113-24a3-0000-0000-0000-0005.pool6.digikabel.hu. [2a01:36c:113:24a3::5]) by smtp.gmail.com with ESMTPSA id g198sm25456920wmd.23.2018.12.23.12.52.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 23 Dec 2018 12:52:49 -0800 (PST) From: " =?utf-8?b?S8WRdsOhZ8OzLCBab2x0w6Fu?= " X-Google-Original-From: =?utf-8?b?S8WRdsOhZ8OzLCBab2x0w6Fu?= To: qemu-devel@nongnu.org Date: Sun, 23 Dec 2018 21:52:00 +0100 Message-Id: X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v2 24/52] audio: do not run each backend in audio_run X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP audio_run is called manually by alsa and oss backends when polling. In this case only the requesting backend should be run, not all of them. Signed-off-by: Kővágó, Zoltán --- audio/alsaaudio.c | 7 +++++-- audio/audio.c | 14 +++++--------- audio/audio_int.h | 2 +- audio/ossaudio.c | 12 ++++++------ 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c index d4bb540cb9..ffc6220d7a 100644 --- a/audio/alsaaudio.c +++ b/audio/alsaaudio.c @@ -39,6 +39,7 @@ struct pollhlp { struct pollfd *pfds; int count; int mask; + AudioState *s; }; typedef struct ALSAVoiceOut { @@ -199,11 +200,11 @@ static void alsa_poll_handler (void *opaque) break; case SND_PCM_STATE_PREPARED: - audio_run ("alsa run (prepared)"); + audio_run(hlp->s, "alsa run (prepared)"); break; case SND_PCM_STATE_RUNNING: - audio_run ("alsa run (running)"); + audio_run (hlp->s, "alsa run (running)"); break; default: @@ -757,6 +758,7 @@ static int alsa_init_out(HWVoiceOut *hw, struct audsettings *as, return -1; } + alsa->pollhlp.s = hw->s; alsa->handle = handle; alsa->dev = dev; return 0; @@ -858,6 +860,7 @@ static int alsa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) return -1; } + alsa->pollhlp.s = hw->s; alsa->handle = handle; alsa->dev = dev; return 0; diff --git a/audio/audio.c b/audio/audio.c index a32b86a813..4779061859 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -839,7 +839,7 @@ static void audio_timer (void *opaque) } s->timer_last = now; - audio_run("timer"); + audio_run(s, "timer"); audio_reset_timer(s); } @@ -1241,15 +1241,11 @@ static void audio_run_capture (AudioState *s) } } -void audio_run (const char *msg) +void audio_run(AudioState *s, const char *msg) { - AudioState *s; - - QTAILQ_FOREACH(s, &audio_states, list) { - audio_run_out (s); - audio_run_in (s); - audio_run_capture (s); - } + audio_run_out(s); + audio_run_in(s); + audio_run_capture(s); #ifdef DEBUG_POLL { diff --git a/audio/audio_int.h b/audio/audio_int.h index 9d9db8c270..9950cea869 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -220,7 +220,7 @@ int audio_pcm_hw_clip_out (HWVoiceOut *hw, void *pcm_buf, int audio_bug (const char *funcname, int cond); void *audio_calloc (const char *funcname, int nmemb, size_t size); -void audio_run (const char *msg); +void audio_run(AudioState *s, const char *msg); #define VOICE_ENABLE 1 #define VOICE_DISABLE 2 diff --git a/audio/ossaudio.c b/audio/ossaudio.c index ae06e58d13..fde62c8ce2 100644 --- a/audio/ossaudio.c +++ b/audio/ossaudio.c @@ -110,28 +110,28 @@ static void oss_anal_close (int *fdp) static void oss_helper_poll_out (void *opaque) { - (void) opaque; - audio_run ("oss_poll_out"); + AudioState *s = opaque; + audio_run(s, "oss_poll_out"); } static void oss_helper_poll_in (void *opaque) { - (void) opaque; - audio_run ("oss_poll_in"); + AudioState *s = opaque; + audio_run(s, "oss_poll_in"); } static void oss_poll_out (HWVoiceOut *hw) { OSSVoiceOut *oss = (OSSVoiceOut *) hw; - qemu_set_fd_handler (oss->fd, NULL, oss_helper_poll_out, NULL); + qemu_set_fd_handler(oss->fd, NULL, oss_helper_poll_out, hw->s); } static void oss_poll_in (HWVoiceIn *hw) { OSSVoiceIn *oss = (OSSVoiceIn *) hw; - qemu_set_fd_handler (oss->fd, oss_helper_poll_in, NULL, NULL); + qemu_set_fd_handler(oss->fd, oss_helper_poll_in, NULL, hw->s); } static int oss_write (SWVoiceOut *sw, void *buf, int len)