projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Supply the segment ID when adding samples to optimize trace painting
[pulseview.git]
/
pv
/
views
/
trace
/
decodetrace.cpp
diff --git
a/pv/views/trace/decodetrace.cpp
b/pv/views/trace/decodetrace.cpp
index 7bbc5a19b526cd5afa6856a578f1d03f989533df..88fa97fbc0b6f36cee3083892be919ba24260e09 100644
(file)
--- a/
pv/views/trace/decodetrace.cpp
+++ b/
pv/views/trace/decodetrace.cpp
@@
-146,6
+146,8
@@
DecodeTrace::DecodeTrace(pv::Session &session,
connect(decode_signal_.get(), SIGNAL(new_annotations()),
this, SLOT(on_new_annotations()));
connect(decode_signal_.get(), SIGNAL(new_annotations()),
this, SLOT(on_new_annotations()));
+ connect(decode_signal_.get(), SIGNAL(decode_reset()),
+ this, SLOT(on_decode_reset()));
connect(decode_signal_.get(), SIGNAL(decode_finished()),
this, SLOT(on_decode_finished()));
connect(decode_signal_.get(), SIGNAL(channels_updated()),
connect(decode_signal_.get(), SIGNAL(decode_finished()),
this, SLOT(on_decode_finished()));
connect(decode_signal_.get(), SIGNAL(channels_updated()),
@@
-234,7
+236,7
@@
void DecodeTrace::paint_mid(QPainter &p, ViewItemPaintParams &pp)
vector<Annotation> annotations;
decode_signal_->get_annotation_subset(annotations, row,
vector<Annotation> annotations;
decode_signal_->get_annotation_subset(annotations, row,
- sample_range.first, sample_range.second);
+
current_segment_,
sample_range.first, sample_range.second);
if (!annotations.empty()) {
draw_annotations(annotations, p, annotation_height, pp, y,
base_colour, row_title_width);
if (!annotations.empty()) {
draw_annotations(annotations, p, annotation_height, pp, y,
base_colour, row_title_width);
@@
-605,11
+607,11
@@
void DecodeTrace::draw_unresolved_period(QPainter &p, int h, int left, int right
double samples_per_pixel, pixels_offset;
double samples_per_pixel, pixels_offset;
- const int64_t sample_count = decode_signal_->get_working_sample_count();
+ const int64_t sample_count = decode_signal_->get_working_sample_count(
current_segment_
);
if (sample_count == 0)
return;
if (sample_count == 0)
return;
- const int64_t samples_decoded = decode_signal_->get_decoded_sample_count();
+ const int64_t samples_decoded = decode_signal_->get_decoded_sample_count(
current_segment_
);
if (sample_count == samples_decoded)
return;
if (sample_count == samples_decoded)
return;
@@
-704,7
+706,7
@@
const QString DecodeTrace::get_annotation_at_point(const QPoint &point)
vector<pv::data::decode::Annotation> annotations;
decode_signal_->get_annotation_subset(annotations, visible_rows_[row],
vector<pv::data::decode::Annotation> annotations;
decode_signal_->get_annotation_subset(annotations, visible_rows_[row],
- sample_range.first, sample_range.second);
+
current_segment_,
sample_range.first, sample_range.second);
return (annotations.empty()) ?
QString() : annotations[0].annotations().front();
return (annotations.empty()) ?
QString() : annotations[0].annotations().front();
@@
-889,6
+891,15
@@
void DecodeTrace::on_delayed_trace_update()
owner_->row_item_appearance_changed(false, true);
}
owner_->row_item_appearance_changed(false, true);
}
+void DecodeTrace::on_decode_reset()
+{
+ visible_rows_.clear();
+ max_visible_rows_ = 0;
+
+ if (owner_)
+ owner_->row_item_appearance_changed(false, true);
+}
+
void DecodeTrace::on_decode_finished()
{
if (owner_)
void DecodeTrace::on_decode_finished()
{
if (owner_)