projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
buildsystem: Abort cmake config if Boost is not found
[pulseview.git]
/
pv
/
data
/
logicsnapshot.cpp
diff --git
a/pv/data/logicsnapshot.cpp
b/pv/data/logicsnapshot.cpp
index 03e6a54f2e7c097bb2909c9ad1ae1fbe671bbaf5..a7a84cf916d1cad33d4f16fb60d7c45b3fbfacd0 100644
(file)
--- a/
pv/data/logicsnapshot.cpp
+++ b/
pv/data/logicsnapshot.cpp
@@
-60,10
+60,11
@@
void LogicSnapshot::append_payload(
const sr_datafeed_logic &logic)
{
assert(_unit_size == logic.unitsize);
const sr_datafeed_logic &logic)
{
assert(_unit_size == logic.unitsize);
+ assert((logic.length % _unit_size) == 0);
lock_guard<recursive_mutex> lock(_mutex);
lock_guard<recursive_mutex> lock(_mutex);
- append_data(logic.data, logic.length);
+ append_data(logic.data, logic.length
/ _unit_size
);
// Generate the first mip-map from the data
append_payload_to_mipmap();
// Generate the first mip-map from the data
append_payload_to_mipmap();
@@
-167,7
+168,7
@@
void LogicSnapshot::append_payload_to_mipmap()
uint64_t LogicSnapshot::get_sample(uint64_t index) const
{
assert(_data);
uint64_t LogicSnapshot::get_sample(uint64_t index) const
{
assert(_data);
- assert(index
>= 0 && index
< _sample_count);
+ assert(index < _sample_count);
return *(uint64_t*)((uint8_t*)_data + index * _unit_size);
}
return *(uint64_t*)((uint8_t*)_data + index * _unit_size);
}
@@
-182,7
+183,6
@@
void LogicSnapshot::get_subsampled_edges(
bool last_sample;
bool fast_forward;
bool last_sample;
bool fast_forward;
- assert(start >= 0);
assert(end <= get_sample_count());
assert(start <= end);
assert(min_length > 0);
assert(end <= get_sample_count());
assert(start <= end);
assert(min_length > 0);
@@
-204,7
+204,10
@@
void LogicSnapshot::get_subsampled_edges(
{
//----- Continue to search -----//
level = min_level;
{
//----- Continue to search -----//
level = min_level;
- fast_forward = true;
+
+ // We cannot fast-forward if there is no mip-map data at
+ // at the minimum level.
+ fast_forward = (_mip_map[level].data != NULL);
if (min_length < MipMapScaleFactor)
{
if (min_length < MipMapScaleFactor)
{
@@
-241,7
+244,8
@@
void LogicSnapshot::get_subsampled_edges(
// We can fast forward only if there was no change
const bool sample =
(get_sample(index) & sig_mask) != 0;
// We can fast forward only if there was no change
const bool sample =
(get_sample(index) & sig_mask) != 0;
- fast_forward = last_sample == sample;
+ if (last_sample != sample)
+ fast_forward = false;
}
if (fast_forward) {
}
if (fast_forward) {
@@
-258,7
+262,6
@@
void LogicSnapshot::get_subsampled_edges(
(level + 1) * MipMapScalePower;
const uint64_t offset =
index >> level_scale_power;
(level + 1) * MipMapScalePower;
const uint64_t offset =
index >> level_scale_power;
- assert(offset >= 0);
// Check if we reached the last block at this
// level, or if there was a change in this block
// Check if we reached the last block at this
// level, or if there was a change in this block
@@
-293,7
+296,6
@@
void LogicSnapshot::get_subsampled_edges(
(level + 1) * MipMapScalePower;
const uint64_t offset =
index >> level_scale_power;
(level + 1) * MipMapScalePower;
const uint64_t offset =
index >> level_scale_power;
- assert(offset >= 0);
// Check if we reached the last block at this
// level, or if there was a change in this block
// Check if we reached the last block at this
// level, or if there was a change in this block