aboutsummaryrefslogtreecommitdiffstats
path: root/al/source.h
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-08-11 03:34:35 -0700
committerChris Robinson <[email protected]>2019-08-11 14:01:57 -0700
commit7118733458bc388a900677da6e0d4e4244d0f536 (patch)
treee14278f4a3f6fba0899629192a23415fb229ad6a /al/source.h
parent70058a8a8405a36c66235a56b482c4c0c7a46780 (diff)
Remove multiple buffers per queue item
And simplify related code
Diffstat (limited to 'al/source.h')
-rw-r--r--al/source.h58
1 files changed, 6 insertions, 52 deletions
diff --git a/al/source.h b/al/source.h
index a5d10cf9..05037fd3 100644
--- a/al/source.h
+++ b/al/source.h
@@ -10,6 +10,7 @@
#include "AL/alc.h"
#include "alcontext.h"
+#include "almalloc.h"
#include "alnumeric.h"
#include "alu.h"
#include "vector.h"
@@ -23,58 +24,11 @@ struct ALeffectslot;
#define INVALID_VOICE_IDX static_cast<ALuint>(-1)
struct ALbufferlistitem {
- using element_type = ALbuffer*;
- using value_type = ALbuffer*;
- using index_type = size_t;
- using difference_type = ptrdiff_t;
-
- using pointer = ALbuffer**;
- using const_pointer = ALbuffer*const*;
- using reference = ALbuffer*&;
- using const_reference = ALbuffer*const&;
-
- using iterator = pointer;
- using const_iterator = const_pointer;
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
-
- std::atomic<ALbufferlistitem*> mNext;
- ALuint mMaxSamples;
- ALuint mNumBuffers;
- element_type mBuffers[];
-
- static constexpr size_t Sizeof(size_t num_buffers) noexcept
- {
- return maxz(offsetof(ALbufferlistitem, mBuffers) + sizeof(element_type)*num_buffers,
- sizeof(ALbufferlistitem));
- }
-
- reference front() { return mBuffers[0]; }
- const_reference front() const { return mBuffers[0]; }
- reference back() { return mBuffers[mNumBuffers-1]; }
- const_reference back() const { return mBuffers[mNumBuffers-1]; }
- reference operator[](index_type idx) { return mBuffers[idx]; }
- const_reference operator[](index_type idx) const { return mBuffers[idx]; }
- pointer data() noexcept { return mBuffers; }
- const_pointer data() const noexcept { return mBuffers; }
-
- index_type size() const noexcept { return mNumBuffers; }
- bool empty() const noexcept { return mNumBuffers == 0; }
-
- iterator begin() noexcept { return mBuffers; }
- iterator end() noexcept { return mBuffers+mNumBuffers; }
- const_iterator begin() const noexcept { return mBuffers; }
- const_iterator end() const noexcept { return mBuffers+mNumBuffers; }
- const_iterator cbegin() const noexcept { return mBuffers; }
- const_iterator cend() const noexcept { return mBuffers+mNumBuffers; }
-
- reverse_iterator rbegin() noexcept { return reverse_iterator{end()}; }
- reverse_iterator rend() noexcept { return reverse_iterator{begin()}; }
- const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator{end()}; }
- const_reverse_iterator rend() const noexcept { return const_reverse_iterator{begin()}; }
- const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator{cend()}; }
- const_reverse_iterator crend() const noexcept { return const_reverse_iterator{cbegin()}; }
+ std::atomic<ALbufferlistitem*> mNext{nullptr};
+ ALuint mSampleLen{0u};
+ ALbuffer *mBuffer{nullptr};
+
+ DEF_NEWDEL(ALbufferlistitem)
};