]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decode/decoder.cpp
rowdata: Use emplace_back() for Annotation objects.
[pulseview.git] / pv / data / decode / decoder.cpp
index cd3e97d649ec52f0646fa269402b3f5e3d3668c5..1c941074a0a13ea1150d1f93391148247e01b88d 100644 (file)
@@ -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;
 }