Обратный вызов события SDL2 без опроса - PullRequest
0 голосов
/ 07 октября 2018

Можно ли использовать SDL_ EventWatch / Фильтр без опроса новых событий?

#include <SDL2/SDL.h>
#include <iostream>

 int SDLCALL watch(void *userdata, SDL_Event* event) {
        std::cout << event->type << "\n";
    return 1; // or 0
}

int main( ){
    SDL_Window *window {SDL_CreateWindow("Window", 100, 100, 400, 400, 0)};
    SDL_Renderer* renderer {SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED)};

    SDL_SetEventFilter(watch, NULL);

    function.Call("main"); // non-C++ function with endless loop

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

В "main" уже есть бесконечный циклкоторый контролирует большую часть приложения.Затем я бы вызвал соответствующую Lua-функцию в зависимости от SDL_Event, переданного watch(..).

Этот код не реагирует ни на одно событие.

1 Ответ

0 голосов
/ 08 октября 2018

Как сказал д-р Герхард Штейн в комментариях:

Если вы запускаете цикл, вам нужно как-то дать SDL возможность обрабатывать события.

Таким образом, ответ просто нет .

...