X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fwav.c;h=9dc5a1103e05386f27cc1468ca69b81b503b6092;hb=f817f05aaca16d0bb95ca1ade7b7e1941178fa68;hp=61d184ccb5ce52333ce266605b7588022287f22c;hpb=7ea75009d1977874efb686b000516c4ce1343474;p=libsigrok.git diff --git a/src/output/wav.c b/src/output/wav.c index 61d184cc..9dc5a110 100644 --- a/src/output/wav.c +++ b/src/output/wav.c @@ -91,28 +91,10 @@ static int init(struct sr_output *o, GHashTable *options) struct out_context *outc; struct sr_channel *ch; GSList *l; - GHashTableIter iter; - gpointer key, value; outc = g_malloc0(sizeof(struct out_context)); o->priv = outc; - - outc->scale = 0.0; - if (options) { - g_hash_table_iter_init(&iter, options); - while (g_hash_table_iter_next(&iter, &key, &value)) { - if (!strcmp(key, "scale")) { - if (!g_variant_is_of_type(value, G_VARIANT_TYPE_DOUBLE)) { - sr_err("Invalid type for 'scale' option."); - return SR_ERR_ARG; - } - outc->scale = g_variant_get_double(value); - } else { - sr_err("Unknown option '%s'.", key); - return SR_ERR_ARG; - } - } - } + outc->scale = g_variant_get_double(g_hash_table_lookup(options, "scale")); for (l = o->sdi->channels; l; l = l->next) { ch = l->data; @@ -247,6 +229,7 @@ static int check_chanbuf_size(const struct sr_output *o) return size; } + static int receive(const struct sr_output *o, const struct sr_datafeed_packet *packet, GString **out) { @@ -356,13 +339,10 @@ static struct sr_option options[] = { { 0 } }; -static struct sr_option *get_options(gboolean cached) +static const struct sr_option *get_options(void) { - if (cached) - return options; - - options[0].def = g_variant_new_double(0); - g_variant_ref_sink(options[0].def); + if (!options[0].def) + options[0].def = g_variant_ref_sink(g_variant_new_double(0.0)); return options; }