X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fsigsession.cpp;h=84c75896d42d01f60ee8e0cd1ef2e04b2d28d9f4;hb=51cf49fe312f92cccde3e861d357e4b459976c0d;hp=87ba9afa5d484eace490524d5d9247a0ab5061ef;hpb=2b81ae4682ade4109ffa442794de36ceb32045eb;p=pulseview.git diff --git a/pv/sigsession.cpp b/pv/sigsession.cpp index 87ba9afa..84c75896 100644 --- a/pv/sigsession.cpp +++ b/pv/sigsession.cpp @@ -137,22 +137,30 @@ void Session::set_device(shared_ptr device) if (session_device) session_ = session_device->parent(); - device_ = device; decode_traces_.clear(); if (device) { if (!session_device) { session_ = device_manager_.context()->create_session(); - device->open(); + + try { + device->open(); + } catch(const sigrok::Error &e) { + throw QString(e.what()); + } + session_->add_device(device); } + + device_ = device; session_->add_datafeed_callback([=] (shared_ptr device, shared_ptr packet) { data_feed_in(device, packet); }); update_signals(device); - } + } else + device_ = nullptr; device_selected(); }