mirror of https://github.com/commaai/openpilot.git
replay: fix hang issue on system wake-up (#32341)
fix hang issue on system wake-up
old-commit-hash: c0a2ce31ee
This commit is contained in:
parent
8df37a97d3
commit
60387b191f
|
@ -468,12 +468,15 @@ std::vector<Event>::const_iterator Replay::publishEvents(std::vector<Event>::con
|
|||
// Skip events if socket is not present
|
||||
if (!sockets_[evt.which]) continue;
|
||||
|
||||
int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (nanos_since_boot() - loop_start_ts);
|
||||
// if time_diff is greater than 1 second, it means that an invalid segment is skipped
|
||||
if (time_diff >= 1e9 || speed_ != prev_replay_speed) {
|
||||
// reset event start times
|
||||
const uint64_t current_nanos = nanos_since_boot();
|
||||
const int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (current_nanos - loop_start_ts);
|
||||
|
||||
// Reset timestamps for potential synchronization issues:
|
||||
// - A negative time_diff may indicate slow execution or system wake-up,
|
||||
// - A time_diff exceeding 1 second suggests a skipped segment.
|
||||
if ((time_diff < -1e9 || time_diff >= 1e9) || speed_ != prev_replay_speed) {
|
||||
evt_start_ts = evt.mono_time;
|
||||
loop_start_ts = nanos_since_boot();
|
||||
loop_start_ts = current_nanos;
|
||||
prev_replay_speed = speed_;
|
||||
} else if (time_diff > 0) {
|
||||
precise_nano_sleep(time_diff);
|
||||
|
|
Loading…
Reference in New Issue