summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-05-12 14:42:02 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-05-12 17:51:34 -0500
commit44b57b5dfac1a61dcbfe7192f62460ab2e9ef5ca (patch)
tree5d0e80530121cec7fd391c3d2dd6a4a3d4b51ebb
parentedcbff59b72ef8b26af99c1cb3c38f4ffb48282a (diff)
downloadefl-44b57b5dfac1a61dcbfe7192f62460ab2e9ef5ca.tar.gz
ecore_drm2: Add some safety checks for accessing dead fbs
Accessing an fb after discarding it is bad karma, so we should log something if it ever happens.
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_fb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/ecore_drm2/ecore_drm2_fb.c b/src/lib/ecore_drm2/ecore_drm2_fb.c
index b5161c67c2..8ef2d82bd9 100644
--- a/src/lib/ecore_drm2/ecore_drm2_fb.c
+++ b/src/lib/ecore_drm2/ecore_drm2_fb.c
@@ -195,6 +195,7 @@ EAPI void *
ecore_drm2_fb_data_get(Ecore_Drm2_Fb *fb)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, NULL);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(fb->dead, NULL);
return fb->mmap;
}
@@ -202,6 +203,7 @@ EAPI unsigned int
ecore_drm2_fb_size_get(Ecore_Drm2_Fb *fb)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, 0);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(fb->dead, 0);
return fb->sizes[0];
}
@@ -209,6 +211,8 @@ EAPI unsigned int
ecore_drm2_fb_stride_get(Ecore_Drm2_Fb *fb)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, 0);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(fb->dead, 0);
+
return fb->strides[0];
}
@@ -217,6 +221,7 @@ ecore_drm2_fb_dirty(Ecore_Drm2_Fb *fb, Eina_Rectangle *rects, unsigned int count
{
EINA_SAFETY_ON_NULL_RETURN(fb);
EINA_SAFETY_ON_NULL_RETURN(rects);
+ EINA_SAFETY_ON_TRUE_RETURN(fb->dead);
#ifdef DRM_MODE_FEATURE_DIRTYFB
drmModeClip *clip;
@@ -573,6 +578,7 @@ EAPI Eina_Bool
ecore_drm2_fb_busy_get(Ecore_Drm2_Fb *fb)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, EINA_FALSE);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(fb->dead, EINA_FALSE);
return !!(fb->ref - 1);
}
@@ -616,6 +622,8 @@ EAPI void *
ecore_drm2_fb_bo_get(Ecore_Drm2_Fb *fb)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fb, NULL);
+ EINA_SAFETY_ON_TRUE_RETURN_VAL(fb->dead, NULL);
+
return fb->gbm_bo;
}