Memory Management : Adjustment and fixes

Add release of several static singleton objects
Fix several minor memory leaks
This commit is contained in:
Magne Sjaastad
2022-03-03 10:15:32 +01:00
parent 7a2a297648
commit 0e57cfe201
36 changed files with 441 additions and 141 deletions

View File

@@ -189,8 +189,6 @@ RiaGuiApplication::RiaGuiApplication( int& argc, char** argv )
//--------------------------------------------------------------------------------------------------
RiaGuiApplication::~RiaGuiApplication()
{
deleteMainPlotWindow();
deleteMainWindow();
}
//--------------------------------------------------------------------------------------------------
@@ -925,7 +923,7 @@ RiuMainWindow* RiaGuiApplication::getOrCreateAndShowMainWindow()
m_mainWindow->loadWinGeoAndDockToolBarLayout();
}
return m_mainWindow;
return m_mainWindow.get();
}
//--------------------------------------------------------------------------------------------------
@@ -933,7 +931,7 @@ RiuMainWindow* RiaGuiApplication::getOrCreateAndShowMainWindow()
//--------------------------------------------------------------------------------------------------
RiuMainWindow* RiaGuiApplication::mainWindow()
{
return m_mainWindow;
return m_mainWindow.get();
}
//--------------------------------------------------------------------------------------------------
@@ -947,7 +945,7 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateMainPlotWindow()
m_mainPlotWindow->initializeGuiNewProjectLoaded();
loadAndUpdatePlotData();
}
return m_mainPlotWindow;
return m_mainPlotWindow.get();
}
//--------------------------------------------------------------------------------------------------
@@ -962,7 +960,7 @@ void RiaGuiApplication::createMainWindow()
caf::CmdExecCommandManager::instance()->enableUndoCommandSystem( true );
}
m_mainWindow = new RiuMainWindow;
m_mainWindow = std::make_unique<RiuMainWindow>();
QString platform = cvf::System::is64Bit() ? "(64bit)" : "(32bit)";
m_mainWindow->setWindowTitle( "ResInsight " + platform );
m_mainWindow->setDefaultWindowSize();
@@ -972,18 +970,6 @@ void RiaGuiApplication::createMainWindow()
m_mainWindow->showWindow();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaGuiApplication::deleteMainWindow()
{
if ( m_mainWindow )
{
delete m_mainWindow;
m_mainWindow = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -996,26 +982,13 @@ void RiaGuiApplication::createMainPlotWindow()
caf::CmdExecCommandManager::instance()->enableUndoCommandSystem( true );
}
m_mainPlotWindow = new RiuPlotMainWindow;
m_mainPlotWindow = std::make_unique<RiuPlotMainWindow>();
m_mainPlotWindow->setWindowTitle( "Plots - ResInsight" );
m_mainPlotWindow->setDefaultWindowSize();
m_mainPlotWindow->loadWinGeoAndDockToolBarLayout();
m_mainPlotWindow->hideAllDockWidgets();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaGuiApplication::deleteMainPlotWindow()
{
if ( m_mainPlotWindow )
{
m_mainPlotWindow->setParent( nullptr );
delete m_mainPlotWindow;
m_mainPlotWindow = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1052,7 +1025,7 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
m_mainPlotWindow->restoreDockWidgetVisibilities();
}
return m_mainPlotWindow;
return m_mainPlotWindow.get();
}
//--------------------------------------------------------------------------------------------------
@@ -1060,7 +1033,7 @@ RiuPlotMainWindow* RiaGuiApplication::getOrCreateAndShowMainPlotWindow()
//--------------------------------------------------------------------------------------------------
RiuPlotMainWindow* RiaGuiApplication::mainPlotWindow()
{
return m_mainPlotWindow;
return m_mainPlotWindow.get();
}
//--------------------------------------------------------------------------------------------------
@@ -1069,9 +1042,9 @@ RiuPlotMainWindow* RiaGuiApplication::mainPlotWindow()
RiuMainWindowBase* RiaGuiApplication::mainWindowByID( int mainWindowID )
{
if ( mainWindowID == 0 )
return m_mainWindow;
return m_mainWindow.get();
else if ( mainWindowID == 1 )
return m_mainPlotWindow;
return m_mainPlotWindow.get();
else
return nullptr;
}
@@ -1478,7 +1451,7 @@ void RiaGuiApplication::applyGuiPreferences( const RiaPreferences*
}
QMessageBox::StandardButton reply;
reply = QMessageBox::question( m_mainWindow,
reply = QMessageBox::question( m_mainWindow.get(),
QString( "Apply %1 to Existing Views or Plots?" ).arg( listString ),
QString( "You have changed default %1 and have existing views or plots with "
"different settings.\n" )

View File

@@ -155,9 +155,7 @@ private:
void setWindowCaptionFromAppState();
void createMainWindow();
void deleteMainWindow();
void createMainPlotWindow();
void deleteMainPlotWindow();
void storeTreeViewState();
@@ -168,8 +166,8 @@ private slots:
void onLastWindowClosed();
private:
QPointer<RiuMainWindow> m_mainWindow;
QPointer<RiuPlotMainWindow> m_mainPlotWindow;
std::unique_ptr<RiuMainWindow> m_mainWindow;
std::unique_ptr<RiuPlotMainWindow> m_mainPlotWindow;
std::unique_ptr<RiuRecentFileActionProvider> m_recentFileActionProvider;

View File

@@ -69,6 +69,8 @@ const QString reportFileName = "ResInsightRegressionTestReport.html";
const QString commandFileFilter = "commandfile-*";
}; // namespace RegTestNames
RiaRegressionTestRunner* RiaRegressionTestRunner::sm_singleton = nullptr;
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -95,8 +97,25 @@ RiaRegressionTestRunner::RiaRegressionTestRunner()
//--------------------------------------------------------------------------------------------------
RiaRegressionTestRunner* RiaRegressionTestRunner::instance()
{
static RiaRegressionTestRunner* singleton = new RiaRegressionTestRunner;
return singleton;
CAF_ASSERT( sm_singleton );
return sm_singleton;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaRegressionTestRunner::createSingleton()
{
if ( !sm_singleton ) sm_singleton = new RiaRegressionTestRunner;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiaRegressionTestRunner::deleteSingleton()
{
if ( sm_singleton ) delete sm_singleton;
sm_singleton = nullptr;
}
//--------------------------------------------------------------------------------------------------

View File

@@ -34,6 +34,9 @@ class RiaRegressionTestRunner
public:
static RiaRegressionTestRunner* instance();
static void createSingleton();
static void deleteSingleton();
void executeRegressionTests( const QString& regressionTestPath, const QStringList& testFilter );
void executeRegressionTests();
@@ -73,4 +76,6 @@ private:
bool m_appendAllTestsAfterLastItemInFilter;
bool m_runningRegressionTests;
RiaRegressionTest m_regressionTestSettings;
static RiaRegressionTestRunner* sm_singleton;
};