summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/Buffer.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-06-21 03:27:16 +0000
committerDavid Robillard <d@drobilla.net>2006-06-21 03:27:16 +0000
commita603f4a917bd5a7d806ff8394e2bfbe0f64acc64 (patch)
treecb2fe94e1bb08c8d603918bf94d8ee362e98d4eb /src/libs/engine/Buffer.cpp
parent032d526710d174b30e0c9f33ff9f7e60e99fb172 (diff)
downloadingen-a603f4a917bd5a7d806ff8394e2bfbe0f64acc64.tar.gz
ingen-a603f4a917bd5a7d806ff8394e2bfbe0f64acc64.tar.bz2
ingen-a603f4a917bd5a7d806ff8394e2bfbe0f64acc64.zip
Got the audio flowing
git-svn-id: http://svn.drobilla.net/lad/grauph@70 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/Buffer.cpp')
-rw-r--r--src/libs/engine/Buffer.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/libs/engine/Buffer.cpp b/src/libs/engine/Buffer.cpp
index 4e94a943..9d88f806 100644
--- a/src/libs/engine/Buffer.cpp
+++ b/src/libs/engine/Buffer.cpp
@@ -180,7 +180,7 @@ Buffer<T>::copy(const Buffer<T>* src, size_t start_sample, size_t end_sample)
assert(src->data() != NULL);
assert(m_data != NULL);
- const T* const src_data = src->data();
+ register const T* const src_data = src->data();
for (size_t i=start_sample; i <= end_sample; ++i)
m_data[i] = src_data[i];
@@ -205,7 +205,7 @@ Buffer<T>::accumulate(const Buffer<T>* const src, size_t start_sample, size_t en
assert(src->data() != NULL);
assert(m_data != NULL);
- const T* const src_data = src->data();
+ register const T* const src_data = src->data();
for (size_t i=start_sample; i <= end_sample; ++i)
m_data[i] += src_data[i];
@@ -267,8 +267,30 @@ Buffer<sample>::prepare(samplecount nframes)
}
-////// DriverBuffer ////////
+template<>
+void
+Buffer<MidiMessage>::prepare(samplecount nframes)
+{
+}
+
+
+/** Set the buffer (data) used.
+ *
+ * This is only to be used by Drivers (to provide zero-copy processing).
+ */
+template<typename T>
+void
+Buffer<T>::set_data(T* data)
+{
+ assert(!m_is_joined);
+ m_data = data;
+}
+template void Buffer<sample>::set_data(sample* data);
+template void Buffer<MidiMessage>::set_data(MidiMessage* data);
+
+////// DriverBuffer ////////
+#if 0
template <typename T>
DriverBuffer<T>::DriverBuffer(size_t size)
: Buffer<T>(size)
@@ -293,6 +315,6 @@ DriverBuffer<T>::set_data(T* data)
}
template void DriverBuffer<sample>::set_data(sample* data);
template void DriverBuffer<MidiMessage>::set_data(MidiMessage* data);
-
+#endif
} // namespace Om