void audio_StaticSource_rewind(audio_StaticSource *source) { alSourceRewind(source->common.source); if(source->common.state == audio_SourceState_playing) { audio_SourceCommon_play(&source->common); } }
void audio_StreamSource_play(audio_StreamSource *source) { switch(source->common.state) { case audio_SourceState_stopped: prepareToPlay(source); // Fall through case audio_SourceState_paused: audio_SourceCommon_play(&source->common); break; default: break; } }
static void prepareToPlay(audio_StreamSource *source) { if(source->common.state == audio_SourceState_playing) { return; } else if(source->common.state == audio_SourceState_paused) { audio_SourceCommon_play(&source->common); return; } alSourceQueueBuffers(source->common.source, 2, source->buffers); if(moduleData.playingStreamCount == moduleData.playingStreamSize) { moduleData.playingStreamSize = 2 * moduleData.playingStreamSize; moduleData.playingStreams = realloc(moduleData.playingStreams, moduleData.playingStreamSize*sizeof(audio_StreamSource*)); } moduleData.playingStreams[moduleData.playingStreamCount] = source; ++moduleData.playingStreamCount; }
void audio_StaticSource_play(audio_StaticSource *source) { if(audio_SourceCommon_getState(&source->common) != audio_SourceState_playing) { audio_SourceCommon_play(&source->common); } }