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

SDL_SetEventFilter

内部状態が変わり内部キューに入る前に全てのイベントを処理するフィルタを設定する

構文

void SDL_SetEventFilter(SDL_EventFilter filter, void* userdata)

引数

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

詳細

filterの関数プロトタイプは

int YourEventFilter(void* userdata, SDL_Event* event)

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

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

filterが1を戻したとき, イベントは内部キューに追加される. 0を戻したとき, イベントはキューから削除されるが内部状態は更新される. これにより受信したイベントを動的にフィルタで選択できる.

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

割り込み(例えばCTRL-C)で発生した終了イベントは, アプリケーションには次のイベントポーリングで届けられる.

メモ: 無効化されたイベントはイベントフィルタ関数には届かない. SDL_EventState()を参照すること.

メモ: フィルタするのではなく単にイベントを調査したいのであれば, 代わりにSDL_AddEventWatch()を使うべきである.

メモ: コールバックはユーザのSDL_PushEvent()で発生させたイベントでも呼ばれる. しかし, SDL_PeepEvents()で発生したイベントの場合は呼ばれない.

関連項目(関数)

SDL_AddEventWatch
SDL_EventState
SDL_GetEventFilter
SDL_PeepEvents
SDL_PushEvent

SDL Wikiへのリンク

SDL_SetEventFilter - SDL Wiki