@@ -174,6 +174,9 @@ void MediumCanvasVisualizer::initialize(int stage)
174174 networkNodeVisualization->addAnnotation (spectrogramFigure, spectrogramFigure->getPlotSize (), spectrogramPlacementHint, spectrogramPlacementPriority);
175175 spectrogramFigures[networkNode] = spectrogramFigure;
176176 }
177+ if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
178+ if (!networkNode->isSubscribed (IMobility::mobilityStateChangedSignal, this ))
179+ networkNode->subscribe (IMobility::mobilityStateChangedSignal, this );
177180 }
178181 }
179182 }
@@ -929,6 +932,8 @@ void MediumCanvasVisualizer::handleRadioAdded(const IRadio *radio)
929932 setSignalArrivalFigure (radio, signalArrivalFigure);
930933 }
931934 }
935+ if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
936+ networkNode->subscribe (IMobility::mobilityStateChangedSignal, this );
932937 }
933938}
934939
@@ -949,6 +954,8 @@ void MediumCanvasVisualizer::handleRadioRemoved(const IRadio *radio)
949954 auto networkNodeVisualization = networkNodeVisualizer->getNetworkNodeVisualization (networkNode);
950955 networkNodeVisualization->removeAnnotation (arrivalFigure);
951956 }
957+ if (displayPowerDensityMaps || displaySpectrums || displaySpectrograms)
958+ networkNode->unsubscribe (IMobility::mobilityStateChangedSignal, this );
952959 }
953960}
954961
@@ -1090,6 +1097,14 @@ void MediumCanvasVisualizer::handleSignalArrivalEnded(const IReception *receptio
10901097 }
10911098}
10921099
1100+ void MediumCanvasVisualizer::receiveSignal (cComponent *source, simsignal_t signal, cObject *object, cObject *details)
1101+ {
1102+ if (signal == IMobility::mobilityStateChangedSignal)
1103+ invalidDisplay = true ;
1104+ else
1105+ MediumVisualizerBase::receiveSignal (source, signal, object, details);
1106+ }
1107+
10931108#endif // WITH_RADIO
10941109
10951110} // namespace visualizer
0 commit comments