cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=84907e719de3b4700e5c2390b251b3b1d8e9437d

commit 84907e719de3b4700e5c2390b251b3b1d8e9437d
Author: Cedric BAIL <[email protected]>
Date:   Thu Oct 26 13:35:27 2017 -0700

    evas: allow to suspend the rendering of an output.
---
 src/lib/evas/canvas/evas_out.c      | 7 ++++---
 src/lib/evas/canvas/evas_render.c   | 3 +++
 src/lib/evas/include/evas_private.h | 2 ++
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c
index cd7fbaf2d8..34e2933469 100644
--- a/src/lib/evas/canvas/evas_out.c
+++ b/src/lib/evas/canvas/evas_out.c
@@ -172,13 +172,14 @@ efl_canvas_output_engine_info_get(Efl_Canvas_Output 
*output)
 }
 
 EAPI Eina_Bool
-efl_canvas_output_lock(Efl_Canvas_Output *output EINA_UNUSED)
+efl_canvas_output_lock(Efl_Canvas_Output *output)
 {
-   return EINA_FALSE;
+   output->lock++;
+   return EINA_TRUE;
 }
 
 EAPI Eina_Bool
 efl_canvas_output_unlock(Efl_Canvas_Output *output EINA_UNUSED)
 {
-   return EINA_FALSE;
+   return !!(--output->lock);
 }
diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index 3f1895de2d..9e6a65859f 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -3319,6 +3319,9 @@ evas_render_updates_internal(Evas *eo_e,
      {
         // Avoid processing not ready output until they are
         if (!out->output) continue ;
+        // Locked output are output that should not yet be rendered
+        // because the tick/vsync for it doesn't allow it yet.
+        if (out->lock > 0) continue ;
 
         /* phase 6. Initialize output */
         if (out->changed)
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index bc7c1f9aba..8a16d63e68 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1336,6 +1336,8 @@ struct _Efl_Canvas_Output
 
    int info_magic;
 
+   unsigned short lock;
+
    Eina_Bool changed : 1;
 };
 

-- 


Reply via email to