diff --git a/buttplug/src/client/client_event_loop.rs b/buttplug/src/client/client_event_loop.rs index 6b6bc6d5a..caf8e53b2 100644 --- a/buttplug/src/client/client_event_loop.rs +++ b/buttplug/src/client/client_event_loop.rs @@ -314,6 +314,7 @@ where let device = self.create_client_device(d); self.send_client_event(ButtplugClientEvent::DeviceAdded(device)); } + self.send_client_event(ButtplugClientEvent::DeviceListReceived); true } } diff --git a/buttplug/src/client/mod.rs b/buttplug/src/client/mod.rs index 5af9ebaa2..f0bebf966 100644 --- a/buttplug/src/client/mod.rs +++ b/buttplug/src/client/mod.rs @@ -128,6 +128,9 @@ pub enum ButtplugClientEvent { /// Emitted when a device has been removed from the server. Includes a /// [ButtplugClientDevice] object representing the device. DeviceRemoved(Arc), + /// Emitted when the device list is received as a response to a + /// DeviceListRequest call, which is sent during the handshake. + DeviceListReceived, /// Emitted when a client has not pinged the server in a sufficient amount of /// time. PingTimeout, diff --git a/buttplug/tests/test_client.rs b/buttplug/tests/test_client.rs index 92951efc6..05fcededc 100644 --- a/buttplug/tests/test_client.rs +++ b/buttplug/tests/test_client.rs @@ -142,6 +142,10 @@ async fn test_client_scanning_finished() { let (client, _) = test_client_with_device().await; let mut recv = client.event_stream(); assert!(client.start_scanning().await.is_ok()); + assert!(matches!( + recv.next().await.expect("Test, assuming infallible."), + ButtplugClientEvent::DeviceListReceived + )); assert!(matches!( recv.next().await.expect("Test, assuming infallible."), ButtplugClientEvent::ScanningFinished