summaryrefslogtreecommitdiff
path: root/kms++/src/drmpropobject.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2016-06-22 12:38:30 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2016-07-10 19:38:37 +0300
commita706f157b86e90696808025db01de99646d51a77 (patch)
tree699133c93fab2fe8881fd51dcf53a963ab66976d /kms++/src/drmpropobject.cpp
parentb66820089b4823f82392b7a17aaf122d53e2b822 (diff)
Fix property name lookup
Object types can have different properties with the same name, so we need to move name-based property lookup from Card to DrmPropObject. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'kms++/src/drmpropobject.cpp')
-rw-r--r--kms++/src/drmpropobject.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/kms++/src/drmpropobject.cpp b/kms++/src/drmpropobject.cpp
index f2edf8b..f5a3c97 100644
--- a/kms++/src/drmpropobject.cpp
+++ b/kms++/src/drmpropobject.cpp
@@ -45,6 +45,18 @@ void DrmPropObject::refresh_props()
drmModeFreeObjectProperties(props);
}
+Property* DrmPropObject::get_prop(const string& name) const
+{
+ for (auto pair : m_prop_values) {
+ auto prop = card().get_prop(pair.first);
+
+ if (name == prop->name())
+ return prop;
+ }
+
+ throw invalid_argument(string("property ") + name + " not found");
+}
+
uint64_t DrmPropObject::get_prop_value(uint32_t id) const
{
return m_prop_values.at(id);
@@ -75,7 +87,7 @@ int DrmPropObject::set_prop_value(uint32_t id, uint64_t value)
int DrmPropObject::set_prop_value(const string &name, uint64_t value)
{
- Property* prop = card().get_prop(name);
+ Property* prop = get_prop(name);
if (prop == nullptr)
throw invalid_argument("property not found: " + name);