I'm not sure why this code was written to compare the strings that it
had just retrieved from an enum->string conversion, rather than just
look at the original enum values, but this yields the same results,
and is much more efficient (especially as you add more devices).
This is a prerequisite for patches to resolve:
https://bugzilla.redhat.com/show_bug.cgi?id=1003983
---
src/qemu/qemu_command.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 280d8d2..3156cff 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -5269,13 +5269,18 @@ qemuBuildSoundDevStr(virDomainDefPtr def,
goto error;
}
- /* Hack for weirdly unusual devices name in QEMU */
- if (STREQ(model, "es1370"))
+ /* Hack for devices with different names in QEMU and libvirt */
+ switch (sound->model) {
+ case VIR_DOMAIN_SOUND_MODEL_ES1370:
model = "ES1370";
- else if (STREQ(model, "ac97"))
+ break;
+ case VIR_DOMAIN_SOUND_MODEL_AC97:
model = "AC97";
- else if (STREQ(model, "ich6"))
+ break;
+ case VIR_DOMAIN_SOUND_MODEL_ICH6:
model = "intel-hda";
+ break;
+ }
virBufferAsprintf(&buf, "%s,id=%s", model, sound->info.alias);
if (qemuBuildDeviceAddressStr(&buf, def, &sound->info, qemuCaps) < 0)
--
1.8.3.1