X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fport_group.h;h=a9dfc1a4addad8480800999458f6aecd39d4fd59;hb=4df3666738607039445ebc9fa083bf5c23ac5539;hp=ebab997699d2a8b07b4bd684a2c4d70db9017175;hpb=f6fdd8dcbf41f864e9f0cc32dabe81fe3533ddfe;p=ardour.git diff --git a/gtk2_ardour/port_group.h b/gtk2_ardour/port_group.h index ebab997699..a9dfc1a4ad 100644 --- a/gtk2_ardour/port_group.h +++ b/gtk2_ardour/port_group.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include "pbd/signals.h" #include #include @@ -40,7 +40,6 @@ namespace ARDOUR { } class PortMatrix; -class RouteBundle; class PublicEditor; /** A list of bundles grouped by some aspect of their type e.g. busses, tracks, system. @@ -58,27 +57,28 @@ public: void remove_bundle (boost::shared_ptr); boost::shared_ptr only_bundle (); void clear (); - uint32_t total_channels () const; + ARDOUR::ChanCount total_channels () const; boost::shared_ptr io_from_bundle (boost::shared_ptr) const; + void remove_duplicates (); std::string name; ///< name for the group bool has_port (std::string const &) const; /** The bundle list has changed in some way; a bundle has been added or removed, or the list cleared etc. */ - sigc::signal Changed; + PBD::Signal0 Changed; /** An individual bundle on our list has changed in some way */ - boost::signals2::signal BundleChanged; + PBD::Signal1 BundleChanged; struct BundleRecord { boost::shared_ptr 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 io; + boost::weak_ptr io; Gdk::Color colour; bool has_colour; - boost::signals2::scoped_connection changed_connection; + PBD::ScopedConnection changed_connection; BundleRecord (boost::shared_ptr, boost::shared_ptr, Gdk::Color, bool has_colour); }; @@ -107,12 +107,11 @@ class PortGroupList : public sigc::trackable void add_group (boost::shared_ptr); void add_group_if_not_empty (boost::shared_ptr); - void set_type (ARDOUR::DataType); - void gather (ARDOUR::Session *, bool, bool); + void gather (ARDOUR::Session *, ARDOUR::DataType, bool, bool, bool); PortGroup::BundleList const & bundles () const; void clear (); void remove_bundle (boost::shared_ptr); - uint32_t total_channels () const; + ARDOUR::ChanCount total_channels () const; uint32_t size () const { return _groups.size(); } @@ -132,10 +131,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. */ - boost::signals2::signal Changed; + PBD::Signal0 Changed; /** A bundle in one of our groups has changed */ - boost::signals2::signal BundleChanged; + PBD::Signal1 BundleChanged; private: bool port_has_prefix (std::string const &, std::string const &) const; @@ -143,15 +142,15 @@ class PortGroupList : public sigc::trackable std::string common_prefix_before (std::vector const &, std::string const &) const; void emit_changed (); void emit_bundle_changed (ARDOUR::Bundle::Change); - boost::shared_ptr make_bundle_from_ports (std::vector const &, bool) const; + boost::shared_ptr make_bundle_from_ports (std::vector const &, ARDOUR::DataType, bool) const; void maybe_add_processor_to_list ( - boost::weak_ptr, std::list > *, bool, std::set > & + boost::weak_ptr, std::list > *, bool, std::set > & ); - ARDOUR::DataType _type; mutable PortGroup::BundleList _bundles; List _groups; PBD::ScopedConnectionList _bundle_changed_connections; + PBD::ScopedConnectionList _changed_connections; bool _signals_suspended; bool _pending_change; ARDOUR::Bundle::Change _pending_bundle_change;