- if (_sdi)
- _device_manager.release_device(_sdi);
- if (sdi)
- _device_manager.use_device(sdi, this);
- _sdi = sdi;
- update_signals(sdi);
+ shared_ptr<Device> old_device(dynamic_pointer_cast<Device>(_dev_inst));
+ if (old_device)
+ _device_manager.release_device(old_device);
+
+ shared_ptr<Device> new_device(dynamic_pointer_cast<Device>(dev_inst));
+ if (new_device)
+ _device_manager.use_device(new_device, this);
+
+ _dev_inst = dev_inst;
+ update_signals(dev_inst);