From 1649d27d0f67167cd8d03a268298c3a0d4d05c40 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Wed, 16 Sep 2020 09:06:21 +0200 Subject: [PATCH] Remove superfluous Signal::disconnect() calls --- .../AnalysisPlots/RimAnalysisPlot.cpp | 16 ---------------- .../AnalysisPlots/RimAnalysisPlot.h | 1 - .../RimPlotDataFilterCollection.cpp | 2 -- .../RimAbstractCorrelationPlot.cpp | 16 ---------------- .../RimAbstractCorrelationPlot.h | 1 - .../RimWellLogExtractionCurve.cpp | 14 -------------- .../RimWellLogExtractionCurve.h | 1 - .../ProjectDataModel/RimWellLogTrack.cpp | 12 ------------ .../ProjectDataModel/RimWellLogTrack.h | 1 - .../Summary/RimSummaryCaseCollection.cpp | 1 - .../Summary/RimSummaryCaseMainCollection.cpp | 2 -- .../cafPdmCore/cafSignal.cpp | 12 ++++++++++-- .../cafProjectDataModel/cafPdmCore/cafSignal.h | 18 +++++++++++++----- 13 files changed, 23 insertions(+), 74 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp index d63d0bfda8..df4b91b6c6 100644 --- a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp +++ b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp @@ -202,7 +202,6 @@ RimPlotDataFilterCollection* RimAnalysisPlot::plotDataFilterCollection() const //-------------------------------------------------------------------------------------------------- void RimAnalysisPlot::setCurveDefinitions( const std::vector& curveDefinitions ) { - disconnectAllCaseSignals(); m_analysisPlotDataSelection.deleteAllChildObjects(); for ( auto curveDef : curveDefinitions ) { @@ -460,7 +459,6 @@ void RimAnalysisPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedField, { std::vector summaryVectorDefinitions = dlg.curveSelection(); - disconnectAllCaseSignals(); m_analysisPlotDataSelection.deleteAllChildObjects(); for ( const RiaSummaryCurveDefinition& vectorDef : summaryVectorDefinitions ) { @@ -1816,17 +1814,3 @@ void RimAnalysisPlot::connectAllCaseSignals() } } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAnalysisPlot::disconnectAllCaseSignals() -{ - for ( auto dataEntry : m_analysisPlotDataSelection ) - { - if ( dataEntry->ensemble() ) - { - dataEntry->ensemble()->caseRemoved.disconnect( this ); - } - } -} diff --git a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h index 512c69d500..116aefb8bd 100644 --- a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h +++ b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h @@ -181,7 +181,6 @@ private: private: void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase ); void connectAllCaseSignals(); - void disconnectAllCaseSignals(); private: std::unique_ptr m_analyserOfSelectedCurveDefs; diff --git a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterCollection.cpp b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterCollection.cpp index 4fc41aead9..7b7fdedb01 100644 --- a/ApplicationCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterCollection.cpp +++ b/ApplicationCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterCollection.cpp @@ -56,8 +56,6 @@ RimPlotDataFilterItem* RimPlotDataFilterCollection::addFilter() //-------------------------------------------------------------------------------------------------- void RimPlotDataFilterCollection::removeFilter( RimPlotDataFilterItem* filter ) { - filter->filterChanged.disconnect( this ); - m_filters.removeChildObject( filter ); delete filter; diff --git a/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp b/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp index 861413c9e2..0c46d7511e 100644 --- a/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp +++ b/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp @@ -76,7 +76,6 @@ RimAbstractCorrelationPlot::~RimAbstractCorrelationPlot() //-------------------------------------------------------------------------------------------------- void RimAbstractCorrelationPlot::setCurveDefinitions( const std::vector& curveDefinitions ) { - disconnectAllCaseSignals(); m_analysisPlotDataSelection.deleteAllChildObjects(); for ( auto curveDef : curveDefinitions ) { @@ -127,7 +126,6 @@ void RimAbstractCorrelationPlot::fieldChangedByUi( const caf::PdmFieldHandle* ch if ( !curveSelection.empty() ) { std::vector summaryVectorDefinitions = dlg.curveSelection(); - disconnectAllCaseSignals(); m_analysisPlotDataSelection.deleteAllChildObjects(); for ( const RiaSummaryCurveDefinition& vectorDef : summaryVectorDefinitions ) { @@ -613,17 +611,3 @@ void RimAbstractCorrelationPlot::connectAllCaseSignals() } } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAbstractCorrelationPlot::disconnectAllCaseSignals() -{ - for ( auto dataEntry : m_analysisPlotDataSelection ) - { - if ( dataEntry->ensemble() ) - { - dataEntry->ensemble()->caseRemoved.disconnect( this ); - } - } -} \ No newline at end of file diff --git a/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h b/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h index 0675e7a6c7..1627984a76 100644 --- a/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h +++ b/ApplicationCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h @@ -120,7 +120,6 @@ protected: private: void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase ); void connectAllCaseSignals(); - void disconnectAllCaseSignals(); protected: std::unique_ptr m_analyserOfSelectedCurveDefs; diff --git a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp index 4f67f21729..37b7e74a0e 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.cpp @@ -178,8 +178,6 @@ void RimWellLogExtractionCurve::setFromSimulationWellName( const QString& simWel //-------------------------------------------------------------------------------------------------- void RimWellLogExtractionCurve::setCase( RimCase* rimCase ) { - disconnectCaseSignals( m_case.value() ); - m_case = rimCase; connectCaseSignals( rimCase ); @@ -201,7 +199,6 @@ void RimWellLogExtractionCurve::setPropertiesFromView( Rim3dView* view ) { if ( view ) { - disconnectCaseSignals( m_case.value() ); m_case = view->ownerCase(); connectCaseSignals( m_case ); } @@ -1121,17 +1118,6 @@ void RimWellLogExtractionCurve::connectCaseSignals( RimCase* rimCase ) } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLogExtractionCurve::disconnectCaseSignals( RimCase* rimCase ) -{ - if ( rimCase != nullptr ) - { - rimCase->settingsChanged.disconnect( this ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.h b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.h index a9f0193a2c..e94e225321 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.h +++ b/ApplicationCode/ProjectDataModel/RimWellLogExtractionCurve.h @@ -98,7 +98,6 @@ protected: void onLoadDataAndUpdate( bool updateParentPlot ) override; void onCaseSettingsChanged( const caf::SignalEmitter* emitter ); void connectCaseSignals( RimCase* rimCase ); - void disconnectCaseSignals( RimCase* rimCase ); virtual void performDataExtraction( bool* isUsingPseudoLength ); void extractData( bool* isUsingPseudoLength, bool performDataSmoothing = false, double smoothingThreshold = -1.0 ); diff --git a/ApplicationCode/ProjectDataModel/RimWellLogTrack.cpp b/ApplicationCode/ProjectDataModel/RimWellLogTrack.cpp index b93d5d9c86..e0710c085c 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogTrack.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellLogTrack.cpp @@ -1112,7 +1112,6 @@ void RimWellLogTrack::removeCurve( RimWellLogCurve* curve ) { m_curves[index]->detachQwtCurve(); m_curves.removeChildObject( curve ); - disconnectCurveSignals( curve ); } } @@ -2045,17 +2044,6 @@ void RimWellLogTrack::connectCurveSignals( RimWellLogCurve* curve ) curve->stackingChanged.connect( this, &RimWellLogTrack::curveStackingChanged ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLogTrack::disconnectCurveSignals( RimWellLogCurve* curve ) -{ - curve->dataChanged.disconnect( this ); - curve->visibilityChanged.disconnect( this ); - curve->appearanceChanged.disconnect( this ); - curve->stackingChanged.disconnect( this ); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimWellLogTrack.h b/ApplicationCode/ProjectDataModel/RimWellLogTrack.h index d438facbda..4038063be2 100644 --- a/ApplicationCode/ProjectDataModel/RimWellLogTrack.h +++ b/ApplicationCode/ProjectDataModel/RimWellLogTrack.h @@ -299,7 +299,6 @@ private: const RigWellLogExtractor* extractor ) const; void connectCurveSignals( RimWellLogCurve* curve ); - void disconnectCurveSignals( RimWellLogCurve* curve ); private: QString m_xAxisTitle; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp index 5152159240..66988341d7 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseCollection.cpp @@ -230,7 +230,6 @@ void RimSummaryCaseCollection::removeCase( RimSummaryCase* summaryCase ) { size_t caseCountBeforeRemove = m_cases.size(); - summaryCase->nameChanged.disconnect( this ); m_cases.removeChildObject( summaryCase ); m_cachedSortedEnsembleParameters.clear(); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp index a35628170a..f09e5c4795 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp @@ -240,7 +240,6 @@ void RimSummaryCaseMainCollection::removeCase( RimSummaryCase* summaryCase ) } } - summaryCase->nameChanged.disconnect( this ); m_cases.removeChildObject( summaryCase ); for ( RimSummaryCaseCollection* summaryCaseCollection : m_caseCollections ) @@ -307,7 +306,6 @@ RimSummaryCaseCollection* //-------------------------------------------------------------------------------------------------- void RimSummaryCaseMainCollection::removeCaseCollection( RimSummaryCaseCollection* caseCollection ) { - caseCollection->caseNameChanged.disconnect( this ); m_caseCollections.removeChildObject( caseCollection ); } diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.cpp b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.cpp index 568139d977..3bd2431ab5 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.cpp +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.cpp @@ -51,6 +51,14 @@ SignalEmitter::~SignalEmitter() { } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void SignalEmitter::addEmittedSignal( AbstractSignal* signalToAdd ) const +{ + m_signals.push_back( signalToAdd ); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -85,7 +93,7 @@ std::list SignalObserver::observedSignals() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void SignalObserver::addSignal( AbstractSignal* signalToObserve ) const +void SignalObserver::addObservedSignal( AbstractSignal* signalToObserve ) const { m_signals.push_back( signalToObserve ); } @@ -93,7 +101,7 @@ void SignalObserver::addSignal( AbstractSignal* signalToObserve ) const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void SignalObserver::removeSignal( AbstractSignal* signalToRemove ) const +void SignalObserver::removeObservedSignal( AbstractSignal* signalToRemove ) const { m_signals.remove( signalToRemove ); } diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.h index d28135c468..60c2d9c136 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafSignal.h @@ -64,6 +64,8 @@ class SignalEmitter public: SignalEmitter(); virtual ~SignalEmitter(); + + void addEmittedSignal( AbstractSignal* signalToAdd ) const; std::list emittedSignals() const; private: @@ -80,8 +82,8 @@ public: SignalObserver(); virtual ~SignalObserver(); std::list observedSignals() const; - void addSignal( AbstractSignal* signalToAdd ) const; - void removeSignal( AbstractSignal* signalToRemove ) const; + void addObservedSignal( AbstractSignal* signalToAdd ) const; + void removeObservedSignal( AbstractSignal* signalToRemove ) const; private: void disconnectAllSignals(); @@ -107,11 +109,14 @@ public: Signal( const SignalEmitter* emitter ) : m_emitter( emitter ) { + m_emitter->addEmittedSignal( this ); } Signal( const Signal& rhs ) : m_emitter( rhs.m_emitter ) { + m_emitter->addEmittedSignal( this ); + for ( auto observerCallbackPair : rhs.m_observerCallbacks ) { connect( observerCallbackPair.first, observerCallbackPair.second.first ); @@ -121,10 +126,13 @@ public: Signal& operator=( const Signal& rhs ) { m_emitter = rhs.m_emitter; + m_emitter->addEmittedSignal( this ); + for ( auto observerCallbackPair : rhs.m_observerCallbacks ) { connect( observerCallbackPair.first, observerCallbackPair.second.first ); } + return *this; } @@ -132,7 +140,7 @@ public: { for ( auto observerCallbackPair : m_observerCallbacks ) { - observerCallbackPair.first->removeSignal( this ); + observerCallbackPair.first->removeObservedSignal( this ); } } @@ -152,7 +160,7 @@ public: static_assert( std::is_convertible::value, "Only classes that inherit SignalObserver can connect as an observer of a Signal." ); m_observerCallbacks[observer] = std::make_pair( callback, true ); - observer->addSignal( this ); + observer->addObservedSignal( this ); } // Disconnect an observer from the signal. Do this only when the relationship between the @@ -161,7 +169,7 @@ public: void disconnect( SignalObserver* observer ) override { m_observerCallbacks.erase( observer ); - observer->removeSignal( this ); + observer->removeObservedSignal( this ); } void send( Args... args )