typedef void (SDLCALL *SDL_AudioStreamDataCompleteCallback)(void *userdata, const void *buf, int buflen);
| void * | userdata | アプリケーションが自身の使用のためにSDL_PutAudioStreamDataNoCopy()に渡したポインタ |
| const void * | buf | SDL_PutAudioStreamDataNoCopy()に渡したポインタ |
| int | buflen | SDL_PutAudioStreamDataNoCopy()に渡したバッファのバイト数 |
SDL_PutAudioStreamDataNoCopy()でSDL_AudioStreamにデータを与えた場合, ストリームが完全にデータを消費する前に破棄するのは安全ではない. その場合, しばしば予測困難な問題が発生する.
このコールバックは, アプリケーションがバッファの解放や再利用をしやすくするため, ストリームがバッファを必要としなくなったとき呼ばれる.
このコールバックはあらゆるスレッドで動作しうる. よって, 共通データを保護する必要がある場合は, SDL_LockAudioStreamでロックして直列化する必要がある. このロックはコールバックが呼ばれる前に行われるため, コールバック内で明示的にロックする必要はない.