From 987f52245a01874c3b67ac86797fd6ce730638b4 Mon Sep 17 00:00:00 2001 From: Jan Niklas Hasse Date: Tue, 11 Feb 2025 16:36:36 +0100 Subject: [PATCH] Bugfix: Jobs couldn't add new Jobs during Jobs::step --- src/window.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/window.cpp b/src/window.cpp index 9367e314..9f495d17 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -370,9 +370,13 @@ void Window::stepIfNeeded() { #ifdef JNGL_PERFORMANCE_OVERLAY auto start = std::chrono::steady_clock::now(); #endif - for (auto& job : jobs) { - job->step(); + + // use oldschool for loop here, so that Jobs can add other Jobs during step(): + const size_t numOfJobs = jobs.size(); + for (size_t i = 0; i < numOfJobs; ++i) { + jobs[i]->step(); } + for (auto job : jobsToRemove) { const auto it = std::find_if(jobs.begin(), jobs.end(), [job](const auto& p) { return p.get() == job; });