diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index ebf113bf0a2..df0dd3e820b 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1332,7 +1332,7 @@ bool CMonitor::attemptDirectScanout() { if (DOEXPLICIT) { Debug::log(TRACE, "attemptDirectScanout: setting IN_FENCE for aq to {}", explicitWaitFD.get()); - output->state->setExplicitInFence(explicitWaitFD.get()); + output->state->setExplicitInFence(std::move(explicitWaitFD)); } bool ok = output->commit(); @@ -1443,7 +1443,7 @@ CMonitorState::CMonitorState(CMonitor* owner) : m_pOwner(owner) { } void CMonitorState::ensureBufferPresent() { - const auto STATE = m_pOwner->output->state->state(); + const auto& STATE = m_pOwner->output->state->state(); if (!STATE.enabled) { Debug::log(TRACE, "CMonitorState::ensureBufferPresent: Ignoring, monitor is not enabled"); return; diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 42445728077..9595f4d1779 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1461,13 +1461,6 @@ static hdr_output_metadata createHDRMetadata(SImageDescription settings, Aquamar } bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) { - // apply timelines for explicit sync - // save inFD otherwise reset will reset it - CFileDescriptor inFD{pMonitor->output->state->state().explicitInFence}; - pMonitor->output->state->resetExplicitFences(); - if (inFD.isValid()) - pMonitor->output->state->setExplicitInFence(inFD.get()); - static auto PHDR = CConfigValue("experimental:hdr"); const bool SUPPORTSPQ = pMonitor->output->parsedEDID.hdrMetadata.has_value() ? pMonitor->output->parsedEDID.hdrMetadata->supportsPQ : false; @@ -1514,7 +1507,8 @@ bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) { pMonitor->output->state->setCTM(pMonitor->ctm); } - bool ok = pMonitor->state.commit(); + bool ok = pMonitor->state.commit(); + const auto& inFD = pMonitor->output->state->state().explicitInFence; if (!ok) { if (inFD.isValid()) { Debug::log(TRACE, "Monitor state commit failed, retrying without a fence"); @@ -2288,7 +2282,7 @@ void CHyprRenderer::endRender() { return; } - PMONITOR->output->state->setExplicitInFence(fd.take()); + PMONITOR->output->state->setExplicitInFence(std::move(fd)); } else { if (isNvidia() && *PNVIDIAANTIFLICKER) glFinish();