diff --git a/tools/jfjoch_process.cpp b/tools/jfjoch_process.cpp index b0ac07e3..7d42d4f2 100644 --- a/tools/jfjoch_process.cpp +++ b/tools/jfjoch_process.cpp @@ -389,9 +389,6 @@ int main(int argc, char **argv) { logger.Info("Starting analysis of {} images (range {}-{}) using {} threads", images_to_process, start_image, end_image, nthreads); - std::mutex reader_mutex; - std::mutex plots_mutex; // Protect shared plot/stats updates if they aren't thread-safe - std::atomic processed_count = 0; std::atomic total_uncompressed_bytes = 0; std::atomic max_image_number_sent = 0; @@ -426,14 +423,12 @@ int main(int argc, char **argv) { if (image_idx >= end_image) break; // Load Image - std::shared_ptr img; { - std::lock_guard lock(reader_mutex); - try { - img = reader.LoadImage(image_idx); - } catch (const std::exception &e) { - logger.Error("Failed to load image {}: {}", image_idx, e.what()); - continue; - } + std::shared_ptr img; + try { + img = reader.LoadImage(image_idx); + } catch (const std::exception &e) { + logger.Error("Failed to load image {}: {}", image_idx, e.what()); + continue; } if (!img) continue; @@ -462,32 +457,25 @@ int main(int argc, char **argv) { auto image_end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration image_duration = image_end_time - image_start_time; - auto size = compressor.Compress(compressed_buffer.data(), - img->Image().data(), - experiment.GetPixelsNum(), - sizeof(int32_t)); - - msg.image = CompressedImage(compressed_buffer.data(), - size, experiment.GetXPixelsNum(), - experiment.GetYPixelsNum(), - CompressedImageMode::Int32, - experiment.GetCompressionAlgorithm()); - - // Mimic DataMessage stats from Receiver msg.processing_time_s = image_duration.count(); msg.original_number = msg.number; msg.run_number = experiment.GetRunNumber(); msg.run_name = experiment.GetRunName(); - // msg.receiver_free_send_buf <- Not relevant for file analysis - // msg.receiver_aq_dev_delay <- Not relevant for file analysis - // Update Plots/Stats (Thread safe update needed) - { - std::lock_guard lock(plots_mutex); - plots.Add(msg, profile); - // Write Result - if (writer) - writer->Write(msg); + plots.Add(msg, profile); + // Write Result + if (writer) { + auto size = compressor.Compress(compressed_buffer.data(), + img->Image().data(), + experiment.GetPixelsNum(), + sizeof(int32_t)); + + msg.image = CompressedImage(compressed_buffer.data(), + size, experiment.GetXPixelsNum(), + experiment.GetYPixelsNum(), + CompressedImageMode::Int32, + experiment.GetCompressionAlgorithm()); + writer->Write(msg); } // Update max sent tracking @@ -501,11 +489,7 @@ int main(int argc, char **argv) { // Progress log if (current_idx_offset > 0 && current_idx_offset % 100 == 0) { - std::optional indexing_rate; - { - std::lock_guard lock(plots_mutex); - indexing_rate = plots.GetIndexingRate(); - } + std::optional indexing_rate = plots.GetIndexingRate(); const auto now = std::chrono::steady_clock::now(); const double elapsed_s = std::chrono::duration(now - start_time).count();