• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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