Remove superfluous Signal::disconnect() calls

This commit is contained in:
Gaute Lindkvist 2020-09-16 09:06:21 +02:00
parent c65157277a
commit 1649d27d0f
13 changed files with 23 additions and 74 deletions

View File

@ -202,7 +202,6 @@ RimPlotDataFilterCollection* RimAnalysisPlot::plotDataFilterCollection() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimAnalysisPlot::setCurveDefinitions( const std::vector<RiaSummaryCurveDefinition>& curveDefinitions ) void RimAnalysisPlot::setCurveDefinitions( const std::vector<RiaSummaryCurveDefinition>& curveDefinitions )
{ {
disconnectAllCaseSignals();
m_analysisPlotDataSelection.deleteAllChildObjects(); m_analysisPlotDataSelection.deleteAllChildObjects();
for ( auto curveDef : curveDefinitions ) for ( auto curveDef : curveDefinitions )
{ {
@ -460,7 +459,6 @@ void RimAnalysisPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
{ {
std::vector<RiaSummaryCurveDefinition> summaryVectorDefinitions = dlg.curveSelection(); std::vector<RiaSummaryCurveDefinition> summaryVectorDefinitions = dlg.curveSelection();
disconnectAllCaseSignals();
m_analysisPlotDataSelection.deleteAllChildObjects(); m_analysisPlotDataSelection.deleteAllChildObjects();
for ( const RiaSummaryCurveDefinition& vectorDef : summaryVectorDefinitions ) 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 );
}
}
}

View File

@ -181,7 +181,6 @@ private:
private: private:
void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase ); void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase );
void connectAllCaseSignals(); void connectAllCaseSignals();
void disconnectAllCaseSignals();
private: private:
std::unique_ptr<RiaSummaryCurveDefinitionAnalyser> m_analyserOfSelectedCurveDefs; std::unique_ptr<RiaSummaryCurveDefinitionAnalyser> m_analyserOfSelectedCurveDefs;

View File

