X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Flogicsegment.cpp;h=b77c102d8ba2266de397f42223ffc9d5b4b0e3a5;hb=de2fc10b2b067705e623b9781a332ad8fa3f4f88;hp=2f69e02dba3b7acc8794942caf5e26497f6bb930;hpb=e0544801de2dda0b2e353eff04b0b23a40b85167;p=pulseview.git diff --git a/pv/data/logicsegment.cpp b/pv/data/logicsegment.cpp index 2f69e02..b77c102 100644 --- a/pv/data/logicsegment.cpp +++ b/pv/data/logicsegment.cpp @@ -184,21 +184,6 @@ void LogicSegment::get_samples(int64_t start_sample, get_raw_samples(start_sample, (end_sample - start_sample), dest); } -SegmentLogicDataIterator* LogicSegment::begin_sample_iteration(uint64_t start) -{ - return (SegmentLogicDataIterator*)begin_raw_sample_iteration(start); -} - -void LogicSegment::continue_sample_iteration(SegmentLogicDataIterator* it, uint64_t increase) -{ - Segment::continue_raw_sample_iteration((SegmentRawDataIterator*)it, increase); -} - -void LogicSegment::end_sample_iteration(SegmentLogicDataIterator* it) -{ - Segment::end_raw_sample_iteration((SegmentRawDataIterator*)it); -} - void LogicSegment::get_subsampled_edges( vector &edges, uint64_t start, uint64_t end, @@ -371,6 +356,9 @@ void LogicSegment::get_subsampled_edges( void LogicSegment::get_surrounding_edges(vector &dest, uint64_t origin_sample, float min_length, int sig_index) { + if (origin_sample >= sample_count_) + return; + // Put the edges vector on the heap, it can become quite big until we can // use a get_subsampled_edges() implementation that searches backwards vector* edges = new vector; @@ -426,7 +414,7 @@ void LogicSegment::append_payload_to_mipmap() MipMapLevel &m0 = mip_map_[0]; uint64_t prev_length; uint8_t *dest_ptr; - SegmentRawDataIterator* it; + SegmentDataIterator* it; uint64_t accumulator; unsigned int diff_counter; @@ -446,23 +434,23 @@ void LogicSegment::append_payload_to_mipmap() const uint64_t start_sample = prev_length * MipMapScaleFactor; const uint64_t end_sample = m0.length * MipMapScaleFactor; - it = begin_raw_sample_iteration(start_sample); + it = begin_sample_iteration(start_sample); for (uint64_t i = start_sample; i < end_sample;) { // Accumulate transitions which have occurred in this sample accumulator = 0; diff_counter = MipMapScaleFactor; while (diff_counter-- > 0) { - const uint64_t sample = unpack_sample(it->value); + const uint64_t sample = unpack_sample(get_iterator_value(it)); accumulator |= last_append_sample_ ^ sample; last_append_sample_ = sample; - continue_raw_sample_iteration(it, 1); + continue_sample_iteration(it, 1); i++; } pack_sample(dest_ptr, accumulator); dest_ptr += unit_size_; } - end_raw_sample_iteration(it); + end_sample_iteration(it); // Compute higher level mipmaps for (unsigned int level = 1; level < ScaleStepCount; level++) {