X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=90fb2798abb7f5aa63e766c9973b0cc61c71fc5d;hp=aab5be7d23bcb5b4ba2ed85d777cb40c5f80c2f7;hb=996b7c9da9b5cb56413e829217e1e7d7d7d520da;hpb=85843b14c48affe67820ec8c9e357cd26e0ed943 diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index aab5be7d..90fb2798 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -80,9 +80,7 @@ SigSession::~SigSession() if (_sampling_thread.joinable()) _sampling_thread.join(); - shared_ptr device(dynamic_pointer_cast(_dev_inst)); - if (device) - _device_manager.release_device(device); + _dev_inst->release(); // TODO: This should not be necessary _session = NULL; @@ -100,21 +98,20 @@ void SigSession::set_device(shared_ptr dev_inst) // Ensure we are not capturing before setting the device stop_capture(); - shared_ptr old_device(dynamic_pointer_cast(_dev_inst)); - if (old_device) - _device_manager.release_device(old_device); + if (_dev_inst) + _dev_inst->release(); - shared_ptr new_device(dynamic_pointer_cast(dev_inst)); - if (new_device) - _device_manager.use_device(new_device, this); + if (dev_inst) + dev_inst->use(this); _dev_inst = dev_inst; update_signals(dev_inst); } -void SigSession::release_device(shared_ptr 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();