]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.cpp
Fix #685 by adding a special T marker when SR_DT_TRIGGER arrives
[pulseview.git] / pv / view / view.cpp
index 99a28e4d7ee187b805490699ace737428cc31e1f..7f9caa4cb50e69fb63f50e621d5dad01adbebc99 100644 (file)
@@ -349,24 +349,12 @@ void View::zoom_one_to_one()
        if (visible_data.empty())
                return;
 
-       double samplerate = 0.0;
-       for (const shared_ptr<SignalData> d : visible_data) {
-               assert(d);
-               const vector< shared_ptr<Segment> > segments =
-                       d->segments();
-               for (const shared_ptr<Segment> &s : segments)
-                       samplerate = max(samplerate, s->samplerate());
-       }
-
-       if (samplerate == 0.0)
-               return;
-
        assert(viewport_);
        const int w = viewport_->width();
        if (w <= 0)
                return;
 
-       set_zoom(1.0 / samplerate, w / 2);
+       set_zoom(1.0 / session_.get_samplerate(), w / 2);
 }
 
 void View::set_scale_offset(double scale, const Timestamp& offset)
@@ -474,8 +462,14 @@ void View::add_flag(const Timestamp& time)
 {
        flags_.push_back(shared_ptr<Flag>(new Flag(*this, time,
                QString("%1").arg(next_flag_text_))));
+
        next_flag_text_ = (next_flag_text_ >= 'Z') ? 'A' :
                (next_flag_text_ + 1);
+
+       // Skip 'T' (for trigger) as it's treated special
+       if (next_flag_text_ == 'T')
+               next_flag_text_ += 1;
+
        time_item_appearance_changed(true, true);
 }
 
@@ -530,6 +524,16 @@ void View::restack_all_trace_tree_items()
                i->animate_to_layout_v_offset();
 }
 
+void View::trigger_event(util::Timestamp location)
+{
+       char next_flag_text = next_flag_text_;
+
+       next_flag_text_ = 'T';
+       add_flag(location);
+
+       next_flag_text_ = next_flag_text;
+}
+
 void View::get_scroll_layout(double &length, Timestamp &offset) const
 {
        const pair<Timestamp, Timestamp> extents = get_time_extents();