gpt4 book ai didi

c++ - SDL_PollEvent 有时在屏幕重新连接后不捕获触摸事件

转载 作者:行者123 更新时间:2023-11-28 04:39:39 27 4
gpt4 key购买 nike

我正在使用 SDL 库来捕获屏幕上的触摸和鼠标事件。但是如果我断开触摸屏并重新连接它,有时我会停止获取手指触摸事件,即 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

最佳答案

在 Linux 上,SDL 在您调用 SDL_Init(... | SDL_INIT_EVENTS) 时打开每个可用的输入事件设备。如果从系统中删除输入设备,SDL 将在尝试轮询时收到错误。但是,当添加新的输入设备时,SDL 不会收到通知,因此它永远不会打开新的输入事件设备。

解决方法可能是自己定期检查 /dev/input/event*,看看是否有任何更改,如果有,请执行 SDL_QuitSubSystem(SDL_INIT_EVENTS); SDL_Init(SDL_INIT_EVENTS)。但是,这是一种 hack,可能无法可靠地工作。

关于c++ - SDL_PollEvent 有时在屏幕重新连接后不捕获触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com