X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fbinding%2Fdevice.cpp;h=df83f082e355d1c1ecc3c106d4055075cd9123b4;hp=401644fd0672fa616c5c21586f619590e8b1cff1;hb=30677c1392b54604b01558cf29b44572731659fc;hpb=9a267f8dec48c9a28472c1a3bb146c624819e98b diff --git a/pv/binding/device.cpp b/pv/binding/device.cpp index 401644fd..df83f082 100644 --- a/pv/binding/device.cpp +++ b/pv/binding/device.cpp @@ -32,7 +32,6 @@ using boost::optional; using std::function; -using std::make_pair; using std::pair; using std::set; using std::shared_ptr; @@ -69,7 +68,7 @@ Device::Device(shared_ptr configurable) : string name_str; try { name_str = key->description(); - } catch (Error e) { + } catch (Error& e) { name_str = key->name(); } @@ -89,8 +88,7 @@ Device::Device(shared_ptr configurable) : break; case SR_CONF_CAPTURE_RATIO: - bind_int(name, "", "%", pair(0, 100), - get, set); + bind_int(name, "", "%", pair(0, 100), get, set); break; case SR_CONF_PATTERN_MODE: @@ -147,20 +145,26 @@ void Device::bind_enum(const QString &name, const QString &desc, Property::Getter getter, Property::Setter setter, function printer) { - Glib::VariantBase gvar; - vector< pair > values; - assert(configurable_); if (!capabilities.count(Capability::LIST)) return; - Glib::VariantIter iter(configurable_->config_list(key)); - while ((iter.next_value(gvar))) - values.push_back(make_pair(gvar, printer(gvar))); + try { + Glib::VariantContainerBase gvar = configurable_->config_list(key); + Glib::VariantIter iter(gvar); + + vector< pair > values; + while ((iter.next_value(gvar))) + values.emplace_back(gvar, printer(gvar)); + + properties_.push_back(shared_ptr(new Enum(name, desc, values, + getter, setter))); - properties_.push_back(shared_ptr(new Enum(name, desc, values, - getter, setter))); + } catch (sigrok::Error& e) { + qDebug() << "Error: Listing device key" << name << "failed!"; + return; + } } void Device::bind_int(const QString &name, const QString &desc, QString suffix,