]> sigrok.org Git - pulseview.git/blobdiff - pv/devices/hardwaredevice.cpp
Fix #602 by keeping track of device state internally
[pulseview.git] / pv / devices / hardwaredevice.cpp
index 6374dafe6e03aaddb219a05c1fa4c3a21ab71dd5..953864d589429fb9fb1c20e05d106de5132f55f9 100644 (file)
@@ -43,12 +43,15 @@ namespace devices {
 
 HardwareDevice::HardwareDevice(const std::shared_ptr<sigrok::Context> &context,
        std::shared_ptr<sigrok::HardwareDevice> device) :
-       context_(context) {
+       context_(context),
+       device_open_(false) {
        device_ = device;
 }
 
 HardwareDevice::~HardwareDevice() {
-       device_->close();
+       if (device_open_)
+               device_->close();
+
        if (session_)
                session_->remove_devices();
 }
@@ -104,6 +107,8 @@ void HardwareDevice::create() {
                 throw QString(e.what());
         }
 
+        device_open_ = true;
+
         // Set up the session
         session_ = context_->create_session();
         session_->add_device(device_);