Changed code for program teardown to be more unified (still kind of broken though..)

This commit is contained in:
Collin Kidder
2017-01-08 19:22:58 -05:00
parent 4f7611f443
commit bf48d5695f
2 changed files with 47 additions and 131 deletions
+45 -131
View File
@@ -174,144 +174,58 @@ MainWindow::MainWindow(QWidget *parent) :
MainWindow::~MainWindow()
{
//serialWorkerThread.quit();
//serialWorkerThread.wait();
//delete worker;
if (graphingWindow)
{
graphingWindow->close();
delete graphingWindow;
}
if (frameInfoWindow)
{
frameInfoWindow->close();
delete frameInfoWindow;
}
if (playbackWindow)
{
playbackWindow->close();
delete playbackWindow;
}
if (flowViewWindow)
{
flowViewWindow->close();
delete flowViewWindow;
}
if (frameSenderWindow)
{
frameSenderWindow->close();
delete frameSenderWindow;
}
if (comparatorWindow)
{
comparatorWindow->close();
delete comparatorWindow;
}
if (dbcMainEditor)
{
dbcMainEditor->close();
delete dbcMainEditor;
}
if (settingsDialog)
{
settingsDialog->close();
delete settingsDialog;
}
if (discreteStateWindow)
{
discreteStateWindow->close();
delete discreteStateWindow;
}
if (connectionWindow)
{
connectionWindow->close();
delete connectionWindow;
}
if (scriptingWindow)
{
scriptingWindow->close();
delete scriptingWindow;
}
if (rangeWindow)
{
rangeWindow->close();
delete rangeWindow;
}
if (dbcFileWindow)
{
dbcFileWindow->close();
delete dbcFileWindow;
}
if (fuzzingWindow)
{
fuzzingWindow->close();
delete fuzzingWindow;
}
if (udsScanWindow)
{
udsScanWindow->close();
delete udsScanWindow;
}
if (isoWindow)
{
isoWindow->close();
delete isoWindow;
}
if (snifferWindow)
{
snifferWindow->close();
delete snifferWindow;
snifferWindow = NULL;
}
if (bisectWindow)
{
bisectWindow->close();
delete bisectWindow;
bisectWindow = NULL;
}
//killEmAll(); //Ride the lightning
delete model;
delete elapsedTime;
delete dbcHandler;
delete ui;
}
//kill every sub window that could be open. At the moment a hard coded list
//but eventually each window should be registered and be able to be iterated.
void MainWindow::killEmAll()
{
killWindow(graphingWindow);
killWindow(frameInfoWindow);
killWindow(playbackWindow);
killWindow(flowViewWindow);
killWindow(frameSenderWindow);
killWindow(comparatorWindow);
killWindow(dbcMainEditor);
killWindow(settingsDialog);
killWindow(discreteStateWindow);
killWindow(connectionWindow);
killWindow(scriptingWindow);
killWindow(rangeWindow);
killWindow(dbcFileWindow);
killWindow(fuzzingWindow);
killWindow(udsScanWindow);
killWindow(isoWindow);
killWindow(snifferWindow);
killWindow(bisectWindow);
killWindow(firmwareUploaderWindow);
killWindow(motorctrlConfigWindow);
}
//forcefully close the window, kill it, and salt the earth
//note, for some stupid reason this function causes a seg fault
//it seems that when it runs just before the program closes it'll
//fault out when trying to close the connection window. I assume
//this could be because that window has long running threads open and doesn't
//close quickly or maybe cleanly. Investigate.
void MainWindow::killWindow(QDialog *win)
{
if (win)
{
win->close();
delete win;
win = NULL;
}
}
void MainWindow::exitApp()
{
if (graphingWindow) graphingWindow->close();
if (frameInfoWindow) frameInfoWindow->close();
if (playbackWindow) playbackWindow->close();
if (flowViewWindow) flowViewWindow->close();
if (frameSenderWindow) frameSenderWindow->close();
if (dbcMainEditor) dbcMainEditor->close();
if (comparatorWindow) comparatorWindow->close();
if (connectionWindow) connectionWindow->close();
if (settingsDialog) settingsDialog->close();
if (discreteStateWindow) discreteStateWindow->close();
if (scriptingWindow) scriptingWindow->close();
if (rangeWindow) rangeWindow->close();
if (dbcFileWindow) dbcFileWindow->close();
if (fuzzingWindow) fuzzingWindow->close();
if (udsScanWindow) udsScanWindow->close();
if (isoWindow) isoWindow->close();
if (snifferWindow) snifferWindow->close();
killEmAll();
this->close();
}
@@ -571,7 +485,7 @@ void MainWindow::handleLoadFile()
if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom();
updateFileStatus();
emit framesUpdated(-2);
emit framesUpdated(-1);
}
}
+2
View File
@@ -157,6 +157,8 @@ private:
void addFrameToDisplay(CANFrame &, bool);
void updateFileStatus();
void closeEvent(QCloseEvent *event);
void killEmAll();
void killWindow(QDialog *win);
void readSettings();
void readUpdateableSettings();
void writeSettings();