mirror of
https://github.com/DreamSourceLab/DSView.git
synced 2025-01-23 13:42:55 +08:00
Fix out-of-order issue of multiple annotation rows
This commit is contained in:
parent
2236cace83
commit
dbc943d714
@ -28,13 +28,15 @@ namespace decode {
|
|||||||
|
|
||||||
Row::Row() :
|
Row::Row() :
|
||||||
_decoder(NULL),
|
_decoder(NULL),
|
||||||
_row(NULL)
|
_row(NULL),
|
||||||
|
_order(-1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Row::Row(const srd_decoder *decoder, const srd_decoder_annotation_row *row) :
|
Row::Row(const srd_decoder *decoder, const srd_decoder_annotation_row *row, const int order) :
|
||||||
_decoder(decoder),
|
_decoder(decoder),
|
||||||
_row(row)
|
_row(row),
|
||||||
|
_order(order)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +71,7 @@ const QString Row::title() const
|
|||||||
bool Row::operator<(const Row &other) const
|
bool Row::operator<(const Row &other) const
|
||||||
{
|
{
|
||||||
return (_decoder < other._decoder) ||
|
return (_decoder < other._decoder) ||
|
||||||
(_decoder == other._decoder && _row < other._row);
|
(_decoder == other._decoder && _order < other._order);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // decode
|
} // decode
|
||||||
|
@ -39,7 +39,8 @@ public:
|
|||||||
~Row();
|
~Row();
|
||||||
|
|
||||||
Row(const srd_decoder *decoder,
|
Row(const srd_decoder *decoder,
|
||||||
const srd_decoder_annotation_row *row = NULL);
|
const srd_decoder_annotation_row *row = NULL,
|
||||||
|
const int order = -1);
|
||||||
|
|
||||||
const srd_decoder* decoder() const;
|
const srd_decoder* decoder() const;
|
||||||
const srd_decoder_annotation_row* row() const;
|
const srd_decoder_annotation_row* row() const;
|
||||||
@ -51,6 +52,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
const srd_decoder *_decoder;
|
const srd_decoder *_decoder;
|
||||||
const srd_decoder_annotation_row *_row;
|
const srd_decoder_annotation_row *_row;
|
||||||
|
int _order;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // decode
|
} // decode
|
||||||
|
@ -147,13 +147,14 @@ void DecoderStack::build_row()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add the decoder rows
|
// Add the decoder rows
|
||||||
|
int order = 0;
|
||||||
for (const GSList *l = decc->annotation_rows; l; l = l->next)
|
for (const GSList *l = decc->annotation_rows; l; l = l->next)
|
||||||
{
|
{
|
||||||
const srd_decoder_annotation_row *const ann_row =
|
const srd_decoder_annotation_row *const ann_row =
|
||||||
(srd_decoder_annotation_row *)l->data;
|
(srd_decoder_annotation_row *)l->data;
|
||||||
assert(ann_row);
|
assert(ann_row);
|
||||||
|
|
||||||
const Row row(decc, ann_row);
|
const Row row(decc, ann_row, order);
|
||||||
|
|
||||||
// Add a new empty row data object
|
// Add a new empty row data object
|
||||||
_rows[row] = decode::RowData();
|
_rows[row] = decode::RowData();
|
||||||
@ -173,6 +174,8 @@ void DecoderStack::build_row()
|
|||||||
ll; ll = ll->next)
|
ll; ll = ll->next)
|
||||||
_class_rows[make_pair(decc,
|
_class_rows[make_pair(decc,
|
||||||
GPOINTER_TO_INT(ll->data))] = row;
|
GPOINTER_TO_INT(ll->data))] = row;
|
||||||
|
|
||||||
|
order++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user