mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
Introduce machine property "audiodev"
Many machine types have default audio devices with no way to set the underlying audiodev. Instead of adding an option for each and every one of them, this new property can be used as a default during machine initialisation when creating such devices. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> [Make the property optional, instead of including it in all machines. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
69a802792a
commit
7a2c7da644
2 changed files with 42 additions and 0 deletions
|
@ -39,6 +39,7 @@
|
|||
#include "hw/virtio/virtio.h"
|
||||
#include "hw/virtio/virtio-pci.h"
|
||||
#include "hw/virtio/virtio-net.h"
|
||||
#include "audio/audio.h"
|
||||
|
||||
GlobalProperty hw_compat_8_1[] = {};
|
||||
const size_t hw_compat_8_1_len = G_N_ELEMENTS(hw_compat_8_1);
|
||||
|
@ -686,6 +687,26 @@ bool device_type_is_dynamic_sysbus(MachineClass *mc, const char *type)
|
|||
return allowed;
|
||||
}
|
||||
|
||||
static char *machine_get_audiodev(Object *obj, Error **errp)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
|
||||
return g_strdup(ms->audiodev);
|
||||
}
|
||||
|
||||
static void machine_set_audiodev(Object *obj, const char *value,
|
||||
Error **errp)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
|
||||
if (!audio_state_by_name(value, errp)) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_free(ms->audiodev);
|
||||
ms->audiodev = g_strdup(value);
|
||||
}
|
||||
|
||||
HotpluggableCPUList *machine_query_hotpluggable_cpus(MachineState *machine)
|
||||
{
|
||||
int i;
|
||||
|
@ -931,6 +952,17 @@ out_free:
|
|||
qapi_free_BootConfiguration(config);
|
||||
}
|
||||
|
||||
void machine_add_audiodev_property(MachineClass *mc)
|
||||
{
|
||||
ObjectClass *oc = OBJECT_CLASS(mc);
|
||||
|
||||
object_class_property_add_str(oc, "audiodev",
|
||||
machine_get_audiodev,
|
||||
machine_set_audiodev);
|
||||
object_class_property_set_description(oc, "audiodev",
|
||||
"Audiodev to use for default machine devices");
|
||||
}
|
||||
|
||||
static void machine_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
@ -1136,6 +1168,7 @@ static void machine_finalize(Object *obj)
|
|||
g_free(ms->device_memory);
|
||||
g_free(ms->nvdimms_state);
|
||||
g_free(ms->numa_state);
|
||||
g_free(ms->audiodev);
|
||||
}
|
||||
|
||||
bool machine_usb(MachineState *machine)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue