* Fix iOS bug
This commit is contained in:
parent
397909621e
commit
c9eef4b1fd
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
};
|
Loading…
Reference in New Issue