[PATCH weston v6 0/6] Implement screensaver/idle inhibition

Bryce Harrington bryce at osg.samsung.com
Fri Sep 9 02:31:38 UTC 2016


Updated to include review feedback from Quentin on the v5.  That
involves refinements to the destructor behavior, reorganizing patches a
bit, and noting that if the idle manager is destroyed by the client, the
individual inhibitor objects remain active.  The libweston-desktop API
is renamed from surface_drop_idle_inhibitor to just drop_idle_inhibitor.


Manual testing:
===============
0.	Default idling

	a.	Start compositor with `weston`
	b.	Leave system with no input until the idle time configured in
		weston.ini (default 300 seconds)
	c.	Screen should fade to black
	d.	Generate some input events (e.g. move mouse cursor).  Display
		should fade back in, showing an unlock-screen client.
	e.	Unlock the screen.	Should display an empty desktop.

1.	Configured idle time with no clients

	a.	Start compositor with `weston -i3`
	b.	After about 3 seconds the screen should begin fading to black
	c.	Re-awaken display and unlock
	d.	Repeat from b several times

2.	Idle time with non-inhibiting client

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal run the following bash command
		`i=0; while :; do echo $i; i=$((i+100)); sleep 0.1; done`
	d.	Screen should fade out between 3000 and 3500 msec.
		There should be no discontinuity in the time outputs (i.e. the
		output should not jump from say 3200 msec to 8000 msec, but
		rather the scrollback should be a continual list of numbers
		incrementing by 100 each line).

3.	Idle inhibition

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal launch the idle inhibition demo client
		`weston-simple-idle`
	d.	Allow the client to run for more than 3 seconds without touching
		keyboard, mouse, or other input activity.  While it is running
		the screen it is displayed on should not fade out.
	e.	From weston-terminal kill weston-simple-idle with ctrl-C
	f.	Wait another 3 seconds with no input activity.	The screen
		should fade to black.
	g.	Repeat from (c) a few times.

4.	Verbose idle inhibition

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal run `weston-simple-idle -V`
	d.	Output should continue printing indefinitely (past 3000 msec),
		and the screen should not fade out.
	e.	Terminate the weston-simple-idle process from weston-terminal
		(i.e. via ctrl-C); screen should then fade out after 3 seconds.

5.	Delayed idle inhibition

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal run `weston-simple-idle -V -c1000`
	d.	Output should indicate client requests an inhibitor after 1000
		msec.
	e.	Screen should not fade out until after the weston-simple-idle
		process is terminated.

6.	Inhibition request made after display is already idled off

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal run `weston-simple-idle -V -c4500`
	d.	Screen should fade out after 3 seconds of no input activity
	e.	Wake screen and unlock after several seconds
	f.	Output should show a discontinuity in output (i.e. a jump from
		say, 4321 to 8765 msec.)  It should also indicate it has
		requested an inhibitor subsequent to the screen fading to black.
	g.	Allow the client to run >3 additional seconds.	Output should
		continue printing and the screen should not fade out until after
		the client is exited.

7.	Inhibition request made while compositor is in the middle of fading
	out

	a.	Start compositor with `weston -i3`
	b.	Launch weston-terminal
	c.	From weston-terminal run `weston-simple-idle -V -c2800`
	d.	Allow it to run > 3 sec.  Screen should not fade out.
	e.	From weston-terminal run `weston-simple-idle -V -c3000`
	f.	Output should display 'Requesting inhibitor' just as the screen
		is fading out.	Screen should fade to black.

8.	Inhibition termination while compositor is otherwise sleeping

	a.	Start compositor with `weston -i10`
	b.	Outside weston, run `weston-simple-idle -V -d12000`
	c.	Output should print past 10000 msec and screen should not fade out.
	d.	After 12000 msec, output should indicate the inhibitor was
		destroyed.	Screen should fade to black immediately (i.e. within less
		than a second).


Bryce Harrington (6):
  desktop-shell: Enable per-output fade animations
  compositor: Add internal support to track idle inhibition requests
  compositor: Add public interface support for client-requested idle
    inhibition
  libweston-desktop: Add listener and API to drop the idle inhibitor
  shell: Inhibit idle fade-out behavior
  clients: Add screensaver inhibitor client demo

 .gitignore                            |   1 +
 Makefile.am                           |  18 +-
 clients/simple-idle.c                 | 573 ++++++++++++++++++++++++++++++++++
 desktop-shell/shell.c                 | 172 ++++++----
 desktop-shell/shell.h                 |  14 +-
 libweston-desktop/internal.h          |   3 +
 libweston-desktop/libweston-desktop.c |   9 +
 libweston-desktop/libweston-desktop.h |   2 +
 libweston-desktop/surface.c           |  17 +
 libweston/compositor.c                | 164 +++++++++-
 libweston/compositor.h                |  15 +-
 11 files changed, 909 insertions(+), 79 deletions(-)
 create mode 100644 clients/simple-idle.c

-- 
1.9.1



More information about the wayland-devel mailing list