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; } +AudioState *audio_get_default_audio_state(Error **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 default_audio_state; +} + bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) { if (!card->state) { - 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; - } + card->state = audio_get_default_audio_state(errp); + if (!card->state) { + return false; } - card->state = default_audio_state; } card->name = g_strdup (name); diff --git a/audio/audio.h b/audio/audio.h index 6da5e8f6f0..fcc22307be 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -176,6 +176,7 @@ void audio_init_audiodevs(void); void audio_help(void); AudioState *audio_state_by_name(const char *name, Error **errp); +AudioState *audio_get_default_audio_state(Error **errp); const char *audio_get_id(QEMUSoundCard *card); #define DEFINE_AUDIO_PROPERTIES(_s, _f) \ diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index ed94b4cd0c..f04036987b 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -460,12 +460,6 @@ in this case. Note that the default audio backend must be configured on the command line if the ``-nodefaults`` options is used. -Creating vnc without ``audiodev=`` property (removed in 8.2) -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - -When using vnc, you should specify an ``audiodev=`` property if -you plan to transmit audio through the VNC protocol. - QEMU Machine Protocol (QMP) commands ------------------------------------ diff --git a/ui/vnc.c b/ui/vnc.c index 6056028e49..4f23a0fa79 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -4185,6 +4185,8 @@ void vnc_display_open(const char *id, Error **errp) if (!vd->audio_state) { goto fail; } + } else { + vd->audio_state = audio_get_default_audio_state(NULL); } device_id = qemu_opt_get(opts, "display");