SI_GCAdapter: properly clean up libusb
This commit is contained in:
parent
1b4b836731
commit
fffd890be3
|
@ -28,6 +28,7 @@ static std::thread s_adapter_thread;
|
||||||
static Common::Flag s_adapter_thread_running;
|
static Common::Flag s_adapter_thread_running;
|
||||||
|
|
||||||
static bool s_libusb_driver_not_supported = false;
|
static bool s_libusb_driver_not_supported = false;
|
||||||
|
static libusb_context* s_libusb_context = nullptr;
|
||||||
|
|
||||||
static u8 s_endpoint_in = 0;
|
static u8 s_endpoint_in = 0;
|
||||||
static u8 s_endpoint_out = 0;
|
static u8 s_endpoint_out = 0;
|
||||||
|
@ -62,7 +63,7 @@ void Init()
|
||||||
s_controller_rumble[i] = 0;
|
s_controller_rumble[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = libusb_init(nullptr);
|
int ret = libusb_init(&s_libusb_context);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
|
@ -176,7 +177,7 @@ void Init()
|
||||||
|
|
||||||
void Shutdown()
|
void Shutdown()
|
||||||
{
|
{
|
||||||
if (s_handle == nullptr || !SConfig::GetInstance().m_GameCubeAdapter)
|
if (!SConfig::GetInstance().m_GameCubeAdapter)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (s_adapter_thread_running.TestAndClear())
|
if (s_adapter_thread_running.TestAndClear())
|
||||||
|
@ -184,13 +185,22 @@ void Shutdown()
|
||||||
s_adapter_thread.join();
|
s_adapter_thread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s_handle)
|
||||||
|
{
|
||||||
libusb_close(s_handle);
|
libusb_close(s_handle);
|
||||||
s_libusb_driver_not_supported = false;
|
s_handle = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < MAX_SI_CHANNELS; i++)
|
for (int i = 0; i < MAX_SI_CHANNELS; i++)
|
||||||
s_controller_type[i] = CONTROLLER_NONE;
|
s_controller_type[i] = CONTROLLER_NONE;
|
||||||
|
|
||||||
s_handle = nullptr;
|
if (s_libusb_context)
|
||||||
|
{
|
||||||
|
libusb_exit(s_libusb_context);
|
||||||
|
s_libusb_context = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
s_libusb_driver_not_supported = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Input(int chan, GCPadStatus* pad)
|
void Input(int chan, GCPadStatus* pad)
|
||||||
|
|
Loading…
Reference in New Issue