]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
audio: remove audio_driver init/fini/next
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Fri, 16 Jan 2026 15:32:14 +0000 (19:32 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 23 Feb 2026 13:38:22 +0000 (14:38 +0100)
They are no longer used after conversion to QOM.

Also removing the drv_opaque from a few of the pcm_ops methods.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
16 files changed:
audio/alsaaudio.c
audio/audio-mixeng-be.c
audio/audio_int.h
audio/audio_template.h
audio/coreaudio.m
audio/dbusaudio.c
audio/dsound_template.h
audio/jackaudio.c
audio/noaudio.c
audio/ossaudio.c
audio/paaudio.c
audio/pwaudio.c
audio/sdlaudio.c
audio/sndioaudio.c
audio/spiceaudio.c
audio/wavaudio.c

index c2788606b284d1192dee2e032346d7eb4beb016d..0c63d133496dc5ca5a8b0f7f4fcb003d68019db1 100644 (file)
@@ -692,8 +692,7 @@ static void alsa_fini_out (HWVoiceOut *hw)
     alsa_anal_close (&alsa->handle, &alsa->pollhlp);
 }
 
-static int alsa_init_out(HWVoiceOut *hw, struct audsettings *as,
-                         void *drv_opaque)
+static int alsa_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     ALSAVoiceOut *alsa = (ALSAVoiceOut *) hw;
     struct alsa_params_req req;
@@ -779,7 +778,7 @@ static void alsa_enable_out(HWVoiceOut *hw, bool enable)
     }
 }
 
-static int alsa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+static int alsa_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw;
     struct alsa_params_req req;
