X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fprop%2Fbinding%2Fdecoderoptions.cpp;fp=pv%2Fprop%2Fbinding%2Fdecoderoptions.cpp;h=a01d722f431f2a47feb2e258f73f48e25baa4ee2;hp=c5278c75fbb82583ba7082e4d4dc04ef4bf502f6;hb=e8d009288de28cb194bc7964f96677c2baf900c9;hpb=87b79835014a386fb51b52bc993dbb693bd27197 diff --git a/pv/prop/binding/decoderoptions.cpp b/pv/prop/binding/decoderoptions.cpp index c5278c75..a01d722f 100644 --- a/pv/prop/binding/decoderoptions.cpp +++ b/pv/prop/binding/decoderoptions.cpp @@ -63,7 +63,7 @@ DecoderOptions::DecoderOptions( const Property::Getter get = [&, opt]() { return getter(opt->id); }; - const Property::Setter set = [&, opt](GVariant *value) { + const Property::Setter set = [&, opt](Glib::VariantBase value) { setter(opt->id, value); }; shared_ptr prop; @@ -90,17 +90,16 @@ shared_ptr DecoderOptions::bind_enum( const QString &name, const srd_decoder_option *option, Property::Getter getter, Property::Setter setter) { - vector< pair > values; + vector< pair > values; for (GSList *l = option->values; l; l = l->next) { - GVariant *const var = (GVariant*)l->data; - assert(var); + Glib::VariantBase var = Glib::VariantBase((GVariant*)l->data, true); values.push_back(make_pair(var, print_gvariant(var))); } return shared_ptr(new Enum(name, values, getter, setter)); } -GVariant* DecoderOptions::getter(const char *id) +Glib::VariantBase DecoderOptions::getter(const char *id) { GVariant *val = NULL; @@ -129,15 +128,15 @@ GVariant* DecoderOptions::getter(const char *id) } if (val) - g_variant_ref(val); - - return val; + return Glib::VariantBase(val, true); + else + return Glib::VariantBase(); } -void DecoderOptions::setter(const char *id, GVariant *value) +void DecoderOptions::setter(const char *id, Glib::VariantBase value) { assert(_decoder); - _decoder->set_option(id, value); + _decoder->set_option(id, value.gobj()); assert(_decoder_stack); _decoder_stack->begin_decode();