steamcontroller
steamcontroller copied to clipboard
Read controller events asynchronously
I'm trying to figure out if there is a way to use this library asynchronously. Currently I'm using the following (utilizing c++11 threads):
void handleController()
{
while(running)
{
SteamControllerEvent sce;
for(auto dev : devices)
SteamController_ReadEvent(dev, &sce);
}
}
// ...
std::thread hC(handleController);
// do something
hC.join();
The problem is that SteamController_ReadEvent blocks all execution until the next event is received. Which means that my application does not close until I press some button or move the joystick.
I also tried adding the following before hC.join();
hoping that it would cancel reading the events, but to no avail.
for(auto dev : devices)
SteamController_Close(dev);
What's the intended way to do this? Or is this even possible?
@Scindix I experienced the same issue. I decided to move async read for windows os to separate project and it takes responsibility. This is not the purpose of this project I guess you have to manage async reading on your own.
https://stackoverflow.com/questions/2917881/how-to-implement-a-timeout-in-read-function-call Possibly a lead for fixing this on Linux.