Skip to main content

spice_client_glib/
usb_device.rs

1use glib::translate::*;
2
3use crate::UsbDevice;
4
5#[derive(Clone, Debug)]
6pub struct FakeUsbContext;
7
8impl rusb::UsbContext for FakeUsbContext {
9    fn as_raw(&self) -> *mut rusb::ffi::libusb_context {
10        unimplemented!()
11    }
12}
13
14impl UsbDevice {
15    #[doc(alias = "spice_usb_device_get_libusb_device")]
16    #[doc(alias = "get_libusb_device")]
17    pub fn libusb_device(&self) -> Option<rusb::Device<FakeUsbContext>> {
18        let ptr = unsafe { ffi::spice_usb_device_get_libusb_device(self.to_glib_none().0) };
19        std::ptr::NonNull::new(ptr as *mut _)
20            .map(|ptr| unsafe { rusb::Device::from_libusb(FakeUsbContext {}, ptr) })
21    }
22}