const float low_offset = y + 0.5f;
shared_ptr<pv::data::LogicSegment> segment = get_logic_segment_to_paint();
- if (!segment)
+ if (!segment || (segment->get_sample_count() == 0))
return;
double samplerate = segment->samplerate();
const double pixels_offset = pp.pixels_offset();
const pv::util::Timestamp& start_time = segment->start_time();
- const int64_t last_sample = segment->get_sample_count() - 1;
+ const int64_t last_sample = (int64_t)segment->get_sample_count() - 1;
const double samples_per_pixel = samplerate * pp.scale();
const double pixels_per_sample = 1 / samples_per_pixel;
const pv::util::Timestamp start = samplerate * (pp.offset() - start_time);
segment = segments.back();
}
- if (segment_display_mode_ == ShowSingleSegmentOnly) {
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
try {
segment = segments.at(current_segment_);
- } catch (out_of_range) {
+ } catch (out_of_range&) {
qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_;
}
}