summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2017-02-07 13:58:52 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-02-10 10:42:53 +0200
commit03a6821950bc85d5ae36dbd5fcc8d22b7e0c1d72 (patch)
tree066b3eb94f49b2bac3287801f90441abf2dca1a8
parent3fb72a77fa1d2fc5c685109eb7bd4b791a863d4f (diff)
PlaneType to bitmask
-rw-r--r--kms++/inc/kms++/plane.h6
-rw-r--r--kms++/src/plane.cpp16
2 files changed, 16 insertions, 6 deletions
diff --git a/kms++/inc/kms++/plane.h b/kms++/inc/kms++/plane.h
index d50e539..26f3951 100644
--- a/kms++/inc/kms++/plane.h
+++ b/kms++/inc/kms++/plane.h
@@ -7,9 +7,9 @@ namespace kms
enum class PlaneType
{
- Overlay = 0,
- Primary = 1,
- Cursor = 2,
+ Overlay = 1 << 0,
+ Primary = 1 << 1,
+ Cursor = 1 << 2,
};
struct PlanePriv;
diff --git a/kms++/src/plane.cpp b/kms++/src/plane.cpp
index 10aaeda..e19910b 100644
--- a/kms++/src/plane.cpp
+++ b/kms++/src/plane.cpp
@@ -50,10 +50,20 @@ bool Plane::supports_format(PixelFormat fmt) const
PlaneType Plane::plane_type() const
{
- if (card().has_has_universal_planes())
- return (PlaneType)get_prop_value("type");
- else
+ if (card().has_has_universal_planes()) {
+ switch (get_prop_value("type")) {
+ case DRM_PLANE_TYPE_OVERLAY:
+ return PlaneType::Overlay;
+ case DRM_PLANE_TYPE_PRIMARY:
+ return PlaneType::Primary;
+ case DRM_PLANE_TYPE_CURSOR:
+ return PlaneType::Cursor;
+ default:
+ throw invalid_argument("Bad plane type");
+ }
+ } else {
return PlaneType::Overlay;
+ }
}
vector<PixelFormat> Plane::get_formats() const