78 lines
2.7 KiB
Diff
78 lines
2.7 KiB
Diff
|
From 4721ceb9b85daabe53804627473b06ced821c695 Mon Sep 17 00:00:00 2001
|
||
|
From: Daniel P. Berrange <berrange@redhat.com>
|
||
|
Date: Mon, 14 Sep 2009 11:23:20 +0100
|
||
|
Subject: [PATCH] Allow control over QEMU audio backend
|
||
|
|
||
|
When using VNC for graphics + keyboard + mouse, we shouldn't
|
||
|
then use the host OS for audio. Audio should go back over
|
||
|
VNC.
|
||
|
|
||
|
When using SDL for graphics, we should use the host OS for
|
||
|
audio since that's where the display is. We need to allow
|
||
|
certain QEMU env variables to be passed through to guest
|
||
|
too to allow choice of QEMU audio backend.
|
||
|
|
||
|
* qemud/libvirtd.sysconf: Mention QEMU/SDL audio env vars
|
||
|
* src/qemu_conf.c: Passthrough QEMU/SDL audio env for SDL display,
|
||
|
disable host audio for VNC display
|
||
|
|
||
|
(cherry picked from commit b08e6d38ae7a0ed70300d7d82107f83fddb60f44)
|
||
|
|
||
|
Fedora-patch: libvirt-disable-audio-backend.patch
|
||
|
---
|
||
|
qemud/libvirtd.sysconf | 8 ++++++++
|
||
|
src/qemu_conf.c | 14 ++++++++++++++
|
||
|
2 files changed, 22 insertions(+), 0 deletions(-)
|
||
|
|
||
|
diff --git a/qemud/libvirtd.sysconf b/qemud/libvirtd.sysconf
|
||
|
index fe4596a..28080a0 100644
|
||
|
--- a/qemud/libvirtd.sysconf
|
||
|
+++ b/qemud/libvirtd.sysconf
|
||
|
@@ -7,3 +7,11 @@
|
||
|
|
||
|
# Override Kerberos service keytab for SASL/GSSAPI
|
||
|
#KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||
|
+
|
||
|
+# Override the QEMU/SDL default audio driver probing when
|
||
|
+# starting virtual machines using SDL graphics
|
||
|
+#
|
||
|
+# NB these have no effect for VMs using VNC
|
||
|
+#QEMU_AUDIO_DRV=sdl
|
||
|
+#
|
||
|
+#SDL_AUDIODRIVER=pulse
|
||
|
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
|
||
|
index f92bcef..0dd0624 100644
|
||
|
--- a/src/qemu_conf.c
|
||
|
+++ b/src/qemu_conf.c
|
||
|
@@ -2109,6 +2109,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
||
|
ADD_ARG_LIT("-k");
|
||
|
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.
|
||
|
+ */
|
||
|
+ ADD_ENV_LIT("QEMU_AUDIO_DRV=none");
|
||
|
} else if ((def->ngraphics == 1) &&
|
||
|
def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) {
|
||
|
char *xauth = NULL;
|
||
|
@@ -2131,6 +2138,13 @@ int qemudBuildCommandLine(virConnectPtr conn,
|
||
|
ADD_ENV(display);
|
||
|
if (def->graphics[0]->data.sdl.fullscreen)
|
||
|
ADD_ARG_LIT("-full-screen");
|
||
|
+
|
||
|
+ /* If using SDL for video, then we should just let it
|
||
|
+ * use QEMU's host audio drivers, possibly SDL too
|
||
|
+ * User can set these two before starting libvirtd
|
||
|
+ */
|
||
|
+ ADD_ENV_COPY("QEMU_AUDIO_DRV");
|
||
|
+ ADD_ENV_COPY("SDL_AUDIODRIVER");
|
||
|
}
|
||
|
|
||
|
if (def->nvideos) {
|
||
|
--
|
||
|
1.6.2.5
|
||
|
|