SDL_PollEvent иногда не захватывает событие касания после повторного подключения экрана - PullRequest
0 голосов
/ 24 мая 2018

Я использую библиотеку 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;
}

Любое предложение будетбыть полезным.

PS с использованием opensuse 42.2 и SDL2

1 Ответ

0 голосов
/ 24 мая 2018

В Linux SDL открывает каждое доступное устройство ввода событий в тот момент, когда вы вызываете SDL_Init(... | SDL_INIT_EVENTS).Если устройство ввода удалено из системы, SDL будет получать сообщение об ошибке всякий раз, когда оно пытается опрашивать его.Однако SDL не получает уведомление при добавлении нового устройства ввода и поэтому никогда не открывает новые устройства событий ввода.

Обходной путь может заключаться в том, чтобы периодически проверять /dev/input/event* самостоятельно, посмотреть, изменилось ли что-нибудь.и если да, то сделайте SDL_QuitSubSystem(SDL_INIT_EVENTS); SDL_Init(SDL_INIT_EVENTS).Тем не менее, это взлом, и может работать не надежно.

...