From 89a9cdf0ab581a4cff5cf8fd859d714a90bb8998 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 21 Oct 2007 17:47:49 +0000 Subject: Fix control port value broadcasting. git-svn-id: http://svn.drobilla.net/lad/ingen@893 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/client/OSCClientReceiver.cpp | 2 +- src/libs/engine/InputPort.cpp | 17 ++++++++++++++--- src/libs/engine/OSCEngineReceiver.cpp | 2 +- src/libs/engine/OutputPort.cpp | 13 +++++++++++++ src/libs/engine/OutputPort.hpp | 4 +--- src/libs/engine/PortImpl.cpp | 8 ++++---- 6 files changed, 34 insertions(+), 12 deletions(-) (limited to 'src/libs') diff --git a/src/libs/client/OSCClientReceiver.cpp b/src/libs/client/OSCClientReceiver.cpp index bd0b5db9..6de38da3 100644 --- a/src/libs/client/OSCClientReceiver.cpp +++ b/src/libs/client/OSCClientReceiver.cpp @@ -35,7 +35,7 @@ OSCClientReceiver::OSCClientReceiver(int listen_port) _listen_port(listen_port), _st(NULL) { - start(false); // true = dump, false = shutup + start(true); // true = dump, false = shutup } diff --git a/src/libs/engine/InputPort.cpp b/src/libs/engine/InputPort.cpp index f64cf97b..7e5f6623 100644 --- a/src/libs/engine/InputPort.cpp +++ b/src/libs/engine/InputPort.cpp @@ -31,7 +31,12 @@ using namespace std; namespace Ingen { -InputPort::InputPort(NodeImpl* parent, const string& name, uint32_t index, uint32_t poly, DataType type, size_t buffer_size) +InputPort::InputPort(NodeImpl* parent, + const string& name, + uint32_t index, + uint32_t poly, + DataType type, + size_t buffer_size) : PortImpl(parent, name, index, poly, type, buffer_size) { } @@ -177,7 +182,8 @@ InputPort::pre_process(ProcessContext& context) buffer(i)->prepare_read(context.nframes()); /*cerr << path() << " poly = " << _poly << ", mixdown: " << do_mixdown - << ", fixed buffers: " << _fixed_buffers << endl; + << ", fixed buffers: " << _fixed_buffers << ", joined: " << _buffers->at(0)->is_joined() + << " to " << _buffers->at(0)->joined_buffer() << endl; if (type() == DataType::MIDI) for (uint32_t i=0; i < _poly; ++i) @@ -230,7 +236,12 @@ InputPort::post_process(ProcessContext& context) for (uint32_t i=0; i < _poly; ++i) buffer(i)->prepare_write(context.nframes()); - //cerr << path() << " input post: buffer: " << buffer(0) << endl; + /*if (_broadcast && (_type == DataType::CONTROL)) { + const Sample value = ((AudioBuffer*)(*_buffers)[0])->value_at(0); + + cerr << path() << " input post: buffer: " << buffer(0) << " value = " + << value << " (last " << _last_broadcasted_value << ")" <value_at(0); + if (_type == DataType::CONTROL || _type == DataType::AUDIO) { + const Sample value = ((AudioBuffer*)buffer(0))->value_at(0); if (value != _last_broadcasted_value) { const SendPortValueEvent ev(context.engine(), context.start(), this, false, 0, value); context.event_sink().write(sizeof(ev), &ev); _last_broadcasted_value = value; } } else if (_type == DataType::MIDI) { - if (((MidiBuffer*)(*_buffers)[0])->event_count() > 0) { + if (((MidiBuffer*)buffer(0))->event_count() > 0) { const SendPortActivityEvent ev(context.engine(), context.start(), this); context.event_sink().write(sizeof(ev), &ev); } } else if (_type == DataType::OSC) { - if (((OSCBuffer*)(*_buffers)[0])->event_count() > 0) { + if (((OSCBuffer*)buffer(0))->event_count() > 0) { const SendPortActivityEvent ev(context.engine(), context.start(), this); context.event_sink().write(sizeof(ev), &ev); } -- cgit v1.2.1