Add async init SDL audio device for player to prevent blocking main poller(#4773)

This commit is contained in:
PioLing
2026-07-06 21:05:02 +08:00
committed by GitHub
parent 5f11d3b3bf
commit d133d6e668
3 changed files with 84 additions and 46 deletions

View File

@@ -13,6 +13,8 @@
#include <mutex>
#include <memory>
#include <atomic>
#include <thread>
#include <stdexcept>
#include <unordered_set>
@@ -40,11 +42,12 @@ private:
void onReqPCM(char *stream, int len);
private:
SDL_AudioDeviceID _device;
std::atomic<SDL_AudioDeviceID> _device{ 0 };
std::shared_ptr<char> _play_buf;
SDL_AudioSpec _audio_config;
std::recursive_mutex _channel_mtx;
std::unordered_set<AudioSRC *> _channels;
std::thread _init_thread;
};
#endif /* SDLAUDIOMIXER_SDLAUDIODEVICE_H_ */