diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2017-05-05 10:52:05 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2017-05-05 12:53:25 -0500 |
commit | 18af247ab28f3d4bf199c57f7c9b314df6dde501 (patch) | |
tree | b4ed206a4c58ad892524a7fc250e97065765b935 | |
parent | c722466a602794002b374ef0f84de0a92d9cd531 (diff) | |
download | efl-18af247ab28f3d4bf199c57f7c9b314df6dde501.tar.gz |
ecore_drm2: Add checks for using a plane after death
We keep planes on the plane list to ensure a released plane is removed
from display - however this means that if a caller starts messing with
a plane after release, that it could potentially reposition a plane it
doesn't own anymore.
Use EINA_SAFETY macros to prevent this.
-rw-r--r-- | src/lib/ecore_drm2/ecore_drm2_plane.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lib/ecore_drm2/ecore_drm2_plane.c b/src/lib/ecore_drm2/ecore_drm2_plane.c index 52f6bfd1d8..e90a740073 100644 --- a/src/lib/ecore_drm2/ecore_drm2_plane.c +++ b/src/lib/ecore_drm2/ecore_drm2_plane.c @@ -129,6 +129,7 @@ EAPI void ecore_drm2_plane_release(Ecore_Drm2_Plane *plane) { EINA_SAFETY_ON_NULL_RETURN(plane); + EINA_SAFETY_ON_TRUE_RETURN(plane->dead); plane->dead = EINA_TRUE; plane->state->in_use = EINA_FALSE; @@ -139,6 +140,7 @@ EAPI void ecore_drm2_plane_destination_set(Ecore_Drm2_Plane *plane, int x, int y, int w, int h) { EINA_SAFETY_ON_NULL_RETURN(plane); + EINA_SAFETY_ON_TRUE_RETURN(plane->dead); plane->state->cx.value = x; plane->state->cy.value = y; @@ -155,6 +157,7 @@ ecore_drm2_plane_fb_set(Ecore_Drm2_Plane *plane, Ecore_Drm2_Fb *fb) EINA_SAFETY_ON_NULL_RETURN_VAL(plane, EINA_FALSE); EINA_SAFETY_ON_NULL_RETURN_VAL(fb, EINA_FALSE); + EINA_SAFETY_ON_TRUE_RETURN_VAL(plane->dead, EINA_FALSE); fallback_id = plane->state->fid.value; plane->state->fid.value = fb->id; |