[PATCH weston] shell: Disarm the screensaver timeout timer on terminate_screensaver()

Kristian Høgsberg hoegsberg at gmail.com
Thu Apr 10 10:04:21 PDT 2014


On Thu, Apr 10, 2014 at 02:49:35PM +0300, Ander Conselvan de Oliveira wrote:
> The timer was left running after the screensaver was terminated. When
> it triggered, a fade out that would in turn cause the screen to be
> locked was started. Since that could happen without the compositor
> emitting the idle signal, there would be no wake signal to make the
> shell show the lock screen, so the system was left unresponsive
> until the idle signal actually triggered.

Thanks, that makes sense.  This only triggers when we actually compile
and run the GL screensaver, right?

Kristian

> https://bugs.freedesktop.org/show_bug.cgi?id=70923
> ---
>  desktop-shell/shell.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index 466ea93..09b992c 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -3715,6 +3715,12 @@ terminate_screensaver(struct desktop_shell *shell)
>  	if (shell->screensaver.process.pid == 0)
>  		return;
>  
> +	/* Disarm the screensaver timer, otherwise it may fire when the
> +	 * compositor is not in the idle state. In that case, the screen will
> +	 * be locked, but the wake_signal won't fire on user input, making the
> +	 * system unresponsive. */
> +	wl_event_source_timer_update(shell->screensaver.timer, 0);
> +
>  	kill(shell->screensaver.process.pid, SIGTERM);
>  }
>  
> -- 
> 1.8.3.2
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list