diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2019-04-06 17:39:25 -0500 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2019-04-06 17:39:25 -0500 |
| commit | d34a9afe049d9b800a4ce70158091427cdb958be (patch) | |
| tree | fb93910a08da48125c81c7e14e595fd0a40a7147 /Source/Core/AudioCommon/AlsaSoundStream.cpp | |
| parent | 75e74315e69df1dc03bbda4373528e9e26274d7d (diff) | |
Minor changes to usages of std::condition_variable.
Diffstat (limited to 'Source/Core/AudioCommon/AlsaSoundStream.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/AlsaSoundStream.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Source/Core/AudioCommon/AlsaSoundStream.cpp b/Source/Core/AudioCommon/AlsaSoundStream.cpp index 3d20331abd..d249640d1b 100644 --- a/Source/Core/AudioCommon/AlsaSoundStream.cpp +++ b/Source/Core/AudioCommon/AlsaSoundStream.cpp @@ -19,6 +19,9 @@ AlsaSound::~AlsaSound() { m_thread_status.store(ALSAThreadStatus::STOPPING); + // Immediately lock and unlock mutex to prevent cv race. + std::unique_lock<std::mutex>{cv_m}; + // Give the opportunity to the audio thread // to realize we are stopping the emulation cv.notify_one(); @@ -81,7 +84,12 @@ void AlsaSound::SoundLoop() bool AlsaSound::SetRunning(bool running) { m_thread_status.store(running ? ALSAThreadStatus::RUNNING : ALSAThreadStatus::PAUSED); - cv.notify_one(); // Notify thread that status has changed + + // Immediately lock and unlock mutex to prevent cv race. + std::unique_lock<std::mutex>{cv_m}; + + // Notify thread that status has changed + cv.notify_one(); return true; } |
