From e6da4c4846cd3097e2393f0e43016b870e7cf592 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Sun, 11 Feb 2018 09:39:36 -0600 Subject: SoloSelection: libardour part. --- libs/ardour/ardour/playlist.h | 7 +++++++ libs/ardour/ardour/region.h | 4 ++++ libs/ardour/ardour/route.h | 2 ++ libs/ardour/ardour/session.h | 5 +++++ 4 files changed, 18 insertions(+) (limited to 'libs/ardour/ardour') 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 _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 denormal_protection_changed; PBD::Signal0 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); @@ -2114,6 +2117,8 @@ private: void rewire_midi_selection_ports (); boost::weak_ptr 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; -- cgit v1.2.3