e_plane: fixed calculation unset_counter 43/146743/3
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 30 Aug 2017 06:28:03 +0000 (15:28 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 4 Sep 2017 09:44:41 +0000 (09:44 +0000)
consider renderer is rendered becuase e_plane_set is called after manual_render

Change-Id: Ib4ca2a3c806a7187f1515cd424ec76fcbde51f5c

src/bin/e_plane.c
src/bin/e_plane_renderer.c
src/bin/e_plane_renderer.h

index a5f46b9..a7b07ea 100755 (executable)
@@ -676,13 +676,26 @@ _e_plane_unset_candidate_set(E_Plane *plane, Eina_Bool sync)
 {
    E_Plane *fb_target = NULL;
 
+   EINA_SAFETY_ON_NULL_RETURN(plane->ec);
+
    fb_target = e_output_fb_target_get(plane->output);
    if (fb_target)
      {
         if(fb_target->ec && !sync)
           plane->unset_counter = 0;
         else
-          plane->unset_counter = e_plane_renderer_render_count_get(fb_target->renderer) + 1;
+          {
+             Eina_Bool visible = EINA_FALSE;
+             E_Plane_Renderer *renderer = fb_target->renderer;
+
+             EINA_SAFETY_ON_NULL_RETURN(renderer);
+
+             visible = evas_object_visible_get(plane->ec->frame);
+
+             plane->unset_counter = e_plane_renderer_render_count_get(fb_target->renderer);
+
+             if (!visible && !renderer->rendered) plane->unset_counter += 1;
+          }
      }
 
    plane->unset_candidate = EINA_TRUE;
index dee4a48..743f30c 100644 (file)
@@ -1453,7 +1453,12 @@ e_plane_renderer_render(E_Plane_Renderer *renderer, Eina_Bool is_fb)
         TRACE_DS_BEGIN(MANUAL RENDER);
 
         if (e_plane_renderer_surface_queue_can_dequeue(renderer) || !renderer->tqueue)
-          ecore_evas_manual_render(renderer->ee);
+          {
+             ecore_evas_manual_render(renderer->ee);
+             renderer->rendered = EINA_TRUE;
+          }
+        else
+          renderer->rendered = EINA_FALSE;
 
         TRACE_DS_END();
      }
index f0fae5a..3b8e06d 100644 (file)
@@ -50,6 +50,8 @@ struct _E_Plane_Renderer {
 
    Eina_List          *renderer_buffers;
    Eina_Bool           pending_deactivate;
+
+   Eina_Bool           rendered;
 };
 
 EINTERN Eina_Bool                  e_plane_renderer_init(void);