diff --git a/src/graphics/render/ChunksRenderer.cpp b/src/graphics/render/ChunksRenderer.cpp index ac93b46b..8b3b6a88 100644 --- a/src/graphics/render/ChunksRenderer.cpp +++ b/src/graphics/render/ChunksRenderer.cpp @@ -90,6 +90,13 @@ void ChunksRenderer::process(std::shared_ptr chunk, BlocksRenderer& rende renderer.build(chunk.get(), level->chunksStorage.get()); } +void ChunksRenderer::enqueueJob(std::shared_ptr job) { + jobsMutex.lock(); + jobs.push(job); + jobsMutex.unlock(); + jobsMutexCondition.notify_one(); +} + std::shared_ptr ChunksRenderer::render(std::shared_ptr chunk, bool important) { chunk->setModified(false); @@ -106,10 +113,7 @@ std::shared_ptr ChunksRenderer::render(std::shared_ptr chunk, bool } inwork[key] = true; - jobsMutex.lock(); - jobs.push(chunk); - jobsMutex.unlock(); - jobsMutexCondition.notify_one(); + enqueueJob(chunk); return nullptr; } diff --git a/src/graphics/render/ChunksRenderer.h b/src/graphics/render/ChunksRenderer.h index a6934456..37247ff4 100644 --- a/src/graphics/render/ChunksRenderer.h +++ b/src/graphics/render/ChunksRenderer.h @@ -51,6 +51,7 @@ class ChunksRenderer { const EngineSettings& settings; std::vector> workersBlocked; + void enqueueJob(std::shared_ptr chunk); void threadLoop(int index); void process(std::shared_ptr chunk, BlocksRenderer& renderer); public: