shell: Add a new weston.ini to control the startup animation
authorKristian Høgsberg <krh@bitplanet.net>
Wed, 16 Oct 2013 18:38:24 +0000 (11:38 -0700)
committerKristian Høgsberg <krh@bitplanet.net>
Wed, 16 Oct 2013 18:38:24 +0000 (11:38 -0700)
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.

man/weston.ini.man
src/shell.c
weston.ini

index 79743f0..c5ec321 100644 (file)
@@ -150,8 +150,15 @@ enables screen locking (boolean).
 .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
index 45bbed3..e0c3527 100644 (file)
@@ -163,6 +163,7 @@ struct desktop_shell {
 
        uint32_t binding_modifier;
        enum animation_type win_animation_type;
+       enum animation_type startup_animation_type;
 };
 
 enum shell_surface_type {
@@ -414,9 +415,6 @@ get_modifier(char *modifier)
 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 @@ shell_configuration(struct desktop_shell *shell)
        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 @@ do_shell_fade_startup(void *data)
 {
        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
index 9a7137f..7006931 100644 (file)
@@ -9,6 +9,7 @@ background-type=tile
 panel-color=0x90ff0000
 locking=true
 animation=zoom
+startup-animation=fade
 #binding-modifier=ctrl
 #num-workspaces=6
 #cursor-theme=whiteglass