aboutsummaryrefslogtreecommitdiff
path: root/drm/DrmProperty.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drm/DrmProperty.cpp')
-rw-r--r--drm/DrmProperty.cpp75
1 files changed, 24 insertions, 51 deletions
diff --git a/drm/DrmProperty.cpp b/drm/DrmProperty.cpp
index 32f1c62..938b3ad 100644
--- a/drm/DrmProperty.cpp
+++ b/drm/DrmProperty.cpp
@@ -31,7 +31,7 @@
namespace android {
DrmProperty::DrmPropertyEnum::DrmPropertyEnum(drm_mode_property_enum *e)
- : value_(e->value), name_(e->name) {
+ : value(e->value), name(e->name) {
}
DrmProperty::DrmProperty(uint32_t obj_id, drmModePropertyPtr p,
@@ -47,70 +47,43 @@ void DrmProperty::Init(uint32_t obj_id, drmModePropertyPtr p, uint64_t value) {
value_ = value;
for (int i = 0; i < p->count_values; ++i)
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic):
values_.emplace_back(p->values[i]);
for (int i = 0; i < p->count_enums; ++i)
- enums_.emplace_back(DrmPropertyEnum(&p->enums[i]));
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic):
+ enums_.emplace_back(&p->enums[i]);
for (int i = 0; i < p->count_blobs; ++i)
+ // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic):
blob_ids_.emplace_back(p->blob_ids[i]);
-
- if (flags_ & DRM_MODE_PROP_RANGE)
- type_ = DRM_PROPERTY_TYPE_INT;
- else if (flags_ & DRM_MODE_PROP_ENUM)
- type_ = DRM_PROPERTY_TYPE_ENUM;
- else if (flags_ & DRM_MODE_PROP_OBJECT)
- type_ = DRM_PROPERTY_TYPE_OBJECT;
- else if (flags_ & DRM_MODE_PROP_BLOB)
- type_ = DRM_PROPERTY_TYPE_BLOB;
- else if (flags_ & DRM_MODE_PROP_BITMASK)
- type_ = DRM_PROPERTY_TYPE_BITMASK;
-}
-
-uint32_t DrmProperty::id() const {
- return id_;
-}
-
-std::string DrmProperty::name() const {
- return name_;
}
-std::tuple<int, uint64_t> DrmProperty::value() const {
- if (type_ == DRM_PROPERTY_TYPE_BLOB)
- return std::make_tuple(0, value_);
+std::optional<uint64_t> DrmProperty::GetValue() const {
+ if ((flags_ & DRM_MODE_PROP_BLOB) != 0)
+ return value_;
if (values_.empty())
- return std::make_tuple(-ENOENT, 0);
-
- switch (type_) {
- case DRM_PROPERTY_TYPE_INT:
- return std::make_tuple(0, value_);
-
- case DRM_PROPERTY_TYPE_ENUM:
- if (value_ >= enums_.size())
- return std::make_tuple(-ENOENT, 0);
+ return {};
- return std::make_tuple(0, enums_[value_].value_);
+ if ((flags_ & DRM_MODE_PROP_RANGE) != 0)
+ return value_;
- case DRM_PROPERTY_TYPE_OBJECT:
- return std::make_tuple(0, value_);
+ if ((flags_ & DRM_MODE_PROP_ENUM) != 0) {
+ if (value_ >= enums_.size())
+ return {};
- case DRM_PROPERTY_TYPE_BITMASK:
- default:
- return std::make_tuple(-EINVAL, 0);
+ return enums_[value_].value;
}
-}
-bool DrmProperty::is_immutable() const {
- return id_ && (flags_ & DRM_MODE_PROP_IMMUTABLE);
-}
+ if ((flags_ & DRM_MODE_PROP_OBJECT) != 0)
+ return value_;
-bool DrmProperty::is_range() const {
- return id_ && (flags_ & DRM_MODE_PROP_RANGE);
+ return {};
}
-std::tuple<int, uint64_t> DrmProperty::range_min() const {
- if (!is_range())
+std::tuple<int, uint64_t> DrmProperty::RangeMin() const {
+ if (!IsRange())
return std::make_tuple(-EINVAL, 0);
if (values_.empty())
return std::make_tuple(-ENOENT, 0);
@@ -118,8 +91,8 @@ std::tuple<int, uint64_t> DrmProperty::range_min() const {
return std::make_tuple(0, values_[0]);
}
-std::tuple<int, uint64_t> DrmProperty::range_max() const {
- if (!is_range())
+std::tuple<int, uint64_t> DrmProperty::RangeMax() const {
+ if (!IsRange())
return std::make_tuple(-EINVAL, 0);
if (values_.size() < 2)
return std::make_tuple(-ENOENT, 0);
@@ -130,8 +103,8 @@ std::tuple<int, uint64_t> DrmProperty::range_max() const {
std::tuple<uint64_t, int> DrmProperty::GetEnumValueWithName(
const std::string &name) const {
for (const auto &it : enums_) {
- if (it.name_ == name) {
- return std::make_tuple(it.value_, 0);
+ if (it.name == name) {
+ return std::make_tuple(it.value, 0);
}
}