summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/AlsaSoundStream.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2015-05-10 02:30:24 -0400
committerLioncash <mathew1800@gmail.com>2015-05-11 01:56:01 -0400
commitf907e5cacee4f0a6c250f0d640eb11d006475f6b (patch)
tree86b8dfd091b26c5999995d6eddfba195872fd6a0 /Source/Core/AudioCommon/AlsaSoundStream.cpp
parent353205132c6fa5da8edbe1a4097cef2fad872794 (diff)
AlsaSoundStream: Use an enum class for signifying ALSA thread state
Diffstat (limited to 'Source/Core/AudioCommon/AlsaSoundStream.cpp')
-rw-r--r--Source/Core/AudioCommon/AlsaSoundStream.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/Source/Core/AudioCommon/AlsaSoundStream.cpp b/Source/Core/AudioCommon/AlsaSoundStream.cpp
index 099a3dee35..2bcb4ddbfb 100644
--- a/Source/Core/AudioCommon/AlsaSoundStream.cpp
+++ b/Source/Core/AudioCommon/AlsaSoundStream.cpp
@@ -10,7 +10,11 @@
#define BUFFER_SIZE_MAX 8192
#define BUFFER_SIZE_BYTES (BUFFER_SIZE_MAX*2*2)
-AlsaSound::AlsaSound(CMixer *mixer) : SoundStream(mixer), thread_data(0), handle(nullptr), frames_to_deliver(FRAME_COUNT_MIN)
+AlsaSound::AlsaSound(CMixer *mixer)
+ : SoundStream(mixer)
+ , m_thread_status(ALSAThreadStatus::STOPPED)
+ , handle(nullptr)
+ , frames_to_deliver(FRAME_COUNT_MIN)
{
mix_buffer = new u8[BUFFER_SIZE_BYTES];
}
@@ -22,14 +26,14 @@ AlsaSound::~AlsaSound()
bool AlsaSound::Start()
{
+ m_thread_status.store(ALSAThreadStatus::RUNNING);
thread = std::thread(&AlsaSound::SoundLoop, this);
- thread_data.store(0);
return true;
}
void AlsaSound::Stop()
{
- thread_data.store(1);
+ m_thread_status.store(ALSAThreadStatus::STOPPING);
thread.join();
}
@@ -42,11 +46,11 @@ void AlsaSound::Update()
void AlsaSound::SoundLoop()
{
if (!AlsaInit()) {
- thread_data.store(2);
+ m_thread_status.store(ALSAThreadStatus::STOPPED);
return;
}
Common::SetCurrentThreadName("Audio thread - alsa");
- while (thread_data.load() == 0)
+ while (m_thread_status.load() == ALSAThreadStatus::RUNNING)
{
m_mixer->Mix(reinterpret_cast<short *>(mix_buffer), frames_to_deliver);
int rc = m_muted ? 1337 : snd_pcm_writei(handle, mix_buffer, frames_to_deliver);
@@ -61,7 +65,7 @@ void AlsaSound::SoundLoop()
}
}
AlsaShutdown();
- thread_data.store(2);
+ m_thread_status.store(ALSAThreadStatus::STOPPED);
}
bool AlsaSound::AlsaInit()