]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
audio: replace type_init() with DEFINE_TYPES
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 4 Feb 2026 14:19:02 +0000 (18:19 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 23 Feb 2026 13:28:57 +0000 (14:28 +0100)
Use the convenience macro to register types.

Note that jack backend was using the type registration to initialize
some globals. Use a ctor function instead.

Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
13 files changed:
audio/alsaaudio.c
audio/coreaudio.m
audio/dbusaudio.c
audio/dsoundaudio.c
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 7200777ad8237feaf1d4c085697a3533980164d5..ae1cec6a36e7e141a51548ee7cd4cfe64dc54ba0 100644 (file)
@@ -962,17 +962,14 @@ static struct audio_driver alsa_audio_driver = {
     .voice_size_in  = sizeof (ALSAVoiceIn)
 };
 
-static const TypeInfo audio_alsa_info = {
-    .name = TYPE_AUDIO_ALSA,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioALSA),
-    .class_init = audio_alsa_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_ALSA,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioALSA),
+        .class_init = audio_alsa_class_init,
+    },
 };
 
-
-static void register_audio_alsa(void)
-{
-    type_register_static(&audio_alsa_info);
-}
-type_init(register_audio_alsa);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_ALSA);
index 5efd16df7c48a3fce57f54ee797613ce7845992d..862cb9dd9b053b607e98e61e93e32e19390e8b5a 100644 (file)
@@ -690,16 +690,14 @@ static struct audio_driver coreaudio_audio_driver = {
     .voice_size_in  = 0
 };
 
-static const TypeInfo audio_coreaudio_info = {
-    .name = TYPE_AUDIO_COREAUDIO,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioCoreaudio),
-    .class_init = audio_coreaudio_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_COREAUDIO,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioCoreaudio),
+        .class_init = audio_coreaudio_class_init,
+    },
 };
 
-static void register_audio_coreaudio(void)
-{
-    type_register_static(&audio_coreaudio_info);
-}
-type_init(register_audio_coreaudio);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_COREAUDIO);
index 48c9078d80e421beffda2c00aee01fd67863b21a..269db7877b6473431d9815f5ecc08e3c3f5ca59e 100644 (file)
@@ -729,18 +729,16 @@ static void audio_dbus_class_init(ObjectClass *klass, const void *data)
     k->driver = &dbus_audio_driver;
 }
 
-static const TypeInfo audio_dbus_info = {
-    .name = TYPE_AUDIO_DBUS,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioDbus),
-    .class_init = audio_dbus_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_DBUS,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioDbus),
+        .class_init = audio_dbus_class_init,
+    },
 };
 
-static void register_audio_dbus(void)
-{
-    type_register_static(&audio_dbus_info);
-}
-type_init(register_audio_dbus);
+DEFINE_TYPES(audio_types)
 
 module_dep("ui-dbus")
 module_obj(TYPE_AUDIO_DBUS)
index 6d213899660051012fed0de7e2f2480036634cb9..462d09e02af0ab3a52b1236418073083959628f1 100644 (file)
@@ -711,16 +711,14 @@ static struct audio_driver dsound_audio_driver = {
     .voice_size_in  = sizeof (DSoundVoiceIn)
 };
 
-static const TypeInfo audio_dsound_info = {
-    .name = TYPE_AUDIO_DSOUND,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioDsound),
-    .class_init = audio_dsound_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_DSOUND,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioDsound),
+        .class_init = audio_dsound_class_init,
+    },
 };
 
-static void register_audio_dsound(void)
-{
-    type_register_static(&audio_dsound_info);
-}
-type_init(register_audio_dsound);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_DSOUND);
index bfce4cb0b4c81b888041fcef0730e0cc6a39ffe5..972b158f023c2f6558387d807ecea399244e5555 100644 (file)
@@ -708,22 +708,24 @@ static void qjack_info(const char *msg)
     dolog("I: %s\n", msg);
 }
 
-static const TypeInfo audio_jack_info = {
-    .name = TYPE_AUDIO_JACK,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioJack),
-    .class_init = audio_jack_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_JACK,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioJack),
+        .class_init = audio_jack_class_init,
+    },
 };
 
-static void register_audio_jack(void)
+static void __attribute__((__constructor__)) audio_jack_init(void)
 {
     qemu_mutex_init(&qjack_shutdown_lock);
-    type_register_static(&audio_jack_info);
 #if !defined(WIN32) && defined(CONFIG_PTHREAD_SETNAME_NP_W_TID)
     jack_set_thread_creator(qjack_thread_creator);
 #endif
     jack_set_error_function(qjack_error);
     jack_set_info_function(qjack_info);
 }
-type_init(register_audio_jack);
+
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_JACK);
index 8b5ebd71bf66b12185904321af9dc093e827280d..65679b8b13da7667f2d0ecf57764dcb46ab60d76 100644 (file)
@@ -155,16 +155,14 @@ static struct audio_driver no_audio_driver = {
     .voice_size_in  = sizeof (NoVoiceIn)
 };
 
-static const TypeInfo audio_none_info = {
-    .name = TYPE_AUDIO_NONE,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioNone),
-    .class_init = audio_none_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_NONE,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioNone),
+        .class_init = audio_none_class_init,
+    },
 };
 
-static void register_audio_none(void)
-{
-    type_register_static(&audio_none_info);
-}
-type_init(register_audio_none);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_NONE);
index b8e26b17ed74e1ea25de168148191c5971d82e4b..f64c564e345aa925f54c94b1a299a662ebfa4246 100644 (file)
@@ -789,16 +789,14 @@ static struct audio_driver oss_audio_driver = {
     .voice_size_in  = sizeof (OSSVoiceIn)
 };
 
-static const TypeInfo audio_oss_info = {
-    .name = TYPE_AUDIO_OSS,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioOss),
-    .class_init = audio_oss_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_OSS,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioOss),
+        .class_init = audio_oss_class_init,
+    },
 };
 
-static void register_audio_oss(void)
-{
-    type_register_static(&audio_oss_info);
-}
-type_init(register_audio_oss);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_OSS);
index adaeb2af807ff83477e9f793d0de50e5f6f4c99b..331da4f2ed6df95f170b19aa2d321d456ab020c8 100644 (file)
@@ -948,16 +948,14 @@ static struct audio_driver pa_audio_driver = {
     .voice_size_in  = sizeof (PAVoiceIn),
 };
 
-static const TypeInfo audio_pa_info = {
-    .name = TYPE_AUDIO_PA,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioPa),
-    .class_init = audio_pa_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_PA,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioPa),
+        .class_init = audio_pa_class_init,
+    },
 };
 
-static void register_audio_pa(void)
-{
-    type_register_static(&audio_pa_info);
-}
-type_init(register_audio_pa);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_PA);
index facd166052c006382df036b0a6466d5ca98c4a3c..3b524dfea5a0d1197e135488d001d575e4f6942c 100644 (file)
@@ -864,18 +864,14 @@ static struct audio_driver pw_audio_driver = {
     .voice_size_in = sizeof(PWVoiceIn),
 };
 
-static const TypeInfo audio_pw_info = {
-    .name = TYPE_AUDIO_PW,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioPw),
-    .class_init = audio_pw_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_PW,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioPw),
+        .class_init = audio_pw_class_init,
+    },
 };
 
-static void
-register_audio_pw(void)
-{
-    type_register_static(&audio_pw_info);
-}
-
-type_init(register_audio_pw);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_PW);
index c00f1366d17a391d87c6ad70342d1eda27b9c3e6..a60b1629da054629d2a514dbba6ae8241c9da054 100644 (file)
@@ -508,16 +508,14 @@ static struct audio_driver sdl_audio_driver = {
     .voice_size_in  = sizeof(SDLVoiceIn),
 };
 
-static const TypeInfo audio_sdl_info = {
-    .name = TYPE_AUDIO_SDL,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioSdl),
-    .class_init = audio_sdl_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_SDL,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioSdl),
+        .class_init = audio_sdl_class_init,
+    },
 };
 
-static void register_audio_sdl(void)
-{
-    type_register_static(&audio_sdl_info);
-}
-type_init(register_audio_sdl);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_SDL);
index c8310b1fa37260214f63bc60d0869d86578e72bb..2a9ae42992b74807bba98c9c8932d258ae47f151 100644 (file)
@@ -572,17 +572,14 @@ static struct audio_driver sndio_audio_driver = {
     .voice_size_in  = sizeof(SndioVoice)
 };
 
-static const TypeInfo audio_sndio_info = {
-    .name = TYPE_AUDIO_SNDIO,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioSndio),
-    .class_init = audio_sndio_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_SNDIO,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioSndio),
+        .class_init = audio_sndio_class_init,
+    },
 };
 
-static void register_audio_sndio(void)
-{
-    type_register_static(&audio_sndio_info);
-}
-
-type_init(register_audio_sndio);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_SNDIO);
index d1bb318b6b7257bb644577549f267ae83989b87a..ad7cb69673bae56ff3b8301aa1f9dd1fbd5eb876 100644 (file)
@@ -342,18 +342,16 @@ static struct audio_driver spice_audio_driver = {
     .voice_size_in  = sizeof (SpiceVoiceIn),
 };
 
-static const TypeInfo audio_spice_info = {
-    .name = TYPE_AUDIO_SPICE,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioSpice),
-    .class_init = audio_spice_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_SPICE,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioSpice),
+        .class_init = audio_spice_class_init,
+    },
 };
 
-static void register_audio_spice(void)
-{
-    type_register_static(&audio_spice_info);
-}
-type_init(register_audio_spice);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_SPICE);
 
 module_dep("ui-spice-core");
index 12d4108ffadc4f99b8e069ae34c7af9e0712715e..cd2ceffd42b345e96dd45fc4639820d768b19456 100644 (file)
@@ -231,16 +231,14 @@ static struct audio_driver wav_audio_driver = {
     .voice_size_in  = 0
 };
 
-static const TypeInfo audio_wav_info = {
-    .name = TYPE_AUDIO_WAV,
-    .parent = TYPE_AUDIO_MIXENG_BACKEND,
-    .instance_size = sizeof(AudioWav),
-    .class_init = audio_wav_class_init,
+static const TypeInfo audio_types[] = {
+    {
+        .name = TYPE_AUDIO_WAV,
+        .parent = TYPE_AUDIO_MIXENG_BACKEND,
+        .instance_size = sizeof(AudioWav),
+        .class_init = audio_wav_class_init,
+    }
 };
 
-static void register_audio_wav(void)
-{
-    type_register_static(&audio_wav_info);
-}
-type_init(register_audio_wav);
+DEFINE_TYPES(audio_types)
 module_obj(TYPE_AUDIO_WAV);