summaryrefslogtreecommitdiff
path: root/libs/ardour/disk_reader.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-12-12 12:09:15 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-12-12 12:09:15 -0700
commitbf8c25677172c0e425bfcfae507289054c995ed5 (patch)
tree99207da6b74cc5240e4ae78f51839ee6bd251f70 /libs/ardour/disk_reader.cc
parent0b0c415b400393bd57dd334a1cb2308ec8964aa6 (diff)
reduce another race condition risk
overwrite_queued == true is equivalent to _pending_overwrite != 0
Diffstat (limited to 'libs/ardour/disk_reader.cc')
-rw-r--r--libs/ardour/disk_reader.cc10
1 files changed, 2 insertions, 8 deletions
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc
index e3cd75f5a1..b085029e54 100644
--- a/libs/ardour/disk_reader.cc
+++ b/libs/ardour/disk_reader.cc
@@ -60,7 +60,6 @@ samplecnt_t DiskReader::loop_fade_length (0);
DiskReader::DiskReader (Session& s, string const & str, DiskIOProcessor::Flag f)
: DiskIOProcessor (s, str, f)
, overwrite_sample (0)
- , overwrite_queued (false)
, run_must_resolve (false)
, _declick_amp (s.nominal_sample_rate ())
, _declick_offs (0)
@@ -233,10 +232,7 @@ DiskReader::adjust_buffering ()
void
DiskReader::playlist_modified ()
{
- if (!overwrite_queued) {
- _session.request_overwrite_buffer (_track, PlaylistModified);
- overwrite_queued = true;
- }
+ _session.request_overwrite_buffer (_track, PlaylistModified);
}
int
@@ -257,9 +253,8 @@ DiskReader::use_playlist (DataType dt, boost::shared_ptr<Playlist> playlist)
take care of the buffer refill.
*/
- if (!overwrite_queued && (prior_playlist || _session.loading())) {
+ if ((g_atomic_int_get (&_pending_overwrite) & PlaylistChanged) || prior_playlist) {
_session.request_overwrite_buffer (_track, PlaylistChanged);
- overwrite_queued = true;
}
return 0;
@@ -639,7 +634,6 @@ DiskReader::overwrite_existing_buffers ()
}
}
- overwrite_queued = false;
g_atomic_int_set (&_pending_overwrite, 0);
return ret;