diff options
Diffstat (limited to 'libkms++')
-rw-r--r-- | libkms++/crtc.cpp | 15 | ||||
-rw-r--r-- | libkms++/crtc.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/libkms++/crtc.cpp b/libkms++/crtc.cpp index c6d79e9..deadd62 100644 --- a/libkms++/crtc.cpp +++ b/libkms++/crtc.cpp @@ -80,6 +80,21 @@ int Crtc::disable_plane(Plane* plane) return drmModeSetPlane(card().fd(), plane->id(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } +Plane* Crtc::get_primary_plane() +{ + for (Plane* p : get_possible_planes()) { + if (p->plane_type() != PlaneType::Primary) + continue; + + if (p->crtc_id() != id()) + continue; + + return p; + } + + throw invalid_argument("No primary plane for crtc " + id()); +} + int Crtc::page_flip(Framebuffer& fb, void *data) { return drmModePageFlip(card().fd(), id(), fb.id(), DRM_MODE_PAGE_FLIP_EVENT, data); diff --git a/libkms++/crtc.h b/libkms++/crtc.h index 48baf1b..abe6fed 100644 --- a/libkms++/crtc.h +++ b/libkms++/crtc.h @@ -24,6 +24,8 @@ public: int disable_plane(Plane* plane); + Plane* get_primary_plane(); + int page_flip(Framebuffer& fb, void *data); int page_flip(Framebuffer& fb, PageFlipHandlerBase* data) { return page_flip(fb, (void*)data); } |