diff --git a/src/client/sound/sound_manager.cpp b/src/client/sound/sound_manager.cpp index fcc3559a5..56061a75a 100644 --- a/src/client/sound/sound_manager.cpp +++ b/src/client/sound/sound_manager.cpp @@ -164,10 +164,13 @@ std::shared_ptr OpenALSoundManager::createPlayingSound( return nullptr; } - if (lsnd->m_decode_info.is_stereo && pos_vel_opt.has_value()) { + if (lsnd->m_decode_info.is_stereo && pos_vel_opt.has_value() + && m_warned_positional_stereo_sounds.find(sound_name) + == m_warned_positional_stereo_sounds.end()) { warningstream << "OpenALSoundManager::createPlayingSound: " << "Creating positional stereo sound \"" << sound_name << "\"." << std::endl; + m_warned_positional_stereo_sounds.insert(sound_name); } ALuint source_id; diff --git a/src/client/sound/sound_manager.h b/src/client/sound/sound_manager.h index 7da18ccbf..8d0ccf837 100644 --- a/src/client/sound/sound_manager.h +++ b/src/client/sound/sound_manager.h @@ -77,6 +77,9 @@ class OpenALSoundManager final : public Thread // if true, all sounds will be directly paused after creation bool m_is_paused = false; + // used for printing warnings only once + std::unordered_set m_warned_positional_stereo_sounds; + public: // used for communication with ProxySoundManager MutexedQueue m_queue_to_mgr;