diff options
Diffstat (limited to 'audio/audio.c')
| -rw-r--r-- | audio/audio.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/audio/audio.c b/audio/audio.c index bd4bcabcca..73b65dc3b9 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1801,20 +1801,28 @@ out: return NULL; } -bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) +AudioState *audio_get_default_audio_state(Error **errp) { - if (!card->state) { + if (!default_audio_state) { + default_audio_state = audio_init(NULL, errp); if (!default_audio_state) { - default_audio_state = audio_init(NULL, errp); - if (!default_audio_state) { - if (!QSIMPLEQ_EMPTY(&audiodevs)) { - error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", - QSIMPLEQ_FIRST(&audiodevs)->dev->id); - } - return false; + if (!QSIMPLEQ_EMPTY(&audiodevs)) { + error_append_hint(errp, "Perhaps you wanted to use -audio or set audiodev=%s?\n", + QSIMPLEQ_FIRST(&audiodevs)->dev->id); } } - card->state = default_audio_state; + } + + return default_audio_state; +} + +bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) +{ + if (!card->state) { + card->state = audio_get_default_audio_state(errp); + if (!card->state) { + return false; + } } card->name = g_strdup (name); |