SigSession::~SigSession()
{
+ using pv::device::Device;
+
stop_capture();
if (_sampling_thread.joinable())
_sampling_thread.join();
- if (_dev_inst)
- _device_manager.release_device(_dev_inst);
+ _dev_inst->release();
// TODO: This should not be necessary
_session = NULL;
void SigSession::set_device(shared_ptr<device::DevInst> dev_inst)
{
+ using pv::device::Device;
+
// Ensure we are not capturing before setting the device
stop_capture();
if (_dev_inst)
- _device_manager.release_device(_dev_inst);
+ _dev_inst->release();
+
if (dev_inst)
- _device_manager.use_device(dev_inst, this);
+ dev_inst->use(this);
+
_dev_inst = dev_inst;
update_signals(dev_inst);
}
-void SigSession::release_device(shared_ptr<device::DevInst> dev_inst)
+void SigSession::release_device(device::DevInst *dev_inst)
{
(void)dev_inst;
+ assert(_dev_inst.get() == dev_inst);
assert(_capture_state == Stopped);
_dev_inst = shared_ptr<device::DevInst>();