It was recommended to me that I blog about some work I did the other day, so here I go.
Users may have noticed that urgent windows had a tendency to push cpu usage up pretty high due to animations–something which would occur even if the window wasn’t visible. This was caused by two factors:
- Window frame animations:
With the changes to the compositor for E19, various effects became possible, such as the icon pulsing effect on window frames for urgent windows. Unfortunately, this runs on an animator timer within edje, and it will continue to perform animation calculations even when the window is not visible.
- Pager animations
I had some fun with animations for the new pager gadget, and part of this was to mimic the pulsing animation used in the window frame. This had a similar issue: if the gadget was not visible, it would continue to animate. Furthermore, the image of the window would force the window to render when it would otherwise be deferred.
After some work, both of these cases have been fixed. Window frames are now completely frozen for all hidden windows, preventing them from waking up the cpu unnecessarily. Shelves and gadgets now propagate their visibility states so that objects which may animate, such as the contents of the pager, can appropriately freeze when they are not visible.
As one extremely French user put it, these commits “…didn’t actually trigger any problem” and “seems we get some improvemnt”. Also, “you should blog about it”.