projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Analog buffer sharing crash by memcpying for the AnanlogSignal::paint
[pulseview.git]
/
pv
/
view
/
analogsignal.cpp
diff --git
a/pv/view/analogsignal.cpp
b/pv/view/analogsignal.cpp
index 209512b595880d9be9e55aed4947935e89b5ae22..a6f032b5793aa0422e8e71b07f5e5b2f56fb3e2d 100644
(file)
--- a/
pv/view/analogsignal.cpp
+++ b/
pv/view/analogsignal.cpp
@@
-68,18
+68,21
@@
void AnalogSignal::paint(QPainter &p, int y, int left, int right, double scale,
(int64_t)0), last_sample);
const int64_t end_sample = min(max((int64_t)ceil(end),
(int64_t)0), last_sample);
(int64_t)0), last_sample);
const int64_t end_sample = min(max((int64_t)ceil(end),
(int64_t)0), last_sample);
+ const int64_t sample_count = end_sample - start_sample;
- const float* samples = snapshot->get_samples();
+ const float* samples = snapshot->get_samples(
+ start_sample, end_sample);
assert(samples);
assert(samples);
- QPointF *points = new QPointF[
end_sample - start_sample
];
+ QPointF *points = new QPointF[
sample_count
];
QPointF *point = points;
for (int64_t sample = start_sample;
sample != end_sample; sample++) {
const float x = (sample / samples_per_pixel -
pixels_offset) + left;
QPointF *point = points;
for (int64_t sample = start_sample;
sample != end_sample; sample++) {
const float x = (sample / samples_per_pixel -
pixels_offset) + left;
- *point++ = QPointF(x, samples[sample] + y);
+ *point++ = QPointF(x,
+ samples[sample - start_sample] + y);
}
p.setPen(_colour);
}
p.setPen(_colour);