summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-10-31 18:32:26 +0100
committerRobin Gareus <robin@gareus.org>2017-10-31 18:32:26 +0100
commit00a4ad712c2d5ac73f04b0f43906590b24a22fb6 (patch)
treec849d672536222bc173c0e6fbbe3d38739dcbaf8 /libs/ardour/ardour
parent8e8168547bef7e404f70916fa3838cbe5c15bc62 (diff)
Move Loop Location to Processors
The processors will becomes responsible to know about loop-positions and map latency-compensated start_sample, end_sample into the loop-range as needed.
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/disk_io.h4
-rw-r--r--libs/ardour/ardour/processor.h4
-rw-r--r--libs/ardour/ardour/route.h3
-rw-r--r--libs/ardour/ardour/track.h2
4 files changed, 7 insertions, 6 deletions
diff --git a/libs/ardour/ardour/disk_io.h b/libs/ardour/ardour/disk_io.h
index 74eede7644..3fae063c1e 100644
--- a/libs/ardour/ardour/disk_io.h
+++ b/libs/ardour/ardour/disk_io.h
@@ -89,9 +89,6 @@ class LIBARDOUR_API DiskIOProcessor : public Processor
bool slaved() const { return _slaved; }
void set_slaved(bool yn) { _slaved = yn; }
- int set_loop (Location *loc);
-
- PBD::Signal1<void,Location *> LoopSet;
PBD::Signal0<void> SpeedChanged;
PBD::Signal0<void> ReverseChanged;
@@ -122,7 +119,6 @@ class LIBARDOUR_API DiskIOProcessor : public Processor
double _target_speed;
bool _seek_required;
bool _slaved;
- Location* loop_location;
bool in_set_state;
samplepos_t playback_sample;
bool _need_butler;
diff --git a/libs/ardour/ardour/processor.h b/libs/ardour/ardour/processor.h
index f3325a1194..139a5cf592 100644
--- a/libs/ardour/ardour/processor.h
+++ b/libs/ardour/ardour/processor.h
@@ -40,6 +40,7 @@ class PluginPinWindowProxy;
namespace ARDOUR {
+class Location;
class Session;
class Route;
@@ -108,6 +109,8 @@ class LIBARDOUR_API Processor : public SessionObject, public Automatable, public
virtual void realtime_handle_transport_stopped () {}
virtual void realtime_locate () {}
+ virtual void set_loop (Location *loc) { _loop_location = loc; }
+
/* most processors won't care about this, but plugins that
receive MIDI or similar data from an input source that
may suddenly go "quiet" because of monitoring changes
@@ -167,6 +170,7 @@ protected:
// absolute alignment to session i/o
samplecnt_t _capture_offset;
samplecnt_t _playback_offset;
+ Location* _loop_location;
};
} // namespace ARDOUR
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index f903a49bac..ba262d61e8 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -78,6 +78,7 @@ class PluginInsert;
class RouteGroup;
class Send;
class InternalReturn;
+class Location;
class MonitorControl;
class MonitorProcessor;
class Pannable;
@@ -152,6 +153,7 @@ public:
virtual void realtime_locate () {}
virtual void non_realtime_locate (samplepos_t);
virtual void set_pending_declick (int);
+ int set_loop (ARDOUR::Location *);
/* end of vfunc-based API */
@@ -672,6 +674,7 @@ protected:
FedBy _fed_by;
InstrumentInfo _instrument_info;
+ Location* _loop_location;
virtual ChanCount input_streams () const;
diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h
index 6b024274f0..7703221bd4 100644
--- a/libs/ardour/ardour/track.h
+++ b/libs/ardour/ardour/track.h
@@ -37,7 +37,6 @@ class Region;
class DiskReader;
class DiskWriter;
class IO;
-class Location;
class RecordEnableControl;
class RecordSafeControl;
@@ -144,7 +143,6 @@ public:
void non_realtime_speed_change ();
int overwrite_existing_buffers ();
samplecnt_t get_captured_samples (uint32_t n = 0) const;
- int set_loop (ARDOUR::Location *);
void transport_looped (samplepos_t);
void transport_stopped_wallclock (struct tm &, time_t, bool);
bool pending_overwrite () const;