drm: save initial object prop values
This commit is contained in:
parent
637e5341d4
commit
593fe90695
2 changed files with 9 additions and 4 deletions
10
src/drm.cpp
10
src/drm.cpp
|
@ -294,7 +294,7 @@ void flip_handler_thread_run(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool get_properties(struct drm_t *drm, uint32_t obj_id, uint32_t obj_type, std::map<std::string, drmModePropertyRes *> &map)
|
static bool get_properties(struct drm_t *drm, uint32_t obj_id, uint32_t obj_type, std::map<std::string, drmModePropertyRes *> &map, std::map<std::string, uint64_t> &values)
|
||||||
{
|
{
|
||||||
drmModeObjectProperties *props = drmModeObjectGetProperties(drm->fd, obj_id, obj_type);
|
drmModeObjectProperties *props = drmModeObjectGetProperties(drm->fd, obj_id, obj_type);
|
||||||
if (!props) {
|
if (!props) {
|
||||||
|
@ -303,6 +303,7 @@ static bool get_properties(struct drm_t *drm, uint32_t obj_id, uint32_t obj_type
|
||||||
}
|
}
|
||||||
|
|
||||||
map = {};
|
map = {};
|
||||||
|
values = {};
|
||||||
|
|
||||||
for (uint32_t i = 0; i < props->count_props; i++) {
|
for (uint32_t i = 0; i < props->count_props; i++) {
|
||||||
drmModePropertyRes *prop = drmModeGetProperty(drm->fd, props->props[i]);
|
drmModePropertyRes *prop = drmModeGetProperty(drm->fd, props->props[i]);
|
||||||
|
@ -311,6 +312,7 @@ static bool get_properties(struct drm_t *drm, uint32_t obj_id, uint32_t obj_type
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
map[prop->name] = prop;
|
map[prop->name] = prop;
|
||||||
|
values[prop->name] = props->prop_values[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
drmModeFreeObjectProperties(props);
|
drmModeFreeObjectProperties(props);
|
||||||
|
@ -334,7 +336,7 @@ static bool get_resources(struct drm_t *drm)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!get_properties(drm, conn.id, DRM_MODE_OBJECT_CONNECTOR, conn.props)) {
|
if (!get_properties(drm, conn.id, DRM_MODE_OBJECT_CONNECTOR, conn.props, conn.initial_prop_values)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,7 +352,7 @@ static bool get_resources(struct drm_t *drm)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!get_properties(drm, crtc.id, DRM_MODE_OBJECT_CRTC, crtc.props)) {
|
if (!get_properties(drm, crtc.id, DRM_MODE_OBJECT_CRTC, crtc.props, crtc.initial_prop_values)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -374,7 +376,7 @@ static bool get_resources(struct drm_t *drm)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!get_properties(drm, plane.id, DRM_MODE_OBJECT_PLANE, plane.props)) {
|
if (!get_properties(drm, plane.id, DRM_MODE_OBJECT_PLANE, plane.props, plane.initial_prop_values)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,18 +27,21 @@ struct plane {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
drmModePlane *plane;
|
drmModePlane *plane;
|
||||||
std::map<std::string, drmModePropertyRes *> props;
|
std::map<std::string, drmModePropertyRes *> props;
|
||||||
|
std::map<std::string, uint64_t> initial_prop_values;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct crtc {
|
struct crtc {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
drmModeCrtc *crtc;
|
drmModeCrtc *crtc;
|
||||||
std::map<std::string, drmModePropertyRes *> props;
|
std::map<std::string, drmModePropertyRes *> props;
|
||||||
|
std::map<std::string, uint64_t> initial_prop_values;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct connector {
|
struct connector {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
drmModeConnector *connector;
|
drmModeConnector *connector;
|
||||||
std::map<std::string, drmModePropertyRes *> props;
|
std::map<std::string, drmModePropertyRes *> props;
|
||||||
|
std::map<std::string, uint64_t> initial_prop_values;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct fb {
|
struct fb {
|
||||||
|
|
Loading…
Reference in a new issue