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() SpiralGUIType *JackPlugin::CreateGUI()
{ {
return new JackPluginGUI(m_PluginInfo.Width, 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() void JackPlugin::Execute()
@@ -442,10 +442,10 @@ void JackPlugin::ExecuteCommands()
{ {
switch (m_AudioCH->GetCommand()) 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 : case UPDATE_NAMES :
{ {
int c=0; int c=0;
@@ -475,5 +475,5 @@ void JackPlugin::ExecuteCommands()
default : break; 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 // deleted by Canvas::Remove()? seems to cause random crashes
//delete i->second->m_DeviceGUI; //delete i->second->m_DeviceGUI;
delete i->second->m_Device; delete i->second->m_Device;
i->second->m_Device=NULL;
} }
m_Canvas->Clear(); m_Canvas->Clear();
@@ -197,6 +198,7 @@ void SynthModular::UpdatePluginGUIs()
if (i->second->m_Device) if (i->second->m_Device)
{ {
delete i->second->m_Device; delete i->second->m_Device;
i->second->m_Device=NULL;
} }
if (i->second->m_DeviceGUI->GetPluginWindow()) 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); sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort);
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num)); SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num));
return; return;
}
}
} }
void SynthModular::cb_Connection(Fl_Canvas* o, void* v) void SynthModular::cb_Connection(Fl_Canvas* o, void* v)
{((SynthModular*)(o->user_data()))->cb_Connection_i(o,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; 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; } { cerr<<"Can't find destination device's Input"<<endl; return; }
} }
void SynthModular::cb_Unconnect(Fl_Canvas* o, void* v) void SynthModular::cb_Unconnect(Fl_Canvas* o, void* v)
{((SynthModular*)(o->user_data()))->cb_Unconnect_i(o,v);} {((SynthModular*)(o->user_data()))->cb_Unconnect_i(o,v);}


Loading…
Cancel
Save