Simplify love.audio's Pool class

Move most logic back to Source. Pool now simply contains a list of playing
sources and a mutex. Also gets rid of the pause/pauseAtomic duplication in
Source, since it can now request a lock from Pool itself.

--HG--
branch : minor
This commit is contained in:
Bart van Strien
2017-02-11 21:41:22 +01:00
parent 7b6e1523b4
commit 03b863d788
9 changed files with 159 additions and 264 deletions
+6 -7
View File
@@ -114,11 +114,8 @@ public:
virtual float getPitch() const;
virtual void setVolume(float volume);
virtual float getVolume() const;
virtual void seekAtomic(float offset, void *unit);
virtual void seek(float offset, Unit unit);
virtual float tellAtomic(void *unit) const;
virtual float tell(Unit unit);
virtual double getDurationAtomic(void *unit);
virtual double getDuration(Unit unit);
virtual void setPosition(float *v);
virtual void getPosition(float *v) const;
@@ -157,7 +154,6 @@ public:
virtual int getFreeBufferCount() const;
virtual bool queue(void *data, size_t length, int dataSampleRate, int dataBitDepth, int dataChannels);
virtual bool queueAtomic(void *data, ALsizei length);
void prepareAtomic();
void teardownAtomic();
@@ -167,9 +163,12 @@ public:
void pauseAtomic();
void resumeAtomic();
static bool playAtomic(const std::vector<love::audio::Source*> &sources, const std::vector<ALuint> &ids, const std::vector<char> &wasPlaying);
static void stopAtomic(const std::vector<love::audio::Source*> &sources);
static void pauseAtomic(const std::vector<love::audio::Source*> &sources);
static bool play(const std::vector<love::audio::Source*> &sources);
static void stop(const std::vector<love::audio::Source*> &sources);
static void pause(const std::vector<love::audio::Source*> &sources);
static std::vector<love::audio::Source*> pause(Pool *pool);
static void stop(Pool *pool);
private: