From 71ade43d588ec93af6b46df7c860fbc98f6b2d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Zag=C3=B3rowski?= Date: Wed, 13 Sep 2023 17:49:07 +0200 Subject: [PATCH] fix memory errors. oops! --- src/main.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8d1406e..97423e7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -72,17 +73,29 @@ void changeMonitor(bool quiet, std::string value) CMonitor* nextMonitor = nullptr; + uint64_t monitorCount = g_pCompositor->m_vMonitors.size(); + + int delta = 0; + if (value == "next" || value == "+1") { - nextMonitor = g_pCompositor->getMonitorFromID(monitor->ID + 1); + delta = 1; } else if (value == "prev" || value == "-1") { - nextMonitor = g_pCompositor->getMonitorFromID(monitor->ID - 1); + delta = -1; } else { Debug::log(WARN, "Invalid monitor value: %s", value.c_str()); return; } + int nextMonitorIndex = (monitor->ID + delta) % monitorCount; + + if (nextMonitorIndex < 0) { + nextMonitorIndex += monitorCount; + } + + nextMonitor = g_pCompositor->m_vMonitors[nextMonitorIndex].get(); + int nextWorkspace = nextMonitor->activeWorkspace; if (quiet) {