diff options
| author | Alessio Molinari <alessio.molinari@strg.at> | 2023-11-12 14:14:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-12 13:14:05 +0000 |
| commit | 1bfd4a2bff5f67872b868d519fbb45b32aa72b1f (patch) | |
| tree | 300257e5a9eb63b5b0c9b4c3d8c775c1b1a24f44 /src/render/Renderer.cpp | |
| parent | 91cbe93cf875c064847c76c6501d2a22c3f0abec (diff) | |
output-layout: fix wlroots display handling (#3718)
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 98dcf7f5..65aa7138 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -2,6 +2,7 @@ #include "../Compositor.hpp" #include "linux-dmabuf-unstable-v1-protocol.h" #include "../helpers/Region.hpp" +#include <algorithm> CHyprRenderer::CHyprRenderer() { const auto ENV = getenv("WLR_DRM_NO_ATOMIC"); @@ -1287,13 +1288,22 @@ void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool break; } - if (!test) + if (!test) { g_pConfigManager->m_bWantsMonitorReload = true; // for monitor keywords + // if everything is disabled, performMonitorReload won't be called from renderMonitor + bool allDisabled = std::all_of(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), + [](const auto m) { return !m->m_bEnabled || g_pCompositor->m_pUnsafeOutput == m.get(); }); + if (allDisabled) { + Debug::log(LOG, "OutputMgr apply: All monitors disabled; performing monitor reload."); + g_pConfigManager->performMonitorReload(); + } + } if (ok) wlr_output_configuration_v1_send_succeeded(config); else wlr_output_configuration_v1_send_failed(config); + wlr_output_configuration_v1_destroy(config); Debug::log(LOG, "OutputMgr Applied/Tested."); @@ -1645,7 +1655,6 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR // if it's disabled, disable and ignore if (pMonitorRule->disabled) { - if (pMonitor->m_bEnabled) pMonitor->onDisconnect(); |
