summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/QueuedEvent.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/engine/QueuedEvent.h')
-rw-r--r--src/libs/engine/QueuedEvent.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/libs/engine/QueuedEvent.h b/src/libs/engine/QueuedEvent.h
index d88a247c..388630e7 100644
--- a/src/libs/engine/QueuedEvent.h
+++ b/src/libs/engine/QueuedEvent.h
@@ -49,9 +49,16 @@ public:
_pre_processed = true;
}
- virtual void execute(SampleCount offset) {
+ virtual void execute(SampleCount nframes, FrameTime start, FrameTime end) {
assert(_pre_processed);
- Event::execute(offset);
+ assert(_time <= end);
+
+ // Didn't prepare in time. QueuedEvents aren't (necessarily) sample accurate
+ // so just run at the beginning of this cycle
+ if (_time <= start)
+ _time = start;
+
+ Event::execute(nframes, start, end);
}
virtual void post_process() {}
@@ -66,17 +73,18 @@ protected:
QueuedEvent(const QueuedEvent& copy);
QueuedEvent& operator=(const QueuedEvent&);
- QueuedEvent(CountedPtr<Responder> responder,
- SampleCount timestamp,
+ QueuedEvent(Engine& engine,
+ CountedPtr<Responder> responder,
+ FrameTime time,
bool blocking = false,
QueuedEventSource* source = NULL)
- : Event(responder, timestamp)
+ : Event(engine, responder, time)
, _pre_processed(false), _blocking(blocking), _source(source)
{}
// NULL event base (for internal events only!)
- QueuedEvent()
- : Event(NULL, 0)
+ QueuedEvent(Engine& engine)
+ : Event(engine, NULL, 0)
, _pre_processed(false), _blocking(false), _source(NULL)
{}