aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/protocols/WaylandProtocol.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocols/WaylandProtocol.hpp')
-rw-r--r--src/protocols/WaylandProtocol.hpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/protocols/WaylandProtocol.hpp b/src/protocols/WaylandProtocol.hpp
new file mode 100644
index 00000000..04a58387
--- /dev/null
+++ b/src/protocols/WaylandProtocol.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "../defines.hpp"
+
+class CWaylandResource {
+ public:
+ CWaylandResource(wl_client* client, const wl_interface* wlInterface, uint32_t version, uint32_t id, bool destroyInDestructor = false);
+ ~CWaylandResource();
+
+ bool good();
+ wl_resource* resource();
+ uint32_t version();
+
+ void setImplementation(const void* impl, void* data, wl_resource_destroy_func_t df);
+
+ private:
+ bool m_bDestroyInDestructor = false;
+ bool m_bImplementationSet = false;
+ wl_client* m_pWLClient = nullptr;
+ wl_resource* m_pWLResource = nullptr;
+};
+
+interface IWaylandProtocol {
+ public:
+ IWaylandProtocol(const wl_interface* iface, const int& ver, const std::string& name);
+ ~IWaylandProtocol();
+
+ virtual void onDisplayDestroy();
+
+ virtual void bindManager(wl_client * client, void* data, uint32_t ver, uint32_t id) = 0;
+
+ private:
+ wl_global* m_pGlobal = nullptr;
+ wl_listener m_liDisplayDestroy;
+}; \ No newline at end of file