From dd6b18857a6009ecd5631de2b0006c85914d9693 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Thu, 12 May 2022 21:11:04 +0800 Subject: [PATCH] tools/replay: replace deprecated usleep(0) with std::this_thread::yield (#23544) * use std::this_thread::yield() * use yield in cameraServer::waitFinish * rename waitFinish to waitForSent old-commit-hash: 3863a88356650242147a4f282e52d195413864ca --- selfdrive/ui/replay/camera.cc | 8 +++++++- selfdrive/ui/replay/camera.h | 4 +--- selfdrive/ui/replay/replay.cc | 4 ++-- selfdrive/ui/replay/util.cc | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/selfdrive/ui/replay/camera.cc b/selfdrive/ui/replay/camera.cc index 9bcc00583..ab4f02e89 100644 --- a/selfdrive/ui/replay/camera.cc +++ b/selfdrive/ui/replay/camera.cc @@ -77,10 +77,16 @@ void CameraServer::pushFrame(CameraType type, FrameReader *fr, const cereal::Enc if (cam.width != fr->width || cam.height != fr->height) { cam.width = fr->width; cam.height = fr->height; - waitFinish(); + waitForSent(); startVipcServer(); } ++publishing_; cam.queue.push({fr, eidx}); } + +void CameraServer::waitForSent() { + while (publishing_ > 0) { + std::this_thread::yield(); + } +} diff --git a/selfdrive/ui/replay/camera.h b/selfdrive/ui/replay/camera.h index 9d72094d4..753a059ce 100644 --- a/selfdrive/ui/replay/camera.h +++ b/selfdrive/ui/replay/camera.h @@ -11,9 +11,7 @@ public: CameraServer(std::pair camera_size[MAX_CAMERAS] = nullptr, bool send_yuv = false); ~CameraServer(); void pushFrame(CameraType type, FrameReader* fr, const cereal::EncodeIndex::Reader& eidx); - inline void waitFinish() { - while (publishing_ > 0) usleep(0); - } + void waitForSent(); protected: struct Camera { diff --git a/selfdrive/ui/replay/replay.cc b/selfdrive/ui/replay/replay.cc index 1fdce6fd6..1b1e91a4a 100644 --- a/selfdrive/ui/replay/replay.cc +++ b/selfdrive/ui/replay/replay.cc @@ -383,7 +383,7 @@ void Replay::stream() { publishMessage(evt); } else if (camera_server_) { if (hasFlag(REPLAY_FLAG_FULL_SPEED)) { - camera_server_->waitFinish(); + camera_server_->waitForSent(); } publishFrame(evt); } @@ -391,7 +391,7 @@ void Replay::stream() { } // wait for frame to be sent before unlock.(frameReader may be deleted after unlock) if (camera_server_) { - camera_server_->waitFinish(); + camera_server_->waitForSent(); } if (eit == events_->end() && !hasFlag(REPLAY_FLAG_NO_LOOP)) { diff --git a/selfdrive/ui/replay/util.cc b/selfdrive/ui/replay/util.cc index 5f06a6c83..f52e5efab 100644 --- a/selfdrive/ui/replay/util.cc +++ b/selfdrive/ui/replay/util.cc @@ -305,7 +305,7 @@ void precise_nano_sleep(long sleep_ns) { // spin wait if (sleep_ns > 0) { while ((nanos_since_boot() - start_sleep) <= sleep_ns) { - usleep(0); + std::this_thread::yield(); } } }