Open /proc/cmdline, not proc/cmdline. (Technically this doesn't matter
in the daemon, since it's already done chdir ("/"), but the client does
need this and it's clearer to have them match.)
Enables scripts to choose the font they want with a sixth argument to
Image.Text API:
new_image = Image.Text("Hello", 1, 1, 1, 1, "DejaVu Bold,Italic 18");
This commit adds most of the pieces in place to use libkms, a
library by Jakob Bornecrantz, that abstracts the drm drivers
behind a common api.
Right now, we only fallback to libkms if the existing
backends won't work for the configured hardware.
In theory, this will give us pretty boot in virtual
machines, since libkms has support for the vmwgfx drm driver.
Aside from vmwgfx, libkms also supports intel and nouveau right
now. When it supports radeon, too, I'll probably switch to
using libkms by default instead of as a fallback. Eventually,
I'd like to drop all the non-libkms backend bits and the whole
driver vtable abstraction thing from plymouth completely.
This commit is just a copy-and-paste of one of the existing
drm backend files, with changes made to accomodate the libkms
api. I haven't actually tested it, yet, so it will probably
need changes after I get a chance to do that.
For most connectors associating monitors with our virtual
'heads', we merely track their ids. This means we don't have
to bother freeing any client side state at deallocation time.
There's one exception, though. The main connector, connector0,
we keep an open reference to. We do this, because it owns the
mode object we use in SetCrtc calls.
This commit ensures that connector0 for each head is properly freed
when that head is deallocated.
Some underpowered video cards will have multiple connectors
tied to one controller. In this case all connectors get
the same "cloned" output automatically.
This commit detects this situation and prevents plymouth from
wastefully trying to allocate several frame buffers. This
commit also prevents plymouth from constantly trying to switch
between those allocated frame buffers every frame of the animation.
We only really support full color layouts at the moment
for kernel modesetting drivers, but this commit adds a
"color_depth" member to the buffer structs so we can at
least recognize non-conforming buffers.
Right now if a user erroneously puts, e.g., console=ttyS0 twice
on their kernel command line, plymouth will open that tty twice
and write to it twice, and read from it twice, etc.
This commit filters those duplicates out.
There are times when plymouth is running that the filesystem isn't
accessible. For instance, if a user has /usr as a separate partition,
then when first leaving the initrd, plymouth won't have access to its
plugins.
In those cases we really need to survive if the user hits escape.
This commit compiles details into the binary. In this way, if the
plugins aren't available, we still have something to fall back to.
In the event should_ignore_show_splash_calls () returns
true, we won't ever have a keyboard set. This commit
make sure that we don't try to use the keyboard if its
unavailable.