refactor: Integrate audio update mechanism in ApplicationController for improved audio management

This commit is contained in:
2026-01-04 15:06:34 +00:00
parent 7b101f23ef
commit 2caecabd63
2 changed files with 16 additions and 6 deletions

View File

@@ -39,16 +39,17 @@ public:
float GetVolume() const override;
bool IsBackgroundPlaying() const override;
// Update method to be called regularly (e.g., from main loop)
void Update();
private:
struct AudioData {
std::vector<char> buffer;
size_t position = 0;
bool loop = false;
OggVorbis_File vorbisFile;
bool isOpen = false;
bool loop = false;
size_t position = 0;
};
static void AudioCallback(void* userdata, Uint8* stream, int len);
bool LoadAudioFile(const std::filesystem::path& path, AudioData& audioData);
void CleanupAudioData(AudioData& audioData);
@@ -56,8 +57,7 @@ private:
float volume_ = 1.0f;
bool initialized_ = false;
SDL_AudioSpec audioSpec_;
SDL_AudioDeviceID audioDevice_ = 0;
SDL_AudioStream* audioStream_ = nullptr;
std::unique_ptr<AudioData> backgroundAudio_;
std::mutex audioMutex_;