From 1932214bdb26c6234397d6f704bc30acc945abe6 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Wed, 22 Dec 2021 20:40:24 +0100 Subject: [PATCH] use deques for volatile arrays for no reallocs on pushes --- src/events/events.cpp | 7 +------ src/windowManager.cpp | 4 ++-- src/windowManager.hpp | 11 ++++++----- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index 67802ee..5fbcba4 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -381,9 +381,7 @@ CWindow* Events::remapFloatingWindow(int windowID, int forcemonitor) { } CWindow* Events::remapWindow(int windowID, bool wasfloating, int forcemonitor) { - - // Not const because we realloc the array later - auto PWINDOWINARR = g_pWindowManager->getWindowFromDrawable(windowID); + const auto PWINDOWINARR = g_pWindowManager->getWindowFromDrawable(windowID); if (!PWINDOWINARR) { Debug::log(ERR, "remapWindow called with an invalid window!"); @@ -496,9 +494,6 @@ CWindow* Events::remapWindow(int windowID, bool wasfloating, int forcemonitor) { PLASTWINDOW->setParentNodeID(newWindowSplitNode.getDrawable()); g_pWindowManager->addWindowToVectorSafe(newWindowSplitNode); - - // The array got reallocated, let's update the pointer - PWINDOWINARR = g_pWindowManager->getWindowFromDrawable(windowID); } else { PWINDOWINARR->setParentNodeID(0); } diff --git a/src/windowManager.cpp b/src/windowManager.cpp index a401a71..7d6c950 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -316,7 +316,7 @@ void CWindowManager::recieveEvent() { } void CWindowManager::cleanupUnusedWorkspaces() { - std::vector temp = workspaces; + std::deque temp = workspaces; workspaces.clear(); @@ -608,7 +608,7 @@ void CWindowManager::removeWindowFromVectorSafe(int64_t window) { if (!window) return; - std::vector temp = windows; + std::deque temp = windows; windows.clear(); diff --git a/src/windowManager.hpp b/src/windowManager.hpp index 68cc637..3e4f820 100644 --- a/src/windowManager.hpp +++ b/src/windowManager.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "KeybindManager.hpp" #include "utilities/Workspace.hpp" @@ -40,12 +41,12 @@ public: xcb_visualtype_t* VisualType; xcb_colormap_t Colormap; - std::vector windows; // windows never left. It has always been hiding amongst us. - std::vector unmappedWindows; + std::deque windows; // windows never left. It has always been hiding amongst us. + std::deque unmappedWindows; xcb_drawable_t LastWindow = -1; - std::vector workspaces; - std::vector activeWorkspaces; + std::deque workspaces; + std::deque activeWorkspaces; // Pipes SIPCPipe m_sIPCBarPipeIn = {ISDEBUG ? "/tmp/hypr/hyprbarind" : "/tmp/hypr/hyprbarin", 0}; @@ -55,7 +56,7 @@ public: uint64_t barWindowID = 0; GThread* barThread; /* Well right now anything but the bar but lol */ - std::vector trayclients; + std::deque trayclients; bool mainThreadBusy = false; bool animationUtilBusy = false;