Add move-function for sc_usb_device
Add a function to "move" a sc_usb_device into another instance. This will avoid unnecessary copies. PR #3005 <https://github.com/Genymobile/scrcpy/pull/3005>
This commit is contained in:
parent
8c50342fb2
commit
b88c4aa75e
2 changed files with 24 additions and 1 deletions
|
@ -72,12 +72,23 @@ accept_device(libusb_device *device, const char *serial,
|
|||
|
||||
void
|
||||
sc_usb_device_destroy(struct sc_usb_device *usb_device) {
|
||||
if (usb_device->device) {
|
||||
libusb_unref_device(usb_device->device);
|
||||
}
|
||||
free(usb_device->serial);
|
||||
free(usb_device->manufacturer);
|
||||
free(usb_device->product);
|
||||
}
|
||||
|
||||
void
|
||||
sc_usb_device_move(struct sc_usb_device *dst, struct sc_usb_device *src) {
|
||||
*dst = *src;
|
||||
src->device = NULL;
|
||||
src->serial = NULL;
|
||||
src->manufacturer = NULL;
|
||||
src->product = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
sc_usb_devices_destroy_all(struct sc_usb_device *usb_devices, size_t count) {
|
||||
for (size_t i = 0; i < count; ++i) {
|
||||
|
|
|
@ -40,6 +40,18 @@ struct sc_usb_device {
|
|||
void
|
||||
sc_usb_device_destroy(struct sc_usb_device *usb_device);
|
||||
|
||||
/**
|
||||
* Move src to dst
|
||||
*
|
||||
* After this call, the content of src is undefined, except that
|
||||
* sc_usb_device_destroy() can be called.
|
||||
*
|
||||
* This is useful to take a device from a list that will be destroyed, without
|
||||
* making unnecessary copies.
|
||||
*/
|
||||
void
|
||||
sc_usb_device_move(struct sc_usb_device *dst, struct sc_usb_device *src);
|
||||
|
||||
void
|
||||
sc_usb_devices_destroy_all(struct sc_usb_device *usb_devices, size_t count);
|
||||
|
||||
|
|
Loading…
Reference in a new issue