diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/client/wscript | 9 | ||||
-rw-r--r-- | src/engine/AudioBuffer.cpp | 32 | ||||
-rw-r--r-- | src/engine/AudioBuffer.hpp | 1 | ||||
-rw-r--r-- | src/engine/Buffer.hpp | 2 | ||||
-rw-r--r-- | src/engine/EventBuffer.cpp | 6 | ||||
-rw-r--r-- | src/engine/MidiNoteNode.cpp | 2 | ||||
-rw-r--r-- | src/engine/types.hpp | 3 | ||||
-rw-r--r-- | src/engine/wscript | 32 | ||||
-rw-r--r-- | src/module/wscript | 11 | ||||
-rw-r--r-- | src/serialisation/wscript | 9 |
10 files changed, 62 insertions, 45 deletions
diff --git a/src/client/wscript b/src/client/wscript index 65597d0f..614ad7f9 100644 --- a/src/client/wscript +++ b/src/client/wscript @@ -28,9 +28,10 @@ def build(bld): if bld.env()['HAVE_LIBLO'] == 1: obj.source += ' OSCClientReceiver.cpp OSCEngineSender.cpp ' - obj.includes = ['.', '..', '../common'] - obj.name = 'libingen_client' - obj.target = 'ingen_client' - obj.inst_dir = 'lib/ingen' + obj.includes = ['.', '..', '../common'] + obj.name = 'libingen_client' + obj.target = 'ingen_client' + obj.inst_dir = 'lib/ingen' + obj.uselib_local = 'libingen_shared' autowaf.use_lib(bld, obj, 'GLIBMM LV2CORE SLV2 RAUL REDLANDMM SOUP XML2 SIGCPP LIBLO SOUP') 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) diff --git a/src/module/wscript b/src/module/wscript index a3b593d9..b18b39b5 100644 --- a/src/module/wscript +++ b/src/module/wscript @@ -8,10 +8,11 @@ def build(bld): Module.cpp global.cpp ''' - obj.includes = ['.', '..', '../common'] - obj.defines = 'INGEN_MODULE_DIR=\\\"' + bld.env()['PREFIX'] + 'lib/ingen\\\"' - obj.name = 'libingen_module' - obj.target = 'ingen_module' - obj.vnum = '0.0.0' + obj.includes = ['.', '..', '../common'] + obj.defines = 'INGEN_MODULE_DIR=\\\"' + bld.env()['PREFIX'] + 'lib/ingen\\\"' + obj.name = 'libingen_module' + obj.target = 'ingen_module' + obj.vnum = '0.0.0' + obj.uselib_local = 'libingen_shared' autowaf.use_lib(bld, obj, 'GLIBMM LV2CORE SLV2 RAUL REDLANDMM') diff --git a/src/serialisation/wscript b/src/serialisation/wscript index 8fa5aeb9..d1d30a26 100644 --- a/src/serialisation/wscript +++ b/src/serialisation/wscript @@ -9,9 +9,10 @@ def build(bld): Serialiser.cpp serialisation.cpp ''' - obj.includes = ['.', '..', '../common'] - obj.name = 'libingen_serialisation' - obj.target = 'ingen_serialisation' - obj.inst_dir = 'lib/ingen' + obj.includes = ['.', '..', '../common'] + obj.name = 'libingen_serialisation' + obj.target = 'ingen_serialisation' + obj.inst_dir = 'lib/ingen' + obj.uselib_local = 'libingen_shared' autowaf.use_lib(bld, obj, 'GLIBMM LV2CORE SLV2 RAUL REDLANDMM') |