aboutsummaryrefslogtreecommitdiff
path: root/system
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-09-21 10:23:58 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2023-10-08 21:08:27 +0200
commit1ebdbff4c37d820b6a97d4c6f24aa38dae302b51 (patch)
treee0a68cb06c0fb9f8e7d8341d6452980f23baea77 /system
parent8f527a3c0d2866df1affe8f0fb8ab73fbbb8ac52 (diff)
downloadqemu-1ebdbff4c37d820b6a97d4c6f24aa38dae302b51.zip
qemu-1ebdbff4c37d820b6a97d4c6f24aa38dae302b51.tar.gz
qemu-1ebdbff4c37d820b6a97d4c6f24aa38dae302b51.tar.bz2
audio: extend -audio to allow creating a default backend
If "-audio BACKEND" is used without a model, the resulting backend will be used whenever the audiodev property is not specified. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'system')
-rw-r--r--system/vl.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/system/vl.c b/system/vl.c
index 7ca92d4..72be5a4 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -2935,7 +2935,7 @@ void qemu_init(int argc, char **argv)
break;
case QEMU_OPTION_audio: {
bool help;
- char *model;
+ char *model = NULL;
Audiodev *dev = NULL;
Visitor *v;
QDict *dict = keyval_parse(optarg, "driver", &help, &error_fatal);
@@ -2948,22 +2948,25 @@ void qemu_init(int argc, char **argv)
if (!qdict_haskey(dict, "id")) {
qdict_put_str(dict, "id", "audiodev0");
}
- if (!qdict_haskey(dict, "model")) {
- error_setg(&error_fatal, "Parameter 'model' is missing");
- }
- model = g_strdup(qdict_get_str(dict, "model"));
- qdict_del(dict, "model");
- if (is_help_option(model)) {
- show_valid_soundhw();
- exit(0);
+ if (qdict_haskey(dict, "model")) {
+ model = g_strdup(qdict_get_str(dict, "model"));
+ qdict_del(dict, "model");
+ if (is_help_option(model)) {
+ show_valid_soundhw();
+ exit(0);
+ }
}
v = qobject_input_visitor_new_keyval(QOBJECT(dict));
qobject_unref(dict);
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
visit_free(v);
- audio_define(dev);
- select_soundhw(model, dev->id);
- g_free(model);
+ if (model) {
+ audio_define(dev);
+ select_soundhw(model, dev->id);
+ g_free(model);
+ } else {
+ audio_define_default(dev, &error_fatal);
+ }
break;
}
case QEMU_OPTION_h: