X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=e0c49c20ad4b2f60b4e9ea1b16c69420318321ba;hb=ff008de665c7990d5f3408f918ff090d8e6c60b2;hp=5877c22d87584ed2e506e5dfdf5e76b35d5b6fa8;hpb=d7aae647fee176f7a0257f65b4e5d7fda81744c3;p=pulseview.git diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 5877c22..e0c49c2 100644 --- a/pv/view/view.cpp +++ b/pv/view/view.cpp @@ -57,6 +57,7 @@ using boost::shared_lock; using boost::shared_mutex; using pv::data::SignalData; +using pv::data::Snapshot; using pv::util::format_time; using std::back_inserter; @@ -262,7 +263,10 @@ void View::zoom_one_to_one() double samplerate = 0.0; for (const shared_ptr d : visible_data) { assert(d); - samplerate = max(samplerate, d->samplerate()); + const vector< shared_ptr > snapshots = + d->snapshots(); + for (const shared_ptr &s : snapshots) + samplerate = max(samplerate, s->samplerate()); } if (samplerate == 0.0) @@ -306,22 +310,26 @@ set< shared_ptr > View::get_visible_data() const pair View::get_time_extents() const { - const set< shared_ptr > visible_data = get_visible_data(); - if (visible_data.empty()) - return make_pair(0.0, 0.0); - double left_time = DBL_MAX, right_time = DBL_MIN; + const set< shared_ptr > visible_data = get_visible_data(); for (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() / samplerate); + const vector< shared_ptr > snapshots = + d->snapshots(); + for (const shared_ptr &s : snapshots) { + double samplerate = s->samplerate(); + samplerate = (samplerate <= 0.0) ? 1.0 : samplerate; + + const double start_time = s->start_time(); + left_time = min(left_time, start_time); + right_time = max(right_time, start_time + + d->get_max_sample_count() / samplerate); + } } + if (left_time == DBL_MAX && right_time == DBL_MIN) + return make_pair(0.0, 0.0); + assert(left_time < right_time); return make_pair(left_time, right_time); }