From eda99faf427179f4c483e44ed64f1f9ba1d19e9b Mon Sep 17 00:00:00 2001 From: slz Date: Fri, 7 Aug 2026 15:42:44 +0800 Subject: [PATCH] fix: sort completed rows by row_id before writing CSV Sort completed rows in the writer thread so the CSV is always written in frame arrival order, even when color and depth frames complete concurrently on separate threads. --- orbbec_camera/src/frame_timestamp_csv_logger.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/orbbec_camera/src/frame_timestamp_csv_logger.cpp b/orbbec_camera/src/frame_timestamp_csv_logger.cpp index ff3b8fb6..2b34460d 100644 --- a/orbbec_camera/src/frame_timestamp_csv_logger.cpp +++ b/orbbec_camera/src/frame_timestamp_csv_logger.cpp @@ -572,6 +572,9 @@ void FrameTimestampCsvLogger::writerThreadMain() { rows_to_write.swap(completed_rows_); } + std::stable_sort(rows_to_write.begin(), rows_to_write.end(), + [](const auto &lhs, const auto &rhs) { return lhs.row_id < rhs.row_id; }); + for (const auto &row : rows_to_write) { if (csv_rows_written_ >= kMaxCsvRowsPerFileIncludingHeader) { if (!rotateCsvFile()) {