diff options
| author | Philip Damianik <39028343+pdamianik@users.noreply.github.com> | 2023-09-10 14:14:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-10 13:14:27 +0100 |
| commit | 6c855dd6e42603ffc68c199b9647e002c557a205 (patch) | |
| tree | bd9e74a582433bcfddcca3fa227613e852f61c38 /src/render/Renderer.cpp | |
| parent | d490f198a47564805ab0ee122afa77d625661ae0 (diff) | |
internal: Fix wlr output management (#3234)
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index bff9fab4..789a9ba6 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1135,7 +1135,7 @@ void CHyprRenderer::setWindowScanoutMode(CWindow* pWindow) { void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool test) { wlr_output_configuration_head_v1* head; - bool noError = true; + bool ok = true; wl_list_for_each(head, &config->heads, link) { @@ -1160,29 +1160,24 @@ void CHyprRenderer::outputMgrApplyTest(wlr_output_configuration_v1* config, bool commandForCfg += std::to_string(head->state.custom_mode.width) + "x" + std::to_string(head->state.custom_mode.height) + "@" + std::to_string(head->state.custom_mode.refresh / 1000.f) + ","; - commandForCfg += std::to_string(head->state.x) + "x" + std::to_string(head->state.y) + "," + std::to_string(head->state.scale); + commandForCfg += std::to_string(head->state.x) + "x" + std::to_string(head->state.y) + "," + std::to_string(head->state.scale) + ",transform," + + std::to_string((int)head->state.transform); if (!test) { g_pConfigManager->parseKeyword("monitor", commandForCfg, true); - - std::string transformStr = std::string(OUTPUT->name) + ",transform," + std::to_string((int)OUTPUT->transform); - - const auto PMONITOR = g_pCompositor->getMonitorFromName(OUTPUT->name); - - if (!PMONITOR || OUTPUT->transform != PMONITOR->transform) - g_pConfigManager->parseKeyword("monitor", transformStr); + wlr_output_state_set_adaptive_sync_enabled(&OUTPUT->pending, head->state.adaptive_sync_enabled); } - noError = wlr_output_test(OUTPUT); + ok = wlr_output_test(OUTPUT); - if (!noError) + if (!ok) break; } if (!test) g_pConfigManager->m_bWantsMonitorReload = true; // for monitor keywords - if (noError) + if (ok) wlr_output_configuration_v1_send_succeeded(config); else wlr_output_configuration_v1_send_failed(config); @@ -1859,6 +1854,8 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR EMIT_HOOK_EVENT("monitorLayoutChanged", nullptr); + Events::listener_change(nullptr, nullptr); + return true; } |
