{
DEBUG_TRACE (DEBUG::Sequence, string_compose ("Created Iterator @ %1 (is end: %2)\n)", t, _is_end));
- if (!_is_end) {
- _lock = seq.read_lock();
- } else {
+ if (_is_end) {
return;
}
- typename Sequence<Time>::ReadLock lock(seq.read_lock());
+ _lock = seq.read_lock();
// Find first note which begins at or after t
_note_iter = seq.note_lower_bound(t);
_force_discrete = other._force_discrete;
_active_patch_change_message = other._active_patch_change_message;
- if (other._lock)
+ if (other._lock) {
_lock = _seq->read_lock();
- else
+ } else {
_lock.reset();
+ }
if (other._control_iter == other._control_iters.end()) {
_control_iter = _control_iters.end();
} else if (ev.is_cc() && (ev.cc_number() == MIDI_CTL_MSB_BANK || ev.cc_number() == MIDI_CTL_LSB_BANK)) {
/* note bank numbers in our _bank[] array, so that we can write an event when the program change arrives */
if (ev.cc_number() == MIDI_CTL_MSB_BANK) {
- _bank[ev.channel()] &= (0x7f << 7);
+ _bank[ev.channel()] &= ~(0x7f << 7);
_bank[ev.channel()] |= ev.cc_value() << 7;
} else {
- _bank[ev.channel()] &= 0x7f;
+ _bank[ev.channel()] &= ~0x7f;
_bank[ev.channel()] |= ev.cc_value();
}
} else if (ev.is_cc()) {