Fix stub log memory leaking if imgui rendering is disabled

This commit is contained in:
PJB3005
2026-03-29 18:21:27 +02:00
parent 2711229946
commit 4091e3d155
3 changed files with 15 additions and 4 deletions
+3
View File
@@ -174,6 +174,7 @@ namespace dusk {
void ImGuiConsole::draw() {
if (CheckMenuViewToggle(ImGuiKey_F1, m_isHidden)) {
m_menuTools.afterDraw();
return;
}
@@ -187,6 +188,8 @@ namespace dusk {
ImGui::EndMainMenuBar();
}
m_menuTools.afterDraw();
}
bool ImGuiConsole::CheckMenuViewToggle(ImGuiKey key, bool& active) {
+1
View File
@@ -23,6 +23,7 @@ namespace dusk {
ImGuiMenuTools();
void draw();
void afterDraw();
void ShowDebugOverlay();
void ShowCameraOverlay();
+11 -4
View File
@@ -36,18 +36,20 @@ namespace dusk {
std::lock_guard lock(StubLogMutex);
if (StubLogBuffer.size() > 1024 * 1024) {
DuskLog.warn("Stub log FULL. Dropping logs!");
return;
}
LineOffsets.push_back(StubLogBuffer.size());
const auto levelName = LogLevelName(level);
StubLogBuffer.appendf("[%s | %s] %s\n", levelName, module, message);
}
static void ClearPastFrame();
void ImGuiMenuTools::ShowStubLog() {
std::lock_guard lock(StubLogMutex);
if (!ImGuiConsole::CheckMenuViewToggle(ImGuiKey_F5, m_showStubLog)) {
ClearPastFrame();
return;
}
@@ -78,7 +80,6 @@ namespace dusk {
}
ImGui::End();
ClearPastFrame();
}
void ClearPastFrame() {
@@ -88,4 +89,10 @@ namespace dusk {
StubLogBuffer.clear();
LineOffsets.clear();
}
void ImGuiMenuTools::afterDraw() {
std::lock_guard lock(StubLogMutex);
ClearPastFrame();
}
}