summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/ProcessContext.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-09-30 21:12:16 +0000
committerDavid Robillard <d@drobilla.net>2007-09-30 21:12:16 +0000
commit399ddfc5b1d4f1f131362d0439821778c6681b23 (patch)
treee8ca2536fa251f474817d0575bc3b4747c494954 /src/libs/engine/ProcessContext.hpp
parentc40ddfc0eebbcb3333d6cc9e3df7fb62ecb45941 (diff)
downloadingen-399ddfc5b1d4f1f131362d0439821778c6681b23.tar.gz
ingen-399ddfc5b1d4f1f131362d0439821778c6681b23.tar.bz2
ingen-399ddfc5b1d4f1f131362d0439821778c6681b23.zip
Better design for process() signature (pass everything needed in a single object parameter).
Working port "monitoring" (connect an output to a control input, GUI will animate controller). git-svn-id: http://svn.drobilla.net/lad/ingen@788 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/ProcessContext.hpp')
-rw-r--r--src/libs/engine/ProcessContext.hpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/libs/engine/ProcessContext.hpp b/src/libs/engine/ProcessContext.hpp
index 4d5f733f..c85c9ff6 100644
--- a/src/libs/engine/ProcessContext.hpp
+++ b/src/libs/engine/ProcessContext.hpp
@@ -29,17 +29,34 @@ namespace Ingen {
* process in the audio thread, e.g. the available thread pool, sink for
* events (generated in the audio thread, not user initiated events), etc.
*
+ * Note the distinction between nframes and start/end. If transport speed
+ * != 1.0, end-start != nframes (though currently that is never the case, it
+ * may be in the future with sequencerey things).
+ *
* \ingroup engine
*/
class ProcessContext
{
public:
- ProcessContext() : _event_sink(1024) {} // FIXME: size?
-
- EventSink& event_sink() { return _event_sink; }
+ ProcessContext(Engine& engine) : _event_sink(engine, 1024) {} // FIXME: size?
+
+ void set_time_slice(SampleCount nframes, FrameTime start, FrameTime end) {
+ _nframes = nframes;
+ _start = start;
+ _end = end;
+ }
+
+ inline SampleCount nframes() const { return _nframes; }
+ inline FrameTime start() const { return _start; }
+ inline FrameTime end() const { return _end; }
+ inline const EventSink& event_sink() const { return _event_sink; }
+ inline EventSink& event_sink() { return _event_sink; }
private:
- EventSink _event_sink;
+ SampleCount _nframes; ///< Number of actual time (Jack) frames this cycle
+ FrameTime _start; ///< Start frame of this cycle, timeline relative
+ FrameTime _end; ///< End frame of this cycle, timeline relative
+ EventSink _event_sink; ///< Sink for events generated in the audio thread
};