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
This commit is contained in:
Mike Blumenkrantz 2020-03-24 13:22:12 -04:00
parent b37ebdad25
commit 8fe64fb70c
2 changed files with 32 additions and 0 deletions

View File

@ -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.
*

View File

@ -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)
{