diff --git a/HandheldCompanion/Controllers/NeptuneController.cs b/HandheldCompanion/Controllers/NeptuneController.cs index df41961b1..c62193c4f 100644 --- a/HandheldCompanion/Controllers/NeptuneController.cs +++ b/HandheldCompanion/Controllers/NeptuneController.cs @@ -61,8 +61,10 @@ public NeptuneController(PnPDetails details) try { Controller = new neptune_hidapi.net.NeptuneController(); + Controller.OnControllerInputReceived = input => Task.Run(() => OnControllerInputReceived(input)); + Controller.Open(); - isConnected = true; + isConnected = !string.IsNullOrEmpty(Controller.SerialNumber); } catch (Exception ex) { @@ -332,7 +334,7 @@ public override void Plug() TimerManager.Tick += UpdateInputs; TimerManager.Tick += UpdateMovements; - Controller.OnControllerInputReceived = input => Task.Run(() => OnControllerInputReceived(input)); + Controller.Open(); SetHDRumble(UseHDRumble); @@ -354,7 +356,6 @@ public override void Unplug() SetLizardMouse(true); Controller.Close(); - isConnected = false; } catch { diff --git a/HandheldCompanion/Managers/ControllerManager.cs b/HandheldCompanion/Managers/ControllerManager.cs index 75a85f9a8..630441ebb 100644 --- a/HandheldCompanion/Managers/ControllerManager.cs +++ b/HandheldCompanion/Managers/ControllerManager.cs @@ -348,7 +348,7 @@ private static void HidDeviceArrived(PnPDetails details, DeviceEventArgs obj) Controllers[path] = controller; // first controller logic - if (!controller.IsVirtual() && GetTargetController() is null) + if (!controller.IsVirtual() && GetTargetController() is null && DeviceManager.IsInitialized) SetTargetController(controller.GetInstancePath()); // raise event @@ -424,7 +424,7 @@ private static void XUsbDeviceArrived(PnPDetails details, DeviceEventArgs obj) Controllers[path] = controller; // first controller logic - if (!controller.IsVirtual() && GetTargetController() is null) + if (!controller.IsVirtual() && GetTargetController() is null && DeviceManager.IsInitialized) SetTargetController(controller.GetInstancePath()); // raise event diff --git a/neptune-hidapi.net/NeptuneController.cs b/neptune-hidapi.net/NeptuneController.cs index 4053f6042..ec88e99c5 100644 --- a/neptune-hidapi.net/NeptuneController.cs +++ b/neptune-hidapi.net/NeptuneController.cs @@ -201,6 +201,7 @@ public void Close() _hidDevice.EndRead(); _hidDevice.Dispose(); _active = false; + _configureTask.Dispose(); } } } \ No newline at end of file