devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5ae5aade0aa291392bfe5f4e57a4cdc99f8fa605
commit 5ae5aade0aa291392bfe5f4e57a4cdc99f8fa605 Author: Duna Oh <duna...@samsung.com> Date: Mon Feb 15 08:44:55 2016 -0500 ecore-drm: Make ecore_drm_output_rotation_set fail properly 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 --- src/lib/ecore_drm/ecore_drm_output.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib/ecore_drm/ecore_drm_output.c b/src/lib/ecore_drm/ecore_drm_output.c index 1ac8f9a..9322ab9 100644 --- a/src/lib/ecore_drm/ecore_drm_output.c +++ b/src/lib/ecore_drm/ecore_drm_output.c @@ -1510,6 +1510,7 @@ ecore_drm_output_rotation_set(Ecore_Drm_Output *output, Ecore_Drm_Plane_Type typ { Ecore_Drm_Plane *plane; Eina_List *l; + Eina_Bool ret = EINA_FALSE; EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE); @@ -1522,13 +1523,18 @@ ecore_drm_output_rotation_set(Ecore_Drm_Output *output, Ecore_Drm_Plane_Type typ 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; } --