]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/sensor.cpp
Remove things from the driver when no longer used
[r2c2.git] / source / libr2c2 / sensor.cpp
index c31c795f12986e32fbd4f23e95c885e03d1aff2f..618a06b7b609c6ac8a930bc62c197bb4ac2db768 100644 (file)
@@ -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)