X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.cpp;h=9da7de6766c418e759ea1f02d88ba8ab8614c551;hp=65436002c760681a8b1b8117f15c74932479f4a2;hb=f98070844c2d468fdbb6beb5b65e4ccbbcd3f10b;hpb=bc4b9ccfc78d9d0987525360fa6d93bed681951a diff --git a/pv/data/decodesignal.cpp b/pv/data/decodesignal.cpp index 6543600..9da7de6 100644 --- a/pv/data/decodesignal.cpp +++ b/pv/data/decodesignal.cpp @@ -209,6 +209,7 @@ void DecodeSignal::begin_decode() } // Map out all the annotation classes + int row_index = 0; for (const shared_ptr &dec : stack_) { assert(dec); const srd_decoder *const decc = dec->decoder(); @@ -219,7 +220,7 @@ void DecodeSignal::begin_decode() (srd_decoder_annotation_row *)l->data; assert(ann_row); - const Row row(decc, ann_row); + const Row row(row_index++, decc, ann_row); for (const GSList *ll = ann_row->ann_classes; ll; ll = ll->next) @@ -432,16 +433,17 @@ vector DecodeSignal::visible_rows() const const srd_decoder *const decc = dec->decoder(); assert(dec->decoder()); + int row_index = 0; // Add a row for the decoder if it doesn't have a row list if (!decc->annotation_rows) - rows.emplace_back(decc); + rows.emplace_back(row_index++, decc); // Add the decoder rows for (const GSList *l = decc->annotation_rows; l; l = l->next) { const srd_decoder_annotation_row *const ann_row = (srd_decoder_annotation_row *)l->data; assert(ann_row); - rows.emplace_back(decc, ann_row); + rows.emplace_back(row_index++, decc, ann_row); } } @@ -1159,9 +1161,10 @@ void DecodeSignal::create_decode_segment() const srd_decoder *const decc = dec->decoder(); assert(dec->decoder()); + int row_index = 0; // Add a row for the decoder if it doesn't have a row list if (!decc->annotation_rows) - (segments_.back().annotation_rows)[Row(decc)] = + (segments_.back().annotation_rows)[Row(row_index++, decc)] = decode::RowData(); // Add the decoder rows @@ -1170,7 +1173,7 @@ void DecodeSignal::create_decode_segment() (srd_decoder_annotation_row *)l->data; assert(ann_row); - const Row row(decc, ann_row); + const Row row(row_index++, decc, ann_row); // Add a new empty row data object (segments_.back().annotation_rows)[row] = @@ -1211,7 +1214,7 @@ void DecodeSignal::annotation_callback(srd_proto_data *pdata, void *decode_signa row_iter = ds->segments_.at(ds->current_segment_id_).annotation_rows.find((*r).second); else { // Failing that, use the decoder as a key - row_iter = ds->segments_.at(ds->current_segment_id_).annotation_rows.find(Row(decc)); + row_iter = ds->segments_.at(ds->current_segment_id_).annotation_rows.find(Row(0, decc)); } if (row_iter == ds->segments_.at(ds->current_segment_id_).annotation_rows.end()) {