diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 4bce85d22..0f9fbf10b 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1421,6 +1421,16 @@ e_comp_render_queue(void) } } +E_API void +e_comp_client_post_update_add(E_Client *ec) +{ + if (ec->on_post_updates) return; + ec->on_post_updates = EINA_TRUE; + e_comp->post_updates = eina_list_append(e_comp->post_updates, ec); + REFD(ec, 111); + e_object_ref(E_OBJECT(ec)); +} + E_API void e_comp_shape_queue(void) { diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index 1f4f2d59c..c39199398 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -186,6 +186,7 @@ E_API E_Comp *e_comp_new(void); E_API int e_comp_internal_save(void); EINTERN int e_comp_shutdown(void); E_API void e_comp_render_queue(void); +E_API void e_comp_client_post_update_add(E_Client *ec); E_API void e_comp_shape_queue(void); E_API void e_comp_shape_queue_block(Eina_Bool block); E_API E_Comp_Config *e_comp_config_get(void); diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index a17a6cee0..b7ff1120e 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -901,10 +901,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj EINA_UNUSED) if (cw->native) { E_FREE_FUNC(cw->pending_updates, eina_tiler_free); - cw->ec->on_post_updates = EINA_TRUE; - e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec); - REFD(cw->ec, 111); - e_object_ref(E_OBJECT(cw->ec)); + e_comp_client_post_update_add(cw->ec); } else if (e_comp_object_render(ec->frame)) { @@ -3818,12 +3815,7 @@ end: eina_iterator_free(it); E_FREE_FUNC(cw->pending_updates, eina_tiler_free); if (ret) - { - cw->ec->on_post_updates = EINA_TRUE; - e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec); - REFD(cw->ec, 111); - e_object_ref(E_OBJECT(cw->ec)); - } + e_comp_client_post_update_add(cw->ec); return ret; } diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index c2aa458d2..bc0073ed1 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -141,17 +141,9 @@ _e_comp_wl_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); e_comp_object_dirty(ec->frame); - if (!e_comp_object_render(ec->frame)) - { - e_object_unref(E_OBJECT(ec)); - return; - } - if (!ec->on_post_updates) - { - ec->on_post_updates = EINA_TRUE; - e_comp->post_updates = eina_list_append(e_comp->post_updates, ec); - } - else e_object_unref(E_OBJECT(ec)); + if (e_comp_object_render(ec->frame)) + e_comp_client_post_update_add(ec); + e_object_unref(E_OBJECT(ec)); } static void