X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevicemanager.cpp;h=5090b480e3d49adc41bc4e861102ce9a6e6bbb8b;hp=ca8f66bee5316e6116d4fb38afcbdd93ca78a24d;hb=97378470ded88af84edaa0f1063d10d834475665;hpb=8d054b91e39afd8e3b04cdde8e37f2c94aa2e608 diff --git a/pv/devicemanager.cpp b/pv/devicemanager.cpp index ca8f66b..5090b48 100644 --- a/pv/devicemanager.cpp +++ b/pv/devicemanager.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -84,7 +85,7 @@ DeviceManager::DeviceManager(shared_ptr context, * Scan for devices. No specific options apply here, this is * best effort auto detection. */ - for (auto entry : context->drivers()) { + for (auto& entry : context->drivers()) { if (!do_scan) break; @@ -187,7 +188,7 @@ DeviceManager::drive_scan_options(vector user_spec, { map result; - for (auto entry : user_spec) { + for (auto& entry : user_spec) { /* * Split key=value specs. Accept entries without separator * (for simplified boolean specifications). @@ -252,21 +253,27 @@ DeviceManager::driver_scan( devices_.remove_if([&](shared_ptr device) { return device->hardware_device()->driver() == driver; }); - // Do the scan - auto devices = driver->scan(drvopts); + try { + // Do the scan + auto devices = driver->scan(drvopts); - // Add the scanned devices to the main list, set display names and sort. - for (shared_ptr device : devices) { - const shared_ptr d( - new devices::HardwareDevice(context_, device)); - driver_devices.push_back(d); - } + // Add the scanned devices to the main list, set display names and sort. + for (shared_ptr& device : devices) { + const shared_ptr d( + new devices::HardwareDevice(context_, device)); + driver_devices.push_back(d); + } - devices_.insert(devices_.end(), driver_devices.begin(), - driver_devices.end()); - devices_.sort(bind(&DeviceManager::compare_devices, this, _1, _2)); - driver_devices.sort(bind( - &DeviceManager::compare_devices, this, _1, _2)); + devices_.insert(devices_.end(), driver_devices.begin(), + driver_devices.end()); + devices_.sort(bind(&DeviceManager::compare_devices, this, _1, _2)); + driver_devices.sort(bind( + &DeviceManager::compare_devices, this, _1, _2)); + + } catch (const sigrok::Error &e) { + qWarning() << QApplication::tr("Error when scanning device driver '%1': %2"). + arg(QString::fromStdString(driver->name()), e.what()); + } return driver_devices; }