diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2011-01-27 20:47:58 +0000 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2011-01-27 20:47:58 +0000 |
| commit | 2c05c49a04aa838047417825c289958efb59ee3c (patch) | |
| tree | 2731699f2223276c60b6b403d3a080d75f99bf74 /Source/Core/AudioCommon/Src/OpenALStream.cpp | |
| parent | 0371f15c23bf9fb64941e3adbc72b80f955e2ff5 (diff) | |
Replaced Common::Thread with a partial implementation of std::thread. (rvalue references are used if available, <thread> is used if possible) Eliminates the need to use dynamic memory allocation for threads, so it's impossible to forget to delete a thread or set a pointer to NULL. Enables use of type-safe thread functions, no need to cast to and from void*. I've made sure the code compiles in vs08 and tested the functionality of "StdThread.h" on Linux so I'm hoping everything will work :p. In the future "StdThread.h" can be removed (maybe when OS X ships with gcc 4.4 and vs2015 is released :p).
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6933 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/AudioCommon/Src/OpenALStream.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/Src/OpenALStream.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/Source/Core/AudioCommon/Src/OpenALStream.cpp b/Source/Core/AudioCommon/Src/OpenALStream.cpp index e92d1cdc27..908f1c0099 100644 --- a/Source/Core/AudioCommon/Src/OpenALStream.cpp +++ b/Source/Core/AudioCommon/Src/OpenALStream.cpp @@ -44,8 +44,7 @@ bool OpenALStream::Start() if (pContext) { alcMakeContextCurrent(pContext); - thread = new Common::Thread( - OpenALStream::ThreadFunc, (void *)this); + thread = std::thread(OpenALStream::ThreadFunc, this); bReturn = true; } else @@ -75,8 +74,7 @@ void OpenALStream::Stop() // kick the thread if it's waiting soundSyncEvent.Set(); - delete thread; - thread = NULL; + thread.join(); alSourceStop(uiSource); alSourcei(uiSource, AL_BUFFER, 0); @@ -123,10 +121,9 @@ void OpenALStream::Clear(bool mute) } } -THREAD_RETURN OpenALStream::ThreadFunc(void* args) +void OpenALStream::ThreadFunc(OpenALStream* alstream) { - (reinterpret_cast<OpenALStream *>(args))->SoundLoop(); - return 0; + alstream->SoundLoop(); } void OpenALStream::SoundLoop() |
