@@ -866,12 +866,11 @@ struct property_arg {
uint64_t value;
};
-static void set_property(struct device *dev, struct property_arg *p)
+static int get_prop_info(struct resources *resources, struct property_arg *p,
+ char *obj_type)
{
drmModeObjectProperties *props = NULL;
drmModePropertyRes **props_info = NULL;
- const char *obj_type;
- int ret;
int i;
p->obj_type = 0;
@@ -884,27 +883,27 @@ static void set_property(struct device *dev, struct property_arg *p)
if (obj->type->type##_id != p->obj_id) \
continue; \
p->obj_type = DRM_MODE_OBJECT_##Type; \
- obj_type = #Type; \
+ obj_type = (char *)#Type; \
props = obj->props; \
props_info = obj->props_info; \
} \
} while(0) \
- find_object(dev->resources, res, crtc, CRTC);
+ find_object(resources, res, crtc, CRTC);
if (p->obj_type == 0)
- find_object(dev->resources, res, connector, CONNECTOR);
+ find_object(resources, res, connector, CONNECTOR);
if (p->obj_type == 0)
- find_object(dev->resources, plane_res, plane, PLANE);
+ find_object(resources, plane_res, plane, PLANE);
if (p->obj_type == 0) {
fprintf(stderr, "Object %i not found, can't set property\n",
p->obj_id);
- return;
+ return -1;
}
if (!props) {
fprintf(stderr, "%s %i has no properties\n",
obj_type, p->obj_id);
- return;
+ return -1;
}
for (i = 0; i < (int)props->count_props; ++i) {
@@ -917,11 +916,23 @@ static void set_property(struct device *dev, struct property_arg *p)
if (i == (int)props->count_props) {
fprintf(stderr, "%s %i has no %s property\n",
obj_type, p->obj_id, p->name);
- return;
+ return -1;
}
p->prop_id = props->props[i];
+ return 0;
+}
+
+static void set_property(struct device *dev, struct property_arg *p)
+{
+ int ret;
+ char *obj_type = NULL;
+
+ ret = get_prop_info(dev->resources, p, obj_type);
+ if (ret < 0)
+ return;
+
ret = drmModeObjectSetProperty(dev->fd, p->obj_id, p->obj_type,
p->prop_id, p->value);
if (ret < 0)
Modetest gets the property name from user to set it. So the name must be converted to its id. Until now, this is done in the set_property(). But to support atomic modeset in modetest, this logic should be separated from the fuction, because atomic modeset and legacy modeset use different IOCTLs. Signed-off-by: Hyungwon Hwang <human.hwang@samsung.com> --- tests/modetest/modetest.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-)