The progress percentage is now settable. By "settable" this doesn't mean the
value will change to the new value, the set value is only a hint as to where
the progress should be at this point in time. So it it overshot or under-run,
the hint is used to determine how much time is left, and how fast to move the
bar.
When functins are called as an element of an object (e.g. obj.func(par) ), the
object is passed into the function execution as "this" in the local context.
Rather than directly accessing hash tables when accessing variables, use the
abstraction functions. Adds a peek function which does not create a new object
is one has not been defined already.
This removes some of the duplication due to the two methods of creating
functions. Now function definitions like:
fun name (foo) {bar}
are treated as
name = fun (foo) {bar};
No script code needs to change as both are still valid.
One useful way to use plymouth is by installing it into
an auxillary initrd image, that overlays the primary one.
This allows plymouth and its current theme to get updated
indepedently of the kernel and the rest of the initrd
stuff.
plymouth-generate-initrd creates an initrd named:
initrd-plymouth.img
in /boot that is suitable for use a second initrd on
the initrd line in grub.conf.
Previously, we'd try to guess the plugin path based
on the arch of the running process. That's sort of
fragile, so better to just install plugins where
plymouth says it's going to look for them.
Some modules (the label plugin in particular) use
libraries with static data that don't do well with
being unmapped and remapped later.
This commit changes the module loading call so that
plugins aren't unmapped at close time (the close
is effectively ignored). This simplifies things
for now.
At some point we may want to make it decidable on
a per plugin basis.
It's what all the other boot splash plugins do. This
is important because things occasionally muck with the
terminal during boot up (knocking it out of raw mode, etc),
and resetting the window graphics mode resets the terminal
settings as well.
Future, potentially better alternatives to this could be:
1) TIOCSLCKTRMIOS to lock the terminal settings
2) Using /dev/input instead of the tty for keyboard input
The animation class doesn't handle its frames missing
too well right now. In fact, it goes into an infinite
loop instead of completing.
This commit fixes that.
When using 1 pixel wide images and stretching them, the result is a fade
between the pixel data and the transparent pixels beyond the end of the image.
Some init implementations forcefully take over the tty after rc.sysinit
with the TIOCSCTTY ioctl, forcing plymouth's connection to the tty
to get dropped. This comment just reopens the tty if it gets taken
over.
It may make sense at some point to use /dev/input for catching input
events instead of the tty, to side step these kinds of problems.