X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fview.cpp;h=aac6333addd032c0adb85886c60f2fdf9b48a248;hp=5877c22d87584ed2e506e5dfdf5e76b35d5b6fa8;hb=7f4038d6abbe86e8a8c511df188293a704064167;hpb=99503171d4f32570829df171521b4b9cbccb0503 diff --git a/pv/view/view.cpp b/pv/view/view.cpp index 5877c22d..aac6333a 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; @@ -306,22 +307,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) { + 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); }