目次 - API(機能別) - イベント処理 - SDL_AddEventWatch

SDL_AddEventWatch

イベントがキューに入った場合のコールバックを追加する

構文

void SDL_AddEventWatch(SDL_EventFilter filter, void* userdata)

引数

filterイベント発生時に呼ばれる関数 (詳細を参照すること)
userdatafilterへ渡されるポインタ

サンプルコード

int MyEventFunction(void *userdata, SDL_Event *event) {
    // userdataとeventを使って処理を行う

    return 0; // 戻り値は無視される
}

// ...
SDL_AddEventWatch(MyEventFunction, NULL);

詳細

filterの関数プロトタイプは

int YourEventFilter(void* userdata, SDL_Event* event)

YourEventFilterは任意の関数名で, パラメータは次の通りである.

userdataSDL_AddEventWatch()で設定したuserdata
eventコールバックを引き起こしたイベント

filterはイベントが発生したとき呼ばれ, その戻り値は無視される.

注意: 別スレッドで動作する場合, イベントフィルタ関数で行うことには細心の注意を払うこと!

シグナル(例えばSIGINT)で終了イベントが発生した場合, まず内部キューを迂回してイベント監視コールバックに届けられ, そして次にイベントポーリングに届く.

メモ: コールバックはユーザのSDL_PushEvent()で発生させたイベントでも呼ばれる. しかし, 無効なイベントや, SDL_SetEventFilter()でコールバックフィルタを設定したイベントや, SDL_PeepEvents()でユーザが発生されたイベントの場合は呼ばれない.

バージョン

SDL 2.0.0以降

関連項目(関数)

SDL_DelEventWatch
SDL_SetEventFilter

SDL Wikiへのリンク

SDL_AddEventWatch - SDL Wiki