shell: Add a new weston.ini to control the startup animation

The new key startup-animation in the [shell] section lets you
control the startup animation.  Default is fade, but with this patch
we can also do none, which just show the desktop as fast as possible.
diff --git a/src/shell.c b/src/shell.c
index 45bbed3..e0c3527 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -163,6 +163,7 @@
 
 	uint32_t binding_modifier;
 	enum animation_type win_animation_type;
+	enum animation_type startup_animation_type;
 };
 
 enum shell_surface_type {
@@ -414,9 +415,6 @@
 static enum animation_type
 get_animation_type(char *animation)
 {
-	if (!animation)
-		return ANIMATION_NONE;
-
 	if (!strcmp("zoom", animation))
 		return ANIMATION_ZOOM;
 	else if (!strcmp("fade", animation))
@@ -448,6 +446,10 @@
 	weston_config_section_get_string(section, "animation", &s, "none");
 	shell->win_animation_type = get_animation_type(s);
 	free(s);
+	weston_config_section_get_string(section,
+					 "startup-animation", &s, "fade");
+	shell->startup_animation_type = get_animation_type(s);
+	free(s);
 	weston_config_section_get_uint(section, "num-workspaces",
 				       &shell->workspaces.num,
 				       DEFAULT_NUM_WORKSPACES);
@@ -3317,7 +3319,12 @@
 {
 	struct desktop_shell *shell = data;
 
-	shell_fade(shell, FADE_IN);
+	if (shell->startup_animation_type == ANIMATION_FADE)
+		shell_fade(shell, FADE_IN);
+	else if (shell->startup_animation_type == ANIMATION_NONE) {
+		weston_surface_destroy(shell->fade.surface);
+		shell->fade.surface = NULL;
+	}
 }
 
 static void