summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2018-02-11 09:39:36 -0600
committerBen Loftis <ben@harrisonconsoles.com>2018-02-11 09:39:36 -0600
commite6da4c4846cd3097e2393f0e43016b870e7cf592 (patch)
treef54b4f56ab2b39a4c91bb5e6e0141031b8731566 /libs/ardour/ardour
parent11e50fe0c5f441f8d017529a62ac4c8eeb6403c2 (diff)
SoloSelection: libardour part.
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/playlist.h7
-rw-r--r--libs/ardour/ardour/region.h4
-rw-r--r--libs/ardour/ardour/route.h2
-rw-r--r--libs/ardour/ardour/session.h5
4 files changed, 18 insertions, 0 deletions
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h
index 91ddecb711..a8fabd7e65 100644
--- a/libs/ardour/ardour/playlist.h
+++ b/libs/ardour/ardour/playlist.h
@@ -115,6 +115,11 @@ public:
bool frozen() const { return _frozen; }
void set_frozen (bool yn);
+ void AddToSoloSelectedList(const Region*);
+ void RemoveFromSoloSelectedList(const Region*);
+ bool SoloSelectedListIncludes(const Region*);
+ bool SoloSelectedActive();
+
bool hidden() const { return _hidden; }
bool empty() const;
@@ -294,6 +299,8 @@ public:
bool pending_contents_change;
bool pending_layering;
+ std::set<const Region*> _soloSelectedRegions;
+
/** Movements of time ranges caused by region moves; note that
* region trims are not included in this list; it is used to
* do automation-follows-regions.
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index a147a6163a..b536aa16a9 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -113,6 +113,8 @@ public:
samplecnt_t length () const { return _length; }
layer_t layer () const { return _layer; }
+ void set_selected_for_solo(bool yn);
+
samplecnt_t source_length(uint32_t n) const;
uint32_t max_source_level () const;
@@ -413,6 +415,8 @@ protected:
samplepos_t _transient_analysis_start;
samplepos_t _transient_analysis_end;
+ bool _soloSelected;
+
private:
void mid_thaw (const PBD::PropertyChange&);
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 078bf30cb3..138f8a9d71 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -354,6 +354,8 @@ public:
PBD::Signal0<void> denormal_protection_changed;
PBD::Signal0<void> comment_changed;
+ bool is_track();
+
/** track numbers - assigned by session
* nubers > 0 indicate tracks (audio+midi)
* nubers < 0 indicate busses
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index db2d8fdcbe..4cf725ae2f 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -861,6 +861,9 @@ public:
bool solo_isolated() const { return _solo_isolated_cnt > 0; }
void cancel_all_solo ();
+ bool solo_selection_active();
+ void solo_selection( StripableList&, bool );
+
static const SessionEvent::RTeventCallback rt_cleanup;
void clear_all_solo_state (boost::shared_ptr<RouteList>);
@@ -2114,6 +2117,8 @@ private:
void rewire_midi_selection_ports ();
boost::weak_ptr<MidiTrack> current_midi_target;
+ StripableList _soloSelection; //the items that are soloe'd during a solo-selection operation; need to unsolo after the roll
+
CoreSelection* _selection;
bool _global_locate_pending;