1 #pragma once 2 3 #include <kms++/kms++.h> 4 #include <set> 5 #include <string> 6 7 namespace kms 8 { 9 class ResourceManager 10 { 11 public: 12 ResourceManager(Card& card); 13 14 void reset(); 15 card()16 Card& card() const { return m_card; } 17 Connector* reserve_connector(const std::string& name = ""); 18 Connector* reserve_connector(Connector* conn); 19 void release_connector(Connector* conn); 20 Crtc* reserve_crtc(Connector* conn); 21 Crtc* reserve_crtc(Crtc* crtc); 22 void release_crtc(Crtc* crtc); 23 Plane* reserve_plane(Crtc* crtc, PlaneType type, PixelFormat format = PixelFormat::Undefined); 24 Plane* reserve_plane(Plane* plane); 25 Plane* reserve_generic_plane(Crtc* crtc, PixelFormat format = PixelFormat::Undefined); 26 Plane* reserve_primary_plane(Crtc* crtc, PixelFormat format = PixelFormat::Undefined); 27 Plane* reserve_overlay_plane(Crtc* crtc, PixelFormat format = PixelFormat::Undefined); 28 void release_plane(Plane* plane); 29 30 private: 31 Card& m_card; 32 std::set<Connector*> m_reserved_connectors; 33 std::set<Crtc*> m_reserved_crtcs; 34 std::set<Plane*> m_reserved_planes; 35 }; 36 37 } // namespace kms 38