Я использую SDL2 v2.0.9-3, 64 бит, с VS2019 C ++. SDL_PollEvent возвращает события, поле типа которых содержит неверные значения. Возвращенные значения согласованы, но неверны, ВСЕГДА!
Я использую код, который корректно работал со старыми версиями библиотеки и компиляторами VC. Я пытался строить с VC2015 с тем же результатом. Я также пытался использовать версию VCPKG и компилировать SDL2 с нуля. Всегда один и тот же результат.
Вот мой код (с некоторыми операторами вывода отладки):
auto loop = true;
SDL_Event event;
long eventCounter = 0;
while (loop) {
while (SDL_PollEvent(&event)) {
std::wstringstream s;
s << "Event " << eventCounter++ << ", Type: 0x" << hex << event.type << std::endl;
OutputDebugString(s.str().c_str());
if (event.type == SDL_QUIT)
loop = false;
if (event.type == SDL_KEYDOWN) {
switch (event.key.keysym.sym) {
case SDLK_ESCAPE:
loop = false;
break;
case SDLK_SPACE:
DoSomething();
break;
default:
break;
}
}
}
keydown возвращает 0x10002 (большее значение, чем SDL_LASTEVENT - должно быть 0x300), а keyup возвращает 0x3 (должно быть 0x301). Все остальные события также последовательны, но ошибочны. Любые подсказки?