123 lines
4.8 KiB
Diff
123 lines
4.8 KiB
Diff
diff -rup libvirt-0.7.1/qemud/libvirtd.init.in audio/qemud/libvirtd.init.in
|
|
--- libvirt-0.7.1/qemud/libvirtd.init.in 2009-07-22 09:37:32.000000000 -0400
|
|
+++ audio/qemud/libvirtd.init.in 2010-05-26 12:05:50.584822000 -0400
|
|
@@ -47,6 +47,9 @@ KRB5_KTNAME=/etc/libvirt/krb5.tab
|
|
|
|
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
|
|
|
+export QEMU_AUDIO_DRV
|
|
+export SDL_AUDIODRIVER
|
|
+
|
|
LIBVIRTD_CONFIG_ARGS=
|
|
if [ -n "$LIBVIRTD_CONFIG" ]
|
|
then
|
|
diff -rup libvirt-0.7.1/qemud/libvirtd_qemu.aug audio/qemud/libvirtd_qemu.aug
|
|
--- libvirt-0.7.1/qemud/libvirtd_qemu.aug 2009-09-08 10:16:02.000000000 -0400
|
|
+++ audio/qemud/libvirtd_qemu.aug 2010-05-26 12:07:24.169216000 -0400
|
|
@@ -36,6 +36,7 @@ module Libvirtd_qemu =
|
|
| str_array_entry "cgroup_device_acl"
|
|
| str_entry "save_image_format"
|
|
| str_entry "hugetlbfs_mount"
|
|
+ | bool_entry "vnc_allow_host_audio"
|
|
|
|
(* Each enty in the config is one of the following three ... *)
|
|
let entry = vnc_entry
|
|
diff -rup libvirt-0.7.1/qemud/libvirtd.sysconf audio/qemud/libvirtd.sysconf
|
|
--- libvirt-0.7.1/qemud/libvirtd.sysconf 2010-05-26 12:04:08.379130000 -0400
|
|
+++ audio/qemud/libvirtd.sysconf 2010-05-26 12:10:28.263486000 -0400
|
|
@@ -11,7 +11,8 @@
|
|
# Override the QEMU/SDL default audio driver probing when
|
|
# starting virtual machines using SDL graphics
|
|
#
|
|
-# NB these have no effect for VMs using VNC
|
|
+# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
|
|
+# is enabled in /etc/libvirt/qemu.conf
|
|
#QEMU_AUDIO_DRV=sdl
|
|
#
|
|
#SDL_AUDIODRIVER=pulse
|
|
diff -rup libvirt-0.7.1/qemud/test_libvirtd_qemu.aug audio/qemud/test_libvirtd_qemu.aug
|
|
--- libvirt-0.7.1/qemud/test_libvirtd_qemu.aug 2009-09-08 10:16:02.000000000 -0400
|
|
+++ audio/qemud/test_libvirtd_qemu.aug 2010-05-26 12:11:19.540907000 -0400
|
|
@@ -92,6 +92,8 @@ cgroup_device_acl = [ \"/dev/null\", \"/
|
|
|
|
save_image_format = \"gzip\"
|
|
|
|
+vnc_allow_host_audio = 1
|
|
+
|
|
hugetlbfs_mount = \"/dev/hugepages\"
|
|
"
|
|
|
|
@@ -195,4 +197,6 @@ hugetlbfs_mount = \"/dev/hugepages\"
|
|
{ "#empty" }
|
|
{ "save_image_format" = "gzip" }
|
|
{ "#empty" }
|
|
-{ "hugetlbfs_mount" = "/dev/hugepages" }
|
|
\ No newline at end of file
|
|
+{ "hugetlbfs_mount" = "/dev/hugepages" }
|
|
+{ "#empty" }
|
|
+{ "vnc_allow_host_audio" = "1" }
|
|
diff -rup libvirt-0.7.1/src/qemu.conf audio/src/qemu.conf
|
|
--- libvirt-0.7.1/src/qemu.conf 2009-09-10 05:15:56.000000000 -0400
|
|
+++ audio/src/qemu.conf 2010-05-26 12:08:12.419811000 -0400
|
|
@@ -152,3 +152,13 @@
|
|
# in a location of $MOUNTPOINT/libvirt/qemu
|
|
|
|
# hugetlbfs_mount = "/dev/hugepages"
|
|
+#
|
|
+
|
|
+# 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
|
|
diff -rup libvirt-0.7.1/src/qemu_conf.c audio/src/qemu_conf.c
|
|
--- libvirt-0.7.1/src/qemu_conf.c 2010-05-26 12:04:08.578062000 -0400
|
|
+++ audio/src/qemu_conf.c 2010-05-26 12:09:31.174206000 -0400
|
|
@@ -318,6 +318,10 @@ int qemudLoadDriverConfig(struct qemud_d
|
|
}
|
|
}
|
|
|
|
+ p = virConfGetValue (conf, "vnc_allow_host_audio");
|
|
+ CHECK_TYPE ("vnc_allow_host_audio", VIR_CONF_LONG);
|
|
+ if (p) driver->vncAllowHostAudio = p->l;
|
|
+
|
|
virConfFree (conf);
|
|
return 0;
|
|
}
|
|
@@ -2113,12 +2117,15 @@ int qemudBuildCommandLine(virConnectPtr
|
|
ADD_ARG_LIT(def->graphics[0]->data.vnc.keymap);
|
|
}
|
|
|
|
- /* QEMU implements a VNC extension for providing audio, so we
|
|
- * set the audio backend to none, to prevent it opening the
|
|
- * host OS audio devices since that causes security issues
|
|
- * and is non-sensical when using VNC.
|
|
+ /* Unless user requested it, set the audio backend to none, to
|
|
+ * prevent it opening the host OS audio devices, since that causes
|
|
+ * security issues and might not work 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) &&
|
|
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
|
char *xauth = NULL;
|
|
diff -rup libvirt-0.7.1/src/qemu_conf.h audio/src/qemu_conf.h
|
|
--- libvirt-0.7.1/src/qemu_conf.h 2009-09-10 09:45:00.000000000 -0400
|
|
+++ audio/src/qemu_conf.h 2010-05-26 12:10:07.196992000 -0400
|
|
@@ -110,6 +110,8 @@ struct qemud_driver {
|
|
char *hugetlbfs_mount;
|
|
char *hugepage_path;
|
|
|
|
+ unsigned int vncAllowHostAudio : 1;
|
|
+
|
|
virCapsPtr caps;
|
|
|
|
/* An array of callbacks */
|