property.py 文件源码

python
阅读 34 收藏 0 点赞 0 评论 0

项目:pydrm 作者: notro 项目源码 文件源码
def fetch(self):
        self.type_name = "enum"
        arg = DrmModeObjGetPropertyC()
        arg.prop_id = self.id

        fcntl.ioctl(self._drm.fd, DRM_IOCTL_MODE_GETPROPERTY, arg)

        if not (arg.count_enum_blobs and (arg.flags & DRM_MODE_PROP_ENUM)):
            raise ValueError("not an enum property")

        if arg.count_values != arg.count_enum_blobs:
            raise ValueError("count_values != count_enum_blobs")

        values = (ctypes.c_uint64*arg.count_values)()
        arg.values_ptr = ctypes.cast(ctypes.pointer(values), ctypes.c_void_p).value

        enum_blobs = (DrmModePropertyEnumC*arg.count_enum_blobs)()
        arg.enum_blob_ptr = ctypes.cast(ctypes.pointer(enum_blobs), ctypes.c_void_p).value

        fcntl.ioctl(self._drm.fd, DRM_IOCTL_MODE_GETPROPERTY, arg)

        self.enum = {}
        for i in range(arg.count_enum_blobs):
            self.enum[int(values[i])] = enum_blobs[i].name

        self._arg = arg
        self.name = arg.name
        self.flags = arg.flags
        self.immutable = True if (arg.flags & DRM_MODE_PROP_IMMUTABLE) else False
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号