Instead of creating a single global fade surface across all outputs, create a separate surface for each output. This will permit e.g. individual fades for each output (or blocking the fade-outs if inhibiting idling as will come in a later patch.)
This also fixes a potential issue if on multihead layout spanning a desktop wider than 8096 (or higher than 8096), the fade animation may not completely cover all surfaces.
This assumes the output geometry doesn't change to become larger during the course of the fade animation.
9ad4de1 desktop-shell: Enable per-output fade animations
desktop-shell/shell.c | 137 ++++++++++++++++++++++++++++----------------------
desktop-shell/shell.h | 14 +++---
2 files changed, 84 insertions(+), 67 deletions(-)