diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-07-24 00:36:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-24 00:36:29 +0200 |
| commit | 31cc7f3b87d1d9670b66e73e3720da2e2da49acd (patch) | |
| tree | d39c0e974bbaab8e2622fb32c1b0b037f22d6db9 /src/render/Renderer.cpp | |
| parent | ecc04e8ba7469fb01c5a066bf1c48d5cd58d1a18 (diff) | |
core: move workspace ptrs to weak (#11194)
Fixes some race conditions that come up in tests. We only clean up workspaces when we render a frame. With this, they are always cleared instantly.
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index e09de913..918a6e94 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -941,14 +941,14 @@ void CHyprRenderer::renderAllClientsForWorkspace(PHLMONITOR pMonitor, PHLWORKSPA } // special - for (auto const& ws : g_pCompositor->m_workspaces) { + for (auto const& ws : g_pCompositor->getWorkspaces()) { if (ws->m_alpha->value() <= 0.F || !ws->m_isSpecialWorkspace) continue; if (ws->m_hasFullscreenWindow) - renderWorkspaceWindowsFullscreen(pMonitor, ws, time); + renderWorkspaceWindowsFullscreen(pMonitor, ws.lock(), time); else - renderWorkspaceWindows(pMonitor, ws, time); + renderWorkspaceWindows(pMonitor, ws.lock(), time); } // pinned always above @@ -1225,7 +1225,6 @@ void CHyprRenderer::renderMonitor(PHLMONITOR pMonitor, bool commit) { if (pMonitor->m_id == m_mostHzMonitor->m_id || *PVFR == 1) { // unfortunately with VFR we don't have the guarantee mostHz is going to be updated all the time, so we have to ignore that - g_pCompositor->sanityCheckWorkspaces(); g_pConfigManager->dispatchExecOnce(); // We exec-once when at least one monitor starts refreshing, meaning stuff has init'd @@ -2192,7 +2191,7 @@ void CHyprRenderer::recheckSolitaryForMonitor(PHLMONITOR pMonitor) { if (pMonitor->m_activeSpecialWorkspace) return; - for (auto const& ws : g_pCompositor->m_workspaces) { + for (auto const& ws : g_pCompositor->getWorkspaces()) { if (ws->m_alpha->value() <= 0.F || !ws->m_isSpecialWorkspace || ws->m_monitor != pMonitor) continue; |
