diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/interface/EngineInterface.hpp | 4 | ||||
-rw-r--r-- | src/libs/client/OSCEngineSender.cpp | 20 | ||||
-rw-r--r-- | src/libs/client/OSCEngineSender.hpp | 4 | ||||
-rw-r--r-- | src/libs/engine/Makefile.am | 2 | ||||
-rw-r--r-- | src/libs/engine/OSCEngineReceiver.cpp | 30 | ||||
-rw-r--r-- | src/libs/engine/OSCEngineReceiver.hpp | 2 | ||||
-rw-r--r-- | src/libs/engine/QueuedEngineInterface.cpp | 14 | ||||
-rw-r--r-- | src/libs/engine/QueuedEngineInterface.hpp | 4 | ||||
-rw-r--r-- | src/libs/engine/events.hpp | 1 | ||||
-rw-r--r-- | src/libs/engine/events/EnablePortBroadcastingEvent.cpp | 76 | ||||
-rw-r--r-- | src/libs/engine/events/EnablePortBroadcastingEvent.hpp | 60 | ||||
-rw-r--r-- | src/libs/engine/events/Makefile.am | 2 | ||||
-rw-r--r-- | src/libs/engine/events/SetMetadataEvent.cpp | 13 | ||||
-rw-r--r-- | src/libs/engine/events/SetMetadataEvent.hpp | 1 | ||||
-rw-r--r-- | src/libs/gui/NodeModule.cpp | 4 |
15 files changed, 16 insertions, 221 deletions
diff --git a/src/common/interface/EngineInterface.hpp b/src/common/interface/EngineInterface.hpp index 8522c57c..e005502e 100644 --- a/src/common/interface/EngineInterface.hpp +++ b/src/common/interface/EngineInterface.hpp @@ -82,10 +82,6 @@ public: uint32_t voice, const Raul::Atom& value) = 0; - virtual void enable_port_broadcasting(const std::string& port_path) = 0; - - virtual void disable_port_broadcasting(const std::string& port_path) = 0; - virtual void set_program(const std::string& node_path, uint32_t bank, uint32_t program) = 0; diff --git a/src/libs/client/OSCEngineSender.cpp b/src/libs/client/OSCEngineSender.cpp index 4f8fcbe5..83852969 100644 --- a/src/libs/client/OSCEngineSender.cpp +++ b/src/libs/client/OSCEngineSender.cpp @@ -304,26 +304,6 @@ OSCEngineSender::set_voice_value_immediate(const string& port_path, void -OSCEngineSender::enable_port_broadcasting(const string& port_path) -{ - send("/ingen/enable_port_broadcasting", "is", - next_id(), - port_path.c_str(), - LO_ARGS_END); -} - - -void -OSCEngineSender::disable_port_broadcasting(const string& port_path) -{ - send("/ingen/disable_port_broadcasting", "is", - next_id(), - port_path.c_str(), - LO_ARGS_END); -} - - -void OSCEngineSender::set_program(const string& node_path, uint32_t bank, uint32_t program) diff --git a/src/libs/client/OSCEngineSender.hpp b/src/libs/client/OSCEngineSender.hpp index f94b86d5..dbb7e8f5 100644 --- a/src/libs/client/OSCEngineSender.hpp +++ b/src/libs/client/OSCEngineSender.hpp @@ -123,10 +123,6 @@ public: uint32_t voice, const Raul::Atom& value); - void enable_port_broadcasting(const string& port_path); - - void disable_port_broadcasting(const string& port_path); - void set_program(const string& node_path, uint32_t bank, uint32_t program); diff --git a/src/libs/engine/Makefile.am b/src/libs/engine/Makefile.am index 5d7cb10f..4e0ac130 100644 --- a/src/libs/engine/Makefile.am +++ b/src/libs/engine/Makefile.am @@ -143,8 +143,6 @@ libingen_engine_la_SOURCES = \ events/DisconnectionEvent.hpp \ events/EnablePatchEvent.cpp \ events/EnablePatchEvent.hpp \ - events/EnablePortBroadcastingEvent.cpp \ - events/EnablePortBroadcastingEvent.hpp \ events/LoadPluginsEvent.cpp \ events/LoadPluginsEvent.hpp \ events/MidiLearnEvent.cpp \ diff --git a/src/libs/engine/OSCEngineReceiver.cpp b/src/libs/engine/OSCEngineReceiver.cpp index 1078a86a..a63c826b 100644 --- a/src/libs/engine/OSCEngineReceiver.cpp +++ b/src/libs/engine/OSCEngineReceiver.cpp @@ -103,8 +103,6 @@ OSCEngineReceiver::OSCEngineReceiver(Engine& engine, size_t queue_size, uint16_t lo_server_add_method(_server, "/ingen/disconnect_all", "iss", disconnect_all_cb, this); lo_server_add_method(_server, "/ingen/set_port_value", NULL, set_port_value_cb, this); lo_server_add_method(_server, "/ingen/set_port_value_immediate", NULL, set_port_value_immediate_cb, this); - lo_server_add_method(_server, "/ingen/enable_port_broadcasting", NULL, enable_port_broadcasting_cb, this); - lo_server_add_method(_server, "/ingen/disable_port_broadcasting", NULL, disable_port_broadcasting_cb, this); lo_server_add_method(_server, "/ingen/note_on", "isii", note_on_cb, this); lo_server_add_method(_server, "/ingen/note_off", "isi", note_off_cb, this); lo_server_add_method(_server, "/ingen/all_notes_off", "isi", all_notes_off_cb, this); @@ -698,34 +696,6 @@ OSCEngineReceiver::_set_port_value_cb(const char* path, const char* types, lo_ar /** \page engine_osc_namespace - * <p> \b /ingen/enable_port_broadcasting - Enable broadcasting of changing port values - * \arg \b response-id (integer) - * \arg \b port-path (string) - Name of port </p> \n \n - */ -int -OSCEngineReceiver::_enable_port_broadcasting_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg) -{ - const char* port_path = &argv[1]->s; - enable_port_broadcasting(port_path); - return 0; -} - - -/** \page engine_osc_namespace - * <p> \b /ingen/disable_port_broadcasting - Enable broadcasting of changing port values - * \arg \b response-id (integer) - * \arg \b port-path (string) - Name of port </p> \n \n - */ -int -OSCEngineReceiver::_disable_port_broadcasting_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg) -{ - const char* port_path = &argv[1]->s; - disable_port_broadcasting(port_path); - return 0; -} - - -/** \page engine_osc_namespace * <p> \b /ingen/note_on - Triggers a note-on, just as if it came from MIDI * \arg \b response-id (integer) * \arg \b node-path (string) - Patch of Node to trigger (must be a trigger or note node) diff --git a/src/libs/engine/OSCEngineReceiver.hpp b/src/libs/engine/OSCEngineReceiver.hpp index 980e2f78..5c54ac7f 100644 --- a/src/libs/engine/OSCEngineReceiver.hpp +++ b/src/libs/engine/OSCEngineReceiver.hpp @@ -107,8 +107,6 @@ private: LO_HANDLER(disconnect_all); LO_HANDLER(set_port_value); LO_HANDLER(set_port_value_immediate); - LO_HANDLER(enable_port_broadcasting); - LO_HANDLER(disable_port_broadcasting); LO_HANDLER(note_on); LO_HANDLER(note_off); LO_HANDLER(all_notes_off); diff --git a/src/libs/engine/QueuedEngineInterface.cpp b/src/libs/engine/QueuedEngineInterface.cpp index 1abaf2c2..6be0bf96 100644 --- a/src/libs/engine/QueuedEngineInterface.cpp +++ b/src/libs/engine/QueuedEngineInterface.cpp @@ -270,20 +270,6 @@ QueuedEngineInterface::set_voice_value_immediate(const string& port_path, void -QueuedEngineInterface::enable_port_broadcasting(const string& port_path) -{ - push_queued(new EnablePortBroadcastingEvent(_engine, _responder, now(), port_path, true)); -} - - -void -QueuedEngineInterface::disable_port_broadcasting(const string& port_path) -{ - push_queued(new EnablePortBroadcastingEvent(_engine, _responder, now(), port_path, false)); -} - - -void QueuedEngineInterface::set_program(const string& node_path, uint32_t bank, uint32_t program) diff --git a/src/libs/engine/QueuedEngineInterface.hpp b/src/libs/engine/QueuedEngineInterface.hpp index 6fea3708..17f8c75a 100644 --- a/src/libs/engine/QueuedEngineInterface.hpp +++ b/src/libs/engine/QueuedEngineInterface.hpp @@ -132,10 +132,6 @@ public: uint32_t voice, const Raul::Atom& value); - virtual void enable_port_broadcasting(const string& port_path); - - virtual void disable_port_broadcasting(const string& port_path); - virtual void set_program(const string& node_path, uint32_t bank, uint32_t program); diff --git a/src/libs/engine/events.hpp b/src/libs/engine/events.hpp index 608bbeaa..14f5230c 100644 --- a/src/libs/engine/events.hpp +++ b/src/libs/engine/events.hpp @@ -31,7 +31,6 @@ #include "DisconnectAllEvent.hpp" #include "DisconnectionEvent.hpp" #include "EnablePatchEvent.hpp" -#include "EnablePortBroadcastingEvent.hpp" #include "LoadPluginsEvent.hpp" #include "MidiLearnEvent.hpp" #include "NoteEvent.hpp" diff --git a/src/libs/engine/events/EnablePortBroadcastingEvent.cpp b/src/libs/engine/events/EnablePortBroadcastingEvent.cpp deleted file mode 100644 index 1d3d2c9e..00000000 --- a/src/libs/engine/events/EnablePortBroadcastingEvent.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007 Dave Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <string> -#include "interface/ClientInterface.hpp" -#include "events/EnablePortBroadcastingEvent.hpp" -#include "Responder.hpp" -#include "Engine.hpp" -#include "PortImpl.hpp" -#include "EngineStore.hpp" -#include "ClientBroadcaster.hpp" -#include "AudioBuffer.hpp" - -using std::string; - -namespace Ingen { - - -EnablePortBroadcastingEvent::EnablePortBroadcastingEvent(Engine& engine, - SharedPtr<Responder> responder, - SampleCount timestamp, - const std::string& port_path, - bool enable) -: QueuedEvent(engine, responder, timestamp), - _port_path(port_path), - _port(NULL), - _enable(enable) -{ -} - - -void -EnablePortBroadcastingEvent::pre_process() -{ - _port = _engine.engine_store()->find_port(_port_path); - - QueuedEvent::pre_process(); -} - - -void -EnablePortBroadcastingEvent::execute(ProcessContext& context) -{ - QueuedEvent::execute(context); - - if (_port) - _port->broadcast(_enable); -} - - -void -EnablePortBroadcastingEvent::post_process() -{ - if (_port) - _responder->respond_ok(); - else - _responder->respond_error("Unable to find port for get_value responder."); -} - - -} // namespace Ingen - diff --git a/src/libs/engine/events/EnablePortBroadcastingEvent.hpp b/src/libs/engine/events/EnablePortBroadcastingEvent.hpp deleted file mode 100644 index f9bc4e98..00000000 --- a/src/libs/engine/events/EnablePortBroadcastingEvent.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007 Dave Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef ENABLEPORTBROADCASTINGEVENT_H -#define ENABLEPORTBROADCASTINGEVENT_H - -#include <string> -#include "QueuedEvent.hpp" -#include "types.hpp" - -using std::string; - -namespace Ingen { - -class PortImpl; -namespace Shared { class ClientInterface; } -using Shared::ClientInterface; - - -/** Enable sending of dynamic value change notifications for a port. - * - * \ingroup engine - */ -class EnablePortBroadcastingEvent : public QueuedEvent -{ -public: - EnablePortBroadcastingEvent(Engine& engine, - SharedPtr<Responder> responder, - SampleCount timestamp, - const std::string& port_path, - bool enable); - - void pre_process(); - void execute(ProcessContext& context); - void post_process(); - -private: - const std::string _port_path; - PortImpl* _port; - bool _enable; -}; - - -} // namespace Ingen - -#endif // ENABLEPORTBROADCASTINGEVENT_H diff --git a/src/libs/engine/events/Makefile.am b/src/libs/engine/events/Makefile.am index ccb9e6db..9a8cfbd5 100644 --- a/src/libs/engine/events/Makefile.am +++ b/src/libs/engine/events/Makefile.am @@ -23,8 +23,6 @@ EXTRA_DIST = \ DisconnectionEvent.hpp \ EnablePatchEvent.cpp \ EnablePatchEvent.hpp \ - EnablePortBroadcastingEvent.cpp \ - EnablePortBroadcastingEvent.hpp \ LoadPluginsEvent.cpp \ LoadPluginsEvent.hpp \ MidiLearnEvent.cpp \ diff --git a/src/libs/engine/events/SetMetadataEvent.cpp b/src/libs/engine/events/SetMetadataEvent.cpp index 341fa06c..6e72d57b 100644 --- a/src/libs/engine/events/SetMetadataEvent.cpp +++ b/src/libs/engine/events/SetMetadataEvent.cpp @@ -20,6 +20,7 @@ #include <boost/format.hpp> #include "Responder.hpp" #include "Engine.hpp" +#include "PortImpl.hpp" #include "ClientBroadcaster.hpp" #include "GraphObjectImpl.hpp" #include "EngineStore.hpp" @@ -39,6 +40,7 @@ SetMetadataEvent::SetMetadataEvent( const Atom& value) : QueuedEvent(engine, responder, timestamp) , _error(NO_ERROR) + , _special_type(NONE) , _property(property) , _path(path) , _key(key) @@ -67,6 +69,11 @@ SetMetadataEvent::pre_process() _object->set_property(_key, _value); else _object->set_variable(_key, _value); + + if (_key == "ingen:broadcast") { + std::cout << "BROADCAST" << std::endl; + _special_type = ENABLE_BROADCAST; + } QueuedEvent::pre_process(); } @@ -75,6 +82,12 @@ SetMetadataEvent::pre_process() void SetMetadataEvent::execute(ProcessContext& context) { + if (_special_type == ENABLE_BROADCAST) { + PortImpl* port = dynamic_cast<PortImpl*>(_object); + if (port) + port->broadcast(_value.get_bool()); + } + QueuedEvent::execute(context); // Do nothing } diff --git a/src/libs/engine/events/SetMetadataEvent.hpp b/src/libs/engine/events/SetMetadataEvent.hpp index f6f8d3c3..6b9be81c 100644 --- a/src/libs/engine/events/SetMetadataEvent.hpp +++ b/src/libs/engine/events/SetMetadataEvent.hpp @@ -50,6 +50,7 @@ public: private: enum { NO_ERROR, INVALID_PATH } _error; + enum { NONE, ENABLE_BROADCAST } _special_type; bool _property; string _path; diff --git a/src/libs/gui/NodeModule.cpp b/src/libs/gui/NodeModule.cpp index 207bdd18..21415be9 100644 --- a/src/libs/gui/NodeModule.cpp +++ b/src/libs/gui/NodeModule.cpp @@ -154,7 +154,7 @@ NodeModule::embed_gui(bool embed) for (PortModelList::const_iterator p = _node->ports().begin(); p != _node->ports().end(); ++p) if ((*p)->type().is_control() && (*p)->is_output()) - App::instance().engine()->enable_port_broadcasting((*p)->path()); + App::instance().engine()->set_property((*p)->path(), "ingen:broadcast", true); } } else { // un-embed @@ -164,7 +164,7 @@ NodeModule::embed_gui(bool embed) for (PortModelList::const_iterator p = _node->ports().begin(); p != _node->ports().end(); ++p) if ((*p)->type().is_control() && (*p)->is_output()) - App::instance().engine()->disable_port_broadcasting((*p)->path()); + App::instance().engine()->set_property((*p)->path(), "ingen:broadcast", false); } if (embed && _embed_item) { |