diff --git a/src/meshlab/mainwindow_RunTime.cpp b/src/meshlab/mainwindow_RunTime.cpp index 7e09ed929..419f35898 100644 --- a/src/meshlab/mainwindow_RunTime.cpp +++ b/src/meshlab/mainwindow_RunTime.cpp @@ -1811,7 +1811,10 @@ void MainWindow::newProject(const QString& projName) { if (gpumeminfo == NULL) return; - MultiViewer_Container *mvcont = new MultiViewer_Container(*gpumeminfo,mwsettings.highprecision,mwsettings.perbatchprimitives,mwsettings.minpolygonpersmoothrendering,mdiarea); + + // The parent of mvcont is set to null, because mdiarea->addSubWindow + // will put it into a QMDISubWindow that will take ownership + MultiViewer_Container *mvcont = new MultiViewer_Container(*gpumeminfo,mwsettings.highprecision,mwsettings.perbatchprimitives,mwsettings.minpolygonpersmoothrendering,nullptr); connect(&mvcont->meshDoc,SIGNAL(meshAdded(int)),this,SLOT(meshAdded(int))); connect(&mvcont->meshDoc,SIGNAL(meshRemoved(int)),this,SLOT(meshRemoved(int))); connect(&mvcont->meshDoc, SIGNAL(documentUpdated()), this, SLOT(documentUpdateRequested())); diff --git a/src/meshlab/multiViewer_Container.cpp b/src/meshlab/multiViewer_Container.cpp index a5aeafcee..acdc79621 100644 --- a/src/meshlab/multiViewer_Container.cpp +++ b/src/meshlab/multiViewer_Container.cpp @@ -80,7 +80,7 @@ MultiViewer_Container::~MultiViewer_Container() //WARNING!!!! Here just the pointer to the MLSceneGLSharedDataContext is destroyed. // The data contained in the GPU gets deallocated in the closeEvent function. - delete scenecontext; + scenecontext->deleteLater(); } int MultiViewer_Container::getNextViewerId(){