desktop-shell: Enable per-output fade animations

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.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h
index a1cea75..063641d 100644
--- a/desktop-shell/shell.h
+++ b/desktop-shell/shell.h
@@ -122,6 +122,13 @@
 
 	struct weston_surface *background_surface;
 	struct wl_listener background_surface_listener;
+
+	struct {
+		struct weston_view *view;
+		struct weston_view_animation *animation;
+		enum fade_type type;
+		struct wl_event_source *startup_timer;
+	} fade;
 };
 
 struct weston_desktop;
@@ -192,13 +199,6 @@
 		struct wl_list surfaces;
 	} input_panel;
 
-	struct {
-		struct weston_view *view;
-		struct weston_view_animation *animation;
-		enum fade_type type;
-		struct wl_event_source *startup_timer;
-	} fade;
-
 	struct exposay exposay;
 
 	bool allow_zap;