X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fbuffer_set.cc;h=92f5272b3b2bee945c8723eb0b2188ff58518e9b;hb=31b2c7858124a382a59e381dc1b46212be15e046;hp=9db99d20ce520eeced0825e2614b40a73ac1fe12;hpb=52003be3695ab703b936163d7284e208790d5363;p=ardour.git diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index 9db99d20ce..92f5272b3b 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -34,6 +34,7 @@ #include "ardour/midi_buffer.h" #include "ardour/port.h" #include "ardour/port_set.h" +#include "ardour/uri_map.h" #ifdef LV2_SUPPORT #include "ardour/lv2_plugin.h" #include "lv2_evbuf.h" @@ -78,7 +79,7 @@ BufferSet::clear() _count.reset(); _available.reset(); -#if defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT +#if defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT for (VSTBuffers::iterator i = _vst_buffers.begin(); i != _vst_buffers.end(); ++i) { delete *i; } @@ -86,6 +87,13 @@ BufferSet::clear() _vst_buffers.clear (); #endif +#ifdef LV2_SUPPORT + for (LV2Buffers::iterator i = _lv2_buffers.begin(); i != _lv2_buffers.end(); ++i) { + free ((*i).second); + } + _lv2_buffers.clear (); +#endif + } /** Set up this BufferSet so that its data structures mirror a PortSet's buffers. @@ -179,7 +187,7 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac for (size_t i = 0; i < num_buffers; ++i) { bufs.push_back(Buffer::create(type, buffer_capacity)); } - + _available.set(type, num_buffers); _count.set (type, num_buffers); } @@ -192,8 +200,8 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac _lv2_buffers.push_back( std::make_pair(false, lv2_evbuf_new(buffer_capacity, LV2_EVBUF_EVENT, - LV2Plugin::urids.atom_Chunk, - LV2Plugin::urids.atom_Sequence))); + URIMap::instance().urids.atom_Chunk, + URIMap::instance().urids.atom_Sequence))); } } #endif @@ -267,8 +275,8 @@ BufferSet::ensure_lv2_bufsize(bool input, size_t i, size_t buffer_capacity) std::make_pair(false, lv2_evbuf_new( buffer_capacity, LV2_EVBUF_EVENT, - LV2Plugin::urids.atom_Chunk, - LV2Plugin::urids.atom_Sequence)); + URIMap::instance().urids.atom_Chunk, + URIMap::instance().urids.atom_Sequence)); } LV2_Evbuf* @@ -297,7 +305,7 @@ BufferSet::forward_lv2_midi(LV2_Evbuf* buf, size_t i, bool purge_ardour_buffer) uint32_t frames, subframes, type, size; uint8_t* data; lv2_evbuf_get(i, &frames, &subframes, &type, &size, &data); - if (type == LV2Plugin::urids.midi_MidiEvent) { + if (type == URIMap::instance().urids.midi_MidiEvent) { mbuf.push_back(frames, size, data); } } @@ -326,7 +334,7 @@ BufferSet::flush_lv2_midi(bool input, size_t i) DEBUG_TRACE (PBD::DEBUG::LV2, string_compose ("\tByte[%1] = %2\n", x, (int) data[x])); } #endif - if (type == LV2Plugin::urids.midi_MidiEvent) { + if (type == URIMap::instance().urids.midi_MidiEvent) { // TODO: Make Ardour event buffers generic so plugins can communicate mbuf.push_back(frames, size, data); }