mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
vbox: cleanup vboxAttachUSB
This cleanup flattens deeply nested code. Signed-off-by: Ryota Ozaki <ozaki.ryota@gmail.com>
This commit is contained in:
parent
55d1285ef4
commit
1868b4574e
@ -4852,28 +4852,35 @@ vboxAttachUSB(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
|
||||
* usual
|
||||
*/
|
||||
for (i = 0; i < def->nhostdevs; i++) {
|
||||
if (def->hostdevs[i]->mode ==
|
||||
VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
|
||||
if (def->hostdevs[i]->source.subsys.type ==
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
|
||||
if (def->hostdevs[i]->source.subsys.u.usb.vendor ||
|
||||
def->hostdevs[i]->source.subsys.u.usb.product) {
|
||||
if (def->hostdevs[i]->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
|
||||
continue;
|
||||
|
||||
if (def->hostdevs[i]->source.subsys.type !=
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB)
|
||||
continue;
|
||||
|
||||
if (!def->hostdevs[i]->source.subsys.u.usb.vendor &&
|
||||
!def->hostdevs[i]->source.subsys.u.usb.product)
|
||||
continue;
|
||||
|
||||
VIR_DEBUG("USB Device detected, VendorId:0x%x, ProductId:0x%x",
|
||||
def->hostdevs[i]->source.subsys.u.usb.vendor,
|
||||
def->hostdevs[i]->source.subsys.u.usb.product);
|
||||
isUSB = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isUSB) {
|
||||
if (!isUSB)
|
||||
return;
|
||||
|
||||
/* First Start the USB Controller and then loop
|
||||
* to attach USB Devices to it
|
||||
*/
|
||||
machine->vtbl->GetUSBController(machine, &USBController);
|
||||
if (USBController) {
|
||||
|
||||
if (!USBController)
|
||||
return;
|
||||
|
||||
USBController->vtbl->SetEnabled(USBController, 1);
|
||||
#if VBOX_API_VERSION < 4002
|
||||
USBController->vtbl->SetEnabledEhci(USBController, 1);
|
||||
@ -4882,14 +4889,20 @@ vboxAttachUSB(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
|
||||
#endif
|
||||
|
||||
for (i = 0; i < def->nhostdevs; i++) {
|
||||
if (def->hostdevs[i]->mode ==
|
||||
VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
|
||||
if (def->hostdevs[i]->source.subsys.type ==
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
|
||||
|
||||
char *filtername = NULL;
|
||||
PRUnichar *filternameUtf16 = NULL;
|
||||
IUSBDeviceFilter *filter = NULL;
|
||||
PRUnichar *vendorIdUtf16 = NULL;
|
||||
char vendorId[40] = {0};
|
||||
PRUnichar *productIdUtf16 = NULL;
|
||||
char productId[40] = {0};
|
||||
|
||||
if (def->hostdevs[i]->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
|
||||
continue;
|
||||
|
||||
if (def->hostdevs[i]->source.subsys.type !=
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB)
|
||||
continue;
|
||||
|
||||
/* Zero pad for nice alignment when fewer than 9999
|
||||
* devices.
|
||||
@ -4903,14 +4916,12 @@ vboxAttachUSB(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
|
||||
}
|
||||
VBOX_UTF16_FREE(filternameUtf16);
|
||||
|
||||
if (filter &&
|
||||
(def->hostdevs[i]->source.subsys.u.usb.vendor ||
|
||||
def->hostdevs[i]->source.subsys.u.usb.product)) {
|
||||
if (!filter)
|
||||
continue;
|
||||
|
||||
PRUnichar *vendorIdUtf16 = NULL;
|
||||
char vendorId[40] = {0};
|
||||
PRUnichar *productIdUtf16 = NULL;
|
||||
char productId[40] = {0};
|
||||
if (!def->hostdevs[i]->source.subsys.u.usb.vendor &&
|
||||
!def->hostdevs[i]->source.subsys.u.usb.product)
|
||||
continue;
|
||||
|
||||
if (def->hostdevs[i]->source.subsys.u.usb.vendor) {
|
||||
snprintf(vendorId, sizeof(vendorId), "%x",
|
||||
@ -4933,14 +4944,8 @@ vboxAttachUSB(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
|
||||
filter);
|
||||
VBOX_RELEASE(filter);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
VBOX_RELEASE(USBController);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
vboxAttachSharedFolder(virDomainDefPtr def, vboxGlobalData *data, IMachine *machine)
|
||||
|
Loading…
Reference in New Issue
Block a user