Unify spice_usb_device_get_description and spice_usb_backend_device_description They were doing the same thing. This make spice_usb_backend_device_description more consistent supporting any device, not only emulated --- src/usb-backend.c | 42 +++++++++++++++++++++++++++++++--------- src/usb-backend.h | 2 +- src/usb-device-manager.c | 29 +-------------------------- 3 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/usb-backend.c b/src/usb-backend.c index 0a830dfb..67fd63c3 100644 --- a/src/usb-backend.c +++ b/src/usb-backend.c @@ -42,6 +42,7 @@ #include "usb-emulation.h" #include "channel-usbredir-priv.h" #include "spice-channel-priv.h" +#include "usbutil.h" #define LOUD_DEBUG(x, ...) @@ -845,19 +846,42 @@ spice_usb_backend_channel_get_guest_filter(SpiceUsbBackendChannel *ch, } } -gchar * spice_usb_backend_device_description(SpiceUsbBackendDevice *dev, - const gchar *format) +gchar * spice_usb_backend_device_get_description(SpiceUsbBackendDevice *dev, + const gchar *format) { - if (!dev->edev) { - return g_strdup("Not available for libusb devices"); + guint16 bus, address, vid, pid; + gchar *description, *descriptor, *manufacturer = NULL, *product = NULL; + + g_return_val_if_fail(dev != NULL, NULL); + + bus = dev->device_info.bus; + address = dev->device_info.address; + vid = dev->device_info.vid; + pid = dev->device_info.pid; + + if ((vid > 0) && (pid > 0)) { + descriptor = g_strdup_printf("[%04x:%04x]", vid, pid); + } else { + descriptor = g_strdup(""); } - gchar *description, *descriptor, *product; - descriptor = g_strdup_printf("[%04x:%04x]", dev->device_info.vid, dev->device_info.pid); - product = device_ops(dev->edev)->get_product_description(dev->edev); - description = g_strdup_printf(format, "", product, descriptor, - dev->device_info.bus, dev->device_info.address); + + if (dev->libusb_device) { + spice_usb_util_get_device_strings(bus, address, vid, pid, + &manufacturer, &product); + } else { + product = device_ops(dev->edev)->get_product_description(dev->edev); + } + + if (!format) + format = _("%s %s %s at %d-%d"); + + description = g_strdup_printf(format, manufacturer ? manufacturer : "", + product, descriptor, bus, address); + + g_free(manufacturer); g_free(descriptor); g_free(product); + return description; } diff --git a/src/usb-backend.h b/src/usb-backend.h index e898d68a..df24fa56 100644 --- a/src/usb-backend.h +++ b/src/usb-backend.h @@ -97,6 +97,7 @@ void spice_usb_backend_channel_get_guest_filter(SpiceUsbBackendChannel *ch, const struct usbredirfilter_rule **rules, int *count); void spice_usb_backend_return_write_data(SpiceUsbBackendChannel *ch, void *data); +gchar *spice_usb_backend_device_get_description(SpiceUsbBackendDevice *dev, const gchar *format); typedef struct UsbCreateDeviceParameters { @@ -116,7 +117,6 @@ typedef struct UsbCreateDeviceParameters gboolean spice_usb_backend_create_device(SpiceUsbBackend *be, UsbEmulatedDeviceType dev_type, UsbCreateDeviceParameters *param); -gchar *spice_usb_backend_device_description(SpiceUsbBackendDevice *dev, const gchar *format); void spice_usb_backend_device_eject(SpiceUsbBackend *be, SpiceUsbBackendDevice *device); void spice_usb_backend_device_report_change(SpiceUsbBackend *be, SpiceUsbBackendDevice *device); diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c index 544e5687..743db9b7 100644 --- a/src/usb-device-manager.c +++ b/src/usb-device-manager.c @@ -32,7 +32,6 @@ #endif #include "channel-usbredir-priv.h" -#include "usbutil.h" #endif #include "spice-session-priv.h" @@ -1435,35 +1434,9 @@ spice_usb_device_manager_can_redirect_device(SpiceUsbDeviceManager *self, gchar *spice_usb_device_get_description(SpiceUsbDevice *device, const gchar *format) { #ifdef USE_USBREDIR - guint16 bus, address, vid, pid; - gchar *description, *descriptor, *manufacturer = NULL, *product = NULL; - g_return_val_if_fail(device != NULL, NULL); - bus = spice_usb_device_get_busnum(device); - address = spice_usb_device_get_devaddr(device); - vid = spice_usb_device_get_vid(device); - pid = spice_usb_device_get_pid(device); - - if ((vid > 0) && (pid > 0)) { - descriptor = g_strdup_printf("[%04x:%04x]", vid, pid); - } else { - descriptor = g_strdup(""); - } - - spice_usb_util_get_device_strings(bus, address, vid, pid, - &manufacturer, &product); - - if (!format) - format = _("%s %s %s at %d-%d"); - - description = g_strdup_printf(format, manufacturer, product, descriptor, bus, address); - - g_free(manufacturer); - g_free(descriptor); - g_free(product); - - return description; + return spice_usb_backend_device_get_description(device->bdev, format); #else return NULL; #endif -- 2.20.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel