]> sigrok.org Git - pulseview.git/blobdiff - pv/sigsession.cpp
Moved SigSession::is_trigger_enabled into DevInst
[pulseview.git] / pv / sigsession.cpp
index aab5be7d23bcb5b4ba2ed85d777cb40c5f80c2f7..9af7df74e7a5f967023a20a62c4f6e68ed3d8c16 100644 (file)
@@ -80,9 +80,7 @@ SigSession::~SigSession()
        if (_sampling_thread.joinable())
                _sampling_thread.join();
 
-       shared_ptr<Device> device(dynamic_pointer_cast<Device>(_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<device::DevInst> dev_inst)
        // Ensure we are not capturing before setting the device
        stop_capture();
 
-       shared_ptr<Device> old_device(dynamic_pointer_cast<Device>(_dev_inst));
-       if (old_device)
-               _device_manager.release_device(old_device);
+       if (_dev_inst)
+               _dev_inst->release();
 
-       shared_ptr<Device> new_device(dynamic_pointer_cast<Device>(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<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>();
@@ -482,20 +479,6 @@ void SigSession::update_signals(shared_ptr<device::DevInst> dev_inst)
        signals_changed();
 }
 
-bool SigSession::is_trigger_enabled() const
-{
-       assert(_dev_inst);
-       assert(_dev_inst->dev_inst());
-       for (const GSList *l = _dev_inst->dev_inst()->probes; l; l = l->next) {
-               const sr_probe *const p = (const sr_probe *)l->data;
-               assert(p);
-               if (p->trigger && p->trigger[0] != '\0')
-                       return true;
-       }
-
-       return false;
-}
-
 shared_ptr<view::Signal> SigSession::signal_from_probe(
        const sr_probe *probe) const
 {
@@ -599,7 +582,8 @@ void SigSession::sample_thread_proc(shared_ptr<device::DevInst> dev_inst,
                return;
        }
 
-       set_capture_state(is_trigger_enabled() ? AwaitingTrigger : Running);
+       set_capture_state(dev_inst->is_trigger_enabled() ?
+               AwaitingTrigger : Running);
 
        sr_session_run();
        sr_session_destroy();