mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-09-17 08:48:22 +00:00
monitor: wrap usage of wlr_output_state
for better control and convenience in usage. fixes #4546
This commit is contained in:
@@ -2317,28 +2317,24 @@ void CConfigManager::ensureVRR(CMonitor* pMonitor) {
|
||||
|
||||
if (USEVRR == 0) {
|
||||
if (m->vrrActive) {
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 0);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 0);
|
||||
|
||||
if (!wlr_output_commit_state(m->output, &m->outputState))
|
||||
if (!m->state.commit())
|
||||
Debug::log(ERR, "Couldn't commit output {} in ensureVRR -> false", m->output->name);
|
||||
|
||||
pMonitor->clearState();
|
||||
}
|
||||
m->vrrActive = false;
|
||||
return;
|
||||
} else if (USEVRR == 1) {
|
||||
if (!m->vrrActive) {
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 1);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 1);
|
||||
|
||||
if (!wlr_output_test_state(m->output, &m->outputState)) {
|
||||
if (!m->state.test()) {
|
||||
Debug::log(LOG, "Pending output {} does not accept VRR.", m->output->name);
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 0);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 0);
|
||||
}
|
||||
|
||||
if (!wlr_output_commit_state(m->output, &m->outputState))
|
||||
if (!m->state.commit())
|
||||
Debug::log(ERR, "Couldn't commit output {} in ensureVRR -> true", m->output->name);
|
||||
|
||||
pMonitor->clearState();
|
||||
}
|
||||
m->vrrActive = true;
|
||||
return;
|
||||
@@ -2354,25 +2350,21 @@ void CConfigManager::ensureVRR(CMonitor* pMonitor) {
|
||||
const auto WORKSPACEFULL = PWORKSPACE->m_bHasFullscreenWindow && PWORKSPACE->m_efFullscreenMode == FULLSCREEN_FULL;
|
||||
|
||||
if (WORKSPACEFULL && m->output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_DISABLED) {
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 1);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 1);
|
||||
|
||||
if (!wlr_output_test_state(m->output, &m->outputState)) {
|
||||
if (!m->state.test()) {
|
||||
Debug::log(LOG, "Pending output {} does not accept VRR.", m->output->name);
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 0);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 0);
|
||||
}
|
||||
|
||||
if (!wlr_output_commit_state(m->output, &m->outputState))
|
||||
if (!m->state.commit())
|
||||
Debug::log(ERR, "Couldn't commit output {} in ensureVRR -> true", m->output->name);
|
||||
|
||||
pMonitor->clearState();
|
||||
|
||||
} else if (!WORKSPACEFULL && m->output->adaptive_sync_status == WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED) {
|
||||
wlr_output_state_set_adaptive_sync_enabled(&m->outputState, 0);
|
||||
wlr_output_state_set_adaptive_sync_enabled(m->state.wlr(), 0);
|
||||
|
||||
if (!wlr_output_commit_state(m->output, &m->outputState))
|
||||
if (!m->state.commit())
|
||||
Debug::log(ERR, "Couldn't commit output {} in ensureVRR -> false", m->output->name);
|
||||
|
||||
pMonitor->clearState();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user