* Fix iOS bug

This commit is contained in:
Murat Suri 2011-06-27 20:49:11 +00:00
parent 397909621e
commit c9eef4b1fd
2 changed files with 66 additions and 46 deletions

View File

@ -265,7 +265,8 @@ namespace cAudio
//gets the sound source processed buffers
alGetSourcei(Source, AL_BUFFERS_PROCESSED, &processed);
checkError();
//while there is more data refill buffers with audio data.
while (processed--)
{
@ -300,6 +301,7 @@ namespace cAudio
ALenum state;
alGetSourcei(Source, AL_SOURCE_STATE, &state);
checkError();
if(state == AL_STOPPED && oldState != state)
{
//Resets the audio to the beginning
@ -321,6 +323,7 @@ namespace cAudio
{
ALenum state = 0;
alGetSourcei(Source, AL_SOURCE_STATE, &state);
checkError();
return (state == AL_PLAYING);
}
@ -328,6 +331,7 @@ namespace cAudio
{
ALenum state = 0;
alGetSourcei(Source, AL_SOURCE_STATE, &state);
checkError();
return (state == AL_PAUSED);
}
@ -335,6 +339,7 @@ namespace cAudio
{
ALenum state = 0;
alGetSourcei(Source, AL_SOURCE_STATE, &state);
checkError();
return (state == AL_STOPPED);
}
@ -475,6 +480,7 @@ namespace cAudio
{
cVector3 position;
alGetSourcefv(Source, AL_POSITION, &position.x);
checkError();
return position;
}
@ -489,6 +495,7 @@ namespace cAudio
{
cVector3 direction;
alGetSourcefv(Source, AL_DIRECTION, &direction.x);
checkError();
return direction;
}
@ -496,6 +503,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_ROLLOFF_FACTOR, &value);
checkError();
return value;
}
@ -503,7 +511,8 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_ROLLOFF_FACTOR, &value);
checkError();
float inverseStrength = 0.0f;
if(value > 0.0f)
inverseStrength = 1.0f / value;
@ -515,6 +524,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_REFERENCE_DISTANCE, &value);
checkError();
return value;
}
@ -522,6 +532,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_MAX_DISTANCE, &value);
checkError();
return value;
}
@ -529,6 +540,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_PITCH, &value);
checkError();
return value;
}
@ -541,6 +553,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_MIN_GAIN, &value);
checkError();
return value;
}
@ -548,6 +561,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_MAX_GAIN, &value);
checkError();
return value;
}
@ -555,6 +569,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_CONE_INNER_ANGLE, &value);
checkError();
return value;
}
@ -562,6 +577,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_CONE_OUTER_ANGLE, &value);
checkError();
return value;
}
@ -569,6 +585,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_CONE_OUTER_GAIN, &value);
checkError();
return value;
}
@ -576,6 +593,7 @@ namespace cAudio
{
float value = 0.0f;
alGetSourcef(Source, AL_DOPPLER_FACTOR, &value);
checkError();
return value;
}
@ -583,6 +601,7 @@ namespace cAudio
{
cVector3 velocity;
alGetSourcefv(Source, AL_DOPPLER_VELOCITY, &velocity.x);
checkError();
return velocity;
}
@ -649,7 +668,8 @@ namespace cAudio
{
int queued = 0;
alGetSourcei(Source, AL_BUFFERS_QUEUED, &queued);
checkError();
while (queued--)
{
ALuint buffer;

View File

@ -1,13 +1,13 @@
// Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
// This file is part of the "cAudio Engine"
// For conditions of distribution and use, see copyright notice in cAudio.h
#include "cThread.h"
#include "cAudioSleep.h"
namespace cAudio
{
cAudioThread::cAudioThread(IThreadWorker* pWorker) : IsInit(false), Worker(pWorker), ThreadHandle(0), Loop(true), ThreadID(0)
// For conditions of distribution and use, see copyright notice in cAudio.h
#include "cThread.h"
#include "cAudioSleep.h"
namespace cAudio
{
cAudioThread::cAudioThread(IThreadWorker* pWorker) : ThreadHandle(0), Worker(pWorker), ThreadID(0), IsInit(false), Loop(true)
{
}
@ -19,28 +19,28 @@ namespace cAudio
bool cAudioThread::start()
{
if(IsInit) return IsInit;
cAudioMutexBasicLock lock(Mutex);
cAudioMutexBasicLock lock(Mutex);
if(IsInit)
return IsInit;
IsInit = true;
#ifdef CAUDIO_PLATFORM_WIN
ThreadHandle = reinterpret_cast<HANDLE>(_beginthreadex(0, 0, threadFunc, this, 0, &ThreadID));
if(ThreadHandle == 0)
CloseHandle( ThreadHandle );
#else
pthread_attr_t attr;
pthread_attr_init( &attr );
pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED );
ThreadID = pthread_create( &ThreadHandle, &attr, threadFunc, this );
if(ThreadHandle == 0)
CloseHandle( ThreadHandle );
#else
ThreadID = pthread_create( &ThreadHandle, 0, threadFunc, this );
#endif
IsInit = ThreadID != 0;
IsInit = ThreadID != 0;
return IsInit;
}
void cAudioThread::join()
{
cAudioMutexBasicLock lock(Mutex);
if(IsInit)
{
cAudioMutexBasicLock lock(Mutex);
Loop = false;
#ifdef CAUDIO_PLATFORM_WIN
WaitForSingleObject(ThreadHandle, INFINITE);
@ -49,35 +49,35 @@ namespace cAudio
#endif
}
}
void cAudioThread::shutdown()
{
void cAudioThread::shutdown()
{
cAudioMutexBasicLock lock(Mutex);
if(IsInit)
{
cAudioMutexBasicLock lock(Mutex);
IsInit = false;
#ifdef CAUDIO_PLATFORM_WIN
_endthread();
#else
pthread_exit(0);
#endif
}
}
void cAudioThread::updateLoop()
{
}
}
void cAudioThread::updateLoop()
{
if(IsInit && Worker)
{
while (Loop)
{
Worker->run();
}
}
}
bool cAudioThread::isRunning()
{
return Loop && IsInit;
}
{
while (Loop)
{
Worker->run();
}
}
}
bool cAudioThread::isRunning()
{
return Loop && IsInit;
}
#ifdef CAUDIO_PLATFORM_WIN
unsigned int __stdcall cAudioThread::threadFunc(void *args)
{
@ -89,8 +89,8 @@ namespace cAudio
void* cAudioThread::threadFunc(void* args)
{
cAudioThread* pThread = reinterpret_cast<cAudioThread*>(args);
pThread->updateLoop();
pThread->updateLoop();
return 0;
}
#endif
#endif
};