summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-06-14 13:26:47 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-06-14 13:26:47 +0200
commitfbabb105c3427fbbce4dfc3ea9701ba473298206 (patch)
treee982979c63cfbbdfc07040d0922cc88d8bc1e1b1 /src/render/Renderer.cpp
parentf0e4f6622e3e9addc530119b804d2f71395455e7 (diff)
gamma: use wlr's new gamma manager event
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index ce8cb0ff..5b61e70f 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -860,6 +860,24 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->ID);
}
+ // gamma stuff
+ if (pMonitor->gammaChanged) {
+ pMonitor->gammaChanged = false;
+
+ const auto PGAMMACTRL = wlr_gamma_control_manager_v1_get_control(g_pCompositor->m_sWLRGammaCtrlMgr, pMonitor->output);
+
+ if (!wlr_gamma_control_v1_apply(PGAMMACTRL, &pMonitor->output->pending)) {
+ Debug::log(ERR, "Could not apply gamma control to %s", pMonitor->szName.c_str());
+ return;
+ }
+
+ if (!wlr_output_test(pMonitor->output)) {
+ Debug::log(ERR, "Output test failed for setting gamma to %s", pMonitor->szName.c_str());
+ wlr_output_rollback(pMonitor->output);
+ wlr_gamma_control_v1_send_failed_and_destroy(PGAMMACTRL);
+ }
+ }
+
// Direct scanout first
if (!*PNODIRECTSCANOUT) {
if (attemptDirectScanout(pMonitor)) {