]> 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 2a9b980b14ef58039641f22df519cb291b6acdb7..1c941074a0a13ea1150d1f93391148247e01b88d 100644 (file)
@@ -28,9 +28,7 @@
 #include <pv/data/decodesignal.hpp>
 
 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;
 }