是否可以使用SDL _ EventWatch / Filter而不轮询新事件?
#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"
中已经存在一个无限循环,该循环控制着大多数应用程序。然后,我将根据赋予watch(..)
的SDL_Event来调用适当的Lua函数。
此代码对任何事件均不响应。
答案 0 :(得分:0)
如Gerhard Stein博士在评论中所述:
如果正在运行循环,则必须以某种方式使SDL有机会处理事件。
所以答案就是否。