typedef void (SDLCALL *SDL_AudioIterationCallback)(void *userdata, SDL_AudioDeviceID devid, bool start);
| void * | userdata | アプリケーションが自身で使用するためにSDL_SetAudioIterationCallbacksに渡したポインタ |
| SDL_AudioDeviceID | devid | このコールバックの実行対象のオーディオデバイス |
| bool | start | 真のとき繰り返しの開始, 偽のとき終了 |
このコールバックは, 論理オーディオデバイスがバインドされたオーディオストリームにアクセスしようとしたとき呼ばれ, アクセスが完了したとき再び呼ばれる. これはオーディオデバイスの1回の「繰り返し」をカバーしている.
ストリームの最後のオーディオバッファの処理の途中で状態の変更が行われないようにすることができるため, 全てのバインドされたオーディオストリームの状態を必ずアトミックに更新しなければならない場合, このコールバックを使うと便利である.
このコールバックがオーディオデバイスへのデータの送信を遅らせると再生に問題が生じる可能性があるため, このコールバックでは可能な限り早く処理を行い長時間ブロックしないようにする必要がある. このコールバックは, 1つの物理オーディオデバイスに関連した全ての論理デバイスとバインドされたオーディオストリームの処理を遅らせる可能性がある. 注意深く使用すること.
このコールバックはSDLが背後で使用するスレッドから実行される. コールバックで使用する資源を保護する必要があるならば, アプリケーションの責任でロックする必要がある.