void clAudioSource_OpenAL::Play() { #if L_AUDIO_USE_OPENAL // if ( IsPlaying() ) alSourceStop( FSourceID ); if ( IsPlaying() ) { return; } Lint State; alGetSourcei( FSourceID, AL_SOURCE_STATE, &State ); if ( !FWaveDataProvider ) { return; } //FATAL( , "No data provider is attached to the audio source" ); if ( State != AL_PAUSED && FWaveDataProvider->IsStreaming() ) { UnqueueAll(); StreamBuffer( FBufferID[0], BUFFER_SIZE ); StreamBuffer( FBufferID[1], BUFFER_SIZE ); alSourceQueueBuffers( FSourceID, 2, &FBufferID[0] ); dynamic_cast<clAudioSubSystem_OpenAL*>( Env->Audio )->RegisterSource( this ); } alSourcePlay( FSourceID ); #endif }
void clAudioSource_OpenAL::Pause() { #if L_AUDIO_USE_OPENAL alSourcePause( FSourceID ); UnqueueAll(); // Stop(); #endif }
void clAudioSource::Play() { if ( IsPlaying() ) { return; } if ( !FWaveDataProvider ) { return; } int State; alGetSourcei( FSourceID, AL_SOURCE_STATE, &State ); if ( State != AL_PAUSED && FWaveDataProvider->IsStreaming() ) { UnqueueAll(); StreamBuffer( FBufferID[0], BUFFER_SIZE ); StreamBuffer( FBufferID[1], BUFFER_SIZE ); alSourceQueueBuffers( FSourceID, 2, &FBufferID[0] ); } alSourcePlay( FSourceID ); }
void clAudioSource_OpenAL::Stop() { #if L_AUDIO_USE_OPENAL // if ( !IsPlaying() ) return; alSourceStop( FSourceID ); if ( FWaveDataProvider ) { FWaveDataProvider->Seek( 0 ); if ( FWaveDataProvider->IsStreaming() ) { dynamic_cast<clAudioSubSystem_OpenAL*>( Env->Audio )->UnRegisterSource( this ); UnqueueAll(); } } #endif }