#2873 New AsyncPointerVectorDeleter-classes to handle memory deletion in separate thread.

This commit is contained in:
Gaute Lindkvist
2018-05-22 09:36:31 +02:00
parent 22c71b60dd
commit 743993718c
10 changed files with 174 additions and 10 deletions

View File

@@ -30,6 +30,7 @@
#include "RiuPlotMainWindow.h"
#include "cafAsyncObjectDeleter.h"
#include "cafSelectionManager.h"
#include "cvfAssert.h"
@@ -50,7 +51,7 @@ void RicCloseSummaryCaseFeature::setupActionLook(QAction* actionToSetup)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicCloseSummaryCaseFeature::deleteSummaryCases(const std::vector<RimSummaryCase*>& cases)
void RicCloseSummaryCaseFeature::deleteSummaryCases(std::vector<RimSummaryCase*>& cases)
{
RimSummaryPlotCollection* summaryPlotColl = RiaSummaryTools::summaryPlotCollection();
@@ -66,13 +67,13 @@ void RicCloseSummaryCaseFeature::deleteSummaryCases(const std::vector<RimSummary
summaryCase->firstAncestorOrThisOfTypeAsserted(summaryCaseMainCollection);
summaryCaseMainCollection->removeCase(summaryCase);
delete summaryCase;
summaryCaseMainCollection->updateAllRequiredEditors();
}
RiuPlotMainWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();
mainPlotWindow->updateSummaryPlotToolBar();
caf::AsyncRawPointerVectorDeleter<RimSummaryCase> summaryCaseDeleter(std::move(cases));
}
//--------------------------------------------------------------------------------------------------

View File

@@ -32,7 +32,7 @@ class RicCloseSummaryCaseFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
public:
static void deleteSummaryCases(const std::vector<RimSummaryCase*>& cases);
static void deleteSummaryCases(std::vector<RimSummaryCase*>& cases);
protected:
// Overrides

View File

@@ -75,7 +75,8 @@ void RicCloseSummaryCaseInCollectionFeature::onActionTriggered(bool isChecked)
if (summaryCaseMainCollections.size() > 0)
{
RicCloseSummaryCaseFeature::deleteSummaryCases(summaryCaseMainCollections[0]->allSummaryCases());
std::vector<RimSummaryCase*> allSummaryCases = summaryCaseMainCollections[0]->allSummaryCases();
RicCloseSummaryCaseFeature::deleteSummaryCases(allSummaryCases);
}
std::vector<RimSummaryCaseCollection*> summaryCaseCollections;
@@ -83,7 +84,8 @@ void RicCloseSummaryCaseInCollectionFeature::onActionTriggered(bool isChecked)
for (RimSummaryCaseCollection* summaryCaseCollection : summaryCaseCollections)
{
RicCloseSummaryCaseFeature::deleteSummaryCases(summaryCaseCollection->allSummaryCases());
std::vector<RimSummaryCase*> collectionSummaryCases = summaryCaseCollection->allSummaryCases();
RicCloseSummaryCaseFeature::deleteSummaryCases(collectionSummaryCases);
}
RiuPlotMainWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();

View File

@@ -53,7 +53,7 @@ RimSummaryCaseCollection::RimSummaryCaseCollection()
//--------------------------------------------------------------------------------------------------
RimSummaryCaseCollection::~RimSummaryCaseCollection()
{
m_cases.deleteAllChildObjects();
m_cases.deleteAllChildObjectsAsync();
updateReferringCurveSets();
}

View File

@@ -75,8 +75,8 @@ RimSummaryCaseMainCollection::RimSummaryCaseMainCollection()
//--------------------------------------------------------------------------------------------------
RimSummaryCaseMainCollection::~RimSummaryCaseMainCollection()
{
m_cases.deleteAllChildObjects();
m_caseCollections.deleteAllChildObjects();
m_cases.deleteAllChildObjectsAsync();
m_caseCollections.deleteAllChildObjectsAsync();
}
//--------------------------------------------------------------------------------------------------