summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2020-03-24 13:22:12 -0400
committerMike Blumenkrantz <zmike@samsung.com>2020-03-24 13:22:12 -0400
commit8fe64fb70c38ccc583e0708a62f33e22245e9175 (patch)
tree259449e61056de082b44784e9db5b9081441a57a
parentb37ebdad253f1505df7f95eea3a8e8830d7b58b3 (diff)
downloadefl-8fe64fb70c38ccc583e0708a62f33e22245e9175.tar.gz
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
-rw-r--r--src/lib/evas/canvas/evas_canvas_eo.legacy.h15
-rw-r--r--src/lib/evas/canvas/evas_render.c17
2 files changed, 32 insertions, 0 deletions
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
@@ -534,6 +534,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.
*
* This tells evas, that while the nochange flag is greater than 0, do not mark
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)
{