index 45873646b3cc95a1f12a5b62fdd8293aadd8b60a..ee593310180c6e6a805a26a8316b248fe30e7129 100644 (file)
@@ -1521,13 +1521,6 @@ static bool audio_mixeng_backend_realize(AudioBackend *abe,
     audio_driver *drv = AUDIO_MIXENG_BACKEND_GET_CLASS(be)->driver;
 
     be->dev = dev;
-    if (drv->init != NULL) {
-        be->drv_opaque = drv->init(be->dev, errp);
-        if (!be->drv_opaque) {
-            return false;
-        }
-    }
-
     if (!drv->pcm_ops->get_buffer_in) {
         drv->pcm_ops->get_buffer_in = audio_generic_get_buffer_in;
         drv->pcm_ops->put_buffer_in = audio_generic_put_buffer_in;
@@ -1665,13 +1658,7 @@ static void audio_mixeng_backend_finalize(Object *obj)
         QLIST_REMOVE(hwi, entries);
     }
 
-    if (s->drv) {
-        if (s->drv->fini) {
-            s->drv->fini (s->drv_opaque);
-        }
-        s->drv = NULL;
-    }
-
+    s->drv = NULL;
     if (s->dev) {
         qapi_free_Audiodev(s->dev);
         s->dev = NULL;
index 6ecd75c4fbf2368a1a20d79a5601adb0fc64e48e..fb5a9dd871edf5564ed2fa8c5de86edfe2d3001f 100644 (file)
@@ -139,18 +139,15 @@ struct SWVoiceIn {
 typedef struct audio_driver audio_driver;
 struct audio_driver {
     const char *name;
-    void *(*init) (Audiodev *, Error **);
-    void (*fini) (void *);
     struct audio_pcm_ops *pcm_ops;
     int max_voices_out;
     int max_voices_in;
     size_t voice_size_out;
     size_t voice_size_in;
-    QLIST_ENTRY(audio_driver) next;
 };
 
 struct audio_pcm_ops {
-    int    (*init_out)(HWVoiceOut *hw, audsettings *as, void *drv_opaque);
+    int    (*init_out)(HWVoiceOut *hw, audsettings *as);
     void   (*fini_out)(HWVoiceOut *hw);
     size_t (*write)   (HWVoiceOut *hw, void *buf, size_t size);
     void   (*run_buffer_out)(HWVoiceOut *hw);
@@ -173,7 +170,7 @@ struct audio_pcm_ops {
     void   (*enable_out)(HWVoiceOut *hw, bool enable);
     void   (*volume_out)(HWVoiceOut *hw, Volume *vol);
 
-    int    (*init_in) (HWVoiceIn *hw, audsettings *as, void *drv_opaque);
+    int    (*init_in) (HWVoiceIn *hw, audsettings *as);
     void   (*fini_in) (HWVoiceIn *hw);
     size_t (*read)    (HWVoiceIn *hw, void *buf, size_t size);
     void   (*run_buffer_in)(HWVoiceIn *hw);
@@ -240,7 +237,6 @@ struct AudioMixengBackend {
 
     struct audio_driver *drv;
     Audiodev *dev;
-    void *drv_opaque;
 
     QEMUTimer *ts;
     QLIST_HEAD (hw_in_listhead, HWVoiceIn) hw_head_in;
index 77a70d6e56a17785ae6489d8f1c6d4335e404b4e..6c2d2ad5dca3ea0f574807a517c5d8c794d53168 100644 (file)
@@ -295,7 +295,7 @@ static HW *glue(audio_pcm_hw_add_new_, TYPE)(AudioMixengBackend *s,
 #ifdef DAC
     QLIST_INIT (&hw->cap_head);
 #endif
-    if (glue (hw->pcm_ops->init_, TYPE) (hw, as, s->drv_opaque)) {
+    if (glue (hw->pcm_ops->init_, TYPE) (hw, as)) {
         goto err0;
     }
 
index 4a0904f0073a9c6984abd09958f906dce888665c..a3a0b83eb9df4e13e1cdf57ceec50db8faf8c3ba 100644 (file)
@@ -573,8 +573,7 @@ static OSStatus handle_voice_change(
     return 0;
 }
 
-static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as,
-                              void *drv_opaque)
+static int coreaudio_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     OSStatus status;
     coreaudioVoiceOut *core = (coreaudioVoiceOut *) hw;
index fb059815de94539e1dcc99500194f093fc8f17e3..9cc6e826b7e4bcbf0940d4e9a58eb5115416ab0d 100644 (file)
@@ -173,7 +173,7 @@ dbus_audio_get_nsamples(AudioDbus *da)
 }
 
 static int
-dbus_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque)
+dbus_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     AudioDbus *da = AUDIO_DBUS(hw->s);
     DBusVoiceOut *vo = container_of(hw, DBusVoiceOut, hw);
@@ -287,7 +287,7 @@ dbus_init_in_listener(QemuDBusDisplay1AudioInListener *listener, HWVoiceIn *hw)
 }
 
 static int
-dbus_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+dbus_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     AudioDbus *da = AUDIO_DBUS(hw->s);
     DBusVoiceIn *vo = container_of(hw, DBusVoiceIn, hw);
index 7979773eb86a90def682ad173b128de0911d3aa0..022a7307c9970b6e4875ef8c7ec42d522fc84bf7 100644 (file)
@@ -157,11 +157,9 @@ static void dsound_fini_out (HWVoiceOut *hw)
 }
 
 #ifdef DSBTYPE_IN
-static int dsound_init_in(HWVoiceIn *hw, struct audsettings *as,
-                          void *drv_opaque)
+static int dsound_init_in(HWVoiceIn *hw, struct audsettings *as)
 #else
-static int dsound_init_out(HWVoiceOut *hw, struct audsettings *as,
-                           void *drv_opaque)
+static int dsound_init_out(HWVoiceOut *hw, struct audsettings *as)
 #endif
 {
     int err;
index 31e3da6a7fea6d792240a26594535cb6f5e94793..d1bf80f8b68aef34c9a6405aa644903c1c514466 100644 (file)
@@ -507,8 +507,7 @@ static int qjack_client_init(QJackClient *c)
     return 0;
 }
 
-static int qjack_init_out(HWVoiceOut *hw, struct audsettings *as,
-    void *drv_opaque)
+static int qjack_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     QJackOut *jo  = (QJackOut *)hw;
     Audiodev *dev = hw->s->dev;
@@ -544,8 +543,7 @@ static int qjack_init_out(HWVoiceOut *hw, struct audsettings *as,
     return 0;
 }
 
-static int qjack_init_in(HWVoiceIn *hw, struct audsettings *as,
-    void *drv_opaque)
+static int qjack_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     QJackIn  *ji  = (QJackIn *)hw;
     Audiodev *dev = hw->s->dev;
index 2bd110caac4959eee942eceef19575619d744dd0..6016f516d4a6b3fe5ef32f9afbfdffb166266040 100644 (file)
@@ -62,7 +62,7 @@ static size_t no_write(HWVoiceOut *hw, void *buf, size_t len)
     return audio_rate_get_bytes(&no->rate, &hw->info, len);
 }
 
-static int no_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque)
+static int no_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     NoVoiceOut *no = (NoVoiceOut *) hw;
 
@@ -86,7 +86,7 @@ static void no_enable_out(HWVoiceOut *hw, bool enable)
     }
 }
 
-static int no_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+static int no_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     NoVoiceIn *no = (NoVoiceIn *) hw;
 
index fedd2bbd722c65d70e1751975e7ed0e07cf67bf6..e6f8d6d41e5b388563be575ad0d9d03d2fe76fa7 100644 (file)
@@ -493,8 +493,7 @@ static void oss_fini_out (HWVoiceOut *hw)
     }
 }
 
-static int oss_init_out(HWVoiceOut *hw, struct audsettings *as,
-                        void *drv_opaque)
+static int oss_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     OSSVoiceOut *oss = (OSSVoiceOut *) hw;
     struct oss_params req, obt;
@@ -625,7 +624,7 @@ static void oss_enable_out(HWVoiceOut *hw, bool enable)
     }
 }
 
-static int oss_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+static int oss_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     OSSVoiceIn *oss = (OSSVoiceIn *) hw;
     struct oss_params req, obt;
