diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-17 18:24:23 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-17 18:24:23 +0000 |
commit | f6fdd8dcbf41f864e9f0cc32dabe81fe3533ddfe (patch) | |
tree | 5214c580b9e6c17a499fa587660dbf949e892bf2 /gtk2_ardour/port_group.h | |
parent | da762129f19c28aff64f833b6ec09fba946faef6 (diff) |
switch to using boost::signals2 instead of sigc++, at least for libardour. not finished yet, but compiles, loads sessions, records and can close a session without a crash
git-svn-id: svn://localhost/ardour2/branches/3.0@6372 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/port_group.h')
-rw-r--r-- | gtk2_ardour/port_group.h | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/gtk2_ardour/port_group.h b/gtk2_ardour/port_group.h index 1fcceb4c19..ebab997699 100644 --- a/gtk2_ardour/port_group.h +++ b/gtk2_ardour/port_group.h @@ -23,9 +23,12 @@ #include <vector> #include <string> #include <set> +#include <boost/shared_ptr.hpp> +#include <boost/signals2.hpp> + #include <gtkmm/widget.h> #include <gtkmm/checkbutton.h> -#include <boost/shared_ptr.hpp> + #include "ardour/data_type.h" #include "ardour/types.h" @@ -47,6 +50,7 @@ class PortGroup : public sigc::trackable { public: PortGroup (std::string const & n); + ~PortGroup (); void add_bundle (boost::shared_ptr<ARDOUR::Bundle>, bool allow_dups = false); void add_bundle (boost::shared_ptr<ARDOUR::Bundle>, boost::shared_ptr<ARDOUR::IO> io); @@ -65,19 +69,21 @@ public: sigc::signal<void> Changed; /** An individual bundle on our list has changed in some way */ - sigc::signal<void, ARDOUR::Bundle::Change> BundleChanged; + boost::signals2::signal<void(ARDOUR::Bundle::Change)> BundleChanged; struct BundleRecord { - boost::shared_ptr<ARDOUR::Bundle> bundle; - /** IO whose ports are in the bundle, or 0. This is so that we can do things like adding - ports to the IO from matrix editor menus. */ - boost::shared_ptr<ARDOUR::IO> io; - Gdk::Color colour; - bool has_colour; - sigc::connection changed_connection; + boost::shared_ptr<ARDOUR::Bundle> bundle; + /** IO whose ports are in the bundle, or 0. This is so that we can do things like adding + ports to the IO from matrix editor menus. */ + boost::shared_ptr<ARDOUR::IO> io; + Gdk::Color colour; + bool has_colour; + boost::signals2::scoped_connection changed_connection; + + BundleRecord (boost::shared_ptr<ARDOUR::Bundle>, boost::shared_ptr<ARDOUR::IO>, Gdk::Color, bool has_colour); }; - typedef std::list<BundleRecord> BundleList; + typedef std::list<BundleRecord*> BundleList; BundleList const & bundles () const { return _bundles; @@ -95,6 +101,7 @@ class PortGroupList : public sigc::trackable { public: PortGroupList (); + ~PortGroupList(); typedef std::vector<boost::shared_ptr<PortGroup> > List; @@ -125,10 +132,10 @@ class PortGroupList : public sigc::trackable bool empty () const; /** The group list has changed in some way; a group has been added or removed, or the list cleared etc. */ - sigc::signal<void> Changed; + boost::signals2::signal<void()> Changed; /** A bundle in one of our groups has changed */ - sigc::signal<void, ARDOUR::Bundle::Change> BundleChanged; + boost::signals2::signal<void(ARDOUR::Bundle::Change)> BundleChanged; private: bool port_has_prefix (std::string const &, std::string const &) const; @@ -144,7 +151,7 @@ class PortGroupList : public sigc::trackable ARDOUR::DataType _type; mutable PortGroup::BundleList _bundles; List _groups; - std::vector<sigc::connection> _bundle_changed_connections; + PBD::ScopedConnectionList _bundle_changed_connections; bool _signals_suspended; bool _pending_change; ARDOUR::Bundle::Change _pending_bundle_change; |