qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Gerd Hoffmann" <kraxel@redhat.com>,
	"Kővágó, Zoltán" <DirtY.iCE.hu@gmail.com>
Subject: [Qemu-devel] [PULL 05/20] audio: expose drv_opaque to init_out and init_in
Date: Mon, 15 Jun 2015 14:27:56 +0200	[thread overview]
Message-ID: <1434371291-6994-6-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1434371291-6994-1-git-send-email-kraxel@redhat.com>

From: Kővágó, Zoltán <dirty.ice.hu@gmail.com>

Currently the opaque pointer returned by audio_driver's init is only
exposed to the driver's fini, but not to audio_pcm_ops. This way if
someone wants to share a variable with the driver and the pcm, he must
use global variables. This patch fixes it by adding a third parameter to
audio_pcm_op's init_out and init_in.

Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 audio/alsaaudio.c       | 5 +++--
 audio/audio_int.h       | 4 ++--
 audio/audio_template.h  | 2 +-
 audio/coreaudio.c       | 3 ++-
 audio/dsound_template.h | 6 ++++--
 audio/noaudio.c         | 4 ++--
 audio/ossaudio.c        | 5 +++--
 audio/paaudio.c         | 5 +++--
 audio/sdlaudio.c        | 3 ++-
 audio/spiceaudio.c      | 5 +++--
 audio/wavaudio.c        | 5 ++---
 11 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c
index ed7655d..5a5bb14 100644
--- a/audio/alsaaudio.c
+++ b/audio/alsaaudio.c
@@ -807,7 +807,8 @@ static void alsa_fini_out (HWVoiceOut *hw)
     alsa->pcm_buf = NULL;
 }
 
-static int alsa_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int alsa_init_out(HWVoiceOut *hw, struct audsettings *as,
+                         void *drv_opaque)
 {
     ALSAVoiceOut *alsa = (ALSAVoiceOut *) hw;
     struct alsa_params_req req;
@@ -916,7 +917,7 @@ static int alsa_ctl_out (HWVoiceOut *hw, int cmd, ...)
     return -1;
 }
 
-static int alsa_init_in (HWVoiceIn *hw, struct audsettings *as)
+static int alsa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
 {
     ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw;
     struct alsa_params_req req;
diff --git a/audio/audio_int.h b/audio/audio_int.h
index 0eba44f..566df5e 100644
--- a/audio/audio_int.h
+++ b/audio/audio_int.h
@@ -156,13 +156,13 @@ struct audio_driver {
 };
 
 struct audio_pcm_ops {
-    int  (*init_out)(HWVoiceOut *hw, struct audsettings *as);
+    int  (*init_out)(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque);
     void (*fini_out)(HWVoiceOut *hw);
     int  (*run_out) (HWVoiceOut *hw, int live);
     int  (*write)   (SWVoiceOut *sw, void *buf, int size);
     int  (*ctl_out) (HWVoiceOut *hw, int cmd, ...);
 
-    int  (*init_in) (HWVoiceIn *hw, struct audsettings *as);
+    int  (*init_in) (HWVoiceIn *hw, struct audsettings *as, void *drv_opaque);
     void (*fini_in) (HWVoiceIn *hw);
     int  (*run_in)  (HWVoiceIn *hw);
     int  (*read)    (SWVoiceIn *sw, void *buf, int size);
diff --git a/audio/audio_template.h b/audio/audio_template.h
index 584e536..f716d97 100644
--- a/audio/audio_template.h
+++ b/audio/audio_template.h
@@ -262,7 +262,7 @@ static HW *glue (audio_pcm_hw_add_new_, TYPE) (struct audsettings *as)
 #ifdef DAC
     QLIST_INIT (&hw->cap_head);
 #endif
-    if (glue (hw->pcm_ops->init_, TYPE) (hw, as)) {
+    if (glue (hw->pcm_ops->init_, TYPE) (hw, as, s->drv_opaque)) {
         goto err0;
     }
 
diff --git a/audio/coreaudio.c b/audio/coreaudio.c
index 5964c62..20346bc 100644
--- a/audio/coreaudio.c
+++ b/audio/coreaudio.c
@@ -287,7 +287,8 @@ static int coreaudio_write (SWVoiceOut *sw, void *buf, int len)
     return audio_pcm_sw_write (sw, buf, len);
 }
 
-static int coreaudio_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as,
+                              void *drv_opaque)
 {
     OSStatus status;
     coreaudioVoiceOut *core = (coreaudioVoiceOut *) hw;
diff --git a/audio/dsound_template.h b/audio/dsound_template.h
index 8b37d16..98276fb 100644
--- a/audio/dsound_template.h
+++ b/audio/dsound_template.h
@@ -174,9 +174,11 @@ static void dsound_fini_out (HWVoiceOut *hw)
 }
 
 #ifdef DSBTYPE_IN
-static int dsound_init_in (HWVoiceIn *hw, struct audsettings *as)
+static int dsound_init_in(HWVoiceIn *hw, struct audsettings *as,
+                          void *drv_opaque)
 #else
-static int dsound_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int dsound_init_out(HWVoiceOut *hw, struct audsettings *as,
+                           void *drv_opaque)
 #endif
 {
     int err;
diff --git a/audio/noaudio.c b/audio/noaudio.c
index cb38662..50db1f3 100644
--- a/audio/noaudio.c
+++ b/audio/noaudio.c
@@ -63,7 +63,7 @@ static int no_write (SWVoiceOut *sw, void *buf, int len)
     return audio_pcm_sw_write (sw, buf, len);
 }
 
-static int no_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int no_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque)
 {
     audio_pcm_init_info (&hw->info, as);
     hw->samples = 1024;
@@ -82,7 +82,7 @@ static int no_ctl_out (HWVoiceOut *hw, int cmd, ...)
     return 0;
 }
 
