Browse Source

fixed a crash that could occur when deleting plugins

master
nebogeo 22 years ago
parent
commit
6adce628b3
2 changed files with 12 additions and 11 deletions
  1. +7
    -7
      SpiralSound/Plugins/JackPlugin/JackPlugin.C
  2. +5
    -4
      SpiralSynthModular.C

+ 7
- 7
SpiralSound/Plugins/JackPlugin/JackPlugin.C View File

@@ -401,8 +401,8 @@ PluginInfo &JackPlugin::Initialise(const HostInfo *Host)
SpiralGUIType *JackPlugin::CreateGUI()
{
return new JackPluginGUI(m_PluginInfo.Width,
m_PluginInfo.Height,
this,m_AudioCH,m_HostInfo);
m_PluginInfo.Height,
this,m_AudioCH,m_HostInfo);
}

void JackPlugin::Execute()
@@ -442,10 +442,10 @@ void JackPlugin::ExecuteCommands()
{
switch (m_AudioCH->GetCommand())
{
/*case ATTACH : Attach(); break;
case DETACH : Detach(); break;
case CONNECTINPUT : pJack->ConnectInput(m_GUIArgs.Num,m_GUIArgs.Port); break;
case CONNECTOUTPUT : pJack->ConnectOutput(m_GUIArgs.Num,m_GUIArgs.Port); break; */
//case ATTACH : Attach(); break;
//case DETACH : Detach(); break;
//case CONNECTINPUT : pJack->ConnectInput(m_GUIArgs.Num,m_GUIArgs.Port); break;
//case CONNECTOUTPUT : pJack->ConnectOutput(m_GUIArgs.Num,m_GUIArgs.Port); break;
case UPDATE_NAMES :
{
int c=0;
@@ -475,5 +475,5 @@ void JackPlugin::ExecuteCommands()
default : break;
}
}
m_Connected=JackClient::Get()->IsAttached();
m_Connected=JackClient::Get()->IsAttached();
}

+ 5
- 4
SpiralSynthModular.C View File

@@ -116,6 +116,7 @@ void SynthModular::ClearUp()
// deleted by Canvas::Remove()? seems to cause random crashes
//delete i->second->m_DeviceGUI;
delete i->second->m_Device;
i->second->m_Device=NULL;
}
m_Canvas->Clear();
@@ -197,6 +198,7 @@ void SynthModular::UpdatePluginGUIs()
if (i->second->m_Device)
{
delete i->second->m_Device;
i->second->m_Device=NULL;
}
if (i->second->m_DeviceGUI->GetPluginWindow())
@@ -1089,8 +1091,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v)
sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort);
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num));
return;
}
}
}
void SynthModular::cb_Connection(Fl_Canvas* o, void* v)
{((SynthModular*)(o->user_data()))->cb_Connection_i(o,v);}
@@ -1111,9 +1112,9 @@ inline void SynthModular::cb_Unconnect_i(Fl_Canvas* o, void* v)
return;
}

if (!di->second->m_Device->SetInput(Wire->InputPort,NULL))
SpiralPlugin *Plugin=di->second->m_Device;
if (Plugin && !Plugin->SetInput(Wire->InputPort,NULL))
{ cerr<<"Can't find destination device's Input"<<endl; return; }
}
void SynthModular::cb_Unconnect(Fl_Canvas* o, void* v)
{((SynthModular*)(o->user_data()))->cb_Unconnect_i(o,v);}


Loading…
Cancel
Save