X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.cpp;h=1c941074a0a13ea1150d1f93391148247e01b88d;hp=cd3e97d649ec52f0646fa269402b3f5e3d3668c5;hb=1becee23bdd2b44145b753edd05bf01f7fb0707e;hpb=20f59e957e70250cfb876ac7a1743134d6b83339 diff --git a/pv/data/decode/decoder.cpp b/pv/data/decode/decoder.cpp index cd3e97d6..1c941074 100644 --- a/pv/data/decode/decoder.cpp +++ b/pv/data/decode/decoder.cpp @@ -113,7 +113,7 @@ srd_decoder_inst* Decoder::create_decoder_inst(srd_session *session) const return nullptr; // Setup the channels - GArray *const init_pin_states = g_array_sized_new(FALSE, TRUE, + GArray *const init_pin_states = g_array_sized_new(false, true, sizeof(uint8_t), channels_.size()); g_array_set_size(init_pin_states, channels_.size()); @@ -122,18 +122,21 @@ srd_decoder_inst* Decoder::create_decoder_inst(srd_session *session) const g_str_equal, g_free, (GDestroyNotify)g_variant_unref); for (DecodeChannel *ch : channels_) { + if (!ch->assigned_signal) + continue; + init_pin_states->data[ch->id] = ch->initial_pin_state; - GVariant *const gvar = g_variant_new_int32(ch->id); // id = bit position + GVariant *const gvar = g_variant_new_int32(ch->bit_id); // bit_id = bit position g_variant_ref_sink(gvar); - // key is channel name, value is bit position in each sample + // key is channel name (pdch->id), value is bit position in each sample (gvar) g_hash_table_insert(channels, ch->pdch_->id, gvar); } srd_inst_channel_set_all(decoder_inst, channels); srd_inst_initial_pins_set_all(decoder_inst, init_pin_states); - g_array_free(init_pin_states, TRUE); + g_array_free(init_pin_states, true); return decoder_inst; }