summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/route.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/route.h')
-rw-r--r--libs/ardour/ardour/route.h41
1 files changed, 38 insertions, 3 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index e17dc775d1..defcc2c5c2 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -155,7 +155,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
bool solo_safe() const;
void set_listen (bool yn, void* src);
- bool listening () const;
+ bool listening_via_monitor () const;
void set_phase_invert (uint32_t, bool yn);
void set_phase_invert (boost::dynamic_bitset<>);
@@ -220,7 +220,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
void add_internal_return ();
BufferSet* get_return_buffer () const;
void release_return_buffer () const;
- void put_monitor_send_at (Placement);
+ void listen_position_changed ();
boost::shared_ptr<CapturingProcessor> add_export_point(/* Add some argument for placement later */);
/** A record of the stream configuration at some point in the processor list.
@@ -294,7 +294,8 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
PBD::Signal1<void,void*> SelectedChanged;
- int listen_via (boost::shared_ptr<Route>, Placement p, bool active, bool aux);
+ int listen_via_monitor ();
+ int listen_via (boost::shared_ptr<Route>, Placement p);
void drop_listen (boost::shared_ptr<Route>);
/**
@@ -508,6 +509,40 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
void set_processor_positions ();
void update_port_latencies (const PortSet& ports, const PortSet& feeders, bool playback, framecnt_t) const;
+
+ void setup_invisible_processors ();
+
+ boost::shared_ptr<CapturingProcessor> _capturing_processor;
+
+ /** A handy class to keep processor state while we attempt a reconfiguration
+ * that may fail.
+ */
+ class ProcessorState {
+ public:
+ ProcessorState (Route* r)
+ : _route (r)
+ , _processors (r->_processors)
+ , _processor_max_streams (r->processor_max_streams)
+ { }
+
+ void restore () {
+ _route->_processors = _processors;
+ _route->processor_max_streams = _processor_max_streams;
+ }
+
+ private:
+ /* this should perhaps be a shared_ptr, but ProcessorStates will
+ not hang around long enough for it to matter.
+ */
+ Route* _route;
+ ProcessorList _processors;
+ ChanCount _processor_max_streams;
+ };
+
+ friend class ProcessorState;
+
+ /* no copy construction */
+ Route (Route const &);
};
} // namespace ARDOUR