From 6bc7077ff215bb2a3fc017560dd5a814aeaf4f6d Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Mon, 23 May 2016 09:39:01 +0300 Subject: Add Crtc::get_primary_plane --- libkms++/crtc.cpp | 15 +++++++++++++++ libkms++/crtc.h | 2 ++ 2 files changed, 17 insertions(+) (limited to 'libkms++') 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); } -- cgit v1.2.3