X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fsignal.cpp;h=73563b6e815d1d6b7d3c8fd6ca957a4120ca8cca;hb=26a8dbeae14c685c6aef1aad3aa75c6f1a75e458;hp=96c44d831d225cec9c06613c2500e779a8495558;hpb=895fdb9568cda40898e5bb646061c14a41dc0124;p=r2c2.git diff --git a/source/libr2c2/signal.cpp b/source/libr2c2/signal.cpp index 96c44d8..73563b6 100644 --- a/source/libr2c2/signal.cpp +++ b/source/libr2c2/signal.cpp @@ -28,6 +28,8 @@ Signal::Signal(Layout &l, const SignalType &t): Signal::~Signal() { + if(layout.has_driver() && address) + layout.get_driver().remove_sensor(address); layout.remove(*this); } @@ -41,10 +43,13 @@ Signal *Signal::clone(Layout *to_layout) const void Signal::set_address(unsigned a) { + Driver *driver = (layout.has_driver() ? &layout.get_driver() : 0); + + if(driver && address) + driver->remove_signal(address); address = a; - - if(layout.has_driver() && address) - layout.get_driver().add_signal(address, type); + if(driver && address) + driver->add_signal(address, type); } void Signal::set_position(const Vector &p)