From 48f87f1f1649fb7e169fdaac2cd38370e8a4a1fa Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 8 Sep 2006 03:58:00 +0000 Subject: De-singleton-ified Engine Slight rework of Responder/ClientKey/ClientInterface for Requests git-svn-id: http://svn.drobilla.net/lad/ingen@119 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/engine/events/SetPortValueEvent.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/libs/engine/events/SetPortValueEvent.cpp') diff --git a/src/libs/engine/events/SetPortValueEvent.cpp b/src/libs/engine/events/SetPortValueEvent.cpp index 6331a4b5..4018139a 100644 --- a/src/libs/engine/events/SetPortValueEvent.cpp +++ b/src/libs/engine/events/SetPortValueEvent.cpp @@ -27,8 +27,8 @@ namespace Ingen { /** Voice-specific control setting */ -SetPortValueEvent::SetPortValueEvent(CountedPtr responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val) -: Event(responder, timestamp), +SetPortValueEvent::SetPortValueEvent(Engine& engine, CountedPtr responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val) +: Event(engine, responder, timestamp), m_voice_num(voice_num), m_port_path(port_path), m_val(val), @@ -38,8 +38,8 @@ SetPortValueEvent::SetPortValueEvent(CountedPtr responder, SampleCoun } -SetPortValueEvent::SetPortValueEvent(CountedPtr responder, SampleCount timestamp, const string& port_path, Sample val) -: Event(responder, timestamp), +SetPortValueEvent::SetPortValueEvent(Engine& engine, CountedPtr responder, SampleCount timestamp, const string& port_path, Sample val) +: Event(engine, responder, timestamp), m_voice_num(-1), m_port_path(port_path), m_val(val), @@ -50,10 +50,12 @@ SetPortValueEvent::SetPortValueEvent(CountedPtr responder, SampleCoun void -SetPortValueEvent::execute(SampleCount offset) +SetPortValueEvent::execute(SampleCount nframes, FrameTime start, FrameTime end) { + assert(_time >= start && _time <= end); + if (m_port == NULL) - m_port = Engine::instance().object_store()->find_port(m_port_path); + m_port = _engine.object_store()->find_port(m_port_path); if (m_port == NULL) { m_error = PORT_NOT_FOUND; @@ -61,9 +63,9 @@ SetPortValueEvent::execute(SampleCount offset) m_error = TYPE_MISMATCH; } else { if (m_voice_num == -1) - ((TypedPort*)m_port)->set_value(m_val, offset); + ((TypedPort*)m_port)->set_value(m_val, _time - start); else - ((TypedPort*)m_port)->set_value(m_voice_num, m_val, offset); + ((TypedPort*)m_port)->set_value(m_voice_num, m_val, _time - start); //((TypedPort*)m_port)->buffer(m_voice_num)->set(m_val, offset); // FIXME: check range } } @@ -76,13 +78,13 @@ SetPortValueEvent::post_process() assert(m_port != NULL); _responder->respond_ok(); - Engine::instance().client_broadcaster()->send_control_change(m_port_path, m_val); + _engine.client_broadcaster()->send_control_change(m_port_path, m_val); // Send patch port control change, if this is a bridge port /*Port* parent_port = m_port->parent_node()->as_port(); if (parent_port != NULL) { assert(parent_port->type() == DataType::FLOAT); - Engine::instance().client_broadcaster()->send_control_change(parent_port->path(), m_val); + _engine.client_broadcaster()->send_control_change(parent_port->path(), m_val); }*/ } else if (m_error == PORT_NOT_FOUND) { -- cgit v1.2.1