]> sigrok.org Git - pulseview.git/blobdiff - pv/session.cpp
Fix #805 by resetting selected device on failure
[pulseview.git] / pv / session.cpp
index 73dd339b60fea95259d6fddc7aace7ec9f3ad0e1..b8e98ece9a5dce42ce5e6e774e689bd34abed5a0 100644 (file)
@@ -161,7 +161,15 @@ void Session::set_device(shared_ptr<devices::Device> device)
        signals_changed();
 
        device_ = std::move(device);
-       device_->open();
+
+       try {
+               device_->open();
+       } catch (const QString &e) {
+               device_.reset();
+               device_selected();
+               throw;
+       }
+
        device_->session()->add_datafeed_callback([=]
                (shared_ptr<sigrok::Device> device, shared_ptr<Packet> packet) {
                        data_feed_in(device, packet);