Normally when a user runs plymouth-set-default-plugin
to change which plugin plymouth uses, the change doesn't
take effect until a new kernel is installed and the initrd
is rebuilt.
This new --rebuild-initrd argument forces the currently
running initrd to get rebuilt immediately (bug 18297).
Somehow a user was running into a case where plymouthd
would busy loop taking 100% cpu. gdb revealed that it
was stuck trying to process keyboard input. This is
apparently because we were looping forever when mbrlen()
got a NUL byte.
This stops the progress from reaching 100% in cases such as fsck and timeouts.
It also averages the progress times from the previous one with the current one
to average out occasional slow tasks.
The background image previously was low resolution
and created various artifacts when being upscaled
to the native resolution of the panel. This patch
ditches the background image and instead generates
a similar type of background dynamically, custom
fit to the screen it's being displayed on. As an
added bonus, since we're doing it dynamically, we
can make some of the stars in the background
lightly twinkle.
It creates a feedback loop. We'll need to cut
that first before we can log to boot.log.
What'd I'd like to do is have several log targets
plymouth:log=boot.log or plymouth:log=/dev/ttyS0,
or plymouth:log=/dev/tty0
We only want to try to attach the terminal session
to a terminal if it's not already attached. It may
be legitimately unredirected if plymouth:nolog is
passed.
Previously, we did it manually using the ioctl
straight from main.c. Now, there's a
ply_terminal_session_detach call that does it
for us. This allows us to detach from the terminal
during --hide-splash, and reattach during --show-splash
Now that we retain the splash on screen and don't
explicitly hide it on quit, we need to make sure
that we leave the window as we found it when we
remove the window from the splash.
Protect against multiple calls to start/stop animation.
This prevents crashes if the user presses escape when
the animation is already stopped, and prevents
super fast animations if --show-splash gets called twice
in a row.
At some point during boot up the terminal gets kicked
out of raw mode. By resetting the window mode before
drawing we ensure it stays in raw mode, so things like
password characters draw correctly.