From: Gerhard Sittig Date: Sun, 25 Jun 2017 18:11:39 +0000 (+0200) Subject: main window: Prefer the user specified device in new sessions X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=6e2a5b1d677a26a637465cd4d304e2bc52e14f36;p=pulseview.git main window: Prefer the user specified device in new sessions Prefer the device that was found with user provided scan options when a -d command line option was specified. Stick with the previous selection of "genuine" devices before demo otherwise (when nothing was found, or when -d was not specified). --- diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 8b11d082..119ce0a7 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -338,20 +338,26 @@ void MainWindow::add_default_session() shared_ptr session = add_session(); - map dev_info; - shared_ptr other_device, demo_device; - - // Use any available device that's not demo + // Check the list of available devices. Prefer the one that was + // found with user supplied scan specs (if applicable). Then try + // one of the auto detected devices that are not the demo device. + // Pick demo in the absence of "genuine" hardware devices. + shared_ptr user_device, other_device, demo_device; for (shared_ptr dev : device_manager_.devices()) { - if (dev->hardware_device()->driver()->name() == "demo") { + if (dev == device_manager_.user_spec_device()) { + user_device = dev; + } else if (dev->hardware_device()->driver()->name() == "demo") { demo_device = dev; } else { other_device = dev; } } - - // ...and if there isn't any, just use demo then - session->select_device(other_device ? other_device : demo_device); + if (user_device) + session->select_device(user_device); + else if (other_device) + session->select_device(other_device); + else + session->select_device(demo_device); } void MainWindow::save_sessions()