From: "Kővágó Zoltán" <dirty.ice.hu@gmail.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>
Cc: QEMU <qemu-devel@nongnu.org>, Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 18/25] audio: do not run each backend in audio_run
Date: Fri, 21 Aug 2015 14:59:34 +0200 [thread overview]
Message-ID: <55D720B6.7080808@gmail.com> (raw)
In-Reply-To: <CAJ+F1C+F0db+xJGr_E3iqF5xGtgqziwNWNy8e5ZJ6Owa8=Swbg@mail.gmail.com>
Hi
2015-08-20 22:49 keltezéssel, Marc-André Lureau írta:
> Hi
>
> On Thu, Aug 6, 2015 at 8:28 PM, Kővágó, Zoltán <dirty.ice.hu@gmail.com> wrote:
>> 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 <DirtY.iCE.hu@gmail.com>
>> ---
>> audio/alsaaudio.c | 7 +++++--
>> audio/audio.c | 17 +++++++----------
>> audio/audio_int.h | 2 +-
>> audio/ossaudio.c | 12 ++++++------
>> 4 files changed, 19 insertions(+), 19 deletions(-)
>>
>> diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c
>> index cfe4aec..0750d0d 100644
>> --- a/audio/alsaaudio.c
>> +++ b/audio/alsaaudio.c
>> @@ -40,6 +40,7 @@ struct pollhlp {
>> struct pollfd *pfds;
>> int count;
>> int mask;
>> + AudioState *s;
>
> Instead of adding that pointer, you could lookup the hw->s using container_of()
I'm afraid that won't work. The pollhlp is used both inside ALSAVoiceIn
and ALSAVoiceOut, but they have a common callback.
>
>> };
>>
>> typedef struct ALSAVoiceOut {
>> @@ -200,11 +201,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:
>> @@ -758,6 +759,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;
>> @@ -859,6 +861,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 7468b94..e213deb 100644
>> --- a/audio/audio.c
>> +++ b/audio/audio.c
>> @@ -790,8 +790,9 @@ static void audio_reset_timer (AudioState *s)
>>
>> static void audio_timer (void *opaque)
>> {
>> - audio_run ("timer");
>> - audio_reset_timer (opaque);
>> + AudioState *s = opaque;
>> + audio_run(s, "timer");
>> + audio_reset_timer(s);
>> }
>>
>> /*
>> @@ -1194,15 +1195,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 1d81658..c52c656 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 a5e7f7c..9eae769 100644
>> --- a/audio/ossaudio.c
>> +++ b/audio/ossaudio.c
>> @@ -112,28 +112,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)
>> --
>> 2.4.5
>>
>>
>
> other than that,
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>
>
>
next prev parent reply other threads:[~2015-08-21 12:59 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-06 18:28 [Qemu-devel] [PATCH 00/25] audio: -audiodev option, multiple options Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 01/25] qapi: support implicit structs in OptsVisitor Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 02/25] qapi: convert NumaOptions into a flat union Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 03/25] net: remove NetLegacy struct Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 04/25] net: use Netdev instead of NetClientOptions in client init Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 05/25] qapi: change Netdev into a flat union Kővágó, Zoltán
2015-08-20 15:03 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 06/25] qapi: reorder NetdevBase and Netdev Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 07/25] qapi: qapi for audio backends Kővágó, Zoltán
2015-08-20 15:30 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 08/25] qapi: support nested structs in OptsVisitor Kővágó, Zoltán
2015-08-20 15:55 ` Marc-André Lureau
2015-08-20 21:21 ` Kővágó Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 09/25] audio: use qapi AudioFormat instead of audfmt_e Kővágó, Zoltán
2015-08-20 16:00 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 10/25] audio: -audiodev command line option Kővágó, Zoltán
2015-08-20 17:17 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 11/25] audio: reduce glob_audio_state usage Kővágó, Zoltán
2015-08-20 17:39 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 12/25] audio: basic support for multi backend audio Kővágó, Zoltán
2015-08-20 18:01 ` Marc-André Lureau
2015-08-21 12:23 ` Kővágó Zoltán
2015-08-21 14:24 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 13/25] audio: add audiodev properties to frontends Kővágó, Zoltán
2015-08-20 18:55 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 14/25] audio: audiodev= parameters no longer optional when -audiodev present Kővágó, Zoltán
2015-08-20 19:15 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 15/25] paaudio: do not create multiple connections to the same server Kővágó, Zoltán
2015-08-20 19:38 ` Marc-André Lureau
2015-08-21 12:41 ` Kővágó Zoltán
2015-08-21 14:36 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 16/25] paaudio: properly disconnect streams in fini_* Kővágó, Zoltán
2015-08-20 20:29 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 17/25] audio: remove gcc specific audio_MIN, audio_MAX Kővágó, Zoltán
2015-08-19 18:17 ` Gerd Hoffmann
2015-08-19 23:31 ` Peter Maydell
2015-08-20 20:36 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 18/25] audio: do not run each backend in audio_run Kővágó, Zoltán
2015-08-20 20:49 ` Marc-André Lureau
2015-08-21 12:59 ` Kővágó Zoltán [this message]
2015-08-06 18:28 ` [Qemu-devel] [PATCH 19/25] paaudio: fix playback glitches Kővágó, Zoltán
2015-08-20 22:08 ` Marc-André Lureau
2015-08-21 13:18 ` Kővágó Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 20/25] audio: remove mixeng specific code from backends Kővágó, Zoltán
2015-08-19 19:07 ` Gerd Hoffmann
2015-08-20 22:28 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 21/25] audio: common rate control code for timer based outputs Kővágó, Zoltán
2015-08-20 22:37 ` Marc-André Lureau
2015-08-21 13:34 ` Kővágó Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 22/25] audio: add mixeng option (documentation) Kővágó, Zoltán
2015-08-20 22:49 ` Marc-André Lureau
2015-08-21 13:46 ` Kővágó Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 23/25] audio: make mixeng optional Kővágó, Zoltán
2015-08-20 22:56 ` Marc-André Lureau
2015-08-06 18:28 ` [Qemu-devel] [PATCH 24/25] paaudio: get/put_buffer functions Kővágó, Zoltán
2015-08-06 18:28 ` [Qemu-devel] [PATCH 25/25] audio: split ctl_* functions into enable_* and volume_* Kővágó, Zoltán
2015-08-20 23:05 ` Marc-André Lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55D720B6.7080808@gmail.com \
--to=dirty.ice.hu@gmail.com \
--cc=kraxel@redhat.com \
--cc=marcandre.lureau@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.