Hi, On 11/19/2014 04:37 AM, Fabiano Fidêncio wrote: > ping? Looks good to me. Regards, Hans > > On Thu, 2014-11-13 at 02:32 +0100, Fabiano Fidêncio wrote: >> As we only can filter USB devices by their Classes and sometimes it is >> not enough (eg: I do not want to have Keyboard and Mouse, but I want to >> have Joysticks, being all of them part of HID Class), let's expose the >> libusb device associated to the SpiceUsbDevice, so the applications can >> have access to whatever information they need, directly from the libusb >> device, to refine their filters. >> --- >> Changes since v1: >> - The approach is completely different. In the first version of the patch >> I've added a new API to get, specifically, class, subclass and protocol >> of a libusb device. Discussing this approach with Marc-André and taking >> into consideration that, from Boxes, we could refine the filter once we >> have access to the libusb device I've decided to keep it simple in the >> spice-gtk and give more freedom to the applications access whatever >> they need from their side. >> --- >> gtk/map-file | 1 + >> gtk/spice-glib-sym-file | 1 + >> gtk/usb-device-manager.c | 25 +++++++++++++++++++++++++ >> gtk/usb-device-manager.h | 1 + >> 4 files changed, 28 insertions(+) >> >> diff --git a/gtk/map-file b/gtk/map-file >> index 9f8d04e..3e9624f 100644 >> --- a/gtk/map-file >> +++ b/gtk/map-file >> @@ -114,6 +114,7 @@ spice_uri_set_scheme; >> spice_uri_set_user; >> spice_uri_to_string; >> spice_usb_device_get_description; >> +spice_usb_device_get_libusb_device; >> spice_usb_device_get_type; >> spice_usb_device_manager_can_redirect_device; >> spice_usb_device_manager_connect_device_async; >> diff --git a/gtk/spice-glib-sym-file b/gtk/spice-glib-sym-file >> index 2189fa5..6ea8aeb 100644 >> --- a/gtk/spice-glib-sym-file >> +++ b/gtk/spice-glib-sym-file >> @@ -91,6 +91,7 @@ spice_uri_set_scheme >> spice_uri_set_user >> spice_uri_to_string >> spice_usb_device_get_description >> +spice_usb_device_get_libusb_device >> spice_usb_device_get_type >> spice_usb_device_manager_can_redirect_device >> spice_usb_device_manager_connect_device_async >> diff --git a/gtk/usb-device-manager.c b/gtk/usb-device-manager.c >> index 5013b6c..824264c 100644 >> --- a/gtk/usb-device-manager.c >> +++ b/gtk/usb-device-manager.c >> @@ -706,6 +706,31 @@ static gboolean spice_usb_device_manager_get_device_descriptor( >> return TRUE; >> } >> >> + >> +/** >> + * spice_usb_device_get_libusb_device: >> + * @device: #SpiceUsbDevice to get the descriptor information of >> + * >> + * Returns: (transfer none): the %libusb_device associated to %SpiceUsbDevice. >> + * >> + * Since: 0.27 >> + **/ >> +gconstpointer >> +spice_usb_device_get_libusb_device(const SpiceUsbDevice *device G_GNUC_UNUSED) >> +{ >> +#ifdef USE_USBREDIR >> +#ifndef G_OS_WIN32 >> + const SpiceUsbDeviceInfo *info = (const SpiceUsbDeviceInfo *)device; >> + >> + g_return_val_if_fail(info != NULL, FALSE); >> + >> + return info->libdev; >> +#endif >> +#else >> + return NULL; >> +#endif >> +} >> + >> static gboolean spice_usb_device_manager_get_libdev_vid_pid( >> libusb_device *libdev, int *vid, int *pid) >> { >> diff --git a/gtk/usb-device-manager.h b/gtk/usb-device-manager.h >> index a7e3515..5b4cfbe 100644 >> --- a/gtk/usb-device-manager.h >> +++ b/gtk/usb-device-manager.h >> @@ -89,6 +89,7 @@ GType spice_usb_device_get_type(void); >> GType spice_usb_device_manager_get_type(void); >> >> gchar *spice_usb_device_get_description(SpiceUsbDevice *device, const gchar *format); >> +gconstpointer spice_usb_device_get_libusb_device(const SpiceUsbDevice *device); >> >> SpiceUsbDeviceManager *spice_usb_device_manager_get(SpiceSession *session, >> GError **err); > > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel