summaryrefslogtreecommitdiff
path: root/src/protocols/RelativePointer.hpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-04-21 19:30:23 +0100
committerVaxry <vaxry@vaxry.net>2024-04-21 19:30:23 +0100
commit4954dcbbb352a72d41b43a6ab107388c17a0b21b (patch)
treec6023964f0a100eee801f44fc587d794f358c99f /src/protocols/RelativePointer.hpp
parent55f1f3fedfc6dc5da7f304bdfc8296a0a056f781 (diff)
relative-pointer: move to new impl
Diffstat (limited to 'src/protocols/RelativePointer.hpp')
-rw-r--r--src/protocols/RelativePointer.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/protocols/RelativePointer.hpp b/src/protocols/RelativePointer.hpp
new file mode 100644
index 00000000..93446e85
--- /dev/null
+++ b/src/protocols/RelativePointer.hpp
@@ -0,0 +1,46 @@
+#pragma once
+
+#include <memory>
+#include <vector>
+#include <cstdint>
+#include "WaylandProtocol.hpp"
+#include "relative-pointer-unstable-v1.hpp"
+#include "../helpers/Vector2D.hpp"
+
+class CRelativePointer {
+ public:
+ CRelativePointer(SP<CZwpRelativePointerV1> resource_);
+
+ void sendRelativeMotion(uint64_t time, const Vector2D& delta, const Vector2D& deltaUnaccel);
+
+ bool good();
+ wl_client* client();
+
+ private:
+ SP<CZwpRelativePointerV1> resource;
+ wl_client* pClient = nullptr;
+};
+
+class CRelativePointerProtocol : public IWaylandProtocol {
+ public:
+ CRelativePointerProtocol(const wl_interface* iface, const int& ver, const std::string& name);
+
+ virtual void bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id);
+
+ void sendRelativeMotion(uint64_t time, const Vector2D& delta, const Vector2D& deltaUnaccel);
+
+ private:
+ void onManagerResourceDestroy(wl_resource* res);
+ void destroyRelativePointer(CRelativePointer* pointer);
+ void onGetRelativePointer(CZwpRelativePointerManagerV1* pMgr, uint32_t id, wl_resource* pointer);
+
+ //
+ std::vector<UP<CZwpRelativePointerManagerV1>> m_vManagers;
+ std::vector<UP<CRelativePointer>> m_vRelativePointers;
+
+ friend class CRelativePointer;
+};
+
+namespace PROTO {
+ inline UP<CRelativePointerProtocol> relativePointer;
+}; \ No newline at end of file