waver : fix data race with ggwave instance + v1.4.1

This commit is contained in:
Georgi Gerganov
2021-07-02 21:41:40 +03:00
parent e2ef350693
commit 59f576f1e8
3 changed files with 23 additions and 14 deletions

View File

@@ -25,7 +25,7 @@ SDL_AudioDeviceID g_devIdOut = 0;
SDL_AudioSpec g_obtainedSpecInp;
SDL_AudioSpec g_obtainedSpecOut;
GGWave *g_ggWave = nullptr;
std::shared_ptr<GGWave> g_ggWave = nullptr;
}
@@ -213,9 +213,7 @@ bool GGWave_init(
}
if (reinit) {
if (g_ggWave) delete g_ggWave;
g_ggWave = new GGWave({
g_ggWave = std::make_shared<GGWave>(GGWave::Parameters {
payloadLength,
(float) g_obtainedSpecInp.freq,
(float) g_obtainedSpecOut.freq,
@@ -228,7 +226,11 @@ bool GGWave_init(
return true;
}
GGWave *& GGWave_instance() { return g_ggWave; }
std::shared_ptr<GGWave> GGWave_instance() { return g_ggWave; }
void GGWave_reset(void * parameters) {
g_ggWave = std::make_shared<GGWave>(*(GGWave::Parameters *)(parameters));
}
bool GGWave_mainLoop() {
if (g_devIdInp == 0 && g_devIdOut == 0) {
@@ -278,8 +280,7 @@ bool GGWave_deinit() {
return false;
}
delete g_ggWave;
g_ggWave = nullptr;
g_ggWave.reset();
SDL_PauseAudioDevice(g_devIdInp, 1);
SDL_CloseAudioDevice(g_devIdInp);