diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2023-10-05 11:55:03 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2023-10-08 21:08:27 +0200 |
commit | c753bf479ab75fe245c2de6a414b60b9e25a2bd7 (patch) | |
tree | 56d8800fe00a370420f6fa672b55c4f1517a92bc | |
parent | c7c5caeb1f314c5662a3b2985fe3befebf45b650 (diff) | |
download | qemu-c753bf479ab75fe245c2de6a414b60b9e25a2bd7.zip qemu-c753bf479ab75fe245c2de6a414b60b9e25a2bd7.tar.gz qemu-c753bf479ab75fe245c2de6a414b60b9e25a2bd7.tar.bz2 |
audio: disable default backends if -audio/-audiodev is used
Match what is done for other options, for example -monitor, and also
the behavior of QEMU 8.1 (see the "legacy_config" variable). Require
the user to specify a backend if one is specified on the command line.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | audio/audio.c | 9 | ||||
-rw-r--r-- | audio/audio.h | 1 | ||||
-rw-r--r-- | docs/about/removed-features.rst | 3 | ||||
-rw-r--r-- | system/vl.c | 7 |
4 files changed, 12 insertions, 8 deletions
diff --git a/audio/audio.c b/audio/audio.c index 9862157..67a7e25 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1688,14 +1688,10 @@ static const VMStateDescription vmstate_audio = { static void audio_validate_opts(Audiodev *dev, Error **errp); -static void audio_create_default_audiodevs(void) +void audio_create_default_audiodevs(void) { const char *drvname = getenv("QEMU_AUDIO_DRV"); - if (!defaults_enabled()) { - return; - } - /* QEMU_AUDIO_DRV=none is used by libqtest. */ if (drvname && !g_str_equal(drvname, "none")) { error_report("Please use -audiodev instead of QEMU_AUDIO_*"); @@ -1827,9 +1823,6 @@ bool AUD_register_card (const char *name, QEMUSoundCard *card, Error **errp) } card->state = QTAILQ_FIRST(&audio_states); } else { - if (QSIMPLEQ_EMPTY(&default_audiodevs)) { - audio_create_default_audiodevs(); - } card->state = audio_init(NULL, errp); if (!card->state) { if (!QSIMPLEQ_EMPTY(&audiodevs)) { diff --git a/audio/audio.h b/audio/audio.h index 80f3f92..53b1d7e 100644 --- a/audio/audio.h +++ b/audio/audio.h @@ -170,6 +170,7 @@ void audio_sample_from_uint64(void *samples, int pos, void audio_define(Audiodev *audio); void audio_parse_option(const char *opt); +void audio_create_default_audiodevs(void); void audio_init_audiodevs(void); void audio_help(void); diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst index e83ed08..8a0a8fe 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -442,6 +442,9 @@ line using a ``secret`` object instance. The ``-audiodev`` and ``-audio`` command line options are now the only way to specify audio backend settings. +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) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' diff --git a/system/vl.c b/system/vl.c index 98e071e..7ca92d4 100644 --- a/system/vl.c +++ b/system/vl.c @@ -184,6 +184,7 @@ static const char *qtest_log; static bool opt_one_insn_per_tb; static int has_defaults = 1; +static int default_audio = 1; static int default_serial = 1; static int default_parallel = 1; static int default_monitor = 1; @@ -1327,6 +1328,7 @@ static void qemu_disable_default_devices(void) default_sdcard = 0; } if (!has_defaults) { + default_audio = 0; default_monitor = 0; default_net = 0; default_vga = 0; @@ -1963,6 +1965,9 @@ static void qemu_create_early_backends(void) */ configure_blockdev(&bdo_queue, machine_class, snapshot); audio_init_audiodevs(); + if (default_audio) { + audio_create_default_audiodevs(); + } } @@ -2925,6 +2930,7 @@ void qemu_init(int argc, char **argv) break; #endif case QEMU_OPTION_audiodev: + default_audio = 0; audio_parse_option(optarg); break; case QEMU_OPTION_audio: { @@ -2933,6 +2939,7 @@ void qemu_init(int argc, char **argv) Audiodev *dev = NULL; Visitor *v; QDict *dict = keyval_parse(optarg, "driver", &help, &error_fatal); + default_audio = 0; if (help || (qdict_haskey(dict, "driver") && is_help_option(qdict_get_str(dict, "driver")))) { audio_help(); |