void SDL_SetEventFilter(SDL_EventFilter filter, void* userdata)
filter | イベント発生時に呼ばれる関数 (詳細を参照すること) |
userdata | filterへ渡されるポインタ |
filterの関数プロトタイプは
int YourEventFilter(void* userdata, SDL_Event* event)
YourEventFilterは任意の関数名で, パラメータは次の通りである.
userdata | SDL_SetEventFilter()で設定したuserdata |
event | コールバックを引き起こしたイベント |
filterが1を戻したとき, イベントは内部キューに追加される. 0を戻したとき, イベントはキューから削除されるが内部状態は更新される. これにより受信したイベントを動的にフィルタで選択できる.
注意: 別スレッドで動作する場合, イベントフィルタ関数で行うことには細心の注意を払うこと!
割り込み(例えばCTRL-C)で発生した終了イベントは, アプリケーションには次のイベントポーリングで届けられる.
メモ: 無効化されたイベントはイベントフィルタ関数には届かない. SDL_EventState()を参照すること.
メモ: フィルタするのではなく単にイベントを調査したいのであれば, 代わりにSDL_AddEventWatch()を使うべきである.
メモ: コールバックはユーザのSDL_PushEvent()で発生させたイベントでも呼ばれる. しかし, SDL_PeepEvents()で発生したイベントの場合は呼ばれない.