From 5f2d4e75ab9d778ca6deeae7eabe3f406a4bdb3c Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 16 Jun 2017 16:30:39 -0500 Subject: [PATCH] ecore_drm2: Add callbacks for plane assign/release E will need these to gate wayland buffer releases. --- src/lib/ecore_drm2/Ecore_Drm2.h | 2 ++ src/lib/ecore_drm2/ecore_drm2_plane.c | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 37a67b1e04..2d0779a4c9 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -43,6 +43,8 @@ typedef enum _Ecore_Drm2_Fb_Status ECORE_DRM2_FB_STATUS_SCANOUT_OFF = 2, ECORE_DRM2_FB_STATUS_RELEASE = 4, ECORE_DRM2_FB_STATUS_DELETED = 8, + ECORE_DRM2_FB_STATUS_PLANE_ASSIGN = 16, + ECORE_DRM2_FB_STATUS_PLANE_RELEASE = 32, } Ecore_Drm2_Fb_Status; /* opaque structure to represent a drm device */ diff --git a/src/lib/ecore_drm2/ecore_drm2_plane.c b/src/lib/ecore_drm2/ecore_drm2_plane.c index cc79bff1dd..796302dc1f 100644 --- a/src/lib/ecore_drm2/ecore_drm2_plane.c +++ b/src/lib/ecore_drm2/ecore_drm2_plane.c @@ -124,6 +124,10 @@ out: DBG("FB %d assigned to Plane %d", fb->id, pstate->obj_id); output->planes = eina_list_append(output->planes, plane); + if (fb->status_handler) + fb->status_handler(fb, + ECORE_DRM2_FB_STATUS_PLANE_ASSIGN, + fb->status_data); return plane; } @@ -143,6 +147,11 @@ ecore_drm2_plane_release(Ecore_Drm2_Plane *plane) plane->dead = EINA_TRUE; plane->state->in_use = EINA_FALSE; _fb_atomic_flip_test(plane->output); + + if (fb->status_handler) + fb->status_handler(fb, + ECORE_DRM2_FB_STATUS_PLANE_RELEASE, + fb->status_data); } EAPI void