From e3cac734fad63601baf76ffd3742158ccd8ac842 Mon Sep 17 00:00:00 2001 From: Javier Serrano Polo Date: Mon, 24 Jul 2006 01:19:49 +0000 Subject: [PATCH] handle notes deleted when keys still pressed git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@268 0778d3d1-df1d-0410-868b-ea421aaaa00d --- src/tracks/instrument_track.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index 103b7df08..eee44e7da 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -749,6 +749,21 @@ void instrumentTrack::deleteNotePluginData( notePlayHandle * _n ) { m_instrument->deleteNotePluginData( _n ); } + + m_notesMutex.lock(); + // Notes deleted when keys still pressed + if( m_notes[_n->key()] == _n ) + { + note done_note( NULL, midiTime( static_cast( + _n->totalFramesPlayed() * 64 / + eng()->getSongEditor()->framesPerTact() ) ), + 0, _n->tone(), _n->octave(), + _n->getVolume(), _n->getPanning() ); + _n->noteOff(); + m_notes[_n->key()] = NULL; + emit noteDone( done_note ); + } + m_notesMutex.unlock(); }