mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-01 06:27:16 +00:00
qemu: Allow using regular audio backends with VNC
Currently all host audio backends are disabled if a VM is using VNC, in favor of the QEMU VNC audio extension. Unfortunately no released VNC client supports this extension, so users have no way of getting audio to work if using VNC. Add a new config option in qemu.conf which allows changing libvirt's behavior, but keep the default intact. v2: Fix doc typos, change name to vnc_allow_host_audio
This commit is contained in:
parent
c82d106ed1
commit
fb3ebd0397
@ -38,6 +38,7 @@ module Libvirtd_qemu =
|
|||||||
| str_entry "save_image_format"
|
| str_entry "save_image_format"
|
||||||
| str_entry "hugetlbfs_mount"
|
| str_entry "hugetlbfs_mount"
|
||||||
| bool_entry "relaxed_acs_check"
|
| bool_entry "relaxed_acs_check"
|
||||||
|
| bool_entry "vnc_allow_host_audio"
|
||||||
|
|
||||||
(* Each enty in the config is one of the following three ... *)
|
(* Each enty in the config is one of the following three ... *)
|
||||||
let entry = vnc_entry
|
let entry = vnc_entry
|
||||||
|
@ -168,3 +168,13 @@
|
|||||||
# be assigned to guests.
|
# be assigned to guests.
|
||||||
#
|
#
|
||||||
# relaxed_acs_check = 1
|
# relaxed_acs_check = 1
|
||||||
|
|
||||||
|
|
||||||
|
# QEMU implements an extension for providing audio over a VNC connection,
|
||||||
|
# though if your VNC client does not support it, your only chance for getting
|
||||||
|
# sound output is through regular audio backends. By default, libvirt will
|
||||||
|
# disable all QEMU sound backends if using VNC, since they can cause
|
||||||
|
# permissions issues. Enabling this option will make libvirtd honor the
|
||||||
|
# QEMU_AUDIO_DRV environment variable when using VNC.
|
||||||
|
#
|
||||||
|
# vnc_allow_host_audio = 0
|
||||||
|
@ -351,6 +351,10 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
|
|||||||
CHECK_TYPE ("relaxed_acs_check", VIR_CONF_LONG);
|
CHECK_TYPE ("relaxed_acs_check", VIR_CONF_LONG);
|
||||||
if (p) driver->relaxedACS = p->l;
|
if (p) driver->relaxedACS = p->l;
|
||||||
|
|
||||||
|
p = virConfGetValue (conf, "vnc_allow_host_audio");
|
||||||
|
CHECK_TYPE ("vnc_allow_host_audio", VIR_CONF_LONG);
|
||||||
|
if (p) driver->vncAllowHostAudio = p->l;
|
||||||
|
|
||||||
virConfFree (conf);
|
virConfFree (conf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -4399,12 +4403,15 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
|||||||
ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
|
ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* QEMU implements a VNC extension for providing audio, so we
|
/* Unless user requested it, set the audio backend to none, to
|
||||||
* set the audio backend to none, to prevent it opening the
|
* prevent it opening the host OS audio devices, since that causes
|
||||||
* host OS audio devices since that causes security issues
|
* security issues and might not work when using VNC.
|
||||||
* and is non-sensical when using VNC.
|
|
||||||
*/
|
*/
|
||||||
ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
if (driver->vncAllowHostAudio) {
|
||||||
|
ADD_ENV_COPY("QEMU_AUDIO_DRV");
|
||||||
|
} else {
|
||||||
|
ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
||||||
|
}
|
||||||
} else if ((def->ngraphics == 1) &&
|
} else if ((def->ngraphics == 1) &&
|
||||||
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
||||||
char *xauth = NULL;
|
char *xauth = NULL;
|
||||||
|
@ -138,6 +138,8 @@ struct qemud_driver {
|
|||||||
|
|
||||||
unsigned int relaxedACS : 1;
|
unsigned int relaxedACS : 1;
|
||||||
|
|
||||||
|
unsigned int vncAllowHostAudio : 1;
|
||||||
|
|
||||||
virCapsPtr caps;
|
virCapsPtr caps;
|
||||||
|
|
||||||
/* An array of callbacks */
|
/* An array of callbacks */
|
||||||
|
@ -97,6 +97,8 @@ save_image_format = \"gzip\"
|
|||||||
hugetlbfs_mount = \"/dev/hugepages\"
|
hugetlbfs_mount = \"/dev/hugepages\"
|
||||||
|
|
||||||
relaxed_acs_check = 1
|
relaxed_acs_check = 1
|
||||||
|
|
||||||
|
vnc_allow_host_audio = 1
|
||||||
"
|
"
|
||||||
|
|
||||||
test Libvirtd_qemu.lns get conf =
|
test Libvirtd_qemu.lns get conf =
|
||||||
@ -204,3 +206,5 @@ relaxed_acs_check = 1
|
|||||||
{ "hugetlbfs_mount" = "/dev/hugepages" }
|
{ "hugetlbfs_mount" = "/dev/hugepages" }
|
||||||
{ "#empty" }
|
{ "#empty" }
|
||||||
{ "relaxed_acs_check" = "1" }
|
{ "relaxed_acs_check" = "1" }
|
||||||
|
{ "#empty" }
|
||||||
|
{ "vnc_allow_host_audio" = "1" }
|
||||||
|
Loading…
Reference in New Issue
Block a user