From: Marc-AndrĂ© Lureau <[email protected]>

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 <[email protected]>
Signed-off-by: Marc-AndrĂ© Lureau <[email protected]>
---
 audio/alsaaudio.c   | 19 ++++++++-----------
 audio/dbusaudio.c   | 18 ++++++++----------
 audio/dsoundaudio.c | 18 ++++++++----------
 audio/jackaudio.c   | 18 ++++++++++--------
 audio/noaudio.c     | 18 ++++++++----------
 audio/ossaudio.c    | 18 ++++++++----------
 audio/paaudio.c     | 18 ++++++++----------
 audio/pwaudio.c     | 20 ++++++++------------
 audio/sdlaudio.c    | 18 ++++++++----------
 audio/sndioaudio.c  | 19 ++++++++-----------
 audio/spiceaudio.c  | 18 ++++++++----------
 audio/wavaudio.c    | 18 ++++++++----------
 audio/coreaudio.m   | 18 ++++++++----------
 13 files changed, 106 insertions(+), 132 deletions(-)

diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c
index 7200777ad82..ae1cec6a36e 100644
--- a/audio/alsaaudio.c
+++ b/audio/alsaaudio.c
@@ -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);
diff --git a/audio/dbusaudio.c b/audio/dbusaudio.c
index 48c9078d80e..269db7877b6 100644
--- a/audio/dbusaudio.c
+++ b/audio/dbusaudio.c
@@ -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)
diff --git a/audio/dsoundaudio.c b/audio/dsoundaudio.c
index 6d213899660..462d09e02af 100644
--- a/audio/dsoundaudio.c
+++ b/audio/dsoundaudio.c
@@ -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);
diff --git a/audio/jackaudio.c b/audio/jackaudio.c
index bfce4cb0b4c..972b158f023 100644
--- a/audio/jackaudio.c
+++ b/audio/jackaudio.c
@@ -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);
diff --git a/audio/noaudio.c b/audio/noaudio.c
index 8b5ebd71bf6..65679b8b13d 100644
--- a/audio/noaudio.c
+++ b/audio/noaudio.c
@@ -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);
diff --git a/audio/ossaudio.c b/audio/ossaudio.c
index b8e26b17ed7..f64c564e345 100644
--- a/audio/ossaudio.c
+++ b/audio/ossaudio.c
@@ -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);
diff --git a/audio/paaudio.c b/audio/paaudio.c
index adaeb2af807..331da4f2ed6 100644
--- a/audio/paaudio.c
+++ b/audio/paaudio.c
@@ -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);
diff --git a/audio/pwaudio.c b/audio/pwaudio.c
index facd166052c..3b524dfea5a 100644
--- a/audio/pwaudio.c
+++ b/audio/pwaudio.c
@@ -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);
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
index c00f1366d17..a60b1629da0 100644
--- a/audio/sdlaudio.c
+++ b/audio/sdlaudio.c
@@ -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);
diff --git a/audio/sndioaudio.c b/audio/sndioaudio.c
index c8310b1fa37..2a9ae42992b 100644
--- a/audio/sndioaudio.c
+++ b/audio/sndioaudio.c
@@ -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);
diff --git a/audio/spiceaudio.c b/audio/spiceaudio.c
index d1bb318b6b7..ad7cb69673b 100644
--- a/audio/spiceaudio.c
+++ b/audio/spiceaudio.c
@@ -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");
diff --git a/audio/wavaudio.c b/audio/wavaudio.c
index 12d4108ffad..cd2ceffd42b 100644
--- a/audio/wavaudio.c
+++ b/audio/wavaudio.c
@@ -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);
diff --git a/audio/coreaudio.m b/audio/coreaudio.m
index 5efd16df7c4..862cb9dd9b0 100644
--- a/audio/coreaudio.m
+++ b/audio/coreaudio.m
@@ -690,16 +690,14 @@ static void coreaudio_audio_fini (void *opaque)
     .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);
-- 
2.53.0


Reply via email to