-static int no_init_in (HWVoiceIn *hw, struct audsettings *as)
+static int no_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
 {
     audio_pcm_init_info (&hw->info, as);
     hw->samples = 1024;
diff --git a/audio/ossaudio.c b/audio/ossaudio.c
index b9c6b30..27c6bc6 100644
--- a/audio/ossaudio.c
+++ b/audio/ossaudio.c
@@ -510,7 +510,8 @@ static void oss_fini_out (HWVoiceOut *hw)
     }
 }
 
-static int oss_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int oss_init_out(HWVoiceOut *hw, struct audsettings *as,
+                        void *drv_opaque)
 {
     OSSVoiceOut *oss = (OSSVoiceOut *) hw;
     struct oss_params req, obt;
@@ -677,7 +678,7 @@ static int oss_ctl_out (HWVoiceOut *hw, int cmd, ...)
     return 0;
 }
 
-static int oss_init_in (HWVoiceIn *hw, struct audsettings *as)
+static int oss_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
 {
     OSSVoiceIn *oss = (OSSVoiceIn *) hw;
     struct oss_params req, obt;
diff --git a/audio/paaudio.c b/audio/paaudio.c
index 90ff245..bdf6cd5 100644
--- a/audio/paaudio.c
+++ b/audio/paaudio.c
@@ -534,7 +534,8 @@ fail:
     return NULL;
 }
 
-static int qpa_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int qpa_init_out(HWVoiceOut *hw, struct audsettings *as,
+                        void *drv_opaque)
 {
     int error;
     static pa_sample_spec ss;
@@ -601,7 +602,7 @@ static int qpa_init_out (HWVoiceOut *hw, struct audsettings *as)
     return -1;
 }
 
-static int qpa_init_in (HWVoiceIn *hw, struct audsettings *as)
+static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
 {
     int error;
     static pa_sample_spec ss;
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
index d24daa5..b95a7e0 100644
--- a/audio/sdlaudio.c
+++ b/audio/sdlaudio.c
@@ -332,7 +332,8 @@ static void sdl_fini_out (HWVoiceOut *hw)
     sdl_close (&glob_sdl);
 }
 
