1
0
mirror of https://github.com/cathery/sys-con.git synced 2024-07-05 10:48:46 +00:00
sys-con/source/ControllerSwitch/SwitchVirtualGamepadHandler.cpp

61 lines
1.7 KiB
C++
Raw Normal View History

2019-10-31 18:00:42 +00:00
#include "SwitchVirtualGamepadHandler.h"
SwitchVirtualGamepadHandler::SwitchVirtualGamepadHandler(std::unique_ptr<IController> &&controller)
: m_controllerHandler(std::move(controller))
{
}
SwitchVirtualGamepadHandler::~SwitchVirtualGamepadHandler()
{
}
Result SwitchVirtualGamepadHandler::Initialize()
{
return 0;
}
void SwitchVirtualGamepadHandler::Exit()
{
}
void SwitchVirtualGamepadHandler::InputThreadLoop(void *handler)
2019-10-31 18:00:42 +00:00
{
do {
static_cast<SwitchVirtualGamepadHandler *>(handler)->UpdateInput();
} while (static_cast<SwitchVirtualGamepadHandler*>(handler)->m_inputThreadIsRunning);
2019-10-31 18:00:42 +00:00
}
void SwitchVirtualGamepadHandler::OutputThreadLoop(void *handler)
2019-10-31 18:00:42 +00:00
{
do {
static_cast<SwitchVirtualGamepadHandler *>(handler)->UpdateOutput();
} while (static_cast<SwitchVirtualGamepadHandler*>(handler)->m_outputThreadIsRunning);
2019-10-31 18:00:42 +00:00
}
Result SwitchVirtualGamepadHandler::InitInputThread()
2019-10-31 18:00:42 +00:00
{
2020-03-26 03:12:04 +00:00
R_TRY(m_inputThread.Initialize(&SwitchVirtualGamepadHandler::InputThreadLoop, this, 0x30).GetValue());
m_inputThreadIsRunning = true;
return m_inputThread.Start().GetValue();
2019-10-31 18:00:42 +00:00
}
void SwitchVirtualGamepadHandler::ExitInputThread()
{
m_inputThreadIsRunning = false;
2020-03-13 10:38:32 +00:00
m_inputThread.CancelSynchronization();
m_inputThread.Join();
2019-10-31 18:00:42 +00:00
}
Result SwitchVirtualGamepadHandler::InitOutputThread()
2019-10-31 18:00:42 +00:00
{
2020-03-26 03:12:04 +00:00
R_TRY(m_outputThread.Initialize(&SwitchVirtualGamepadHandler::OutputThreadLoop, this, 0x30).GetValue());
m_outputThreadIsRunning = true;
return m_outputThread.Start().GetValue();
2019-10-31 18:00:42 +00:00
}
void SwitchVirtualGamepadHandler::ExitOutputThread()
{
m_outputThreadIsRunning = false;
2020-04-18 14:30:51 +00:00
m_outputThread.CancelSynchronization();
m_outputThread.Join();
2019-10-31 18:00:42 +00:00
}