When trying to set a rotation on a given output, we would previously
always be returning EINA_TRUE. We should be returning EINA_FALSE when
the rotation_set fails.
@fix
Summary: ecore_drm_output_rotation_set should be returning EINA_FALSE when the output doesn't have a plane of requested type.
Test Plan:
1. call ecore_drm_output_rotation_set() with ECORE_DRM_PLANE_TYPE_CURSOR
2. If output doesn't have a plane of ECORE_DRM_PLANE_TYPE_CURSOR, the for statement does nothing. But return value is TRUE;
Reviewers: raster, stefan_schmidt, gwanglim, devilhorns, zmike
Subscribers: input.hacker, cedric, JHyun, ManMower, jpeg
Differential Revision: https://phab.enlightenment.org/D3678
{
Ecore_Drm_Plane *plane;
Eina_List *l;
+ Eina_Bool ret = EINA_FALSE;
EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
return EINA_FALSE;
}
- drmModeObjectSetProperty(output->dev->drm.fd,
- output->primary_plane_id,
- DRM_MODE_OBJECT_PLANE,
- output->rotation_prop_id,
- plane->rotation_map[ffs(rotation)]);
+ if (drmModeObjectSetProperty(output->dev->drm.fd,
+ output->primary_plane_id,
+ DRM_MODE_OBJECT_PLANE,
+ output->rotation_prop_id,
+ plane->rotation_map[ffs(rotation)]) < 0)
+ {
+ WRN("Failed to set Rotation");
+ return EINA_FALSE;
+ }
+ ret = EINA_TRUE;
break;
}
- return EINA_TRUE;
+ return ret;
}