steamcontroller icon indicating copy to clipboard operation
steamcontroller copied to clipboard

Read controller events asynchronously

Open Scindix opened this issue 6 years ago • 2 comments

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 avatar Dec 31 '18 03:12 Scindix

@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.

glani avatar Jul 31 '19 20:07 glani

https://stackoverflow.com/questions/2917881/how-to-implement-a-timeout-in-read-function-call Possibly a lead for fixing this on Linux.

diiigle avatar Jun 10 '20 20:06 diiigle