[Spice-devel] [PATCH] [spice-gtk v2] usb-device: Expose libusb device
Fabiano Fidêncio
fidencio at redhat.com
Tue Nov 18 19:37:04 PST 2014
ping?
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);
More information about the Spice-devel
mailing list