summaryrefslogtreecommitdiff
path: root/src/protocols/XDGOutput.hpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-04-20 19:34:18 +0100
committerVaxry <vaxry@vaxry.net>2024-04-20 19:39:59 +0100
commit84ee839ca690c89dc9498e85eefcdec265d3a765 (patch)
treee8de1e29cd798814c898af4e2d1a7bb12f36fda7 /src/protocols/XDGOutput.hpp
parenta94534606412ec30620f68751382cea5b700ba8d (diff)
XDG-Output: move to hyprwayland-scanner
Diffstat (limited to 'src/protocols/XDGOutput.hpp')
-rw-r--r--src/protocols/XDGOutput.hpp37
1 files changed, 25 insertions, 12 deletions
diff --git a/src/protocols/XDGOutput.hpp b/src/protocols/XDGOutput.hpp
index 2469e600..d2314b7b 100644
--- a/src/protocols/XDGOutput.hpp
+++ b/src/protocols/XDGOutput.hpp
@@ -1,18 +1,28 @@
#pragma once
+#include "xdg-output-unstable-v1.hpp"
#include "WaylandProtocol.hpp"
#include <optional>
class CMonitor;
+class CXDGOutputProtocol;
-struct SXDGOutput {
- CMonitor* monitor = nullptr;
- std::unique_ptr<CWaylandResource> resource;
+class CXDGOutput {
+ public:
+ CXDGOutput(SP<CZxdgOutputV1> resource, CMonitor* monitor_);
+
+ void sendDetails();
+
+ private:
+ CMonitor* monitor = nullptr;
+ SP<CZxdgOutputV1> resource;
- std::optional<Vector2D> overridePosition;
+ std::optional<Vector2D> overridePosition;
- wl_client* client = nullptr;
- bool isXWayland = false;
+ wl_client* client = nullptr;
+ bool isXWayland = false;
+
+ friend class CXDGOutputProtocol;
};
class CXDGOutputProtocol : public IWaylandProtocol {
@@ -23,12 +33,15 @@ class CXDGOutputProtocol : public IWaylandProtocol {
void onManagerResourceDestroy(wl_resource* res);
void onOutputResourceDestroy(wl_resource* res);
- void onManagerGetXDGOutput(wl_client* client, wl_resource* resource, uint32_t id, wl_resource* outputResource);
+ void onManagerGetXDGOutput(CZxdgOutputManagerV1* mgr, uint32_t id, wl_resource* outputResource);
private:
- void updateOutputDetails(SXDGOutput* pOutput);
- void updateAllOutputs();
+ void updateAllOutputs();
+
+ std::vector<UP<CZxdgOutputManagerV1>> m_vManagerResources;
+ std::vector<UP<CXDGOutput>> m_vXDGOutputs;
+};
- std::vector<std::unique_ptr<CWaylandResource>> m_vManagerResources;
- std::vector<std::unique_ptr<SXDGOutput>> m_vXDGOutputs;
-}; \ No newline at end of file
+namespace PROTO {
+ inline UP<CXDGOutputProtocol> xdgOutput;
+};