]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/logicsignal.cpp
Really fix #1125 (and maybe #1139)
[pulseview.git] / pv / views / trace / logicsignal.cpp
index 4a3a80a7255fa7b5cd6a6f1bdb263bfce4bcfd3f..10a5bd4ae70bb2c1f95503fc8ec2b52c17d4f0d5 100644 (file)
@@ -193,7 +193,7 @@ void LogicSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp)
        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();
@@ -204,7 +204,7 @@ void LogicSignal::paint_mid(QPainter &p, ViewItemPaintParams &pp)
 
        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);
@@ -358,11 +358,12 @@ shared_ptr<pv::data::LogicSegment> LogicSignal::get_logic_segment_to_paint() con
                        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) {
-                               qDebug() << "Current logic segment out of range for signal" << base_->name();
+                       } catch (out_of_range&) {
+                               qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_;
                        }
                }
        }