Browse Source

:%s/^I/ /ge

Darryl Pogue 14 years ago
parent
commit
93adfa9c7d
  1. 84
      Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.cpp
  2. 42
      Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.h

84
Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.cpp

@ -76,30 +76,30 @@ static plAudioFileReader *CreateReader( hsBool fullpath, const char filename[],
hsError plSoundPreloader::Run() hsError plSoundPreloader::Run()
{ {
hsTArray<plSoundBuffer*> templist; hsTArray<plSoundBuffer*> templist;
while (fRunning) while (fRunning)
{ {
fCritSect.Lock(); fCritSect.Lock();
for (int i = fBuffers.GetCount(); i > 0; i--) for (int i = fBuffers.GetCount(); i > 0; i--)
{ {
templist.Append(fBuffers.Pop()); templist.Append(fBuffers.Pop());
} }
fCritSect.Unlock(); fCritSect.Unlock();
if (templist.GetCount() == 0) if (templist.GetCount() == 0)
{ {
fEvent.Wait(); fEvent.Wait();
} }
else else
{ {
plAudioFileReader *reader = nil; plAudioFileReader *reader = nil;
for (int i = templist.GetCount(); i > 0; i--) for (int i = templist.GetCount(); i > 0; i--)
{ {
plSoundBuffer* buf = templist.Pop(); plSoundBuffer* buf = templist.Pop();
if (buf->GetData()) if (buf->GetData())
{ {
reader = CreateReader(true, buf->GetFileName(), buf->GetAudioReaderType(), buf->GetReaderSelect()); reader = CreateReader(true, buf->GetFileName(), buf->GetAudioReaderType(), buf->GetReaderSelect());
if( reader ) if( reader )
@ -109,39 +109,39 @@ hsError plSoundPreloader::Run()
buf->SetAudioReader(reader); // give sound buffer reader, since we may need it later buf->SetAudioReader(reader); // give sound buffer reader, since we may need it later
} }
else else
{ {
buf->SetError(); buf->SetError();
} }
} }
buf->SetLoaded(true); buf->SetLoaded(true);
} }
} }
} }
// we need to be sure that all buffers are removed from our load list when shutting this thread down or we will hang, // we need to be sure that all buffers are removed from our load list when shutting this thread down or we will hang,
// since the sound buffer will wait to be destroyed until it is marked as loaded // since the sound buffer will wait to be destroyed until it is marked as loaded
fCritSect.Lock(); fCritSect.Lock();
for (int i = fBuffers.GetCount(); i > 0; i--) for (int i = fBuffers.GetCount(); i > 0; i--)
{ {
plSoundBuffer* buf = fBuffers.Pop(); plSoundBuffer* buf = fBuffers.Pop();
buf->SetLoaded(true); buf->SetLoaded(true);
} }
fCritSect.Unlock(); fCritSect.Unlock();
return hsOK; return hsOK;
} }
static plSoundPreloader gLoaderThread; static plSoundPreloader gLoaderThread;
void plSoundBuffer::Init() void plSoundBuffer::Init()
{ {
gLoaderThread.Start(); gLoaderThread.Start();
} }
void plSoundBuffer::Shutdown() void plSoundBuffer::Shutdown()
{ {
gLoaderThread.Stop(); gLoaderThread.Stop();
} }
//// Constructor/Destructor ////////////////////////////////////////////////// //// Constructor/Destructor //////////////////////////////////////////////////
@ -350,8 +350,8 @@ plSoundBuffer::ELoadReturnVal plSoundBuffer::AsyncLoad(plAudioFileReader::Stream
return kError; return kError;
} }
gLoaderThread.AddBuffer(this); gLoaderThread.AddBuffer(this);
fLoading = true; fLoading = true;
} }
if(fLoaded) if(fLoaded)
{ {

42
Sources/Plasma/PubUtilLib/plAudioCore/plSoundBuffer.h

@ -145,34 +145,34 @@ protected:
class plSoundPreloader : public hsThread class plSoundPreloader : public hsThread
{ {
protected: protected:
hsTArray<plSoundBuffer*> fBuffers; hsTArray<plSoundBuffer*> fBuffers;
hsEvent fEvent; hsEvent fEvent;
bool fRunning; bool fRunning;
hsMutex fCritSect; hsMutex fCritSect;
public: public:
virtual hsError Run(); virtual hsError Run();
virtual void Start() { virtual void Start() {
fRunning = true; fRunning = true;
hsThread::Start(); hsThread::Start();
} }
virtual void Stop() { virtual void Stop() {
fRunning = false; fRunning = false;
fEvent.Signal(); fEvent.Signal();
hsThread::Stop(); hsThread::Stop();
} }
bool IsRunning() const { return fRunning; } bool IsRunning() const { return fRunning; }
void AddBuffer(plSoundBuffer* buffer) { void AddBuffer(plSoundBuffer* buffer) {
fCritSect.Lock(); fCritSect.Lock();
fBuffers.Push(buffer); fBuffers.Push(buffer);
fCritSect.Unlock(); fCritSect.Unlock();
fEvent.Signal(); fEvent.Signal();
} }
}; };
#endif //_plSoundBuffer_h #endif //_plSoundBuffer_h

Loading…
Cancel
Save