diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-09-17 18:26:03 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-09-17 18:26:03 -0600 |
commit | bd229936ec2cb30fe3360f2d83ffc7197fd6fb97 (patch) | |
tree | 84e41e048d76541d5d491ccefe8c7feaa14f4d5c /libs/ardour/ardour/disk_reader.h | |
parent | fc3e7623e7a4c7fdeebf84c4d47eaf04d9bc744d (diff) |
add finite state machine to control/manage transport state
Diffstat (limited to 'libs/ardour/ardour/disk_reader.h')
-rw-r--r-- | libs/ardour/ardour/disk_reader.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/ardour/disk_reader.h b/libs/ardour/ardour/disk_reader.h index a7a74027f0..47812f54c8 100644 --- a/libs/ardour/ardour/disk_reader.h +++ b/libs/ardour/ardour/disk_reader.h @@ -97,8 +97,17 @@ public: static void set_midi_readahead_samples (samplecnt_t samples_ahead) { midi_readahead = samples_ahead; } - static void set_no_disk_output (bool yn); - static bool no_disk_output() { return _no_disk_output; } + /* inc/dec variants MUST be called as part of the process call tree, before any + disk readers are invoked. We use it when the session needs the + transport (and thus effective read position for DiskReaders) to keep + advancing as part of syncing up with a transport master, but we + don't want any actual disk output yet because we are still not + synced. + */ + + static void inc_no_disk_output () { g_atomic_int_inc (&_no_disk_output); } + static void dec_no_disk_output(); + static bool no_disk_output () { return g_atomic_int_get (&_no_disk_output); } protected: friend class Track; @@ -156,7 +165,7 @@ private: static samplecnt_t _chunk_samples; static samplecnt_t midi_readahead; - static bool _no_disk_output; + static gint _no_disk_output; int audio_read (PBD::PlaybackBuffer<Sample>*, Sample* sum_buffer, |