diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/route.h | 16 | ||||
-rw-r--r-- | libs/ardour/ardour/route_group.h | 183 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 46 | ||||
-rw-r--r-- | libs/ardour/enums.cc | 10 | ||||
-rw-r--r-- | libs/ardour/route.cc | 101 | ||||
-rw-r--r-- | libs/ardour/route_group.cc | 7 | ||||
-rw-r--r-- | libs/ardour/session.cc | 49 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 103 | ||||
-rw-r--r-- | libs/ardour/track.cc | 4 |
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; } |