summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-30 22:41:24 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-30 22:41:24 +0200
commitf96b611651f5bbaf2b0401d44f4250f699b15be2 (patch)
tree5a55fd918a984e455ef2c9db553deef4764b1664 /src
parent4211b37e22791793cb948e447e2ba4d798af3859 (diff)
support wlr-output-power-management
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp3
-rw-r--r--src/Compositor.hpp1
-rw-r--r--src/events/Events.hpp3
-rw-r--r--src/events/Misc.cpp11
-rw-r--r--src/includes.hpp1
5 files changed, 19 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 74c3a1e8..714a0351 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -96,6 +96,8 @@ CCompositor::CCompositor() {
m_sWLROutputLayout = wlr_output_layout_create();
+ m_sWLROutputPowerMgr = wlr_output_power_manager_v1_create(m_sWLDisplay);
+
m_sWLRScene = wlr_scene_create();
wlr_scene_attach_output_layout(m_sWLRScene, m_sWLROutputLayout);
@@ -195,6 +197,7 @@ void CCompositor::initAllSignals() {
addWLSignal(&m_sWLRVirtPtrMgr->events.new_virtual_pointer, &Events::listen_newVirtPtr, m_sWLRVirtPtrMgr, "VirtPtrMgr");
addWLSignal(&m_sWLRRenderer->events.destroy, &Events::listen_RendererDestroy, m_sWLRRenderer, "WLRRenderer");
addWLSignal(&m_sWLRIdleInhibitMgr->events.new_inhibitor, &Events::listen_newIdleInhibitor, m_sWLRIdleInhibitMgr, "WLRIdleInhibitMgr");
+ addWLSignal(&m_sWLROutputPowerMgr->events.set_mode, &Events::listen_powerMgrSetMode, m_sWLROutputPowerMgr, "PowerMgr");
if (m_sWLRSession)
addWLSignal(&m_sWLRSession->events.active, &Events::listen_sessionActive, m_sWLRSession, "Session");
}
diff --git a/src/Compositor.hpp b/src/Compositor.hpp
index 00b758e3..0357e08f 100644
--- a/src/Compositor.hpp
+++ b/src/Compositor.hpp
@@ -65,6 +65,7 @@ public:
wlr_xdg_foreign_registry* m_sWLRForeignRegistry;
wlr_idle_inhibit_manager_v1* m_sWLRIdleInhibitMgr;
wlr_pointer_gestures_v1* m_sWLRPointerGestures;
+ wlr_output_power_manager_v1* m_sWLROutputPowerMgr;
// ------------------------------------------------- //
diff --git a/src/events/Events.hpp b/src/events/Events.hpp
index ba8088a8..db15eceb 100644
--- a/src/events/Events.hpp
+++ b/src/events/Events.hpp
@@ -130,4 +130,7 @@ namespace Events {
LISTENER(pinchBegin);
LISTENER(pinchUpdate);
LISTENER(pinchEnd);
+
+ // Power
+ LISTENER(powerMgrSetMode);
}; \ No newline at end of file
diff --git a/src/events/Misc.cpp b/src/events/Misc.cpp
index 503d2111..5caa8984 100644
--- a/src/events/Misc.cpp
+++ b/src/events/Misc.cpp
@@ -163,4 +163,15 @@ void Events::listener_sessionActive(wl_listener* listener, void* data) {
Debug::log(LOG, "Session got activated!");
g_pCompositor->m_bSessionActive = true;
+}
+
+void Events::listener_powerMgrSetMode(wl_listener* listener, void* data) {
+ Debug::log(LOG, "PowerMgr set mode!");
+
+ const auto EVENT = (wlr_output_power_v1_set_mode_event*)data;
+
+ wlr_output_enable(EVENT->output, EVENT->mode == 1);
+
+ if (!wlr_output_commit(EVENT->output))
+ Debug::log(ERR, "Couldn't set power mode");
} \ No newline at end of file
diff --git a/src/includes.hpp b/src/includes.hpp
index e8367f50..8b350611 100644
--- a/src/includes.hpp
+++ b/src/includes.hpp
@@ -93,6 +93,7 @@ extern "C" {
#include <wlr/types/wlr_xdg_foreign_v1.h>
#include <wlr/types/wlr_xdg_foreign_v2.h>
#include <wlr/types/wlr_pointer_gestures_v1.h>
+#include <wlr/types/wlr_output_power_management_v1.h>
}
#undef class