OSDN Git Service

drm_hwcomposer: reimplement Dump for DrmDisplayCompositor
[android-x86/external-drm_hwcomposer.git] / drmproperty.cpp
index d4468c7..7b4a4f9 100644 (file)
@@ -67,6 +67,10 @@ void DrmProperty::Init(drmModePropertyPtr p, uint64_t value) {
     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;
 }
 
 uint32_t DrmProperty::id() const {
@@ -78,6 +82,11 @@ std::string DrmProperty::name() const {
 }
 
 int DrmProperty::value(uint64_t *value) const {
+  if (type_ == DRM_PROPERTY_TYPE_BLOB) {
+    *value = value_;
+    return 0;
+  }
+
   if (values_.size() == 0)
     return -ENOENT;
 
@@ -93,6 +102,10 @@ int DrmProperty::value(uint64_t *value) const {
       *value = enums_[value_].value_;
       return 0;
 
+    case DRM_PROPERTY_TYPE_OBJECT:
+      *value = value_;
+      return 0;
+
     default:
       return -EINVAL;
   }