SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event);
| void * | appstate | SDL_AppInitが任意で渡したポインタ |
| SDL_Event * | event | アプリケーションが処理すべき新しいイベント |
SDL_MAIN_USE_CALLBACKSを使用する場合, アプリケーションはこの関数を実装すること. 標準の"main"関数を使用する場合, この関数をSDLに提供してはならない.
この関数はSDL_AppInitがSDL_APP_CONTINUEを戻した後, 必要な場合にSDLから呼ばれる. この関数は新しいイベントごとに1回呼ばれる.
この関数がどのスレッドから呼ばれるかの保証は(現在は)ない. どのスレッドからでも, SDLのキューにイベントをプッシュするとこの関数の呼び出しのトリガとなる. SDLはSDL_AppIterateの呼び出しの間にキューからイベントを取り出すため, 通常はイベントは直列に得られるが, 明示的にSDL_PushEventを呼び出しているスレッドがある場合は注意が必要である. SDL自身はメインスレッドでキューにイベントをプッシュする.
この関数に送られたイベントはアプリケーションのものではない. データを保持したい場合はコピーする必要がある.
この関数で無限ループに入ってはならない. ここでは提供されたイベントの処理を行い, その後に戻る必要がある.
appstate引数はSDL_AppInit()が任意で渡したポインタである.
これを設定しなかった場合, ポインタはNULLになる.
この関数がSDL_APP_CONTINUEを戻した場合, アプリケーションは通常通りに進み, アプリケーションの実行中のSDL_AppIterateとSDL_AppEventの呼び出しの繰り返しが続く. SDL_APP_FAILUREを戻した場合, SDLはSDL_AppQuitを呼び, エラーを報告する終了コードでプロセスを終了させる. SDL_APP_SUCCESSを戻した場合, SDLはSDL_AppQuitを呼び, 正常終了を報告する終了コードでプロセスを終了させる.