diff --git a/src/cab/out/OutputControllerList.cpp b/src/cab/out/OutputControllerList.cpp index 5e756ca..a52dbe7 100644 --- a/src/cab/out/OutputControllerList.cpp +++ b/src/cab/out/OutputControllerList.cpp @@ -64,8 +64,6 @@ void OutputControllerList::Finish() controller->Finish(); #ifdef __HIDAPI__ - Pinscape::ClearDevices(); - PinscapePico::ClearDevices(); DudesCab::ClearDevices(); UMXControllerAutoConfigurator::ClearDevices(); #endif diff --git a/src/cab/out/ps/Pinscape.cpp b/src/cab/out/ps/Pinscape.cpp index fee2855..698dccc 100644 --- a/src/cab/out/ps/Pinscape.cpp +++ b/src/cab/out/ps/Pinscape.cpp @@ -17,7 +17,12 @@ namespace DOF std::vector Pinscape::s_devices = { }; -void Pinscape::Initialize() { FindDevices(); } +void Pinscape::Initialize() +{ + if (!s_devices.empty()) + return; + FindDevices(); +} Pinscape::Pinscape() { diff --git a/src/cab/out/pspico/PinscapePico.cpp b/src/cab/out/pspico/PinscapePico.cpp index c562534..7ce872b 100644 --- a/src/cab/out/pspico/PinscapePico.cpp +++ b/src/cab/out/pspico/PinscapePico.cpp @@ -26,7 +26,12 @@ namespace DOF std::vector PinscapePico::s_devices = { }; -void PinscapePico::Initialize() { FindDevices(); } +void PinscapePico::Initialize() +{ + if (!s_devices.empty()) + return; + FindDevices(); +} PinscapePico::PinscapePico() { diff --git a/src/general/IOConfigurator.cpp b/src/general/IOConfigurator.cpp index 32e9e04..594f809 100644 --- a/src/general/IOConfigurator.cpp +++ b/src/general/IOConfigurator.cpp @@ -5,6 +5,8 @@ #ifdef __HIDAPI__ #include +#include "../cab/out/ps/Pinscape.h" +#include "../cab/out/pspico/PinscapePico.h" #endif #include @@ -44,6 +46,8 @@ void IOConfigurator::Shutdown() } #endif #ifdef __HIDAPI__ + Pinscape::ClearDevices(); + PinscapePico::ClearDevices(); hid_exit(); #endif }