summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-13 18:05:34 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-13 18:05:34 +0200
commitf8def68e7e761e33dd51c197ac89194a51fcb60f (patch)
tree1d12af5dd8df5f7e9897237d9b902804eade1281 /src
parent9f7382bca4ddc6617b0524645335723763c55302 (diff)
idle: implement new protocol
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp13
-rw-r--r--src/Compositor.hpp8
-rw-r--r--src/includes.hpp1
-rw-r--r--src/managers/input/IdleInhibitor.cpp12
-rw-r--r--src/managers/input/InputManager.cpp8
-rw-r--r--src/managers/input/Touch.cpp2
6 files changed, 30 insertions, 14 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 445e2e04..aeb6f5f0 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -187,7 +187,8 @@ void CCompositor::initServer() {
m_sWLRPresentation = wlr_presentation_create(m_sWLDisplay, m_sWLRBackend);
- m_sWLRIdle = wlr_idle_create(m_sWLDisplay);
+ m_sWLRIdle = wlr_idle_create(m_sWLDisplay);
+ m_sWLRIdleNotifier = wlr_idle_notifier_v1_create(m_sWLDisplay);
m_sWLRLayerShell = wlr_layer_shell_v1_create(m_sWLDisplay, 4);
@@ -2435,3 +2436,13 @@ CWindow* CCompositor::getForceFocus() {
return nullptr;
}
+
+void CCompositor::notifyIdleActivity() {
+ wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ wlr_idle_notifier_v1_notify_activity(g_pCompositor->m_sWLRIdleNotifier, g_pCompositor->m_sSeat.seat);
+}
+
+void CCompositor::setIdleActivityInhibit(bool inhibit) {
+ wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, inhibit);
+ wlr_idle_notifier_v1_set_inhibited(g_pCompositor->m_sWLRIdleNotifier, inhibit);
+}
diff --git a/src/Compositor.hpp b/src/Compositor.hpp
index 55633fc6..3f7cfac8 100644
--- a/src/Compositor.hpp
+++ b/src/Compositor.hpp
@@ -28,7 +28,8 @@
#include "hyprerror/HyprError.hpp"
#include "plugins/PluginSystem.hpp"
-enum eManagersInitStage {
+enum eManagersInitStage
+{
STAGE_PRIORITY = 0,
STAGE_LATE
};
@@ -53,6 +54,7 @@ class CCompositor {
wlr_xdg_activation_v1* m_sWLRXDGActivation;
wlr_output_layout* m_sWLROutputLayout;
wlr_idle* m_sWLRIdle;
+ wlr_idle_notifier_v1* m_sWLRIdleNotifier;
wlr_layer_shell_v1* m_sWLRLayerShell;
wlr_xdg_shell* m_sWLRXDGShell;
wlr_cursor* m_sWLRCursor;
@@ -170,7 +172,7 @@ class CCompositor {
CMonitor* getMonitorInDirection(const char&);
void updateAllWindowsAnimatedDecorationValues();
void updateWindowAnimatedDecorationValues(CWindow*);
- int getNextAvailableMonitorID(std::string const & name);
+ int getNextAvailableMonitorID(std::string const& name);
void moveWorkspaceToMonitor(CWorkspace*, CMonitor*);
void swapActiveWorkspaces(CMonitor*, CMonitor*);
CMonitor* getMonitorFromString(const std::string&);
@@ -197,6 +199,8 @@ class CCompositor {
void performUserChecks();
void moveWindowToWorkspaceSafe(CWindow* pWindow, CWorkspace* pWorkspace);
CWindow* getForceFocus();
+ void notifyIdleActivity();
+ void setIdleActivityInhibit(bool inhibit);
std::string explicitConfigPath;
diff --git a/src/includes.hpp b/src/includes.hpp
index f64c3938..d7792101 100644
--- a/src/includes.hpp
+++ b/src/includes.hpp
@@ -103,6 +103,7 @@ extern "C" {
#include <wlr/backend/wayland.h>
#include <wlr/types/wlr_session_lock_v1.h>
#include <wlr/types/wlr_single_pixel_buffer_v1.h>
+#include <wlr/types/wlr_idle_notify_v1.h>
#include <libdrm/drm_fourcc.h>
diff --git a/src/managers/input/IdleInhibitor.cpp b/src/managers/input/IdleInhibitor.cpp
index d54ec96a..d30cf9de 100644
--- a/src/managers/input/IdleInhibitor.cpp
+++ b/src/managers/input/IdleInhibitor.cpp
@@ -42,10 +42,10 @@ void CInputManager::recheckIdleInhibitorStatus() {
for (auto& ii : m_lIdleInhibitors) {
if (!ii.pWindow) {
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, false);
+ g_pCompositor->setIdleActivityInhibit(false);
return;
} else if (g_pHyprRenderer->shouldRenderWindow(ii.pWindow)) {
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, false);
+ g_pCompositor->setIdleActivityInhibit(false);
return;
}
}
@@ -56,21 +56,21 @@ void CInputManager::recheckIdleInhibitorStatus() {
continue;
if (w->m_eIdleInhibitMode == IDLEINHIBIT_ALWAYS) {
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, false);
+ g_pCompositor->setIdleActivityInhibit(false);
return;
}
if (w->m_eIdleInhibitMode == IDLEINHIBIT_FOCUS && g_pCompositor->isWindowActive(w.get())) {
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, false);
+ g_pCompositor->setIdleActivityInhibit(false);
return;
}
if (w->m_eIdleInhibitMode == IDLEINHIBIT_FULLSCREEN && w->m_bIsFullscreen && g_pCompositor->isWorkspaceVisible(w->m_iWorkspaceID)) {
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, false);
+ g_pCompositor->setIdleActivityInhibit(false);
return;
}
}
- wlr_idle_set_enabled(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat, true);
+ g_pCompositor->setIdleActivityInhibit(true);
return;
} \ No newline at end of file
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index cf7dee6e..f423fd0d 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -320,7 +320,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
m_bEmptyFocusCursorSet = false;
if (time)
- wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ g_pCompositor->notifyIdleActivity();
Vector2D surfaceLocal = surfacePos == Vector2D(-1337, -1337) ? surfaceCoords : mouseCoords - surfacePos;
@@ -432,7 +432,7 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) {
}
void CInputManager::onMouseButton(wlr_pointer_button_event* e) {
- wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ g_pCompositor->notifyIdleActivity();
EMIT_HOOK_EVENT("mouseButton", e);
@@ -607,7 +607,7 @@ void CInputManager::onMouseWheel(wlr_pointer_axis_event* e) {
bool passEvent = g_pKeybindManager->onAxisEvent(e);
- wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ g_pCompositor->notifyIdleActivity();
if (passEvent) {
wlr_seat_pointer_notify_axis(g_pCompositor->m_sSeat.seat, e->time_msec, e->orientation, factor * e->delta, std::round(factor * e->delta_discrete), e->source);
@@ -1067,7 +1067,7 @@ void CInputManager::onKeyboardKey(wlr_keyboard_key_event* e, SKeyboard* pKeyboar
bool passEvent = g_pKeybindManager->onKeyEvent(e, pKeyboard);
- wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ g_pCompositor->notifyIdleActivity();
if (passEvent) {
diff --git a/src/managers/input/Touch.cpp b/src/managers/input/Touch.cpp
index 0826e384..19e29c1b 100644
--- a/src/managers/input/Touch.cpp
+++ b/src/managers/input/Touch.cpp
@@ -48,7 +48,7 @@ void CInputManager::onTouchDown(wlr_touch_down_event* e) {
wlr_seat_touch_notify_down(g_pCompositor->m_sSeat.seat, m_sTouchData.touchFocusSurface, e->time_msec, e->touch_id, local.x, local.y);
- wlr_idle_notify_activity(g_pCompositor->m_sWLRIdle, g_pCompositor->m_sSeat.seat);
+ g_pCompositor->notifyIdleActivity();
}
void CInputManager::onTouchUp(wlr_touch_up_event* e) {