Detect USB device disconnection
The device disconnection is detected when the video socket closes. In order to introduce an OTG mode (HID events) without mirroring (and without server), we must be able to detect USB device disconnection. This feature will only be used in OTG mode. PR #2974 <https://github.com/Genymobile/scrcpy/pull/2974>
This commit is contained in:
@@ -6,9 +6,26 @@
|
||||
#include <stdbool.h>
|
||||
#include <libusb-1.0/libusb.h>
|
||||
|
||||
#include "util/thread.h"
|
||||
|
||||
struct sc_usb {
|
||||
libusb_context *context;
|
||||
libusb_device_handle *handle;
|
||||
|
||||
const struct sc_usb_callbacks *cbs;
|
||||
void *cbs_userdata;
|
||||
|
||||
bool has_callback_handle;
|
||||
libusb_hotplug_callback_handle callback_handle;
|
||||
|
||||
bool has_libusb_event_thread;
|
||||
sc_thread libusb_event_thread;
|
||||
|
||||
atomic_bool stopped; // only used if cbs != NULL
|
||||
};
|
||||
|
||||
struct sc_usb_callbacks {
|
||||
void (*on_disconnected)(struct sc_usb *usb, void *userdata);
|
||||
};
|
||||
|
||||
struct sc_usb_device {
|
||||
@@ -37,9 +54,16 @@ sc_usb_find_devices(struct sc_usb *usb, const char *serial,
|
||||
struct sc_usb_device *devices, size_t len);
|
||||
|
||||
bool
|
||||
sc_usb_connect(struct sc_usb *usb, libusb_device *device);
|
||||
sc_usb_connect(struct sc_usb *usb, libusb_device *device,
|
||||
const struct sc_usb_callbacks *cbs, void *cbs_userdata);
|
||||
|
||||
void
|
||||
sc_usb_disconnect(struct sc_usb *usb);
|
||||
|
||||
void
|
||||
sc_usb_stop(struct sc_usb *usb);
|
||||
|
||||
void
|
||||
sc_usb_join(struct sc_usb *usb);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user