X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.cpp;h=1c941074a0a13ea1150d1f93391148247e01b88d;hp=2a9b980b14ef58039641f22df519cb291b6acdb7;hb=1becee23bdd2b44145b753edd05bf01f7fb0707e;hpb=27a3f09baf61c7f9b8c07630d34df75ddfdd476b diff --git a/pv/data/decode/decoder.cpp b/pv/data/decode/decoder.cpp index 2a9b980b..1c941074 100644 --- a/pv/data/decode/decoder.cpp +++ b/pv/data/decode/decoder.cpp @@ -28,9 +28,7 @@ #include using pv::data::DecodeChannel; -using std::set; using std::map; -using std::shared_ptr; using std::string; namespace pv { @@ -115,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()); @@ -124,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; }