]> xenbits.xensource.com Git - libvirt.git/commitdiff
Convert USB input devices to -device
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 6 Jan 2010 18:31:00 +0000 (18:31 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 18 Jan 2010 13:55:56 +0000 (13:55 +0000)
src/qemu/qemu_conf.c

index 84358c1284a634fc7965d6e8011b8d181118cbb6..2d09e6e8d38f3773f7b0df3bc3c82989f838eae2 100644 (file)
@@ -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");
+            }
         }
     }