X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=52b625086d4830df551f5a302e61cb1d3db30b5f;hp=8b11d0822d53c8960583e742117fcc76abdc52cd;hb=561ba3ae052a93fe150a2161fcdc361144e68e4f;hpb=5ea53b3c20d5cd80c096fb2f8d1334ae17fbce7b diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 8b11d082..52b62508 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -53,7 +53,6 @@ using std::bind; using std::dynamic_pointer_cast; using std::make_shared; -using std::map; using std::placeholders::_1; using std::shared_ptr; using std::string; @@ -338,20 +337,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()