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/man/weston.ini.man b/man/weston.ini.man
index 79743f0..c5ec321 100644
--- a/man/weston.ini.man
+++ b/man/weston.ini.man
@@ -150,8 +150,15 @@
 .BI "animation=" zoom
 sets the effect used for opening new windows (string). Can be
 .B zoom,
-.B fade.
-Otherwise, no animation is used.
+.B fade,
+.B none.
+By default, no animation is used.
+.TP 7
+.BI "startup-animation=" fade
+sets the effect used for opening new windows (string). Can be
+.B fade,
+.B none.
+By default, the fade animation is used.
 .TP 7
 .BI "binding-modifier=" ctrl
 sets the modifier key used for common bindings (string), such as moving
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
diff --git a/weston.ini b/weston.ini
index 9a7137f..7006931 100644
--- a/weston.ini
+++ b/weston.ini
@@ -9,6 +9,7 @@
 panel-color=0x90ff0000
 locking=true
 animation=zoom
+startup-animation=fade
 #binding-modifier=ctrl
 #num-workspaces=6
 #cursor-theme=whiteglass