diff options
| author | nakeee <nakeee@gmail.com> | 2009-03-30 20:25:36 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2009-03-30 20:25:36 +0000 |
| commit | caf1395f5ebb906524176a0b82971b7b7ed71264 (patch) | |
| tree | a35607ca26dc5458fac1ff8db43051baf434f028 /Source/Core/AudioCommon/Src/OpenALStream.cpp | |
| parent | c3a843b5a84530c77f28aad466a81f3e58306eec (diff) | |
Fixing compile without openal
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2810 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/AudioCommon/Src/OpenALStream.cpp')
| -rw-r--r-- | Source/Core/AudioCommon/Src/OpenALStream.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/Source/Core/AudioCommon/Src/OpenALStream.cpp b/Source/Core/AudioCommon/Src/OpenALStream.cpp index dda870cee1..29b5f8f08d 100644 --- a/Source/Core/AudioCommon/Src/OpenALStream.cpp +++ b/Source/Core/AudioCommon/Src/OpenALStream.cpp @@ -26,7 +26,7 @@ bool OpenALStream::Start() ALCcontext *pContext = NULL;
ALCdevice *pDevice = NULL;
bool bReturn = false;
-
+
pDeviceList = new ALDeviceList();
if ((pDeviceList) && (pDeviceList->GetNumDevices()))
{
@@ -43,10 +43,18 @@ bool OpenALStream::Start() else
{
alcCloseDevice(pDevice);
+ PanicAlert("OpenAL: can't create context for device %s", pDevice);
}
+ } else {
+ PanicAlert("OpenAL: can't open device %s", pDevice);
}
+
+
delete pDeviceList;
+ } else {
+ PanicAlert("OpenAL: can't find sound devices");
}
+
return bReturn;
}
@@ -55,22 +63,29 @@ void OpenALStream::Stop() ALCcontext *pContext;
ALCdevice *pDevice;
+ soundCriticalSection.Enter();
+ threadData = 1;
+ // kick the thread if it's waiting
+ soundSyncEvent.Set();
+ soundCriticalSection.Leave();
delete thread;
-
+
pContext = alcGetCurrentContext();
pDevice = alcGetContextsDevice(pContext);
alcMakeContextCurrent(NULL);
alcDestroyContext(pContext);
alcCloseDevice(pDevice);
+
+ soundSyncEvent.Shutdown();
+ thread = NULL;
}
void OpenALStream::Update()
{
-
+ soundSyncEvent.Set();
}
-// The audio thread.
THREAD_RETURN OpenALStream::ThreadFunc(void* args)
{
(reinterpret_cast<OpenALStream *>(args))->SoundLoop();
@@ -79,5 +94,14 @@ THREAD_RETURN OpenALStream::ThreadFunc(void* args) void OpenALStream::SoundLoop()
{
+ while (!threadData) {
+ soundCriticalSection.Enter();
+ // Add sound playing here
+ // m_mixer->Mix(realtimeBuffer, numBytesToRender >> 2);
+ soundCriticalSection.Leave();
+
+ if (!threadData)
+ soundSyncEvent.Wait();
+ }
}
|
