目次 - SDL 3.0 API(機能別) - メイン - SDL_AppEvent

SDL_AppEvent

メインコールバックを使用する場合, アプリケーションが実装するイベント処理エントリーポイント

ヘッダ

SDL3/SDL_main.h

構文

SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event);

引数

void *appstateSDL_AppInitが任意で渡したポインタ
SDL_Event *eventアプリケーションが処理すべき新しいイベント

戻り値

(SDL_AppResult) エラーで終了させるときSDL_APP_FAILURE, 成功で終了させるときSDL_APP_SUCCESS, 継続するときSDL_APP_CONTINUEを戻す.

詳細

SDL_MAIN_USE_CALLBACKSを使用する場合, アプリケーションはこの関数を実装すること. 標準の"main"関数を使用する場合, この関数をSDLに提供してはならない.

この関数はSDL_AppInitSDL_APP_CONTINUEを戻した後, 必要な場合にSDLから呼ばれる. この関数は新しいイベントごとに1回呼ばれる.

この関数がどのスレッドから呼ばれるかの保証は(現在は)ない. どのスレッドからでも, SDLのキューにイベントをプッシュするとこの関数の呼び出しのトリガとなる. SDLはSDL_AppIterateの呼び出しの間にキューからイベントを取り出すため, 通常はイベントは直列に得られるが, 明示的にSDL_PushEventを呼び出しているスレッドがある場合は注意が必要である. SDL自身はメインスレッドでキューにイベントをプッシュする.

この関数に送られたイベントはアプリケーションのものではない. データを保持したい場合はコピーする必要がある.

この関数で無限ループに入ってはならない. ここでは提供されたイベントの処理を行い, その後に戻る必要がある.

appstate引数はSDL_AppInit()が任意で渡したポインタである. これを設定しなかった場合, ポインタはNULLになる.

この関数がSDL_APP_CONTINUEを戻した場合, アプリケーションは通常通りに進み, アプリケーションの実行中のSDL_AppIterateSDL_AppEventの呼び出しの繰り返しが続く. SDL_APP_FAILUREを戻した場合, SDLはSDL_AppQuitを呼び, エラーを報告する終了コードでプロセスを終了させる. SDL_APP_SUCCESSを戻した場合, SDLはSDL_AppQuitを呼び, 正常終了を報告する終了コードでプロセスを終了させる.

スレッドセーフ

メインスレッド以外でイベントをプッシュした場合, この関数はSDL_AppIterate()またはSDL_AppQuit()と平行して呼ばれる場合がある.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_AppEvent - SDL Wiki