summary refs log tree commit diff stats
path: root/hw/audio/adlib.c
diff options
context:
space:
mode:
authorMartin Kletzander <mkletzan@redhat.com>2023-10-02 16:27:57 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-10-03 10:29:40 +0200
commitcb94ff5f80c537e43c04fa4f071f1df784255310 (patch)
tree18907d34d44c8e344ea2174c5bd80e6fa8dc5169 /hw/audio/adlib.c
parent9dcb64c96073e9898105cdbef6553cfef0fadcdb (diff)
downloadfocaccia-qemu-cb94ff5f80c537e43c04fa4f071f1df784255310.tar.gz
focaccia-qemu-cb94ff5f80c537e43c04fa4f071f1df784255310.zip
audio: propagate Error * out of audio_init
Starting from audio_driver_init, propagate errors via Error ** so that
audio_init_audiodevs can simply pass &error_fatal, and AUD_register_card
can signal faiure.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
[Reworked the audio/audio.c parts, while keeping Martin's hw/ changes. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/audio/adlib.c')
-rw-r--r--hw/audio/adlib.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c
index 5f979b1487..bd73806d83 100644
--- a/hw/audio/adlib.c
+++ b/hw/audio/adlib.c
@@ -255,6 +255,10 @@ static void adlib_realizefn (DeviceState *dev, Error **errp)
     AdlibState *s = ADLIB(dev);
     struct audsettings as;
 
+    if (!AUD_register_card ("adlib", &s->card, errp)) {
+        return;
+    }
+
     s->opl = OPLCreate (3579545, s->freq);
     if (!s->opl) {
         error_setg (errp, "OPLCreate %d failed", s->freq);
@@ -270,8 +274,6 @@ static void adlib_realizefn (DeviceState *dev, Error **errp)
     as.fmt = AUDIO_FORMAT_S16;
     as.endianness = AUDIO_HOST_ENDIANNESS;
 
-    AUD_register_card ("adlib", &s->card);
-
     s->voice = AUD_open_out (
         &s->card,
         s->voice,