我正在使用SDL libarary在屏幕上捕获触摸和鼠标事件。但如果我断开触摸屏并重新连接它,有时我会停止手指触摸事件,即SDL_FINGERMOTION,SDL_FINGERDOWN,SDL_FINGERUP。
以下是我正在使用的代码:
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:{
//Some Code
}
case SDL_MOUSEBUTTONDOWN:{
//Some Code
}
case SDL_MOUSEBUTTONUP:{
//Some Code
}
case SDL_MOUSEMOTION:{
//Some Code
}
case SDL_FINGERMOTION:
case SDL_FINGERDOWN:
case SDL_FINGERUP: {
//Some Code
}
}
}
return true;
}
任何建议都会有所帮助。
P.S使用opensuse 42.2和SDL2
答案 0 :(得分:1)
在Linux上,SDL会在您拨打SDL_Init(... | SDL_INIT_EVENTS)
时打开每个可用的输入事件设备。如果从系统中删除输入设备,SDL将在尝试轮询时收到错误。但是,SDL在添加新输入设备时不会收到通知,因此它永远不会打开新的输入事件设备。
解决方法可能是定期自行检查/dev/input/event*
,查看是否有任何更改,如果有,请执行SDL_QuitSubSystem(SDL_INIT_EVENTS); SDL_Init(SDL_INIT_EVENTS)
。但是,这是一个黑客,可能无法可靠地工作。