X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=3d3b8eb233c74a9cc2498de16e3a7b7522019cfe;hb=f46e495ef1db0a4e522462ac18260f2151fa2b89;hp=a437918d9f2a88f3001f35ae9eb33b854530924c;hpb=1bc6525bd6274b7f06f5fa8355b539dd9307f599;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index a437918..3d3b8eb 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -92,7 +92,9 @@ View::View(SigSession &session, QWidget *parent) : connect(&_session, SIGNAL(signals_changed()), this, SLOT(signals_changed())); - connect(&_session, SIGNAL(data_updated()), + connect(&_session, SIGNAL(data_received()), + this, SLOT(data_updated())); + connect(&_session, SIGNAL(frame_ended()), this, SLOT(data_updated())); connect(_cursors.first().get(), SIGNAL(time_changed()), @@ -120,6 +122,10 @@ View::View(SigSession &session, QWidget *parent) : _viewport->installEventFilter(this); _ruler->installEventFilter(this); _header->installEventFilter(this); + + // Trigger the initial event manually. The default device has signals + // which were created before this object came into being + signals_changed(); } SigSession& View::session() @@ -154,9 +160,7 @@ void View::zoom(double steps) void View::zoom(double steps, int offset) { - const double new_scale = max(min(_scale * pow(3.0/2.0, -steps), - MaxScale), MinScale); - set_zoom(new_scale, offset); + set_zoom(_scale * pow(3.0/2.0, -steps), offset); } void View::zoom_fit() @@ -171,7 +175,8 @@ void View::zoom_fit() if (w <= 0) return; - set_scale_offset(delta / w, extents.first); + const double scale = max(min(delta / w, MaxScale), MinScale); + set_scale_offset(scale, extents.first); } void View::zoom_one_to_one() @@ -182,11 +187,7 @@ void View::zoom_one_to_one() session().get_signals()); // Make a set of all the visible data objects - set< shared_ptr > visible_data; - BOOST_FOREACH(const shared_ptr sig, sigs) - if (sig->enabled()) - visible_data.insert(sig->data()); - + set< shared_ptr > visible_data = get_visible_data(); if (visible_data.empty()) return; @@ -231,7 +232,7 @@ vector< shared_ptr > View::get_traces() const vector< shared_ptr > traces(sigs.size()); #endif - vector< shared_ptr >::iterator i = traces.begin(); + auto i = traces.begin(); i = copy(sigs.begin(), sigs.end(), i); #ifdef ENABLE_DECODE i = copy(decode_sigs.begin(), decode_sigs.end(), i); @@ -286,9 +287,12 @@ pair View::get_time_extents() const BOOST_FOREACH(const shared_ptr d, visible_data) { const double start_time = d->get_start_time(); + double samplerate = d->samplerate(); + samplerate = (samplerate <= 0.0) ? 1.0 : samplerate; + left_time = min(left_time, start_time); right_time = max(right_time, start_time + - d->get_max_sample_count() / d->samplerate()); + d->get_max_sample_count() / samplerate); } assert(left_time < right_time);