+ if ( sample->is_valid_source() ) {
+ ALint source = sample->get_source();
+ if ( sample->is_playing() ) {
+ alSourceStop( source );
+ alSourcei( source, AL_BUFFER, 0 );
+ }
+ _smgr->release_source( source );
+ sample->no_valid_source();
+ }
+
+ if (sample->is_valid_buffer() ) {
+ _smgr->release_buffer( sample );
+ sample->no_valid_buffer();
+ }
+ }
+ testForALError("stop");
+}
+
+// stop playing all associated samples
+void
+SGSampleGroup::suspend ()
+{
+ if (_active && _pause == false) {
+ _pause = true;
+ sample_map_iterator sample_current = _samples.begin();
+ sample_map_iterator sample_end = _samples.end();
+ for ( ; sample_current != sample_end; ++sample_current ) {
+ SGSoundSample *sample = sample_current->second;
+
+ if ( sample->is_valid_source() && sample->is_playing() ) {
+ alSourcePause( sample->get_source() );
+ }