void SoundManager::poll() { static ticks_t lastUpdate = 0; ticks_t now = g_clock.millis(); if(now - lastUpdate < POLL_DELAY) return; lastUpdate = now; ensureContext(); for(auto it = m_sources.begin(); it != m_sources.end();) { SoundSourcePtr source = *it; source->update(); if(!source->isPlaying()) it = m_sources.erase(it); else ++it; } for(auto it : m_channels) { it.second->update(); } if(m_context) { alcProcessContext(m_context); } }
void SoundManager::poll() { static ticks_t lastUpdate = 0; ticks_t now = g_clock.millis(); if(now - lastUpdate < POLL_DELAY) return; lastUpdate = now; for(auto it = m_sources.begin(); it != m_sources.end();) { SoundSourcePtr source = *it; source->update(); if(!source->isPlaying()) it = m_sources.erase(it); else ++it; } if(m_musicSource) { m_musicSource->update(); if(!m_musicSource->isPlaying()) m_musicSource = nullptr; } if(m_context) { alcProcessContext(m_context); } }
void SoundManager::poll() { static ticks_t lastUpdate = 0; ticks_t now = g_clock.millis(); if(now - lastUpdate < POLL_DELAY) return; lastUpdate = now; ensureContext(); for(auto it = m_streamFiles.begin(); it != m_streamFiles.end();) { StreamSoundSourcePtr source = it->first; auto& future = it->second; if(future.is_ready()) { SoundFilePtr sound = future.get(); if(sound) source->setSoundFile(sound); else source->stop(); it = m_streamFiles.erase(it); } else { ++it; } } for(auto it = m_sources.begin(); it != m_sources.end();) { SoundSourcePtr source = *it; source->update(); if(!source->isPlaying()) it = m_sources.erase(it); else ++it; } for(auto it : m_channels) { it.second->update(); } if(m_context) { alcProcessContext(m_context); } }