X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fpanner_shell.h;h=02f80c7b28bc0db237c6d298593055270f407897;hb=1745340c67d66d8dd92e5b3a377e935ed5eea973;hp=b78573212a06fb30d694fecda6418411d7a5855b;hpb=8648a8a13b04549362f14a0738947d997ef1abc7;p=ardour.git diff --git a/libs/ardour/ardour/panner_shell.h b/libs/ardour/ardour/panner_shell.h index b78573212a..02f80c7b28 100644 --- a/libs/ardour/ardour/panner_shell.h +++ b/libs/ardour/ardour/panner_shell.h @@ -37,6 +37,7 @@ namespace ARDOUR { class Session; +class Route; class Panner; class BufferSet; class AudioBuffer; @@ -49,7 +50,7 @@ class Pannable; class LIBARDOUR_API PannerShell : public SessionObject { public: - PannerShell (std::string name, Session&, boost::shared_ptr); + PannerShell (std::string name, Session&, boost::shared_ptr, bool is_send = false); virtual ~PannerShell (); std::string describe_parameter (Evoral::Parameter param); @@ -63,19 +64,44 @@ public: XMLNode& get_state (); int set_state (const XMLNode&, int version); + PBD::Signal0 PannableChanged; /* Pannable changed -- l*/ PBD::Signal0 Changed; /* panner and/or outputs count and/or bypass state changed */ boost::shared_ptr panner() const { return _panner; } - boost::shared_ptr pannable() const { return _pannable; } + boost::shared_ptr pannable() const { return _panlinked ? _pannable_route : _pannable_internal; } bool bypassed () const; void set_bypassed (bool); + bool is_send () const { return (_is_send); } + bool is_linked_to_route () const { return (_is_send && _panlinked); } + /* this function takes the process lock: */ + void set_linked_to_route (bool); + + std::string current_panner_uri() const { return _current_panner_uri; } + std::string user_selected_panner_uri() const { return _user_selected_panner_uri; } + std::string panner_gui_uri() const { return _panner_gui_uri; } + + /* this function takes the process lock: */ + bool select_panner_by_uri (std::string const uri); + private: + friend class Route; void distribute_no_automation (BufferSet& src, BufferSet& dest, pframes_t nframes, gain_t gain_coeff); + bool set_user_selected_panner_uri (std::string const uri); + boost::shared_ptr _panner; - boost::shared_ptr _pannable; + + boost::shared_ptr _pannable_internal; + boost::shared_ptr _pannable_route; + bool _is_send; + bool _panlinked; bool _bypassed; + + std::string _current_panner_uri; + std::string _user_selected_panner_uri; + std::string _panner_gui_uri; + bool _force_reselect; }; } // namespace ARDOUR