index 97e6c0d1794a29bb91b2be6dcf6519d22f9d774c..358182962822656431a1d27d2c86b404644ebe99 100644 (file)
@@ -518,8 +518,7 @@ fail:
     return NULL;
 }
 
-static int qpa_init_out(HWVoiceOut *hw, struct audsettings *as,
-                        void *drv_opaque)
+static int qpa_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     AudioMixengBackend *amb = hw->s;
     AudioPa *apa = AUDIO_PA(amb);
@@ -570,7 +569,7 @@ static int qpa_init_out(HWVoiceOut *hw, struct audsettings *as,
     return -1;
 }
 
-static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     AudioMixengBackend *amb = hw->s;
     AudioPa *apa = AUDIO_PA(amb);
index ca61a1b4ef566445fc44919206dc1d97d01a23af..c668ef19a3e5d3f2df2d1803fea30d8ae6cf3e58 100644 (file)
@@ -524,7 +524,7 @@ qpw_set_position(uint32_t channels, uint32_t position[SPA_AUDIO_MAX_CHANNELS])
 }
 
 static int
-qpw_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque)
+qpw_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     AudioPw *c = AUDIO_PW(hw->s);
     PWVoiceOut *pw = (PWVoiceOut *) hw;
@@ -571,7 +571,7 @@ qpw_init_out(HWVoiceOut *hw, struct audsettings *as, void *drv_opaque)
 }
 
 static int
-qpw_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+qpw_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     AudioPw *c = AUDIO_PW(hw->s);
     PWVoiceIn *pw = (PWVoiceIn *) hw;
index 0dfa3100828b399a06037a2f709af4ea90e9a4e3..a1d453aa307902b285bdda2daaeae8d847bf3810 100644 (file)
@@ -345,8 +345,7 @@ static void sdl_fini_out(HWVoiceOut *hw)
     sdl_close_out(sdl);
 }
 
-static int sdl_init_out(HWVoiceOut *hw, struct audsettings *as,
-                        void *drv_opaque)
+static int sdl_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     SDLVoiceOut *sdl = (SDLVoiceOut *)hw;
     SDL_AudioSpec req, obt;
@@ -402,7 +401,7 @@ static void sdl_fini_in(HWVoiceIn *hw)
     sdl_close_in(sdl);
 }
 
-static int sdl_init_in(HWVoiceIn *hw, audsettings *as, void *drv_opaque)
+static int sdl_init_in(HWVoiceIn *hw, audsettings *as)
 {
     SDLVoiceIn *sdl = (SDLVoiceIn *)hw;
     SDL_AudioSpec req, obt;
index c15d8b6684a50be0ac493b199bd628ba3529d82a..77685e27cb14f15b354c10dc78114124277bc842 100644 (file)
@@ -495,7 +495,7 @@ static void sndio_enable_in(HWVoiceIn *hw, bool enable)
     sndio_enable(self, enable);
 }
 
-static int sndio_init_out(HWVoiceOut *hw, struct audsettings *as, void *opaque)
+static int sndio_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     SndioVoice *self = (SndioVoice *) hw;
 
@@ -508,7 +508,7 @@ static int sndio_init_out(HWVoiceOut *hw, struct audsettings *as, void *opaque)
     return 0;
 }
 
-static int sndio_init_in(HWVoiceIn *hw, struct audsettings *as, void *opaque)
+static int sndio_init_in(HWVoiceIn *hw, struct audsettings *as)
 {
     SndioVoice *self = (SndioVoice *) hw;
 
index 953dbf6c308f1fff063a88fab55e72487b26db22..cc6c5d7e287bbe684f7b7a347c736ffa99371084 100644 (file)
@@ -108,8 +108,7 @@ static const SpiceRecordInterface record_sif = {
 
 /* playback */
 
-static int line_out_init(HWVoiceOut *hw, struct audsettings *as,
-                         void *drv_opaque)
+static int line_out_init(HWVoiceOut *hw, struct audsettings *as)
 {
     SpiceVoiceOut *out = container_of (hw, SpiceVoiceOut, hw);
     struct audsettings settings;
@@ -225,7 +224,7 @@ static void line_out_volume(HWVoiceOut *hw, Volume *vol)
 
 /* record */
 
-static int line_in_init(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque)
+static int line_in_init(HWVoiceIn *hw, struct audsettings *as)
 {
     SpiceVoiceIn *in = container_of (hw, SpiceVoiceIn, hw);
     struct audsettings settings;
index f1a414f208cf59b274206e16861d6c684f302708..f9a0484488bf5855bf0ead504f8d8d709d86b456 100644 (file)
@@ -78,8 +78,7 @@ static void le_store (uint8_t *buf, uint32_t val, int len)
     }
 }
 
-static int wav_init_out(HWVoiceOut *hw, struct audsettings *as,
-                        void *drv_opaque)
+static int wav_init_out(HWVoiceOut *hw, struct audsettings *as)
 {
     WAVVoiceOut *wav = (WAVVoiceOut *) hw;
     int bits16 = 0, stereo = 0;