Require explicit types when removing PlayHandles in the Mixer

This fixes a few deadlocks where a PresetPreviewPlayHandle would be removed by
the creation of a new PresetPreviewPlayHandle.
This commit is contained in:
Fastigium
2016-02-16 13:27:41 +01:00
committed by Jesse Feddema
parent 87dce6d2f4
commit da8040764f
12 changed files with 31 additions and 17 deletions

View File

@@ -101,7 +101,9 @@ GigInstrument::GigInstrument( InstrumentTrack * _instrument_track ) :
GigInstrument::~GigInstrument()
{
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes( instrumentTrack(),
PlayHandle::TypeNotePlayHandle
| PlayHandle::TypeInstrumentPlayHandle );
freeInstance();
}

View File

@@ -188,7 +188,7 @@ CarlaInstrument::CarlaInstrument(InstrumentTrack* const instrumentTrack, const D
CarlaInstrument::~CarlaInstrument()
{
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes(instrumentTrack(), PlayHandle::TypeNotePlayHandle | PlayHandle::TypeInstrumentPlayHandle);
if (fHost.resourceDir != NULL)
{

View File

@@ -217,7 +217,9 @@ opl2instrument::opl2instrument( InstrumentTrack * _instrument_track ) :
opl2instrument::~opl2instrument() {
delete theEmulator;
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes( instrumentTrack(),
PlayHandle::TypeNotePlayHandle
| PlayHandle::TypeInstrumentPlayHandle );
delete [] renderbuffer;
}

View File

@@ -157,7 +157,9 @@ sf2Instrument::sf2Instrument( InstrumentTrack * _instrument_track ) :
sf2Instrument::~sf2Instrument()
{
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes( instrumentTrack(),
PlayHandle::TypeNotePlayHandle
| PlayHandle::TypeInstrumentPlayHandle );
freeFont();
delete_fluid_synth( m_synth );
delete_fluid_settings( m_settings );

View File

@@ -102,7 +102,9 @@ vestigeInstrument::~vestigeInstrument()
knobFModel = NULL;
}
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes( instrumentTrack(),
PlayHandle::TypeNotePlayHandle
| PlayHandle::TypeInstrumentPlayHandle );
closePlugin();
}

View File

@@ -144,7 +144,9 @@ ZynAddSubFxInstrument::ZynAddSubFxInstrument(
ZynAddSubFxInstrument::~ZynAddSubFxInstrument()
{
Engine::mixer()->removePlayHandles( instrumentTrack() );
Engine::mixer()->removePlayHandlesOfTypes( instrumentTrack(),
PlayHandle::TypeNotePlayHandle
| PlayHandle::TypeInstrumentPlayHandle );
m_pluginMutex.lock();
delete m_plugin;