summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-10-18 21:33:59 +0000
committerDavid Robillard <d@drobilla.net>2008-10-18 21:33:59 +0000
commit2d0f699e5ddaab31e936d3c76cbc59cef487987d (patch)
treed718003782ab00dc89249eed6d370f86aa782796 /src/engine
parenta4876d30d938322a48537be2d29e73fb64174c0a (diff)
downloadingen-2d0f699e5ddaab31e936d3c76cbc59cef487987d.tar.gz
ingen-2d0f699e5ddaab31e936d3c76cbc59cef487987d.tar.bz2
ingen-2d0f699e5ddaab31e936d3c76cbc59cef487987d.zip
Lower glib/glibmm dependency to 2.14.
Fix optional parameters all over the palce because waf is retarded and sets failed check variables to ##some#stupid#name#like#this instead of false. Portability fixes (Ingen (except GUI) and all dependencies builds on OSX). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1681 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/AudioBuffer.cpp32
-rw-r--r--src/engine/AudioBuffer.hpp1
-rw-r--r--src/engine/Buffer.hpp2
-rw-r--r--src/engine/EventBuffer.cpp6
-rw-r--r--src/engine/MidiNoteNode.cpp2
-rw-r--r--src/engine/types.hpp3
-rw-r--r--src/engine/wscript32
7 files changed, 46 insertions, 32 deletions
diff --git a/src/engine/AudioBuffer.cpp b/src/engine/AudioBuffer.cpp
index f13e109f..5eb89855 100644
--- a/src/engine/AudioBuffer.cpp
+++ b/src/engine/AudioBuffer.cpp
@@ -45,6 +45,21 @@ AudioBuffer::AudioBuffer(size_t size)
void
+AudioBuffer::alloc_local_data(size_t size)
+{
+#ifdef POSIX_MEMALIGN
+ const int ret = posix_memalign((void**)&_local_data, 16, size * sizeof(Sample));
+#else
+ _local_data = (Sample*)malloc(size * sizeof(Sample));
+ int ret = (_local_data != NULL);
+#endif
+ if (ret != 0) {
+ cerr << "[Buffer] Failed to allocate buffer. Aborting." << endl;
+ exit(EXIT_FAILURE);
+ }
+}
+
+void
AudioBuffer::resize(size_t size)
{
_size = size;
@@ -54,14 +69,7 @@ AudioBuffer::resize(size_t size)
const bool using_local_data = (_data == _local_data);
deallocate();
-
- const int ret = posix_memalign((void**)&_local_data, 16, _size * sizeof(Sample));
- if (ret != 0) {
- cerr << "[Buffer] Failed to allocate buffer. Aborting." << endl;
- exit(EXIT_FAILURE);
- }
-
- assert(ret == 0);
+ alloc_local_data(_size * sizeof(Sample));
assert(_local_data);
if (using_local_data)
@@ -82,13 +90,7 @@ AudioBuffer::allocate()
assert(_local_data == NULL);
assert(_size > 0);
- const int ret = posix_memalign((void**)&_local_data, 16, _size * sizeof(Sample));
- if (ret != 0) {
- cerr << "[Buffer] Failed to allocate buffer. Aborting." << endl;
- exit(EXIT_FAILURE);
- }
-
- assert(ret == 0);
+ alloc_local_data(_size * sizeof(Sample));
assert(_local_data);
_data = _local_data;
diff --git a/src/engine/AudioBuffer.hpp b/src/engine/AudioBuffer.hpp
index b93e2267..de5487c0 100644
--- a/src/engine/AudioBuffer.hpp
+++ b/src/engine/AudioBuffer.hpp
@@ -66,6 +66,7 @@ public:
private:
enum State { OK, HALF_SET_CYCLE_1, HALF_SET_CYCLE_2 };
+ void alloc_local_data(size_t size);
void allocate();
void deallocate();
diff --git a/src/engine/Buffer.hpp b/src/engine/Buffer.hpp
index e0dd0ba2..254cf009 100644
--- a/src/engine/Buffer.hpp
+++ b/src/engine/Buffer.hpp
@@ -36,6 +36,8 @@ public:
, _size(size)
, _joined_buf(NULL)
{}
+
+ virtual ~Buffer() {}
static Buffer* create(Shared::DataType type, size_t size);
diff --git a/src/engine/EventBuffer.cpp b/src/engine/EventBuffer.cpp
index e57312ad..45ef47f0 100644
--- a/src/engine/EventBuffer.cpp
+++ b/src/engine/EventBuffer.cpp
@@ -40,7 +40,13 @@ EventBuffer::EventBuffer(size_t capacity)
throw std::bad_alloc();
}
+#ifdef HAVE_POSIX_MEMALIGN
int ret = posix_memalign((void**)&_local_buf, 16, sizeof(LV2_Event_Buffer) + capacity);
+#else
+ _local_buf = (LV2_Event_Buffer*)malloc(sizeof(LV2_Event_Buffer) + capacity);
+ int ret = (_local_buf == NULL);
+#endif
+
if (ret) {
cerr << "Failed to allocate event buffer. Aborting." << endl;
exit(EXIT_FAILURE);
diff --git a/src/engine/MidiNoteNode.cpp b/src/engine/MidiNoteNode.cpp
index 5d966e75..5b6da263 100644
--- a/src/engine/MidiNoteNode.cpp
+++ b/src/engine/MidiNoteNode.cpp
@@ -213,7 +213,7 @@ MidiNoteNode::note_on(ProcessContext& context, uchar note_num, uchar velocity, F
if (voice == NULL) {
voice_num = 0;
voice = &(*_voices)[0];
- jack_nframes_t oldest_time = (*_voices)[0].time;
+ FrameTime oldest_time = (*_voices)[0].time;
for (uint32_t i=1; i < _polyphony; ++i) {
if ((*_voices)[i].time < oldest_time) {
voice = &(*_voices)[i];
diff --git a/src/engine/types.hpp b/src/engine/types.hpp
index 7199e2d6..5fedf4f3 100644
--- a/src/engine/types.hpp
+++ b/src/engine/types.hpp
@@ -18,7 +18,8 @@
#ifndef TYPES_HPP
#define TYPES_HPP
-#include <cstddef> // for NULL, size_t, etc
+#include <stdint.h>
+#include <cstddef>
typedef unsigned char uchar;
typedef unsigned int uint;
diff --git a/src/engine/wscript b/src/engine/wscript
index a6871717..6d62a976 100644
--- a/src/engine/wscript
+++ b/src/engine/wscript
@@ -17,9 +17,6 @@ def build(bld):
GraphObjectImpl.cpp
InputPort.cpp
InternalPlugin.cpp
- LADSPAPlugin.cpp
- LV2Info.cpp
- LV2Plugin.cpp
MessageContext.cpp
MidiControlNode.cpp
MidiNoteNode.cpp
@@ -42,18 +39,19 @@ def build(bld):
obj = bld.create_obj('cpp', 'shlib')
obj.source = core_source
- if bld.env()['HAVE_LADSPA']:
- obj.source += ' LADSPANode.cpp '
- if bld.env()['HAVE_SLV2']:
- obj.source += ' LV2Node.cpp '
+ if bld.env()['HAVE_LADSPA'] == 1:
+ obj.source += ' LADSPAPlugin.cpp LADSPANode.cpp '
+ if bld.env()['HAVE_SLV2'] == 1:
+ obj.source += ' LV2Info.cpp LV2Plugin.cpp LV2Node.cpp '
obj.includes = ['.', '..', '../common', './events']
obj.name = 'libingen_engine'
obj.target = 'ingen_engine'
obj.inst_dir = 'lib/ingen'
+ obj.uselib_local = 'libingen_shared'
core_libs = 'GLIBMM GTHREAD LV2CORE SLV2 RAUL REDLANDMM'
autowaf.use_lib(bld, obj, core_libs)
- if bld.env()['HAVE_SOUP'] or bld.env()['HAVE_LIBLO']:
+ if bld.env()['HAVE_SOUP'] == 1 or bld.env()['HAVE_LIBLO'] == 1:
obj = bld.create_obj('cpp', 'shlib')
obj.source = '''
events/SetPortValueEvent.cpp
@@ -92,45 +90,49 @@ def build(bld):
obj.inst_dir = 'lib/ingen'
autowaf.use_lib(bld, obj, core_libs)
- if bld.env()['HAVE_SOUP']:
+ if bld.env()['HAVE_SOUP'] == 1:
obj = bld.create_obj('cpp', 'shlib')
obj.source = 'QueuedEventSource.cpp QueuedEngineInterface.cpp HTTPEngineReceiver.cpp'
obj.includes = ['.', '..', '../common', './events', '../engine']
obj.name = 'libingen_engine_http'
obj.target = 'ingen_engine_http'
obj.inst_dir = 'lib/ingen'
+ obj.uselib_local = 'libingen_engine'
autowaf.use_lib(bld, obj, core_libs + ' SOUP')
- if bld.env()['HAVE_LIBLO']:
+ if bld.env()['HAVE_LIBLO'] == 1:
obj = bld.create_obj('cpp', 'shlib')
obj.source = 'QueuedEventSource.cpp QueuedEngineInterface.cpp OSCClientSender.cpp OSCEngineReceiver.cpp'
obj.includes = ['.', '..', '../common', './events', '../engine']
obj.name = 'libingen_engine_osc'
obj.target = 'ingen_engine_osc'
obj.inst_dir = 'lib/ingen'
+ obj.uselib_local = 'libingen_engine'
autowaf.use_lib(bld, obj, core_libs + ' LIBLO')
- if bld.env()['HAVE_JACK']:
+ if bld.env()['HAVE_JACK'] == 1:
obj = bld.create_obj('cpp', 'shlib')
obj.source = 'JackAudioDriver.cpp JackMidiDriver.cpp'
obj.includes = ['.', '..', '../common', './events', '../engine']
obj.name = 'libingen_engine_jack'
obj.target = 'ingen_engine_jack'
obj.inst_dir = 'lib/ingen'
+ obj.uselib_local = 'libingen_engine'
autowaf.use_lib(bld, obj, core_libs + ' JACK')
# Lightweight ingen/lv2 wrapper
obj = bld.create_obj('cpp', 'shlib')
obj.source = core_source
- if bld.env()['HAVE_LADSPA']:
- obj.source += ' LADSPANode.cpp '
- if bld.env()['HAVE_SLV2']:
- obj.source += ' LV2Node.cpp '
+ if bld.env()['HAVE_LADSPA'] == 1:
+ obj.source += ' LADSPAPlugin.cpp LADSPANode.cpp '
+ if bld.env()['HAVE_SLV2'] == 1:
+ obj.source += ' LV2Plugin.cpp LV2Node.cpp '
obj.includes = ['.', '..', '../common', './events']
obj.name = 'ingen_lv2'
obj.target = 'ingen.lv2/ingen_lv2'
#obj.inst_dir = 'lib/lv2/ingen.lv2'
obj.inst_var = 0
+ obj.uselib_local = 'libingen_engine'
core_libs = 'GLIBMM GTHREAD LV2CORE SLV2 RAUL REDLANDMM'
autowaf.use_lib(bld, obj, core_libs)