From 72a5c6cfef70d94da80659208ecbd39263d7bcfc Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 21 Nov 2019 07:10:07 +0100 Subject: [PATCH] Merge pull request #5071 from OPM/memory-fixes Release of memory --- ApplicationCode/Application/RiaApplication.cpp | 3 +++ ApplicationCode/Application/RiaFontCache.cpp | 8 ++++++++ ApplicationCode/Application/RiaFontCache.h | 2 ++ .../SummaryPlotCommands/RicEditSummaryPlotFeature.cpp | 11 +++++++++-- .../RicSummaryCurveCreatorDialog.cpp | 9 ++++++--- .../RicSummaryCurveCreatorDialog.h | 4 +++- .../FileInterface/RifEclipseSummaryTools.cpp | 4 ++++ ApplicationCode/ProjectDataModel/RimProject.cpp | 8 +------- ApplicationCode/UserInterface/RiuQwtPlotCurve.cpp | 2 +- ApplicationCode/UserInterface/RiuQwtPlotCurve.h | 10 ++++++---- 10 files changed, 43 insertions(+), 18 deletions(-) diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index d32abca2ef..0958f875e3 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -153,6 +153,9 @@ RiaApplication::RiaApplication() RiaApplication::~RiaApplication() { delete m_preferences; + delete m_project; + + RiaFontCache::clear(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Application/RiaFontCache.cpp b/ApplicationCode/Application/RiaFontCache.cpp index bcf15128cb..3ffa7ec491 100644 --- a/ApplicationCode/Application/RiaFontCache.cpp +++ b/ApplicationCode/Application/RiaFontCache.cpp @@ -129,3 +129,11 @@ RiaFontCache::FontSize RiaFontCache::fontSizeEnumFromPointSize( int pointSize ) } return closestEnumValue; } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiaFontCache::clear() +{ + ms_fonts.clear(); +} diff --git a/ApplicationCode/Application/RiaFontCache.h b/ApplicationCode/Application/RiaFontCache.h index 27e1ac02cb..59b28cdd56 100644 --- a/ApplicationCode/Application/RiaFontCache.h +++ b/ApplicationCode/Application/RiaFontCache.h @@ -56,6 +56,8 @@ public: static int pointSizeFromFontSizeEnum( FontSize fontSize ); static FontSize fontSizeEnumFromPointSize( int pointSize ); + static void clear(); + private: static std::map> ms_fonts; }; diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryPlotFeature.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryPlotFeature.cpp index ae7d3f30ab..03f46c0eee 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryPlotFeature.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryPlotFeature.cpp @@ -33,6 +33,8 @@ #include +#include + CAF_CMD_SOURCE_INIT( RicEditSummaryPlotFeature, "RicEditSummaryPlotFeature" ); //-------------------------------------------------------------------------------------------------- @@ -60,9 +62,14 @@ void RicEditSummaryPlotFeature::closeDialogAndResetTargetPlot() //-------------------------------------------------------------------------------------------------- RicSummaryCurveCreatorDialog* RicEditSummaryPlotFeature::curveCreatorDialog() { - static RicSummaryCurveCreatorDialog* singletonDialog = new RicSummaryCurveCreatorDialog( nullptr ); + static std::unique_ptr singletonDialog; - return singletonDialog; + if ( !singletonDialog ) + { + singletonDialog.reset( new RicSummaryCurveCreatorDialog( nullptr ) ); + } + + return singletonDialog.get(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp index 0f4b59a0ba..f7d8ca667a 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp @@ -36,7 +36,7 @@ RicSummaryCurveCreatorDialog::RicSummaryCurveCreatorDialog( QWidget* parent ) : QDialog( parent, RiuTools::defaultDialogFlags() ) { - m_curveCreatorSplitterUi = new RicSummaryCurveCreatorSplitterUi( this ); + m_curveCreatorSplitterUi.reset( new RicSummaryCurveCreatorSplitterUi( this ) ); QWidget* propertyWidget = m_curveCreatorSplitterUi->getOrCreateWidget( this ); @@ -46,7 +46,7 @@ RicSummaryCurveCreatorDialog::RicSummaryCurveCreatorDialog( QWidget* parent ) setWindowTitle( "Plot Editor" ); resize( 1200, 800 ); - connect( m_curveCreatorSplitterUi, SIGNAL( signalCloseButtonPressed() ), this, SLOT( accept() ) ); + connect( m_curveCreatorSplitterUi.get(), SIGNAL( signalCloseButtonPressed() ), this, SLOT( accept() ) ); connect( this, SIGNAL( finished( int ) ), this, SLOT( slotDialogFinished() ) ); } @@ -54,7 +54,10 @@ RicSummaryCurveCreatorDialog::RicSummaryCurveCreatorDialog( QWidget* parent ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicSummaryCurveCreatorDialog::~RicSummaryCurveCreatorDialog() {} +RicSummaryCurveCreatorDialog::~RicSummaryCurveCreatorDialog() +{ + m_curveCreatorSplitterUi->setPdmObject( nullptr ); +} //-------------------------------------------------------------------------------------------------- /// diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h index 1c154052f4..7573d1d015 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h @@ -20,6 +20,8 @@ #include +#include + namespace caf { class PdmObject; @@ -47,5 +49,5 @@ private slots: void slotDialogFinished(); private: - RicSummaryCurveCreatorSplitterUi* m_curveCreatorSplitterUi; + std::unique_ptr m_curveCreatorSplitterUi; }; diff --git a/ApplicationCode/FileInterface/RifEclipseSummaryTools.cpp b/ApplicationCode/FileInterface/RifEclipseSummaryTools.cpp index db10835285..4ed50f2a0c 100644 --- a/ApplicationCode/FileInterface/RifEclipseSummaryTools.cpp +++ b/ApplicationCode/FileInterface/RifEclipseSummaryTools.cpp @@ -65,6 +65,10 @@ void RifEclipseSummaryTools::findSummaryFiles( const QString& inputFile, QString std::string extention; if ( myExtention ) extention = myExtention; + free( myExtention ); + free( myBase ); + free( myPath ); + if ( path.isEmpty() || base.isEmpty() ) return; char* myHeaderFile = nullptr; diff --git a/ApplicationCode/ProjectDataModel/RimProject.cpp b/ApplicationCode/ProjectDataModel/RimProject.cpp index 74f6691fcb..2f2e2f5e97 100644 --- a/ApplicationCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationCode/ProjectDataModel/RimProject.cpp @@ -205,13 +205,7 @@ RimProject::RimProject( void ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RimProject::~RimProject( void ) -{ - close(); - - oilFields.deleteAllChildObjects(); - if ( scriptCollection() ) delete scriptCollection(); -} +RimProject::~RimProject( void ) {} //-------------------------------------------------------------------------------------------------- /// diff --git a/ApplicationCode/UserInterface/RiuQwtPlotCurve.cpp b/ApplicationCode/UserInterface/RiuQwtPlotCurve.cpp index b53ca9d2db..6656d8ef36 100644 --- a/ApplicationCode/UserInterface/RiuQwtPlotCurve.cpp +++ b/ApplicationCode/UserInterface/RiuQwtPlotCurve.cpp @@ -52,7 +52,7 @@ RiuQwtPlotCurve::RiuQwtPlotCurve( const QString& title ) m_symbolSkipPixelDistance = 10.0f; - m_errorBars = new QwtPlotIntervalCurve(); + m_errorBars = std::unique_ptr( new QwtPlotIntervalCurve() ); m_errorBars->setStyle( QwtPlotIntervalCurve::CurveStyle::NoCurve ); m_errorBars->setSymbol( new QwtIntervalSymbol( QwtIntervalSymbol::Bar ) ); m_errorBars->setItemAttribute( QwtPlotItem::Legend, false ); diff --git a/ApplicationCode/UserInterface/RiuQwtPlotCurve.h b/ApplicationCode/UserInterface/RiuQwtPlotCurve.h index 908462217c..d4006d20fd 100644 --- a/ApplicationCode/UserInterface/RiuQwtPlotCurve.h +++ b/ApplicationCode/UserInterface/RiuQwtPlotCurve.h @@ -23,6 +23,8 @@ #include "qwt_plot_intervalcurve.h" #include "qwt_symbol.h" +#include + class RiuErrorBarsQwtPlotCurve; //================================================================================================== @@ -150,10 +152,10 @@ private: std::vector> m_polyLineStartStopIndices; float m_symbolSkipPixelDistance; - bool m_showErrorBars; - QwtPlotIntervalCurve* m_errorBars; - QwtPlot* m_attachedToPlot; - bool m_blackAndWhiteLegendIcon; + bool m_showErrorBars; + std::unique_ptr m_errorBars; + QwtPlot* m_attachedToPlot; + bool m_blackAndWhiteLegendIcon; std::vector m_perPointLabels; };