@samitouri / QOSamiQemu / commits / 6222994d43

audio/jack: convert to QOM lifecycle methods

Remove the legacy driver init/fini callbacks from the JACK audio backend. Both qjack_init() and qjack_fini() were no-ops that performed no real initialization or cleanup work. Access to the Audiodev is now through hw->s->dev instead of the drv_opaque pointer. Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com> Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Marc-André Lureau committed Jan 16, 2026 at 18:58 UTC 6222994d43356600663397058596bfb4b65b19f7
1 file changed +9 -21
audio/jackaudio.c
+9 -21
@@ -44,13 +44,6 @@ struct AudioJack {
44
45 static struct audio_driver jack_driver;
46
47 -static void audio_jack_class_init(ObjectClass *klass, const void *data)
48 -{
49 - AudioMixengBackendClass *k = AUDIO_MIXENG_BACKEND_CLASS(klass);
50 -
51 - k->driver = &jack_driver;
52 -}
53 -
47 struct QJack;
48
49 typedef enum QJackState {
@@ -518,7 +511,7 @@ static int qjack_init_out(HWVoiceOut *hw, struct audsettings *as,
511 void *drv_opaque)
512 {
513 QJackOut *jo = (QJackOut *)hw;
521 - Audiodev *dev = (Audiodev *)drv_opaque;
514 + Audiodev *dev = hw->s->dev;
515
516 jo->c.out = true;
517 jo->c.enabled = false;
@@ -555,7 +548,7 @@ static int qjack_init_in(HWVoiceIn *hw, struct audsettings *as,
548 void *drv_opaque)
549 {
550 QJackIn *ji = (QJackIn *)hw;
558 - Audiodev *dev = (Audiodev *)drv_opaque;
551 + Audiodev *dev = hw->s->dev;
552
553 ji->c.out = false;
554 ji->c.enabled = false;
@@ -662,16 +655,6 @@ static int qjack_thread_creator(jack_native_thread_t *thread,
655 }
656 #endif
657
665 -static void *qjack_init(Audiodev *dev, Error **errp)
666 -{
667 - assert(dev->driver == AUDIODEV_DRIVER_JACK);
668 - return dev;
669 -}
670 -
671 -static void qjack_fini(void *opaque)
672 -{
673 -}
674 -
658 static struct audio_pcm_ops jack_pcm_ops = {
659 .init_out = qjack_init_out,
660 .fini_out = qjack_fini_out,
@@ -689,8 +672,6 @@ static struct audio_pcm_ops jack_pcm_ops = {
672
673 static struct audio_driver jack_driver = {
674 .name = "jack",
692 - .init = qjack_init,
693 - .fini = qjack_fini,
675 .pcm_ops = &jack_pcm_ops,
676 .max_voices_out = INT_MAX,
677 .max_voices_in = INT_MAX,
@@ -708,6 +689,13 @@ static void qjack_info(const char *msg)
689 dolog("I: %s\n", msg);
690 }
691
692 +static void audio_jack_class_init(ObjectClass *klass, const void *data)
693 +{
694 + AudioMixengBackendClass *k = AUDIO_MIXENG_BACKEND_CLASS(klass);
695 +
696 + k->driver = &jack_driver;
697 +}
698 +
699 static const TypeInfo audio_types[] = {
700 {
701 .name = TYPE_AUDIO_JACK,