From ee98ba2be7d0eb52aa6945855461c6de4206e695 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 13 Aug 2020 12:19:32 +1200 Subject: [PATCH 1/2] Zinc window: skip createAndSetZincContext() when closing OpenCOR. --- src/plugins/test/ZincWindow/src/zincwindowwindow.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp b/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp index a674d89120..32ab6ec3d2 100644 --- a/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp +++ b/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp @@ -91,6 +91,8 @@ ZincWindowWindow::~ZincWindowWindow() delete mZincContext; + mZincWidget = nullptr; + // Delete the GUI delete mGui; @@ -109,6 +111,13 @@ void ZincWindowWindow::retranslateUi() void ZincWindowWindow::createAndSetZincContext() { + // Make sure that we still have a Zinc widget (i.e. skip the case where we + // are coming here as a result of closing OpenCOR) + + if (mZincWidget == nullptr) { + return; + } + // Keep track of our current scene viewer's description mZincSceneViewerDescription = mZincWidget->sceneViewer().writeDescription(); From dbebe3e58cb8560b5167e6ac5520022f3ef2d2ba Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 13 Aug 2020 12:21:14 +1200 Subject: [PATCH 2/2] Zinc window: keep a temporary copy of our .exfile file. --- .../test/ZincWindow/src/zincwindowwindow.cpp | 18 +++++++++++------- .../test/ZincWindow/src/zincwindowwindow.h | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp b/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp index 32ab6ec3d2..77da2c834a 100644 --- a/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp +++ b/src/plugins/test/ZincWindow/src/zincwindowwindow.cpp @@ -60,6 +60,12 @@ ZincWindowWindow::ZincWindowWindow(QWidget *pParent) : mGui->setupUi(this); + // Create a temporary copy of our .exfile file + + mExFile = Core::canonicalFileName(QDir::tempPath()+"/ZincWindow/trilinearCube.exfile"); + + Core::writeResourceToFile(mExFile, ":/ZincWindow/trilinearCube.exfile"); + // Create and add a Zinc widget mZincWidget = new ZincWidget::ZincWidget(this); @@ -87,6 +93,10 @@ ZincWindowWindow::ZincWindowWindow(QWidget *pParent) : ZincWindowWindow::~ZincWindowWindow() { + // Delete the temporary copy of our .exfile file + + QFile::remove(mExFile); + // Delete some internal objects delete mZincContext; @@ -136,15 +146,9 @@ void ZincWindowWindow::createAndSetZincContext() // Load our .exfile to our default region using a temporary copy of our // .exfile file - QString exFile = Core::canonicalFileName(QDir::tempPath()+"/ZincWindow/trilinearCube.exfile"); - - Core::writeResourceToFile(exFile, ":/ZincWindow/trilinearCube.exfile"); - OpenCMISS::Zinc::Region region = mZincContext->getDefaultRegion(); - region.readFile(exFile.toUtf8().constData()); - - QFile::remove(exFile); + region.readFile(mExFile.toUtf8().constData()); // Create a field magnitude for our default region diff --git a/src/plugins/test/ZincWindow/src/zincwindowwindow.h b/src/plugins/test/ZincWindow/src/zincwindowwindow.h index 5dd8c2fad9..7aa2da41d2 100644 --- a/src/plugins/test/ZincWindow/src/zincwindowwindow.h +++ b/src/plugins/test/ZincWindow/src/zincwindowwindow.h @@ -77,6 +77,8 @@ class ZincWindowWindow : public Core::WindowWidget int mAxesFontPointSize = 0; + QString mExFile; + private slots: void createAndSetZincContext(); void graphicsInitialized();