diff options
| author | Ikalco <73481042+ikalco@users.noreply.github.com> | 2025-08-29 15:16:40 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-29 22:16:40 +0200 |
| commit | ea42041f936d5810c5cfa45d6bece12dde2fd9b6 (patch) | |
| tree | d600f5a6a4fcdee8f3e24b666d1ea57ccc88cdd6 /src/managers | |
| parent | 05a1c0aa7395d19213e587c83089ecbd7b92085c (diff) | |
protocols: implement pointer-warp-v1 (#11469)
Diffstat (limited to 'src/managers')
| -rw-r--r-- | src/managers/ProtocolManager.cpp | 3 | ||||
| -rw-r--r-- | src/managers/SeatManager.cpp | 5 | ||||
| -rw-r--r-- | src/managers/SeatManager.hpp | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/managers/ProtocolManager.cpp b/src/managers/ProtocolManager.cpp index b70d3b7d..c9690aba 100644 --- a/src/managers/ProtocolManager.cpp +++ b/src/managers/ProtocolManager.cpp @@ -64,6 +64,7 @@ #include "../protocols/XDGBell.hpp" #include "../protocols/ExtWorkspace.hpp" #include "../protocols/ExtDataDevice.hpp" +#include "../protocols/PointerWarp.hpp" #include "../helpers/Monitor.hpp" #include "../render/Renderer.hpp" @@ -192,6 +193,7 @@ CProtocolManager::CProtocolManager() { PROTO::xdgBell = makeUnique<CXDGSystemBellProtocol>(&xdg_system_bell_v1_interface, 1, "XDGBell"); PROTO::extWorkspace = makeUnique<CExtWorkspaceProtocol>(&ext_workspace_manager_v1_interface, 1, "ExtWorkspace"); PROTO::extDataDevice = makeUnique<CExtDataDeviceProtocol>(&ext_data_control_manager_v1_interface, 1, "ExtDataDevice"); + PROTO::pointerWarp = makeUnique<CPointerWarpProtocol>(&wp_pointer_warp_v1_interface, 1, "PointerWarp"); if (*PENABLECM) PROTO::colorManagement = makeUnique<CColorManagementProtocol>(&wp_color_manager_v1_interface, 1, "ColorManagement", *PDEBUGCM); @@ -295,6 +297,7 @@ CProtocolManager::~CProtocolManager() { PROTO::xdgBell.reset(); PROTO::extWorkspace.reset(); PROTO::extDataDevice.reset(); + PROTO::pointerWarp.reset(); for (auto& [_, lease] : PROTO::lease) { lease.reset(); diff --git a/src/managers/SeatManager.cpp b/src/managers/SeatManager.cpp index bc4f2dfc..15316dc6 100644 --- a/src/managers/SeatManager.cpp +++ b/src/managers/SeatManager.cpp @@ -58,7 +58,7 @@ uint32_t CSeatManager::nextSerial(SP<CWLSeatResource> seatResource) { return serial; } -bool CSeatManager::serialValid(SP<CWLSeatResource> seatResource, uint32_t serial) { +bool CSeatManager::serialValid(SP<CWLSeatResource> seatResource, uint32_t serial, bool erase) { if (!seatResource) return false; @@ -68,7 +68,8 @@ bool CSeatManager::serialValid(SP<CWLSeatResource> seatResource, uint32_t serial for (auto it = container->serials.begin(); it != container->serials.end(); ++it) { if (*it == serial) { - container->serials.erase(it); + if (erase) + container->serials.erase(it); return true; } } diff --git a/src/managers/SeatManager.hpp b/src/managers/SeatManager.hpp index 2d73e087..fe11f930 100644 --- a/src/managers/SeatManager.hpp +++ b/src/managers/SeatManager.hpp @@ -76,7 +76,7 @@ class CSeatManager { uint32_t nextSerial(SP<CWLSeatResource> seatResource); // pops the serial if it was valid, meaning it is consumed. - bool serialValid(SP<CWLSeatResource> seatResource, uint32_t serial); + bool serialValid(SP<CWLSeatResource> seatResource, uint32_t serial, bool erase = true); void onSetCursor(SP<CWLSeatResource> seatResource, uint32_t serial, SP<CWLSurfaceResource> surf, const Vector2D& hotspot); |
