Replaced Common::CriticalSection with a std::mutex implementation. 64bit Windows builds now use SRWLocks and ConditionVariables(requires Vista/7, x64 builds will no longer work on Windows XP x64). Tell me if you hate that. Removed Common::EventEx. Common::Event now uses a std::condition_variable impl.(using ConditionVariables on Windows x64, Events on x86, or posix condition variables elsewhere). I experience slight speed improvements with these changes.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7294 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Jordan Woyak
2011-03-05 06:11:26 +00:00
parent a037ff2358
commit 423018f811
56 changed files with 918 additions and 835 deletions

View File

@ -47,9 +47,11 @@ void AOSound::SoundLoop()
while (!threadData)
{
m_mixer->Mix(realtimeBuffer, numBytesToRender >> 2);
soundCriticalSection.Enter();
{
std::lock_guard<std::mutex> lk(soundCriticalSection);
ao_play(device, (char*)realtimeBuffer, numBytesToRender);
soundCriticalSection.Leave();
}
soundSyncEvent.Wait();
}
@ -58,8 +60,6 @@ void AOSound::SoundLoop()
bool AOSound::Start()
{
memset(realtimeBuffer, 0, sizeof(realtimeBuffer));
soundSyncEvent.Init();
thread = std::thread(std::mem_fun(&AOSound::SoundLoop), this);
return true;
@ -75,7 +75,8 @@ void AOSound::Stop()
threadData = 1;
soundSyncEvent.Set();
soundCriticalSection.Enter();
{
std::lock_guard<std::mutex> lk(soundCriticalSection);
thread.join();
if (device)
@ -84,9 +85,7 @@ void AOSound::Stop()
ao_shutdown();
device = NULL;
soundCriticalSection.Leave();
soundSyncEvent.Shutdown();
}
}
AOSound::~AOSound()