diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-12 12:09:15 -0700 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-12-12 12:09:15 -0700 |
commit | bf8c25677172c0e425bfcfae507289054c995ed5 (patch) | |
tree | 99207da6b74cc5240e4ae78f51839ee6bd251f70 /libs/ardour/disk_reader.cc | |
parent | 0b0c415b400393bd57dd334a1cb2308ec8964aa6 (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.cc | 10 |
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; |