[PATCH weston 1/2] desktop-shell: Add an option for shell startup timeout

Pekka Paalanen ppaalanen at gmail.com
Tue May 26 01:25:33 PDT 2015


On Mon, 25 May 2015 15:19:37 -0500
Derek Foreman <derekf at osg.samsung.com> wrote:

> Make the time to wait for shell startup before removing the fade surface
> configurable.
> 
> Use this in internal-screenshot so we can screenshot without waiting for
> the shell to start.
> 
> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>

Hi,

is this really necessary when you have disabled the fade-in completely
with startup-animation=none, like the screenshot test does?

Ah, I see, even if startup-animation is set to none, we still have the
black surface covering everything until the shell is ready. The black
surface goes away when weston-desktop-shell signals ready with a
request.

I will propose a simpler patch, that will just change the none case,
instead of adding a new config key.


Thanks,
pq

> ---
>  desktop-shell/shell.c         | 18 +++++++++++++++---
>  man/weston.ini.man            |  5 +++++
>  tests/internal-screenshot.ini |  1 +
>  weston.ini.in                 |  1 +
>  4 files changed, 22 insertions(+), 3 deletions(-)
> 
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index 452cd5f..5e60312 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -5369,7 +5369,7 @@ fade_startup_timeout(void *data)
>  }
>  
>  static void
> -shell_fade_init(struct desktop_shell *shell)
> +shell_fade_init(struct desktop_shell *shell, uint32_t timeout)
>  {
>  	/* Make compositor output all black, and wait for the desktop-shell
>  	 * client to signal it is ready, then fade in. The timer triggers a
> @@ -5378,6 +5378,9 @@ shell_fade_init(struct desktop_shell *shell)
>  
>  	struct wl_event_loop *loop;
>  
> +	if (!timeout)
> +		return;
> +
>  	if (shell->fade.view != NULL) {
>  		weston_log("%s: warning: fade surface already exists\n",
>  			   __func__);
> @@ -5394,7 +5397,7 @@ shell_fade_init(struct desktop_shell *shell)
>  	loop = wl_display_get_event_loop(shell->compositor->wl_display);
>  	shell->fade.startup_timer =
>  		wl_event_loop_add_timer(loop, fade_startup_timeout, shell);
> -	wl_event_source_timer_update(shell->fade.startup_timer, 15000);
> +	wl_event_source_timer_update(shell->fade.startup_timer, timeout);
>  }
>  
>  static void
> @@ -6613,6 +6616,10 @@ module_init(struct weston_compositor *ec,
>  	struct workspace **pws;
>  	unsigned int i;
>  	struct wl_event_loop *loop;
> +	struct weston_config *config;
> +	struct weston_config_section *s;
> +	uint32_t timeout;
> +	const char *config_file;
>  
>  	shell = zalloc(sizeof *shell);
>  	if (shell == NULL)
> @@ -6717,7 +6724,12 @@ module_init(struct weston_compositor *ec,
>  
>  	shell_add_bindings(ec, shell);
>  
> -	shell_fade_init(shell);
> +	config_file = weston_config_get_name_from_env();
> +	config = weston_config_parse(config_file);
> +	s = weston_config_get_section(config, "shell", NULL, NULL);
> +	weston_config_section_get_uint(s, "startup-timeout", &timeout, 15000);
> +	weston_config_destroy(config);
> +	shell_fade_init(shell, timeout);
>  
>  	clock_gettime(CLOCK_MONOTONIC, &shell->startup_time);
>  
> diff --git a/man/weston.ini.man b/man/weston.ini.man
> index fe86bb6..0bb77e0 100644
> --- a/man/weston.ini.man
> +++ b/man/weston.ini.man
> @@ -287,6 +287,11 @@ sets the path to lock screen background image (string). (tablet shell only)
>  .TP 7
>  .BI "homescreen=" path
>  sets the path to home screen background image (string). (tablet shell only)
> +.TP 7
> +.BI "startup-timeout=" 15000
> +sets the time in milliseconds to wait for the shell to start.  Normally the
> +screen is black until the shell finishes starting.  If shell startup exceeds
> +this timeout, windows will be displayed anyway.
>  .RE
>  .SH "LAUNCHER SECTION"
>  There can be multiple launcher sections, one for each launcher.
> diff --git a/tests/internal-screenshot.ini b/tests/internal-screenshot.ini
> index abc046e..95c01bd 100644
> --- a/tests/internal-screenshot.ini
> +++ b/tests/internal-screenshot.ini
> @@ -1,3 +1,4 @@
>  [shell]
>  startup-animation=none
>  background-color=0xCC336699
> +startup-timeout=0
> diff --git a/weston.ini.in b/weston.ini.in
> index 4fca0bb..534bb09 100644
> --- a/weston.ini.in
> +++ b/weston.ini.in
> @@ -15,6 +15,7 @@ startup-animation=fade
>  #num-workspaces=6
>  #cursor-theme=whiteglass
>  #cursor-size=24
> +#startup-timeout=15000
>  
>  #lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png
>  #lockscreen=/usr/share/backgrounds/gnome/Garden.jpg



More information about the wayland-devel mailing list