aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--audio/audio.c28
-rw-r--r--audio/audio.h1
-rw-r--r--docs/about/removed-features.rst6
-rw-r--r--ui/vnc.c2
4 files changed, 21 insertions, 16 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);
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");