summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/route.h16
-rw-r--r--libs/ardour/ardour/route_group.h183
-rw-r--r--libs/ardour/ardour/session.h46
-rw-r--r--libs/ardour/enums.cc10
-rw-r--r--libs/ardour/route.cc101
-rw-r--r--libs/ardour/route_group.cc7
-rw-r--r--libs/ardour/session.cc49
-rw-r--r--libs/ardour/session_state.cc103
-rw-r--r--libs/ardour/track.cc4
9 files changed, 201 insertions, 318 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index f34c4d3d20..dcdd306c5b 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -139,13 +139,9 @@ class Route : public SessionObject, public AutomatableControls
void set_denormal_protection (bool yn);
bool denormal_protection() const;
- void set_edit_group (RouteGroup *, void *);
- void drop_edit_group (void *);
- RouteGroup *edit_group () const { return _edit_group; }
-
- void set_mix_group (RouteGroup *, void *);
- void drop_mix_group (void *);
- RouteGroup *mix_group () const { return _mix_group; }
+ void set_route_group (RouteGroup *, void *);
+ void drop_route_group (void *);
+ RouteGroup *route_group () const { return _route_group; }
virtual void set_meter_point (MeterPoint, void *src);
MeterPoint meter_point() const { return _meter_point; }
@@ -243,8 +239,7 @@ class Route : public SessionObject, public AutomatableControls
sigc::signal<void,void*> main_outs_changed;
sigc::signal<void> processors_changed;
sigc::signal<void,void*> record_enable_changed;
- sigc::signal<void,void*> edit_group_changed;
- sigc::signal<void,void*> mix_group_changed;
+ sigc::signal<void,void*> route_group_changed;
sigc::signal<void,void*> meter_change;
sigc::signal<void> signal_latency_changed;
sigc::signal<void> initial_delay_changed;
@@ -364,8 +359,7 @@ class Route : public SessionObject, public AutomatableControls
boost::shared_ptr<SoloControllable> _solo_control;
boost::shared_ptr<MuteMaster> _mute_master;
- RouteGroup* _edit_group;
- RouteGroup* _mix_group;
+ RouteGroup* _route_group;
std::string _comment;
bool _have_internal_generator;
bool _solo_safe;
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index fa69446528..f4ed001453 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -36,86 +36,111 @@ class AudioTrack;
class Session;
class RouteGroup : public PBD::Stateful, public sigc::trackable {
- public:
- enum Flag {
- Relative = 0x1,
- Active = 0x2,
- Hidden = 0x4
- };
-
- RouteGroup (Session& s, const std::string &n, Flag f = Flag(0));
-
- const std::string& name() { return _name; }
- void set_name (std::string str);
-
- bool is_active () const { return _flags & Active; }
- bool is_relative () const { return _flags & Relative; }
- bool is_hidden () const { return _flags & Hidden; }
- bool empty() const {return routes.empty();}
-
- gain_t get_max_factor(gain_t factor);
- gain_t get_min_factor(gain_t factor);
-
- int size() { return routes.size();}
- ARDOUR::Route * first () const { return *routes.begin();}
-
- void set_active (bool yn, void *src);
- void set_relative (bool yn, void *src);
- void set_hidden (bool yn, void *src);
-
- int add (Route *);
-
- int remove (Route *);
-
- void apply (void (Route::*func)(void *), void *src) {
- for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
- ((*i)->*func)(src);
- }
- }
-
- template<class T> void apply (void (Route::*func)(T, void *), T val, void *src) {
- for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
- ((*i)->*func)(val, src);
- }
- }
-
- template<class T> void foreach_route (T *obj, void (T::*func)(Route&)) {
- for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
- (obj->*func)(**i);
- }
- }
-
- /* to use these, #include "ardour/route_group_specialized.h" */
-
- template<class T> void apply (void (Track::*func)(T, void *), T val, void *src);
-
- /* fills at_set with all members of the group that are AudioTracks */
-
- void audio_track_group (std::set<AudioTrack*>& at_set);
-
- void clear () {
- routes.clear ();
- changed();
- }
-
- const std::list<Route*>& route_list() { return routes; }
-
- sigc::signal<void> changed;
- sigc::signal<void,void*> FlagsChanged;
-
- XMLNode& get_state (void);
-
- int set_state (const XMLNode&);
-
- private:
- Session& _session;
- std::list<Route *> routes;
- std::string _name;
- Flag _flags;
-
- void remove_when_going_away (Route*);
+public:
+ enum Flag {
+ Relative = 0x1,
+ Active = 0x2,
+ Hidden = 0x4
+ };
+
+ enum Property {
+ Gain = 0x1,
+ Mute = 0x2,
+ Solo = 0x4,
+ RecEnable = 0x8,
+ Select = 0x10,
+ Edit = 0x20
+ };
+
+ RouteGroup (Session& s, const std::string &n, Flag f = Flag(0));
+
+ const std::string& name() { return _name; }
+ void set_name (std::string str);
+
+ bool is_active () const { return _flags & Active; }
+ bool is_relative () const { return _flags & Relative; }
+ bool is_hidden () const { return _flags & Hidden; }
+ bool empty() const {return routes.empty();}
+
+ gain_t get_max_factor(gain_t factor);
+ gain_t get_min_factor(gain_t factor);
+
+ int size() { return routes.size();}
+ ARDOUR::Route * first () const { return *routes.begin();}
+
+ void set_active (bool yn, void *src);
+ void set_relative (bool yn, void *src);
+ void set_hidden (bool yn, void *src);
+
+ bool property (Property p) const {
+ return ((_properties & p) != 0);
+ }
+
+ bool active_property (Property p) const {
+ return is_active() && property (p);
+ }
+
+ void set_property (Property p, bool v) {
+ _properties = (Property) (_properties & ~p);
+ if (v) {
+ _properties = (Property) (_properties | p);
+ }
+ }
+
+ int add (Route *);
+
+ int remove (Route *);
+
+ void apply (void (Route::*func)(void *), void *src) {
+ for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
+ ((*i)->*func)(src);
+ }
+ }
+
+ template<class T> void apply (void (Route::*func)(T, void *), T val, void *src) {
+ for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
+ ((*i)->*func)(val, src);
+ }
+ }
+
+ template<class T> void foreach_route (T *obj, void (T::*func)(Route&)) {
+ for (std::list<Route *>::iterator i = routes.begin(); i != routes.end(); i++) {
+ (obj->*func)(**i);
+ }
+ }
+
+ /* to use these, #include "ardour/route_group_specialized.h" */
+
+ template<class T> void apply (void (Track::*func)(T, void *), T val, void *src);
+
+ /* fills at_set with all members of the group that are AudioTracks */
+
+ void audio_track_group (std::set<AudioTrack*>& at_set);
+
+ void clear () {
+ routes.clear ();
+ changed();
+ }
+
+ const std::list<Route*>& route_list() { return routes; }
+
+ sigc::signal<void> changed;
+ sigc::signal<void,void*> FlagsChanged;
+
+ XMLNode& get_state ();
+
+ int set_state (const XMLNode&);
+
+private:
+ Session& _session;
+ std::list<Route *> routes;
+ std::string _name;
+ Flag _flags;
+ Property _properties;
+
+ void remove_when_going_away (Route*);
};
-
+
} /* namespace */
#endif /* __ardour_route_group_h__ */
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 668de76b20..18bc22ce87 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -377,8 +377,7 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
sigc::signal<void> Located;
sigc::signal<void,RouteList&> RouteAdded;
- sigc::signal<void> RouteEditGroupChanged;
- sigc::signal<void> RouteMixGroupChanged;
+ sigc::signal<void> RouteGroupChanged;
void request_roll_at_and_return (nframes_t start, nframes_t return_to);
void request_bounded_roll (nframes_t start, nframes_t end);
@@ -487,28 +486,16 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
StateOfTheState state_of_the_state() const { return _state_of_the_state; }
- void add_edit_group (RouteGroup *);
- void add_mix_group (RouteGroup *);
+ void add_route_group (RouteGroup *);
+ void remove_route_group (RouteGroup&);
- void remove_edit_group (RouteGroup&);
- void remove_mix_group (RouteGroup&);
+ RouteGroup *route_group_by_name (std::string);
- RouteGroup *mix_group_by_name (std::string);
- RouteGroup *edit_group_by_name (std::string);
+ sigc::signal<void,RouteGroup*> route_group_added;
+ sigc::signal<void> route_group_removed;
- sigc::signal<void,RouteGroup*> edit_group_added;
- sigc::signal<void,RouteGroup*> mix_group_added;
- sigc::signal<void> edit_group_removed;
- sigc::signal<void> mix_group_removed;
-
- void foreach_edit_group (sigc::slot<void,RouteGroup*> sl) {
- for (std::list<RouteGroup *>::iterator i = edit_groups.begin(); i != edit_groups.end(); i++) {
- sl (*i);
- }
- }
-
- void foreach_mix_group (sigc::slot<void,RouteGroup*> sl) {
- for (std::list<RouteGroup *>::iterator i = mix_groups.begin(); i != mix_groups.end(); i++) {
+ void foreach_route_group (sigc::slot<void,RouteGroup*> sl) {
+ for (std::list<RouteGroup *>::iterator i = _route_groups.begin(); i != _route_groups.end(); i++) {
sl (*i);
}
}
@@ -516,13 +503,13 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
/* fundamental operations. duh. */
std::list<boost::shared_ptr<AudioTrack> > new_audio_track (
- int input_channels, int output_channels, TrackMode mode = Normal, RouteGroup* edit_group = 0, uint32_t how_many = 1
+ int input_channels, int output_channels, TrackMode mode = Normal, RouteGroup* route_group = 0, uint32_t how_many = 1
);
- RouteList new_audio_route (int input_channels, int output_channels, RouteGroup* edit_group, uint32_t how_many);
+ RouteList new_audio_route (int input_channels, int output_channels, RouteGroup* route_group, uint32_t how_many);
std::list<boost::shared_ptr<MidiTrack> > new_midi_track (
- TrackMode mode = Normal, RouteGroup* edit_group = 0, uint32_t how_many = 1
+ TrackMode mode = Normal, RouteGroup* route_group = 0, uint32_t how_many = 1
);
void remove_route (boost::shared_ptr<Route>);
@@ -1436,13 +1423,9 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
/* edit/mix groups */
- int load_route_groups (const XMLNode&, bool is_edit);
- int load_edit_groups (const XMLNode&);
- int load_mix_groups (const XMLNode&);
-
+ int load_route_groups (const XMLNode&);
- std::list<RouteGroup *> edit_groups;
- std::list<RouteGroup *> mix_groups;
+ std::list<RouteGroup *> _route_groups;
/* disk-streams */
@@ -1489,8 +1472,7 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
int load_regions (const XMLNode& node);
- void route_edit_group_changed ();
- void route_mix_group_changed ();
+ void route_group_changed ();
/* SOURCES */
diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc
index 7410d8ef8c..32a1420bc4 100644
--- a/libs/ardour/enums.cc
+++ b/libs/ardour/enums.cc
@@ -89,6 +89,7 @@ setup_enum_writer ()
Diskstream::Flag _Diskstream_Flag;
Location::Flags _Location_Flags;
RouteGroup::Flag _RouteGroup_Flag;
+ RouteGroup::Property _RouteGroup_Property;
Region::Flag _Region_Flag;
Region::PositionLockStyle _Region_PositionLockStyle;
Track::FreezeState _Track_FreezeState;
@@ -369,12 +370,19 @@ setup_enum_writer ()
REGISTER_CLASS_ENUM (Location, IsStart);
REGISTER_BITS (_Location_Flags);
-
REGISTER_CLASS_ENUM (RouteGroup, Relative);
REGISTER_CLASS_ENUM (RouteGroup, Active);
REGISTER_CLASS_ENUM (RouteGroup, Hidden);
REGISTER_BITS (_RouteGroup_Flag);
+ REGISTER_CLASS_ENUM (RouteGroup, Gain);
+ REGISTER_CLASS_ENUM (RouteGroup, Mute);
+ REGISTER_CLASS_ENUM (RouteGroup, Solo);
+ REGISTER_CLASS_ENUM (RouteGroup, RecEnable);
+ REGISTER_CLASS_ENUM (RouteGroup, Select);
+ REGISTER_CLASS_ENUM (RouteGroup, Edit);
+ REGISTER_BITS (_RouteGroup_Property);
+
REGISTER_CLASS_ENUM (Panner, SameDirection);
REGISTER_CLASS_ENUM (Panner, OppositeDirection);
REGISTER (_Panner_LinkDirection);
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 19fd9bfe0c..2dc9d13b86 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -132,8 +132,7 @@ Route::init ()
_remote_control_id = 0;
_in_configure_processors = false;
- _edit_group = 0;
- _mix_group = 0;
+ _route_group = 0;
_phase_invert = 0;
_denormal_protection = false;
@@ -260,9 +259,9 @@ Route::inc_gain (gain_t fraction, void *src)
void
Route::set_gain (gain_t val, void *src)
{
- if (src != 0 && _mix_group && src != _mix_group && _mix_group->is_active()) {
+ if (src != 0 && _route_group && src != _route_group && _route_group->active_property (RouteGroup::Gain)) {
- if (_mix_group->is_relative()) {
+ if (_route_group->is_relative()) {
gain_t usable_gain = _amp->gain();
if (usable_gain < 0.000001f) {
@@ -282,24 +281,24 @@ Route::set_gain (gain_t val, void *src)
gain_t factor = delta / usable_gain;
if (factor > 0.0f) {
- factor = _mix_group->get_max_factor(factor);
+ factor = _route_group->get_max_factor(factor);
if (factor == 0.0f) {
_amp->gain_control()->Changed(); /* EMIT SIGNAL */
return;
}
} else {
- factor = _mix_group->get_min_factor(factor);
+ factor = _route_group->get_min_factor(factor);
if (factor == 0.0f) {
_amp->gain_control()->Changed(); /* EMIT SIGNAL */
return;
}
}
- _mix_group->apply (&Route::inc_gain, factor, _mix_group);
+ _route_group->apply (&Route::inc_gain, factor, _route_group);
} else {
- _mix_group->apply (&Route::set_gain, val, _mix_group);
+ _route_group->apply (&Route::set_gain, val, _route_group);
}
return;
@@ -482,8 +481,8 @@ Route::set_solo (bool yn, void *src)
return;
}
- if (_mix_group && src != _mix_group && _mix_group->is_active()) {
- _mix_group->apply (&Route::set_solo, yn, _mix_group);
+ if (_route_group && src != _route_group && _route_group->active_property (RouteGroup::Solo)) {
+ _route_group->apply (&Route::set_solo, yn, _route_group);
return;
}
@@ -539,8 +538,8 @@ Route::mod_solo_level (int32_t delta)
void
Route::set_solo_isolated (bool yn, void *src)
{
- if (_mix_group && src != _mix_group && _mix_group->is_active()) {
- _mix_group->apply (&Route::set_solo_isolated, yn, _mix_group);
+ if (_route_group && src != _route_group && _route_group->active_property (RouteGroup::Solo)) {
+ _route_group->apply (&Route::set_solo_isolated, yn, _route_group);
return;
}
@@ -583,8 +582,8 @@ Route::solo_isolated () const
void
Route::set_mute (bool yn, void *src)
{
- if (_mix_group && src != _mix_group && _mix_group->is_active()) {
- _mix_group->apply (&Route::set_mute, yn, _mix_group);
+ if (_route_group && src != _route_group && _route_group->active_property (RouteGroup::Mute)) {
+ _route_group->apply (&Route::set_mute, yn, _route_group);
return;
}
@@ -1480,11 +1479,8 @@ Route::state(bool full_state)
node->add_property("denormal-protection", _denormal_protection?"yes":"no");
node->add_property("meter-point", enum_2_string (_meter_point));
- if (_edit_group) {
- node->add_property("edit-group", _edit_group->name());
- }
- if (_mix_group) {
- node->add_property("mix-group", _mix_group->name());
+ if (_route_group) {
+ node->add_property("route-group", _route_group->name());
}
string order_string;
@@ -1630,12 +1626,12 @@ Route::_set_state (const XMLNode& node, bool call_base)
_meter_point = MeterPoint (string_2_enum (prop->value (), _meter_point));
}
- if ((prop = node.property (X_("edit-group"))) != 0) {
- RouteGroup* edit_group = _session.edit_group_by_name(prop->value());
- if(edit_group == 0) {
- error << string_compose(_("Route %1: unknown edit group \"%2 in saved state (ignored)"), _name, prop->value()) << endmsg;
+ if ((prop = node.property (X_("route-group"))) != 0) {
+ RouteGroup* route_group = _session.route_group_by_name(prop->value());
+ if (route_group == 0) {
+ error << string_compose(_("Route %1: unknown route group \"%2 in saved state (ignored)"), _name, prop->value()) << endmsg;
} else {
- set_edit_group(edit_group, this);
+ set_route_group (route_group, this);
}
}
@@ -1703,15 +1699,6 @@ Route::_set_state (const XMLNode& node, bool call_base)
}
}
- if ((prop = node.property (X_("mix-group"))) != 0) {
- RouteGroup* mix_group = _session.mix_group_by_name(prop->value());
- if (mix_group == 0) {
- error << string_compose(_("Route %1: unknown mix group \"%2 in saved state (ignored)"), _name, prop->value()) << endmsg;
- } else {
- set_mix_group(mix_group, this);
- }
- }
-
return 0;
}
@@ -1975,58 +1962,30 @@ Route::drop_listen (boost::shared_ptr<Route> route)
}
void
-Route::set_edit_group (RouteGroup *eg, void *src)
-
-{
- if (eg == _edit_group) {
- return;
- }
-
- if (_edit_group) {
- _edit_group->remove (this);
- }
-
- if ((_edit_group = eg) != 0) {
- _edit_group->add (this);
- }
-
- _session.set_dirty ();
- edit_group_changed (src); /* EMIT SIGNAL */
-}
-
-void
-Route::drop_edit_group (void *src)
-{
- _edit_group = 0;
- _session.set_dirty ();
- edit_group_changed (src); /* EMIT SIGNAL */
-}
-
-void
-Route::set_mix_group (RouteGroup *mg, void *src)
+Route::set_route_group (RouteGroup *rg, void *src)
{
- if (mg == _mix_group) {
+ if (rg == _route_group) {
return;
}
- if (_mix_group) {
- _mix_group->remove (this);
+ if (_route_group) {
+ _route_group->remove (this);
}
- if ((_mix_group = mg) != 0) {
- _mix_group->add (this);
+ if ((_route_group = rg) != 0) {
+ _route_group->add (this);
}
_session.set_dirty ();
- mix_group_changed (src); /* EMIT SIGNAL */
+ route_group_changed (src); /* EMIT SIGNAL */
}
void
-Route::drop_mix_group (void *src)
+Route::drop_route_group (void *src)
{
- _mix_group = 0;
+ _route_group = 0;
_session.set_dirty ();
- mix_group_changed (src); /* EMIT SIGNAL */
+ route_group_changed (src); /* EMIT SIGNAL */
}
void
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc
index 438d0395d0..3da55adeb7 100644
--- a/libs/ardour/route_group.cc
+++ b/libs/ardour/route_group.cc
@@ -39,7 +39,7 @@ using namespace sigc;
using namespace std;
RouteGroup::RouteGroup (Session& s, const string &n, Flag f)
- : _session (s), _name (n), _flags (f)
+ : _session (s), _name (n), _flags (f), _properties (Property (0))
{
}
@@ -130,6 +130,7 @@ RouteGroup::get_state (void)
XMLNode *node = new XMLNode ("RouteGroup");
node->add_property ("name", _name);
node->add_property ("flags", enum_2_string (_flags));
+ node->add_property ("properties", enum_2_string (_properties));
return *node;
}
@@ -146,6 +147,10 @@ RouteGroup::set_state (const XMLNode& node)
_flags = Flag (string_2_enum (prop->value(), _flags));
}
+ if ((prop = node.property ("properties")) != 0) {
+ _properties = Property (string_2_enum (prop->value(), _properties));
+ }
+
return 0;
}
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index fb3cb25705..410933ed1a 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -469,32 +469,12 @@ Session::destroy ()
}
sources.clear ();
-#ifdef TRACK_DESTRUCTION
- cerr << "delete mix groups\n";
-#endif /* TRACK_DESTRUCTION */
- for (list<RouteGroup *>::iterator i = mix_groups.begin(); i != mix_groups.end(); ) {
- list<RouteGroup*>::iterator tmp;
-
- tmp = i;
- ++tmp;
-
- delete *i;
-
- i = tmp;
- }
#ifdef TRACK_DESTRUCTION
- cerr << "delete edit groups\n";
+ cerr << "delete route groups\n";
#endif /* TRACK_DESTRUCTION */
- for (list<RouteGroup *>::iterator i = edit_groups.begin(); i != edit_groups.end(); ) {
- list<RouteGroup*>::iterator tmp;
-
- tmp = i;
- ++tmp;
-
+ for (list<RouteGroup *>::iterator i = _route_groups.begin(); i != _route_groups.end(); ) {
delete *i;
-
- i = tmp;
}
delete [] butler_mixdown_buffer;
@@ -1480,7 +1460,7 @@ Session::resort_routes_using (shared_ptr<RouteList> r)
}
list<boost::shared_ptr<MidiTrack> >
-Session::new_midi_track (TrackMode mode, RouteGroup* edit_group, uint32_t how_many)
+Session::new_midi_track (TrackMode mode, RouteGroup* route_group, uint32_t how_many)
{
char track_name[32];
uint32_t track_id = 0;
@@ -1589,7 +1569,7 @@ Session::new_midi_track (TrackMode mode, RouteGroup* edit_group, uint32_t how_ma
*/
track->midi_diskstream()->non_realtime_input_change();
- track->set_edit_group (edit_group, 0);
+ track->set_route_group (route_group, 0);
track->DiskstreamChanged.connect (mem_fun (this, &Session::resort_routes));
//track->set_remote_control_id (control_id);
@@ -1646,7 +1626,7 @@ Session::new_midi_track (TrackMode mode, RouteGroup* edit_group, uint32_t how_ma
}
list<boost::shared_ptr<AudioTrack> >
-Session::new_audio_track (int input_channels, int output_channels, TrackMode mode, RouteGroup* edit_group, uint32_t how_many)
+Session::new_audio_track (int input_channels, int output_channels, TrackMode mode, RouteGroup* route_group, uint32_t how_many)
{
char track_name[32];
uint32_t track_id = 0;
@@ -1758,7 +1738,7 @@ Session::new_audio_track (int input_channels, int output_channels, TrackMode mod
channels_used += track->n_inputs ().n_audio();
- track->set_edit_group (edit_group, 0);
+ track->set_route_group (route_group, 0);
track->audio_diskstream()->non_realtime_input_change();
@@ -1838,7 +1818,7 @@ Session::set_remote_control_ids ()
RouteList
-Session::new_audio_route (int input_channels, int output_channels, RouteGroup* edit_group, uint32_t how_many)
+Session::new_audio_route (int input_channels, int output_channels, RouteGroup* route_group, uint32_t how_many)
{
char bus_name[32];
uint32_t bus_id = 1;
@@ -1937,7 +1917,7 @@ Session::new_audio_route (int input_channels, int output_channels, RouteGroup* e
channels_used += bus->n_inputs ().n_audio();
- bus->set_edit_group (edit_group, 0);
+ bus->set_route_group (route_group, 0);
bus->set_remote_control_id (control_id);
++control_id;
@@ -2082,8 +2062,7 @@ Session::add_routes (RouteList& new_routes, bool save)
(*x)->mute_changed.connect (mem_fun (*this, &Session::route_mute_changed));
(*x)->output()->changed.connect (mem_fun (*this, &Session::set_worst_io_latencies_x));
(*x)->processors_changed.connect (bind (mem_fun (*this, &Session::update_latency_compensation), false, false));
- (*x)->edit_group_changed.connect (hide (mem_fun (*this, &Session::route_edit_group_changed)));
- (*x)->mix_group_changed.connect (hide (mem_fun (*this, &Session::route_mix_group_changed)));
+ (*x)->route_group_changed.connect (hide (mem_fun (*this, &Session::route_group_changed)));
if ((*x)->is_master()) {
_master_out = (*x);
@@ -4251,13 +4230,7 @@ Session::solo_model_changed ()
}
void
-Session::route_edit_group_changed ()
-{
- RouteEditGroupChanged (); /* EMIT SIGNAL */
-}
-
-void
-Session::route_mix_group_changed ()
+Session::route_group_changed ()
{
- RouteMixGroupChanged (); /* EMIT SIGNAL */
+ RouteGroupChanged (); /* EMIT SIGNAL */
}
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index bb2434b6c6..9b142a2ef9 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -1035,13 +1035,8 @@ Session::state(bool full_state)
}
- child = node->add_child ("EditGroups");
- for (list<RouteGroup *>::iterator i = edit_groups.begin(); i != edit_groups.end(); ++i) {
- child->add_child_nocopy ((*i)->get_state());
- }
-
- child = node->add_child ("MixGroups");
- for (list<RouteGroup *>::iterator i = mix_groups.begin(); i != mix_groups.end(); ++i) {
+ child = node->add_child ("RouteGroups");
+ for (list<RouteGroup *>::iterator i = _route_groups.begin(); i != _route_groups.end(); ++i) {
child->add_child_nocopy ((*i)->get_state());
}
@@ -1166,7 +1161,7 @@ Session::set_state (const XMLNode& node)
AudioDiskstreams
Connections
Routes
- EditGroups
+ RouteGroups
MixGroups
Click
ControlProtocols
@@ -1276,17 +1271,10 @@ Session::set_state (const XMLNode& node)
_bundle_xml_node = new XMLNode (*child);
}
- if ((child = find_named_node (node, "EditGroups")) == 0) {
- error << _("Session: XML state has no edit groups section") << endmsg;
+ if ((child = find_named_node (node, "RouteGroups")) == 0) {
+ error << _("Session: XML state has no route groups section") << endmsg;
goto out;
- } else if (load_edit_groups (*child)) {
- goto out;
- }
-
- if ((child = find_named_node (node, "MixGroups")) == 0) {
- error << _("Session: XML state has no mix groups section") << endmsg;
- goto out;
- } else if (load_mix_groups (*child)) {
+ } else if (load_route_groups (*child)) {
goto out;
}
@@ -2042,35 +2030,18 @@ Session::load_bundles (XMLNode const & node)
}
int
-Session::load_edit_groups (const XMLNode& node)
-{
- return load_route_groups (node, true);
-}
-
-int
-Session::load_mix_groups (const XMLNode& node)
-{
- return load_route_groups (node, false);
-}
-
-int
-Session::load_route_groups (const XMLNode& node, bool edit)
+Session::load_route_groups (const XMLNode& node)
{
XMLNodeList nlist = node.children();
XMLNodeConstIterator niter;
- set_dirty();
+ set_dirty ();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
if ((*niter)->name() == "RouteGroup") {
RouteGroup* rg = new RouteGroup (*this, "");
- if (edit) {
- add_edit_group (rg);
- rg->set_state (**niter);
- } else {
- add_mix_group (rg);
- rg->set_state (**niter);
- }
+ add_route_group (rg);
+ rg->set_state (**niter);
}
}
@@ -2134,68 +2105,34 @@ Session::possible_states () const
}
void
-Session::add_edit_group (RouteGroup* g)
+Session::add_route_group (RouteGroup* g)
{
- edit_groups.push_back (g);
- edit_group_added (g); /* EMIT SIGNAL */
+ _route_groups.push_back (g);
+ route_group_added (g); /* EMIT SIGNAL */
set_dirty ();
}
void
-Session::add_mix_group (RouteGroup* g)
-{
- mix_groups.push_back (g);
- mix_group_added (g); /* EMIT SIGNAL */
- set_dirty ();
-}
-
-void
-Session::remove_edit_group (RouteGroup& rg)
-{
- list<RouteGroup*>::iterator i;
-
- if ((i = find (edit_groups.begin(), edit_groups.end(), &rg)) != edit_groups.end()) {
- (*i)->apply (&Route::drop_edit_group, this);
- edit_groups.erase (i);
- edit_group_removed (); /* EMIT SIGNAL */
- }
-
- delete &rg;
-}
-
-void
-Session::remove_mix_group (RouteGroup& rg)
+Session::remove_route_group (RouteGroup& rg)
{
list<RouteGroup*>::iterator i;
- if ((i = find (mix_groups.begin(), mix_groups.end(), &rg)) != mix_groups.end()) {
- (*i)->apply (&Route::drop_mix_group, this);
- mix_groups.erase (i);
- mix_group_removed (); /* EMIT SIGNAL */
+ if ((i = find (_route_groups.begin(), _route_groups.end(), &rg)) != _route_groups.end()) {
+ (*i)->apply (&Route::drop_route_group, this);
+ _route_groups.erase (i);
+ route_group_removed (); /* EMIT SIGNAL */
}
delete &rg;
}
-RouteGroup *
-Session::mix_group_by_name (string name)
-{
- list<RouteGroup *>::iterator i;
-
- for (i = mix_groups.begin(); i != mix_groups.end(); ++i) {
- if ((*i)->name() == name) {
- return* i;
- }
- }
- return 0;
-}
RouteGroup *
-Session::edit_group_by_name (string name)
+Session::route_group_by_name (string name)
{
list<RouteGroup *>::iterator i;
- for (i = edit_groups.begin(); i != edit_groups.end(); ++i) {
+ for (i = _route_groups.begin(); i != _route_groups.end(); ++i) {
if ((*i)->name() == name) {
return* i;
}
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 96d44de555..5ff79098d8 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -173,8 +173,8 @@ Track::set_record_enable (bool yn, void *src)
return;
}
- if (_mix_group && src != _mix_group && _mix_group->is_active()) {
- _mix_group->apply (&Track::set_record_enable, yn, _mix_group);
+ if (_route_group && src != _route_group && _route_group->active_property (RouteGroup::RecEnable)) {
+ _route_group->apply (&Track::set_record_enable, yn, _route_group);
return;
}