From 3bcfa94ee4189faaa4daf661949e88cf28c00d94 Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:05:54 +0300 Subject: renderer: add render:non_shader_cm and fixes (#11900) --- src/render/Renderer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/render/Renderer.cpp') diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 0626271e..f8f4cec5 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1483,9 +1483,10 @@ static hdr_output_metadata createHDRMetadata(SImageDescription settings, S } bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) { - static auto PCT = CConfigValue("render:send_content_type"); - static auto PPASS = CConfigValue("render:cm_fs_passthrough"); - static auto PAUTOHDR = CConfigValue("render:cm_auto_hdr"); + static auto PCT = CConfigValue("render:send_content_type"); + static auto PPASS = CConfigValue("render:cm_fs_passthrough"); + static auto PAUTOHDR = CConfigValue("render:cm_auto_hdr"); + static auto PNONSHADER = CConfigValue("render:non_shader_cm"); static bool needsHDRupdate = false; @@ -1570,7 +1571,7 @@ bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) { pMonitor->m_output->state->setContentType(NContentType::toDRM(FS_WINDOW ? FS_WINDOW->getContentType() : CONTENT_TYPE_NONE)); if (FS_WINDOW != pMonitor->m_previousFSWindow) { - if (!FS_WINDOW || !pMonitor->needsCM() || !pMonitor->canNoShaderCM()) { + if (!FS_WINDOW || !pMonitor->needsCM() || !pMonitor->canNoShaderCM() || (*PNONSHADER == CM_NS_ONDEMAND && pMonitor->m_lastScanout.expired() && *PPASS != 1)) { if (pMonitor->m_noShaderCTM) { Debug::log(INFO, "[CM] No fullscreen CTM, restoring previous one"); pMonitor->m_noShaderCTM = false; -- cgit v1.2.3