This reverts commit 841068ba12.
That commit made plymouthd hang around until the last round
of slayings by init to keep the splash screen up as long as
possible.
That adds 5 seconds to shut down in some cases, though, so
is wrong. Instead we need a solution that keeps the splash
around after plymouth exits.
See http://bugzilla.redhat.com/744932
We currently read the list of available consoles from the
kernel command line.
This isn't the most reliable way to do things.
This commit changes the code to read
/sys/class/tty/console/active
instead.
It's important we close all terminals in the shutdown path,
so they all get unlocked and returned to cooked mode.
Previously, we would just close the local console terminal,
which meant other terminals would end up left in a broken state.
We call the add_display_and_keyboard_for_terminal function for
every console passed into the kernel command line and once for
/dev/tty1 if no console line is passed in. This function
repeatedly, reinitializes state->terminal with whatever
terminal is passed in each time its called.
This commit changes add_display_and_keyboard_for_terminal to not
touch state->terminal and instead makes the callers do it
(if appropriate)
Right now we pass a terminal to the constructor of the boot splash
object. This terminal is used for going to KD_TEXT mode when
ctrl-T is tapped or when hiding the splash.
We only need to do this, though, when:
1) we're running on a local vt
2) we're showing graphics
the boot-splash code has all the knowledge it needs to figure these
two things out on its own, and furtermore it already can figure out
which terminal is the relevant one without being told at construct
time.
This commit adds those smarts to the boot splash code.
check_for_consoles has another bug (surprised?) where it would
jump too many characters forward if the command line has
console=tty0 in it, since tty0 is transparently changed to /dev/tty1.
walters pointed out the README had some stale information in
it. I've copy and pasted the wiki text in, now, so there
will be hopefully a small quantity of said stale information.
alloca() isn't a good idea to use, in general, because it provides
undefined behavior when it fails.
This commit changes the epoll event buffer from being stack allocated
to static to avoid any potentially problems resulting from stack
space exhaustion.
https://bugs.freedesktop.org/show_bug.cgi?id=41562
commit 4081bd29fb changed
our keyboard handling code to treat newline instead of
carriage return as the enter key.
That commit fixed up the tty settings to work under these
new assumptions. It failed to update the X11 code, though.
This commit fixes the X11 renderer plugin so it works in
the same way.
In commit 89096d735f we added
reopen retries when the kernel returns EIO to ply-terminal.c.
This is because when the kernel is closing a tty down, that
tty is unavailable to userspace to reopen.
Unfortunately, that commit neglected to inform the ply-keyboard
part of the code when the terminal retry was successful. The
upshot of this, is that if plymouthd needs to retry opening the
tty, then the splash screens lose control over the keyboard.
This commit changes how input notification is sent to the keyboard
handling code, so the tty disconnects are transparent.
Sometimes putting debug output on the screen has strange side
effects. This commit adds a new kernel command line option,
e.g:
plymouth.debug=stream:/dev/null
that moves the output "out of the way"
This commit moves the pid file writing code to main
from ply_create_daemon, so that it gets run even when we
plymouthd isn't daemonized.
This is more symmetrical, anyway, since unlinking of the pid
file is handled in main.
Normally systemd is very mute about messages. It's important,
though for it to be chatty when plymouth is running so we can
show verbose messages to the user when they hit escape.
This commit adds a new --enable-systemd-integration configure
flag which explicitly tells systemd when to print messages to
the console.
This may get dropped in the future in lieu of init script
changes doing this instead of plymouth directly.
It's really annoying when you're running plymouthd in
debug mode and don't happen to have "splash" on your kernel
command line and then need to reboot.
This commit adds a new debug option to override the kernel
command line for ths system.
This commit adds a new program, plymouth-upstart-bridge,
the listens for upstart state changes and sends them to plymouth,
or prints them out as appropriate.
This commit lightens the hard requirement that every
client request has to have a function handling the reply.
There's really no reason to be so strict, and it makes
life easier for none /bin/plymouth clients this way.
If a monitor is dark when plymouth is started, we shouldn't
try to light it up. There are rules on which outputs can be
attached to which controllers and we're very likely to break
those rules just assigning things willy-nilly.
The kernel should set us up in the way it thinks is best anyway.
There's no reason to second guess the kernel here.