SDL2 Event Loop на Android - не может помещать новые события в очередь - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь использовать SDL2 в моем новом приложении для Android, оно должно работать хорошо:

http://wilbefast.com/2011/11/11/recent-sdl-android-goodies/

Он компилируется без единой проблемы, и есть пример проекта, поэтому его довольно легко начать использовать. Я скомпилировал библиотеку и начал с моего приложения, создал цикл обработки событий - как в SDL 1.2 и попытался вставить в него некоторые события с помощью функции:

int SDL_PushEvent(SDL_Event * event);

Однако, это всегда терпит неудачу со значением ошибки -1. Я только что определил функцию SDL_main для этого исходного файла:

http://hg.libsdl.org/SDL/file/6bb657898f55/src/main/android/SDL_android_main.cpp

Моя функция SDL_main содержит простой цикл обработки событий:

SDL_Event event;

for (;;)
{
    SDL_WaitEvent(&event);
    switch (event.type)
    {
case SDL_QUIT:
    return;
    case SOME_EVENT:
        break;
    default:
        break;
    }
}

и все - ни потоков, ни мьютексов, ни ожиданий, просто простая основная функция. Я заметил, что мой цикл обработки событий обрабатывает некоторые события, их event.type равен 2151293988, похоже, что их источником является экземпляр SDLSurface, который создается в коде Java: http://hg.libsdl.org/SDL/file/6bb657898f55/android-project/src/org/libsdl/app/SDLActivity.java

Почему функция SDL_PushEvent не работает? Кто-нибудь знает, что может быть не так?

1 Ответ

3 голосов
/ 06 мая 2012

Очередь SDL не запускается автоматически после инициализации, ее нужно явно запустить, вызвав SDL_StartEventLoop();

...