From 1936e902efcf3abbfc78316c50e859dda9433401 Mon Sep 17 00:00:00 2001 From: Diject Date: Mon, 29 Dec 2025 14:58:29 +0300 Subject: [PATCH] Improve camera cleanup in map extraction process --- apps/openmw/mapextractor.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mapextractor.cpp b/apps/openmw/mapextractor.cpp index 31d8ba33fb..744e454492 100644 --- a/apps/openmw/mapextractor.cpp +++ b/apps/openmw/mapextractor.cpp @@ -325,6 +325,12 @@ namespace OMW else { Log(Debug::Info) << "No cells to extract"; + // Clean up any cameras that may have been created + if (mLocalMap) + { + mLocalMap->cleanupCameras(); + mLocalMap->setExtractionMode(false); + } } } @@ -388,14 +394,17 @@ namespace OMW mPendingExtractions.erase(mPendingExtractions.begin()); + // Clean up the camera for the current cell immediately after saving + // This prevents memory buildup when processing many cells + if (mLocalMap) + mLocalMap->cleanupCameras(); + if (!mPendingExtractions.empty()) { processNextCell(); } else { - // Clean up cameras only after ALL extractions are complete - mLocalMap->cleanupCameras(); // Disable extraction mode mLocalMap->setExtractionMode(false); Log(Debug::Info) << "Extraction of active local maps complete"; @@ -418,14 +427,16 @@ namespace OMW mPendingExtractions.erase(mPendingExtractions.begin()); + // Clean up cameras even after timeout + if (mLocalMap) + mLocalMap->cleanupCameras(); + if (!mPendingExtractions.empty()) { processNextCell(); } else { - // Clean up cameras even if we timed out - mLocalMap->cleanupCameras(); // Disable extraction mode mLocalMap->setExtractionMode(false); Log(Debug::Info) << "Extraction of active local maps complete";