From 724c8d9e7cfc49c591baa81ef79179df17a638ef Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Wed, 16 Oct 2013 11:38:24 -0700 Subject: [PATCH] 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. --- man/weston.ini.man | 11 +++++++++-- src/shell.c | 15 +++++++++++---- weston.ini | 1 + 3 files changed, 21 insertions(+), 6 deletions(-) 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 @@ 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 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 @@ 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 diff --git a/weston.ini b/weston.ini index 9a7137f..7006931 100644 --- a/weston.ini +++ b/weston.ini @@ -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 -- 2.7.4