From 8fe64fb70c38ccc583e0708a62f33e22245e9175 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 24 Mar 2020 13:22:12 -0400 Subject: [PATCH] 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) {