Actually enable looping for a sample queue

This commit is contained in:
Erik Hofman
2010-08-02 11:43:53 +02:00
parent 8a5a1d3301
commit 879dc295a8
3 changed files with 4 additions and 4 deletions

View File

@@ -134,13 +134,14 @@ void SGSampleGroup::update( double dt ) {
ALuint source = _smgr->request_source();
if (alIsSource(source) == AL_TRUE )
{
ALboolean looping = sample->is_looping() ? AL_TRUE : AL_FALSE;
if ( sample->is_queue() )
{
sample->set_source( source );
update_sample_config( sample );
alSourcef( source, AL_ROLLOFF_FACTOR, 0.3 );
alSourcei( source, AL_LOOPING, AL_FALSE);
alSourcei( source, AL_LOOPING, looping );
alSourcei( source, AL_SOURCE_RELATIVE, AL_FALSE );
alSourcePlay( source );
testForALError("sample play");
@@ -154,15 +155,12 @@ void SGSampleGroup::update( double dt ) {
ALuint buffer = sample->get_buffer();
if ( alIsBuffer(buffer) == AL_TRUE )
{
ALboolean looping;
alSourcei( source, AL_BUFFER, buffer );
testForALError("assign buffer to source");
sample->set_source( source );
update_sample_config( sample );
looping = sample->is_looping() ? AL_TRUE : AL_FALSE;
alSourcei( source, AL_LOOPING, looping );
alSourcef( source, AL_ROLLOFF_FACTOR, 0.3 );
alSourcei( source, AL_SOURCE_RELATIVE, AL_FALSE );

View File

@@ -64,6 +64,7 @@ SGSampleQueue::SGSampleQueue( int freq, int format ) :
_master_volume(1.0),
_reference_dist(500.0),
_max_dist(3000.0),
_loop(false),
_playing(false),
_changed(true)
{

View File

@@ -144,6 +144,7 @@ private:
float _master_volume;
float _reference_dist;
float _max_dist;
bool _loop;
bool _playing;
bool _changed;