summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-04-28 01:29:06 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-04-28 01:29:06 +0000
commit6dac4da98344ed8ce609a4e7d567ef2f9fbb9b31 (patch)
tree2c21aa7d3af2a0c56edab1ccfd5b6d42ce649f76 /libs/ardour/ardour
parentf0db054a07ecc9d49fede8fcc9175a85c635369f (diff)
more solo/mute architecture work. NOTE: changes to mute points are ignored right now
git-svn-id: svn://localhost/ardour2/branches/3.0@7009 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/delivery.h7
-rw-r--r--libs/ardour/ardour/mute_master.h13
-rw-r--r--libs/ardour/ardour/route.h3
3 files changed, 10 insertions, 13 deletions
diff --git a/libs/ardour/ardour/delivery.h b/libs/ardour/ardour/delivery.h
index 1efa5436ee..bb07b9ab25 100644
--- a/libs/ardour/ardour/delivery.h
+++ b/libs/ardour/ardour/delivery.h
@@ -75,10 +75,6 @@ public:
void no_outs_cuz_we_no_monitor(bool);
- void set_solo_level (int32_t sl) { _solo_level = sl; }
- void set_solo_isolated (bool yn) { _solo_isolated = yn; }
- void set_solo_ignored (bool yn) { _solo_ignored = yn; }
-
void cycle_start (nframes_t);
void increment_output_offset (nframes_t);
void transport_stopped (sframes_t frame);
@@ -113,9 +109,6 @@ public:
gain_t _current_gain;
nframes_t _output_offset;
bool _no_outs_cuz_we_no_monitor;
- uint32_t _solo_level;
- bool _solo_isolated;
- bool _solo_ignored;
boost::shared_ptr<MuteMaster> _mute_master;
bool no_panner_reset;
boost::shared_ptr<Panner> _panner;
diff --git a/libs/ardour/ardour/mute_master.h b/libs/ardour/ardour/mute_master.h
index 610ca20dff..4ddb7075da 100644
--- a/libs/ardour/ardour/mute_master.h
+++ b/libs/ardour/ardour/mute_master.h
@@ -48,6 +48,8 @@ class MuteMaster : public PBD::Stateful
bool muted_by_others() const { return _muted_by_others && (_mute_point != MutePoint (0)); }
bool muted() const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point != MutePoint (0)); }
bool muted_at (MutePoint mp) const { return (_self_muted || (_muted_by_others > 0)) && (_mute_point & mp); }
+ bool self_muted_at (MutePoint mp) const { return _self_muted && (_mute_point & mp); }
+ bool muted_by_others_at (MutePoint mp) const { return (_muted_by_others > 0) && (_mute_point & mp); }
bool muted_pre_fader() const { return muted_at (PreFader); }
bool muted_post_fader() const { return muted_at (PostFader); }
@@ -58,8 +60,8 @@ class MuteMaster : public PBD::Stateful
void set_self_muted (bool yn) { _self_muted = yn; }
void mod_muted_by_others (int delta);
+ void clear_muted_by_others ();
- void clear_mute ();
void mute_at (MutePoint);
void unmute_at (MutePoint);
@@ -67,15 +69,18 @@ class MuteMaster : public PBD::Stateful
void set_mute_points (MutePoint);
MutePoint mute_points() const { return _mute_point; }
+ void set_solo_level (int32_t);
+
PBD::Signal0<void> MutePointChanged;
XMLNode& get_state();
int set_state(const XMLNode&, int version);
private:
- MutePoint _mute_point;
- bool _self_muted;
- uint32_t _muted_by_others;
+ volatile MutePoint _mute_point;
+ volatile bool _self_muted;
+ volatile uint32_t _muted_by_others;
+ volatile int32_t _solo_level;
};
} // namespace ARDOUR
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index bdb041c7dd..5efb9c111b 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -476,8 +476,7 @@ class Route : public SessionObject, public AutomatableControls, public RouteGrou
void placement_range (Placement p, ProcessorList::iterator& start, ProcessorList::iterator& end);
void set_self_solo (bool yn);
- void set_delivery_solo ();
- void markup_solo_ignore ();
+ void set_mute_master_solo ();
};
} // namespace ARDOUR