22 m_readOnly(Flags & DRM_MODE_PROP_IMMUTABLE),
23 m_atomic(Flags & DRM_MODE_PROP_ATOMIC),
31 if (
auto * props = drmModeObjectGetProperties(FD, ObjectId, ObjectType); props)
33 for (uint32_t index = 0; index < props->count_props; ++index)
35 if (
auto * prop = drmModeGetProperty(FD, props->props[index]); prop)
37 auto value = props->prop_values[index];
38 if (prop->flags & DRM_MODE_PROP_RANGE)
40 else if (prop->flags & DRM_MODE_PROP_ENUM)
41 result.emplace_back(std::shared_ptr<MythDRMProperty>(
new MythDRMEnumProperty(value, prop)));
42 else if (prop->flags & DRM_MODE_PROP_BITMASK)
44 else if (prop->flags & DRM_MODE_PROP_BLOB)
45 result.emplace_back(std::shared_ptr<MythDRMProperty>(
new MythDRMBlobProperty(FD, value, prop)));
46 else if (prop->flags & DRM_MODE_PROP_OBJECT)
48 else if (prop->flags & DRM_MODE_PROP_SIGNED_RANGE)
50 drmModeFreeProperty(prop);
53 drmModeFreeObjectProperties(props);
61 if (
Name.compare(prop->m_name, Qt::CaseInsensitive) == 0)
71 for (
int i = 0; i <
Property->count_values; ++i)
86 m_value(static_cast<int64_t>(Value))
88 for (
int i = 0; i <
Property->count_values; ++i)
90 auto value =
static_cast<int64_t
>(
Property->values[i]);
105 for (
int i = 0; i <
Property->count_enums; ++i)
112 for (
const auto & value :
m_enums)
113 values.append(QString(
"%1(%2)").arg(value.first).arg(value.second));
114 return QString(
"%1 Value: %2 Values: %3").arg(
m_name).arg(
m_value).arg(values.join(
", "));
126 if (
auto * blob = drmModeGetPropertyBlob(FD,
static_cast<uint32_t
>(Value)); blob)
128 m_blob = QByteArray(
reinterpret_cast<const char *
>(blob->data),
static_cast<int>(blob->length));
129 drmModeFreePropertyBlob(blob);