e_plane: do not fetch of fb_target when sync plane has pending commit 79/178879/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 14 May 2018 10:27:22 +0000 (19:27 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 14 May 2018 10:41:28 +0000 (19:41 +0900)
Change-Id: I40a06b4dd04d6d3522b8502215d522448a337243

src/bin/e_plane.c

index 54d0e729cc5f723af9f362ff5383e4576b3af343..dc551bc7721fdb9bbeb055d7a8a7b4fd8e474d17 100644 (file)
@@ -1548,6 +1548,32 @@ _e_plane_fb_sync_vblank_handler(tdm_output *output, unsigned int sequence,
    plane->fb_sync_done = EINA_TRUE;
 }
 
+static Eina_Bool
+_e_plane_fb_target_pending_commit_sync_check(E_Plane *plane)
+{
+   E_Output *output;
+   E_Plane *tmp_plane;
+   Eina_List *l;
+
+   if (!plane->is_fb) return EINA_FALSE;
+   if (!e_plane_renderer_surface_queue_can_acquire(plane->renderer)) return EINA_FALSE;
+
+   output = plane->output;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
+
+   EINA_LIST_FOREACH(output->planes, l, tmp_plane)
+     {
+        if (tmp_plane->is_fb) continue;
+        if ((tmp_plane->unset_counter == 1) || (tmp_plane->set_counter == 1))
+          {
+             if (eina_list_count(tmp_plane->commit_data_list))
+               return EINA_TRUE;
+          }
+     }
+
+   return EINA_FALSE;
+}
+
 static Eina_Bool
 _e_plane_fb_target_sync_set(E_Plane *plane)
 {
@@ -1617,6 +1643,9 @@ e_plane_fetch(E_Plane *plane)
 
    if (plane->is_fb && !plane->ec)
      {
+        if (_e_plane_fb_target_pending_commit_sync_check(plane))
+          return EINA_FALSE;
+
         if (plane->fb_sync_wait)
           return EINA_FALSE;