diff options
Diffstat (limited to 'src/libs/engine/events')
-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 |
5 files changed, 14 insertions, 138 deletions
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; |