@ -56,8 +56,6 @@ RimPlotDataFilterItem* RimPlotDataFilterCollection::addFilter()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimPlotDataFilterCollection::removeFilter( RimPlotDataFilterItem* filter ) void RimPlotDataFilterCollection::removeFilter( RimPlotDataFilterItem* filter )
{ {
filter->filterChanged.disconnect( this );
m_filters.removeChildObject( filter ); m_filters.removeChildObject( filter );
delete filter; delete filter;

View File

@ -76,7 +76,6 @@ RimAbstractCorrelationPlot::~RimAbstractCorrelationPlot()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimAbstractCorrelationPlot::setCurveDefinitions( const std::vector<RiaSummaryCurveDefinition>& curveDefinitions ) void RimAbstractCorrelationPlot::setCurveDefinitions( const std::vector<RiaSummaryCurveDefinition>& curveDefinitions )
{ {
disconnectAllCaseSignals();
m_analysisPlotDataSelection.deleteAllChildObjects(); m_analysisPlotDataSelection.deleteAllChildObjects();
for ( auto curveDef : curveDefinitions ) for ( auto curveDef : curveDefinitions )
{ {
@ -127,7 +126,6 @@ void RimAbstractCorrelationPlot::fieldChangedByUi( const caf::PdmFieldHandle* ch
if ( !curveSelection.empty() ) if ( !curveSelection.empty() )
{ {
std::vector<RiaSummaryCurveDefinition> summaryVectorDefinitions = dlg.curveSelection(); std::vector<RiaSummaryCurveDefinition> summaryVectorDefinitions = dlg.curveSelection();
disconnectAllCaseSignals();
m_analysisPlotDataSelection.deleteAllChildObjects(); m_analysisPlotDataSelection.deleteAllChildObjects();
for ( const RiaSummaryCurveDefinition& vectorDef : summaryVectorDefinitions ) 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 );
}
}
}

View File

@ -120,7 +120,6 @@ protected:
private: private:
void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase ); void onCaseRemoved( const SignalEmitter* emitter, RimSummaryCase* summaryCase );
void connectAllCaseSignals(); void connectAllCaseSignals();
void disconnectAllCaseSignals();
protected: protected:
std::unique_ptr<RiaSummaryCurveDefinitionAnalyser> m_analyserOfSelectedCurveDefs; std::unique_ptr<RiaSummaryCurveDefinitionAnalyser> m_analyserOfSelectedCurveDefs;

View File

@ -178,8 +178,6 @@ void RimWellLogExtractionCurve::setFromSimulationWellName( const QString& simWel
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimWellLogExtractionCurve::setCase( RimCase* rimCase ) void RimWellLogExtractionCurve::setCase( RimCase* rimCase )
{ {
disconnectCaseSignals( m_case.value() );
m_case = rimCase; m_case = rimCase;
connectCaseSignals( rimCase ); connectCaseSignals( rimCase );
@ -201,7 +199,6 @@ void RimWellLogExtractionCurve::setPropertiesFromView( Rim3dView* view )
{ {
if ( view ) if ( view )
{ {
disconnectCaseSignals( m_case.value() );
m_case = view->ownerCase(); m_case = view->ownerCase();
connectCaseSignals( m_case ); connectCaseSignals( m_case );
} }
@ -1121,17 +1118,6 @@ void RimWellLogExtractionCurve::connectCaseSignals( RimCase* rimCase )
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimWellLogExtractionCurve::disconnectCaseSignals( RimCase* rimCase )
{
if ( rimCase != nullptr )
{
rimCase->settingsChanged.disconnect( this );
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -98,7 +98,6 @@ protected:
void onLoadDataAndUpdate( bool updateParentPlot ) override; void onLoadDataAndUpdate( bool updateParentPlot ) override;
void onCaseSettingsChanged( const caf::SignalEmitter* emitter ); void onCaseSettingsChanged( const caf::SignalEmitter* emitter );
void connectCaseSignals( RimCase* rimCase ); void connectCaseSignals( RimCase* rimCase );
void disconnectCaseSignals( RimCase* rimCase );
virtual void performDataExtraction( bool* isUsingPseudoLength ); virtual void performDataExtraction( bool* isUsingPseudoLength );
void extractData( bool* isUsingPseudoLength, bool performDataSmoothing = false, double smoothingThreshold = -1.0 ); void extractData( bool* isUsingPseudoLength, bool performDataSmoothing = false, double smoothingThreshold = -1.0 );

View File

@ -1112,7 +1112,6 @@ void RimWellLogTrack::removeCurve( RimWellLogCurve* curve )
{ {
m_curves[index]->detachQwtCurve(); m_curves[index]->detachQwtCurve();
m_curves.removeChildObject( curve ); m_curves.removeChildObject( curve );
disconnectCurveSignals( curve );
} }
} }
@ -2045,17 +2044,6 @@ void RimWellLogTrack::connectCurveSignals( RimWellLogCurve* curve )
curve->stackingChanged.connect( this, &RimWellLogTrack::curveStackingChanged ); 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 );
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -299,7 +299,6 @@ private:
const RigWellLogExtractor* extractor ) const; const RigWellLogExtractor* extractor ) const;
void connectCurveSignals( RimWellLogCurve* curve ); void connectCurveSignals( RimWellLogCurve* curve );
void disconnectCurveSignals( RimWellLogCurve* curve );
private: private:
QString m_xAxisTitle; QString m_xAxisTitle;

View File

@ -230,7 +230,6 @@ void RimSummaryCaseCollection::removeCase( RimSummaryCase* summaryCase )
{ {
size_t caseCountBeforeRemove = m_cases.size(); size_t caseCountBeforeRemove = m_cases.size();
summaryCase->nameChanged.disconnect( this );
m_cases.removeChildObject( summaryCase ); m_cases.removeChildObject( summaryCase );
m_cachedSortedEnsembleParameters.clear(); m_cachedSortedEnsembleParameters.clear();

View File

@ -240,7 +240,6 @@ void RimSummaryCaseMainCollection::removeCase( RimSummaryCase* summaryCase )
} }
} }
summaryCase->nameChanged.disconnect( this );
m_cases.removeChildObject( summaryCase ); m_cases.removeChildObject( summaryCase );
for ( RimSummaryCaseCollection* summaryCaseCollection : m_caseCollections ) for ( RimSummaryCaseCollection* summaryCaseCollection : m_caseCollections )
@ -307,7 +306,6 @@ RimSummaryCaseCollection*
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryCaseMainCollection::removeCaseCollection( RimSummaryCaseCollection* caseCollection ) void RimSummaryCaseMainCollection::removeCaseCollection( RimSummaryCaseCollection* caseCollection )
{ {
caseCollection->caseNameChanged.disconnect( this );
m_caseCollections.removeChildObject( caseCollection ); m_caseCollections.removeChildObject( caseCollection );
} }

View File

@ -51,6 +51,14 @@ SignalEmitter::~SignalEmitter()
{ {
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void SignalEmitter::addEmittedSignal( AbstractSignal* signalToAdd ) const
{
m_signals.push_back( signalToAdd );
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -85,7 +93,7 @@ std::list<AbstractSignal*> SignalObserver::observedSignals() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void SignalObserver::addSignal( AbstractSignal* signalToObserve ) const void SignalObserver::addObservedSignal( AbstractSignal* signalToObserve ) const
{ {
m_signals.push_back( signalToObserve ); 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 ); m_signals.remove( signalToRemove );
} }

View File

@ -64,6 +64,8 @@ class SignalEmitter
public: public:
SignalEmitter(); SignalEmitter();
virtual ~SignalEmitter(); virtual ~SignalEmitter();
void addEmittedSignal( AbstractSignal* signalToAdd ) const;
std::list<AbstractSignal*> emittedSignals() const; std::list<AbstractSignal*> emittedSignals() const;
private: private:
@ -80,8 +82,8 @@ public:
SignalObserver(); SignalObserver();
virtual ~SignalObserver(); virtual ~SignalObserver();
std::list<AbstractSignal*> observedSignals() const; std::list<AbstractSignal*> observedSignals() const;
void addSignal( AbstractSignal* signalToAdd ) const; void addObservedSignal( AbstractSignal* signalToAdd ) const;
void removeSignal( AbstractSignal* signalToRemove ) const; void removeObservedSignal( AbstractSignal* signalToRemove ) const;
private: private:
void disconnectAllSignals(); void disconnectAllSignals();
@ -107,11 +109,14 @@ public:
Signal( const SignalEmitter* emitter ) Signal( const SignalEmitter* emitter )
: m_emitter( emitter ) : m_emitter( emitter )
{ {
m_emitter->addEmittedSignal( this );
} }
Signal( const Signal& rhs ) Signal( const Signal& rhs )
: m_emitter( rhs.m_emitter ) : m_emitter( rhs.m_emitter )
{ {
m_emitter->addEmittedSignal( this );
for ( auto observerCallbackPair : rhs.m_observerCallbacks ) for ( auto observerCallbackPair : rhs.m_observerCallbacks )
{ {
connect( observerCallbackPair.first, observerCallbackPair.second.first ); connect( observerCallbackPair.first, observerCallbackPair.second.first );
@ -121,10 +126,13 @@ public:
Signal& operator=( const Signal& rhs ) Signal& operator=( const Signal& rhs )
{ {
m_emitter = rhs.m_emitter; m_emitter = rhs.m_emitter;
m_emitter->addEmittedSignal( this );
for ( auto observerCallbackPair : rhs.m_observerCallbacks ) for ( auto observerCallbackPair : rhs.m_observerCallbacks )
{ {
connect( observerCallbackPair.first, observerCallbackPair.second.first ); connect( observerCallbackPair.first, observerCallbackPair.second.first );
} }
return *this; return *this;
} }
@ -132,7 +140,7 @@ public:
{ {
for ( auto observerCallbackPair : m_observerCallbacks ) for ( auto observerCallbackPair : m_observerCallbacks )
{ {
observerCallbackPair.first->removeSignal( this ); observerCallbackPair.first->removeObservedSignal( this );
} }
} }
@ -152,7 +160,7 @@ public:
static_assert( std::is_convertible<ClassType*, SignalObserver*>::value, static_assert( std::is_convertible<ClassType*, SignalObserver*>::value,
"Only classes that inherit SignalObserver can connect as an observer of a Signal." ); "Only classes that inherit SignalObserver can connect as an observer of a Signal." );
m_observerCallbacks[observer] = std::make_pair( callback, true ); 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 // Disconnect an observer from the signal. Do this only when the relationship between the
@ -161,7 +169,7 @@ public:
void disconnect( SignalObserver* observer ) override void disconnect( SignalObserver* observer ) override
{ {
m_observerCallbacks.erase( observer ); m_observerCallbacks.erase( observer );
observer->removeSignal( this ); observer->removeObservedSignal( this );
} }
void send( Args... args ) void send( Args... args )