summaryrefslogtreecommitdiffstats
path: root/src/engine/NodeBase.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/NodeBase.hpp')
-rw-r--r--src/engine/NodeBase.hpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/engine/NodeBase.hpp b/src/engine/NodeBase.hpp
index 2537039b..15772551 100644
--- a/src/engine/NodeBase.hpp
+++ b/src/engine/NodeBase.hpp
@@ -27,6 +27,7 @@
#include "raul/Atom.hpp"
#include "interface/Port.hpp"
#include "NodeImpl.hpp"
+#include "contexts.lv2/contexts.h"
namespace Ingen {
@@ -70,11 +71,16 @@ public:
virtual void learn() {}
- virtual void message_process(MessageContext& context, uint32_t* ins, uint32_t* outs) {}
+ virtual void message_run(MessageContext& context) {}
- virtual void pre_process(ProcessContext& context);
+ virtual void set_port_valid(uint32_t port_index);
+
+ virtual void* valid_ports();
+ virtual void reset_valid_ports();
+
+ virtual void pre_process(Context& context);
virtual void process(ProcessContext& context) = 0;
- virtual void post_process(ProcessContext& context);
+ virtual void post_process(Context& context);
virtual void set_port_buffer(uint32_t voice, uint32_t port_num, Buffer* buf) {}
@@ -115,15 +121,18 @@ protected:
uint32_t _polyphony;
SampleRate _srate;
size_t _buffer_size;
- bool _activated;
- bool _traversed; ///< Flag for process order algorithm
+ void* _valid_ports; ///< Valid port flags for message context
+
Raul::Semaphore _input_ready; ///< Parallelism: input ready signal
Raul::AtomicInt _process_lock; ///< Parallelism: Waiting on inputs 'lock'
Raul::AtomicInt _n_inputs_ready; ///< Parallelism: # input ready signals this cycle
Raul::Array<PortImpl*>* _ports; ///< Access in audio thread only
Raul::List<NodeImpl*>* _providers; ///< Nodes connected to this one's input ports
Raul::List<NodeImpl*>* _dependants; ///< Nodes this one's output ports are connected to
+
+ bool _activated;
+ bool _traversed; ///< Flag for process order algorithm
};