]> sigrok.org Git - pulseview.git/blobdiff - pv/sigsession.cpp
Moved DeviceManager::use_device and release_device into DevInst
[pulseview.git] / pv / sigsession.cpp
index 4469a3eef367071c44a545d3c3a1a8ae746742cc..90fb2798abb7f5aa63e766c9973b0cc61c71fc5d 100644 (file)
@@ -73,13 +73,14 @@ SigSession::SigSession(DeviceManager &device_manager) :
 
 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;
@@ -92,20 +93,25 @@ shared_ptr<device::DevInst> SigSession::get_device() const
 
 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>();