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);
// Begin the session
sampling_thread_ = std::thread(
- &Session::sample_thread_proc, this, device_,
- error_handler);
+ &Session::sample_thread_proc, this, error_handler);
}
void Session::stop_capture()
return shared_ptr<view::Signal>();
}
-void Session::sample_thread_proc(shared_ptr<devices::Device> device,
- function<void (const QString)> error_handler)
+void Session::sample_thread_proc(function<void (const QString)> error_handler)
{
- assert(device);
assert(error_handler);
if (!device_)