X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fdelivery.h;h=c920fadc2cf69a90418d18e2186f087e025742c4;hb=844b7d0f684eaf01a8d553f935027f496a09c3ad;hp=5cb11a9348b2f9ab060e1703dcc75154c8b01eb7;hpb=7884727e78f9e2253b2b6d8ef441fa07272fe950;p=ardour.git diff --git a/libs/ardour/ardour/delivery.h b/libs/ardour/ardour/delivery.h index 5cb11a9348..c920fadc2c 100644 --- a/libs/ardour/ardour/delivery.h +++ b/libs/ardour/ardour/delivery.h @@ -1,16 +1,16 @@ /* - Copyright (C) 2006 Paul Davis - + Copyright (C) 2006 Paul Davis + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -20,6 +20,7 @@ #define __ardour_delivery_h__ #include + #include "ardour/types.h" #include "ardour/chan_count.h" #include "ardour/io_processor.h" @@ -31,7 +32,8 @@ class IO; class MuteMaster; class Panner; -class Delivery : public IOProcessor { +class Delivery : public IOProcessor +{ public: enum Role { /* main outputs - delivers out-of-place to port buffers, and cannot be removed */ @@ -51,44 +53,37 @@ public: /* Delivery to an existing output */ Delivery (Session& s, boost::shared_ptr io, boost::shared_ptr mm, const std::string& name, Role); - Delivery (Session& s, boost::shared_ptr io, boost::shared_ptr mm, const XMLNode&); /* Delivery to a new output owned by this object */ Delivery (Session& s, boost::shared_ptr mm, const std::string& name, Role); - Delivery (Session&, boost::shared_ptr mm, const XMLNode&); + ~Delivery (); bool set_name (const std::string& name); std::string display_name() const; - bool visible() const; Role role() const { return _role; } bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const; bool configure_io (ChanCount in, ChanCount out); - void run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes); + void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, nframes_t nframes, bool); - /* supplemental method use with MIDI */ - - void flush (nframes_t nframes); + /* supplemental method used with MIDI */ + void flush_buffers (nframes_t nframes, framepos_t time); 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 cycle_start (nframes_t); void increment_output_offset (nframes_t); - void transport_stopped (sframes_t frame); + void transport_stopped (framepos_t frame); BufferSet& output_buffers() { return *_output_buffers; } - sigc::signal MuteChange; + PBD::Signal0 MuteChange; - static sigc::signal CycleStart; + static PBD::Signal1 CycleStart; XMLNode& state (bool full); - int set_state (const XMLNode&); + int set_state (const XMLNode&, int version); /* Panning */ @@ -102,8 +97,8 @@ public: void allow_pan_reset (); uint32_t pans_required() const { return _configured_input.n_audio(); } - void start_pan_touch (uint32_t which); - void end_pan_touch (uint32_t which); + void start_pan_touch (uint32_t which, double when); + void end_pan_touch (uint32_t which, bool mark, double when); protected: Role _role; @@ -111,17 +106,15 @@ public: gain_t _current_gain; nframes_t _output_offset; bool _no_outs_cuz_we_no_monitor; - uint32_t _solo_level; - bool _solo_isolated; boost::shared_ptr _mute_master; bool no_panner_reset; boost::shared_ptr _panner; static bool panners_legal; - static sigc::signal PannersLegal; + static PBD::Signal0 PannersLegal; int panners_became_legal (); - sigc::connection panner_legal_c; + PBD::ScopedConnection panner_legal_c; void output_changed (IOChange, void*); gain_t target_gain ();