Skip to content

Commit 74c0a6d

Browse files
sbvisJulianThijssen
authored andcommitted
no signal callbacks can fire on the ScatterplotPlugin object while it's being destroyed, preventing the memory corruption that was causing the crash
1 parent e6e3b5d commit 74c0a6d

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/ScatterplotPlugin.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,27 @@ ScatterplotPlugin::ScatterplotPlugin(const PluginFactory* factory) :
292292

293293
ScatterplotPlugin::~ScatterplotPlugin()
294294
{
295+
disconnect(this);
295296
if (_positionDataset.isValid()) {
296297
disconnect(&_positionDataset, nullptr, this, nullptr);
297298
}
299+
300+
if (_scatterPlotWidget) {
301+
disconnect(_scatterPlotWidget, nullptr, this, nullptr);
302+
disconnect(&_scatterPlotWidget->getPixelSelectionTool(), nullptr, this, nullptr);
303+
disconnect(&_scatterPlotWidget->getPointRendererNavigator().getNavigationAction().getZoomSelectionAction(), nullptr, this, nullptr);
304+
}
305+
disconnect(&_settingsAction, nullptr, this, nullptr);
306+
disconnect(&_settingsAction.getColoringAction(), nullptr, this, nullptr);
307+
disconnect(&_settingsAction.getColoringAction().getColorByAction(), nullptr, this, nullptr);
308+
disconnect(&_settingsAction.getPlotAction().getPointPlotAction().getFocusSelection(), nullptr, this, nullptr);
309+
disconnect(&_settingsAction.getPlotAction().getPointPlotAction().getSizeAction(), nullptr, this, nullptr);
310+
disconnect(&_settingsAction.getPlotAction().getPointPlotAction().getOpacityAction(), nullptr, this, nullptr);
311+
disconnect(&_settingsAction.getColoringAction(), &ColoringAction::currentColorDatasetChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
312+
disconnect(&_settingsAction.getColoringAction().getColorByAction(), &OptionAction::currentIndexChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
313+
disconnect(&_settingsAction.getPlotAction().getPointPlotAction().getSizeAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
314+
disconnect(&_settingsAction.getPlotAction().getPointPlotAction().getOpacityAction(), &ScalarAction::sourceDataChanged, this, &ScatterplotPlugin::updateHeadsUpDisplay);
315+
disconnect(&getSamplerAction(), nullptr, this, nullptr);
298316
}
299317

300318
void ScatterplotPlugin::init()

0 commit comments

Comments
 (0)