zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8fe64fb70c38ccc583e0708a62f33e22245e9175

commit 8fe64fb70c38ccc583e0708a62f33e22245e9175
Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Mar 24 13:22:12 2020 -0400

    evas: add function for norendering with updates
    
    Summary:
    the same as norender, but useful
    Depends on D11581
    
    Reviewers: bu5hm4n
    
    Reviewed By: bu5hm4n
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11582
---
 src/lib/evas/canvas/evas_canvas_eo.legacy.h | 15 +++++++++++++++
 src/lib/evas/canvas/evas_render.c           | 17 +++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/src/lib/evas/canvas/evas_canvas_eo.legacy.h 
b/src/lib/evas/canvas/evas_canvas_eo.legacy.h
index 88a6591168..edd47fd76b 100644
--- a/src/lib/evas/canvas/evas_canvas_eo.legacy.h
+++ b/src/lib/evas/canvas/evas_canvas_eo.legacy.h
@@ -533,6 +533,21 @@ EAPI void evas_focus_out(Evas_Canvas *obj);
  */
 EAPI void evas_norender(Evas_Canvas *obj);
 
+/**
+ * @brief Update the canvas internal objects but not triggering immediate
+ * renderization and producing update regions in post-render event.
+ *
+ * This function updates the canvas internal objects not triggering
+ * renderization. To force renderization function @ref evas_render should be
+ * used.
+ * @param[in] obj The object.
+ *
+ * @since 1.24
+ *
+ * @ingroup Evas_Group
+ */
+EAPI void evas_norender_with_updates(Eo *eo_e);
+
 /**
  * @brief Pop the nochange flag down 1.
  *
diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index c7dff56336..08252d2326 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -4104,6 +4104,23 @@ _evas_canvas_norender(Eo *eo_e, Evas_Public_Data *e)
      }
 }
 
+EAPI void
+evas_norender_with_updates(Eo *eo_e)
+{
+   Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
+   Eina_List *ret;
+   Render_Updates *ru;
+
+   evas_canvas_async_block(e);
+   //   if (!e->changed) return;
+   ret = evas_render_updates_internal_wait(eo_e, 1, 0);
+   EINA_LIST_FREE(ret, ru)
+     {
+        eina_rectangle_free(ru->area);
+        free(ru);
+     }
+}
+
 EOLIAN void
 _evas_canvas_render_idle_flush(Eo *eo_e, Evas_Public_Data *evas)
 {

-- 


Reply via email to