]> sigrok.org Git - pulseview.git/blobdiff - pv/device/devinst.cpp
Moved DeviceManager::use_device and release_device into DevInst
[pulseview.git] / pv / device / devinst.cpp
index 5fe2951756e4b602fca4da0fa4b379f3cfc19ef0..adbf8968595e80cc66441dcd48985fc18d25df5b 100644 (file)
 
 #include "devinst.h"
 
+#include <pv/sigsession.h>
+
 namespace pv {
 namespace device {
 
 DevInst::DevInst(sr_dev_inst *sdi) :
-       _sdi(sdi)
+       _sdi(sdi),
+       _owner(NULL)
 {
        assert(_sdi);
 }
@@ -40,6 +43,28 @@ sr_dev_inst* DevInst::dev_inst() const
        return _sdi;
 }
 
+void DevInst::use(SigSession *owner)
+{
+       assert(owner);
+       assert(!_owner);
+       _owner = owner;
+       sr_dev_open(_sdi);
+}
+
+void DevInst::release()
+{
+       if (_owner) {
+               _owner->release_device(this);
+               _owner = NULL;
+               sr_dev_close(_sdi);
+       }
+}
+
+SigSession* DevInst::owner() const
+{
+       return _owner;
+}
+
 GVariant* DevInst::get_config(const sr_probe_group *group, int key)
 {
        GVariant *data = NULL;