summaryrefslogtreecommitdiff
path: root/libs/evoral/src/Sequence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/evoral/src/Sequence.cpp')
-rw-r--r--libs/evoral/src/Sequence.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/libs/evoral/src/Sequence.cpp b/libs/evoral/src/Sequence.cpp
index ac0ca231f1..d11988e70c 100644
--- a/libs/evoral/src/Sequence.cpp
+++ b/libs/evoral/src/Sequence.cpp
@@ -191,12 +191,10 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
if (!_event || _event->size() == 0) {
DUMP(format("Starting at end @ %1%\n") % t);
- _is_end = true;
_type = NIL;
- if (_locked) {
- _seq->read_unlock();
- _locked = false;
- }
+ _is_end = true;
+ _locked = false;
+ _seq->read_unlock();
} else {
DUMP(format("New iterator = %1% : %2% @ %3%\n")
% (int)_event->event_type()
@@ -371,6 +369,8 @@ Sequence<Time>::const_iterator::operator=(const const_iterator& other)
if (other._locked) {
other._seq->read_lock();
}
+ } else if (!_locked && other._locked) {
+ _seq->read_lock();
}
_seq = other._seq;
@@ -582,6 +582,7 @@ Sequence<Time>::append(const Event<Time>& event)
if (!midi_event_is_valid(ev.buffer(), ev.size())) {
cerr << "WARNING: Sequence ignoring illegal MIDI event" << endl;
+ write_unlock();
return;
}