[英]SDL2 event callback without polling
是否可以使用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函數。
此代碼對任何事件均不響應。
正如Gerhard Stein博士在評論中指出的那樣:
如果運行循環,則必須以某種方式使SDL有機會處理事件。
因此,答案是根本沒有 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.