Skip to content

WIP: overviewControl: Prevent devision by zero

Robert Mader requested to merge rmader/gnome-shell:fix-overview-dbz into master

Under certain conditions get_preferred_width and get_preferred_height return wrongly cached zeros, causing the function to return Infinity.

One consequence of that is that it prevents us from landing mutter@7bf2058a

Fix the issue by explicitly relayout the actor. This happens once every time the overview is opened, so the performance pernality should be small, especially compared to the gain we can get with the former mentioned commit.

More context: Another proposed solution (see #892 (comment 402432)) is to fix the issue in clutter by not caching the values if the vfunc is overridden. I'm against that, because to quote myself:

After having a short look into your proposed solution I'd argue against disabling caching if there is an override. I'm counting at least 24 places where vfunc_get_preferred_height is overridden, not counting extensions. And it's basically all over the place. Disabling the cache has a huge impact on performance and this is the only case AFAIK that is causing problems. And that is only because the values are somewhat carelessly divided without extra safeguards. I'd say we just add queue_relayout(). It's an improvement over the actual situation with low overhead and lets us land mutter@7bf2058a, which is quite a win.

If we come up with a general solution at some point that would be great. I'd consider this issue as to unusual to require it.

Fixes: #517 (closed), #892 (closed)

Edited by Jeff Fortin

Merge request reports