Remove note from m_playingNotes before deleting its m_pluginData in sf2Instrument::deleteNotePluginData()
Move m_playingNotesMutex.lock() and m_playingNotesMutex.unlock() outside of if( m_playingNotes.indexOf( _n ) >= 0 ) Conflicts: plugins/sf2_player/sf2_player.cpp Remove note from m_playingNotes before deleting its m_pluginData in sf2Instrument::deleteNotePluginData() Move m_playingNotesMutex.lock() and m_playingNotesMutex.unlock() outside of if( m_playingNotes.indexOf( _n ) >= 0 )
This commit is contained in:
@@ -711,16 +711,20 @@ void sf2Instrument::play( sampleFrame * _working_buffer )
|
||||
}
|
||||
else // otherwise remove the handle
|
||||
{
|
||||
m_playingNotesMutex.lock();
|
||||
m_playingNotes.remove( m_playingNotes.indexOf( currentNote ) );
|
||||
m_playingNotesMutex.unlock();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
noteOff( currentData );
|
||||
m_playingNotesMutex.lock();
|
||||
m_playingNotes.remove( m_playingNotes.indexOf( currentNote ) );
|
||||
m_playingNotesMutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( currentFrame < frames )
|
||||
{
|
||||
renderFrames( frames - currentFrame, _working_buffer + currentFrame );
|
||||
@@ -780,6 +784,12 @@ void sf2Instrument::deleteNotePluginData( NotePlayHandle * _n )
|
||||
// do it here
|
||||
{
|
||||
noteOff( pluginData );
|
||||
m_playingNotesMutex.lock();
|
||||
if( m_playingNotes.indexOf( _n ) >= 0 )
|
||||
{
|
||||
m_playingNotes.remove( m_playingNotes.indexOf( _n ) );
|
||||
}
|
||||
m_playingNotesMutex.unlock();
|
||||
}
|
||||
delete pluginData;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user