diff options
-rw-r--r-- | src/server/DirectDriver.hpp | 8 | ||||
-rw-r--r-- | src/server/Driver.hpp | 8 | ||||
-rw-r--r-- | src/server/EnginePort.hpp | 3 | ||||
-rw-r--r-- | src/server/JackDriver.cpp | 29 | ||||
-rw-r--r-- | src/server/JackDriver.hpp | 8 | ||||
-rw-r--r-- | src/server/events/Move.cpp | 14 | ||||
-rw-r--r-- | src/server/events/Move.hpp | 1 | ||||
-rw-r--r-- | src/server/ingen_lv2.cpp | 25 | ||||
-rw-r--r-- | src/server/util.hpp | 6 |
9 files changed, 42 insertions, 60 deletions
diff --git a/src/server/DirectDriver.hpp b/src/server/DirectDriver.hpp index 8acb3f11..ccf65fee 100644 --- a/src/server/DirectDriver.hpp +++ b/src/server/DirectDriver.hpp @@ -42,15 +42,13 @@ public: return NULL; } - virtual EnginePort* engine_port(ProcessContext& context, - const Raul::Path& path) { - return NULL; - } - virtual EnginePort* port(const Raul::Path& path) { return NULL; } virtual void add_port(ProcessContext& context, EnginePort* port) {} + virtual void rename_port(const Raul::Path& old_path, + const Raul::Path& new_path) {} + virtual Raul::Deletable* remove_port(ProcessContext& context, EnginePort* port) { return NULL; diff --git a/src/server/Driver.hpp b/src/server/Driver.hpp index da9f09a5..e551f636 100644 --- a/src/server/Driver.hpp +++ b/src/server/Driver.hpp @@ -56,10 +56,6 @@ public: */ virtual EnginePort* create_port(DuplexPort* patch_port) = 0; - /** Return the DriverPort for a particular path, iff one exists. */ - virtual EnginePort* engine_port(ProcessContext& context, - const Raul::Path& path) = 0; - /** Find a system port by path. */ virtual EnginePort* port(const Raul::Path& path) = 0; @@ -70,6 +66,10 @@ public: virtual Raul::Deletable* remove_port(ProcessContext& context, EnginePort* port) = 0; + /** Rename a system visible port. */ + virtual void rename_port(const Raul::Path& old_path, + const Raul::Path& new_path) = 0; + /** Return the audio buffer size in frames */ virtual SampleCount block_length() const = 0; diff --git a/src/server/EnginePort.hpp b/src/server/EnginePort.hpp index 6e6d0d1a..c911c118 100644 --- a/src/server/EnginePort.hpp +++ b/src/server/EnginePort.hpp @@ -49,9 +49,6 @@ public: virtual ~EnginePort() {} - /** Set the name of the system port according to new path */ - virtual void move(const Raul::Path& path) {} - /** Create system port */ virtual void create() {} diff --git a/src/server/JackDriver.cpp b/src/server/JackDriver.cpp index 372feaa6..65566472 100644 --- a/src/server/JackDriver.cpp +++ b/src/server/JackDriver.cpp @@ -75,7 +75,7 @@ JackPort::create() { _jack_port = jack_port_register( _driver->jack_client(), - ingen_jack_port_name(_patch_port->path()).c_str(), + _patch_port->path().substr(1).c_str(), (_patch_port->is_a(PortType::AUDIO)) ? JACK_DEFAULT_AUDIO_TYPE : JACK_DEFAULT_MIDI_TYPE, (_patch_port->is_input()) @@ -99,12 +99,6 @@ JackPort::destroy() } void -JackPort::move(const Raul::Path& path) -{ - jack_port_set_name(_jack_port, ingen_jack_port_name(path).c_str()); -} - -void JackPort::pre_process(ProcessContext& context) { const SampleCount nframes = context.nframes(); @@ -339,6 +333,16 @@ JackDriver::remove_port(ProcessContext& context, return NULL; } +void +JackDriver::rename_port(const Raul::Path& old_path, + const Raul::Path& new_path) +{ + JackPort* jport = dynamic_cast<JackPort*>(port(old_path)); + if (jport) { + jack_port_set_name(jport->jack_port(), new_path.substr(1).c_str()); + } +} + EnginePort* JackDriver::port(const Raul::Path& path) { @@ -365,17 +369,6 @@ JackDriver::create_port(DuplexPort* patch_port) } } -EnginePort* -JackDriver::engine_port(ProcessContext& context, - const Raul::Path& path) -{ - for (Raul::List<JackPort*>::iterator i = _ports.begin(); i != _ports.end(); ++i) - if ((*i)->patch_port()->path() == path) - return (*i); - - return NULL; -} - /**** Jack Callbacks ****/ /** Jack process callback, drives entire audio thread. diff --git a/src/server/JackDriver.hpp b/src/server/JackDriver.hpp index b41ebca5..5724afa7 100644 --- a/src/server/JackDriver.hpp +++ b/src/server/JackDriver.hpp @@ -60,8 +60,6 @@ public: void create(); void destroy(); - void move(const Raul::Path& path); - void pre_process(ProcessContext& context); void post_process(ProcessContext& context); @@ -98,8 +96,10 @@ public: EnginePort* port(const Raul::Path& path); EnginePort* create_port(DuplexPort* patch_port); - void add_port(ProcessContext& context, EnginePort* port); - EnginePort* engine_port(ProcessContext& context, const Raul::Path& path); + void add_port(ProcessContext& context, EnginePort* port); + + void rename_port(const Raul::Path& old_path, + const Raul::Path& new_path); Raul::Deletable* remove_port(ProcessContext& context, EnginePort* port); diff --git a/src/server/events/Move.cpp b/src/server/events/Move.cpp index 5044ce3e..4d72e9ba 100644 --- a/src/server/events/Move.cpp +++ b/src/server/events/Move.cpp @@ -40,8 +40,6 @@ Move::Move(Engine& engine, : Event(engine, client, id, timestamp) , _old_path(path) , _new_path(new_path) - , _parent_patch(NULL) - , _port(NULL) { } @@ -67,7 +65,11 @@ Move::pre_process() return Event::pre_process_done(EXISTS, _new_path); } - _port = dynamic_cast<PortImpl*>(i->second.get()); + EnginePort* eport = _engine.driver()->port(_old_path); + if (eport) { + _engine.driver()->rename_port(_old_path, _new_path); + } + _engine.store()->rename(i, _new_path); return Event::pre_process_done(SUCCESS); @@ -76,12 +78,6 @@ Move::pre_process() void Move::execute(ProcessContext& context) { - if (_port && !_port->parent()->parent()) { - EnginePort* eport = _engine.driver()->engine_port(context, _new_path); - if (eport) { - eport->move(_new_path); - } - } } void diff --git a/src/server/events/Move.hpp b/src/server/events/Move.hpp index 0e46df1b..6c38347f 100644 --- a/src/server/events/Move.hpp +++ b/src/server/events/Move.hpp @@ -63,7 +63,6 @@ private: const Raul::Path _old_path; const Raul::Path _new_path; PatchImpl* _parent_patch; - PortImpl* _port; }; } // namespace Events diff --git a/src/server/ingen_lv2.cpp b/src/server/ingen_lv2.cpp index 1ad6ac72..a28eb5fc 100644 --- a/src/server/ingen_lv2.cpp +++ b/src/server/ingen_lv2.cpp @@ -209,7 +209,17 @@ public: virtual void set_root_patch(PatchImpl* patch) { _root_patch = patch; } virtual PatchImpl* root_patch() { return _root_patch; } - /** Unused since LV2 has no dynamic ports. */ + virtual EnginePort* engine_port(ProcessContext& context, + const Raul::Path& path) { + for (Ports::iterator i = _ports.begin(); i != _ports.end(); ++i) { + if ((*i)->patch_port()->path() == path) { + return (*i); + } + } + + return NULL; + } + EnginePort* port(const Raul::Path& path) { return NULL; } /** Doesn't have to be real-time safe since LV2 has no dynamic ports. */ @@ -232,19 +242,14 @@ public: return NULL; } + /** UNused since LV2 has no dynamic ports. */ + virtual void rename_port(const Raul::Path& old_path, + const Raul::Path& new_path) {} + virtual EnginePort* create_port(DuplexPort* patch_port) { return new LV2Port(this, patch_port); } - virtual EnginePort* engine_port(ProcessContext& context, - const Raul::Path& path) { - for (Ports::iterator i = _ports.begin(); i != _ports.end(); ++i) - if ((*i)->patch_port()->path() == path) - return (*i); - - return NULL; - } - /** Called in run thread for events received at control input port. */ void enqueue_message(const LV2_Atom* atom) { if (_from_ui.write(lv2_atom_total_size(atom), atom) == 0) { diff --git a/src/server/util.hpp b/src/server/util.hpp index 54649c7e..cae43c35 100644 --- a/src/server/util.hpp +++ b/src/server/util.hpp @@ -81,12 +81,6 @@ set_denormal_flags() #endif } -static inline std::string -ingen_jack_port_name(const Raul::Path& path) -{ - return path.substr(1); -} - } // namespace Server } // namespace Ingen |