summaryrefslogtreecommitdiff
path: root/Source/Core/AudioCommon/Src/OpenALStream.cpp
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2011-01-27 20:47:58 +0000
committerJordan Woyak <jordan.woyak@gmail.com>2011-01-27 20:47:58 +0000
commit2c05c49a04aa838047417825c289958efb59ee3c (patch)
tree2731699f2223276c60b6b403d3a080d75f99bf74 /Source/Core/AudioCommon/Src/OpenALStream.cpp
parent0371f15c23bf9fb64941e3adbc72b80f955e2ff5 (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.cpp11
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()