below is the memory allocation data i got it from my sample application (which shows evas_object_image_is_opaque() doing 10% of memory allocation because of the Eina_Cow garbage collection).
We allocate Evas_Object_Image_State object in each frame if there is change in image state. because in evas_object_image_render_post() function we copy the pointer to the previous state using eina_cow_memcpy() which bumps the ref count to 2. so in the next frame if we try to write to that pointer again it will create a new copy and write to it.
and the process repeats again.
Maybe Eina_Cow is not suitable for this usecase as in worst case without it we will only do 2 memory allocation (1 for cur and 1 for prev state)
Fix: Either we could add a new function eina_cow_clone() which will only copy the content. or we can remove the Eina_Cow so that in worst case it will only make 2 allocation per object.