diff options
author | David Robillard <d@drobilla.net> | 2014-12-17 16:05:27 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-12-17 16:07:29 -0500 |
commit | a7067557107fc2f01586a88bb8b0a097914798ea (patch) | |
tree | c23f5f2e0386655c4d5e43ca714718e6bc1b76ac /libs/ardour/audio_diskstream.cc | |
parent | 1fa9edd872bdbfe7651c822698235434ffe59540 (diff) |
Fix various MIDI locking issues.
Attempt to make mistakes much less likely in the future by statically requiring
caller to pass scoped locks where necessary.
Diffstat (limited to 'libs/ardour/audio_diskstream.cc')
-rw-r--r-- | libs/ardour/audio_diskstream.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc index 4c3f7e6437..eb85538811 100644 --- a/libs/ardour/audio_diskstream.cc +++ b/libs/ardour/audio_diskstream.cc @@ -1771,13 +1771,15 @@ AudioDiskstream::prep_record_enable () for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) { (*chan)->source.request_input_monitoring (!(_session.config.get_auto_input() && rolling)); capturing_sources.push_back ((*chan)->write_source); - (*chan)->write_source->mark_streaming_write_started (); + (*chan)->write_source->mark_streaming_write_started ( + Source::Lock((*chan)->write_source->mutex())); } } else { for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) { capturing_sources.push_back ((*chan)->write_source); - (*chan)->write_source->mark_streaming_write_started (); + (*chan)->write_source->mark_streaming_write_started ( + Source::Lock((*chan)->write_source->mutex())); } } @@ -1963,7 +1965,8 @@ AudioDiskstream::reset_write_sources (bool mark_write_complete, bool /*force*/) if ((*chan)->write_source) { if (mark_write_complete) { - (*chan)->write_source->mark_streaming_write_completed (); + (*chan)->write_source->mark_streaming_write_completed ( + Source::Lock((*chan)->write_source->mutex())); (*chan)->write_source->done_with_peakfile_writes (); } |