diff options
author | David Robillard <d@drobilla.net> | 2008-12-20 20:28:04 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-12-20 20:28:04 +0000 |
commit | 76f6fcfad68d88728bb1a04b193029aa9e46e976 (patch) | |
tree | 271ca830393f9b6dc5241b1ff152905902aaeced /src/engine/JackMidiDriver.hpp | |
parent | 72c6d069df26396436c653532702a4f96f901fba (diff) | |
download | ingen-76f6fcfad68d88728bb1a04b193029aa9e46e976.tar.gz ingen-76f6fcfad68d88728bb1a04b193029aa9e46e976.tar.bz2 ingen-76f6fcfad68d88728bb1a04b193029aa9e46e976.zip |
Fix deregistration of Jack ports, associated memory leaks. Hopefully a fix for #294 and #305).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@1877 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/JackMidiDriver.hpp')
-rw-r--r-- | src/engine/JackMidiDriver.hpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/engine/JackMidiDriver.hpp b/src/engine/JackMidiDriver.hpp index 02bcd5c1..af885766 100644 --- a/src/engine/JackMidiDriver.hpp +++ b/src/engine/JackMidiDriver.hpp @@ -41,6 +41,8 @@ public: JackMidiPort(JackMidiDriver* driver, DuplexPort* port); virtual ~JackMidiPort(); + void unregister(); + void pre_process(ProcessContext& context); void post_process(ProcessContext& context); @@ -80,18 +82,17 @@ public: { return new JackMidiPort(this, patch_port); } void add_port(DriverPort* port); - DriverPort* remove_port(const Raul::Path& path); - DriverPort* driver_port(const Raul::Path& path); + + Raul::List<DriverPort*>::Node* remove_port(const Raul::Path& path); - jack_client_t* jack_client() { return _client; } + jack_client_t* jack_client() { return _client; } private: Engine& _engine; uint32_t _midi_event_type; - Raul::List<JackMidiPort*> _in_ports; - Raul::List<JackMidiPort*> _out_ports; + Raul::List<JackMidiPort*> _ports; friend class JackMidiPort; |