Skip to content

Don't draw surfaces that aren't part of the current stack when automaximized

So far phoc behaved like a regular stacking window manager, putting each focused toplevel surface on top of all the others. This, combined with lack of sophisticated scene graph, resulted in all of the surfaces being redrawn each time there was a damage in part of the output that those surfaces cover. In automaximize mode, this means that we always redraw all of the windows regardless of whether they're visible or not.

However, when we have a single output and we're in automaximize mode (so, most of the time phosh is in use), we can stop redrawing unnecessary surfaces pretty easily with bunch of simple visibility checks.

This introduces a way for render code to check visibility and adds bunch of such checks, which then are used in order to not render surfaces that aren't visible, don't accept their damage and don't send them frame done events to prevent further useless rendering. In the future, those checks could even be replaced with a proper scene graph-based visibility checking that takes opaque regions into account.

Edited by Sebastian Krzyszkowiak

Merge request reports