X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Froute_group.cc;h=23b745892e9037cb32df91184f954bdae4dda1fc;hb=9cbe231b920d92a2e44e08962a3ed6870b962f34;hp=188ec71f8710ddaa28a5be728916316ae4548c76;hpb=bfe90109590a732589902acd392e548441134319;p=ardour.git diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc index 188ec71f87..23b745892e 100644 --- a/libs/ardour/route_group.cc +++ b/libs/ardour/route_group.cc @@ -21,17 +21,14 @@ #include - #include "pbd/error.h" #include "pbd/enumwriter.h" #include "pbd/strsplit.h" #include "ardour/amp.h" -#include "ardour/debug.h" -#include "ardour/route_group.h" #include "ardour/audio_track.h" -#include "ardour/audio_diskstream.h" -#include "ardour/configuration.h" +#include "ardour/route.h" +#include "ardour/route_group.h" #include "ardour/session.h" #include "i18n.h" @@ -49,7 +46,6 @@ namespace ARDOUR { PropertyDescriptor solo; PropertyDescriptor recenable; PropertyDescriptor select; - PropertyDescriptor edit; PropertyDescriptor route_active; PropertyDescriptor color; PropertyDescriptor monitoring; @@ -75,8 +71,6 @@ RouteGroup::make_property_quarks () DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for recenable = %1\n", Properties::recenable.property_id)); Properties::select.property_id = g_quark_from_static_string (X_("select")); DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for select = %1\n", Properties::select.property_id)); - Properties::edit.property_id = g_quark_from_static_string (X_("edit")); - DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for edit = %1\n", Properties::edit.property_id)); Properties::route_active.property_id = g_quark_from_static_string (X_("route-active")); DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for route-active = %1\n", Properties::route_active.property_id)); Properties::color.property_id = g_quark_from_static_string (X_("color")); @@ -93,7 +87,6 @@ RouteGroup::make_property_quarks () , _solo (Properties::solo, false) \ , _recenable (Properties::recenable, false) \ , _select (Properties::select, false) \ - , _edit (Properties::edit, false) \ , _route_active (Properties::route_active, false) \ , _color (Properties::color, false) \ , _monitoring (Properties::monitoring, false) @@ -113,7 +106,6 @@ RouteGroup::RouteGroup (Session& s, const string &n) add_property (_solo); add_property (_recenable); add_property (_select); - add_property (_edit); add_property (_route_active); add_property (_color); add_property (_monitoring); @@ -125,7 +117,7 @@ RouteGroup::~RouteGroup () RouteList::iterator tmp = i; ++tmp; - (*i)->leave_route_group (); + (*i)->set_route_group (0); i = tmp; } @@ -141,11 +133,13 @@ RouteGroup::add (boost::shared_ptr r) return 0; } - r->leave_route_group (); - + if (r->route_group()) { + r->route_group()->remove (r); + } + routes->push_back (r); - r->join_route_group (this); + r->set_route_group (this); r->DropReferences.connect_same_thread (*this, boost::bind (&RouteGroup::remove_when_going_away, this, boost::weak_ptr (r))); _session.set_dirty (); @@ -169,7 +163,7 @@ RouteGroup::remove (boost::shared_ptr r) RouteList::iterator i; if ((i = find (routes->begin(), routes->end(), r)) != routes->end()) { - r->leave_route_group (); + r->set_route_group (0); routes->erase (i); _session.set_dirty (); RouteRemoved (this, boost::weak_ptr (r)); /* EMIT SIGNAL */ @@ -287,7 +281,6 @@ RouteGroup::set_state_2X (const XMLNode& node, int /*version*/) _mute = true; _solo = true; _recenable = true; - _edit = false; _route_active = true; _color = false; } else if (node.name() == "EditGroup") { @@ -295,7 +288,6 @@ RouteGroup::set_state_2X (const XMLNode& node, int /*version*/) _mute = false; _solo = false; _recenable = false; - _edit = true; _route_active = false; _color = false; } @@ -310,6 +302,7 @@ RouteGroup::set_gain (bool yn) return; } _gain = yn; + send_change (PropertyChange (Properties::gain)); } void @@ -319,6 +312,7 @@ RouteGroup::set_mute (bool yn) return; } _mute = yn; + send_change (PropertyChange (Properties::mute)); } void @@ -328,6 +322,7 @@ RouteGroup::set_solo (bool yn) return; } _solo = yn; + send_change (PropertyChange (Properties::solo)); } void @@ -337,6 +332,7 @@ RouteGroup::set_recenable (bool yn) return; } _recenable = yn; + send_change (PropertyChange (Properties::recenable)); } void @@ -346,15 +342,7 @@ RouteGroup::set_select (bool yn) return; } _select = yn; -} - -void -RouteGroup::set_edit (bool yn) -{ - if (is_edit() == yn) { - return; - } - _edit = yn; + send_change (PropertyChange (Properties::select)); } void @@ -364,6 +352,7 @@ RouteGroup::set_route_active (bool yn) return; } _route_active = yn; + send_change (PropertyChange (Properties::route_active)); } void @@ -374,6 +363,8 @@ RouteGroup::set_color (bool yn) } _color = yn; + send_change (PropertyChange (Properties::color)); + /* This is a bit of a hack, but this might change our route's effective color, so emit gui_changed for our routes. @@ -406,7 +397,6 @@ RouteGroup::set_active (bool yn, void* /*src*/) _active = yn; send_change (PropertyChange (Properties::active)); - _session.set_dirty (); } @@ -417,6 +407,7 @@ RouteGroup::set_relative (bool yn, void* /*src*/) return; } _relative = yn; + send_change (PropertyChange (Properties::relative)); _session.set_dirty (); } @@ -494,7 +485,7 @@ RouteGroup::make_subgroup (bool aux, Placement placement) for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { (*i)->output()->disconnect (this); - (*i)->output()->connect_ports_to_bundle (bundle, this); + (*i)->output()->connect_ports_to_bundle (bundle, false, this); } } } @@ -515,6 +506,12 @@ RouteGroup::destroy_subgroup () subgroup_bus.reset (); } +bool +RouteGroup::has_subgroup() const +{ + return subgroup_bus != 0; +} + bool RouteGroup::enabled_property (PBD::PropertyID prop) {