From ed4c98f9f512b6a9fd60d7e02ade7cb5140a033b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 16 Oct 2013 09:30:37 +0100 Subject: [PATCH] feature: e_comp_shape_queue_block for blocking shape changes in some cases, it may be desirable to block shape cutting for an amount of time to reduce cpu calculations. this should be set when performing any non-interactive compositor effects --- src/bin/e_comp.c | 12 ++++++++++++ src/bin/e_comp.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 6d0be4267..64a1a13ca 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1385,6 +1385,18 @@ e_comp_shape_queue(E_Comp *c) c->shape_job = ecore_job_add((Ecore_Cb)_e_comp_shapes_update_job, c); } +EAPI void +e_comp_shape_queue_block(E_Comp *c, Eina_Bool block) +{ + EINA_SAFETY_ON_NULL_RETURN(c); + + c->shape_queue_blocked = !!block; + if (block) + E_FREE_FUNC(c->shape_job, ecore_job_del); + else + e_comp_shape_queue(c); +} + EAPI E_Comp_Config * e_comp_config_get(void) { diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index 5e84e76eb..0032d547a 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -111,6 +111,7 @@ struct _E_Comp Eina_Bool nocomp : 1; Eina_Bool nocomp_want : 1; Eina_Bool saver : 1; + Eina_Bool shape_queue_blocked : 1; }; @@ -137,6 +138,7 @@ EAPI int e_comp_internal_save(void); EINTERN int e_comp_shutdown(void); EAPI void e_comp_render_queue(E_Comp *c); EAPI void e_comp_shape_queue(E_Comp *c); +EAPI void e_comp_shape_queue_block(E_Comp *c, Eina_Bool block); EAPI E_Comp_Config *e_comp_config_get(void); EAPI const Eina_List *e_comp_list(void); EAPI void e_comp_shadows_reset(void);