On 23/01/2026 07:49, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Use the QOM class vtable only instead.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> audio/audio_int.h | 10 ----------
> audio/audio.c | 29 +++--------------------------
> audio/dbusaudio.c | 17 +++++++++--------
> 3 files changed, 12 insertions(+), 44 deletions(-)
>
> diff --git a/audio/audio_int.h b/audio/audio_int.h
> index 29f5864be69..0b97c8edee3 100644
> --- a/audio/audio_int.h
> +++ b/audio/audio_int.h
> @@ -33,10 +33,6 @@
> #include "qemu/audio-capture.h"
> #include "mixeng.h"
>
> -#ifdef CONFIG_GIO
> -#include <gio/gio.h>
> -#endif
> -
> void G_GNUC_PRINTF(2, 0)
> AUD_vlog(const char *cap, const char *fmt, va_list ap);
>
> @@ -145,12 +141,6 @@ struct audio_driver {
> const char *name;
> void *(*init) (Audiodev *, Error **);
> void (*fini) (void *);
> -#ifdef CONFIG_GIO
> - bool (*set_dbus_server)(AudioBackend *be,
> - GDBusObjectManagerServer *manager,
> - bool p2p,
> - Error **errp);
> -#endif
> struct audio_pcm_ops *pcm_ops;
> int max_voices_out;
> int max_voices_in;
> diff --git a/audio/audio.c b/audio/audio.c
> index 323608ea0d5..7e23a63d401 100644
> --- a/audio/audio.c
> +++ b/audio/audio.c
> @@ -1639,31 +1639,11 @@ static const char *audio_mixeng_backend_get_id(AudioBackend *be)
> return AUDIO_MIXENG_BACKEND(be)->dev->id;
> }
>
> -#ifdef CONFIG_GIO
> -static bool audio_mixeng_backend_set_dbus_server(AudioBackend *be,
> - GDBusObjectManagerServer *manager,
> - bool p2p,
> - Error **errp)
> -{
> - AudioMixengBackend *d = AUDIO_MIXENG_BACKEND(be);
> -
> - if (!d->drv->set_dbus_server) {
> - return false;
> - }
> -
> - return d->drv->set_dbus_server(be, manager, p2p, errp);
> -}
> -
> -#endif
> -
> static void audio_mixeng_backend_class_init(ObjectClass *klass, const void *data)
> {
> AudioBackendClass *be = AUDIO_BACKEND_CLASS(klass);
>
> be->get_id = audio_mixeng_backend_get_id;
> -#ifdef CONFIG_GIO
> - be->set_dbus_server = audio_mixeng_backend_set_dbus_server;
> -#endif
> }
>
> static void audio_mixeng_backend_init(Object *obj)
> @@ -2263,12 +2243,9 @@ AudioBackend *audio_be_by_name(const char *name, Error **errp)
> #ifdef CONFIG_GIO
> bool audio_be_can_set_dbus_server(AudioBackend *be)
> {
> - /*
> - * TODO:
> - * AudioBackendClass *klass = AUDIO_BACKEND_GET_CLASS(be);
> - * return klass->set_dbus_server != NULL;
> - */
> - return AUDIO_MIXENG_BACKEND(be)->drv->set_dbus_server != NULL;
> + AudioBackendClass *klass = AUDIO_BACKEND_GET_CLASS(be);
> +
> + return klass->set_dbus_server != NULL;
> }
>
> bool audio_be_set_dbus_server(AudioBackend *be,
> diff --git a/audio/dbusaudio.c b/audio/dbusaudio.c
> index 789d72f6903..9b25269a2d9 100644
> --- a/audio/dbusaudio.c
> +++ b/audio/dbusaudio.c
> @@ -54,13 +54,6 @@ struct AudioDbus {
>
> static struct audio_driver dbus_audio_driver;
>
> -static void audio_dbus_class_init(ObjectClass *klass, const void *data)
> -{
> - AudioMixengBackendClass *k = AUDIO_MIXENG_BACKEND_CLASS(klass);
> -
> - k->driver = &dbus_audio_driver;
> -}
> -
> typedef struct DBusAudio {
> Audiodev *dev;
> GDBusObjectManagerServer *server;
> @@ -720,7 +713,6 @@ static struct audio_driver dbus_audio_driver = {
> .name = "dbus",
> .init = dbus_audio_init,
> .fini = dbus_audio_fini,
> - .set_dbus_server = dbus_audio_set_server,
> .pcm_ops = &dbus_pcm_ops,
> .max_voices_out = INT_MAX,
> .max_voices_in = INT_MAX,
> @@ -728,6 +720,15 @@ static struct audio_driver dbus_audio_driver = {
> .voice_size_in = sizeof(DBusVoiceIn)
> };
>
> +static void audio_dbus_class_init(ObjectClass *klass, const void *data)
> +{
> + AudioBackendClass *b = AUDIO_BACKEND_CLASS(klass);
> + AudioMixengBackendClass *k = AUDIO_MIXENG_BACKEND_CLASS(klass);
> +
> + b->set_dbus_server = dbus_audio_set_server;
> + k->driver = &dbus_audio_driver;
> +}
> +
> static const TypeInfo audio_dbus_info = {
> .name = TYPE_AUDIO_DBUS,
> .parent = TYPE_AUDIO_MIXENG_BACKEND,
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
ATB,
Mark.