X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=119ce0a791ba22a2aa1d6b1702a387fd6bef9caf;hp=8b11d0822d53c8960583e742117fcc76abdc52cd;hb=3083cda853bd12d73b741c3bc97b70f5d395a15a;hpb=5ea53b3c20d5cd80c096fb2f8d1334ae17fbce7b 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()