-static int sdl_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int sdl_init_out(HWVoiceOut *hw, struct audsettings *as,
+                        void *drv_opaque)
 {
     SDLVoiceOut *sdl = (SDLVoiceOut *) hw;
     SDLAudioState *s = &glob_sdl;
diff --git a/audio/spiceaudio.c b/audio/spiceaudio.c
index 7b79bed..5c6f726 100644
--- a/audio/spiceaudio.c
+++ b/audio/spiceaudio.c
@@ -115,7 +115,8 @@ static int rate_get_samples (struct audio_pcm_info *info, SpiceRateCtl *rate)
 
 /* playback */
 
-static int line_out_init (HWVoiceOut *hw, struct audsettings *as)
+static int line_out_init(HWVoiceOut *hw, struct audsettings *as,
+                         void *drv_opaque)
 {
     SpiceVoiceOut *out = container_of (hw, SpiceVoiceOut, hw);
     struct audsettings settings;
@@ -243,7 +244,7 @@ static int line_out_ctl (HWVoiceOut *hw, int cmd, ...)
 
 /* record */
 
-static int line_in_init (HWVoiceIn *hw, struct audsettings *as)
+static int line_in_init(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
 {
     SpiceVoiceIn *in = container_of (hw, SpiceVoiceIn, hw);
     struct audsettings settings;
diff --git a/audio/wavaudio.c b/audio/wavaudio.c
index 6846a1a..09083da 100644
--- a/audio/wavaudio.c
+++ b/audio/wavaudio.c
@@ -105,7 +105,8 @@ static void le_store (uint8_t *buf, uint32_t val, int len)
     }
 }
 
-static int wav_init_out (HWVoiceOut *hw, struct audsettings *as)
+static int wav_init_out(HWVoiceOut *hw, struct audsettings *as,
+                        void *drv_opaque)
 {
     WAVVoiceOut *wav = (WAVVoiceOut *) hw;
     int bits16 = 0, stereo = 0;
@@ -117,8 +118,6 @@ static int wav_init_out (HWVoiceOut *hw, struct audsettings *as)
     };
     struct audsettings wav_as = conf.settings;
 
-    (void) as;
-
     stereo = wav_as.nchannels == 2;
     switch (wav_as.fmt) {
     case AUD_FMT_S8:
-- 
1.8.3.1

  parent reply	other threads:[~2015-06-15 12:28 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-15 12:27 [Qemu-devel] [PULL 00/20] audio patch queue Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 01/20] audio: remove esd backend Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 02/20] audio: remove fmod backend Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 03/20] audio: remove winwave audio driver Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 04/20] only enable dsound in case the header file is present Gerd Hoffmann
2015-06-15 12:27 ` Gerd Hoffmann [this message]
2015-06-15 12:27 ` [Qemu-devel] [PULL 06/20] paaudio: do not use global variables Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 07/20] alsaaudio: " Gerd Hoffmann
2015-06-15 12:27 ` [Qemu-devel] [PULL 08/20] ossaudio: " Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 09/20] wavaudio: " Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 10/20] paaudio: fix possible resource leak Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 11/20] dsoundaudio: do not use global variables Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 12/20] coreaudio: do not use global variables where possible Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 13/20] sdlaudio: do not allow multiple instances Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 14/20] MAINTAINERS: remove malc from audio Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 15/20] audio: remove LOG_TO_MONITOR along with default_mon Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 16/20] audio: remove plive Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 17/20] dsoundaudio: remove *_retries kludges Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 18/20] dsoundaudio: remove primary buffer Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 19/20] alsaaudio: use trace events instead of verbose Gerd Hoffmann
2015-06-15 12:28 ` [Qemu-devel] [PULL 20/20] ossaudio: use trace events instead of debug config flag Gerd Hoffmann
2015-06-15 17:03 ` [Qemu-devel] [PULL 00/20] audio patch queue Peter Maydell
2015-06-15 17:05   ` Peter Maydell
2015-06-16  7:50     ` Gerd Hoffmann

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=1434371291-6994-6-git-send-email-kraxel@redhat.com \
    --to=kraxel@redhat.com \
    --cc=DirtY.iCE.hu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).