Page MenuHomePhabricator

Evas/Edje animations not in sync
Closed, ResolvedPublic

Description

A new strange issue in stable 1.21 (and git): animated objects tend to move more slow than their containing object. Causing a visible "delay" in the animations and causing the objects to be misplaced while animating.

There are lots of places where this is visible, fe in elementary_test -to "extbutton" (click buttons to trigger the animation and see the icon animating "slower" than the button). Or in elementary_test -to "genlist" (scroll down the list slowly to see the icons ot the left misplaced while animating the scroll)

DaveMDS created this task.Sep 1 2018, 10:26 PM
DaveMDS triaged this task as High priority.

here a screenshot of the issue:


As you can see the home icon in the squared button is out of place while animating

@ManMower could this be related to your recent animator changes ?

@devilhorns: This issue is present in stable efl since the first day of the 1.21 release, cannot be related to the recent animator changes

@DaveMDS Ok, good to know :) It was just a thought

add some more subscribers to keep this thread alive...

oh that is weird... and bad.... this doesnt seem like animation and more like swallows are not following the parent correctly... at least when i resize....

it is when the window resizes right that you are talking about?

ah, yes, the issue is visible also resizing the window, It's the first time I try to resize the window.
The bug is also visible when you press one of the button to perform the animation, so I don't
think thi is related to window resize. Seems more like swallows are not in sync.

This is also visible in all genlists icons, the bigger the icon the more visible the "delay".
fe: elementary_test -to "Icon Standard", select a big size (like 64) and slowly
scroll the list.

Herald raised the priority of this task from High to Showstopper Issues. · View Herald TranscriptJan 14 2019, 11:29 AM

@raster assigning this to you in the hope you could help with this regression before the 1.22 release.

I'm not going to have time for a few weeks...

A little bit of debugging information: this is fully related to images. You can replace the icons in the genlist with a button or label, and there is no lacking.

More debugging information: the efl_gfx_entity_size_set calls look sane. The lacking object coordinations are happening somewhere down the road in evas...

A little bit more debugging information: this is related to elm_image, if you replace the elm_icon part in the test_icon.c with a direct evas_image, then everything is fine, no lacking, by the time you make it a elm_image, the lacking starts to happen.

bu5hm4n added a subscriber: Hermet.Sat, Mar 23, 7:01 AM

Okay, cause found!

Replace in efl_ui_image.c the function _efl_ui_image_sizing_eval with the following:

void
_efl_ui_image_sizing_eval(Evas_Object *obj)
{
   EFL_UI_IMAGE_DATA_GET_OR_RETURN(obj, sd);

   if (sd->sizing_job) ecore_job_del(sd->sizing_job);
   sd->sizing_job = ecore_job_add(_sizing_eval_cb, obj);
   if (sd->img)
     {
        _image_sizing_eval(sd, sd->img);
        if (sd->prev_img) _image_sizing_eval(sd, sd->prev_img);
     }
}

All in all the problem is that the position is applied to the content in a job rather than straight away, is there a reason for this ? Reverting D6726 also fixes the issue. @Hermet can you elaborate why the size setting has to be moved to a job ?

This job is just a trick optimization to avoid several sizing() calls in one frame.
Actually, this is not mandatory we can revert code if it harms image behavior.

let me fix this.

Hermet removed raster as the assignee of this task.Mon, Mar 25, 3:51 AM