devices: usb: host: don't use Descriptor as temporary descriptor storage
We can avoid temporarily storing the descriptor by passing a reference
to the providing device directly to EventLoop::add_event().
BUG=233968702
TEST=cargo build
Change-Id: I78ce17b8a2c7c8a695cf65597459719812c175a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3670103
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Michael Hoyle <mikehoyle@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
diff --git a/devices/src/usb/host_backend/host_backend_device_provider.rs b/devices/src/usb/host_backend/host_backend_device_provider.rs
index 8919e02..541d161 100644
--- a/devices/src/usb/host_backend/host_backend_device_provider.rs
+++ b/devices/src/usb/host_backend/host_backend_device_provider.rs
@@ -13,7 +13,7 @@
use crate::utils::{EventHandler, EventLoop, FailHandle};
use anyhow::Context;
-use base::{error, AsRawDescriptor, Descriptor, RawDescriptor, Tube, WatchingEvents};
+use base::{error, AsRawDescriptor, RawDescriptor, Tube, WatchingEvents};
use std::collections::HashMap;
use std::mem;
use std::time::Duration;
@@ -163,8 +163,6 @@
}
};
- let device_descriptor = Descriptor(device.as_raw_descriptor());
-
let arc_mutex_device = Arc::new(Mutex::new(device));
let event_handler: Arc<dyn EventHandler> = Arc::new(UsbUtilEventHandler {
@@ -172,7 +170,7 @@
});
if let Err(e) = self.event_loop.add_event(
- &device_descriptor,
+ &*arc_mutex_device.lock(),
WatchingEvents::empty().set_read().set_write(),
Arc::downgrade(&event_handler),
) {