X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Flibr2c2%2Fsensor.cpp;fp=source%2Flibr2c2%2Fsensor.cpp;h=618a06b7b609c6ac8a930bc62c197bb4ac2db768;hb=ce2ff9a6e154f5b245cfb35114566489ab3e597c;hp=c31c795f12986e32fbd4f23e95c885e03d1aff2f;hpb=7fe7e3ec8f296d2f7fefeaf76f384362fcc27e64;p=r2c2.git diff --git a/source/libr2c2/sensor.cpp b/source/libr2c2/sensor.cpp index c31c795..618a06b 100644 --- a/source/libr2c2/sensor.cpp +++ b/source/libr2c2/sensor.cpp @@ -20,14 +20,19 @@ Sensor::Sensor(Layout &l): Sensor::~Sensor() { + if(layout.has_driver() && address) + layout.get_driver().remove_sensor(address); layout.remove(*this); } void Sensor::set_address(unsigned a) { + Driver *driver = (layout.has_driver() ? &layout.get_driver() : 0); + if(driver && address) + driver->remove_sensor(address); address = a; - if(layout.has_driver()) - layout.get_driver().add_sensor(address); + if(driver && address) + driver->add_sensor(address); } void Sensor::tick(const Time::TimeDelta &dt)