|
|
@ -260,15 +260,12 @@ void ChartView::updateSeries(const cabana::Signal *sig) { |
|
|
|
s.series->setColor(getColor(s.sig)); |
|
|
|
s.series->setColor(getColor(s.sig)); |
|
|
|
|
|
|
|
|
|
|
|
const auto &msgs = can->events(s.msg_id); |
|
|
|
const auto &msgs = can->events(s.msg_id); |
|
|
|
|
|
|
|
s.vals.reserve(msgs.capacity()); |
|
|
|
|
|
|
|
s.step_vals.reserve(msgs.capacity() * 2); |
|
|
|
|
|
|
|
|
|
|
|
auto first = std::upper_bound(msgs.cbegin(), msgs.cend(), s.last_value_mono_time, [](uint64_t ts, auto e) { |
|
|
|
auto first = std::upper_bound(msgs.cbegin(), msgs.cend(), s.last_value_mono_time, [](uint64_t ts, auto e) { |
|
|
|
return ts < e->mono_time; |
|
|
|
return ts < e->mono_time; |
|
|
|
}); |
|
|
|
}); |
|
|
|
int new_size = std::max<int>(s.vals.size() + std::distance(first, msgs.cend()), settings.max_cached_minutes * 60 * 100); |
|
|
|
|
|
|
|
if (s.vals.capacity() <= new_size) { |
|
|
|
|
|
|
|
s.vals.reserve(new_size * 2); |
|
|
|
|
|
|
|
s.step_vals.reserve(new_size * 4); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const double route_start_time = can->routeStartTime(); |
|
|
|
const double route_start_time = can->routeStartTime(); |
|
|
|
for (auto end = msgs.cend(); first != end; ++first) { |
|
|
|
for (auto end = msgs.cend(); first != end; ++first) { |
|
|
|
const CanEvent *e = *first; |
|
|
|
const CanEvent *e = *first; |
|
|
|