From 35754a69e1653dd2586670031622fb2b01a220d1 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 14 Jan 2012 19:01:03 +0000 Subject: Fix crashes on shutdown (fix #805). git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3942 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/ConnectionImpl.hpp | 14 +++++++++----- src/server/DuplexPort.hpp | 2 +- src/server/InputPort.hpp | 6 ++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/server/ConnectionImpl.hpp b/src/server/ConnectionImpl.hpp index 169f68e6..26b26c03 100644 --- a/src/server/ConnectionImpl.hpp +++ b/src/server/ConnectionImpl.hpp @@ -20,7 +20,7 @@ #include -#include +#include #include #include @@ -51,12 +51,16 @@ class BufferFactory; * multiple connections (oblivious to the polyphonic situation of the * connection itself). * + * This is stored in an intrusive slist in InputPort. + * * \ingroup engine */ -class ConnectionImpl : public Raul::Deletable - , private Raul::Noncopyable - , public Connection - , public boost::intrusive::list_base_hook<> +class ConnectionImpl + : public Raul::Deletable + , private Raul::Noncopyable + , public Connection + , public boost::intrusive::slist_base_hook< + boost::intrusive::link_mode > { public: ConnectionImpl(PortImpl* src_port, PortImpl* dst_port); diff --git a/src/server/DuplexPort.hpp b/src/server/DuplexPort.hpp index aa174132..3b715130 100644 --- a/src/server/DuplexPort.hpp +++ b/src/server/DuplexPort.hpp @@ -45,7 +45,7 @@ public: uint32_t index, bool polyphonic, uint32_t poly, - PortType type, + PortType type, const Raul::Atom& value, size_t buffer_size, bool is_output); diff --git a/src/server/InputPort.hpp b/src/server/InputPort.hpp index ccd651c7..542c3dd1 100644 --- a/src/server/InputPort.hpp +++ b/src/server/InputPort.hpp @@ -22,7 +22,7 @@ #include #include -#include +#include #include "raul/SharedPtr.hpp" @@ -63,7 +63,9 @@ public: virtual ~InputPort() {} - typedef boost::intrusive::list Connections; + typedef boost::intrusive::slist + > Connections; void add_connection(ConnectionImpl* c); ConnectionImpl* remove_connection(ProcessContext& context, -- cgit v1.2.1