From ef34d8157d784883a766dc0681655c596325daa1 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Thu, 16 Feb 2017 15:49:01 +0900 Subject: [PATCH] e_plane: check ec valid before dequeue surface for sending to ec Change-Id: I3a07d75b0f558cce21bd350b1da635876fa703d5 --- src/bin/e_plane.c | 2 ++ src/bin/e_plane_renderer.c | 14 ++++++++++++++ src/bin/e_plane_renderer.h | 1 + 3 files changed, 17 insertions(+) diff --git a/src/bin/e_plane.c b/src/bin/e_plane.c index b29dbf2..d373286 100644 --- a/src/bin/e_plane.c +++ b/src/bin/e_plane.c @@ -480,6 +480,8 @@ _e_plane_surface_send_dequeuable_surfaces(E_Plane *plane) tbm_surface_h tsurface = NULL; E_Plane_Renderer *renderer = plane->renderer; + if (!e_plane_renderer_ec_valid_check(renderer, renderer->ec)) return; + /* export dequeuable surface */ while(e_plane_renderer_surface_queue_can_dequeue(renderer)) { diff --git a/src/bin/e_plane_renderer.c b/src/bin/e_plane_renderer.c index b52eecd..6191f51 100644 --- a/src/bin/e_plane_renderer.c +++ b/src/bin/e_plane_renderer.c @@ -986,6 +986,20 @@ e_plane_renderer_del(E_Plane_Renderer *renderer) } EINTERN Eina_Bool +e_plane_renderer_ec_valid_check(E_Plane_Renderer *renderer, E_Client *ec) +{ + struct wayland_tbm_client_queue * cqueue = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(renderer, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE); + + cqueue = _e_plane_renderer_wayland_tbm_client_queue_get(ec); + if (!cqueue) return EINA_FALSE; + + return EINA_TRUE; +} + +EINTERN Eina_Bool e_plane_renderer_render(E_Plane_Renderer *renderer, Eina_Bool is_fb) { EINA_SAFETY_ON_NULL_RETURN_VAL(renderer, EINA_FALSE); diff --git a/src/bin/e_plane_renderer.h b/src/bin/e_plane_renderer.h index c4a32b8..174f4a1 100644 --- a/src/bin/e_plane_renderer.h +++ b/src/bin/e_plane_renderer.h @@ -85,6 +85,7 @@ EINTERN tbm_surface_h e_plane_renderer_cursor_surface_get(E_Plane_R EINTERN Eina_Bool e_plane_renderer_cursor_surface_refresh(E_Plane_Renderer *renderer, E_Client *ec); EINTERN Eina_Bool e_plane_renderer_ecore_evas_use(E_Plane_Renderer *renderer); EINTERN void e_plane_renderer_sent_surface_recevie(E_Plane_Renderer *renderer, tbm_surface_h tsurface); +EINTERN Eina_Bool e_plane_renderer_ec_valid_check(E_Plane_Renderer *renderer, E_Client *ec); EINTERN void e_plane_renderer_hwc_trace_debug(Eina_Bool onoff); -- 2.7.4