From: Daniel P. Berrange Date: Wed, 6 Jan 2010 18:31:00 +0000 (+0000) Subject: Convert USB input devices to -device X-Git-Tag: v0.7.6~136 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8d43d06877429ef7070be2b473acc6ae11d3f74;p=thirdparty%2Flibvirt.git Convert USB input devices to -device --- diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 84358c1284..2d09e6e8d3 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -2268,6 +2268,28 @@ error: } +static char *qemuBuildUSBInputDevStr(virDomainInputDefPtr dev) +{ + virBuffer buf = VIR_BUFFER_INITIALIZER; + + virBufferVSprintf(&buf, "%s", + dev->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? + "usb-mouse" : "usb-tablet"); + virBufferVSprintf(&buf, ",id=%s", dev->info.alias); + + if (virBufferError(&buf)) { + virReportOOMError(NULL); + goto error; + } + + return virBufferContentAndReset(&buf); + +error: + virBufferFreeAndReset(&buf); + return NULL; +} + + static char * qemuBuildSoundDevStr(virDomainSoundDefPtr sound) { @@ -3274,8 +3296,16 @@ int qemudBuildCommandLine(virConnectPtr conn, virDomainInputDefPtr input = def->inputs[i]; if (input->bus == VIR_DOMAIN_INPUT_BUS_USB) { - ADD_ARG_LIT("-usbdevice"); - ADD_ARG_LIT(input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? "mouse" : "tablet"); + if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) { + char *optstr; + ADD_ARG_LIT("-device"); + if (!(optstr = qemuBuildUSBInputDevStr(input))) + goto error; + ADD_ARG(optstr); + } else { + ADD_ARG_LIT("-usbdevice"); + ADD_ARG_LIT(input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ? "mouse" : "tablet"); + } } }