Actually enable looping for a sample queue
This commit is contained in:
@@ -134,13 +134,14 @@ void SGSampleGroup::update( double dt ) {
|
|||||||
ALuint source = _smgr->request_source();
|
ALuint source = _smgr->request_source();
|
||||||
if (alIsSource(source) == AL_TRUE )
|
if (alIsSource(source) == AL_TRUE )
|
||||||
{
|
{
|
||||||
|
ALboolean looping = sample->is_looping() ? AL_TRUE : AL_FALSE;
|
||||||
if ( sample->is_queue() )
|
if ( sample->is_queue() )
|
||||||
{
|
{
|
||||||
sample->set_source( source );
|
sample->set_source( source );
|
||||||
update_sample_config( sample );
|
update_sample_config( sample );
|
||||||
|
|
||||||
alSourcef( source, AL_ROLLOFF_FACTOR, 0.3 );
|
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 );
|
alSourcei( source, AL_SOURCE_RELATIVE, AL_FALSE );
|
||||||
alSourcePlay( source );
|
alSourcePlay( source );
|
||||||
testForALError("sample play");
|
testForALError("sample play");
|
||||||
@@ -154,15 +155,12 @@ void SGSampleGroup::update( double dt ) {
|
|||||||
ALuint buffer = sample->get_buffer();
|
ALuint buffer = sample->get_buffer();
|
||||||
if ( alIsBuffer(buffer) == AL_TRUE )
|
if ( alIsBuffer(buffer) == AL_TRUE )
|
||||||
{
|
{
|
||||||
ALboolean looping;
|
|
||||||
|
|
||||||
alSourcei( source, AL_BUFFER, buffer );
|
alSourcei( source, AL_BUFFER, buffer );
|
||||||
testForALError("assign buffer to source");
|
testForALError("assign buffer to source");
|
||||||
|
|
||||||
sample->set_source( source );
|
sample->set_source( source );
|
||||||
update_sample_config( sample );
|
update_sample_config( sample );
|
||||||
|
|
||||||
looping = sample->is_looping() ? AL_TRUE : AL_FALSE;
|
|
||||||
alSourcei( source, AL_LOOPING, looping );
|
alSourcei( source, AL_LOOPING, looping );
|
||||||
alSourcef( source, AL_ROLLOFF_FACTOR, 0.3 );
|
alSourcef( source, AL_ROLLOFF_FACTOR, 0.3 );
|
||||||
alSourcei( source, AL_SOURCE_RELATIVE, AL_FALSE );
|
alSourcei( source, AL_SOURCE_RELATIVE, AL_FALSE );
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ SGSampleQueue::SGSampleQueue( int freq, int format ) :
|
|||||||
_master_volume(1.0),
|
_master_volume(1.0),
|
||||||
_reference_dist(500.0),
|
_reference_dist(500.0),
|
||||||
_max_dist(3000.0),
|
_max_dist(3000.0),
|
||||||
|
_loop(false),
|
||||||
_playing(false),
|
_playing(false),
|
||||||
_changed(true)
|
_changed(true)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ private:
|
|||||||
float _master_volume;
|
float _master_volume;
|
||||||
float _reference_dist;
|
float _reference_dist;
|
||||||
float _max_dist;
|
float _max_dist;
|
||||||
|
bool _loop;
|
||||||
|
|
||||||
bool _playing;
|
bool _playing;
|
||||||
bool _changed;
|
bool _changed;
|
||||||
|
|||||||
Reference in New Issue
Block a user