testForALError("suspend");
}
+void
+SGSampleGroup::stop ()
+{
+ _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() ) {
+ if ( sample->is_playing() ) {
+ alSourcePause( sample->get_source() );
+ }
+ _smgr->release_source( sample->get_source() );
+ sample->no_valid_source();
+
+ _smgr->release_buffer( sample );
+ sample->no_valid_buffer();
+ }
+ }
+ testForALError("suspend");
+}
+
// resume playing all associated samples
void
SGSampleGroup::resume ()
*/
SGSoundSample *find( const string& refname );
+ /**
+ * Stop all playing samples and set the source id to invalid.
+ */
+ void stop();
+
/**
* Request to stop playing all audio samples until further notice.
*/
}
_buffers.clear();
+ sample_group_map_iterator sample_grp_current = _sample_groups.begin();
+ sample_group_map_iterator sample_grp_end = _sample_groups.end();
+ for ( ; sample_grp_current != sample_grp_end; ++sample_grp_current ) {
+ SGSampleGroup *sgrp = sample_grp_current->second;
+ sgrp->stop();
+ }
+
_context = alcGetCurrentContext();
_device = alcGetContextsDevice(_context);
alcDestroyContext(_context);
alcCloseDevice(_device);
+ _context = NULL;
}
}
sample_group_map_iterator sample_grp_end = _sample_groups.end();
for ( ; sample_grp_current != sample_grp_end; ++sample_grp_current ) {
SGSampleGroup *sgrp = sample_grp_current->second;
- sgrp->suspend();
+ sgrp->stop();
}
_active = false;
}