summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kms++/src/crtc.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/kms++/src/crtc.cpp b/kms++/src/crtc.cpp
index 2d41bfa..1a46195 100644
--- a/kms++/src/crtc.cpp
+++ b/kms++/src/crtc.cpp
@@ -95,13 +95,21 @@ int Crtc::disable_plane(Plane* plane)
Plane* Crtc::get_primary_plane()
{
+ Plane *primary = NULL;
+
for (Plane* p : get_possible_planes()) {
if (p->plane_type() != PlaneType::Primary)
continue;
- return p;
+ if (p->crtc_id() == id())
+ return p;
+
+ primary = p;
}
+ if (primary)
+ return primary;
+
throw invalid_argument(string("No primary plane for crtc ") + to_string(id()));
}