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,