簡體   English   中英

SDL2事件回調,無需輪詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM