diff options
Diffstat (limited to 'src/protocols/XDGOutput.hpp')
| -rw-r--r-- | src/protocols/XDGOutput.hpp | 37 |
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; +}; |
